emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 23089f1cf22: Merge from origin/emacs-29


From: Stefan Kangas
Subject: master 23089f1cf22: Merge from origin/emacs-29
Date: Fri, 17 Feb 2023 00:45:38 -0500 (EST)

branch: master
commit 23089f1cf2206a3e164c6091963802c156c14d66
Merge: 07a76a06f9a f1f571e72ae
Author: Stefan Kangas <stefankangas@gmail.com>
Commit: Stefan Kangas <stefankangas@gmail.com>

    Merge from origin/emacs-29
    
    f1f571e72ae Add electric indent for preproc directives
    83af806ab7c Rename 'emacs-news-toggle-tag' to 'emacs-news-cycle-tag'
    5bc88b3b175 Add menu to news-mode
    40f4bc4e0aa ; Avoid installing VC package dependencies multiple times
    1c9d81a2b42 Attempt to recognise if a VC package has no Elisp files
---
 lisp/emacs-lisp/package-vc.el                      | 19 ++++++++++++++++--
 lisp/progmodes/c-ts-mode.el                        |  3 ++-
 lisp/textmodes/emacs-news-mode.el                  | 23 ++++++++++++++++++----
 .../{toggle-tag.erts => cycle-tag.erts}            |  0
 test/lisp/textmodes/emacs-news-mode-tests.el       |  6 +++---
 5 files changed, 41 insertions(+), 10 deletions(-)

diff --git a/lisp/emacs-lisp/package-vc.el b/lisp/emacs-lisp/package-vc.el
index bad59aa6c0f..b753adcb8a0 100644
--- a/lisp/emacs-lisp/package-vc.el
+++ b/lisp/emacs-lisp/package-vc.el
@@ -440,7 +440,7 @@ version of that package."
                    (package-desc-version a)))
                 (duplicate-p (a b)
                   "Are A and B the same package?"
-                  (equal a (car b)))
+                  (eq (package-desc-name a) (package-desc-name b)))
                 (depends-on-p (target package)
                   "Does PACKAGE depend on TARGET?"
                   (or (eq target package)
@@ -457,7 +457,7 @@ version of that package."
                         (depends-on-p desc-a desc-b)))))
       (mapc #'search requirements)
       (cl-callf sort to-install #'version-order)
-      (cl-callf seq-uniq to-install)
+      (cl-callf seq-uniq to-install #'duplicate-p)
       (cl-callf sort to-install #'dependent-order))
     (mapc #'package-install-from-archive to-install)
     missing))
@@ -602,6 +602,13 @@ attribute in PKG-SPEC."
           (vc-retrieve-tag dir release-rev)
         (message "No release revision was found, continuing...")))))
 
