Subject: 30.0.92; php-ts-mode: Some fixes for indentation and syntax highlighting.
From: Vincenzo Pupillo <[email-masked]>
To: [email-masked]
Date: Thu, 07 Nov 2024 15:23:03 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi, 
this patch fixes some issues with both indentation and syntax highlighting.
Has been tested with both the latest and earlier versions of the grammar.

Thank you.

V.

From 693e78567f481a9749ddf8db7a3e144245bac102 Mon Sep 17 00:00:00 2001
From: Vincenzo Pupillo <[email-masked]>
Date: Thu, 7 Nov 2024 12:55:50 +0100
Subject: [PATCH] Improved font-locking and indentation.

* lisp/progmodes/php-ts-mode.el
(php-ts-mode--language-source-alist): Updated to latest version of PHP
grammar.
(php-ts-mode--indent-styles): namespace_use_declaration is now correctly
indented.
(php-ts-mode--operators): Support of the "argument unpacking operator".
(php-ts-mode--font-lock-settings): nullsafe_member_call_expression is
now highlighted correctly.
(php-ts-mode--comment-indent-new-line): Delete trailing whitespace
before inserting newline (see bug#73900 for more information).
---
 lisp/progmodes/php-ts-mode.el | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/lisp/progmodes/php-ts-mode.el b/lisp/progmodes/php-ts-mode.el
index 14a487d3f7a..d8a3f60508b 100644
--- a/lisp/progmodes/php-ts-mode.el
+++ b/lisp/progmodes/php-ts-mode.el
@@ -84,7 +84,7 @@
 
 ;;; Install treesitter language parsers
 (defvar php-ts-mode--language-source-alist
-  '((php . ("https://github.com/tree-sitter/tree-sitter-php" "v0.23.4" "php/src"))
+  '((php . ("https://github.com/tree-sitter/tree-sitter-php" "v0.23.5" "php/src"))
     (phpdoc . ("https://github.com/claytonrcarter/tree-sitter-phpdoc"))
     (html . ("https://github.com/tree-sitter/tree-sitter-html"  "v0.23.0"))
     (javascript . ("https://github.com/tree-sitter/tree-sitter-javascript" "v0.23.0"))
@@ -640,6 +640,7 @@ php-ts-mode--indent-styles
            ((query "(class_interface_clause (qualified_name) @indent)")
             parent-bol php-ts-mode-indent-offset)
            ((parent-is "class_declaration") parent-bol 0)
+	   ((parent-is "namespace_use_declaration") parent-bol php-ts-mode-indent-offset)
            ((parent-is "namespace_use_group") parent-bol php-ts-mode-indent-offset)
            ((parent-is "function_definition") parent-bol 0)
            ((parent-is "member_call_expression") first-sibling php-ts-mode-indent-offset)
@@ -781,7 +782,7 @@ php-ts-mode--operators
   '("--" "**=" "*=" "/=" "%=" "+=" "-=" ".=" "<<=" ">>=" "&=" "^="
     "|=" "??"  "??=" "||" "&&" "|" "^" "&" "==" "!=" "<>" "===" "!=="
     "<" ">" "<=" ">=" "<=>" "<<" ">>" "+" "-" "." "*" "**" "/" "%"
-    "->" "?->")
+    "->" "?->" "...")
   "PHP operators for tree-sitter font-locking.")
 
 (defconst php-ts-mode--predefined-constant
@@ -993,7 +994,7 @@ php-ts-mode--font-lock-settings
      (member_call_expression
       name: (_) @font-lock-function-call-face)
      (nullsafe_member_call_expression
-      name: (_) @font-lock-constant-face))
+      name: (_) @font-lock-function-call-face))
 
    :language 'php
    :feature 'argument
@@ -1266,8 +1267,14 @@ php-ts-mode--comment-indent-new-line
          (line-end-position)
          t nil))
       (let ((offset (- (match-beginning 0) (line-beginning-position)))
-            (comment-prefix (match-string 0)))
-        (if soft (insert-and-inherit ?\n) (newline 1))
+            (comment-prefix (match-string 0))
+	    (insert-line-break
+             (lambda ()
+	       (delete-horizontal-space)
+	       (if soft
+		   (insert-and-inherit ?\n)
+		 (newline  1)))))
+	(funcall insert-line-break)
         (delete-region (line-beginning-position) (point))
         (insert
          (make-string offset ?\s)
-- 
2.47.0