doomemacs/modules/lang/javascript
Henrik Lissner a70e634ebd
refactor(:lang): move tree-sitter init
Moved add-hook calls (for tree-sitter initialization) into their
respective modes' config blocks, or nearby, to be consistent with how
other, similar tools (like lsp!) are initialized, and does so at
runtime, rather than at expansion/compile time, which eval-when! caused.
2022-07-25 17:34:44 +02:00
..
autoload.el Guard skewer-*-mode checks in bound-and-true-p #3252 2020-05-31 22:34:42 -04:00
config.el refactor(:lang): move tree-sitter init 2022-07-25 17:34:44 +02:00
doctor.el docs(tree-sitter): add doctor checks for flag 2022-05-22 21:26:00 +01:00
packages.el bump: :lang 2022-03-31 21:09:38 +02:00
README.org docs(javascript): fix tide-rename-symbol binding 2021-10-03 12:47:39 +02:00

lang/javascript

Description

This module adds JavaScript and TypeScript support.

  • Code completion (tide)
  • REPL support (nodejs-repl)
  • Refactoring commands (js2-refactor)
  • Syntax checking (flycheck)
  • Browser code injection with skewer-mode
  • Coffeescript & JSX support
  • Jump-to-definitions and references support (xref)

Module Flags

  • +lsp Enables LangServer support for this module. You must have :tools lsp enabled for this to work, as well as the langserver (e.g. typescript-language-server) installed on your system.

Prerequisites

Many of this modules' plugins require node and either npm or yarn installed.

MacOS

brew install node

Arch Linux

sudo pacman --needed --noconfirm -S nodejs npm

openSUSE

sudo zypper install nodejs npm

Troubleshooting

tide-sort-completions-by-kind isn't respected

The :completion company module uses company-prescient to sort completion by frecency, which overrules specialized sorting provided by some company backends (like company-tide).

Appendix

Commands

JS2-mode

command key / ex command description
+javascript/open-repl :repl Open the NodeJS REPL (or send the current selection to it)
+javascript/skewer-this-buffer SPC m S Attaches a browser to the current buffer

Tide

command key / ex command description
tide-restart-server SPC m R Restart tide server
tide-reformat SPC m f Reformat region
tide-rename-symbol SPC m r r s Rename symbol at point
tide-organize-imports SPC m r o i Organize imports

Refactoring (js2-refactor-mode)

command key / ex command description
js2r-expand-node-at-point SPC m r e e Expand bracketed list according to node type at point
js2r-contract-node-at-point SPC m r c c Contract bracketed list according to node type at point
js2r-extract-function SPC m r e f Extracts the marked expressions out into a new named function.
js2r-extract-method SPC m r e m Extracts the marked expressions out into a new named method in an object literal.
js2r-toggle-function-expression-and-declaration SPC m r t f Toggle between function name() {} and var name = function ();
js2r-toggle-arrow-function-and-expression SPC m r t a Toggle between function expression to arrow function.
js2r-toggle-function-async SPC m r t s Toggle between an async and a regular function.
js2r-introduce-parameter SPC m r i p Changes the marked expression to a parameter in a local function.
js2r-localize-parameter SPC m r l p Changes a parameter to a local var in a local function.
js2r-wrap-buffer-in-iife SPC m r w i Wraps the entire buffer in an immediately invoked function expression
js2r-inject-global-in-iife SPC m 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 SPC m r a g Creates a *global * annotation if it is missing, and adds the var at point to it.
js2r-extract-var SPC m r e v Takes a marked expression and replaces it with a var.
js2r-extract-let SPC m r e l Similar to extract-var but uses a let-statement.
js2r-extract-const SPC m r e c Similar to extract-var but uses a const-statement.
js2r-inline-var SPC m r i v Replaces all instances of a variable with its initial value.
js2r-rename-var SPC m r r v Renames the variable on point and all occurrences in its lexical scope.
js2r-var-to-this SPC m r v t Changes local var a to be this.a instead.
js2r-arguments-to-object SPC m r a o Replaces arguments to a function call with an object literal of named arguments.
js2r-ternary-to-if SPC m r 3 i Converts ternary operator to if-statement.
js2r-split-var-declaration SPC m r s v Splits a var with multiple vars declared, into several var statements.
js2r-split-string SPC m r s s Splits a string.
js2r-string-to-template SPC m r s t Converts a string into a template string.
js2r-unwrap SPC m r u w Replaces the parent statement with the selected region.
js2r-log-this SPC m 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 SPC m r d t Adds a debug() statement for what is at point (or region).
js2r-forward-slurp SPC m r s l Moves the next statement into current function, if-statement, for-loop or while-loop.
js2r-forward-barf SPC m r b a Moves the last child out of current function, if-statement, for-loop or while-loop.
js2r-kill SPC m r k Kills to the end of the line, but does not cross semantic boundaries.

skewer-mode

general
command key / ex command description
skewer-eval-last-expression SPC m s E Evaluate last expression
skewer-eval-defun SPC m s e Evaluate function definition at point
skewer-load-buffer SPC m s f Load buffer into REPL
css
command key / ex command description
skewer-css-eval-current-declaration SPC m s e Evaluate declaration at point
skewer-css-eval-current-rule SPC m s r Evaluate rule at point
skewer-css-eval-buffer SPC m s b Evaluate buffer
skewer-css-clear-all SPC m s c Clear all rules
html
command key / ex command description
skewer-html-eval-tag SPC m s e Evaluate tag at point

npm-mode

command key / ex command description
npm-mode-npm-init SPC m n n Initialize npm project
npm-mode-npm-install SPC m n i Install npm package
npm-mode-npm-install-save SPC m n s Install npm package and save to package.json
npm-mode-npm-install-save-dev SPC m n d Install npm package and save to package.json as a dev dependency
npm-mode-npm-uninstall SPC m n u Uninstall npm package
npm-mode-npm-list SPC m n l List npm packages
npm-mode-npm-run SPC m n r Run npm task
npm-mode-visit-project-file SPC m n v Find file in npm project