This module adds JavaScript and TypeScript support to Doom Emacs.
- Code completion (doom-package:tide)
- REPL support (doom-package:nodejs-repl)
- Refactoring commands (doom-package:js2-refactor)
- Syntax checking (doom-package:flycheck)
- Browser code injection with doom-package:skewer-mode
- Coffeescript & JSX support
- Jump-to-definitions and references support (doom-package:xref)
- @elken
- @hlissner
- @iyefrat
Become a maintainer?
- +lsp
-
Enable LSP support for
js2-mode
,rjsx-mode
, JS inweb-mode
, andtypescript-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.
- doom-package:js2-refactor
- doom-package:nodejs-repl
- doom-package:npm-mode
- doom-package:rjsx-mode
- doom-package:skewer-mode (DEPRECATED)
- doom-package:tide
- doom-package:typescript-mode
- doom-package:xref-js2 if doom-module::tools lookup
🔨 This module’s hacks haven’t been documented yet. Document them?
This module does not have a changelog yet.
Enable this module in your doom!
block.
This module requires NodeJS and one of NPM or Yarn in your $PATH
.
- MacOS:
$ brew install node
- Arch Linux:
$ pacman --needed --noconfirm -S nodejs npm
- openSUSE:
$ zypper install nodejs npm
🔨 This module’s usage documentation is incomplete. Complete it?
rjsx-mode
is used for all javascript buffers.
command | key / ex command | description |
---|---|---|
+javascript/open-repl | :repl | Open the NodeJS REPL (or send the current selection to it) |
+javascript/skewer-this-buffer | <localleader> S | Attaches a browser to the current buffer |
command | key / ex command | description |
---|---|---|
tide-restart-server | <localleader> R | Restart tide server |
tide-reformat | <localleader> f | Reformat region |
tide-rename-symbol | <localleader> r r s | Rename symbol at point |
tide-organize-imports | <localleader> r o i | Organize imports |
command | key / ex command | description |
---|---|---|
js2r-expand-node-at-point | <localleader> r e e | Expand bracketed list according to node type at point |
js2r-contract-node-at-point | <localleader> r c c | Contract bracketed list according to node type at point |
js2r-extract-function | <localleader> r e f | Extracts the marked expressions out into a new named function. |
js2r-extract-method | <localleader> r e m | Extracts the marked expressions out into a new named method in an object literal. |
js2r-toggle-function-expression-and-declaration | <localleader> r t f | Toggle between function name() {} and var name = function (); |
js2r-toggle-arrow-function-and-expression | <localleader> r t a | Toggle between function expression to arrow function. |
js2r-toggle-function-async | <localleader> r t s | Toggle between an async and a regular function. |
js2r-introduce-parameter | <localleader> r i p | Changes the marked expression to a parameter in a local function. |
js2r-localize-parameter | <localleader> r l p | Changes a parameter to a local var in a local function. |
js2r-wrap-buffer-in-iife | <localleader> r w i | Wraps the entire buffer in an immediately invoked function expression |
js2r-inject-global-in-iife | <localleader> r i g | Creates a shortcut for a marked global by injecting it in the wrapping immediately invoked function expression |
js2r-add-to-globals-annotation | <localleader> r a g | Creates a *global * annotation if it is missing, and adds the var at point to it. |
js2r-extract-var | <localleader> r e v | Takes a marked expression and replaces it with a var. |
js2r-extract-let | <localleader> r e l | Similar to extract-var but uses a let-statement. |
js2r-extract-const | <localleader> r e c | Similar to extract-var but uses a const-statement. |
js2r-inline-var | <localleader> r i v | Replaces all instances of a variable with its initial value. |
js2r-rename-var | <localleader> r r v | Renames the variable on point and all occurrences in its lexical scope. |
js2r-var-to-this | <localleader> r v t | Changes local var a to be this.a instead. |
js2r-arguments-to-object | <localleader> r a o | Replaces arguments to a function call with an object literal of named arguments. |
js2r-ternary-to-if | <localleader> r 3 i | Converts ternary operator to if-statement. |
js2r-split-var-declaration | <localleader> r s v | Splits a var with multiple vars declared, into several var statements. |
js2r-split-string | <localleader> r s s | Splits a string. |
js2r-string-to-template | <localleader> r s t | Converts a string into a template string. |
js2r-unwrap | <localleader> r u w | Replaces the parent statement with the selected region. |
js2r-log-this | <localleader> r l t | Adds a console.log() statement for what is at point (or region). With a prefix argument, use JSON pretty-printing. |
js2r-debug-this | <localleader> r d t | Adds a debug() statement for what is at point (or region). |
js2r-forward-slurp | <localleader> r s l | Moves the next statement into current function, if-statement, for-loop or while-loop. |
js2r-forward-barf | <localleader> r b a | Moves the last child out of current function, if-statement, for-loop or while-loop. |
js2r-kill | <localleader> r k | Kills to the end of the line, but does not cross semantic boundaries. |
command | key / ex command | description |
---|---|---|
skewer-eval-last-expression | <localleader> s E | Evaluate last expression |
skewer-eval-defun | <localleader> s e | Evaluate function definition at point |
skewer-load-buffer | <localleader> s f | Load buffer into REPL |
command | key / ex command | description |
---|---|---|
skewer-css-eval-current-declaration | <localleader> s e | Evaluate declaration at point |
skewer-css-eval-current-rule | <localleader> s r | Evaluate rule at point |
skewer-css-eval-buffer | <localleader> s b | Evaluate buffer |
skewer-css-clear-all | <localleader> s c | Clear all rules |
command | key / ex command | description |
---|---|---|
skewer-html-eval-tag | <localleader> s e | Evaluate tag at point |
command | key / ex command | description |
---|---|---|
npm-mode-npm-init | <localleader> n n | Initialize npm project |
npm-mode-npm-install | <localleader> n i | Install npm package |
npm-mode-npm-install-save | <localleader> n s | Install npm package and save to package.json |
npm-mode-npm-install-save-dev | <localleader> n d | Install npm package and save to package.json as a dev dependency |
npm-mode-npm-uninstall | <localleader> n u | Uninstall npm package |
npm-mode-npm-list | <localleader> n l | List npm packages |
npm-mode-npm-run | <localleader> n r | Run npm task |
npm-mode-visit-project-file | <localleader> n v | Find file in npm project |
🔨 This module has no configuration documentation yet. Write some?
There are no known problems with this module. Report one?
This module has no FAQs yet. Ask one?
🔨 This module has no appendix yet. Write one?