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

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

[elpa] externals/js2-mode d187305 2/2: Merge pull request #579 from Dami


From: ELPA Syncer
Subject: [elpa] externals/js2-mode d187305 2/2: Merge pull request #579 from DamienCassou/configure-mocha-blocks
Date: Wed, 1 Dec 2021 07:57:31 -0500 (EST)

branch: externals/js2-mode
commit d18730505e4ab57ec2b036980a62f6c6a60381e9
Merge: d2636f9 f7751b4
Author: Dmitry Gutov <dgutov@yandex.ru>
Commit: GitHub <noreply@github.com>

    Merge pull request #579 from DamienCassou/configure-mocha-blocks
    
    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]