emacs-diffs
[Top][All Lists]
Advanced

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

scratch/etags-regen 3585f8b: etags-regen-file-extensions: Extract user o


From: Dmitry Gutov
Subject: scratch/etags-regen 3585f8b: etags-regen-file-extensions: Extract user option from code
Date: Sun, 10 Jan 2021 22:08:03 -0500 (EST)

branch: scratch/etags-regen
commit 3585f8ba71f734c60b9b716561e830eedde3f263
Author: Dmitry Gutov <dgutov@yandex.ru>
Commit: Dmitry Gutov <dgutov@yandex.ru>

    etags-regen-file-extensions: Extract user option from code
---
 lisp/progmodes/etags-regen.el | 28 +++++++++++++++++++++++-----
 1 file changed, 23 insertions(+), 5 deletions(-)

diff --git a/lisp/progmodes/etags-regen.el b/lisp/progmodes/etags-regen.el
index e49d87c..597d386 100644
--- a/lisp/progmodes/etags-regen.el
+++ b/lisp/progmodes/etags-regen.el
@@ -79,6 +79,27 @@ We support only Emacs's etags program with this option."
                     (seq-every-p #'stringp (cdr group))))
              value))))
 
+;; XXX: We have to list all extensions: etags falls back to Fortran.
+;; http://lists.gnu.org/archive/html/emacs-devel/2018-01/msg00323.html
+(defcustom etags-regen-file-extensions
+  '("rb" "js" "py" "pl" "el" "c" "cpp" "cc" "h" "hh" "hpp"
+    "java" "go" "cl" "lisp" "prolog" "php" "erl" "hrl"
+    "F" "f" "f90" "for" "cs" "a" "asm" "ads" "adb" "ada")
+  "Code file extensions.
+
+File extensions to generate the tags for."
+  :type '(repeat (string :tag "File extension")))
+
+;;;###autoload
+(put 'etags-regen-file-extensions 'safe-local-variable
+     (lambda (value)
+       (and (listp value)
+            (seq-every-p
+             (lambda (ext)
+               (and (stringp ext)
+                    (string-match-p "\\`[a-zA-Z0-9]+\\'" ext)))
+             value))))
+
 (defvar etags-regen--errors-buffer-name "*etags-regen-tags-errors*")
 
 (defun etags-regen--maybe-generate ()
@@ -103,11 +124,8 @@ We support only Emacs's etags program with this option."
   (let* ((root (project-root proj))
          (default-directory root)
          (files (project-files proj))
-         ;; FIXME: List all extensions, or wait for etags fix.
-         ;; http://lists.gnu.org/archive/html/emacs-devel/2018-01/msg00323.html
-         (extensions '("rb" "js" "py" "pl" "el" "c" "cpp" "cc" "h" "hh" "hpp"
-                       "java" "go" "cl" "lisp" "prolog" "php" "erl" "hrl"
-                       "F" "f" "f90" "for" "cs" "a" "asm" "ads" "adb" "ada"))
+         (extensions etags-regen-file-extensions)
+         ;; FIXME: Try to do the filtering inside project.el already.
          (file-regexp (format "\\.%s\\'" (regexp-opt extensions t)))
          (tags-file (make-temp-file "emacs-regen-tags-"))
          ;; ctags's etags requires '-L -' for stdin input.



reply via email to

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