Fix 'php-ts-mode': better indentation and font locking
authorVincenzo Pupillo <v.pupillo@gmail.com>
Thu, 10 Oct 2024 14:06:37 +0000 (16:06 +0200)
committerEli Zaretskii <eliz@gnu.org>
Sat, 19 Oct 2024 13:11:32 +0000 (16:11 +0300)
commit4e0cb960dbd95c8001b08c62682b085292184b87
tree3f825cdc913e491a570e669e4e80641882c4f899
parent902029b1410ef9128380f9a307721ea6ab008529
Fix 'php-ts-mode': better indentation and font locking

Incomplete compound_statement or colon_block (statement-group
without a closing brace or closing keyword) that are not inside
a function or method are not recognized as such by tree-sitter-php.
A new function 'php-ts-mode--open-statement-group-heuristic'
handles this case.  Font locking of magic methods and better
support for alternative control structure syntax.
Support for latest grammar version.
* lisp/progmodes/php-ts-mode.el
(php-ts-mode--language-source-alist): Updated grammar version.
(php-ts-mode--possibly-braceless-keyword-re): Regular expression
for braceless keyword.
(php-ts-mode--open-statement-group-heuristic): New function.
(php-ts-mode--parent-html-bol): Use the new function and doc fix.
(php-ts-mode--parent-html-heuristic): Use the new function and doc
fix.
(php-ts-mode--indent-styles): Use the new function and add
'colon_block' support.
(php-ts-mode--class-magic-methods): New predefined magic methods
list.
(php-ts-mode--test-namespace-name-as-prefix-p): Doc fix.
(php-ts-mode--test-namespace-aliasing-clause-p): Fix the test and
doc.
(php-ts-mode--test-namespace-use-group-clause-p): Doc fix.
(php-ts-mode--test-visibility-modifier-operation-clause-p): New
function for the new asymmetric property visibility feature of
PHP 8.4.
(php-ts-mode--font-lock-settings): Font lock for class magic methods
and alternative syntax.  Better font lock for 'instanceof'.  Use
'font-lock-function-call-face' for scoped and member call expression.
(bug#73779)
lisp/progmodes/php-ts-mode.el