diff options
author | Martin Polden <martin.polden@gmail.com> | 2014-07-10 11:30:33 +0200 |
---|---|---|
committer | Martin Polden <martin.polden@gmail.com> | 2014-07-11 09:55:13 +0200 |
commit | d40959a6928d3eeedbe117085d39b81bb9c59868 (patch) | |
tree | 654972340fcaacdbf73db86456759677dc971b49 /lisp/init-javascript.el | |
parent | 109757bbc9c14013b7a42040496475553b79bf94 (diff) |
Use flat imenu index in js2-mode
Diffstat (limited to 'lisp/init-javascript.el')
-rw-r--r-- | lisp/init-javascript.el | 23 |
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) |