]> code.delx.au - gnu-emacs-elpa/commitdiff
Add imenu support for the Sencha framework
authorLele Gaifax <lele@metapensiero.it>
Sat, 1 Nov 2014 19:34:15 +0000 (20:34 +0100)
committerLele Gaifax <lele@metapensiero.it>
Sat, 1 Nov 2014 19:34:15 +0000 (20:34 +0100)
This implements issue #172.

js2-imenu-extras.el

index fc6b0051fe208a0a962a68351b925da269a9650a..e3a2c97b2af502898a6662c581c8e96fe6054eab 100644 (file)
 
     (:framework react
      :call-re "\\_<React\\.createClass\\s-*("
-     :recorder js2-imenu-record-react-class))
+     :recorder js2-imenu-record-react-class)
+
+    (:framework sencha
+     :call-re "^\\s-*Ext\\.define\\s-*("
+     :recorder js2-imenu-record-sencha-class))
   "List of JavaScript class definition or extension styles.
 
 :framework is a valid value in `js2-imenu-enabled-frameworks'.
@@ -206,6 +210,19 @@ Currently used for jQuery widgets, Dojo and Enyo declarations."
                                        (list name-value))
                                      (js2-node-abs-pos options)))))))
 
+(defun js2-imenu-record-sencha-class ()
+  (let* ((node (js2-node-at-point (1- (point))))
+         (args (js2-call-node-args node))
+         (name (first args))
+         (methods (second args)))
+    (when (and (js2-string-node-p name) (js2-object-node-p methods))
+      (let ((name-value (js2-string-node-value name)))
+        (js2-record-object-literal methods
+                                   (if js2-imenu-split-string-identifiers
+                                       (split-string name-value "\\." t)
+                                     (list name-value))
+                                   (js2-node-abs-pos methods))))))
+
 (defun js2-imenu-walk-ast ()
   (js2-visit-ast
    js2-mode-ast