summaryrefslogtreecommitdiffstats
path: root/lisp/init-javascript.el
diff options
context:
space:
mode:
authorMartin Polden <martin.polden@gmail.com>2014-07-10 11:30:33 +0200
committerMartin Polden <martin.polden@gmail.com>2014-07-11 09:55:13 +0200
commitd40959a6928d3eeedbe117085d39b81bb9c59868 (patch)
tree654972340fcaacdbf73db86456759677dc971b49 /lisp/init-javascript.el
parent109757bbc9c14013b7a42040496475553b79bf94 (diff)
Use flat imenu index in js2-mode
Diffstat (limited to 'lisp/init-javascript.el')
-rw-r--r--lisp/init-javascript.el23
1 files changed, 22 insertions, 1 deletions
diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el
index 3b30f23..60716b9 100644
--- a/lisp/init-javascript.el
+++ b/lisp/init-javascript.el
@@ -12,9 +12,30 @@
(require 'js)
(add-to-list 'auto-mode-alist '("\\.json\\'" . js-mode))
+(defun js2-imenu-create-flat-index (&optional alist prefix)
+ "Return a flattened alist for `imenu--index-alist'."
+ ;; adapted from python-imenu-create-flat-index in python.el
+ (apply
+ 'nconc
+ (mapcar
+ (lambda (item)
+ (let ((name (if prefix
+ (concat prefix "." (car item))
+ (car item)))
+ (pos (cdr item)))
+ (cond ((or (numberp pos) (markerp pos))
+ (list (cons name pos)))
+ ((listp pos)
+ (js2-imenu-create-flat-index pos name)))))
+ (or alist (js2-mode-create-imenu-index)))))
+
;; enable imenu extras
(require 'js2-imenu-extras)
-(add-hook 'js2-mode-hook 'js2-imenu-extras-mode)
+(add-hook 'js2-mode-hook
+ (lambda ()
+ (js2-imenu-extras-mode 1)
+ (setq-local imenu-create-index-function
+ #'js2-imenu-create-flat-index)))
;; use jq for reformatting json
(defun jq-reformat-region (begin end)