From bd0674c9321da4a1e4fcf37df98cec9f51dc728f Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Wed, 6 Nov 2024 00:40:39 +0100 Subject: [PATCH 01/18] Allow suggesting to install packages * etc/package-autosuggest.eld: Add a manual sketch of the database * lisp/emacs-lisp/package.el (package-autosuggest-database) (package-autosuggest-mode, package--suggestion-applies-p) (package--autosuggest-find-candidates) (package--autosuggest-install-and-enable) (package--autosuggest-suggested, package--autosugest-line-format) (package-autosuggest-face, mode-line-misc-info) (package--autosuggest-after-change-mode, package-autosuggest): Implement the feature. --- etc/package-autosuggest.eld | 7 ++ lisp/emacs-lisp/package.el | 147 ++++++++++++++++++++++++++++++++++++ 2 files changed, 154 insertions(+) create mode 100644 etc/package-autosuggest.eld diff --git a/etc/package-autosuggest.eld b/etc/package-autosuggest.eld new file mode 100644 index 00000000000..e6c2c805edd --- /dev/null +++ b/etc/package-autosuggest.eld @@ -0,0 +1,7 @@ +;; Database of suggestions for `package-autosuggest' + +( + (sml-mode auto-mode-alist "\\.sml\\'") + (ada-mode auto-mode-alist "\\.ada\\'") + (go-mode auto-mode-alist "\\.go\\'") +) diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index af07ba44e28..c6ab77fc3d3 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -4536,6 +4536,153 @@ the `Version:' header." (or (lm-header "package-version") (lm-header "version"))))))))) + +;;;; Autosuggest + +(defconst package-autosuggest-database + (eval-when-compile + (with-temp-buffer + (insert-file-contents + (expand-file-name "package-autosuggest.eld" data-directory)"/home/phi/Source/emacs/etc/package-autosuggest.eld") + (read (current-buffer)))) + "Database of hints for packages to suggest installing.") + +(define-minor-mode package-autosuggest-mode + "Enable the automatic suggestion and installation of packages." + :init-value 'mode-line :global t + :type '(choice (const :tag "Indicate in mode line" mode-line) + (const :tag "Always prompt" always) + (const :tag "Prompt only once" once) + (const :tag "Indicate with message" message) + (const :tag "Do not suggest anything" nil)) + (funcall (if package-autosuggest-mode #'add-hook #'remove-hook) + 'after-change-major-mode-hook + #'package--autosuggest-after-change-mode)) + +(defun package--suggestion-applies-p (pkg-sug) + "Check if a suggestion PKG-SUG is applicable to the current buffer." + (pcase pkg-sug + (`(,(pred package-installed-p) . ,_) nil) + ((or `(,_ auto-mode-alist ,ext _) + `(,_ auto-mode-alist ,ext)) + (and (string-match-p ext (buffer-name)) t)) + ((or `(,_ magic-mode-alist ,mag _) + `(,_ magic-mode-alist ,mag)) + (save-restriction + (widen) + (save-excursion + (goto-char (point-min)) + (looking-at-p mag)))) + ((or `(,_ interpreter-mode-alist ,magic _) + `(,_ interpreter-mode-alist ,magic)) + (save-restriction + (widen) + (save-excursion + (goto-char (point-min)) + (and (looking-at auto-mode-interpreter-regexp) + (string-match-p + (concat "\\`" (file-name-nondirectory (match-string 2)) "\\'") + magic))))))) + +(defun package--autosuggest-find-candidates () + "Return a list of packages that might be interesting the current buffer." + (and package-autosuggest-mode + (let (suggetions) + (dolist (sug package-autosuggest-database) + (when (package--suggestion-applies-p sug) + (push sug suggetions))) + suggetions))) + +(defun package--autosuggest-install-and-enable (pkg-sug) + "Install and enable a package suggestion PKG-ENT. +PKG-SUG has the same form as an element of +`package-autosuggest-database'." + (let ((buffers-to-update '())) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (when (and (eq major-mode 'fundamental-mode) (buffer-file-name) + (package--suggestion-applies-p pkg-sug)) + (push buf buffers-to-update)))) + (package-install (car pkg-sug)) + (dolist (buf buffers-to-update) + (with-demoted-errors "Failed to enable major mode: %S" + (with-current-buffer buf + (funcall-interactively (or (cadddr pkg-sug) (car pkg-sug)))))))) + +(defvar package--autosuggest-suggested '() + "List of packages that have already been suggested.") + +(defvar package--autosugest-line-format + '(:eval (package--autosugest-line-format))) +(put 'package--autosugest-line-format 'risky-local-variable t) + +(defface package-autosuggest-face + '((t :inherit (success))) + "Face to use in the mode line to highlight suggested packages." + :version "30.1") + +(defun package--autosugest-line-format () + "Generate a mode-line string to indicate a suggested package." + `(,@(and-let* (((eq package-autosuggest-mode 'mode-line)) + (avail (seq-difference (package--autosuggest-find-candidates) + package--autosuggest-suggested))) + (propertize + (format "Install %s?" + (mapconcat + #'symbol-name + (delete-dups (mapcar #'car avail)) + ", ")) + 'face 'package-autosuggest-face + 'mouse-face 'mode-line-highlight + 'help-echo "Click to install suggested package." + 'keymap (let ((map (make-sparse-keymap))) + (define-key map [mode-line down-mouse-1] #'package-autosuggest) + map))))) + +(add-to-list + 'mode-line-misc-info + '(package-autosuggest-mode ("" package--autosugest-line-format))) + +(defun package--autosuggest-after-change-mode () + "Hook function to suggest packages for installation." + (when-let* ((avail (seq-difference (package--autosuggest-find-candidates) + package--autosuggest-suggested)) + (pkgs (mapconcat #'symbol-name + (delete-dups (mapcar #'car avail)) + ", ")) + (use-dialog-box t)) + (pcase package-autosuggest-mode + ('mode-line + (force-mode-line-update t)) + ('always + (when (yes-or-no-p (format "Install suggested packages (%s)?" pkgs)) + (mapc #'package--autosuggest-install-and-enable avail))) + ('once + (when (yes-or-no-p (format "Install suggested packages (%s)?" pkgs)) + (mapc #'package--autosuggest-install-and-enable avail)) + (setq package--autosuggest-suggested (append avail package--autosuggest-suggested))) + ('message + (message + (substitute-command-keys + (format "Found suggested packages: %s. Install using \\[package-autosuggest]" + pkgs))))))) + +(defun package-autosuggest () + "Prompt the user for suggested packages." + (interactive) + (let* ((avail (or (package--autosuggest-find-candidates) + (user-error "No suggestions found"))) + (pkgs (completing-read-multiple + "Install suggested packages: " avail + nil t + (mapconcat #'symbol-name + (delete-dups (mapcar #'car avail)) + ","))) + (choice (concat "\\`" (regexp-opt pkgs) "\\'"))) + (dolist (ent avail) + (when (string-match-p choice (symbol-name (car ent))) + (package--autosuggest-install-and-enable ent))))) + ;;;; Quickstart: precompute activation actions for faster start up. From 81869a5b9fad86503afd8c8cb063555627bc21ff Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Wed, 6 Nov 2024 13:51:08 +0100 Subject: [PATCH 02/18] Improve prompting of autosuggested packages * lisp/emacs-lisp/package.el (package--autosuggest-suggested): Move declaration up. (package--suggestion-applies-p): Respect 'package--autosuggest-suggested', avoiding to suggest packages multiple times. (package--autosugest-line-format) (package--autosuggest-after-change-mode): Simplify due to 'package--suggestion-applies-p' respecting 'package--autosuggest-suggested'. (package-autosuggest): Replace CRM prompt with a yes-or-no-p, so that 'use-dialog-box' can take effect. --- lisp/emacs-lisp/package.el | 42 +++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index c6ab77fc3d3..7bf26ff1ba3 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -4559,10 +4559,16 @@ the `Version:' header." 'after-change-major-mode-hook #'package--autosuggest-after-change-mode)) +(defvar package--autosuggest-suggested '() + "List of packages that have already been suggested.") + (defun package--suggestion-applies-p (pkg-sug) "Check if a suggestion PKG-SUG is applicable to the current buffer." (pcase pkg-sug - (`(,(pred package-installed-p) . ,_) nil) + (`(,(or (pred (assq _ package--autosuggest-suggested)) + (pred package-installed-p)) + . ,_) + nil) ((or `(,_ auto-mode-alist ,ext _) `(,_ auto-mode-alist ,ext)) (and (string-match-p ext (buffer-name)) t)) @@ -4609,9 +4615,6 @@ PKG-SUG has the same form as an element of (with-current-buffer buf (funcall-interactively (or (cadddr pkg-sug) (car pkg-sug)))))))) -(defvar package--autosuggest-suggested '() - "List of packages that have already been suggested.") - (defvar package--autosugest-line-format '(:eval (package--autosugest-line-format))) (put 'package--autosugest-line-format 'risky-local-variable t) @@ -4624,8 +4627,7 @@ PKG-SUG has the same form as an element of (defun package--autosugest-line-format () "Generate a mode-line string to indicate a suggested package." `(,@(and-let* (((eq package-autosuggest-mode 'mode-line)) - (avail (seq-difference (package--autosuggest-find-candidates) - package--autosuggest-suggested))) + (avail (package--autosuggest-find-candidates))) (propertize (format "Install %s?" (mapconcat @@ -4645,12 +4647,10 @@ PKG-SUG has the same form as an element of (defun package--autosuggest-after-change-mode () "Hook function to suggest packages for installation." - (when-let* ((avail (seq-difference (package--autosuggest-find-candidates) - package--autosuggest-suggested)) + (when-let* ((avail (package--autosuggest-find-candidates)) (pkgs (mapconcat #'symbol-name (delete-dups (mapcar #'car avail)) - ", ")) - (use-dialog-box t)) + ", "))) (pcase package-autosuggest-mode ('mode-line (force-mode-line-update t)) @@ -4672,17 +4672,17 @@ PKG-SUG has the same form as an element of (interactive) (let* ((avail (or (package--autosuggest-find-candidates) (user-error "No suggestions found"))) - (pkgs (completing-read-multiple - "Install suggested packages: " avail - nil t - (mapconcat #'symbol-name - (delete-dups (mapcar #'car avail)) - ","))) - (choice (concat "\\`" (regexp-opt pkgs) "\\'"))) - (dolist (ent avail) - (when (string-match-p choice (symbol-name (car ent))) - (package--autosuggest-install-and-enable ent))))) - + (use-dialog-box t) + (prompt (concat + "Install " + (mapconcat + #'symbol-name + (delete-dups (mapcar #'car avail)) + ", ") + "?"))) + (if (yes-or-no-p prompt) + (mapc #'package--autosuggest-install-and-enable avail) + (setq package--autosuggest-suggested (append avail package--autosuggest-suggested))))) ;;;; Quickstart: precompute activation actions for faster start up. From 90d6044e23b65c76ba529a7b20c7d8e27634b6f0 Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Wed, 6 Nov 2024 13:55:40 +0100 Subject: [PATCH 03/18] * lisp/emacs-lisp/package.el (package-autosuggest): New command --- lisp/emacs-lisp/package.el | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 7bf26ff1ba3..50095d92ae3 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -4683,6 +4683,16 @@ PKG-SUG has the same form as an element of (if (yes-or-no-p prompt) (mapc #'package--autosuggest-install-and-enable avail) (setq package--autosuggest-suggested (append avail package--autosuggest-suggested))))) + +(defun package-reset-suggestions () + "Forget previous package suggestions. +Emacs will remember if you have previously rejected a suggestion during +a session and won't mention it afterwards. If you have made a mistake +or would like to reconsider this, use this command to want to reset the +suggestions." + (interactive) + (setq package--autosuggest-suggested nil)) + ;;;; Quickstart: precompute activation actions for faster start up. From 73c76caa1a5871a81500b3e2df8da38f48cc5d1e Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Wed, 6 Nov 2024 19:41:12 +0100 Subject: [PATCH 04/18] Improve package-autosuggest documentation * lisp/emacs-lisp/package.el (package-autosuggest-database) (package-autosuggest-mode, package--autosuggest-suggested) (package--suggestion-applies-p) (package--autosuggest-find-candidates) (package--autosuggest-install-and-enable) (package--autosuggest-after-change-mode, package-autosuggest): Elaborate docstrings. --- lisp/emacs-lisp/package.el | 63 +++++++++++++++++++++++++------------- 1 file changed, 41 insertions(+), 22 deletions(-) diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 50095d92ae3..bead32bdaf8 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -4545,10 +4545,24 @@ the `Version:' header." (insert-file-contents (expand-file-name "package-autosuggest.eld" data-directory)"/home/phi/Source/emacs/etc/package-autosuggest.eld") (read (current-buffer)))) - "Database of hints for packages to suggest installing.") + "List of hints for packages to suggest installing. +Each hint has the form (PACKAGE TYPE DATA), where PACKAGE is a symbol +denoting the package the hint applies to, TYPE is one of +`auto-mode-alist', `magic-mode-alist' or `interpreter-mode-alist' +indicating the type of check to be made and DATA is the value to check +against TYPE in the intuitive way (e.g. for `auto-mode-alist' DATA is a +regular expression matching a file name that PACKAGE should be suggested +for).") (define-minor-mode package-autosuggest-mode - "Enable the automatic suggestion and installation of packages." + "Enable the automatic suggestion and installation of packages. +As a user option, you can set this value to `mode-line' (default) to +indicate the availability of a package suggestion in the minor mode, +`always' to prompt the user in the minibuffer every time a suggestion is +available in a `fundamenta-mode' buffer, `once' to do only prompt the +user once for each suggestion or `message' to just display a message +hinting at the existence of a suggestion. If `package-autosuggest-mode' +is set to nil, the minor mode will be disabled and no suggestions occur." :init-value 'mode-line :global t :type '(choice (const :tag "Indicate in mode line" mode-line) (const :tag "Always prompt" always) @@ -4560,27 +4574,30 @@ the `Version:' header." #'package--autosuggest-after-change-mode)) (defvar package--autosuggest-suggested '() - "List of packages that have already been suggested.") + "List of packages that have already been suggested. +The elements of this list should be a subset of elements from +`package-autosuggest-database'. Suggestions found in this list will not +count as suggestions (e.g. if `package-autosuggest-mode' is set to +`mode-line', a suggestion found in here will inhibit +`package-autosuggest-mode' from displaying a hint in the mode line).") -(defun package--suggestion-applies-p (pkg-sug) - "Check if a suggestion PKG-SUG is applicable to the current buffer." - (pcase pkg-sug +(defun package--suggestion-applies-p (sug) + "Check if a suggestion SUG is applicable to the current buffer. +SUG should be an element of `package-autosuggest-database'." + (pcase sug (`(,(or (pred (assq _ package--autosuggest-suggested)) (pred package-installed-p)) . ,_) nil) - ((or `(,_ auto-mode-alist ,ext _) - `(,_ auto-mode-alist ,ext)) + (`(,_ auto-mode-alist ,ext) (and (string-match-p ext (buffer-name)) t)) - ((or `(,_ magic-mode-alist ,mag _) - `(,_ magic-mode-alist ,mag)) + (`(,_ magic-mode-alist ,mag) (save-restriction (widen) (save-excursion (goto-char (point-min)) (looking-at-p mag)))) - ((or `(,_ interpreter-mode-alist ,magic _) - `(,_ interpreter-mode-alist ,magic)) + (`(,_ interpreter-mode-alist ,magic) (save-restriction (widen) (save-excursion @@ -4591,7 +4608,9 @@ the `Version:' header." magic))))))) (defun package--autosuggest-find-candidates () - "Return a list of packages that might be interesting the current buffer." + "Return a list of suggestions that might be interesting the current buffer. +The elements of the returned list will be a subset of the elements of +`package--autosuggest-suggested'." (and package-autosuggest-mode (let (suggetions) (dolist (sug package-autosuggest-database) @@ -4599,21 +4618,20 @@ the `Version:' header." (push sug suggetions))) suggetions))) -(defun package--autosuggest-install-and-enable (pkg-sug) +(defun package--autosuggest-install-and-enable (sug) "Install and enable a package suggestion PKG-ENT. -PKG-SUG has the same form as an element of -`package-autosuggest-database'." +SUG should be an element of `package-autosuggest-database'." (let ((buffers-to-update '())) (dolist (buf (buffer-list)) (with-current-buffer buf (when (and (eq major-mode 'fundamental-mode) (buffer-file-name) - (package--suggestion-applies-p pkg-sug)) + (package--suggestion-applies-p sug)) (push buf buffers-to-update)))) - (package-install (car pkg-sug)) + (package-install (car sug)) (dolist (buf buffers-to-update) (with-demoted-errors "Failed to enable major mode: %S" (with-current-buffer buf - (funcall-interactively (or (cadddr pkg-sug) (car pkg-sug)))))))) + (funcall-interactively (or (cadddr sug) (car sug)))))))) (defvar package--autosugest-line-format '(:eval (package--autosugest-line-format))) @@ -4646,7 +4664,8 @@ PKG-SUG has the same form as an element of '(package-autosuggest-mode ("" package--autosugest-line-format))) (defun package--autosuggest-after-change-mode () - "Hook function to suggest packages for installation." + "Display package suggestions for the current buffer. +This function should be added to `after-change-major-mode-hook'." (when-let* ((avail (package--autosuggest-find-candidates)) (pkgs (mapconcat #'symbol-name (delete-dups (mapcar #'car avail)) @@ -4665,10 +4684,10 @@ PKG-SUG has the same form as an element of (message (substitute-command-keys (format "Found suggested packages: %s. Install using \\[package-autosuggest]" - pkgs))))))) + pkgs)))p)))) (defun package-autosuggest () - "Prompt the user for suggested packages." + "Prompt the user to install the suggested packages." (interactive) (let* ((avail (or (package--autosuggest-find-candidates) (user-error "No suggestions found"))) From d9214f157359f6ed00de27ba2756127ee754140f Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Wed, 6 Nov 2024 19:42:34 +0100 Subject: [PATCH 05/18] Ensure a valid value for 'package-autosuggest-mode' * lisp/emacs-lisp/package.el (package-autosuggest-mode): If 'define-minor-mode' sets the value of the variable to t, then we will override this to the default value. --- lisp/emacs-lisp/package.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index bead32bdaf8..4f20a1735f2 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -4569,6 +4569,9 @@ is set to nil, the minor mode will be disabled and no suggestions occur." (const :tag "Prompt only once" once) (const :tag "Indicate with message" message) (const :tag "Do not suggest anything" nil)) + (unless (memq package-autosuggest-mode '(mode-line always once message)) + (let ((def (custom--standard-value 'package-autosuggest-mode))) + (setq package-autosuggest-mode def))) (funcall (if package-autosuggest-mode #'add-hook #'remove-hook) 'after-change-major-mode-hook #'package--autosuggest-after-change-mode)) From 6b65feabf1b0528e16e0ead84c8e2a3bb5ce55c3 Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Wed, 6 Nov 2024 19:55:05 +0100 Subject: [PATCH 06/18] ; Remove thinko value from 'package-autosuggest-database' * lisp/emacs-lisp/package.el (package-autosuggest-database): Read the result of evaluating 'expand-file-name' instead of discarding the value. --- lisp/emacs-lisp/package.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 4f20a1735f2..ec56c327dae 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -4543,7 +4543,7 @@ the `Version:' header." (eval-when-compile (with-temp-buffer (insert-file-contents - (expand-file-name "package-autosuggest.eld" data-directory)"/home/phi/Source/emacs/etc/package-autosuggest.eld") + (expand-file-name "package-autosuggest.eld" data-directory)) (read (current-buffer)))) "List of hints for packages to suggest installing. Each hint has the form (PACKAGE TYPE DATA), where PACKAGE is a symbol From 33c349dd3ac65d56e629d6cf94e66276815068f8 Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Wed, 6 Nov 2024 20:58:31 +0100 Subject: [PATCH 07/18] Create separate 'package-autosuggest-style' user option * lisp/emacs-lisp/package.el (package-autosuggest-mode): Extract part of the logic into a separate user option. (package--autosuggest-suggested, package--suggestion-applies-p) (package--autosugest-line-format) (package--autosuggest-after-change-mode): Respect the change. --- lisp/emacs-lisp/package.el | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index ec56c327dae..ec4b569b6ca 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -4554,24 +4554,22 @@ against TYPE in the intuitive way (e.g. for `auto-mode-alist' DATA is a regular expression matching a file name that PACKAGE should be suggested for).") -(define-minor-mode package-autosuggest-mode - "Enable the automatic suggestion and installation of packages. -As a user option, you can set this value to `mode-line' (default) to -indicate the availability of a package suggestion in the minor mode, -`always' to prompt the user in the minibuffer every time a suggestion is -available in a `fundamenta-mode' buffer, `once' to do only prompt the -user once for each suggestion or `message' to just display a message -hinting at the existence of a suggestion. If `package-autosuggest-mode' -is set to nil, the minor mode will be disabled and no suggestions occur." - :init-value 'mode-line :global t +(defcustom package-autosuggest-style 'mode-line + "How to draw attention to `package-autosuggest-mode' suggestions. +You can set this value to `mode-line' (default) to indicate the +availability of a package suggestion in the minor mode, `always' to +prompt the user in the minibuffer every time a suggestion is available +in a `fundamenta-mode' buffer, `once' to do only prompt the user once +for each suggestion or `message' to just display a message hinting at +the existence of a suggestion." :type '(choice (const :tag "Indicate in mode line" mode-line) (const :tag "Always prompt" always) (const :tag "Prompt only once" once) - (const :tag "Indicate with message" message) - (const :tag "Do not suggest anything" nil)) - (unless (memq package-autosuggest-mode '(mode-line always once message)) - (let ((def (custom--standard-value 'package-autosuggest-mode))) - (setq package-autosuggest-mode def))) + (const :tag "Indicate with message" message))) + +(define-minor-mode package-autosuggest-mode + "Enable the automatic suggestion and installation of packages." + :init-value t :global t (funcall (if package-autosuggest-mode #'add-hook #'remove-hook) 'after-change-major-mode-hook #'package--autosuggest-after-change-mode)) @@ -4580,7 +4578,7 @@ is set to nil, the minor mode will be disabled and no suggestions occur." "List of packages that have already been suggested. The elements of this list should be a subset of elements from `package-autosuggest-database'. Suggestions found in this list will not -count as suggestions (e.g. if `package-autosuggest-mode' is set to +count as suggestions (e.g. if `package-autosuggest-style' is set to `mode-line', a suggestion found in here will inhibit `package-autosuggest-mode' from displaying a hint in the mode line).") @@ -4588,7 +4586,7 @@ count as suggestions (e.g. if `package-autosuggest-mode' is set to "Check if a suggestion SUG is applicable to the current buffer. SUG should be an element of `package-autosuggest-database'." (pcase sug - (`(,(or (pred (assq _ package--autosuggest-suggested)) + (`(,(or (pred (lambda (e) (assq e package--autosuggest-suggested))) (pred package-installed-p)) . ,_) nil) @@ -4647,7 +4645,8 @@ SUG should be an element of `package-autosuggest-database'." (defun package--autosugest-line-format () "Generate a mode-line string to indicate a suggested package." - `(,@(and-let* (((eq package-autosuggest-mode 'mode-line)) + `(,@(and-let* (((not (null package-autosuggest-mode))) + ((eq package-autosuggest-style 'mode-line)) (avail (package--autosuggest-find-candidates))) (propertize (format "Install %s?" @@ -4673,7 +4672,7 @@ This function should be added to `after-change-major-mode-hook'." (pkgs (mapconcat #'symbol-name (delete-dups (mapcar #'car avail)) ", "))) - (pcase package-autosuggest-mode + (pcase-exhaustive package-autosuggest-style ('mode-line (force-mode-line-update t)) ('always From e2965e25529a6f2113e44e54c566d729bfd5c955 Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Wed, 6 Nov 2024 20:59:53 +0100 Subject: [PATCH 08/18] Update mode line after rejecting a suggestion * lisp/emacs-lisp/package.el (package-autosuggest): Call 'force-mode-line-update' if it would make sense. --- lisp/emacs-lisp/package.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index ec4b569b6ca..308c6ad1a51 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -4703,7 +4703,9 @@ This function should be added to `after-change-major-mode-hook'." "?"))) (if (yes-or-no-p prompt) (mapc #'package--autosuggest-install-and-enable avail) - (setq package--autosuggest-suggested (append avail package--autosuggest-suggested))))) + (setq package--autosuggest-suggested (append avail package--autosuggest-suggested)) + (when (eq package-autosuggest-style 'mode-line) + (force-mode-line-update t))))) (defun package-reset-suggestions () "Forget previous package suggestions. From 0cb99c51a3aa7453a524ab7498fb982416308875 Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Wed, 6 Nov 2024 21:09:57 +0100 Subject: [PATCH 09/18] Add command to scrape ELPA for package suggestions * admin/scrape-elpa.el (scrape-elpa): Add new command. * etc/package-autosuggest.eld: Generate file using 'scrape-elpa'. --- admin/scrape-elpa.el | 78 ++++++++++++++++++++++++++++++++++++ etc/package-autosuggest.eld | 80 +++++++++++++++++++++++++++++++++++-- 2 files changed, 154 insertions(+), 4 deletions(-) create mode 100644 admin/scrape-elpa.el diff --git a/admin/scrape-elpa.el b/admin/scrape-elpa.el new file mode 100644 index 00000000000..78dbd7349d0 --- /dev/null +++ b/admin/scrape-elpa.el @@ -0,0 +1,78 @@ +;;; scrape-elpa.el --- Collect ELPA package suggestions -*- lexical-binding: t; -*- + +;; Copyright (C) 2024 Free Software Foundation, Inc. + +;; Author: Philip Kaludercic +;; Keywords: tools + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Commentary: + +;; This file defines an administrative command to update the +;; `package-autosuggest' database. + +;;; Code: + +(defun scrape-elpa (&rest directories) + "Scrape autoload files in DIRECTORIES for package suggestions. +This file will automatically update \"package-autosuggest.eld\", but not +save it. You should invoke this command with built GNU ELPA and NonGNU +ELPA checkouts (i.e. having run \"make build-all\" in both directories). +Please review the results before updating the autosuggest database!" + (interactive (completing-read-multiple + "ELPA directories to scrape: " + #'completion-file-name-table + #'file-directory-p)) + (with-current-buffer + (find-file (expand-file-name "package-autosuggest.eld" data-directory)) + (erase-buffer) + (lisp-data-mode) + (insert ";; The contents of this file are loaded into `package-autosuggest-database' +;; and were automatically generate by scraping ELPA for auto-loaded +;; code using the `scrape-elpa' command. Please avoid updating this +;; file manually! + +") + (fill-paragraph) + (insert "(") + (let ((standard-output (current-buffer))) + (dolist-with-progress-reporter + (file (mapcan + (lambda (dir) + (directory-files-recursively + dir "-autoloads\\.el\\'")) + directories)) + "Scraping files..." + (let ((inhibit-message t)) + (with-temp-buffer + (insert-file-contents file) + (condition-case nil + (while t + (pcase (read (current-buffer)) + (`(add-to-list + ',(and (or 'interpreter-mode-alist + 'magic-mode-alist + 'auto-mode-alist) + variable) + '(,(and (pred stringp) regexp) . + ,(and (pred symbolp) mode))) + (terpri) + (prin1 `(,mode ,variable ,regexp)) + (princ (concat " ;from " file))))) + (end-of-file nil)))))) + (insert "\n)\n"))) + +(provide 'scrape-elpa) +;;; scrape-elpa.el ends here diff --git a/etc/package-autosuggest.eld b/etc/package-autosuggest.eld index e6c2c805edd..742983fa9eb 100644 --- a/etc/package-autosuggest.eld +++ b/etc/package-autosuggest.eld @@ -1,7 +1,79 @@ -;; Database of suggestions for `package-autosuggest' +;; The contents of this file are loaded into `package-autosuggest-database' +;; and were automatically generate by scraping ELPA for auto-loaded +;; code using the `scrape-elpa' command. Please avoid updating this +;; file manually! ( - (sml-mode auto-mode-alist "\\.sml\\'") - (ada-mode auto-mode-alist "\\.ada\\'") - (go-mode auto-mode-alist "\\.go\\'") +(ada-mode auto-mode-alist "\\.ad[abs]\\'") ;from ~/Source/elpa/packages/ada-mode/ada-mode-autoloads.el +(arbitools-mode auto-mode-alist "\\.trf?\\'") ;from ~/Source/elpa/packages/arbitools/arbitools-autoloads.el +(LaTeX-mode auto-mode-alist "\\.hva\\'") ;from ~/Source/elpa/packages/auctex/auctex-autoloads.el +(bnf-mode auto-mode-alist "\\.bnf\\'") ;from ~/Source/elpa/packages/bnf-mode/bnf-mode-autoloads.el +(chess-pgn-mode auto-mode-alist "\\.pgn\\'") ;from ~/Source/elpa/packages/chess/chess-autoloads.el +(cobol-mode auto-mode-alist "\\.c\\(ob\\|bl\\|py\\)\\'") ;from ~/Source/elpa/packages/cobol-mode/cobol-mode-autoloads.el +(code-cells-convert-ipynb auto-mode-alist "\\.ipynb\\'") ;from ~/Source/elpa/packages/code-cells/code-cells-autoloads.el +(csharp-mode auto-mode-alist "\\.cs\\'") ;from ~/Source/elpa/packages/csharp-mode/csharp-mode-autoloads.el +(csv-mode auto-mode-alist "\\.[Cc][Ss][Vv]\\'") ;from ~/Source/elpa/packages/csv-mode/csv-mode-autoloads.el +(tsv-mode auto-mode-alist "\\.tsv\\'") ;from ~/Source/elpa/packages/csv-mode/csv-mode-autoloads.el +(dismal-mode auto-mode-alist "\\.dis\\'") ;from ~/Source/elpa/packages/dismal/dismal-autoloads.el +(djvu-init-mode auto-mode-alist "\\.djvu\\'") ;from ~/Source/elpa/packages/djvu/djvu-autoloads.el +(dts-mode auto-mode-alist "\\.dtsi?\\'") ;from ~/Source/elpa/packages/dts-mode/dts-mode-autoloads.el +(ess-bugs-mode auto-mode-alist "\\.[Bb][Uu][Gg]\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess-bugs-mode auto-mode-alist "\\.[Bb][Oo][Gg]\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess-bugs-mode auto-mode-alist "\\.[Bb][Mm][Dd]\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess-jags-mode auto-mode-alist "\\.[Jj][Aa][Gg]\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess-r-mode auto-mode-alist "/R/.*\\.q\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess-r-mode auto-mode-alist "\\.[rR]\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess-r-mode auto-mode-alist "\\.[rR]profile\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess-r-mode auto-mode-alist "NAMESPACE\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess-r-mode auto-mode-alist "CITATION\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess-r-transcript-mode auto-mode-alist "\\.[Rr]out\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess-r-mode interpreter-mode-alist "Rscript") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess-r-mode interpreter-mode-alist "r") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(makefile-mode auto-mode-alist "/Makevars\\(\\.win\\)?\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(conf-colon-mode auto-mode-alist "DESCRIPTION\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(Rd-mode auto-mode-alist "\\.Rd\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(S-transcript-mode auto-mode-alist "\\.[Ss]t\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(S-transcript-mode auto-mode-alist "\\.Sout\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(SAS-mode auto-mode-alist "\\.[Ss][Aa][Ss]\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(gle-mode auto-mode-alist "\\.gle\\'") ;from ~/Source/elpa/packages/gle-mode/gle-mode-autoloads.el +(gpr-mode auto-mode-alist "\\.gpr\\'") ;from ~/Source/elpa/packages/gpr-mode/gpr-mode-autoloads.el +(nxml-mode auto-mode-alist "\\.html?\\'") ;from ~/Source/elpa/packages/html5-schema/html5-schema-autoloads.el +(jgraph-mode auto-mode-alist "\\.jgr\\'") ;from ~/Source/elpa/packages/jgraph-mode/jgraph-mode-autoloads.el +(json-mode auto-mode-alist "\\.json\\'") ;from ~/Source/elpa/packages/json-mode/json-mode-autoloads.el +(lmc-asm-mode auto-mode-alist "\\.elmc\\'") ;from ~/Source/elpa/packages/lmc/lmc-autoloads.el +(muse-mode-choose-mode auto-mode-alist "\\.muse\\'") ;from ~/Source/elpa/packages/muse/lisp/muse-autoloads.el +(latex-mode auto-mode-alist "\\.drv\\'") ;from ~/Source/elpa/packages/names/tests/auctex-11.87.7/auctex-autoloads.el +(doctex-mode auto-mode-alist "\\.dtx\\'") ;from ~/Source/elpa/packages/names/tests/auctex-11.87.7/auctex-autoloads.el +(nftables-mode auto-mode-alist "\\.nft\\(?:ables\\)?\\'") ;from ~/Source/elpa/packages/nftables-mode/nftables-mode-autoloads.el +(nftables-mode auto-mode-alist "/etc/nftables.conf") ;from ~/Source/elpa/packages/nftables-mode/nftables-mode-autoloads.el +(nftables-mode interpreter-mode-alist "nft\\(?:ables\\)?") ;from ~/Source/elpa/packages/nftables-mode/nftables-mode-autoloads.el +(omn-mode auto-mode-alist "\\.pomn\\'") ;from ~/Source/elpa/packages/omn-mode/omn-mode-autoloads.el +(omn-mode auto-mode-alist "\\.omn\\'") ;from ~/Source/elpa/packages/omn-mode/omn-mode-autoloads.el +(poke-mode auto-mode-alist "\\.pk\\'") ;from ~/Source/elpa/packages/poke-mode/poke-mode-autoloads.el +(pspp-mode auto-mode-alist "\\.sps\\'") ;from ~/Source/elpa/packages/pspp-mode/pspp-mode-autoloads.el +(conf-mode auto-mode-alist "/\\(?:Pipfile\\|\\.?flake8\\)\\'") ;from ~/Source/elpa/packages/python/python-autoloads.el +(rec-mode auto-mode-alist "\\.rec\\'") ;from ~/Source/elpa/packages/rec-mode/rec-mode-autoloads.el +(rnc-mode auto-mode-alist "\\.rnc\\'") ;from ~/Source/elpa/packages/rnc-mode/rnc-mode-autoloads.el +(sed-mode auto-mode-alist "\\.sed\\'") ;from ~/Source/elpa/packages/sed-mode/sed-mode-autoloads.el +(sed-mode interpreter-mode-alist "sed") ;from ~/Source/elpa/packages/sed-mode/sed-mode-autoloads.el +(shen-mode auto-mode-alist "\\.shen\\'") ;from ~/Source/elpa/packages/shen-mode/shen-mode-autoloads.el +(sisu-mode auto-mode-alist "\\.ss[imt]\\'") ;from ~/Source/elpa/packages/sisu-mode/sisu-mode-autoloads.el +(smalltalk-mode auto-mode-alist "\\.st\\'") ;from ~/Source/elpa/packages/smalltalk-mode/smalltalk-mode-autoloads.el +(sml-mode auto-mode-alist "\\.s\\(ml\\|ig\\)\\'") ;from ~/Source/elpa/packages/sml-mode/sml-mode-autoloads.el +(sml-cm-mode auto-mode-alist "\\.cm\\'") ;from ~/Source/elpa/packages/sml-mode/sml-mode-autoloads.el +(sml-yacc-mode auto-mode-alist "\\.grm\\'") ;from ~/Source/elpa/packages/sml-mode/sml-mode-autoloads.el +(sql-mode auto-mode-alist "\\.cql\\'") ;from ~/Source/elpa/packages/sql-cassandra/sql-cassandra-autoloads.el +(sxhkdrc-mode auto-mode-alist "sxhkdrc\\'") ;from ~/Source/elpa/packages/sxhkdrc-mode/sxhkdrc-mode-autoloads.el +(systemd-automount-mode auto-mode-alist "\\.automount\\'") ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el +(systemd-mount-mode auto-mode-alist "\\.mount\\'") ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el +(systemd-path-mode auto-mode-alist "\\.path\\'") ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el +(systemd-service-mode auto-mode-alist "\\.service\\'") ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el +(systemd-socket-mode auto-mode-alist "\\.socket\\'") ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el +(systemd-swap-mode auto-mode-alist "\\.swap\\'") ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el +(systemd-timer-mode auto-mode-alist "\\.timer\\'") ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el +(vcard-mode auto-mode-alist "\\.[Vv][Cc][Ff]\\'") ;from ~/Source/elpa/packages/vcard/vcard-autoloads.el +(wisitoken-parse_table-mode auto-mode-alist "\\.parse_table.*\\'") ;from ~/Source/elpa/packages/wisi/wisi-autoloads.el +(simple-indent-mode auto-mode-alist "\\.wy\\'") ;from ~/Source/elpa/packages/wisitoken-grammar-mode/wisitoken-grammar-mode-autoloads.el +(wisitoken-grammar-mode auto-mode-alist "\\.wy\\'") ;from ~/Source/elpa/packages/wisitoken-grammar-mode/wisitoken-grammar-mode-autoloads.el +(coq-mode auto-mode-alist "\\.v\\'") ;from ~/Source/nongnu/packages/proof-general/generic/proof-autoloads.el ) From 8cc5013d5c6e013e59b7b9987f704138307ffd22 Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Thu, 7 Nov 2024 12:30:25 +0100 Subject: [PATCH 10/18] * doc/emacs/package.texi: Document 'package-autosuggest' --- doc/emacs/package.texi | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/emacs/package.texi b/doc/emacs/package.texi index 2022ea61f6b..b91a49cbf2e 100644 --- a/doc/emacs/package.texi +++ b/doc/emacs/package.texi @@ -408,6 +408,14 @@ name of the package archive directory. You can alter this list if you wish to use third party package archives---but do so at your own risk, and use only third parties that you think you can trust! +@cindex suggestions +@findex package-autosuggest + Emacs has a built-in database of suggested packages for certain file +types. If Emacs opens a file with no specific mode, you can use the +@code{package-autosuggest} command to install the recommended packages +from ELPA. By default, Emacs will display a clickable hint in the +mode-line if it there is a suggested package. + @anchor{Package Signing} @cindex package security @cindex package signing From 5a6717695ae1ce2ca3d13cd2db05f19f889f10ed Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Thu, 7 Nov 2024 12:33:14 +0100 Subject: [PATCH 11/18] * etc/NEWS: Mention 'package-autosuggest' --- etc/NEWS | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/etc/NEWS b/etc/NEWS index af6259a68c8..a808cc30b58 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -659,6 +659,13 @@ cloning, or prompts for that, too. When the argument is non-nil, the function switches to a buffer visiting the directory into which the repository was cloned. +** Package + ++++ +*** New command 'package-autosuggest' +Using a built-in database of package suggestions from ELPA, this command +will install viable packages if no specific major mode is available. + * New Modes and Packages in Emacs 31.1 From d9c581ead4da3764817939a7ff67ac3ecebab765 Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Thu, 7 Nov 2024 12:34:33 +0100 Subject: [PATCH 12/18] ; Fix typo in 'package--autosuggest-after-change-mode' --- lisp/emacs-lisp/package.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 308c6ad1a51..2849c05fa41 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -4686,7 +4686,7 @@ This function should be added to `after-change-major-mode-hook'." (message (substitute-command-keys (format "Found suggested packages: %s. Install using \\[package-autosuggest]" - pkgs)))p)))) + pkgs))))))) (defun package-autosuggest () "Prompt the user to install the suggested packages." From 48eefe094f3cfdd7135b1fb2a98f0699a4fb777e Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Thu, 7 Nov 2024 12:44:50 +0100 Subject: [PATCH 13/18] Do not enable 'package-autosuggest-mode' by default As the feature is intrusive and can slow down startup time it is safer to disable the feature by default. * doc/emacs/package.texi (Package Installation): Explicitly mention the minor mode in the manual. * etc/NEWS: Document it here as well. * lisp/emacs-lisp/package.el (package-autosuggest-mode): Change default value to nil and autoload it. --- doc/emacs/package.texi | 6 ++++-- etc/NEWS | 6 ++++++ lisp/emacs-lisp/package.el | 3 ++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/doc/emacs/package.texi b/doc/emacs/package.texi index b91a49cbf2e..7f8b199c9f3 100644 --- a/doc/emacs/package.texi +++ b/doc/emacs/package.texi @@ -410,11 +410,13 @@ and use only third parties that you think you can trust! @cindex suggestions @findex package-autosuggest +@findex package-autosuggest-mode Emacs has a built-in database of suggested packages for certain file types. If Emacs opens a file with no specific mode, you can use the @code{package-autosuggest} command to install the recommended packages -from ELPA. By default, Emacs will display a clickable hint in the -mode-line if it there is a suggested package. +from ELPA. After enabling @code{package-autosuggest-mode}, Emacs will +display a clickable hint in the mode-line if it there is a suggested +package. @anchor{Package Signing} @cindex package security diff --git a/etc/NEWS b/etc/NEWS index a808cc30b58..dcbe75b6b8b 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -666,6 +666,12 @@ the directory into which the repository was cloned. Using a built-in database of package suggestions from ELPA, this command will install viable packages if no specific major mode is available. ++++ +*** New minor mode 'package-autosuggest-mode' +When enabled, this displays a hint in the mode line indicating the +availability of a suggested package. You can customise the presentation +of these hints using 'package-autosuggest-style'. + * New Modes and Packages in Emacs 31.1 diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 2849c05fa41..b5c48928fc5 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -4567,9 +4567,10 @@ the existence of a suggestion." (const :tag "Prompt only once" once) (const :tag "Indicate with message" message))) +;;;###autoload (define-minor-mode package-autosuggest-mode "Enable the automatic suggestion and installation of packages." - :init-value t :global t + :global t (funcall (if package-autosuggest-mode #'add-hook #'remove-hook) 'after-change-major-mode-hook #'package--autosuggest-after-change-mode)) From bf72666d41e643a842f1a18950f83874e88d588d Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Thu, 7 Nov 2024 15:26:01 +0100 Subject: [PATCH 14/18] Update 'package-autosuggest' database * admin/scrape-elpa.el (scrape-elpa): Detect 'add-to-list' expressions that are "hidden" under a 'progn'. * etc/package-autosuggest.eld: Re-generate database with more packages (after having run "make autoloads") and with the above improvement. --- admin/scrape-elpa.el | 25 +++++---- etc/package-autosuggest.eld | 109 ++++++++++++++++++++++++++++++++++++ 2 files changed, 122 insertions(+), 12 deletions(-) diff --git a/admin/scrape-elpa.el b/admin/scrape-elpa.el index 78dbd7349d0..0b04ba79982 100644 --- a/admin/scrape-elpa.el +++ b/admin/scrape-elpa.el @@ -29,7 +29,7 @@ "Scrape autoload files in DIRECTORIES for package suggestions. This file will automatically update \"package-autosuggest.eld\", but not save it. You should invoke this command with built GNU ELPA and NonGNU -ELPA checkouts (i.e. having run \"make build-all\" in both directories). +ELPA checkouts (i.e. having run \"make autoloads\" in both directories). Please review the results before updating the autosuggest database!" (interactive (completing-read-multiple "ELPA directories to scrape: " @@ -60,17 +60,18 @@ Please review the results before updating the autosuggest database!" (insert-file-contents file) (condition-case nil (while t - (pcase (read (current-buffer)) - (`(add-to-list - ',(and (or 'interpreter-mode-alist - 'magic-mode-alist - 'auto-mode-alist) - variable) - '(,(and (pred stringp) regexp) . - ,(and (pred symbolp) mode))) - (terpri) - (prin1 `(,mode ,variable ,regexp)) - (princ (concat " ;from " file))))) + (dolist (exp (macroexp-unprogn (read (current-buffer)))) + (pcase exp + (`(add-to-list + ',(and (or 'interpreter-mode-alist + 'magic-mode-alist + 'auto-mode-alist) + variable) + '(,(and (pred stringp) regexp) . + ,(and (pred symbolp) mode))) + (terpri) + (prin1 `(,mode ,variable ,regexp)) + (princ (concat " ;from " file)))))) (end-of-file nil)))))) (insert "\n)\n"))) diff --git a/etc/package-autosuggest.eld b/etc/package-autosuggest.eld index 742983fa9eb..a8977f194e5 100644 --- a/etc/package-autosuggest.eld +++ b/etc/package-autosuggest.eld @@ -41,6 +41,8 @@ (jgraph-mode auto-mode-alist "\\.jgr\\'") ;from ~/Source/elpa/packages/jgraph-mode/jgraph-mode-autoloads.el (json-mode auto-mode-alist "\\.json\\'") ;from ~/Source/elpa/packages/json-mode/json-mode-autoloads.el (lmc-asm-mode auto-mode-alist "\\.elmc\\'") ;from ~/Source/elpa/packages/lmc/lmc-autoloads.el +(tlc-mode auto-mode-alist "\\.tlc\\'") ;from ~/Source/elpa/packages/matlab-mode/matlab-mode-autoloads.el +(tlc-mode auto-mode-alist "\\.tlc\\'") ;from ~/Source/elpa/packages/matlab/matlab-autoloads.el (muse-mode-choose-mode auto-mode-alist "\\.muse\\'") ;from ~/Source/elpa/packages/muse/lisp/muse-autoloads.el (latex-mode auto-mode-alist "\\.drv\\'") ;from ~/Source/elpa/packages/names/tests/auctex-11.87.7/auctex-autoloads.el (doctex-mode auto-mode-alist "\\.dtx\\'") ;from ~/Source/elpa/packages/names/tests/auctex-11.87.7/auctex-autoloads.el @@ -75,5 +77,112 @@ (wisitoken-parse_table-mode auto-mode-alist "\\.parse_table.*\\'") ;from ~/Source/elpa/packages/wisi/wisi-autoloads.el (simple-indent-mode auto-mode-alist "\\.wy\\'") ;from ~/Source/elpa/packages/wisitoken-grammar-mode/wisitoken-grammar-mode-autoloads.el (wisitoken-grammar-mode auto-mode-alist "\\.wy\\'") ;from ~/Source/elpa/packages/wisitoken-grammar-mode/wisitoken-grammar-mode-autoloads.el +(adoc-mode auto-mode-alist "\\.a\\(?:scii\\)?doc\\'") ;from ~/Source/nongnu/packages/adoc-mode/adoc-mode-autoloads.el +(apache-mode auto-mode-alist "/\\.htaccess\\'") ;from ~/Source/nongnu/packages/apache-mode/apache-mode-autoloads.el +(apache-mode auto-mode-alist "/\\(?:access\\|httpd\\|srm\\)\\.conf\\'") ;from ~/Source/nongnu/packages/apache-mode/apache-mode-autoloads.el +(apache-mode auto-mode-alist "/apache2/.+\\.conf\\'") ;from ~/Source/nongnu/packages/apache-mode/apache-mode-autoloads.el +(apache-mode auto-mode-alist "/httpd/conf/.+\\.conf\\'") ;from ~/Source/nongnu/packages/apache-mode/apache-mode-autoloads.el +(apache-mode auto-mode-alist "/apache2/sites-\\(?:available\\|enabled\\)/") ;from ~/Source/nongnu/packages/apache-mode/apache-mode-autoloads.el +(arduino-mode auto-mode-alist "\\.pde\\'") ;from ~/Source/nongnu/packages/arduino-mode/arduino-mode-autoloads.el +(arduino-mode auto-mode-alist "\\.ino\\'") ;from ~/Source/nongnu/packages/arduino-mode/arduino-mode-autoloads.el +(beancount-mode auto-mode-alist "\\.beancount\\'") ;from ~/Source/nongnu/packages/beancount/beancount-autoloads.el +(bison-mode auto-mode-alist "\\.y\\'") ;from ~/Source/nongnu/packages/bison-mode/bison-mode-autoloads.el +(flex-mode auto-mode-alist "\\.l\\'") ;from ~/Source/nongnu/packages/bison-mode/bison-mode-autoloads.el +(jison-mode auto-mode-alist "\\.jison\\'") ;from ~/Source/nongnu/packages/bison-mode/bison-mode-autoloads.el +(bqn-mode auto-mode-alist "\\.bqn\\'") ;from ~/Source/nongnu/packages/bqn-mode/bqn-mode-autoloads.el +(bqn-mode interpreter-mode-alist "bqn") ;from ~/Source/nongnu/packages/bqn-mode/bqn-mode-autoloads.el +(clojure-mode auto-mode-alist "\\.\\(clj\\|cljd\\|dtm\\|edn\\|lpy\\)\\'") ;from ~/Source/nongnu/packages/clojure-mode/clojure-mode-autoloads.el +(clojurec-mode auto-mode-alist "\\.cljc\\'") ;from ~/Source/nongnu/packages/clojure-mode/clojure-mode-autoloads.el +(clojurescript-mode auto-mode-alist "\\.cljs\\'") ;from ~/Source/nongnu/packages/clojure-mode/clojure-mode-autoloads.el +(clojure-mode auto-mode-alist "\\(?:build\\|profile\\)\\.boot\\'") ;from ~/Source/nongnu/packages/clojure-mode/clojure-mode-autoloads.el +(clojure-mode interpreter-mode-alist "bb") ;from ~/Source/nongnu/packages/clojure-mode/clojure-mode-autoloads.el +(clojurescript-mode interpreter-mode-alist "nbb") ;from ~/Source/nongnu/packages/clojure-mode/clojure-mode-autoloads.el +(coffee-mode auto-mode-alist "\\.coffee\\'") ;from ~/Source/nongnu/packages/coffee-mode/coffee-mode-autoloads.el +(coffee-mode auto-mode-alist "\\.iced\\'") ;from ~/Source/nongnu/packages/coffee-mode/coffee-mode-autoloads.el +(coffee-mode auto-mode-alist "Cakefile\\'") ;from ~/Source/nongnu/packages/coffee-mode/coffee-mode-autoloads.el +(coffee-mode auto-mode-alist "\\.cson\\'") ;from ~/Source/nongnu/packages/coffee-mode/coffee-mode-autoloads.el +(coffee-mode interpreter-mode-alist "coffee") ;from ~/Source/nongnu/packages/coffee-mode/coffee-mode-autoloads.el +(d-mode auto-mode-alist "\\.d[i]?\\'") ;from ~/Source/nongnu/packages/d-mode/d-mode-autoloads.el +(dart-mode auto-mode-alist "\\.dart\\'") ;from ~/Source/nongnu/packages/dart-mode/dart-mode-autoloads.el +(dockerfile-mode auto-mode-alist "\\.dockerfile\\'") ;from ~/Source/nongnu/packages/dockerfile-mode/dockerfile-mode-autoloads.el +(php-mode auto-mode-alist "[^/]\\.\\(module\\|test\\|install\\|profile\\|tpl\\.php\\|theme\\|inc\\)\\'") ;from ~/Source/nongnu/packages/drupal-mode/drupal-mode-autoloads.el +(conf-windows-mode auto-mode-alist "[^/]\\.info\\'") ;from ~/Source/nongnu/packages/drupal-mode/drupal-mode-autoloads.el +(drush-make-mode auto-mode-alist "[^/]\\.make\\'") ;from ~/Source/nongnu/packages/drupal-mode/drupal-mode-autoloads.el +(editorconfig-conf-mode auto-mode-alist "\\.editorconfig\\'") ;from ~/Source/nongnu/packages/editorconfig/editorconfig-autoloads.el +(elixir-mode auto-mode-alist "\\.elixir\\'") ;from ~/Source/nongnu/packages/elixir-mode/elixir-mode-autoloads.el +(elixir-mode auto-mode-alist "\\.ex\\'") ;from ~/Source/nongnu/packages/elixir-mode/elixir-mode-autoloads.el +(elixir-mode auto-mode-alist "\\.exs\\'") ;from ~/Source/nongnu/packages/elixir-mode/elixir-mode-autoloads.el +(elixir-mode auto-mode-alist "mix\\.lock") ;from ~/Source/nongnu/packages/elixir-mode/elixir-mode-autoloads.el +(ett-mode auto-mode-alist "\\.ett\\'") ;from ~/Source/nongnu/packages/ett/ett-autoloads.el +(forth-mode auto-mode-alist "\\.\\(f\\|fs\\|fth\\|4th\\)\\'") ;from ~/Source/nongnu/packages/forth-mode/forth-mode-autoloads.el +(scheme-mode auto-mode-alist "\\.rkt\\'") ;from ~/Source/nongnu/packages/geiser-racket/geiser-racket-autoloads.el +(gnu-apl-mode auto-mode-alist "\\.apl\\'") ;from ~/Source/nongnu/packages/gnu-apl-mode/gnu-apl-mode-autoloads.el +(gnu-apl-mode interpreter-mode-alist "apl") ;from ~/Source/nongnu/packages/gnu-apl-mode/gnu-apl-mode-autoloads.el +(go-dot-mod-mode auto-mode-alist "go\\.mod\\'") ;from ~/Source/nongnu/packages/go-mode/go-mode-autoloads.el +(go-dot-work-mode auto-mode-alist "go\\.work\\'") ;from ~/Source/nongnu/packages/go-mode/go-mode-autoloads.el +(graphql-mode auto-mode-alist "\\.graphql\\'") ;from ~/Source/nongnu/packages/graphql-mode/graphql-mode-autoloads.el +(graphql-mode auto-mode-alist "\\.gql\\'") ;from ~/Source/nongnu/packages/graphql-mode/graphql-mode-autoloads.el +(haml-mode auto-mode-alist "\\.haml\\'") ;from ~/Source/nongnu/packages/haml-mode/haml-mode-autoloads.el +(ghc-core-mode auto-mode-alist "\\.hcr\\'") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el +(ghc-core-mode auto-mode-alist "\\.dump-simpl\\'") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el +(ghci-script-mode auto-mode-alist "\\.ghci\\'") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el +(haskell-c2hs-mode auto-mode-alist "\\.chs\\'") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el +(haskell-cabal-mode auto-mode-alist "\\.cabal\\'\\|/cabal\\.project\\|/\\.cabal/config\\'") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el +(haskell-mode auto-mode-alist "\\.[gh]s\\'") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el +(haskell-mode auto-mode-alist "\\.hsig\\'") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el +(haskell-literate-mode auto-mode-alist "\\.l[gh]s\\'") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el +(haskell-mode auto-mode-alist "\\.hsc\\'") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el +(haskell-mode interpreter-mode-alist "runghc") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el +(haskell-mode interpreter-mode-alist "runhaskell") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el +(j-mode auto-mode-alist "\\.ij[rsp]$") ;from ~/Source/nongnu/packages/j-mode/j-mode-autoloads.el +(j-lab-mode auto-mode-alist "\\.ijt$") ;from ~/Source/nongnu/packages/j-mode/j-mode-autoloads.el +(jade-mode auto-mode-alist "\\.jade\\'") ;from ~/Source/nongnu/packages/jade-mode/jade-mode-autoloads.el +(jade-mode auto-mode-alist "\\.pug\\'") ;from ~/Source/nongnu/packages/jade-mode/jade-mode-autoloads.el +(stylus-mode auto-mode-alist "\\.styl\\'") ;from ~/Source/nongnu/packages/jade-mode/jade-mode-autoloads.el +(jinja2-mode auto-mode-alist "\\.jinja2\\'") ;from ~/Source/nongnu/packages/jinja2-mode/jinja2-mode-autoloads.el +(jinja2-mode auto-mode-alist "\\.j2\\'") ;from ~/Source/nongnu/packages/jinja2-mode/jinja2-mode-autoloads.el +(julia-mode auto-mode-alist "\\.jl\\'") ;from ~/Source/nongnu/packages/julia-mode/julia-mode-autoloads.el +(lua-mode auto-mode-alist "\\.lua\\'") ;from ~/Source/nongnu/packages/lua-mode/lua-mode-autoloads.el +(lua-mode interpreter-mode-alist "lua") ;from ~/Source/nongnu/packages/lua-mode/lua-mode-autoloads.el +(markdown-mode auto-mode-alist "\\.\\(?:md\\|markdown\\|mkd\\|mdown\\|mkdn\\|mdwn\\)\\'") ;from ~/Source/nongnu/packages/markdown-mode/markdown-mode-autoloads.el +(nginx-mode auto-mode-alist "nginx\\.conf\\'") ;from ~/Source/nongnu/packages/nginx-mode/nginx-mode-autoloads.el +(nginx-mode auto-mode-alist "/nginx/.+\\.conf\\'") ;from ~/Source/nongnu/packages/nginx-mode/nginx-mode-autoloads.el +(nix-drv-mode auto-mode-alist "^/nix/store/.+\\.drv\\'") ;from ~/Source/nongnu/packages/nix-mode/nix-mode-autoloads.el +(js-mode auto-mode-alist "\\flake.lock\\'") ;from ~/Source/nongnu/packages/nix-mode/nix-mode-autoloads.el +(nix-mode auto-mode-alist "\\.nix\\'") ;from ~/Source/nongnu/packages/nix-mode/nix-mode-autoloads.el +(php-mode auto-mode-alist "/\\.php_cs\\(?:\\.dist\\)?\\'") ;from ~/Source/nongnu/packages/php-mode/lisp/php-mode-autoloads.el +(php-mode auto-mode-alist "\\.\\(?:php\\.inc\\|stub\\)\\'") ;from ~/Source/nongnu/packages/php-mode/lisp/php-mode-autoloads.el +(php-mode-maybe auto-mode-alist "\\.\\(?:php[s345]?\\|phtml\\)\\'") ;from ~/Source/nongnu/packages/php-mode/lisp/php-mode-autoloads.el (coq-mode auto-mode-alist "\\.v\\'") ;from ~/Source/nongnu/packages/proof-general/generic/proof-autoloads.el +(racket-mode auto-mode-alist "\\.rkt\\'") ;from ~/Source/nongnu/packages/racket-mode/racket-mode-autoloads.el +(racket-mode auto-mode-alist "\\.rktd\\'") ;from ~/Source/nongnu/packages/racket-mode/racket-mode-autoloads.el +(racket-mode auto-mode-alist "\\.rktl\\'") ;from ~/Source/nongnu/packages/racket-mode/racket-mode-autoloads.el +(racket-mode interpreter-mode-alist "racket") ;from ~/Source/nongnu/packages/racket-mode/racket-mode-autoloads.el +(raku-mode interpreter-mode-alist "perl6\\|raku") ;from ~/Source/nongnu/packages/raku-mode/raku-mode-autoloads.el +(raku-mode auto-mode-alist "\\.p[lm]?6\\'") ;from ~/Source/nongnu/packages/raku-mode/raku-mode-autoloads.el +(raku-mode auto-mode-alist "\\.nqp\\'") ;from ~/Source/nongnu/packages/raku-mode/raku-mode-autoloads.el +(raku-mode auto-mode-alist "\\.raku\\(?:mod\\|test\\)?\\'") ;from ~/Source/nongnu/packages/raku-mode/raku-mode-autoloads.el +(rfc-mode auto-mode-alist "/rfc[0-9]+\\.txt\\'") ;from ~/Source/nongnu/packages/rfc-mode/rfc-mode-autoloads.el +(rust-mode auto-mode-alist "\\.rs\\'") ;from ~/Source/nongnu/packages/rust-mode/rust-mode-autoloads.el +(sass-mode auto-mode-alist "\\.sass\\'") ;from ~/Source/nongnu/packages/sass-mode/sass-mode-autoloads.el +(scad-mode auto-mode-alist "\\.scad\\'") ;from ~/Source/nongnu/packages/scad-mode/scad-mode-autoloads.el +(scala-mode auto-mode-alist "\\.\\(scala\\|sbt\\|worksheet\\.sc\\)\\'") ;from ~/Source/nongnu/packages/scala-mode/scala-mode-autoloads.el +(jade-mode auto-mode-alist "\\.jade\\'") ;from ~/Source/nongnu/packages/stylus-mode/stylus-mode-autoloads.el +(jade-mode auto-mode-alist "\\.pug\\'") ;from ~/Source/nongnu/packages/stylus-mode/stylus-mode-autoloads.el +(stylus-mode auto-mode-alist "\\.styl\\'") ;from ~/Source/nongnu/packages/stylus-mode/stylus-mode-autoloads.el +(subed-ass-mode auto-mode-alist "\\.ass\\'") ;from ~/Source/nongnu/packages/subed/subed/subed-autoloads.el +(subed-srt-mode auto-mode-alist "\\.srt\\'") ;from ~/Source/nongnu/packages/subed/subed/subed-autoloads.el +(subed-vtt-mode auto-mode-alist "\\.vtt\\'") ;from ~/Source/nongnu/packages/subed/subed/subed-autoloads.el +(swift-mode auto-mode-alist "\\.swift\\(interface\\)?\\'") ;from ~/Source/nongnu/packages/swift-mode/swift-mode-autoloads.el +(systemd-mode auto-mode-alist "\\.nspawn\\'") ;from ~/Source/nongnu/packages/systemd/systemd-autoloads.el +(tuareg-mode auto-mode-alist "\\.ml[ip]?\\'") ;from ~/Source/nongnu/packages/tuareg/tuareg-autoloads.el +(tuareg-mode auto-mode-alist "\\.eliomi?\\'") ;from ~/Source/nongnu/packages/tuareg/tuareg-autoloads.el +(tuareg-mode interpreter-mode-alist "ocamlrun") ;from ~/Source/nongnu/packages/tuareg/tuareg-autoloads.el +(tuareg-mode interpreter-mode-alist "ocaml") ;from ~/Source/nongnu/packages/tuareg/tuareg-autoloads.el +(tuareg-menhir-mode auto-mode-alist "\\.mly\\'") ;from ~/Source/nongnu/packages/tuareg/tuareg-autoloads.el +(tuareg-opam-mode auto-mode-alist "[./]opam_?\\'") ;from ~/Source/nongnu/packages/tuareg/tuareg-autoloads.el +(typescript-mode auto-mode-alist "\\.ts\\'") ;from ~/Source/nongnu/packages/typescript-mode/typescript-mode-autoloads.el +(yaml-mode auto-mode-alist "\\.\\(e?ya?\\|ra\\)ml\\'") ;from ~/Source/nongnu/packages/yaml-mode/yaml-mode-autoloads.el +(yaml-mode magic-mode-alist "^%YAML\\s-+[0-9]+\\.[0-9]+\\(\\s-+#\\|\\s-*$\\)") ;from ~/Source/nongnu/packages/yaml-mode/yaml-mode-autoloads.el +(zig-mode auto-mode-alist "\\.\\(zig\\|zon\\)\\'") ;from ~/Source/nongnu/packages/zig-mode/zig-mode-autoloads.el ) From 450c49af1c629c06669732ca12869f747f773963 Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Thu, 7 Nov 2024 15:56:52 +0100 Subject: [PATCH 15/18] Distinguish between suggested packages and major modes * admin/scrape-elpa.el (scrape-elpa): Infer package names from autoloads file. * etc/package-autosuggest.eld: Recompute database. * lisp/emacs-lisp/package.el (package-autosuggest-database): Update documentation to clarify how the major mode can be explicitly indicated. (package--suggestion-applies-p): Handle the optional fourth element. --- admin/scrape-elpa.el | 7 +- etc/package-autosuggest.eld | 168 ++++++++++++++++++------------------ lisp/emacs-lisp/package.el | 15 ++-- 3 files changed, 99 insertions(+), 91 deletions(-) diff --git a/admin/scrape-elpa.el b/admin/scrape-elpa.el index 0b04ba79982..ef2b189883e 100644 --- a/admin/scrape-elpa.el +++ b/admin/scrape-elpa.el @@ -55,7 +55,9 @@ Please review the results before updating the autosuggest database!" dir "-autoloads\\.el\\'")) directories)) "Scraping files..." - (let ((inhibit-message t)) + (and-let* (((string-match "/\\([^/]+?\\)-autoloads\\.el\\'" file)) + (pkg (intern (match-string 1 file))) + (inhibit-message t)) (with-temp-buffer (insert-file-contents file) (condition-case nil @@ -70,7 +72,8 @@ Please review the results before updating the autosuggest database!" '(,(and (pred stringp) regexp) . ,(and (pred symbolp) mode))) (terpri) - (prin1 `(,mode ,variable ,regexp)) + (prin1 (append (list pkg variable regexp) + (and (not (eq pkg mode)) (list mode)))) (princ (concat " ;from " file)))))) (end-of-file nil)))))) (insert "\n)\n"))) diff --git a/etc/package-autosuggest.eld b/etc/package-autosuggest.eld index a8977f194e5..38cf121a49e 100644 --- a/etc/package-autosuggest.eld +++ b/etc/package-autosuggest.eld @@ -5,47 +5,47 @@ ( (ada-mode auto-mode-alist "\\.ad[abs]\\'") ;from ~/Source/elpa/packages/ada-mode/ada-mode-autoloads.el -(arbitools-mode auto-mode-alist "\\.trf?\\'") ;from ~/Source/elpa/packages/arbitools/arbitools-autoloads.el -(LaTeX-mode auto-mode-alist "\\.hva\\'") ;from ~/Source/elpa/packages/auctex/auctex-autoloads.el +(arbitools auto-mode-alist "\\.trf?\\'" arbitools-mode) ;from ~/Source/elpa/packages/arbitools/arbitools-autoloads.el +(auctex auto-mode-alist "\\.hva\\'" LaTeX-mode) ;from ~/Source/elpa/packages/auctex/auctex-autoloads.el (bnf-mode auto-mode-alist "\\.bnf\\'") ;from ~/Source/elpa/packages/bnf-mode/bnf-mode-autoloads.el -(chess-pgn-mode auto-mode-alist "\\.pgn\\'") ;from ~/Source/elpa/packages/chess/chess-autoloads.el +(chess auto-mode-alist "\\.pgn\\'" chess-pgn-mode) ;from ~/Source/elpa/packages/chess/chess-autoloads.el (cobol-mode auto-mode-alist "\\.c\\(ob\\|bl\\|py\\)\\'") ;from ~/Source/elpa/packages/cobol-mode/cobol-mode-autoloads.el -(code-cells-convert-ipynb auto-mode-alist "\\.ipynb\\'") ;from ~/Source/elpa/packages/code-cells/code-cells-autoloads.el +(code-cells auto-mode-alist "\\.ipynb\\'" code-cells-convert-ipynb) ;from ~/Source/elpa/packages/code-cells/code-cells-autoloads.el (csharp-mode auto-mode-alist "\\.cs\\'") ;from ~/Source/elpa/packages/csharp-mode/csharp-mode-autoloads.el (csv-mode auto-mode-alist "\\.[Cc][Ss][Vv]\\'") ;from ~/Source/elpa/packages/csv-mode/csv-mode-autoloads.el -(tsv-mode auto-mode-alist "\\.tsv\\'") ;from ~/Source/elpa/packages/csv-mode/csv-mode-autoloads.el -(dismal-mode auto-mode-alist "\\.dis\\'") ;from ~/Source/elpa/packages/dismal/dismal-autoloads.el -(djvu-init-mode auto-mode-alist "\\.djvu\\'") ;from ~/Source/elpa/packages/djvu/djvu-autoloads.el +(csv-mode auto-mode-alist "\\.tsv\\'" tsv-mode) ;from ~/Source/elpa/packages/csv-mode/csv-mode-autoloads.el +(dismal auto-mode-alist "\\.dis\\'" dismal-mode) ;from ~/Source/elpa/packages/dismal/dismal-autoloads.el +(djvu auto-mode-alist "\\.djvu\\'" djvu-init-mode) ;from ~/Source/elpa/packages/djvu/djvu-autoloads.el (dts-mode auto-mode-alist "\\.dtsi?\\'") ;from ~/Source/elpa/packages/dts-mode/dts-mode-autoloads.el -(ess-bugs-mode auto-mode-alist "\\.[Bb][Uu][Gg]\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess-bugs-mode auto-mode-alist "\\.[Bb][Oo][Gg]\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess-bugs-mode auto-mode-alist "\\.[Bb][Mm][Dd]\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess-jags-mode auto-mode-alist "\\.[Jj][Aa][Gg]\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess-r-mode auto-mode-alist "/R/.*\\.q\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess-r-mode auto-mode-alist "\\.[rR]\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess-r-mode auto-mode-alist "\\.[rR]profile\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess-r-mode auto-mode-alist "NAMESPACE\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess-r-mode auto-mode-alist "CITATION\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess-r-transcript-mode auto-mode-alist "\\.[Rr]out\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess-r-mode interpreter-mode-alist "Rscript") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess-r-mode interpreter-mode-alist "r") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(makefile-mode auto-mode-alist "/Makevars\\(\\.win\\)?\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(conf-colon-mode auto-mode-alist "DESCRIPTION\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(Rd-mode auto-mode-alist "\\.Rd\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(S-transcript-mode auto-mode-alist "\\.[Ss]t\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(S-transcript-mode auto-mode-alist "\\.Sout\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(SAS-mode auto-mode-alist "\\.[Ss][Aa][Ss]\\'") ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess auto-mode-alist "\\.[Bb][Uu][Gg]\\'" ess-bugs-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess auto-mode-alist "\\.[Bb][Oo][Gg]\\'" ess-bugs-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess auto-mode-alist "\\.[Bb][Mm][Dd]\\'" ess-bugs-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess auto-mode-alist "\\.[Jj][Aa][Gg]\\'" ess-jags-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess auto-mode-alist "/R/.*\\.q\\'" ess-r-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess auto-mode-alist "\\.[rR]\\'" ess-r-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess auto-mode-alist "\\.[rR]profile\\'" ess-r-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess auto-mode-alist "NAMESPACE\\'" ess-r-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess auto-mode-alist "CITATION\\'" ess-r-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess auto-mode-alist "\\.[Rr]out\\'" ess-r-transcript-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess interpreter-mode-alist "Rscript" ess-r-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess interpreter-mode-alist "r" ess-r-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess auto-mode-alist "/Makevars\\(\\.win\\)?\\'" makefile-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess auto-mode-alist "DESCRIPTION\\'" conf-colon-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess auto-mode-alist "\\.Rd\\'" Rd-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess auto-mode-alist "\\.[Ss]t\\'" S-transcript-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess auto-mode-alist "\\.Sout\\'" S-transcript-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el +(ess auto-mode-alist "\\.[Ss][Aa][Ss]\\'" SAS-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el (gle-mode auto-mode-alist "\\.gle\\'") ;from ~/Source/elpa/packages/gle-mode/gle-mode-autoloads.el (gpr-mode auto-mode-alist "\\.gpr\\'") ;from ~/Source/elpa/packages/gpr-mode/gpr-mode-autoloads.el -(nxml-mode auto-mode-alist "\\.html?\\'") ;from ~/Source/elpa/packages/html5-schema/html5-schema-autoloads.el +(html5-schema auto-mode-alist "\\.html?\\'" nxml-mode) ;from ~/Source/elpa/packages/html5-schema/html5-schema-autoloads.el (jgraph-mode auto-mode-alist "\\.jgr\\'") ;from ~/Source/elpa/packages/jgraph-mode/jgraph-mode-autoloads.el (json-mode auto-mode-alist "\\.json\\'") ;from ~/Source/elpa/packages/json-mode/json-mode-autoloads.el -(lmc-asm-mode auto-mode-alist "\\.elmc\\'") ;from ~/Source/elpa/packages/lmc/lmc-autoloads.el -(tlc-mode auto-mode-alist "\\.tlc\\'") ;from ~/Source/elpa/packages/matlab-mode/matlab-mode-autoloads.el -(tlc-mode auto-mode-alist "\\.tlc\\'") ;from ~/Source/elpa/packages/matlab/matlab-autoloads.el -(muse-mode-choose-mode auto-mode-alist "\\.muse\\'") ;from ~/Source/elpa/packages/muse/lisp/muse-autoloads.el -(latex-mode auto-mode-alist "\\.drv\\'") ;from ~/Source/elpa/packages/names/tests/auctex-11.87.7/auctex-autoloads.el -(doctex-mode auto-mode-alist "\\.dtx\\'") ;from ~/Source/elpa/packages/names/tests/auctex-11.87.7/auctex-autoloads.el +(lmc auto-mode-alist "\\.elmc\\'" lmc-asm-mode) ;from ~/Source/elpa/packages/lmc/lmc-autoloads.el +(matlab-mode auto-mode-alist "\\.tlc\\'" tlc-mode) ;from ~/Source/elpa/packages/matlab-mode/matlab-mode-autoloads.el +(matlab auto-mode-alist "\\.tlc\\'" tlc-mode) ;from ~/Source/elpa/packages/matlab/matlab-autoloads.el +(muse auto-mode-alist "\\.muse\\'" muse-mode-choose-mode) ;from ~/Source/elpa/packages/muse/lisp/muse-autoloads.el +(auctex auto-mode-alist "\\.drv\\'" latex-mode) ;from ~/Source/elpa/packages/names/tests/auctex-11.87.7/auctex-autoloads.el +(auctex auto-mode-alist "\\.dtx\\'" doctex-mode) ;from ~/Source/elpa/packages/names/tests/auctex-11.87.7/auctex-autoloads.el (nftables-mode auto-mode-alist "\\.nft\\(?:ables\\)?\\'") ;from ~/Source/elpa/packages/nftables-mode/nftables-mode-autoloads.el (nftables-mode auto-mode-alist "/etc/nftables.conf") ;from ~/Source/elpa/packages/nftables-mode/nftables-mode-autoloads.el (nftables-mode interpreter-mode-alist "nft\\(?:ables\\)?") ;from ~/Source/elpa/packages/nftables-mode/nftables-mode-autoloads.el @@ -53,7 +53,7 @@ (omn-mode auto-mode-alist "\\.omn\\'") ;from ~/Source/elpa/packages/omn-mode/omn-mode-autoloads.el (poke-mode auto-mode-alist "\\.pk\\'") ;from ~/Source/elpa/packages/poke-mode/poke-mode-autoloads.el (pspp-mode auto-mode-alist "\\.sps\\'") ;from ~/Source/elpa/packages/pspp-mode/pspp-mode-autoloads.el -(conf-mode auto-mode-alist "/\\(?:Pipfile\\|\\.?flake8\\)\\'") ;from ~/Source/elpa/packages/python/python-autoloads.el +(python auto-mode-alist "/\\(?:Pipfile\\|\\.?flake8\\)\\'" conf-mode) ;from ~/Source/elpa/packages/python/python-autoloads.el (rec-mode auto-mode-alist "\\.rec\\'") ;from ~/Source/elpa/packages/rec-mode/rec-mode-autoloads.el (rnc-mode auto-mode-alist "\\.rnc\\'") ;from ~/Source/elpa/packages/rnc-mode/rnc-mode-autoloads.el (sed-mode auto-mode-alist "\\.sed\\'") ;from ~/Source/elpa/packages/sed-mode/sed-mode-autoloads.el @@ -62,20 +62,20 @@ (sisu-mode auto-mode-alist "\\.ss[imt]\\'") ;from ~/Source/elpa/packages/sisu-mode/sisu-mode-autoloads.el (smalltalk-mode auto-mode-alist "\\.st\\'") ;from ~/Source/elpa/packages/smalltalk-mode/smalltalk-mode-autoloads.el (sml-mode auto-mode-alist "\\.s\\(ml\\|ig\\)\\'") ;from ~/Source/elpa/packages/sml-mode/sml-mode-autoloads.el -(sml-cm-mode auto-mode-alist "\\.cm\\'") ;from ~/Source/elpa/packages/sml-mode/sml-mode-autoloads.el -(sml-yacc-mode auto-mode-alist "\\.grm\\'") ;from ~/Source/elpa/packages/sml-mode/sml-mode-autoloads.el -(sql-mode auto-mode-alist "\\.cql\\'") ;from ~/Source/elpa/packages/sql-cassandra/sql-cassandra-autoloads.el +(sml-mode auto-mode-alist "\\.cm\\'" sml-cm-mode) ;from ~/Source/elpa/packages/sml-mode/sml-mode-autoloads.el +(sml-mode auto-mode-alist "\\.grm\\'" sml-yacc-mode) ;from ~/Source/elpa/packages/sml-mode/sml-mode-autoloads.el +(sql-cassandra auto-mode-alist "\\.cql\\'" sql-mode) ;from ~/Source/elpa/packages/sql-cassandra/sql-cassandra-autoloads.el (sxhkdrc-mode auto-mode-alist "sxhkdrc\\'") ;from ~/Source/elpa/packages/sxhkdrc-mode/sxhkdrc-mode-autoloads.el -(systemd-automount-mode auto-mode-alist "\\.automount\\'") ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el -(systemd-mount-mode auto-mode-alist "\\.mount\\'") ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el -(systemd-path-mode auto-mode-alist "\\.path\\'") ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el -(systemd-service-mode auto-mode-alist "\\.service\\'") ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el -(systemd-socket-mode auto-mode-alist "\\.socket\\'") ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el -(systemd-swap-mode auto-mode-alist "\\.swap\\'") ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el -(systemd-timer-mode auto-mode-alist "\\.timer\\'") ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el -(vcard-mode auto-mode-alist "\\.[Vv][Cc][Ff]\\'") ;from ~/Source/elpa/packages/vcard/vcard-autoloads.el -(wisitoken-parse_table-mode auto-mode-alist "\\.parse_table.*\\'") ;from ~/Source/elpa/packages/wisi/wisi-autoloads.el -(simple-indent-mode auto-mode-alist "\\.wy\\'") ;from ~/Source/elpa/packages/wisitoken-grammar-mode/wisitoken-grammar-mode-autoloads.el +(systemd auto-mode-alist "\\.automount\\'" systemd-automount-mode) ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el +(systemd auto-mode-alist "\\.mount\\'" systemd-mount-mode) ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el +(systemd auto-mode-alist "\\.path\\'" systemd-path-mode) ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el +(systemd auto-mode-alist "\\.service\\'" systemd-service-mode) ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el +(systemd auto-mode-alist "\\.socket\\'" systemd-socket-mode) ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el +(systemd auto-mode-alist "\\.swap\\'" systemd-swap-mode) ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el +(systemd auto-mode-alist "\\.timer\\'" systemd-timer-mode) ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el +(vcard auto-mode-alist "\\.[Vv][Cc][Ff]\\'" vcard-mode) ;from ~/Source/elpa/packages/vcard/vcard-autoloads.el +(wisi auto-mode-alist "\\.parse_table.*\\'" wisitoken-parse_table-mode) ;from ~/Source/elpa/packages/wisi/wisi-autoloads.el +(wisitoken-grammar-mode auto-mode-alist "\\.wy\\'" simple-indent-mode) ;from ~/Source/elpa/packages/wisitoken-grammar-mode/wisitoken-grammar-mode-autoloads.el (wisitoken-grammar-mode auto-mode-alist "\\.wy\\'") ;from ~/Source/elpa/packages/wisitoken-grammar-mode/wisitoken-grammar-mode-autoloads.el (adoc-mode auto-mode-alist "\\.a\\(?:scii\\)?doc\\'") ;from ~/Source/nongnu/packages/adoc-mode/adoc-mode-autoloads.el (apache-mode auto-mode-alist "/\\.htaccess\\'") ;from ~/Source/nongnu/packages/apache-mode/apache-mode-autoloads.el @@ -85,18 +85,18 @@ (apache-mode auto-mode-alist "/apache2/sites-\\(?:available\\|enabled\\)/") ;from ~/Source/nongnu/packages/apache-mode/apache-mode-autoloads.el (arduino-mode auto-mode-alist "\\.pde\\'") ;from ~/Source/nongnu/packages/arduino-mode/arduino-mode-autoloads.el (arduino-mode auto-mode-alist "\\.ino\\'") ;from ~/Source/nongnu/packages/arduino-mode/arduino-mode-autoloads.el -(beancount-mode auto-mode-alist "\\.beancount\\'") ;from ~/Source/nongnu/packages/beancount/beancount-autoloads.el +(beancount auto-mode-alist "\\.beancount\\'" beancount-mode) ;from ~/Source/nongnu/packages/beancount/beancount-autoloads.el (bison-mode auto-mode-alist "\\.y\\'") ;from ~/Source/nongnu/packages/bison-mode/bison-mode-autoloads.el -(flex-mode auto-mode-alist "\\.l\\'") ;from ~/Source/nongnu/packages/bison-mode/bison-mode-autoloads.el -(jison-mode auto-mode-alist "\\.jison\\'") ;from ~/Source/nongnu/packages/bison-mode/bison-mode-autoloads.el +(bison-mode auto-mode-alist "\\.l\\'" flex-mode) ;from ~/Source/nongnu/packages/bison-mode/bison-mode-autoloads.el +(bison-mode auto-mode-alist "\\.jison\\'" jison-mode) ;from ~/Source/nongnu/packages/bison-mode/bison-mode-autoloads.el (bqn-mode auto-mode-alist "\\.bqn\\'") ;from ~/Source/nongnu/packages/bqn-mode/bqn-mode-autoloads.el (bqn-mode interpreter-mode-alist "bqn") ;from ~/Source/nongnu/packages/bqn-mode/bqn-mode-autoloads.el (clojure-mode auto-mode-alist "\\.\\(clj\\|cljd\\|dtm\\|edn\\|lpy\\)\\'") ;from ~/Source/nongnu/packages/clojure-mode/clojure-mode-autoloads.el -(clojurec-mode auto-mode-alist "\\.cljc\\'") ;from ~/Source/nongnu/packages/clojure-mode/clojure-mode-autoloads.el -(clojurescript-mode auto-mode-alist "\\.cljs\\'") ;from ~/Source/nongnu/packages/clojure-mode/clojure-mode-autoloads.el +(clojure-mode auto-mode-alist "\\.cljc\\'" clojurec-mode) ;from ~/Source/nongnu/packages/clojure-mode/clojure-mode-autoloads.el +(clojure-mode auto-mode-alist "\\.cljs\\'" clojurescript-mode) ;from ~/Source/nongnu/packages/clojure-mode/clojure-mode-autoloads.el (clojure-mode auto-mode-alist "\\(?:build\\|profile\\)\\.boot\\'") ;from ~/Source/nongnu/packages/clojure-mode/clojure-mode-autoloads.el (clojure-mode interpreter-mode-alist "bb") ;from ~/Source/nongnu/packages/clojure-mode/clojure-mode-autoloads.el -(clojurescript-mode interpreter-mode-alist "nbb") ;from ~/Source/nongnu/packages/clojure-mode/clojure-mode-autoloads.el +(clojure-mode interpreter-mode-alist "nbb" clojurescript-mode) ;from ~/Source/nongnu/packages/clojure-mode/clojure-mode-autoloads.el (coffee-mode auto-mode-alist "\\.coffee\\'") ;from ~/Source/nongnu/packages/coffee-mode/coffee-mode-autoloads.el (coffee-mode auto-mode-alist "\\.iced\\'") ;from ~/Source/nongnu/packages/coffee-mode/coffee-mode-autoloads.el (coffee-mode auto-mode-alist "Cakefile\\'") ;from ~/Source/nongnu/packages/coffee-mode/coffee-mode-autoloads.el @@ -105,40 +105,40 @@ (d-mode auto-mode-alist "\\.d[i]?\\'") ;from ~/Source/nongnu/packages/d-mode/d-mode-autoloads.el (dart-mode auto-mode-alist "\\.dart\\'") ;from ~/Source/nongnu/packages/dart-mode/dart-mode-autoloads.el (dockerfile-mode auto-mode-alist "\\.dockerfile\\'") ;from ~/Source/nongnu/packages/dockerfile-mode/dockerfile-mode-autoloads.el -(php-mode auto-mode-alist "[^/]\\.\\(module\\|test\\|install\\|profile\\|tpl\\.php\\|theme\\|inc\\)\\'") ;from ~/Source/nongnu/packages/drupal-mode/drupal-mode-autoloads.el -(conf-windows-mode auto-mode-alist "[^/]\\.info\\'") ;from ~/Source/nongnu/packages/drupal-mode/drupal-mode-autoloads.el -(drush-make-mode auto-mode-alist "[^/]\\.make\\'") ;from ~/Source/nongnu/packages/drupal-mode/drupal-mode-autoloads.el -(editorconfig-conf-mode auto-mode-alist "\\.editorconfig\\'") ;from ~/Source/nongnu/packages/editorconfig/editorconfig-autoloads.el +(drupal-mode auto-mode-alist "[^/]\\.\\(module\\|test\\|install\\|profile\\|tpl\\.php\\|theme\\|inc\\)\\'" php-mode) ;from ~/Source/nongnu/packages/drupal-mode/drupal-mode-autoloads.el +(drupal-mode auto-mode-alist "[^/]\\.info\\'" conf-windows-mode) ;from ~/Source/nongnu/packages/drupal-mode/drupal-mode-autoloads.el +(drupal-mode auto-mode-alist "[^/]\\.make\\'" drush-make-mode) ;from ~/Source/nongnu/packages/drupal-mode/drupal-mode-autoloads.el +(editorconfig auto-mode-alist "\\.editorconfig\\'" editorconfig-conf-mode) ;from ~/Source/nongnu/packages/editorconfig/editorconfig-autoloads.el (elixir-mode auto-mode-alist "\\.elixir\\'") ;from ~/Source/nongnu/packages/elixir-mode/elixir-mode-autoloads.el (elixir-mode auto-mode-alist "\\.ex\\'") ;from ~/Source/nongnu/packages/elixir-mode/elixir-mode-autoloads.el (elixir-mode auto-mode-alist "\\.exs\\'") ;from ~/Source/nongnu/packages/elixir-mode/elixir-mode-autoloads.el (elixir-mode auto-mode-alist "mix\\.lock") ;from ~/Source/nongnu/packages/elixir-mode/elixir-mode-autoloads.el -(ett-mode auto-mode-alist "\\.ett\\'") ;from ~/Source/nongnu/packages/ett/ett-autoloads.el +(ett auto-mode-alist "\\.ett\\'" ett-mode) ;from ~/Source/nongnu/packages/ett/ett-autoloads.el (forth-mode auto-mode-alist "\\.\\(f\\|fs\\|fth\\|4th\\)\\'") ;from ~/Source/nongnu/packages/forth-mode/forth-mode-autoloads.el -(scheme-mode auto-mode-alist "\\.rkt\\'") ;from ~/Source/nongnu/packages/geiser-racket/geiser-racket-autoloads.el +(geiser-racket auto-mode-alist "\\.rkt\\'" scheme-mode) ;from ~/Source/nongnu/packages/geiser-racket/geiser-racket-autoloads.el (gnu-apl-mode auto-mode-alist "\\.apl\\'") ;from ~/Source/nongnu/packages/gnu-apl-mode/gnu-apl-mode-autoloads.el (gnu-apl-mode interpreter-mode-alist "apl") ;from ~/Source/nongnu/packages/gnu-apl-mode/gnu-apl-mode-autoloads.el -(go-dot-mod-mode auto-mode-alist "go\\.mod\\'") ;from ~/Source/nongnu/packages/go-mode/go-mode-autoloads.el -(go-dot-work-mode auto-mode-alist "go\\.work\\'") ;from ~/Source/nongnu/packages/go-mode/go-mode-autoloads.el +(go-mode auto-mode-alist "go\\.mod\\'" go-dot-mod-mode) ;from ~/Source/nongnu/packages/go-mode/go-mode-autoloads.el +(go-mode auto-mode-alist "go\\.work\\'" go-dot-work-mode) ;from ~/Source/nongnu/packages/go-mode/go-mode-autoloads.el (graphql-mode auto-mode-alist "\\.graphql\\'") ;from ~/Source/nongnu/packages/graphql-mode/graphql-mode-autoloads.el (graphql-mode auto-mode-alist "\\.gql\\'") ;from ~/Source/nongnu/packages/graphql-mode/graphql-mode-autoloads.el (haml-mode auto-mode-alist "\\.haml\\'") ;from ~/Source/nongnu/packages/haml-mode/haml-mode-autoloads.el -(ghc-core-mode auto-mode-alist "\\.hcr\\'") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el -(ghc-core-mode auto-mode-alist "\\.dump-simpl\\'") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el -(ghci-script-mode auto-mode-alist "\\.ghci\\'") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el -(haskell-c2hs-mode auto-mode-alist "\\.chs\\'") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el -(haskell-cabal-mode auto-mode-alist "\\.cabal\\'\\|/cabal\\.project\\|/\\.cabal/config\\'") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el +(haskell-mode auto-mode-alist "\\.hcr\\'" ghc-core-mode) ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el +(haskell-mode auto-mode-alist "\\.dump-simpl\\'" ghc-core-mode) ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el +(haskell-mode auto-mode-alist "\\.ghci\\'" ghci-script-mode) ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el +(haskell-mode auto-mode-alist "\\.chs\\'" haskell-c2hs-mode) ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el +(haskell-mode auto-mode-alist "\\.cabal\\'\\|/cabal\\.project\\|/\\.cabal/config\\'" haskell-cabal-mode) ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el (haskell-mode auto-mode-alist "\\.[gh]s\\'") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el (haskell-mode auto-mode-alist "\\.hsig\\'") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el -(haskell-literate-mode auto-mode-alist "\\.l[gh]s\\'") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el +(haskell-mode auto-mode-alist "\\.l[gh]s\\'" haskell-literate-mode) ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el (haskell-mode auto-mode-alist "\\.hsc\\'") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el (haskell-mode interpreter-mode-alist "runghc") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el (haskell-mode interpreter-mode-alist "runhaskell") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el (j-mode auto-mode-alist "\\.ij[rsp]$") ;from ~/Source/nongnu/packages/j-mode/j-mode-autoloads.el -(j-lab-mode auto-mode-alist "\\.ijt$") ;from ~/Source/nongnu/packages/j-mode/j-mode-autoloads.el +(j-mode auto-mode-alist "\\.ijt$" j-lab-mode) ;from ~/Source/nongnu/packages/j-mode/j-mode-autoloads.el (jade-mode auto-mode-alist "\\.jade\\'") ;from ~/Source/nongnu/packages/jade-mode/jade-mode-autoloads.el (jade-mode auto-mode-alist "\\.pug\\'") ;from ~/Source/nongnu/packages/jade-mode/jade-mode-autoloads.el -(stylus-mode auto-mode-alist "\\.styl\\'") ;from ~/Source/nongnu/packages/jade-mode/jade-mode-autoloads.el +(jade-mode auto-mode-alist "\\.styl\\'" stylus-mode) ;from ~/Source/nongnu/packages/jade-mode/jade-mode-autoloads.el (jinja2-mode auto-mode-alist "\\.jinja2\\'") ;from ~/Source/nongnu/packages/jinja2-mode/jinja2-mode-autoloads.el (jinja2-mode auto-mode-alist "\\.j2\\'") ;from ~/Source/nongnu/packages/jinja2-mode/jinja2-mode-autoloads.el (julia-mode auto-mode-alist "\\.jl\\'") ;from ~/Source/nongnu/packages/julia-mode/julia-mode-autoloads.el @@ -147,13 +147,13 @@ (markdown-mode auto-mode-alist "\\.\\(?:md\\|markdown\\|mkd\\|mdown\\|mkdn\\|mdwn\\)\\'") ;from ~/Source/nongnu/packages/markdown-mode/markdown-mode-autoloads.el (nginx-mode auto-mode-alist "nginx\\.conf\\'") ;from ~/Source/nongnu/packages/nginx-mode/nginx-mode-autoloads.el (nginx-mode auto-mode-alist "/nginx/.+\\.conf\\'") ;from ~/Source/nongnu/packages/nginx-mode/nginx-mode-autoloads.el -(nix-drv-mode auto-mode-alist "^/nix/store/.+\\.drv\\'") ;from ~/Source/nongnu/packages/nix-mode/nix-mode-autoloads.el -(js-mode auto-mode-alist "\\flake.lock\\'") ;from ~/Source/nongnu/packages/nix-mode/nix-mode-autoloads.el +(nix-mode auto-mode-alist "^/nix/store/.+\\.drv\\'" nix-drv-mode) ;from ~/Source/nongnu/packages/nix-mode/nix-mode-autoloads.el +(nix-mode auto-mode-alist "\\flake.lock\\'" js-mode) ;from ~/Source/nongnu/packages/nix-mode/nix-mode-autoloads.el (nix-mode auto-mode-alist "\\.nix\\'") ;from ~/Source/nongnu/packages/nix-mode/nix-mode-autoloads.el (php-mode auto-mode-alist "/\\.php_cs\\(?:\\.dist\\)?\\'") ;from ~/Source/nongnu/packages/php-mode/lisp/php-mode-autoloads.el (php-mode auto-mode-alist "\\.\\(?:php\\.inc\\|stub\\)\\'") ;from ~/Source/nongnu/packages/php-mode/lisp/php-mode-autoloads.el -(php-mode-maybe auto-mode-alist "\\.\\(?:php[s345]?\\|phtml\\)\\'") ;from ~/Source/nongnu/packages/php-mode/lisp/php-mode-autoloads.el -(coq-mode auto-mode-alist "\\.v\\'") ;from ~/Source/nongnu/packages/proof-general/generic/proof-autoloads.el +(php-mode auto-mode-alist "\\.\\(?:php[s345]?\\|phtml\\)\\'" php-mode-maybe) ;from ~/Source/nongnu/packages/php-mode/lisp/php-mode-autoloads.el +(proof auto-mode-alist "\\.v\\'" coq-mode) ;from ~/Source/nongnu/packages/proof-general/generic/proof-autoloads.el (racket-mode auto-mode-alist "\\.rkt\\'") ;from ~/Source/nongnu/packages/racket-mode/racket-mode-autoloads.el (racket-mode auto-mode-alist "\\.rktd\\'") ;from ~/Source/nongnu/packages/racket-mode/racket-mode-autoloads.el (racket-mode auto-mode-alist "\\.rktl\\'") ;from ~/Source/nongnu/packages/racket-mode/racket-mode-autoloads.el @@ -167,20 +167,20 @@ (sass-mode auto-mode-alist "\\.sass\\'") ;from ~/Source/nongnu/packages/sass-mode/sass-mode-autoloads.el (scad-mode auto-mode-alist "\\.scad\\'") ;from ~/Source/nongnu/packages/scad-mode/scad-mode-autoloads.el (scala-mode auto-mode-alist "\\.\\(scala\\|sbt\\|worksheet\\.sc\\)\\'") ;from ~/Source/nongnu/packages/scala-mode/scala-mode-autoloads.el -(jade-mode auto-mode-alist "\\.jade\\'") ;from ~/Source/nongnu/packages/stylus-mode/stylus-mode-autoloads.el -(jade-mode auto-mode-alist "\\.pug\\'") ;from ~/Source/nongnu/packages/stylus-mode/stylus-mode-autoloads.el +(stylus-mode auto-mode-alist "\\.jade\\'" jade-mode) ;from ~/Source/nongnu/packages/stylus-mode/stylus-mode-autoloads.el +(stylus-mode auto-mode-alist "\\.pug\\'" jade-mode) ;from ~/Source/nongnu/packages/stylus-mode/stylus-mode-autoloads.el (stylus-mode auto-mode-alist "\\.styl\\'") ;from ~/Source/nongnu/packages/stylus-mode/stylus-mode-autoloads.el -(subed-ass-mode auto-mode-alist "\\.ass\\'") ;from ~/Source/nongnu/packages/subed/subed/subed-autoloads.el -(subed-srt-mode auto-mode-alist "\\.srt\\'") ;from ~/Source/nongnu/packages/subed/subed/subed-autoloads.el -(subed-vtt-mode auto-mode-alist "\\.vtt\\'") ;from ~/Source/nongnu/packages/subed/subed/subed-autoloads.el +(subed auto-mode-alist "\\.ass\\'" subed-ass-mode) ;from ~/Source/nongnu/packages/subed/subed/subed-autoloads.el +(subed auto-mode-alist "\\.srt\\'" subed-srt-mode) ;from ~/Source/nongnu/packages/subed/subed/subed-autoloads.el +(subed auto-mode-alist "\\.vtt\\'" subed-vtt-mode) ;from ~/Source/nongnu/packages/subed/subed/subed-autoloads.el (swift-mode auto-mode-alist "\\.swift\\(interface\\)?\\'") ;from ~/Source/nongnu/packages/swift-mode/swift-mode-autoloads.el -(systemd-mode auto-mode-alist "\\.nspawn\\'") ;from ~/Source/nongnu/packages/systemd/systemd-autoloads.el -(tuareg-mode auto-mode-alist "\\.ml[ip]?\\'") ;from ~/Source/nongnu/packages/tuareg/tuareg-autoloads.el -(tuareg-mode auto-mode-alist "\\.eliomi?\\'") ;from ~/Source/nongnu/packages/tuareg/tuareg-autoloads.el -(tuareg-mode interpreter-mode-alist "ocamlrun") ;from ~/Source/nongnu/packages/tuareg/tuareg-autoloads.el -(tuareg-mode interpreter-mode-alist "ocaml") ;from ~/Source/nongnu/packages/tuareg/tuareg-autoloads.el -(tuareg-menhir-mode auto-mode-alist "\\.mly\\'") ;from ~/Source/nongnu/packages/tuareg/tuareg-autoloads.el -(tuareg-opam-mode auto-mode-alist "[./]opam_?\\'") ;from ~/Source/nongnu/packages/tuareg/tuareg-autoloads.el +(systemd auto-mode-alist "\\.nspawn\\'" systemd-mode) ;from ~/Source/nongnu/packages/systemd/systemd-autoloads.el +(tuareg auto-mode-alist "\\.ml[ip]?\\'" tuareg-mode) ;from ~/Source/nongnu/packages/tuareg/tuareg-autoloads.el +(tuareg auto-mode-alist "\\.eliomi?\\'" tuareg-mode) ;from ~/Source/nongnu/packages/tuareg/tuareg-autoloads.el +(tuareg interpreter-mode-alist "ocamlrun" tuareg-mode) ;from ~/Source/nongnu/packages/tuareg/tuareg-autoloads.el +(tuareg interpreter-mode-alist "ocaml" tuareg-mode) ;from ~/Source/nongnu/packages/tuareg/tuareg-autoloads.el +(tuareg auto-mode-alist "\\.mly\\'" tuareg-menhir-mode) ;from ~/Source/nongnu/packages/tuareg/tuareg-autoloads.el +(tuareg auto-mode-alist "[./]opam_?\\'" tuareg-opam-mode) ;from ~/Source/nongnu/packages/tuareg/tuareg-autoloads.el (typescript-mode auto-mode-alist "\\.ts\\'") ;from ~/Source/nongnu/packages/typescript-mode/typescript-mode-autoloads.el (yaml-mode auto-mode-alist "\\.\\(e?ya?\\|ra\\)ml\\'") ;from ~/Source/nongnu/packages/yaml-mode/yaml-mode-autoloads.el (yaml-mode magic-mode-alist "^%YAML\\s-+[0-9]+\\.[0-9]+\\(\\s-+#\\|\\s-*$\\)") ;from ~/Source/nongnu/packages/yaml-mode/yaml-mode-autoloads.el diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index b5c48928fc5..2ded76c0832 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -4547,12 +4547,14 @@ the `Version:' header." (read (current-buffer)))) "List of hints for packages to suggest installing. Each hint has the form (PACKAGE TYPE DATA), where PACKAGE is a symbol -denoting the package the hint applies to, TYPE is one of +denoting the package and major-mode the hint applies to, TYPE is one of `auto-mode-alist', `magic-mode-alist' or `interpreter-mode-alist' indicating the type of check to be made and DATA is the value to check against TYPE in the intuitive way (e.g. for `auto-mode-alist' DATA is a regular expression matching a file name that PACKAGE should be suggested -for).") +for). If the package name and the major mode name differ, then an +optional forth element MAJOR-MODE can indicate what command to invoke to +enable the package.") (defcustom package-autosuggest-style 'mode-line "How to draw attention to `package-autosuggest-mode' suggestions. @@ -4591,15 +4593,18 @@ SUG should be an element of `package-autosuggest-database'." (pred package-installed-p)) . ,_) nil) - (`(,_ auto-mode-alist ,ext) + ((or `(,_ auto-mode-alist ,ext ,_) + `(,_ auto-mode-alist ,ext)) (and (string-match-p ext (buffer-name)) t)) - (`(,_ magic-mode-alist ,mag) + ((or `(,_ magic-mode-alist ,mag ,_) + `(,_ magic-mode-alist ,mag)) (save-restriction (widen) (save-excursion (goto-char (point-min)) (looking-at-p mag)))) - (`(,_ interpreter-mode-alist ,magic) + ((or `(,_ interpreter-mode-alist ,magic ,_) + `(,_ interpreter-mode-alist ,magic)) (save-restriction (widen) (save-excursion From 40f15ff2dd124e2f7263f0c2c14badb20222a1c3 Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Thu, 7 Nov 2024 16:10:13 +0100 Subject: [PATCH 16/18] Drop comments indicating origin of package sugggestions * admin/scrape-elpa.el (scrape-elpa): Do it. * etc/package-autosuggest.eld: Regenerate file. --- admin/scrape-elpa.el | 3 +- etc/package-autosuggest.eld | 362 ++++++++++++++++++------------------ 2 files changed, 182 insertions(+), 183 deletions(-) diff --git a/admin/scrape-elpa.el b/admin/scrape-elpa.el index ef2b189883e..bf3846c0fcb 100644 --- a/admin/scrape-elpa.el +++ b/admin/scrape-elpa.el @@ -73,8 +73,7 @@ Please review the results before updating the autosuggest database!" ,(and (pred symbolp) mode))) (terpri) (prin1 (append (list pkg variable regexp) - (and (not (eq pkg mode)) (list mode)))) - (princ (concat " ;from " file)))))) + (and (not (eq pkg mode)) (list mode)))))))) (end-of-file nil)))))) (insert "\n)\n"))) diff --git a/etc/package-autosuggest.eld b/etc/package-autosuggest.eld index 38cf121a49e..cf8b8288e27 100644 --- a/etc/package-autosuggest.eld +++ b/etc/package-autosuggest.eld @@ -4,185 +4,185 @@ ;; file manually! ( -(ada-mode auto-mode-alist "\\.ad[abs]\\'") ;from ~/Source/elpa/packages/ada-mode/ada-mode-autoloads.el -(arbitools auto-mode-alist "\\.trf?\\'" arbitools-mode) ;from ~/Source/elpa/packages/arbitools/arbitools-autoloads.el -(auctex auto-mode-alist "\\.hva\\'" LaTeX-mode) ;from ~/Source/elpa/packages/auctex/auctex-autoloads.el -(bnf-mode auto-mode-alist "\\.bnf\\'") ;from ~/Source/elpa/packages/bnf-mode/bnf-mode-autoloads.el -(chess auto-mode-alist "\\.pgn\\'" chess-pgn-mode) ;from ~/Source/elpa/packages/chess/chess-autoloads.el -(cobol-mode auto-mode-alist "\\.c\\(ob\\|bl\\|py\\)\\'") ;from ~/Source/elpa/packages/cobol-mode/cobol-mode-autoloads.el -(code-cells auto-mode-alist "\\.ipynb\\'" code-cells-convert-ipynb) ;from ~/Source/elpa/packages/code-cells/code-cells-autoloads.el -(csharp-mode auto-mode-alist "\\.cs\\'") ;from ~/Source/elpa/packages/csharp-mode/csharp-mode-autoloads.el -(csv-mode auto-mode-alist "\\.[Cc][Ss][Vv]\\'") ;from ~/Source/elpa/packages/csv-mode/csv-mode-autoloads.el -(csv-mode auto-mode-alist "\\.tsv\\'" tsv-mode) ;from ~/Source/elpa/packages/csv-mode/csv-mode-autoloads.el -(dismal auto-mode-alist "\\.dis\\'" dismal-mode) ;from ~/Source/elpa/packages/dismal/dismal-autoloads.el -(djvu auto-mode-alist "\\.djvu\\'" djvu-init-mode) ;from ~/Source/elpa/packages/djvu/djvu-autoloads.el -(dts-mode auto-mode-alist "\\.dtsi?\\'") ;from ~/Source/elpa/packages/dts-mode/dts-mode-autoloads.el -(ess auto-mode-alist "\\.[Bb][Uu][Gg]\\'" ess-bugs-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess auto-mode-alist "\\.[Bb][Oo][Gg]\\'" ess-bugs-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess auto-mode-alist "\\.[Bb][Mm][Dd]\\'" ess-bugs-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess auto-mode-alist "\\.[Jj][Aa][Gg]\\'" ess-jags-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess auto-mode-alist "/R/.*\\.q\\'" ess-r-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess auto-mode-alist "\\.[rR]\\'" ess-r-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess auto-mode-alist "\\.[rR]profile\\'" ess-r-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess auto-mode-alist "NAMESPACE\\'" ess-r-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess auto-mode-alist "CITATION\\'" ess-r-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess auto-mode-alist "\\.[Rr]out\\'" ess-r-transcript-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess interpreter-mode-alist "Rscript" ess-r-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess interpreter-mode-alist "r" ess-r-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess auto-mode-alist "/Makevars\\(\\.win\\)?\\'" makefile-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess auto-mode-alist "DESCRIPTION\\'" conf-colon-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess auto-mode-alist "\\.Rd\\'" Rd-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess auto-mode-alist "\\.[Ss]t\\'" S-transcript-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess auto-mode-alist "\\.Sout\\'" S-transcript-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(ess auto-mode-alist "\\.[Ss][Aa][Ss]\\'" SAS-mode) ;from ~/Source/elpa/packages/ess/lisp/ess-autoloads.el -(gle-mode auto-mode-alist "\\.gle\\'") ;from ~/Source/elpa/packages/gle-mode/gle-mode-autoloads.el -(gpr-mode auto-mode-alist "\\.gpr\\'") ;from ~/Source/elpa/packages/gpr-mode/gpr-mode-autoloads.el -(html5-schema auto-mode-alist "\\.html?\\'" nxml-mode) ;from ~/Source/elpa/packages/html5-schema/html5-schema-autoloads.el -(jgraph-mode auto-mode-alist "\\.jgr\\'") ;from ~/Source/elpa/packages/jgraph-mode/jgraph-mode-autoloads.el -(json-mode auto-mode-alist "\\.json\\'") ;from ~/Source/elpa/packages/json-mode/json-mode-autoloads.el -(lmc auto-mode-alist "\\.elmc\\'" lmc-asm-mode) ;from ~/Source/elpa/packages/lmc/lmc-autoloads.el -(matlab-mode auto-mode-alist "\\.tlc\\'" tlc-mode) ;from ~/Source/elpa/packages/matlab-mode/matlab-mode-autoloads.el -(matlab auto-mode-alist "\\.tlc\\'" tlc-mode) ;from ~/Source/elpa/packages/matlab/matlab-autoloads.el -(muse auto-mode-alist "\\.muse\\'" muse-mode-choose-mode) ;from ~/Source/elpa/packages/muse/lisp/muse-autoloads.el -(auctex auto-mode-alist "\\.drv\\'" latex-mode) ;from ~/Source/elpa/packages/names/tests/auctex-11.87.7/auctex-autoloads.el -(auctex auto-mode-alist "\\.dtx\\'" doctex-mode) ;from ~/Source/elpa/packages/names/tests/auctex-11.87.7/auctex-autoloads.el -(nftables-mode auto-mode-alist "\\.nft\\(?:ables\\)?\\'") ;from ~/Source/elpa/packages/nftables-mode/nftables-mode-autoloads.el -(nftables-mode auto-mode-alist "/etc/nftables.conf") ;from ~/Source/elpa/packages/nftables-mode/nftables-mode-autoloads.el -(nftables-mode interpreter-mode-alist "nft\\(?:ables\\)?") ;from ~/Source/elpa/packages/nftables-mode/nftables-mode-autoloads.el -(omn-mode auto-mode-alist "\\.pomn\\'") ;from ~/Source/elpa/packages/omn-mode/omn-mode-autoloads.el -(omn-mode auto-mode-alist "\\.omn\\'") ;from ~/Source/elpa/packages/omn-mode/omn-mode-autoloads.el -(poke-mode auto-mode-alist "\\.pk\\'") ;from ~/Source/elpa/packages/poke-mode/poke-mode-autoloads.el -(pspp-mode auto-mode-alist "\\.sps\\'") ;from ~/Source/elpa/packages/pspp-mode/pspp-mode-autoloads.el -(python auto-mode-alist "/\\(?:Pipfile\\|\\.?flake8\\)\\'" conf-mode) ;from ~/Source/elpa/packages/python/python-autoloads.el -(rec-mode auto-mode-alist "\\.rec\\'") ;from ~/Source/elpa/packages/rec-mode/rec-mode-autoloads.el -(rnc-mode auto-mode-alist "\\.rnc\\'") ;from ~/Source/elpa/packages/rnc-mode/rnc-mode-autoloads.el -(sed-mode auto-mode-alist "\\.sed\\'") ;from ~/Source/elpa/packages/sed-mode/sed-mode-autoloads.el -(sed-mode interpreter-mode-alist "sed") ;from ~/Source/elpa/packages/sed-mode/sed-mode-autoloads.el -(shen-mode auto-mode-alist "\\.shen\\'") ;from ~/Source/elpa/packages/shen-mode/shen-mode-autoloads.el -(sisu-mode auto-mode-alist "\\.ss[imt]\\'") ;from ~/Source/elpa/packages/sisu-mode/sisu-mode-autoloads.el -(smalltalk-mode auto-mode-alist "\\.st\\'") ;from ~/Source/elpa/packages/smalltalk-mode/smalltalk-mode-autoloads.el -(sml-mode auto-mode-alist "\\.s\\(ml\\|ig\\)\\'") ;from ~/Source/elpa/packages/sml-mode/sml-mode-autoloads.el -(sml-mode auto-mode-alist "\\.cm\\'" sml-cm-mode) ;from ~/Source/elpa/packages/sml-mode/sml-mode-autoloads.el -(sml-mode auto-mode-alist "\\.grm\\'" sml-yacc-mode) ;from ~/Source/elpa/packages/sml-mode/sml-mode-autoloads.el -(sql-cassandra auto-mode-alist "\\.cql\\'" sql-mode) ;from ~/Source/elpa/packages/sql-cassandra/sql-cassandra-autoloads.el -(sxhkdrc-mode auto-mode-alist "sxhkdrc\\'") ;from ~/Source/elpa/packages/sxhkdrc-mode/sxhkdrc-mode-autoloads.el -(systemd auto-mode-alist "\\.automount\\'" systemd-automount-mode) ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el -(systemd auto-mode-alist "\\.mount\\'" systemd-mount-mode) ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el -(systemd auto-mode-alist "\\.path\\'" systemd-path-mode) ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el -(systemd auto-mode-alist "\\.service\\'" systemd-service-mode) ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el -(systemd auto-mode-alist "\\.socket\\'" systemd-socket-mode) ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el -(systemd auto-mode-alist "\\.swap\\'" systemd-swap-mode) ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el -(systemd auto-mode-alist "\\.timer\\'" systemd-timer-mode) ;from ~/Source/elpa/packages/systemd/systemd-autoloads.el -(vcard auto-mode-alist "\\.[Vv][Cc][Ff]\\'" vcard-mode) ;from ~/Source/elpa/packages/vcard/vcard-autoloads.el -(wisi auto-mode-alist "\\.parse_table.*\\'" wisitoken-parse_table-mode) ;from ~/Source/elpa/packages/wisi/wisi-autoloads.el -(wisitoken-grammar-mode auto-mode-alist "\\.wy\\'" simple-indent-mode) ;from ~/Source/elpa/packages/wisitoken-grammar-mode/wisitoken-grammar-mode-autoloads.el -(wisitoken-grammar-mode auto-mode-alist "\\.wy\\'") ;from ~/Source/elpa/packages/wisitoken-grammar-mode/wisitoken-grammar-mode-autoloads.el -(adoc-mode auto-mode-alist "\\.a\\(?:scii\\)?doc\\'") ;from ~/Source/nongnu/packages/adoc-mode/adoc-mode-autoloads.el -(apache-mode auto-mode-alist "/\\.htaccess\\'") ;from ~/Source/nongnu/packages/apache-mode/apache-mode-autoloads.el -(apache-mode auto-mode-alist "/\\(?:access\\|httpd\\|srm\\)\\.conf\\'") ;from ~/Source/nongnu/packages/apache-mode/apache-mode-autoloads.el -(apache-mode auto-mode-alist "/apache2/.+\\.conf\\'") ;from ~/Source/nongnu/packages/apache-mode/apache-mode-autoloads.el -(apache-mode auto-mode-alist "/httpd/conf/.+\\.conf\\'") ;from ~/Source/nongnu/packages/apache-mode/apache-mode-autoloads.el -(apache-mode auto-mode-alist "/apache2/sites-\\(?:available\\|enabled\\)/") ;from ~/Source/nongnu/packages/apache-mode/apache-mode-autoloads.el -(arduino-mode auto-mode-alist "\\.pde\\'") ;from ~/Source/nongnu/packages/arduino-mode/arduino-mode-autoloads.el -(arduino-mode auto-mode-alist "\\.ino\\'") ;from ~/Source/nongnu/packages/arduino-mode/arduino-mode-autoloads.el -(beancount auto-mode-alist "\\.beancount\\'" beancount-mode) ;from ~/Source/nongnu/packages/beancount/beancount-autoloads.el -(bison-mode auto-mode-alist "\\.y\\'") ;from ~/Source/nongnu/packages/bison-mode/bison-mode-autoloads.el -(bison-mode auto-mode-alist "\\.l\\'" flex-mode) ;from ~/Source/nongnu/packages/bison-mode/bison-mode-autoloads.el -(bison-mode auto-mode-alist "\\.jison\\'" jison-mode) ;from ~/Source/nongnu/packages/bison-mode/bison-mode-autoloads.el -(bqn-mode auto-mode-alist "\\.bqn\\'") ;from ~/Source/nongnu/packages/bqn-mode/bqn-mode-autoloads.el -(bqn-mode interpreter-mode-alist "bqn") ;from ~/Source/nongnu/packages/bqn-mode/bqn-mode-autoloads.el -(clojure-mode auto-mode-alist "\\.\\(clj\\|cljd\\|dtm\\|edn\\|lpy\\)\\'") ;from ~/Source/nongnu/packages/clojure-mode/clojure-mode-autoloads.el -(clojure-mode auto-mode-alist "\\.cljc\\'" clojurec-mode) ;from ~/Source/nongnu/packages/clojure-mode/clojure-mode-autoloads.el -(clojure-mode auto-mode-alist "\\.cljs\\'" clojurescript-mode) ;from ~/Source/nongnu/packages/clojure-mode/clojure-mode-autoloads.el -(clojure-mode auto-mode-alist "\\(?:build\\|profile\\)\\.boot\\'") ;from ~/Source/nongnu/packages/clojure-mode/clojure-mode-autoloads.el -(clojure-mode interpreter-mode-alist "bb") ;from ~/Source/nongnu/packages/clojure-mode/clojure-mode-autoloads.el -(clojure-mode interpreter-mode-alist "nbb" clojurescript-mode) ;from ~/Source/nongnu/packages/clojure-mode/clojure-mode-autoloads.el -(coffee-mode auto-mode-alist "\\.coffee\\'") ;from ~/Source/nongnu/packages/coffee-mode/coffee-mode-autoloads.el -(coffee-mode auto-mode-alist "\\.iced\\'") ;from ~/Source/nongnu/packages/coffee-mode/coffee-mode-autoloads.el -(coffee-mode auto-mode-alist "Cakefile\\'") ;from ~/Source/nongnu/packages/coffee-mode/coffee-mode-autoloads.el -(coffee-mode auto-mode-alist "\\.cson\\'") ;from ~/Source/nongnu/packages/coffee-mode/coffee-mode-autoloads.el -(coffee-mode interpreter-mode-alist "coffee") ;from ~/Source/nongnu/packages/coffee-mode/coffee-mode-autoloads.el -(d-mode auto-mode-alist "\\.d[i]?\\'") ;from ~/Source/nongnu/packages/d-mode/d-mode-autoloads.el -(dart-mode auto-mode-alist "\\.dart\\'") ;from ~/Source/nongnu/packages/dart-mode/dart-mode-autoloads.el -(dockerfile-mode auto-mode-alist "\\.dockerfile\\'") ;from ~/Source/nongnu/packages/dockerfile-mode/dockerfile-mode-autoloads.el -(drupal-mode auto-mode-alist "[^/]\\.\\(module\\|test\\|install\\|profile\\|tpl\\.php\\|theme\\|inc\\)\\'" php-mode) ;from ~/Source/nongnu/packages/drupal-mode/drupal-mode-autoloads.el -(drupal-mode auto-mode-alist "[^/]\\.info\\'" conf-windows-mode) ;from ~/Source/nongnu/packages/drupal-mode/drupal-mode-autoloads.el -(drupal-mode auto-mode-alist "[^/]\\.make\\'" drush-make-mode) ;from ~/Source/nongnu/packages/drupal-mode/drupal-mode-autoloads.el -(editorconfig auto-mode-alist "\\.editorconfig\\'" editorconfig-conf-mode) ;from ~/Source/nongnu/packages/editorconfig/editorconfig-autoloads.el -(elixir-mode auto-mode-alist "\\.elixir\\'") ;from ~/Source/nongnu/packages/elixir-mode/elixir-mode-autoloads.el -(elixir-mode auto-mode-alist "\\.ex\\'") ;from ~/Source/nongnu/packages/elixir-mode/elixir-mode-autoloads.el -(elixir-mode auto-mode-alist "\\.exs\\'") ;from ~/Source/nongnu/packages/elixir-mode/elixir-mode-autoloads.el -(elixir-mode auto-mode-alist "mix\\.lock") ;from ~/Source/nongnu/packages/elixir-mode/elixir-mode-autoloads.el -(ett auto-mode-alist "\\.ett\\'" ett-mode) ;from ~/Source/nongnu/packages/ett/ett-autoloads.el -(forth-mode auto-mode-alist "\\.\\(f\\|fs\\|fth\\|4th\\)\\'") ;from ~/Source/nongnu/packages/forth-mode/forth-mode-autoloads.el -(geiser-racket auto-mode-alist "\\.rkt\\'" scheme-mode) ;from ~/Source/nongnu/packages/geiser-racket/geiser-racket-autoloads.el -(gnu-apl-mode auto-mode-alist "\\.apl\\'") ;from ~/Source/nongnu/packages/gnu-apl-mode/gnu-apl-mode-autoloads.el -(gnu-apl-mode interpreter-mode-alist "apl") ;from ~/Source/nongnu/packages/gnu-apl-mode/gnu-apl-mode-autoloads.el -(go-mode auto-mode-alist "go\\.mod\\'" go-dot-mod-mode) ;from ~/Source/nongnu/packages/go-mode/go-mode-autoloads.el -(go-mode auto-mode-alist "go\\.work\\'" go-dot-work-mode) ;from ~/Source/nongnu/packages/go-mode/go-mode-autoloads.el -(graphql-mode auto-mode-alist "\\.graphql\\'") ;from ~/Source/nongnu/packages/graphql-mode/graphql-mode-autoloads.el -(graphql-mode auto-mode-alist "\\.gql\\'") ;from ~/Source/nongnu/packages/graphql-mode/graphql-mode-autoloads.el -(haml-mode auto-mode-alist "\\.haml\\'") ;from ~/Source/nongnu/packages/haml-mode/haml-mode-autoloads.el -(haskell-mode auto-mode-alist "\\.hcr\\'" ghc-core-mode) ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el -(haskell-mode auto-mode-alist "\\.dump-simpl\\'" ghc-core-mode) ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el -(haskell-mode auto-mode-alist "\\.ghci\\'" ghci-script-mode) ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el -(haskell-mode auto-mode-alist "\\.chs\\'" haskell-c2hs-mode) ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el -(haskell-mode auto-mode-alist "\\.cabal\\'\\|/cabal\\.project\\|/\\.cabal/config\\'" haskell-cabal-mode) ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el -(haskell-mode auto-mode-alist "\\.[gh]s\\'") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el -(haskell-mode auto-mode-alist "\\.hsig\\'") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el -(haskell-mode auto-mode-alist "\\.l[gh]s\\'" haskell-literate-mode) ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el -(haskell-mode auto-mode-alist "\\.hsc\\'") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el -(haskell-mode interpreter-mode-alist "runghc") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el -(haskell-mode interpreter-mode-alist "runhaskell") ;from ~/Source/nongnu/packages/haskell-mode/haskell-mode-autoloads.el -(j-mode auto-mode-alist "\\.ij[rsp]$") ;from ~/Source/nongnu/packages/j-mode/j-mode-autoloads.el -(j-mode auto-mode-alist "\\.ijt$" j-lab-mode) ;from ~/Source/nongnu/packages/j-mode/j-mode-autoloads.el -(jade-mode auto-mode-alist "\\.jade\\'") ;from ~/Source/nongnu/packages/jade-mode/jade-mode-autoloads.el -(jade-mode auto-mode-alist "\\.pug\\'") ;from ~/Source/nongnu/packages/jade-mode/jade-mode-autoloads.el -(jade-mode auto-mode-alist "\\.styl\\'" stylus-mode) ;from ~/Source/nongnu/packages/jade-mode/jade-mode-autoloads.el -(jinja2-mode auto-mode-alist "\\.jinja2\\'") ;from ~/Source/nongnu/packages/jinja2-mode/jinja2-mode-autoloads.el -(jinja2-mode auto-mode-alist "\\.j2\\'") ;from ~/Source/nongnu/packages/jinja2-mode/jinja2-mode-autoloads.el -(julia-mode auto-mode-alist "\\.jl\\'") ;from ~/Source/nongnu/packages/julia-mode/julia-mode-autoloads.el -(lua-mode auto-mode-alist "\\.lua\\'") ;from ~/Source/nongnu/packages/lua-mode/lua-mode-autoloads.el -(lua-mode interpreter-mode-alist "lua") ;from ~/Source/nongnu/packages/lua-mode/lua-mode-autoloads.el -(markdown-mode auto-mode-alist "\\.\\(?:md\\|markdown\\|mkd\\|mdown\\|mkdn\\|mdwn\\)\\'") ;from ~/Source/nongnu/packages/markdown-mode/markdown-mode-autoloads.el -(nginx-mode auto-mode-alist "nginx\\.conf\\'") ;from ~/Source/nongnu/packages/nginx-mode/nginx-mode-autoloads.el -(nginx-mode auto-mode-alist "/nginx/.+\\.conf\\'") ;from ~/Source/nongnu/packages/nginx-mode/nginx-mode-autoloads.el -(nix-mode auto-mode-alist "^/nix/store/.+\\.drv\\'" nix-drv-mode) ;from ~/Source/nongnu/packages/nix-mode/nix-mode-autoloads.el -(nix-mode auto-mode-alist "\\flake.lock\\'" js-mode) ;from ~/Source/nongnu/packages/nix-mode/nix-mode-autoloads.el -(nix-mode auto-mode-alist "\\.nix\\'") ;from ~/Source/nongnu/packages/nix-mode/nix-mode-autoloads.el -(php-mode auto-mode-alist "/\\.php_cs\\(?:\\.dist\\)?\\'") ;from ~/Source/nongnu/packages/php-mode/lisp/php-mode-autoloads.el -(php-mode auto-mode-alist "\\.\\(?:php\\.inc\\|stub\\)\\'") ;from ~/Source/nongnu/packages/php-mode/lisp/php-mode-autoloads.el -(php-mode auto-mode-alist "\\.\\(?:php[s345]?\\|phtml\\)\\'" php-mode-maybe) ;from ~/Source/nongnu/packages/php-mode/lisp/php-mode-autoloads.el -(proof auto-mode-alist "\\.v\\'" coq-mode) ;from ~/Source/nongnu/packages/proof-general/generic/proof-autoloads.el -(racket-mode auto-mode-alist "\\.rkt\\'") ;from ~/Source/nongnu/packages/racket-mode/racket-mode-autoloads.el -(racket-mode auto-mode-alist "\\.rktd\\'") ;from ~/Source/nongnu/packages/racket-mode/racket-mode-autoloads.el -(racket-mode auto-mode-alist "\\.rktl\\'") ;from ~/Source/nongnu/packages/racket-mode/racket-mode-autoloads.el -(racket-mode interpreter-mode-alist "racket") ;from ~/Source/nongnu/packages/racket-mode/racket-mode-autoloads.el -(raku-mode interpreter-mode-alist "perl6\\|raku") ;from ~/Source/nongnu/packages/raku-mode/raku-mode-autoloads.el -(raku-mode auto-mode-alist "\\.p[lm]?6\\'") ;from ~/Source/nongnu/packages/raku-mode/raku-mode-autoloads.el -(raku-mode auto-mode-alist "\\.nqp\\'") ;from ~/Source/nongnu/packages/raku-mode/raku-mode-autoloads.el -(raku-mode auto-mode-alist "\\.raku\\(?:mod\\|test\\)?\\'") ;from ~/Source/nongnu/packages/raku-mode/raku-mode-autoloads.el -(rfc-mode auto-mode-alist "/rfc[0-9]+\\.txt\\'") ;from ~/Source/nongnu/packages/rfc-mode/rfc-mode-autoloads.el -(rust-mode auto-mode-alist "\\.rs\\'") ;from ~/Source/nongnu/packages/rust-mode/rust-mode-autoloads.el -(sass-mode auto-mode-alist "\\.sass\\'") ;from ~/Source/nongnu/packages/sass-mode/sass-mode-autoloads.el -(scad-mode auto-mode-alist "\\.scad\\'") ;from ~/Source/nongnu/packages/scad-mode/scad-mode-autoloads.el -(scala-mode auto-mode-alist "\\.\\(scala\\|sbt\\|worksheet\\.sc\\)\\'") ;from ~/Source/nongnu/packages/scala-mode/scala-mode-autoloads.el -(stylus-mode auto-mode-alist "\\.jade\\'" jade-mode) ;from ~/Source/nongnu/packages/stylus-mode/stylus-mode-autoloads.el -(stylus-mode auto-mode-alist "\\.pug\\'" jade-mode) ;from ~/Source/nongnu/packages/stylus-mode/stylus-mode-autoloads.el -(stylus-mode auto-mode-alist "\\.styl\\'") ;from ~/Source/nongnu/packages/stylus-mode/stylus-mode-autoloads.el -(subed auto-mode-alist "\\.ass\\'" subed-ass-mode) ;from ~/Source/nongnu/packages/subed/subed/subed-autoloads.el -(subed auto-mode-alist "\\.srt\\'" subed-srt-mode) ;from ~/Source/nongnu/packages/subed/subed/subed-autoloads.el -(subed auto-mode-alist "\\.vtt\\'" subed-vtt-mode) ;from ~/Source/nongnu/packages/subed/subed/subed-autoloads.el -(swift-mode auto-mode-alist "\\.swift\\(interface\\)?\\'") ;from ~/Source/nongnu/packages/swift-mode/swift-mode-autoloads.el -(systemd auto-mode-alist "\\.nspawn\\'" systemd-mode) ;from ~/Source/nongnu/packages/systemd/systemd-autoloads.el -(tuareg auto-mode-alist "\\.ml[ip]?\\'" tuareg-mode) ;from ~/Source/nongnu/packages/tuareg/tuareg-autoloads.el -(tuareg auto-mode-alist "\\.eliomi?\\'" tuareg-mode) ;from ~/Source/nongnu/packages/tuareg/tuareg-autoloads.el -(tuareg interpreter-mode-alist "ocamlrun" tuareg-mode) ;from ~/Source/nongnu/packages/tuareg/tuareg-autoloads.el -(tuareg interpreter-mode-alist "ocaml" tuareg-mode) ;from ~/Source/nongnu/packages/tuareg/tuareg-autoloads.el -(tuareg auto-mode-alist "\\.mly\\'" tuareg-menhir-mode) ;from ~/Source/nongnu/packages/tuareg/tuareg-autoloads.el -(tuareg auto-mode-alist "[./]opam_?\\'" tuareg-opam-mode) ;from ~/Source/nongnu/packages/tuareg/tuareg-autoloads.el -(typescript-mode auto-mode-alist "\\.ts\\'") ;from ~/Source/nongnu/packages/typescript-mode/typescript-mode-autoloads.el -(yaml-mode auto-mode-alist "\\.\\(e?ya?\\|ra\\)ml\\'") ;from ~/Source/nongnu/packages/yaml-mode/yaml-mode-autoloads.el -(yaml-mode magic-mode-alist "^%YAML\\s-+[0-9]+\\.[0-9]+\\(\\s-+#\\|\\s-*$\\)") ;from ~/Source/nongnu/packages/yaml-mode/yaml-mode-autoloads.el -(zig-mode auto-mode-alist "\\.\\(zig\\|zon\\)\\'") ;from ~/Source/nongnu/packages/zig-mode/zig-mode-autoloads.el +(ada-mode auto-mode-alist "\\.ad[abs]\\'") +(arbitools auto-mode-alist "\\.trf?\\'" arbitools-mode) +(auctex auto-mode-alist "\\.hva\\'" LaTeX-mode) +(bnf-mode auto-mode-alist "\\.bnf\\'") +(chess auto-mode-alist "\\.pgn\\'" chess-pgn-mode) +(cobol-mode auto-mode-alist "\\.c\\(ob\\|bl\\|py\\)\\'") +(code-cells auto-mode-alist "\\.ipynb\\'" code-cells-convert-ipynb) +(csharp-mode auto-mode-alist "\\.cs\\'") +(csv-mode auto-mode-alist "\\.[Cc][Ss][Vv]\\'") +(csv-mode auto-mode-alist "\\.tsv\\'" tsv-mode) +(dismal auto-mode-alist "\\.dis\\'" dismal-mode) +(djvu auto-mode-alist "\\.djvu\\'" djvu-init-mode) +(dts-mode auto-mode-alist "\\.dtsi?\\'") +(ess auto-mode-alist "\\.[Bb][Uu][Gg]\\'" ess-bugs-mode) +(ess auto-mode-alist "\\.[Bb][Oo][Gg]\\'" ess-bugs-mode) +(ess auto-mode-alist "\\.[Bb][Mm][Dd]\\'" ess-bugs-mode) +(ess auto-mode-alist "\\.[Jj][Aa][Gg]\\'" ess-jags-mode) +(ess auto-mode-alist "/R/.*\\.q\\'" ess-r-mode) +(ess auto-mode-alist "\\.[rR]\\'" ess-r-mode) +(ess auto-mode-alist "\\.[rR]profile\\'" ess-r-mode) +(ess auto-mode-alist "NAMESPACE\\'" ess-r-mode) +(ess auto-mode-alist "CITATION\\'" ess-r-mode) +(ess auto-mode-alist "\\.[Rr]out\\'" ess-r-transcript-mode) +(ess interpreter-mode-alist "Rscript" ess-r-mode) +(ess interpreter-mode-alist "r" ess-r-mode) +(ess auto-mode-alist "/Makevars\\(\\.win\\)?\\'" makefile-mode) +(ess auto-mode-alist "DESCRIPTION\\'" conf-colon-mode) +(ess auto-mode-alist "\\.Rd\\'" Rd-mode) +(ess auto-mode-alist "\\.[Ss]t\\'" S-transcript-mode) +(ess auto-mode-alist "\\.Sout\\'" S-transcript-mode) +(ess auto-mode-alist "\\.[Ss][Aa][Ss]\\'" SAS-mode) +(gle-mode auto-mode-alist "\\.gle\\'") +(gpr-mode auto-mode-alist "\\.gpr\\'") +(html5-schema auto-mode-alist "\\.html?\\'" nxml-mode) +(jgraph-mode auto-mode-alist "\\.jgr\\'") +(json-mode auto-mode-alist "\\.json\\'") +(lmc auto-mode-alist "\\.elmc\\'" lmc-asm-mode) +(matlab-mode auto-mode-alist "\\.tlc\\'" tlc-mode) +(matlab auto-mode-alist "\\.tlc\\'" tlc-mode) +(muse auto-mode-alist "\\.muse\\'" muse-mode-choose-mode) +(auctex auto-mode-alist "\\.drv\\'" latex-mode) +(auctex auto-mode-alist "\\.dtx\\'" doctex-mode) +(nftables-mode auto-mode-alist "\\.nft\\(?:ables\\)?\\'") +(nftables-mode auto-mode-alist "/etc/nftables.conf") +(nftables-mode interpreter-mode-alist "nft\\(?:ables\\)?") +(omn-mode auto-mode-alist "\\.pomn\\'") +(omn-mode auto-mode-alist "\\.omn\\'") +(poke-mode auto-mode-alist "\\.pk\\'") +(pspp-mode auto-mode-alist "\\.sps\\'") +(python auto-mode-alist "/\\(?:Pipfile\\|\\.?flake8\\)\\'" conf-mode) +(rec-mode auto-mode-alist "\\.rec\\'") +(rnc-mode auto-mode-alist "\\.rnc\\'") +(sed-mode auto-mode-alist "\\.sed\\'") +(sed-mode interpreter-mode-alist "sed") +(shen-mode auto-mode-alist "\\.shen\\'") +(sisu-mode auto-mode-alist "\\.ss[imt]\\'") +(smalltalk-mode auto-mode-alist "\\.st\\'") +(sml-mode auto-mode-alist "\\.s\\(ml\\|ig\\)\\'") +(sml-mode auto-mode-alist "\\.cm\\'" sml-cm-mode) +(sml-mode auto-mode-alist "\\.grm\\'" sml-yacc-mode) +(sql-cassandra auto-mode-alist "\\.cql\\'" sql-mode) +(sxhkdrc-mode auto-mode-alist "sxhkdrc\\'") +(systemd auto-mode-alist "\\.automount\\'" systemd-automount-mode) +(systemd auto-mode-alist "\\.mount\\'" systemd-mount-mode) +(systemd auto-mode-alist "\\.path\\'" systemd-path-mode) +(systemd auto-mode-alist "\\.service\\'" systemd-service-mode) +(systemd auto-mode-alist "\\.socket\\'" systemd-socket-mode) +(systemd auto-mode-alist "\\.swap\\'" systemd-swap-mode) +(systemd auto-mode-alist "\\.timer\\'" systemd-timer-mode) +(vcard auto-mode-alist "\\.[Vv][Cc][Ff]\\'" vcard-mode) +(wisi auto-mode-alist "\\.parse_table.*\\'" wisitoken-parse_table-mode) +(wisitoken-grammar-mode auto-mode-alist "\\.wy\\'" simple-indent-mode) +(wisitoken-grammar-mode auto-mode-alist "\\.wy\\'") +(adoc-mode auto-mode-alist "\\.a\\(?:scii\\)?doc\\'") +(apache-mode auto-mode-alist "/\\.htaccess\\'") +(apache-mode auto-mode-alist "/\\(?:access\\|httpd\\|srm\\)\\.conf\\'") +(apache-mode auto-mode-alist "/apache2/.+\\.conf\\'") +(apache-mode auto-mode-alist "/httpd/conf/.+\\.conf\\'") +(apache-mode auto-mode-alist "/apache2/sites-\\(?:available\\|enabled\\)/") +(arduino-mode auto-mode-alist "\\.pde\\'") +(arduino-mode auto-mode-alist "\\.ino\\'") +(beancount auto-mode-alist "\\.beancount\\'" beancount-mode) +(bison-mode auto-mode-alist "\\.y\\'") +(bison-mode auto-mode-alist "\\.l\\'" flex-mode) +(bison-mode auto-mode-alist "\\.jison\\'" jison-mode) +(bqn-mode auto-mode-alist "\\.bqn\\'") +(bqn-mode interpreter-mode-alist "bqn") +(clojure-mode auto-mode-alist "\\.\\(clj\\|cljd\\|dtm\\|edn\\|lpy\\)\\'") +(clojure-mode auto-mode-alist "\\.cljc\\'" clojurec-mode) +(clojure-mode auto-mode-alist "\\.cljs\\'" clojurescript-mode) +(clojure-mode auto-mode-alist "\\(?:build\\|profile\\)\\.boot\\'") +(clojure-mode interpreter-mode-alist "bb") +(clojure-mode interpreter-mode-alist "nbb" clojurescript-mode) +(coffee-mode auto-mode-alist "\\.coffee\\'") +(coffee-mode auto-mode-alist "\\.iced\\'") +(coffee-mode auto-mode-alist "Cakefile\\'") +(coffee-mode auto-mode-alist "\\.cson\\'") +(coffee-mode interpreter-mode-alist "coffee") +(d-mode auto-mode-alist "\\.d[i]?\\'") +(dart-mode auto-mode-alist "\\.dart\\'") +(dockerfile-mode auto-mode-alist "\\.dockerfile\\'") +(drupal-mode auto-mode-alist "[^/]\\.\\(module\\|test\\|install\\|profile\\|tpl\\.php\\|theme\\|inc\\)\\'" php-mode) +(drupal-mode auto-mode-alist "[^/]\\.info\\'" conf-windows-mode) +(drupal-mode auto-mode-alist "[^/]\\.make\\'" drush-make-mode) +(editorconfig auto-mode-alist "\\.editorconfig\\'" editorconfig-conf-mode) +(elixir-mode auto-mode-alist "\\.elixir\\'") +(elixir-mode auto-mode-alist "\\.ex\\'") +(elixir-mode auto-mode-alist "\\.exs\\'") +(elixir-mode auto-mode-alist "mix\\.lock") +(ett auto-mode-alist "\\.ett\\'" ett-mode) +(forth-mode auto-mode-alist "\\.\\(f\\|fs\\|fth\\|4th\\)\\'") +(geiser-racket auto-mode-alist "\\.rkt\\'" scheme-mode) +(gnu-apl-mode auto-mode-alist "\\.apl\\'") +(gnu-apl-mode interpreter-mode-alist "apl") +(go-mode auto-mode-alist "go\\.mod\\'" go-dot-mod-mode) +(go-mode auto-mode-alist "go\\.work\\'" go-dot-work-mode) +(graphql-mode auto-mode-alist "\\.graphql\\'") +(graphql-mode auto-mode-alist "\\.gql\\'") +(haml-mode auto-mode-alist "\\.haml\\'") +(haskell-mode auto-mode-alist "\\.hcr\\'" ghc-core-mode) +(haskell-mode auto-mode-alist "\\.dump-simpl\\'" ghc-core-mode) +(haskell-mode auto-mode-alist "\\.ghci\\'" ghci-script-mode) +(haskell-mode auto-mode-alist "\\.chs\\'" haskell-c2hs-mode) +(haskell-mode auto-mode-alist "\\.cabal\\'\\|/cabal\\.project\\|/\\.cabal/config\\'" haskell-cabal-mode) +(haskell-mode auto-mode-alist "\\.[gh]s\\'") +(haskell-mode auto-mode-alist "\\.hsig\\'") +(haskell-mode auto-mode-alist "\\.l[gh]s\\'" haskell-literate-mode) +(haskell-mode auto-mode-alist "\\.hsc\\'") +(haskell-mode interpreter-mode-alist "runghc") +(haskell-mode interpreter-mode-alist "runhaskell") +(j-mode auto-mode-alist "\\.ij[rsp]$") +(j-mode auto-mode-alist "\\.ijt$" j-lab-mode) +(jade-mode auto-mode-alist "\\.jade\\'") +(jade-mode auto-mode-alist "\\.pug\\'") +(jade-mode auto-mode-alist "\\.styl\\'" stylus-mode) +(jinja2-mode auto-mode-alist "\\.jinja2\\'") +(jinja2-mode auto-mode-alist "\\.j2\\'") +(julia-mode auto-mode-alist "\\.jl\\'") +(lua-mode auto-mode-alist "\\.lua\\'") +(lua-mode interpreter-mode-alist "lua") +(markdown-mode auto-mode-alist "\\.\\(?:md\\|markdown\\|mkd\\|mdown\\|mkdn\\|mdwn\\)\\'") +(nginx-mode auto-mode-alist "nginx\\.conf\\'") +(nginx-mode auto-mode-alist "/nginx/.+\\.conf\\'") +(nix-mode auto-mode-alist "^/nix/store/.+\\.drv\\'" nix-drv-mode) +(nix-mode auto-mode-alist "\\flake.lock\\'" js-mode) +(nix-mode auto-mode-alist "\\.nix\\'") +(php-mode auto-mode-alist "/\\.php_cs\\(?:\\.dist\\)?\\'") +(php-mode auto-mode-alist "\\.\\(?:php\\.inc\\|stub\\)\\'") +(php-mode auto-mode-alist "\\.\\(?:php[s345]?\\|phtml\\)\\'" php-mode-maybe) +(proof auto-mode-alist "\\.v\\'" coq-mode) +(racket-mode auto-mode-alist "\\.rkt\\'") +(racket-mode auto-mode-alist "\\.rktd\\'") +(racket-mode auto-mode-alist "\\.rktl\\'") +(racket-mode interpreter-mode-alist "racket") +(raku-mode interpreter-mode-alist "perl6\\|raku") +(raku-mode auto-mode-alist "\\.p[lm]?6\\'") +(raku-mode auto-mode-alist "\\.nqp\\'") +(raku-mode auto-mode-alist "\\.raku\\(?:mod\\|test\\)?\\'") +(rfc-mode auto-mode-alist "/rfc[0-9]+\\.txt\\'") +(rust-mode auto-mode-alist "\\.rs\\'") +(sass-mode auto-mode-alist "\\.sass\\'") +(scad-mode auto-mode-alist "\\.scad\\'") +(scala-mode auto-mode-alist "\\.\\(scala\\|sbt\\|worksheet\\.sc\\)\\'") +(stylus-mode auto-mode-alist "\\.jade\\'" jade-mode) +(stylus-mode auto-mode-alist "\\.pug\\'" jade-mode) +(stylus-mode auto-mode-alist "\\.styl\\'") +(subed auto-mode-alist "\\.ass\\'" subed-ass-mode) +(subed auto-mode-alist "\\.srt\\'" subed-srt-mode) +(subed auto-mode-alist "\\.vtt\\'" subed-vtt-mode) +(swift-mode auto-mode-alist "\\.swift\\(interface\\)?\\'") +(systemd auto-mode-alist "\\.nspawn\\'" systemd-mode) +(tuareg auto-mode-alist "\\.ml[ip]?\\'" tuareg-mode) +(tuareg auto-mode-alist "\\.eliomi?\\'" tuareg-mode) +(tuareg interpreter-mode-alist "ocamlrun" tuareg-mode) +(tuareg interpreter-mode-alist "ocaml" tuareg-mode) +(tuareg auto-mode-alist "\\.mly\\'" tuareg-menhir-mode) +(tuareg auto-mode-alist "[./]opam_?\\'" tuareg-opam-mode) +(typescript-mode auto-mode-alist "\\.ts\\'") +(yaml-mode auto-mode-alist "\\.\\(e?ya?\\|ra\\)ml\\'") +(yaml-mode magic-mode-alist "^%YAML\\s-+[0-9]+\\.[0-9]+\\(\\s-+#\\|\\s-*$\\)") +(zig-mode auto-mode-alist "\\.\\(zig\\|zon\\)\\'") ) From e9f8dbf19439425568198deb44e48bff150212a4 Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Thu, 7 Nov 2024 16:47:31 +0100 Subject: [PATCH 17/18] Demote errors when failing to install package suggestions * lisp/emacs-lisp/package.el (package--autosuggest-install-and-enable): Wrap 'package-install' and following code in a 'with-demoted-errors'. --- lisp/emacs-lisp/package.el | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 2ded76c0832..335a08b2206 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -4634,11 +4634,12 @@ SUG should be an element of `package-autosuggest-database'." (when (and (eq major-mode 'fundamental-mode) (buffer-file-name) (package--suggestion-applies-p sug)) (push buf buffers-to-update)))) - (package-install (car sug)) - (dolist (buf buffers-to-update) - (with-demoted-errors "Failed to enable major mode: %S" - (with-current-buffer buf - (funcall-interactively (or (cadddr sug) (car sug)))))))) + (with-demoted-errors "Failed to install package: %S" + (package-install (car sug)) + (dolist (buf buffers-to-update) + (with-demoted-errors "Failed to enable major mode: %S" + (with-current-buffer buf + (funcall-interactively (or (cadddr sug) (car sug))))))))) (defvar package--autosugest-line-format '(:eval (package--autosugest-line-format))) From 2a88c6dc3c36f726275554f1b93e32fd726e415c Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Fri, 8 Nov 2024 11:41:47 -0500 Subject: [PATCH 18/18] Do not suggest packages outside of 'fundamental-mode' * lisp/emacs-lisp/package.el (package--autosuggest-find-candidates): Check 'major-mode' before computing suggestions. --- lisp/emacs-lisp/package.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 335a08b2206..f687839f206 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -4618,7 +4618,7 @@ SUG should be an element of `package-autosuggest-database'." "Return a list of suggestions that might be interesting the current buffer. The elements of the returned list will be a subset of the elements of `package--autosuggest-suggested'." - (and package-autosuggest-mode + (and package-autosuggest-mode (eq major-mode 'fundamental-mode) (let (suggetions) (dolist (sug package-autosuggest-database) (when (package--suggestion-applies-p sug)