;;; js2-imenu-extras.el --- Imenu support for additional constructs\r
\r
+;; Copyright (C) 2012-2013 Free Software Foundation, Inc.\r
+\r
;; Author: Dmitry Gutov <dgutov@yandex.ru>\r
;; Keywords: languages, javascript, imenu\r
\r
;;; Commentary:\r
\r
;; This package adds Imenu support for additional framework constructs and\r
-;; general patterns to `js2-mode'.\r
+;; structural patterns to `js2-mode'.\r
\r
;; Usage:\r
\r
-;; (eval-after-load 'js2-mode\r
-;; '(progn\r
-;; (require 'js2-imenu-extras)\r
-;; (js2-imenu-extras-setup)))\r
+;; (add-hook 'js2-mode-hook 'js2-imenu-extras-mode)\r
\r
;; To customize how it works:\r
;; M-x customize-group RET js2-imenu RET\r
;;;###autoload\r
(defun js2-imenu-extras-setup ()\r
(when js2-imenu-enabled-frameworks\r
- (add-to-list 'js2-post-parse-callbacks 'js2-imenu-record-declarations t))\r
+ (add-hook 'js2-post-parse-callbacks 'js2-imenu-record-declarations t t))\r
(when (or js2-imenu-show-other-functions js2-imenu-show-module-pattern)\r
- (add-to-list 'js2-post-parse-callbacks 'js2-imenu-walk-ast t)))\r
+ (add-hook 'js2-post-parse-callbacks 'js2-imenu-walk-ast t t)))\r
+\r
+(defun js2-imenu-extras-remove ()\r
+ (remove-hook 'js2-post-parse-callbacks 'js2-imenu-record-declarations t)\r
+ (remove-hook 'js2-post-parse-callbacks 'js2-imenu-walk-ast t))\r
\r
(defun js2-imenu-record-declarations ()\r
(let* ((styles (loop for style in js2-imenu-extension-styles\r
(js2-record-imenu-entry fn target-qname\r
(js2-node-abs-pos target))))))))))\r
\r
+;;;###autoload\r
+(define-minor-mode js2-imenu-extras-mode\r
+ "Toggle Imenu support for frameworks and structural patterns."\r
+ :lighter ""\r
+ (if js2-imenu-extras-mode\r
+ (js2-imenu-extras-setup)\r
+ (js2-imenu-extras-remove)))\r
+\r
(provide 'js2-imenu-extras)\r