diff options
| author | 2025-08-05 11:04:16 -0700 | |
|---|---|---|
| committer | 2025-08-05 11:04:16 -0700 | |
| commit | a78aef63b76469444cea136e05230b842306c208 (patch) | |
| tree | b4d5f72a5edab402fac4c357317c51d3579c2291 | |
| parent | abbf24b39501caab6d8bb95f482a5a1ce5ce9390 (diff) | |
| download | emacs-config-a78aef63b76469444cea136e05230b842306c208.tar.gz emacs-config-a78aef63b76469444cea136e05230b842306c208.zip | |
oni-js: Set generic imenu expression for JavaScript functions
| -rw-r--r-- | oni-js.el | 14 |
1 files changed, 13 insertions, 1 deletions
@@ -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 |
