From 454f19256240cd438875b7ba6f3a1fabe5523487 Mon Sep 17 00:00:00 2001 From: Silvio Mayolo Date: Wed, 13 May 2020 20:20:34 -0400 Subject: [PATCH] Added imenu tags to factor-mode for Emacs --- misc/fuel/factor-mode.el | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/misc/fuel/factor-mode.el b/misc/fuel/factor-mode.el index 8e0cbd6a82..dc6f450db9 100644 --- a/misc/fuel/factor-mode.el +++ b/misc/fuel/factor-mode.el @@ -704,6 +704,32 @@ With prefix, non-existing files will be created." (set-buffer-modified-p t) (save-buffer)))) + +;;; 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'.") + ;;; 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) -- 2.34.1