branch: externals/phps-mode commit 7160da611d599a509569326f36f4387553902668 Author: Christian Johansson <christ...@cvj.se> Commit: Christian Johansson <christ...@cvj.se>
Improved re-scan feature and road-map document --- README.md | 5 ++++- phps-mode.el | 37 +++++++++++++++++++++++-------------- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index cbcbc91..0838614 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,10 @@ This mode does not require PHP installed on your computer because it has a built ## Roadmap -* Wisent Parser support +* 1. Refactor lexer to separate buffer, error handling and error presentation +* 2. Wisent Parser support +* 3. Improved token-blind indentation +* 4. Other enhancements ## Keymap diff --git a/phps-mode.el b/phps-mode.el index 83bd3b7..957f7da 100644 --- a/phps-mode.el +++ b/phps-mode.el @@ -6,7 +6,7 @@ ;; Maintainer: Christian Johansson <christ...@cvj.se> ;; Created: 3 Mar 2018 ;; Modified: 10 Dec 2019 -;; Version: 0.3.22 +;; Version: 0.3.23 ;; Keywords: tools, convenience ;; URL: https://github.com/cjohansson/emacs-phps-mode @@ -61,12 +61,19 @@ (defvar phps-mode-map (let ((map (make-sparse-keymap))) - (define-key map (kbd "C-c C-r") #'phps-mode-lexer-run) + (define-key map (kbd "C-c C-r") #'phps-mode-rescan-buffer) (define-key map (kbd "C-c C-f") #'phps-mode-format-buffer) map) "Keymap for `phps-mode'.") ;;;###autoload +(defun phps-mode-rescan-buffer () + "Re-scan buffer." + (interactive) + (phps-mode-reset-local-variables) + (phps-mode-lexer-run)) + +;;;###autoload (defun phps-mode-flycheck-setup () "Setup `flycheck' for `phps-mode'." ;; Add support for flycheck PHP checkers: PHP, PHPMD and PHPCS here @@ -142,6 +149,19 @@ (delete-region (point-min) (point-max)) (insert new-buffer-contents))))) +(defun phps-mode-reset-local-variables () + "Reset local variables." + (setq-local phps-mode-functions-allow-after-change t) + (setq-local phps-mode-analyzer-change-min nil) + (setq-local phps-mode-functions-idle-timer nil) + (setq-local phps-mode-functions-lines-indent nil) + (setq-local phps-mode-functions-imenu nil) + (setq-local phps-mode-functions-processed-buffer nil) + (setq-local phps-mode-lexer-buffer-length nil) + (setq-local phps-mode-lexer-buffer-contents nil) + (setq-local phps-mode-lexer-tokens nil) + (setq-local phps-mode-lexer-states nil)) + (define-derived-mode phps-mode prog-mode "PHPs" "Major mode for PHP with Semantic integration." @@ -182,18 +202,7 @@ ;; All PHP files MUST end with a non-blank line, terminated with a single LF. (setq require-final-newline t)) - ;; Reset buffer-local variables - (setq-local phps-mode-functions-allow-after-change t) - (setq-local phps-mode-analyzer-change-min nil) - (setq-local phps-mode-functions-idle-timer nil) - (setq-local phps-mode-functions-lines-indent nil) - (setq-local phps-mode-functions-imenu nil) - (setq-local phps-mode-functions-processed-buffer nil) - (setq-local phps-mode-lexer-buffer-length nil) - (setq-local phps-mode-lexer-buffer-contents nil) - (setq-local phps-mode-lexer-tokens nil) - (setq-local phps-mode-lexer-states nil) - (setq-local phps-mode-functions-allow-after-change t) + (phps-mode-reset-local-variables) ;; Make (comment-region) and (uncomment-region) work (setq-local comment-region-function #'phps-mode-functions-comment-region)