]> code.delx.au - gnu-emacs-elpa/commitdiff
Rename the new functions and rewrite the comments
authorDmitry Gutov <dgutov@yandex.ru>
Thu, 19 Dec 2013 14:58:38 +0000 (16:58 +0200)
committerDmitry Gutov <dgutov@yandex.ru>
Thu, 19 Dec 2013 14:58:38 +0000 (16:58 +0200)
js2-imenu-extras.el

index e8d3601d8f25d8bdeb5cb998d8bfeb6346c2e035..e68d9ff92f314fc1754ad5fc579a66d760124ec6 100644 (file)
@@ -212,28 +212,31 @@ Currently used for jQuery widgets, Dojo and Enyo declarations."
          (js2-imenu-record-module-pattern node)))\r
        t))))\r
 \r
-(defun js2-imenu-get-parent-keyname-list (node)\r
-  "get the list of keys of parent of node\r
-for example, for javascript code, {rules:{ password {required: function(){}}}}\r
-the return will be '(rules password)."\r
-  (let (rlt\r
-        (n node))\r
+(defun js2-imenu-parent-key-names (node)\r
+  "Get the list of parent key names of NODE.\r
+\r
+For example, for code\r
+\r
+  {rules: {password: {required: function() {}}}}\r
+\r
+when NODE is the inner `js2-object-prop-mode',\r
+it returns `(\"rules\" \"password\")'."\r
+  (let (rlt (n node))\r
     (while (setq n (js2-imenu-parent-prop-node n))\r
-      (add-to-list 'rlt (js2-prop-node-name (js2-object-prop-node-left n))))\r
-    rlt\r
-    ))\r
+      (push (js2-prop-node-name (js2-object-prop-node-left n)) rlt))\r
+    rlt))\r
 \r
 (defun js2-imenu-parent-prop-node (node)\r
-  "for javascript code: parent-key-name:{ required:function(){} }\r
-we need know the  parent-key-name.\r
- step1, 'required:function(){}' is the js2-object-prop-node\r
- step2, '{ required:function(){} }' is the js2-object-node\r
- step3, 'parent-key-name:{ required:function(){} }' is js2-object-prop-node\r
-"\r
+  "When the parent of NODE is `js2-object-node',\r
+and the grandparent is `js2-object-prop-node',\r
+return the grandparent."\r
+  ;; Suppose the code is:\r
+  ;; {parent-key: {required: function() {}}}\r
+  ;; NODE is `required: function() {}'.\r
   (let (p2 p3)\r
-    ;; step 2\r
+    ;; Parent is `{required: function() {}}'.\r
     (setq p2 (js2-node-parent node))\r
-    ;; step 3\r
+    ;; GP is `parent-key: {required: function() {}}'.\r
     (when (and p2 (js2-object-node-p p2))\r
       (setq p3 (js2-node-parent p2))\r
       (if (and p3 (js2-object-prop-node-p p3)) p3))))\r
@@ -247,11 +250,11 @@ NODE must be `js2-object-prop-node'."
                    (gethash fn-node js2-imenu-function-map))\r
         (let ((key-node (js2-object-prop-node-left node))\r
               (parent-prop-node (js2-imenu-parent-prop-node node))\r
-              mylist)\r
-          (setq mylist (append (js2-imenu-get-parent-keyname-list node)\r
-                               (list (js2-prop-node-name key-node))))\r
-          (add-to-list 'mylist js2-imenu-other-functions-ns)\r
-          (js2-record-imenu-entry fn-node mylist\r
+              chain)\r
+          (setq chain (nconc (js2-imenu-parent-key-names node)\r
+                             (list (js2-prop-node-name key-node))))\r
+          (push js2-imenu-other-functions-ns chain)\r
+          (js2-record-imenu-entry fn-node chain\r
                                   (js2-node-abs-pos key-node)))))))\r
 \r
 (defun js2-imenu-record-module-pattern (node)\r