branch: externals/phps-mode commit 071acc0218073706fc97d5ced022e8ade6044d58 Author: Christian Johansson <christ...@cvj.se> Commit: Christian Johansson <christ...@cvj.se>
Added support for multi-line return indentation --- phps-mode-functions.el | 26 +++++++++++++++++++++++--- phps-mode-test-functions.el | 2 +- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/phps-mode-functions.el b/phps-mode-functions.el index 1fd92c6..3be811b 100644 --- a/phps-mode-functions.el +++ b/phps-mode-functions.el @@ -120,6 +120,9 @@ (in-assignment-level 0) (in-class-declaration nil) (in-class-declaration-level 0) + (in-return nil) + (in-return-curly-bracket-level nil) + (in-return-level 0) (token nil) (token-start nil) (token-end nil) @@ -486,7 +489,6 @@ (unless in-assignment-round-bracket-level (setq in-assignment nil)) (setq in-assignment-level (1- in-assignment-level)))) - (when (and (not after-special-control-structure) (or (string= token "=") (equal token 'T_DOUBLE_ARROW) @@ -510,6 +512,24 @@ (push square-bracket-level in-assignment-square-bracket-level) (setq in-assignment-level (1+ in-assignment-level))) + ;; Keep track of return expressions + (when in-return + (when (and (string= token ";") + (= curly-bracket-level (car in-return-curly-bracket-level))) + + (when phps-mode-functions-verbose + (message "Ended return at %s" token)) + (pop in-return-curly-bracket-level) + (unless in-return-curly-bracket-level + (setq in-return nil)) + (setq in-return-level (1- in-return-level)))) + (when (equal token 'T_RETURN) + (when phps-mode-functions-verbose + (message "Started return")) + (setq in-return t) + (push curly-bracket-level in-return-curly-bracket-level) + (setq in-return-level (1+ in-return-level))) + ;; Keep track of object operators (when (and (equal token 'T_OBJECT_OPERATOR) first-token-on-line)) @@ -538,7 +558,7 @@ (message "Processing token: %s" token)) ;; Calculate nesting - (setq nesting-end (+ round-bracket-level square-bracket-level curly-bracket-level alternative-control-structure-level in-assignment-level in-class-declaration-level in-concatenation-level)) + (setq nesting-end (+ round-bracket-level square-bracket-level curly-bracket-level alternative-control-structure-level in-assignment-level in-class-declaration-level in-concatenation-level in-return-level)) ;; Keep track of whether we are inside a HEREDOC or NOWDOC (when (equal token 'T_START_HEREDOC) @@ -708,7 +728,7 @@ ;; Calculate indentation level at start of line - (setq nesting-start (+ round-bracket-level square-bracket-level curly-bracket-level alternative-control-structure-level in-assignment-level in-class-declaration-level in-concatenation-level)) + (setq nesting-start (+ round-bracket-level square-bracket-level curly-bracket-level alternative-control-structure-level in-assignment-level in-class-declaration-level in-concatenation-level in-return-level)) ;; Set initial values for tracking first token (when (> token-start-line-number last-line-number) diff --git a/phps-mode-test-functions.el b/phps-mode-test-functions.el index 9f78fce..a084057 100644 --- a/phps-mode-test-functions.el +++ b/phps-mode-test-functions.el @@ -858,8 +858,8 @@ (phps-mode-test-functions-get-lines-indent-alternative-if) (phps-mode-test-functions-get-lines-indent-multi-line-assignments) (phps-mode-test-functions-get-lines-indent-switch-case) - (phps-mode-test-functions-get-lines-indent) (phps-mode-test-functions-get-lines-indent-psr-2) + (phps-mode-test-functions-get-lines-indent) (phps-mode-test-functions-indent-line) (phps-mode-test-functions-imenu) (phps-mode-test-functions-comment-uncomment-region))