Commit graph

88 commits

Author SHA1 Message Date
thanhvg
e3b6464649
[core][tide][lsp] improve spacemacs/set-leader-keys-for-minor-mode and apply it to tide and lsp layers (#14141)
* [core][keybinng] improve minor mode binding

This commit added add a new function defun spacemacs/declare-prefix-for-minor-mode
and improved spacemacs/set-leader-keys-for-minor-mode.

`which-key` package recently introduced a new api
which-key-add-keymap-based-replacements which improves perfomance and allows
prefix and namings to be stored directly in keymap. This is a great improvement.

With this new api we now make change to spacemacs/declare-prefix-for-minor-mode
to manage prefix also. For example:

  (spacemacs/set-leader-keys-for-minor-mode 'lsp-mode
    "=" "format"
    "=b" #'lsp-format-buffer)

Before we had to use another api to bind prefix
spacemacs/declare-prefix-for-mode which only works on major-mode. As lsp-mode is
a minor mode this api causes a lot of problems to which-key performance. An
example is https://github.com/syl20bnr/spacemacs/issues/12455 which led to my
hack in https://github.com/syl20bnr/spacemacs/pull/12474.

The improved spacemacs/set-leader-keys-for-minor-mode will take care of both
prefix and key naming for the minor mode. This will allows us to have a better
set up for dynamic minor modes such as lsp-mode, tide-mode etc.

Also another api is created to make prefix for minor mode:
spacemacs/declare-prefix-for-minor-mode.

Usage:
(spacemacs/declare-prefix-for-minor-mode 'tide-mode "E" "errors")"

* [tide] improve prefix

* [lsp] improve prefix
2020-11-21 07:34:55 +01:00
Maximilian Wolff
1fd90fc1dc
Update instructions for dap integration and update existing layers
The previous way of adding dap to a layer did add the mode
unconditionally to `spacemacs--dap-supported-modes` causing
dap bindings to be added also when no lsp backend was used.
2020-05-16 23:40:38 +02:00
Thanh Vuong
c866f61fdb [javascript] proper hook setting for js-doc
move stray execution in fn into package init
2020-05-08 23:27:20 +02:00
Maximilian Wolff
f971ee7120
[typescript] Require tide layer as it is used as formatter by default
I have also updated the installation instructions as tsserver is not
longer available as single executable on npm. Also I've made sure that
modes register for tide backend only if it is really intended to.
2020-03-08 13:05:31 +01:00
Thanh Vuong
97724081bc
Tide layer
Allows use of standalone typescript server for js/ts development
Co-Authored-By: Maximilian Wolff <smile13241324@gmail.com>
2020-03-08 12:29:04 +01:00
Seong Yong-ju
889a40cdc3 Add eslint_d support for JavaScript, React, TypeScript modes 2019-11-22 18:03:42 +01:00
syl20bnr
9606dd344e [dap] Refactor configuration dap config in layers
* use local-vars-hook coupled to setup function for dap
* define new private layer variable `spacemacs--dap-supported-modes` to
  configure key bindings. This allows to move the key bindings definition from
  `funcs.el` to `packages.el`
* remove duplication of DAP key bindings in READMEs by pointing to the dap layer
  documentation
* alphabetically sort package configuration
2019-09-30 00:34:26 -04:00
Thanh Vuong
ce30353b52 js, ts and react layers: linter option
this PR does two things for js-related layers:

(i) add option to disable lsp linter
javascript-lsp-linter for javascript and react layers
typescript-lsp-linter for typescript layer
when the value is t, lsp linter will be used in the layer
when nil, let flycheck pick up the best linters available such
as eslint

(ii) when syntax-checking(flycheck) layer is installed, then set
next-error-function value in react and javascript layers to nil, so that
spacemacs next-error, previous-error work A desciption of this issue can be
found at https://github.com/syl20bnr/spacemacs/issues/8078

Co-Authored-By: duianto <otnaiud@gmail.com>
2019-07-26 18:04:25 +02:00
smile13241324
9ebf17af49 Make javascript layer adhere to REPL conventions and fix typescript doc 2019-06-09 21:21:30 +02:00
Uros Perisic
eee7d20bfe Add and configure nodejs-repl package to javascript layer.
Add relevant keybindings and documentation, including a setting
`js2-include-node-externs` as a configuration variable for those that intend to
use `Spacemacs` for node projects, as it currently seems to be mostly aimed at
pure JS (https://github.com/syl20bnr/spacemacs/issues/483).
2019-06-09 18:29:08 +02:00
syl20bnr
6d8040f2db Replace some if by when where appropriate 2019-05-12 10:01:05 -04:00
Trapez Breen
9665670f8e Adding format on save to javascript layer.
Adding formatting on save option to javascript layer, similar to typescript
layer. One small syntax error fix in typescript layer.
2019-04-25 20:26:07 +02:00
Thanh Vuong
9bb9038920 Move "import-js" to own layer for js based layers
Refactor import-js to its own layer import-js so it can be optional
used for the tree layers Javascript, React and Typescript layers.
2019-04-18 21:08:43 +02:00
Seong Yong-ju
e48fa85d96 Add missing prefix for js2-mode 2019-04-17 15:37:15 +02:00
Seong Yong-ju
ff3d6e2ba1 Add import-js into javascript layer 2019-04-08 11:19:18 -04:00
Thanh Vuong
a01994292d [javascript] Fix hook value to enable evil-matchit
hook value shoudle be js2-mode-hook instead of js2-mode
2019-04-06 09:54:01 +02:00
Seong Yong-ju
4d5eadd6d6 Remove eslint_d support
Remove eslint_d support because eslint_d seems to support only older versions
like ESLint 4+, 5+.
2019-01-15 01:24:07 +02:00
Ivan Yonchovski
f346ae0683 Fix java/python/javascript/rust lsp backends 2018-12-22 12:51:05 +02:00
duianto
ee811f7b13 Unify packages list parentheses style
problem:
some layer packages lists have the open and closing parentheses on the same line
as the first and last listed package, but most seem to have them on a separate
lines.

solution:
put the open and close parentheses on separate lines, except for lists with only
a single package, they are written on the same line as the variable name and
parentheses.

fix the lists indentation
2018-11-21 21:35:38 +00:00
Seong Yong-ju
ce1cd872f9 Prefer eslint_d to eslint 2018-09-03 22:13:38 +01:00
Seong Yong-ju
2c21d5098a Add prettier layer
Add prettier layer. Add prettier support for .css/.scss/.less/.js/.json file.
Add layer variables for html, javascript, json.
2018-08-22 00:15:28 +03:00
Codruț Constantin Gușoi
ca04186cfc Reverts js2-mode being forced on jsx files 2018-08-03 09:11:36 +01:00
Thomas de Beauchêne
927a7c4566 javascript layer: open javascript files in js2-mode 2018-08-03 01:58:45 +03:00
Ting Zhou
cffd90080b only use javascript-typescript-langserver for javascript, react, typescript
layer, and purge other langservers
2018-08-03 01:37:36 +03:00
syl20bnr
49b1659a18 Lazy load lsp-mode 2018-06-11 00:28:11 -04:00
Aaron Jensen
95a40af341 Revert "Move yas-activate-extra-mode setup to javascript layer" (#10746)
This reverts commit e4eca01e82.
2018-06-01 20:34:48 -04:00
Michael Rohleder
24ca355b6a add org-babel support for some of the more popular languages. (#10738)
* add org-babel support for some of the more popular languages.
* alphabetical sorted package names.
* removed blank lines at EOF.
2018-05-30 09:07:21 -04:00
mangosmoothie
41d16b545b updating regex to match single optional m character 2018-05-24 00:45:20 +03:00
Nathan Lloyd
e1a6e8be1c add .mjs (ES6 module) extension to init-js2-mode 2018-05-24 00:43:41 +03:00
syl20bnr
8267b501dd web-beautify: rename spacemacs-web-beautify--modes 2018-05-20 00:41:17 -04:00
syl20bnr
b97ad90c92 web-beautify: fix definition of web-beautify key bindings
Needs to use `pre-init` function in order to have the variable
spacemacs-web-beautify--modes to be populated before the init function of
web-beautify is actually called.
2018-05-19 01:53:33 -04:00
syl20bnr
542ada133d New layer web-beautify extracted from javascript layer
Make html, javascript, json and react layers depend on it
2018-05-18 01:25:29 -04:00
syl20bnr
e4eca01e82 Move yas-activate-extra-mode setup to javascript layer 2018-05-18 01:25:29 -04:00
syl20bnr
abf3df4ad7 New layer tern extracted from javascript layer 2018-05-18 01:25:29 -04:00
syl20bnr
e481894fcb Create new json layer extracted from javascript layer
* add some goodies like `json-reformat` and `json-navigator`
* make the javascript layer dependent on the json layer
2018-05-14 00:49:13 -04:00
syl20bnr
ca07366f01 New layer coffeescript (extracted from javacript layer) 2018-05-13 10:19:48 -04:00
syl20bnr
17b8e9d75a javascript: fix post-init-imenu func name 2018-05-13 09:16:04 -04:00
syl20bnr
1a0e5e34e3 javascript: add safe values for javascript backend 2018-05-13 02:14:09 -04:00
syl20bnr
7d6fd4ffd4 javascript: sort packages 2018-05-13 02:12:14 -04:00
syl20bnr
9820484716 javascript: fix multiple backends
* Use hack-local-variables-hook and remove usage of hooks in backends setup
  functions.
* also move imenu configuration to post-init-imenu
* Remove the necessity of typescript server for javascript layer
* Remove the necessity of javascript and javascript-flow servers for typescript
  layers
2018-05-13 01:31:00 -04:00
Ting Zhou
5a92c43951 Fix: use recipe for lsp-javascript-typescript 2018-05-11 23:28:15 -04:00
syl20bnr
f9968bf326 javascript: add default value for tern-command and remove toggle
Since now we support multiple backends, the toggle based on tern executable
seems not necessary anymore.
2018-05-11 13:28:16 -04:00
Ting Zhou
5c14486b62 Fix: remove buggy hooks in javascript and typescript 2018-05-11 01:48:03 -04:00
Ting Zhou
f3ee2edf1b Add: add lsp-javascript backend for javascript layer 2018-05-07 23:32:47 -04:00
syl20bnr
ebe4c60264 Revert "Defer packages by default using use-package-always-defer"
This reverts commit 29c78ce841 and all other fixes
that have been made afterwards.

The motivation is that use-package is seen by many as a replacement for
`require`. Is use-package always defer the loading of packages then is breaks
this use case, this does not respect POLA so even if it was making Spacemacs
loading faster (up to 3s faster on some startup on my machine) we just cannot
use it, it would be irresponsible. Spacemacs should be easy to use, loading
performance will come with time but it is not a priority.
2018-03-03 23:40:10 -05:00
syl20bnr
29c78ce841 Defer packages by default using use-package-always-defer
Warning now `:defer t` is implied, to force a package to load `:demand t` is
now necessary.
2018-02-27 23:32:52 -05:00
syl20bnr
326965d4ce Happy New Year 2018! 2018-01-04 02:00:25 -05:00
syl20bnr
8bc9060af8 javascript: change key binding for repl live eval toggle
To respect convention move the key binding under `SPC m T l` and change
the lighter to a plain squared `l`.
2018-01-04 01:40:52 -05:00
Robbert van der Helm
c61ae1a1c1 Add ivy support to the gtags layer
It would be much better to have a single function for each layer that
initializes ggtags, helm-gtags and counsel-gtags for a mode.
2017-12-17 22:03:01 -05:00
Kalle Lindqvist
27cb845d3c Improve coffeescript support
Register REPL and add major-mode bindings.
2017-10-18 23:53:07 +02:00