diff options
author | Jostein Kjønigsen <jostein@kjonigsen.net> | 2023-01-26 20:32:18 +0100 |
---|---|---|
committer | Theodor Thornhill <theo@thornhill.no> | 2023-01-27 13:50:13 +0100 |
commit | 00629c039643a0471143205c70e8a078fc3a9d86 (patch) | |
tree | 09b9cdb3e763351a73f313c636c31dc2f704a62c /lisp/progmodes/js.el | |
parent | fd145499bbd7650d915c6e5e1ac95fd89738a6b9 (diff) | |
download | emacs-00629c039643a0471143205c70e8a078fc3a9d86.tar.gz |
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.
Diffstat (limited to 'lisp/progmodes/js.el')
-rw-r--r-- | lisp/progmodes/js.el | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el index b5c912b8b0d..05d69c314bb 100644 --- a/lisp/progmodes/js.el +++ b/lisp/progmodes/js.el @@ -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 |