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

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

[elpa] externals/phps-mode 807c834649 116/135: More work on imenu genera


From: Christian Johansson
Subject: [elpa] externals/phps-mode 807c834649 116/135: More work on imenu generation
Date: Sun, 29 Jan 2023 03:11:10 -0500 (EST)

branch: externals/phps-mode
commit 807c834649ff52ed2ae9bc76de4f5c84159d3cb8
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>

    More work on imenu generation
---
 phps-mode-ast.el        | 37 +++++++++++++++++++++++++++++++++----
 phps-mode-parser-sdt.el |  2 +-
 2 files changed, 34 insertions(+), 5 deletions(-)

diff --git a/phps-mode-ast.el b/phps-mode-ast.el
index 2315456a83..dbe79d0d72 100644
--- a/phps-mode-ast.el
+++ b/phps-mode-ast.el
@@ -75,10 +75,39 @@
     (phps-mode-debug-message
      (message "\nTranslation:\n%S\n\n" translation))
 
-    ;; TODO Build imenu  in `phps-mode-parser-sdt-symbol-imenu' by collecting:
-    ;; * `phps-mode-parser-sdt-symbol-imenu--classes'
-    ;; * `phps-mode-parser-sdt-symbol-imenu--functions'
-    ;; * `phps-mode-parser-sdt-symbol-imenu--namespaces'
+    ;; Convert imenu index from hash-table to list structure here
+    (let ((imenu-index))
+      (maphash
+       (lambda (k v)
+         (if (hash-table-p v)
+             (let ((v-list))
+               (maphash
+                (lambda (k2 v2)
+                  (if hash-table-p v2
+                    (let ((v2-list))
+                      (maphash
+                       (lambda (k3 v3)
+                         (push
+                          `(,k3 . ,v3)
+                          v2-list))
+                       v2)
+                      (push
+                       `(,k2 ,v2-list)
+                       v-list))
+                    (push
+                     `(,k2 . ,v2)
+                     v-list)))
+                v)
+               (push
+                `(,k ,v-list)
+                imenu-index))
+           (push
+            `(,k . ,v)
+            imenu-index)))
+       phps-mode-parser-sdt-symbol-imenu--table)
+      (setq
+       phps-mode-parser-sdt-symbol-imenu
+       imenu-index))
 
     (setq
      phps-mode-ast--tree
diff --git a/phps-mode-parser-sdt.el b/phps-mode-parser-sdt.el
index 016dce133f..48f9e5ad52 100644
--- a/phps-mode-parser-sdt.el
+++ b/phps-mode-parser-sdt.el
@@ -915,7 +915,7 @@
         ;; Collect namespace, class, interface, trait and function here
         (dolist (symbol-scope-item symbol-scope)
           (let ((symbol-scope-item-type (nth 0 symbol-scope))
-                (symbol-scope-item-name (nth 1 symbol-scop)))
+                (symbol-scope-item-name (nth 1 symbol-scope)))
             (cond
              ((equal symbol-scope-item-type 'namespace)
               (setq symbol-namespace symbol-scope-item-name))



reply via email to

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