+(defvar package-vc-non-code-file-names
+  '(".dir-locals.el" ".dir-locals-2.el")
+  "List of file names that do not contain Emacs Lisp code.
+This list is used by `package-vc--unpack' to better check if the
+user is fetching code from a repository that does not contain any
+Emacs Lisp files.")
+
 (defun package-vc--unpack (pkg-desc pkg-spec &optional rev)
   "Install the package described by PKG-DESC.
 PKG-SPEC is a package specification, a property list describing
@@ -623,6 +630,14 @@ checkout.  This overrides the `:branch' attribute in 
PKG-SPEC."
     (when (directory-empty-p pkg-dir)
       (delete-directory pkg-dir)
       (error "Empty checkout for %s" name))
+    (unless (seq-remove
+             (lambda (file)
+               (member (file-name-nondirectory file) 
package-vc-non-code-file-names))
+             (directory-files-recursively pkg-dir "\\.el\\'" nil))
+      (when (yes-or-no-p (format "No Emacs Lisp files found when fetching 
\"%s\", \
+abort installation?" name))
+        (delete-directory pkg-dir t)
+        (user-error "Installation aborted")))
 
     ;; When nothing is specified about a `lisp-dir', then should
     ;; heuristically check if there is a sub-directory with lisp
diff --git a/lisp/progmodes/c-ts-mode.el b/lisp/progmodes/c-ts-mode.el
index 38aaea139f1..8a4cc2fac18 100644
--- a/lisp/progmodes/c-ts-mode.el
+++ b/lisp/progmodes/c-ts-mode.el
@@ -219,6 +219,7 @@ delimiters < and >'s."
 MODE is either `c' or `cpp'."
   (let ((common
          `(((parent-is "translation_unit") point-min 0)
+           ((query "(ERROR (ERROR)) @indent") point-min 0)
            ((node-is ")") parent 1)
            ((node-is "]") parent-bol 0)
            ((node-is "else") parent-bol 0)
@@ -816,7 +817,7 @@ the semicolon.  This function skips the semicolon."
 
   ;; Electric
   (setq-local electric-indent-chars
-              (append "{}():;," electric-indent-chars))
+              (append "{}():;,#" electric-indent-chars))
 
   ;; Imenu.
   (setq-local treesit-simple-imenu-settings
diff --git a/lisp/textmodes/emacs-news-mode.el 
b/lisp/textmodes/emacs-news-mode.el
index b844955e1be..c5e7b8f4bc6 100644
--- a/lisp/textmodes/emacs-news-mode.el
+++ b/lisp/textmodes/emacs-news-mode.el
@@ -53,13 +53,28 @@
   :parent emacs-news-common-map
   "C-c C-s" #'emacs-news-next-untagged-entry
   "C-c C-r" #'emacs-news-previous-untagged-entry
-  "C-c C-t" #'emacs-news-toggle-tag
+  "C-c C-t" #'emacs-news-cycle-tag
+  "C-c C-d" #'emacs-news-delete-temporary-markers
   "C-c C-g" #'emacs-news-goto-section
   "C-c C-j" #'emacs-news-find-heading
   "C-c C-e" #'emacs-news-count-untagged-entries
   "C-x C-q" #'emacs-news-view-mode
   "<remap> <open-line>" #'emacs-news-open-line)
 
+(easy-menu-define emacs-news-mode-menu emacs-news-mode-map
+  "Menu for `emacs-news-mode'."
+  '("News"
+    ["Next Untagged" emacs-news-next-untagged-entry :help "Go to next untagged 
entry"]
+    ["Previous Untagged" emacs-news-previous-untagged-entry :help "Go to 
previous untagged entry"]
+    ["Count Untagged" emacs-news-count-untagged-entries :help "Count the 
number of untagged entries"]
+    ["Cycle Tag" emacs-news-cycle-tag :help "Cycle documentation tag of 
current entry"]
+    ["Delete Tags" emacs-news-delete-temporary-markers :help "Delete all 
documentation tags in buffer"]
+    "--"
+    ["Goto Section" emacs-news-goto-section :help "Prompt for section and go 
to it"]
+    ["Goto Heading" emacs-news-find-heading :help "Prompt for heading and go 
to it"]
+    "--"
+    ["Enter View Mode" emacs-news-view-mode :help "Enter view-only mode"]))
+
 (defvar emacs-news-view-mode-map
   ;; This is defined this way instead of inheriting because we're
   ;; deriving the mode from `special-mode' and want the keys from there.
@@ -173,8 +188,8 @@ untagged NEWS entry."
   (interactive nil emacs-news-mode)
   (emacs-news-next-untagged-entry t))
 
-(defun emacs-news-toggle-tag ()
-  "Toggle documentation tag of current headline in the Emacs NEWS file."
+(defun emacs-news-cycle-tag ()
+  "Cycle documentation tag of current headline in the Emacs NEWS file."
   (interactive nil emacs-news-mode)
   (save-excursion
     (goto-char (line-beginning-position))
@@ -191,7 +206,7 @@ untagged NEWS entry."
            (insert "+++"))
           ((looking-at (rx bol "+++" eol))
            (delete-char 4))
-          (t (user-error "Invalid headline tag; can't toggle")))))
+          (t (user-error "Invalid headline tag; can't cycle")))))
 
 (defun emacs-news-count-untagged-entries ()
   "Say how many untagged entries there are in the current NEWS buffer."
diff --git a/test/lisp/textmodes/emacs-news-mode-resources/toggle-tag.erts 
b/test/lisp/textmodes/emacs-news-mode-resources/cycle-tag.erts
similarity index 100%
rename from test/lisp/textmodes/emacs-news-mode-resources/toggle-tag.erts
rename to test/lisp/textmodes/emacs-news-mode-resources/cycle-tag.erts
diff --git a/test/lisp/textmodes/emacs-news-mode-tests.el 
b/test/lisp/textmodes/emacs-news-mode-tests.el
index e1152265a45..676a3270da6 100644
--- a/test/lisp/textmodes/emacs-news-mode-tests.el
+++ b/test/lisp/textmodes/emacs-news-mode-tests.el
@@ -23,10 +23,10 @@
 (require 'ert-x)
 (require 'emacs-news-mode)
 
-(ert-deftest emacs-news-toggle-tag ()
-  (ert-test-erts-file (ert-resource-file "toggle-tag.erts")
+(ert-deftest emacs-news-cycle-tag ()
+  (ert-test-erts-file (ert-resource-file "cycle-tag.erts")
                       (lambda ()
                         (emacs-news-mode)
-                        (emacs-news-toggle-tag))))
+                        (emacs-news-cycle-tag))))
 
 ;;; emacs-news-mode-tests.el ends here



reply via email to

[Prev in Thread] Current Thread [Next in Thread]