:lang javascript

all(hope(abandon(ye(who(enter(here))))))

1. 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)

1.1. Maintainers

This module has no dedicated maintainers. Become a maintainer?

1.2. Module flags

+lsp
Enables LSP support. Requires :tools lsp and a langserver (e.g. typescript-language-server).

1.4. Hacks

No hacks documented for this module.

2. Prerequisites

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

2.1. MacOS

brew install node

2.2. Arch Linux

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

2.3. openSUSE

sudo zypper install nodejs npm

3. TODO Usage

3.1. Commands

3.1.1. 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

3.1.2. 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

3.1.3. 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.

3.1.4. skewer-mode

3.1.4.1. 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
3.1.4.2. 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
3.1.4.3. html
command key / ex command description
skewer-html-eval-tag SPC m s e Evaluate tag at point

3.1.5. 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

4. TODO Configuration

This module has no configuration documentation yet. Write some?

5. Troubleshooting

There are no known problems with this module. Report one?

6. TODO Appendix

This module has no appendix yet. Write one?