spacemacs/layers/+lang/html
syl20bnr 584392bd92 [core] Fix layer dependencies based on layer variables
There was a edge case with the declaration of the `lsp` layer in `layers.el`
files.
The `hy` layer depends on the `python` layer which in turn depends on the `lsp`
layer if and only if the `python-backend` layer variable is set to `lsp`.
When the `hy` layer was declared first then it declares the `python` layer
without its layer variables, thus the `lsp` layer was not declared because the
`python-backend` variable was not set.

The fix is to gather all the layer dependencies and resolve them only after all
the used layers have been declared.

* new function `configuration-layer/declare-layer-dependencies`
* replace all calls to `configuration-layer/declare-layer` by the new function
  except for distribution layers (we declare layer dependencies right away in
  distribution layers)
2019-09-30 02:00:48 -04:00
..
img Use + instead of ! for layer categories 2015-09-11 00:13:51 -04:00
config.el Add LSP support for stylesheet buffers 2019-05-31 16:37:02 +02:00
funcs.el Add LSP support for stylesheet buffers 2019-05-31 16:37:02 +02:00
layers.el [core] Fix layer dependencies based on layer variables 2019-09-30 02:00:48 -04:00
packages.el [html] Add .svelte files to web-mode auto-mode-alist :mode handler 2019-09-23 13:45:15 +02:00
README.org Add LSP support for stylesheet buffers 2019-05-31 16:37:02 +02:00

HTML layer

/TakeV/spacemacs/media/commit/584392bd923000642a00ca4d6ebfae529e14974f/layers/+lang/html/img/html.png

Description

This layer adds support for editing HTML and CSS.

Features:

Install

To use this configuration layer, add it to your ~/.spacemacs. You will need to add html to the existing dotspacemacs-configuration-layers list in this file.

SCSS linting requires SCSS-Lint version >= 0.43.0. You can get it from GitHub:

  gem install specific_install
  gem specific_install https://github.com/brigade/scss-lint.git
  gem specific_install https://github.com/Sweetchuck/scss_lint_reporter_checkstyle.git

LSP

To enable the LSP set the layer variables below:

  • css-enable-lsp
  • less-enable-lsp
  • scss-enable-lsp

web-beautify

See web-beautify layer documentation.

prettier

See prettier layer documentation.

Choosing a formatter

To choose a formatter, set the layer variable web-fmt-tool:

  (html :variables web-fmt-tool 'web-beautify)

Formatter 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 prettier formatter:

  ;;; Directory Local Variables
  ;;; For more information see (info "(emacs) Directory Variables")

  ((html-mode (web-fmt-tool . prettier)))

Note: you can easily add a directory local variable with SPC f v d.

Backends

Language Server Protocol

You have to install vscode-css-languageserver-bin via

  npm i -g vscode-css-languageserver-bin

Live display in browser

Use SPC m I to enable impatient mode, opening a live view of a HTML file in your browser. You may wish to enable impatient mode in referenced CSS or JS files, too.

When the underlying file is an HTML file, SPC m I automatically opens the page in the browser. For other buffers, a list of available views can be found on http://localhost:8080/imp.

For more information visit the help page on GitHub.

Key bindings

Web mode

Key binding Description
SPC m g p quickly navigate CSS rules using helm
SPC m e h highlight DOM errors
SPC m I open live view in browser
SPC m g b go to the beginning of current element
SPC m g c go to the first child element
SPC m g p go to the parent element
SPC m g s go to next sibling
SPC m h p show xpath of the current element
SPC m r c clone the current element
SPC m r d delete the current element (does not delete the children)
SPC m r r rename current element
SPC m r w wrap current element
SPC m z fold/unfold current element
% evil-matchit key binding to jump to closing tag

A transient-state is also defined, start it with SPC m . or , .

Key binding Description
? Toggle full help
c clone current element
d delete (vanish) current element (does not delete the children)
D delete current element and children
j next element
J / gj next sibling element
h parent element
k previous element
K / gk previous sibling element
l first child element
p show xpath of current element
q leave the transient-state
r rename current element
w wrap current element

CSS/SCSS

Key binding Description
SPC m g h quickly navigate CSS rules
SPC m z c fold css statement to one line
SPC m z o unfold css statement to one line