aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tom Willemse2025-08-05 11:04:16 -0700
committerGravatar Tom Willemse2025-08-05 11:04:16 -0700
commita78aef63b76469444cea136e05230b842306c208 (patch)
treeb4d5f72a5edab402fac4c357317c51d3579c2291
parentabbf24b39501caab6d8bb95f482a5a1ce5ce9390 (diff)
downloademacs-config-a78aef63b76469444cea136e05230b842306c208.tar.gz
emacs-config-a78aef63b76469444cea136e05230b842306c208.zip
oni-js: Set generic imenu expression for JavaScript functions
-rw-r--r--oni-js.el14
1 files changed, 13 insertions, 1 deletions
diff --git a/oni-js.el b/oni-js.el
index 3488331..bf16f55 100644
--- a/oni-js.el
+++ b/oni-js.el
@@ -4,7 +4,7 @@
;; Author: Tom Willemse <tom@ryuslash.org>
;; Keywords: local
-;; Version: 2025.0620.121132
+;; Version: 2025.0805.110318
;; Package-Requires: (oni-company js2-mode js2-refactor oni-flycheck fic-mode rjsx-mode prettier-js)
;; This program is free software; you can redistribute it and/or modify
@@ -82,6 +82,18 @@
(with-eval-after-load 'grep
(add-to-list 'grep-files-aliases '("js" . "*.js *.jsx *.json *.vue *.mjs")))
+(defun oni-js-set-imenu-expression ()
+ (setq-local imenu-create-index-function 'imenu-default-create-index-function
+ imenu-generic-expression
+ (list
+ (list
+ nil
+ (rx (or (seq bol (minimal-match (zero-or-more space)) (optional "async ") (group-n 1 (minimal-match (one-or-more alnum))) "(" (minimal-match (zero-or-more (not ")"))) ")" (minimal-match (zero-or-more white)) "{")
+ (seq bol (minimal-match (zero-or-more space)) (minimal-match (group-n 1 (one-or-more alnum))) ":" (minimal-match (zero-or-more white)) (optional "function ") "(")
+ (seq bol (minimal-match (zero-or-more space)) "function " (minimal-match (group-n 1 (one-or-more alnum))) "(" (minimal-match (zero-or-more (not ")"))) ")" (minimal-match (zero-or-more space)) "{")))
+ 1))))
+
+(add-hook 'js2-mode-hook #'oni-js-set-imenu-expression)
(provide 'oni-js)
;;; oni-js.el ends here