branch: elpa/raku-mode commit 0f053e21f29af4566b63000834d4ca5079277f2a Author: Tom Browder <tom.brow...@gmail.com> Commit: Tom Browder <tom.brow...@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))