mirror of
https://github.com/doomemacs/doomemacs
synced 2025-08-31 14:43:40 -05:00
BREAKING CHANGE: This commit removes a number of core packages and features from this module and only replaces a handful of them, so that we can lean more on LSP and tree-sitter. To be specific: - We used to rely on `rjsx-mode` (derived from js2-mode) for total JS/JSX support (though imperfect; Emacs was starved for options at the time). This has now been replaced with `js-ts-mode` (built-in after Emacs 29), falling back to `js-mode` (very rudimentary, but a decent fallback). - This also meant the removal of `js2-mode`, which `skewer-mode`, `js2-refactor`, and `xref-js2` depended on, so those were removed too, and have *somewhat* been replaced with LSP integration (offers jump-to-definition/references and *some* refactoring actions, but no replacement for skewer's functionality). - Typescript support no longer relies on the jury-rigged, web-mode-derived major mode (because TSX support in the upstream `typescript-mode` isn't great). We now use `typescript-ts-mode` (built-in into Emacs 29.1+), falling back to `typescript-mode`. - JSX/TSX support now *requires* tree-sitter (and Emacs 29.1+), where `tsx-ts-mode` is available and outshines all the alternatives (at the time of writing). Due to the absolute chaos that is webdev, this module sacrifices some of the graceful-degradation I've implemented for other modules and creates a hard requirement on tree-sitter and Emacs 29.1+ for JSX/TSX. It still tries to degrade gracefully for plain JS and TS, but the module's doctor and docs will actively recommend tree-sitter. Close: #5278 Fix: #6172 Fix: #7042 Close: #8447 Co-authored-by: ribaricplusplus <ribaricplusplus@users.noreply.github.com>
15 lines
523 B
EmacsLisp
15 lines
523 B
EmacsLisp
;; -*- lexical-binding: t; no-byte-compile: t; -*-
|
|
;;; lang/javascript/doctor.el
|
|
|
|
(assert! (or (not (modulep! +lsp))
|
|
(modulep! :tools lsp))
|
|
"This module requires (:tools lsp)")
|
|
|
|
(assert! (or (not (modulep! +tree-sitter))
|
|
(modulep! :tools tree-sitter))
|
|
"This module requires (:tools tree-sitter)")
|
|
|
|
(unless (modulep! +tree-sitter)
|
|
(warn! "Typescript support is degraded without +tree-sitter (and Emacs 29+)")
|
|
(warn! "No JSX/TSX support without +tree-sitter (and Emacs 29+)"))
|