emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/js2-mode f7751b4 1/2: Make it possible to configure moc


From: ELPA Syncer
Subject: [elpa] externals/js2-mode f7751b4 1/2: Make it possible to configure mocha node names for Imenu
Date: Wed, 1 Dec 2021 07:57:31 -0500 (EST)

branch: externals/js2-mode
commit f7751b45bf6efcbfae2779f3966ed4634ae3dc90
Author: Damien Cassou <damien@cassou.me>
Commit: Damien Cassou <damien@cassou.me>

    Make it possible to configure mocha node names for Imenu
---
 js2-imenu-extras.el  | 21 ++++++++++++++++++---
 tests/imenu-mocha.el | 36 ++++++++++++++++++++++++++++++++++++
 2 files changed, 54 insertions(+), 3 deletions(-)

diff --git a/js2-imenu-extras.el b/js2-imenu-extras.el
index 458c57f..3ec1ba8 100644
--- a/js2-imenu-extras.el
+++ b/js2-imenu-extras.el
@@ -124,6 +124,21 @@ Currently used for jQuery widgets, Dojo and Enyo 
declarations."
   :type 'boolean
   :group 'js2-imenu)
 
+(defcustom js2-imenu-mocha-describe-node-names '("describe" "describe.only" 
"fdescribe")
+  "List of strings starting a describe() node."
+  :type '(repeat string)
+  :group 'js2-imenu)
+
+(defcustom js2-imenu-mocha-it-node-names '("it" "it.only" "fit")
+  "List of strings starting a it() node."
+  :type '(repeat string)
+  :group 'js2-imenu)
+
+(defcustom js2-imenu-mocha-hook-node-names '("beforeEach" "afterEach" 
"beforeAll" "afterAll")
+  "List of strings starting a hook node (e.g., before and after hooks)."
+  :type '(repeat string)
+  :group 'js2-imenu)
+
 ;;;###autoload
 (defun js2-imenu-extras-setup ()
   (when js2-imenu-enabled-frameworks
@@ -300,17 +315,17 @@ describe() block."
 (defun js2-imenu-extras--mocha-describe-node-p (node)
   "Return non-nil if NODE is a mocha describe() block."
   (when-let ((name (js2-imenu-extras--call-target-name node)))
-    (member name '("describe" "describe.only" "fdescribe"))))
+    (member name js2-imenu-mocha-describe-node-names)))
 
 (defun js2-imenu-extras--mocha-it-node-p (node)
   "Return non-nil if NODE is a mocha it() block."
   (when-let ((name (js2-imenu-extras--call-target-name node)))
-    (member name '("it" "it.only" "fit"))))
+    (member name js2-imenu-mocha-it-node-names)))
 
 (defun js2-imenu-extras--mocha-before-after-node-p (node)
   "Return non-nil if NODE is a `{before,after}{Each,All}' block."
   (when-let ((name (js2-imenu-extras--call-target-name node)))
-    (member name '("beforeEach" "afterEach" "beforeAll" "afterAll"))))
+    (member name js2-imenu-mocha-hook-node-names)))
 
 (defun js2-imenu-extras--mocha-named-function-node-p (node)
   "Return non-nil if NODE is a function definition."
diff --git a/tests/imenu-mocha.el b/tests/imenu-mocha.el
index aeae912..13df3df 100644
--- a/tests/imenu-mocha.el
+++ b/tests/imenu-mocha.el
@@ -152,3 +152,39 @@
                     '(("top-level"
                        ("<definition-1>" . 1)
                        ("foo" . 33))))))))
+
+(ert-deftest js2-imenu-mocha-customize-describe-node-name ()
+  (js2-imenu-mocha-create-buffer
+   ("describe(\"top-level\", () => {"
+    "  fooBar(\"sub\", () => {})"
+    "});")
+   (let* ((js2-imenu-mocha-describe-node-names '("describe" "fooBar"))
+          (result (js2-mode-create-imenu-index)))
+     (should (equal result
+                    '(("top-level"
+                       ("<definition-1>" . 1)
+                       ("sub" . 33))))))))
+
+(ert-deftest js2-imenu-mocha-customize-it-node-name ()
+  (js2-imenu-mocha-create-buffer
+   ("describe(\"top-level\", () => {"
+    "  fooBar(\"sub\", () => {})"
+    "});")
+   (let* ((js2-imenu-mocha-it-node-names '("fooBar"))
+          (result (js2-mode-create-imenu-index)))
+     (should (equal result
+                    '(("top-level"
+                       ("<definition-1>" . 1)
+                       ("sub" . 33))))))))
+
+(ert-deftest js2-imenu-mocha-customize-hook-node-name ()
+  (js2-imenu-mocha-create-buffer
+   ("describe(\"top-level\", () => {"
+    "  fooBar(() => {})"
+    "});")
+   (let* ((js2-imenu-mocha-hook-node-names '("fooBar"))
+          (result (js2-mode-create-imenu-index)))
+     (should (equal result
+                    '(("top-level"
+                       ("<definition-1>" . 1)
+                       ("fooBar" . 33))))))))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]