Fix errors in fontification of JavaScript import-statements (bug#61083)

Currently js-ts-mode handles imports with aliases incorrectly. To be
consistent with how we otherwise do things, we should only highlight
the variable which is new and/or introduced, in this case "someAlias".

Attached is a patch which fontifies import-declarations somewhat more
correctly.

The following cases have been tested and all fontify properly:

import gnu from "fsf";              // highlights gnu
import { gnu2 } from "fsf2";        // highlights gnu2
import { gnu as gnu3 } from "fsf3"; // highlights gnu3
import * as gnu4 from "fsf4";       // highlights gnu4

* lisp/progmodes/js.el (js--treesit-font-lock-settings): Add new
import_clause rules that adhere to the comment above.
This commit is contained in:
Jostein Kjønigsen 2023-01-26 20:32:18 +01:00 committed by Theodor Thornhill
parent fd145499bb
commit 00629c0396

View file

@ -3546,9 +3546,18 @@ This function is intended for use in `after-change-functions'."
(identifier)
@font-lock-function-name-face)
value: (array (number) (function)))
;; full module imports
(import_clause (identifier) @font-lock-variable-name-face)
(import_clause (named_imports (import_specifier (identifier))
@font-lock-variable-name-face)))
;; named imports with aliasing
(import_clause (named_imports (import_specifier
alias: (identifier) @font-lock-variable-name-face)))
;; named imports without aliasing
(import_clause (named_imports (import_specifier
!alias
name: (identifier) @font-lock-variable-name-face)))
;; full namespace import (* as alias)
(import_clause (namespace_import (identifier) @font-lock-variable-name-face)))
:language 'javascript
:feature 'property