branch: externals/phps-mode commit d8ad25bb62cb5fb05d140735704d25dcf24c1f09 Author: Christian Johansson <christ...@cvj.se> Commit: Christian Johansson <christ...@cvj.se>
Passes new test indentation of multi-line double-arrow inside assignment --- phps-mode-functions.el | 85 +++++++++++++++++++++++---------------------- phps-mode-test-functions.el | 10 +++--- 2 files changed, 48 insertions(+), 47 deletions(-) diff --git a/phps-mode-functions.el b/phps-mode-functions.el index 51eb26c..1fd92c6 100644 --- a/phps-mode-functions.el +++ b/phps-mode-functions.el @@ -465,49 +465,50 @@ )) ;; Keep track of assignments - (if in-assignment - (when (or (string= token ";") - (and (string= token ")") - (< round-bracket-level (car in-assignment-round-bracket-level))) - (and (string= token ",") - (= round-bracket-level (car in-assignment-round-bracket-level)) - (= square-bracket-level (car in-assignment-square-bracket-level))) - (and (string= token"]") - (< square-bracket-level (car in-assignment-square-bracket-level))) - (and (equal token 'T_FUNCTION) - (= round-bracket-level (car in-assignment-round-bracket-level)))) - - ;; NOTE Ending an assignment because of function token is to support PSR-2 Closures - - (when phps-mode-functions-verbose - (message "Ended assignment at %s" token)) - (pop in-assignment-square-bracket-level) - (pop in-assignment-round-bracket-level) - (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) - (equal token 'T_CONCAT_EQUAL) - (equal token 'T_POW_EQUAL) - (equal token 'T_DIV_EQUAL) - (equal token 'T_PLUS_EQUAL) - (equal token 'T_MINUS_EQUAL) - (equal token 'T_MUL_EQUAL) - (equal token 'T_MOD_EQUAL) - (equal token 'T_SL_EQUAL) - (equal token 'T_SR_EQUAL) - (equal token 'T_AND_EQUAL) - (equal token 'T_OR_EQUAL) - (equal token 'T_XOR_EQUAL) - (equal token 'T_COALESCE_EQUAL))) + (when in-assignment + (when (or (string= token ";") + (and (string= token ")") + (< round-bracket-level (car in-assignment-round-bracket-level))) + (and (string= token ",") + (= round-bracket-level (car in-assignment-round-bracket-level)) + (= square-bracket-level (car in-assignment-square-bracket-level))) + (and (string= token"]") + (< square-bracket-level (car in-assignment-square-bracket-level))) + (and (equal token 'T_FUNCTION) + (= round-bracket-level (car in-assignment-round-bracket-level)))) + + ;; NOTE Ending an assignment because of function token is to support PSR-2 Closures + (when phps-mode-functions-verbose - (message "Started assignment")) - (setq in-assignment t) - (push round-bracket-level in-assignment-round-bracket-level) - (push square-bracket-level in-assignment-square-bracket-level) - (setq in-assignment-level (1+ in-assignment-level)))) + (message "Ended assignment at %s" token)) + (pop in-assignment-square-bracket-level) + (pop in-assignment-round-bracket-level) + (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) + (equal token 'T_CONCAT_EQUAL) + (equal token 'T_POW_EQUAL) + (equal token 'T_DIV_EQUAL) + (equal token 'T_PLUS_EQUAL) + (equal token 'T_MINUS_EQUAL) + (equal token 'T_MUL_EQUAL) + (equal token 'T_MOD_EQUAL) + (equal token 'T_SL_EQUAL) + (equal token 'T_SR_EQUAL) + (equal token 'T_AND_EQUAL) + (equal token 'T_OR_EQUAL) + (equal token 'T_XOR_EQUAL) + (equal token 'T_COALESCE_EQUAL))) + (when phps-mode-functions-verbose + (message "Started assignment")) + (setq in-assignment t) + (push round-bracket-level in-assignment-round-bracket-level) + (push square-bracket-level in-assignment-square-bracket-level) + (setq in-assignment-level (1+ in-assignment-level))) ;; Keep track of object operators (when (and (equal token 'T_OBJECT_OPERATOR) diff --git a/phps-mode-test-functions.el b/phps-mode-test-functions.el index 685aff4..41ac8d0 100644 --- a/phps-mode-test-functions.el +++ b/phps-mode-test-functions.el @@ -322,11 +322,11 @@ ;; (message "Tokens: %s" phps-mode-lexer-tokens) (should (equal '((1 (0 0)) (2 (0 0)) (3 (1 0)) (4 (0 0)) (5 (0 0))) (phps-mode-test-hash-to-list (phps-mode-functions-get-lines-indent))))) - ;; (phps-mode-test-with-buffer - ;; "<?php\n$variable = array(\n 'random4' =>\n 'hello'\n);\n$variable = true;\n" - ;; "Array assignment with double arrow elements on four lines" - ;; ;; (message "Tokens: %s" phps-mode-lexer-tokens) - ;; (should (equal '((1 (0 0)) (2 (0 0)) (3 (1 0)) (4 (2 0)) (5 (0 0)) (6 (0 0))) (phps-mode-test-hash-to-list (phps-mode-functions-get-lines-indent))))) + (phps-mode-test-with-buffer + "<?php\n$variable = array(\n 'random4' =>\n 'hello'\n);" + "Array assignment with double arrow elements on four lines" + ;; (message "Tokens: %s" phps-mode-lexer-tokens) + (should (equal '((1 (0 0)) (2 (0 0)) (3 (1 0)) (4 (2 0)) (5 (0 0))) (phps-mode-test-hash-to-list (phps-mode-functions-get-lines-indent))))) (phps-mode-test-with-buffer "<?php\n$variable = array(\n 'random4');\n$variable = true;\n"