[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))))))))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] externals/js2-mode f7751b4 1/2: Make it possible to configure mocha node names for Imenu,
ELPA Syncer <=