mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-04 02:51:31 -08:00
php-ts-mode' depends on mhtml-ts-mode' instead of JS,CSS and HTML
The direct dependence on js-ts-mode, css-ts-mode and html-ts-mode has now been replaced by 'mhtml-ts-mode'. Additional benefits are: 1. Imenu now exposes symbols for all of all languages, 2. navigation now works correctly for all languages, 3. outline works for all languages. Additional new features are: 1. indentation of PHP in mixed buffers with HTML now works much better and allows three different behaviors, an option allows you to choose the behavior. 2. a new feature shows where PHP ini files are both locally and remotely, if the buffer is associated with a remote PHP file. * etc/NEWS: Mention the rationale for those changes, the new command, and the new options. * lisp/textmodes/mhtml-ts-mode.el (mhtml-ts-mode--range-settings): New variable that store range settings. (mhtml-ts-mode--treesit-aggregated-outline-predicate): New variable that store outline predicates. (mhtml-ts-mode): Use those two new variables. * lisp/progmodes/php-ts-mode.el: Update doc string. Removed old dependencies. (php-ts-mode--language-source-alist): Updated parsers version. (php-ts-mode-install-parsers): Removed old dependencies, now relies on (mhtml-ts-mode-install-parsers). Update doc string. (php-ts-mode-js-css-indent-offset): Update doc string. (php-ts-mode-css-fontify-colors): Removed option, now relies on 'php-ts-mode-css-fontify-colors'. (php-ts-mode-html-indent-offset): New user option. (php-ts-mode-html-relative-indent): New user option. (php-ts-mode-php-default-executable): Assume \"php\" instead of \"/usr/bin/php\" if 'executable-find' fails. (php-ts-mode-php-config): Fix tag. (php-ts-mode-find-sibling-rules): New user option with the rules for finding siblings of a file. (php-ts-mode-phpdoc-highlight-errors): New user option, if non-nil highlight unkown PHPDOC nodes. (php-ts-mode--indent-style-setter): Indentation fix. (php-ts-mode-indent-style): Indentation fix. (php-ts-mode-flymake-php): Indentation fix. (php-ts-mode--executable): Indentation fix. (php-ts-mode-show-ini): New command that show the locations of PHP ini files. (php-ts-mode--get-indent-style): Indentation fix. (php-ts-mode--set-indent-property): Indentation fix. (php-ts-mode-set-style): Indentation fix. (php-ts-mode--get-parser-ranges): Indentation fix. (php-ts-mode--possibly-braceless-keyword-re): Removed no longer used constant. (php-ts-mode--open-statement-group-heuristic): Removed no longer used function. (php-ts-mode--else-heuristic): Indentation fix. (php-ts-mode--first-sibling): Indentation fix. (php-ts-mode--js-css-tag-bol): Function removed, now using 'mhtml-ts-mode--js-css-tag-bol'. (php-ts-mode--parent-html-bol): Removed no longer used function. (php-ts-mode--parent-html-heuristic): Now more reliably handles the mixed indentation of PHP and HTML. The new option 'php-ts-mode-html-relative-indent' changes the behavior of the function. When 'php-ts-mode-html-relative-indent' is 't' the new option 'php-ts-mode-html-indent-offset' controls the offset of PHP code relative to HTML tags. (php-ts-mode--array-element-heuristic): Indentation fix. (php-ts-mode--anchor-prev-sibling): Indentation fix.. (php-ts-mode--indent-styles): The indentation rules for 'program' and 'text_interpolation' are now common to all indentation styles, thanks to the new version of 'php-ts-mode-arent-html-heuristic'. New rules for 'namespace_use_clause', 'use_declaration', 'use_list', 'attribute_group' and 'string_content'. (php-ts-mode--prettify-symbols-alist): New variable to support 'prettify-symbols-alist'. (php-ts-mode--test-visibility-modifier-operation-clause-p): Rename ... (php-ts-mode--test-visibility-modifier-operation-p): ... to this more correct name. (php-ts-mode--test-property-hook-clause-p): Rename ... (php-ts-mode--test-property-hook-p): ... to this more correct name. (php-ts-mode--test-relative-name-p): New function to test if 'relative_name' is supported by the PHP parser. (php-ts-mode--font-lock-settings): Use the new function for highlight 'relative_name'. Highlight 'error_suppression_expression'. Refactoring using the renamed functions. Indentation fix. (php-ts-mode--custom-html-font-lock-settings): Replace the rules with 'mhtml-ts-mode--treesit-font-lock-settings'. Fix docs string. (php-ts-mode--phpdoc-font-lock-settings): Added support for "array" and "list" array_type. New "phpdoc-error" feature to highlight unknown nodes via new 'php-ts-mode--phpdoc-fontify-error' function. (php-ts-mode--colorize-css-value): Removed function no longer used, now highlighting is handled directly by 'mhtml-ts-mode'. (php-ts-mode--phpdoc-fontify-error): New function used by 'php-ts-mode--phpdoc-font-lock-settings'. (php-ts-mode--parent-object): Indentation fix. (php-ts-mode--defun-name-separator): Indentation fix. (php-ts-mode--defun-object-name): Indentation fix. (php-ts-mode--defun-name): The function now also returns the defun name of 'mhtml-ts-mode'. (php-ts-mode--treesit-defun-type-regexp): New regexp for 'treesit-defun-type-regexp' support. (php-ts-mode--indent-defun): Indentation fix. (php-ts-mode--defun-valid-p): Fix indentation. (php-ts-mode--comment-indent-new-line): Indentation fix. (php-ts-mode--comment-current-plist): New local variable that stores the state of the PHP comment style. (php-ts-mode--comment-setup): The function now handles changing, for different languages, comment styles, using "php-ts-mode--comment-current-plist" to store and retrieve the comment style for the PHP language. (php-ts-mode-comment-setup): Now store the PHP comment style in 'php-ts-mode--comment-current-plist'. (php-ts-mode-menu): Indentation fix. (php-ts-mode): Replace dependency from JS, CSS and HTML width 'mhtml-ts-mode'. Navigation, Imenu and Outline now support PHP, HTML, Javascript and CSS. Added support for 'prettify-symbol-mode'. Added support for 'electric-layout-rules'. (php-ts-mode-run-php-webserver, php-ts-mode--webserver-read-args) (php-ts-mode--webserver-read-args, inferior-php-ts-mode, run-php) (inferior-php-ts-mode-startup, php-ts-mode-inferior--write-history) (php-ts-mode-send-region): Indentation fixes. (Bug#78994)
This commit is contained in:
parent
3fb8ffe61e
commit
e1fd7b5d89
3 changed files with 917 additions and 797 deletions
34
etc/NEWS
34
etc/NEWS
|
|
@ -931,6 +931,12 @@ option controls how much is indented for method chaining.
|
|||
|
||||
** PHP-ts mode
|
||||
|
||||
---
|
||||
*** 'php-ts-mode' now depends on 'mhtml-ts-mode'.
|
||||
The direct dependency on js-ts-mode, css-ts-mode and html-ts-mode has
|
||||
now been replaced by ‘mhtml-ts-mode’. Navigation, Outline and Imenu
|
||||
work for all languages and code maintenance is easier.
|
||||
|
||||
---
|
||||
*** 'php-ts-mode-run-php-webserver' can now accept a custom "php.ini" file.
|
||||
You can use the new optional argument CONFIG when calling
|
||||
|
|
@ -939,6 +945,34 @@ the built-in Web server. Interactively, when invoked with a prefix
|
|||
argument, 'php-ts-mode-run-php-webserver' prompts for the config file as
|
||||
well as for other connection parameters.
|
||||
|
||||
---
|
||||
*** The option 'php-ts-mode-css-fontify-colors' has been removed.
|
||||
'mhtml-ts-mode-css-fontify-colors' replaces this option.
|
||||
|
||||
---
|
||||
*** New user option 'php-ts-mode-html-relative-indent'.
|
||||
In buffers containing both PHP and HTML, this option allows you to
|
||||
define how the PHP code should be indented relative to the position of
|
||||
the HTML tags.
|
||||
|
||||
---
|
||||
*** New user option 'php-ts-mode-html-indent-offset'.
|
||||
Offset of PHP code block relative to HTML tags.
|
||||
|
||||
---
|
||||
*** New user option 'php-ts-mode-find-sibling-rules'.
|
||||
Rules for finding siblings of a PHP file.
|
||||
|
||||
---
|
||||
*** New user option 'php-ts-mode-phpdoc-highlight-errors'.
|
||||
When non nil, it highlights unknown PHPDOC tags using
|
||||
'font-lock-warning-face' so that the user can identify them more easily.
|
||||
|
||||
---
|
||||
*** New command 'php-ts-mode-show-ini'.
|
||||
Show the location of the PHP ini files, if the buffer is associated to a remote
|
||||
PHP file show the remote PHP ini files.
|
||||
|
||||
** Rust-ts mode
|
||||
|
||||
---
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -333,7 +333,8 @@ NODE and PARENT are ignored."
|
|||
"function_declaration"
|
||||
"lexical_declaration"
|
||||
"element"
|
||||
"rule_set"))
|
||||
"rule_set"
|
||||
"keyframe_block"))
|
||||
"Settings for `treesit-defun-type-regexp'.")
|
||||
|
||||
;; In order to support `prettify-symbols-mode', just `append' the prettify
|
||||
|
|
@ -348,13 +349,11 @@ NODE and PARENT are ignored."
|
|||
(defun mhtml-ts-mode--defun-name (node)
|
||||
"Return the defun name of NODE.
|
||||
Return nil if there is no name or if NODE is not a defun node."
|
||||
(let ((html-name (html-ts-mode--defun-name node))
|
||||
(js-name (js--treesit-defun-name node))
|
||||
(css-name (css--treesit-defun-name node)))
|
||||
(let ((lang (treesit-node-language node)))
|
||||
(cond
|
||||
(html-name html-name)
|
||||
(js-name js-name)
|
||||
(css-name css-name))))
|
||||
((eq lang 'html) (html-ts-mode--defun-name node))
|
||||
((eq lang 'javascript) (js--treesit-defun-name node))
|
||||
((eq lang 'css) (css--treesit-defun-name node)))))
|
||||
|
||||
(defvar-local mhtml-ts-mode--comment-current-lang nil)
|
||||
|
||||
|
|
@ -432,6 +431,41 @@ Calls REPORT-FN directly. Requires tidy."
|
|||
(process-send-region mhtml-ts-mode--flymake-process (point-min) (point-max))
|
||||
(process-send-eof mhtml-ts-mode--flymake-process)))))
|
||||
|
||||
(defvar mhtml-ts-mode--range-settings
|
||||
(append
|
||||
(treesit-range-rules
|
||||
:embed 'javascript
|
||||
:host 'html
|
||||
'((script_element
|
||||
(start_tag (tag_name))
|
||||
(raw_text) @cap))
|
||||
|
||||
;; Another rule could be added that when it matches an
|
||||
;; attribute_value that has as its parent an
|
||||
;; attribute_name "style" it captures it and then
|
||||
;; passes it to the css parser.
|
||||
:embed 'css
|
||||
:host 'html
|
||||
'((style_element
|
||||
(start_tag (tag_name))
|
||||
(raw_text) @cap)))
|
||||
|
||||
;; jsdoc is not mandatory for js-ts-mode, so we respect this by
|
||||
;; adding jsdoc range rules only when jsdoc is available.
|
||||
(when (treesit-ensure-installed 'jsdoc)
|
||||
(treesit-range-rules
|
||||
:embed 'jsdoc
|
||||
:host 'javascript
|
||||
:local t
|
||||
`(((comment) @cap
|
||||
(:match ,js--treesit-jsdoc-beginning-regexp @cap)))))))
|
||||
|
||||
(defvar mhtml-ts-mode--treesit-aggregated-outline-predicate
|
||||
`((html . ,#'html-ts-mode--outline-predicate)
|
||||
(javascript . ,js-ts-mode--outline-predicate)
|
||||
(css . ,css-ts-mode--outline-predicate))
|
||||
"Settings for `treesit-aggregated-outline-predicate'.")
|
||||
|
||||
;;;###autoload
|
||||
(define-derived-mode mhtml-ts-mode html-ts-mode
|
||||
'("HTML+" (:eval (let ((lang (treesit-language-at (point))))
|
||||
|
|
@ -475,35 +509,11 @@ Powered by tree-sitter."
|
|||
;; Multi-language modes must set the primary parser.
|
||||
(setq-local treesit-primary-parser (treesit-parser-create 'html))
|
||||
|
||||
(setq-local treesit-range-settings
|
||||
(treesit-range-rules
|
||||
:embed 'javascript
|
||||
:host 'html
|
||||
'((script_element
|
||||
(start_tag (tag_name))
|
||||
(raw_text) @cap))
|
||||
|
||||
;; Another rule could be added that when it matches an
|
||||
;; attribute_value that has as its parent an
|
||||
;; attribute_name "style" it captures it and then
|
||||
;; passes it to the css parser.
|
||||
:embed 'css
|
||||
:host 'html
|
||||
'((style_element
|
||||
(start_tag (tag_name))
|
||||
(raw_text) @cap))))
|
||||
(setq-local treesit-range-settings mhtml-ts-mode--range-settings)
|
||||
|
||||
;; jsdoc is not mandatory for js-ts-mode, so we respect this by
|
||||
;; adding jsdoc range rules only when jsdoc is available.
|
||||
(when (treesit-ensure-installed 'jsdoc)
|
||||
(setq-local treesit-range-settings
|
||||
(append treesit-range-settings
|
||||
(treesit-range-rules
|
||||
:embed 'jsdoc
|
||||
:host 'javascript
|
||||
:local t
|
||||
`(((comment) @cap
|
||||
(:match ,js--treesit-jsdoc-beginning-regexp @cap))))))
|
||||
(setq-local c-ts-common--comment-regexp
|
||||
js--treesit-jsdoc-comment-regexp))
|
||||
|
||||
|
|
@ -563,9 +573,7 @@ Powered by tree-sitter."
|
|||
mhtml-ts-mode--treesit-aggregated-simple-imenu-settings)
|
||||
|
||||
(setq-local treesit-aggregated-outline-predicate
|
||||
`((html . ,#'html-ts-mode--outline-predicate)
|
||||
(javascript . ,js-ts-mode--outline-predicate)
|
||||
(css . ,css-ts-mode--outline-predicate)))
|
||||
mhtml-ts-mode--treesit-aggregated-outline-predicate)
|
||||
|
||||
(treesit-major-mode-setup)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue