diff --git a/php-mode.el b/php-mode.el index 8d220d25..ceaef2e0 100644 --- a/php-mode.el +++ b/php-mode.el @@ -636,8 +636,11 @@ might be to handle switch and goto labels differently." (defun php-lineup-cascaded-calls (langelem) "Line up chained methods using `c-lineup-cascaded-calls', but only if the setting is enabled" - (when php-mode-lineup-cascaded-calls - (c-lineup-cascaded-calls langelem))) + (if php-mode-lineup-cascaded-calls + (c-lineup-cascaded-calls langelem) + (save-excursion + (beginning-of-line) + (if (looking-at-p "\\s-*->") '+ nil)))) (c-add-style "php" diff --git a/tests/indent/issue-623.php b/tests/indent/issue-623.php new file mode 100644 index 00000000..d1059fef --- /dev/null +++ b/tests/indent/issue-623.php @@ -0,0 +1,17 @@ +something() + ->something(); // ###php-mode-test### ((indent 4)) + +var_dump( + $object->something() // ###php-mode-test### ((indent 4)) + ->something(), // ###php-mode-test### ((indent 8)) +); // ###php-mode-test### ((indent 0)) + +$arr = [ + $object->something() // ###php-mode-test### ((indent 4)) + /* comment */ ->something() // ###php-mode-test### ((indent 4)) + ->something(), // ###php-mode-test### ((indent 8)) +]; // ###php-mode-test### ((indent 0)) diff --git a/tests/php-mode-test.el b/tests/php-mode-test.el index 4b3598e9..670304a9 100644 --- a/tests/php-mode-test.el +++ b/tests/php-mode-test.el @@ -645,6 +645,10 @@ Meant for `php-mode-test-issue-503'." (goto-char (point-min)) (should (eq (php-mode-test-in-function-p nil) nil)))) +(ert-deftest php-mode-test-issue-623 () + "Proper alignment object -> accessor." + (with-php-mode-test ("indent/issue-623.php" :indent t :magic t))) + (ert-deftest php-mode-test-php74 () "Test highlighting language constructs added in PHP 7.4." (with-php-mode-test ("7.4/arrow-function.php" :faces t))