emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[nongnu] elpa/raku-mode 0f053e21f2 146/253: now have a working solution


From: ELPA Syncer
Subject: [nongnu] elpa/raku-mode 0f053e21f2 146/253: now have a working solution for an Index imenu for subs and vars
Date: Sat, 29 Jan 2022 08:28:50 -0500 (EST)

branch: elpa/raku-mode
commit 0f053e21f29af4566b63000834d4ca5079277f2a
Author: Tom Browder <tom.browder@gmail.com>
Commit: Tom Browder <tom.browder@gmail.com>

    now have a working solution for an Index imenu for subs and vars
---
 perl6-imenu.el | 40 ++++++++++++++++++++++++++++++++++++++++
 perl6-mode.el  |  3 ++-
 2 files changed, 42 insertions(+), 1 deletion(-)

diff --git a/perl6-imenu.el b/perl6-imenu.el
new file mode 100644
index 0000000000..89184491de
--- /dev/null
+++ b/perl6-imenu.el
@@ -0,0 +1,40 @@
+;;; perl6-imenu.el --- Imenu support Perl 6 -*- lexical-binding: t; -*-
+
+;;; Commentary:
+
+
+;; Imenu functions and variables are defined here.
+(defvar perl6-imenu-generic-expression
+  '(
+    ;; the names are in reverse desired order since they are evaluated here 
last first
+    ("Variables" 
"^\\s-*\\(?:my\\|our\\)\\s-+\\(\\(?:\\$\\|@\\|%\\)\\(?:[_[:alnum:]]+\\)\\)" 1)
+    ("Subs/Methods" 
"^\\s-*\\(?:my\\|our\\)\\s-+\\(?:sub\\|method\\|multi-method\\)\\s-+\\(.+)\\)" 
1)
+    )
+  "Define interesting points in the Perl 6 buffer for `imenu'.
+
+This is used to set `imenu-generic-expression' when Perl 6 mode is
+entered.  Subsequent changes to `perl6-imenu-generic-expression' will
+not affect existing Perl 6 buffers because imenu-generic-expression is
+a local variable.")
+
+;; Add imenu support for perl6-mode.  Note that imenu-generic-expression
+;; is buffer-local, so we don't need a local-variable for it.
+(setq imenu-generic-expression perl6-imenu-generic-expression
+      imenu-case-fold-search nil)
+
+;; Imenu support
+(setq imenu-auto-rescan t)
+(add-hook 'perl6-mode-hook 'imenu-add-menubar-index)
+(add-hook 'perl6-mode-hook
+         (lambda ()
+           (setq imenu-generic-expression perl6-imenu-generic-expression)))
+
+;;===========================
+(provide 'perl6-imenu)
+
+;; Local Variables:
+;; coding: utf-8
+;; indent-tabs-mode: nil
+;; End:
+
+;;; perl6-imenu.el ends here
diff --git a/perl6-mode.el b/perl6-mode.el
index 67c5853a8d..25538dac07 100644
--- a/perl6-mode.el
+++ b/perl6-mode.el
@@ -41,6 +41,7 @@
 (require 'perl6-detect)
 (require 'perl6-font-lock)
 (require 'perl6-indent)
+(require 'perl6-imenu)
 
 ;;;###autoload
 (define-derived-mode perl6-mode prog-mode "Perl6"
@@ -55,7 +56,7 @@
   (setq-local comment-start-skip "#+ *")
   (setq-local comment-use-syntax t)
   (setq-local comment-end "")
-  ;; Indentation
+    ;; Indentation
   (smie-setup perl6-smie-grammar #'perl6-smie-rules
               :forward-token #'perl6-smie--forward-token
               :backward-token #'perl6-smie--backward-token))



reply via email to

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