branch: externals/phps-mode commit 807c834649ff52ed2ae9bc76de4f5c84159d3cb8 Author: Christian Johansson <christ...@cvj.se> Commit: Christian Johansson <christ...@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))