spacemacs/layers/+lang/typescript/README.org

159 lines
5.1 KiB
Org Mode
Raw Normal View History

#+TITLE: TypeScript layer
2015-06-10 16:44:30 +00:00
[[file:img/TypeScript.png]]
2018-09-19 03:54:47 +00:00
* Table of Contents :TOC_4_gh:noexport:
2017-05-22 14:16:12 +00:00
- [[#description][Description]]
- [[#features][Features:]]
2017-05-22 14:16:12 +00:00
- [[#install][Install]]
- [[#pre-requisites][Pre-requisites]]
- [[#choosing-a-backend][Choosing a backend]]
- [[#backends][Backends]]
- [[#tide][Tide]]
- [[#notes][Notes]]
- [[#language-server-protocol][Language Server Protocol]]
2017-05-22 14:16:12 +00:00
- [[#key-bindings][Key bindings]]
- [[#typescript-major-mode][Typescript Major Mode]]
- [[#reference-major-mode][Reference Major Mode]]
2015-06-10 16:44:30 +00:00
* Description
This layer adds support for TypeScript and TSX editing.
2015-06-10 16:44:30 +00:00
** Features:
- Multiple backends support: Tide and LSP
- Eldoc-mode
2016-06-10 04:09:42 +00:00
- Documentation at point
- Auto complete
- Flycheck with linter
- Jump to definition, Jump to type definition
- Find occurrences (Imenu-mode)
- Rename symbol
- tsx mode
- formatting
- TypeScript playground integration
2015-06-10 16:44:30 +00:00
* Install
To use this configuration layer, add it to your =~/.spacemacs=. You will need to
add =typescript= to the existing =dotspacemacs-configuration-layers= list in this
file.
2015-06-10 16:44:30 +00:00
#+BEGIN_SRC emacs-lisp
2018-09-19 03:54:47 +00:00
(setq-default dotspacemacs-configuration-layers '(typescript))
#+END_SRC
2015-06-10 16:44:30 +00:00
If you need formatting on save:
#+BEGIN_SRC emacs-lisp
2018-09-19 03:54:47 +00:00
(setq-default dotspacemacs-configuration-layers '(
(typescript :variables
typescript-fmt-on-save t)))
2015-06-10 16:44:30 +00:00
#+END_SRC
2016-05-02 09:11:16 +00:00
You can choose formatting tool:
#+BEGIN_SRC emacs-lisp
2018-09-19 03:54:47 +00:00
(setq-default dotspacemacs-configuration-layers '(
(typescript :variables
typescript-fmt-tool 'typescript-formatter)))
2016-05-02 09:11:16 +00:00
#+END_SRC
2018-09-19 03:54:47 +00:00
Default is ='tide=.
2016-05-02 09:11:16 +00:00
** Pre-requisites
You will need =node.js v0.12.0= or greater.
If you want linting run:
#+BEGIN_SRC shell
2018-09-19 03:54:47 +00:00
npm install -g typescript tslint
#+END_SRC
If you want to use typescript-formatter for formatting run:
#+BEGIN_SRC shell
2018-09-19 03:54:47 +00:00
npm install -g typescript-formatter
#+END_SRC
For best results, make sure that the =auto-completion= (company) and =html=
layers are enabled.
** Choosing a backend
To choose a default backend set the layer variable =typescript-backend=:
#+BEGIN_SRC elisp
2018-09-19 03:54:47 +00:00
(setq-default dotspacemacs-configuration-layers '(
(typescript :variables typescript-backend 'tide)))
#+END_SRC
Backend can be chosen on a per project basis using directory local variables
(files named =.dir-locals.el= at the root of a project), an example to use the
=lsp= backend:
#+BEGIN_SRC elisp
2018-09-19 03:54:47 +00:00
;;; Directory Local Variables
;;; For more information see (info "(emacs) Directory Variables")
2018-09-19 03:54:47 +00:00
((typescript-mode (typescript-backend . lsp)))
#+END_SRC
*Note:* you can easily add a directory local variable with ~SPC f v d~.
* Backends
** Tide
Tide comes with an embedded Typescript server, it is recommended to use the
server intalled by =npm= instead. To do so set the variable
=tide-tsserver-executable= to the path of the =tsserver= executable.
For example:
#+BEGIN_SRC emacs-lisp
2018-09-19 03:54:47 +00:00
(setq-default dotspacemacs-configuration-layers '(
(typescript :variables
tide-tsserver-executable "/usr/local/bin/tsserver")))
#+END_SRC
*** Notes
Make sure to add [[https://github.com/Microsoft/TypeScript/wiki/tsconfig.json][tsconfig.json]] in the project root folder.
tsserver mangles output sometimes [[https://github.com/Microsoft/TypeScript/issues/2758][issue - #2758]], which will result in json parse
error. Try node version 0.12.x if you get this error.
Send to playground requires browser.
2018-09-19 03:54:47 +00:00
Currently tsserver doesnt pickup tsconfig.json file changes. You might need to
restart server after editing it.
** Language Server Protocol
You have to install the following dependencies with npm.
#+BEGIN_SRC shell
2018-09-19 03:54:47 +00:00
npm i -g typescript typescript-language-server
#+END_SRC
2015-06-10 16:44:30 +00:00
* Key bindings
** Typescript Major Mode
| Key binding | Description |
|-------------+--------------------------------------------------------------|
| ~SPC m =~ | reformat the buffer |
| ~SPC m E d~ | add =tslitn-disable-next-line= at point |
| ~SPC m E e~ | fix thing at point |
| ~SPC m g b~ | jump back |
2018-09-19 03:54:47 +00:00
| ~SPC m g g~ | jump to entitys definition |
| ~SPC m g t~ | jump to entitys type definition |
| ~SPC m g u~ | references |
| ~SPC m h h~ | documentation at point |
| ~SPC m r i~ | organize imports |
| ~SPC m r r~ | rename symbol |
| ~SPC m r f~ | rename file |
| ~SPC m s p~ | send selected region or current buffer to the web playground |
2018-05-02 15:42:14 +00:00
| ~SPC m s r~ | restart server |
** Reference Major Mode
| Key binding | Description |
|-------------+-------------------------|
| ~C-j~ | find previous reference |
| ~C-k~ | find next reference |
| ~C-l~ | goto reference |