]> gitweb.factorcode.org Git - factor.git/commitdiff
Added imenu tags to factor-mode for Emacs
authorSilvio Mayolo <mercerenies@comcast.net>
Thu, 14 May 2020 00:20:34 +0000 (20:20 -0400)
committerJohn Benediktsson <mrjbq7@gmail.com>
Thu, 14 May 2020 15:16:55 +0000 (15:16 +0000)
misc/fuel/factor-mode.el

index 8e0cbd6a825a09b754af4f9fcb3dd18eda8cdc3a..dc6f450db93276e945b9bad570642ceaf51c3ecb 100644 (file)
@@ -704,6 +704,32 @@ With prefix, non-existing files will be created."
       (set-buffer-modified-p t)
       (save-buffer))))
 
+\f
+;;; imenu tags
+
+;; TODO Handle the plural words (SINGLETONS:, SYMBOLS:, etc)
+(defvar factor-imenu-generic-expression
+  `((nil
+     ,(concat "^\\s-*"
+              (regexp-opt '(":" "::" "ALIAS:" "BUILTIN:" "C:" "CONSTANT:" "ERROR:"
+                            "GENERIC:" "GENERIC#:" "HOOK:" "INTERSECTION:" "MATH:"
+                            "MIXIN:" "PREDICATE:" "PRIMITIVE:" "SINGLETON:" "SLOT:"
+                            "SYMBOL:" "SYNTAX:" "TUPLE:" "UNION:" "LOG:" "C-TYPE:" "ENUM:"
+                            "STRUCT:" "FUNCTION-ALIAS:"))
+              "\\s-+\\(\\(?:\\s_\\|\\sw\\|\\s\\\\)+\\)")
+     1)
+    ("Methods"
+     ,(concat "^\\s-*"
+              (regexp-opt '("M:" "M::"))
+              "\\s-+\\(\\(?:\\s_\\|\\sw|\\s\\\\)+\\s-+\\(?:\\s_\\|\\sw|\\s\\\\)+\\)")
+     1)
+    (nil
+     ,(concat "^\\s-*"
+              (regexp-opt '("FUNCTION:" "TYPEDEF:"))
+              "\\s-+\\(?:\\(?:\\s_\\|\\sw\\|\\s\\\\)+\\s-+\\)\\(\\(?:\\s_\\|\\sw\\|\\s\\\\)+\\)")
+     1))
+  "Imenu generic expression for factor-mode. See `imenu-generic-expression'.")
+
 \f
 ;;; factor-mode:
 
@@ -758,6 +784,7 @@ With prefix, non-existing files will be created."
               :forward-token #'factor-smie-forward-token
               :backward-token #'factor-smie-backward-token)
   (setq-local smie-indent-basic factor-block-offset)
+  (setq-local imenu-generic-expression factor-imenu-generic-expression)
 
   (setq-local beginning-of-defun-function 'factor-beginning-of-defun)
   (setq-local end-of-defun-function 'factor-end-of-defun)