branch: externals/phps-mode commit 2e249e5c24bba2e2266f5368bea10d9292263cbc Author: Christian Johansson <christ...@cvj.se> Commit: Christian Johansson <christ...@cvj.se>
Moved bookkeeping and imenu generation to separate thread --- phps-mode-ast-bookkeeping.el | 6 +++--- phps-mode-ast-imenu.el | 9 +++++---- phps-mode-lex-analyzer.el | 12 ++++++++---- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/phps-mode-ast-bookkeeping.el b/phps-mode-ast-bookkeeping.el index 79e83e00f0..ebff44a952 100644 --- a/phps-mode-ast-bookkeeping.el +++ b/phps-mode-ast-bookkeeping.el @@ -242,10 +242,10 @@ (push scope-string scope-strings))) scope-strings)) -(defun phps-mode-ast-bookkeeping--generate () - "Generate AST for current buffer." +(defun phps-mode-ast-bookkeeping--generate (&optional tree) + "Generate AST for current buffer or optionally for TREE." (let ((bookkeeping (make-hash-table :test 'equal)) - (bookkeeping-stack phps-mode-ast--tree) + (bookkeeping-stack (if tree tree phps-mode-ast--tree)) (inline-function-count 0) (arrow-function-count 0) (defined-count 0)) diff --git a/phps-mode-ast-imenu.el b/phps-mode-ast-imenu.el index 5afe86b339..e61e6bfe9d 100644 --- a/phps-mode-ast-imenu.el +++ b/phps-mode-ast-imenu.el @@ -16,10 +16,11 @@ nil "Imenu for current buffer.") -(defun phps-mode-ast-imenu--generate () - "Generate imenu from AST." - (let ((imenu-index)) - (dolist (item phps-mode-ast--tree) +(defun phps-mode-ast-imenu--generate (&optional tree) + "Generate imenu from current buffer AST or optionally from TREE." + (let ((imenu-index) + (ast-tree (if tree tree phps-mode-ast--tree))) + (dolist (item ast-tree) (let ((children (plist-get item 'children)) (item-type (plist-get item 'ast-type)) (item-index (plist-get item 'index)) diff --git a/phps-mode-lex-analyzer.el b/phps-mode-lex-analyzer.el index ffdbd7ec4b..1c807a1791 100644 --- a/phps-mode-lex-analyzer.el +++ b/phps-mode-lex-analyzer.el @@ -254,8 +254,10 @@ ;; Catch errors in bookkeeping or imenu generation (condition-case conditions (progn - (phps-mode-ast-bookkeeping--generate) - (phps-mode-ast-imenu--generate)) + (phps-mode-ast-bookkeeping--generate + phps-mode-lex-analyzer--ast) + (phps-mode-ast-imenu--generate + phps-mode-lex-analyzer--ast)) (error (display-warning 'phps-mode @@ -405,8 +407,10 @@ ;; Catch errors in bookkeeping or imenu generation (condition-case conditions (progn - (phps-mode-ast-bookkeeping--generate) - (phps-mode-ast-imenu--generate)) + (phps-mode-ast-bookkeeping--generate + phps-mode-lex-analyzer--ast) + (phps-mode-ast-imenu--generate + phps-mode-lex-analyzer--ast)) (error (display-warning 'phps-mode