From d40959a6928d3eeedbe117085d39b81bb9c59868 Mon Sep 17 00:00:00 2001 From: Martin Polden Date: Thu, 10 Jul 2014 11:30:33 +0200 Subject: Use flat imenu index in js2-mode --- lisp/init-javascript.el | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'lisp/init-javascript.el') 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) -- cgit v1.2.3