mirror of
https://github.com/doomemacs/doomemacs
synced 2025-09-02 14:53:38 -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>
80 lines
2.8 KiB
Org Mode
80 lines
2.8 KiB
Org Mode
#+title: :lang javascript
|
|
#+subtitle: all(hope(abandon(ye(who(enter(here))))))
|
|
#+created: January 16, 2017
|
|
#+since: 1.3
|
|
|
|
* Description :unfold:
|
|
This module adds [[https://www.javascript.com/][JavaScript]] and [[https://www.typescriptlang.org/][TypeScript]] support to Doom Emacs.
|
|
|
|
- JSX/TSX support (requires [[doom-module:+tree-sitter]] and Emacs 29.1+)
|
|
- LSP Integration
|
|
- Code completion (with [[doom-module::completion corfu]] (recommended) or
|
|
[[doom-module::completion company]])
|
|
- Syntax checking (with [[doom-module::checkers syntax]])
|
|
- Jump-to-definitions and references support
|
|
- Code formatting (with [[doom-module::editor format]] and [[https://prettier.io/docs/en/install.html][prettier]])
|
|
- REPL support (with [[doom-package:nodejs-repl]] and/or [[doom-module::tools eval]])
|
|
|
|
** Maintainers
|
|
- [[doom-user:][@elken]]
|
|
- [[doom-user:][@hlissner]]
|
|
- [[doom-user:][@iyefrat]]
|
|
|
|
[[doom-contrib-maintainer:][Become a maintainer?]]
|
|
|
|
** Module flags
|
|
- +lsp ::
|
|
Enable LSP support for ~js-mode~, ~js-ts-mode~, ~typesript-mode~, and
|
|
~typescript-ts-mode. Requires [[doom-module::tools lsp]] and a langserver
|
|
(supports ts-ls and deno-ls).
|
|
- +tree-sitter ::
|
|
Leverages tree-sitter for better syntax highlighting and structural text
|
|
editing. Requires [[doom-module::tools tree-sitter]]. Requires Emacs 29.1+.
|
|
Required for JSX/TSX support.
|
|
|
|
** Packages
|
|
- [[doom-package:nodejs-repl]]
|
|
- [[doom-package:typescript-mode]] unless [[doom-module:+tree-sitter]]
|
|
|
|
** TODO Hacks
|
|
#+begin_quote
|
|
This module's hacks haven't been documented yet. [[doom-contrib-module:][Document them?]]
|
|
#+end_quote
|
|
|
|
** TODO Changelog
|
|
# This section will be machine generated. Don't edit it by hand.
|
|
/This module does not have a changelog yet./
|
|
|
|
* Installation
|
|
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
|
|
|
|
This module requires [[https://nodejs.org/en/][NodeJS]] and one of [[https://www.npmjs.com/][NPM]] or [[https://yarnpkg.com/][Yarn]] in your =$PATH=.
|
|
|
|
- MacOS: ~$ brew install node~
|
|
- Arch Linux: ~$ pacman --needed --noconfirm -S nodejs npm~
|
|
- openSUSE: ~$ zypper install nodejs npm~
|
|
|
|
** Formatter
|
|
Formatting is handled using the [[doom-module::editor format]] module via [[https://prettier.io/docs/en/install.html][prettier]].
|
|
|
|
* TODO Usage
|
|
#+begin_quote
|
|
This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
|
|
#+end_quote
|
|
|
|
* TODO Configuration
|
|
#+begin_quote
|
|
This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
|
|
#+end_quote
|
|
|
|
* Troubleshooting
|
|
/There are no known problems with this module./ [[doom-report:][Report one?]]
|
|
|
|
* Frequently asked questions
|
|
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
|
|
|
|
* TODO Appendix
|
|
#+begin_quote
|
|
This module has no appendix yet. [[doom-contrib-module:][Write one?]]
|
|
#+end_quote
|