branch: elpa/raku-mode
commit 0f053e21f29af4566b63000834d4ca5079277f2a
Author: Tom Browder <[email protected]>
Commit: Tom Browder <[email protected]>
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))