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

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

[elpa] 01/04: Handle orphan functions on the right side of js2-var-init-


From: Dmitry Gutov
Subject: [elpa] 01/04: Handle orphan functions on the right side of js2-var-init-node
Date: Tue, 18 Nov 2014 12:55:36 +0000

dgutov pushed a commit to branch master
in repository elpa.

commit d0437c51d4009e27d3e93b0ff2d35f8236613622
Author: Dmitry Gutov <address@hidden>
Date:   Mon Nov 17 04:24:03 2014 +0200

    Handle orphan functions on the right side of js2-var-init-node
    
    Fixes #182
---
 js2-imenu-extras.el |   46 ++++++++++++++++++++++++++--------------------
 1 files changed, 26 insertions(+), 20 deletions(-)

diff --git a/js2-imenu-extras.el b/js2-imenu-extras.el
index 1e55b69..0d4e5c6 100644
--- a/js2-imenu-extras.el
+++ b/js2-imenu-extras.el
@@ -237,20 +237,29 @@ Currently used for jQuery widgets, Dojo and Enyo 
declarations."
           ((and js2-imenu-show-other-functions
                 (js2-function-node-p
                  (js2-assign-node-right node)))
-           (js2-imenu-record-orphan-assign-node-function node))
+           (js2-imenu-record-orphan-assign-node-function
+            (js2-assign-node-left node)
+            (js2-assign-node-right node)))
           ((and js2-imenu-show-module-pattern
                 (js2-call-node-p
                  (js2-assign-node-right node)))
            (js2-imenu-record-module-pattern
             (js2-assign-node-left node)
             (js2-assign-node-right node)))))
-        ((and js2-imenu-show-module-pattern
-              (js2-var-init-node-p node)
-              (js2-call-node-p
-               (js2-var-init-node-initializer node)))
-         (js2-imenu-record-module-pattern
-          (js2-var-init-node-target node)
-          (js2-var-init-node-initializer node))))
+        ((js2-var-init-node-p node)
+         (cond
+          ((and js2-imenu-show-other-functions
+                (js2-function-node-p
+                 (js2-var-init-node-initializer node)))
+           (js2-imenu-record-orphan-assign-node-function
+            (js2-var-init-node-target node)
+            (js2-var-init-node-initializer node)))
+          ((and js2-imenu-show-module-pattern
+                (js2-call-node-p
+                 (js2-var-init-node-initializer node)))
+           (js2-imenu-record-module-pattern
+            (js2-var-init-node-target node)
+            (js2-var-init-node-initializer node))))))
        t))))
 
 (defun js2-imenu-parent-key-names (node)
@@ -298,18 +307,15 @@ NODE must be `js2-object-prop-node'."
           (js2-record-imenu-entry fn-node chain
                                   (js2-node-abs-pos key-node)))))))
 
-(defun js2-imenu-record-orphan-assign-node-function (node)
-  "Return orphan function entry when it's the right hand of NODE.
-NODE must be `js2-assign-node'."
-  (let ((fn-node (js2-assign-node-right node)))
-    (when (or (not js2-imenu-function-map)
-              (eq 'skip
-                  (gethash fn-node js2-imenu-function-map 'skip)))
-      (let* ((target-node (js2-assign-node-left node))
-             (chain (js2-compute-nested-prop-get target-node)))
-        (when chain
-          (push js2-imenu-other-functions-ns chain)
-          (js2-record-imenu-entry fn-node chain (js2-node-abs-pos 
fn-node)))))))
+(defun js2-imenu-record-orphan-assign-node-function (target-node fn-node)
+  "Record orphan function FN-NODE assigned to node TARGET."
+  (when (or (not js2-imenu-function-map)
+            (eq 'skip
+                (gethash fn-node js2-imenu-function-map 'skip)))
+    (let ((chain (js2-compute-nested-prop-get target-node)))
+      (when chain
+        (push js2-imenu-other-functions-ns chain)
+        (js2-record-imenu-entry fn-node chain (js2-node-abs-pos fn-node))))))
 
 (defun js2-imenu-record-module-pattern (target init)
   "Recognize and record module pattern use instance.



reply via email to

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