Document ALEFix

This commit is contained in:
w0rp 2017-05-20 19:01:12 +01:00
parent 3530180a73
commit 74d879952c
2 changed files with 100 additions and 11 deletions

View File

@ -15,6 +15,9 @@ back to a filesystem.
In other words, this plugin allows you to lint while you type. In other words, this plugin allows you to lint while you type.
ALE also supports fixing problems with files by running commands in the
background with a command `ALEFix`.
## Table of Contents ## Table of Contents
1. [Supported Languages and Tools](#supported-languages) 1. [Supported Languages and Tools](#supported-languages)
@ -138,6 +141,9 @@ documented in [the Vim help file](doc/ale.txt). For more information on the
options ALE offers, consult `:help ale-options` for global options and `:help options ALE offers, consult `:help ale-options` for global options and `:help
ale-linter-options` for options specified to particular linters. ale-linter-options` for options specified to particular linters.
ALE can fix files with the `ALEFix` command. Functions need to be configured
for different filetypes with the `g:ale_fixers` variable. See `:help ale-fix`.
<a name="installation"></a> <a name="installation"></a>
## 3. Installation ## 3. Installation

View File

@ -9,7 +9,8 @@ CONTENTS *ale-contents*
1. Introduction.........................|ale-introduction| 1. Introduction.........................|ale-introduction|
2. Supported Languages & Tools..........|ale-support| 2. Supported Languages & Tools..........|ale-support|
3. Global Options.......................|ale-options| 3. Global Options.......................|ale-options|
4. Linter Options and Recommendations...|ale-linter-options| 4. Fixing Problems......................|ale-fix|
5. Linter Options and Recommendations...|ale-linter-options|
asm...................................|ale-asm-options| asm...................................|ale-asm-options|
gcc.................................|ale-asm-gcc| gcc.................................|ale-asm-gcc|
c.....................................|ale-c-options| c.....................................|ale-c-options|
@ -93,10 +94,10 @@ CONTENTS *ale-contents*
xmllint.............................|ale-xml-xmllint| xmllint.............................|ale-xml-xmllint|
yaml..................................|ale-yaml-options| yaml..................................|ale-yaml-options|
yamllint............................|ale-yaml-yamllint| yamllint............................|ale-yaml-yamllint|
5. Commands/Keybinds....................|ale-commands| 6. Commands/Keybinds....................|ale-commands|
6. API..................................|ale-api| 7. API..................................|ale-api|
7. Special Thanks.......................|ale-special-thanks| 8. Special Thanks.......................|ale-special-thanks|
8. Contact..............................|ale-contact| 9. Contact..............................|ale-contact|
=============================================================================== ===============================================================================
1. Introduction *ale-introduction* 1. Introduction *ale-introduction*
@ -107,7 +108,7 @@ using the |job-control| features available in Vim 8 and NeoVim. For Vim 8,
Vim must be compiled with the |job| and |channel| and |timer| features Vim must be compiled with the |job| and |channel| and |timer| features
as a minimum. as a minimum.
ALE supports the following key features: ALE supports the following key features for linting:
1. Running linters when text is changed. 1. Running linters when text is changed.
2. Running linters when files are opened. 2. Running linters when files are opened.
@ -115,6 +116,10 @@ ALE supports the following key features:
4. Populating the |loclist| with warning and errors. 4. Populating the |loclist| with warning and errors.
5. Setting |signs| with warnings and errors for error markers. 5. Setting |signs| with warnings and errors for error markers.
6. Using |echo| to show error messages when the cursor moves. 6. Using |echo| to show error messages when the cursor moves.
7. Setting syntax highlights for errors.
ALE can fix problems with files with the |ALEFix| command, using the same job
control functionality used for checking for problems.
=============================================================================== ===============================================================================
2. Supported Languages & Tools *ale-support* 2. Supported Languages & Tools *ale-support*
@ -266,6 +271,18 @@ g:ale_enabled *g:ale_enabled*
the |ALEToggle| command, which changes this option. the |ALEToggle| command, which changes this option.
g:ale_fixers *g:ale_fixers*
*b:ale_fixers*
Type: |Dictionary|
Default: `{}`
A mapping from filetypes to |List| values for functions for fixing errors.
See |ale-fix| for more information.
This variable can be overriden with variables in each buffer.
g:ale_history_enabled *g:ale_history_enabled* g:ale_history_enabled *g:ale_history_enabled*
Type: |Number| Type: |Number|
@ -604,7 +621,57 @@ b:ale_warn_about_trailing_whitespace *b:ale_warn_about_trailing_whitespace*
=============================================================================== ===============================================================================
4. Linter Options and Recommendations *ale-linter-options* 4. Fixing Problems *ale-fix*
ALE can fix problems with files with the |ALEFix| command. When |ALEFix| is
run, the variable |g:ale_fixers| will be read for getting a |List| of commands
for filetypes, split on `.`, and the functions named in |g:ale_fixers| will be
executed for fixing the errors.
The values for `g:ale_fixers` can be a list of |String|, |Funcref|, or
|lambda| values. String values must either name a function, or a short name
for a function set in the ALE fixer registry.
Each function for fixing errors must accept two arguments `(buffer, lines)`,
representing the buffer being fixed and the lines to fix. The functions must
return either `0`, for changing nothing, a |List| for new lines to set, or a
|Dictionary| for describing a command to be run in the background.
When a |Dictionary| is returned for an |ALEFix| callback, the following keys
are supported for running the commands.
`command` A |String| for the command to run. This key is required.
When `%t` is included in a command string, a temporary
file will be created, containing the lines from the file
after previous adjustment have been done.
`read_temporary_file` When set to `1`, ALE will read the contents of the
temporary file created for `%t`. This option can be used
for commands which need to modify some file on disk in
order to fix files.
*ale-fix-configuration*
Synchronous functions and asynchronous jobs will be run in a sequence for
fixing files, and can be combined. For example:
>
let g:ale_fixers.javascript = [
\ 'DoSomething',
\ 'eslint',
\ {buffer, lines -> filter(lines, 'v:val !=~ ''^\s*//''')},
\]
ALEFix
<
The above example will call a function called `DoSomething` which could act
upon some lines immediately, then run `eslint` from the ALE registry, and
then call a lambda function which will remove every single line comment
from the file.
===============================================================================
5. Linter Options and Recommendations *ale-linter-options*
Linter options are documented in individual help files. See the table of Linter options are documented in individual help files. See the table of
contents at |ale-contents|. contents at |ale-contents|.
@ -615,7 +682,12 @@ set for `g:ale_python_flake8_executable`.
=============================================================================== ===============================================================================
5. Commands/Keybinds *ale-commands* 6. Commands/Keybinds *ale-commands*
ALEFix *ALEFix*
Fix problems with the current buffer. See |ale-fix| for more information.
ALELint *ALELint* ALELint *ALELint*
@ -676,7 +748,7 @@ ALEDetail *ALEDetail*
A plug mapping `<Plug>(ale_detail)` is defined for this command. A plug mapping `<Plug>(ale_detail)` is defined for this command.
=============================================================================== ===============================================================================
6. API *ale-api* 7. API *ale-api*
ale#Queue(delay, [linting_flag]) *ale#Queue()* ale#Queue(delay, [linting_flag]) *ale#Queue()*
@ -745,6 +817,17 @@ ale#engine#ManageDirectory(buffer, directory) *ale#engine#ManageDirectory()*
files. files.
ale#fix#registry#Add(name, func, filetypes, desc) *ale#fix#registry#Add()*
Given a |String| `name` for a name to add to the registry, a |String| `func`
for a function name, a |List| `filetypes` for a list of filetypes to
set for suggestions, and a |String| `desc` for a short description of
the fixer, register a fixer in the registry.
The `name` can then be used for |g:ale_fixers| in place of the function
name, and suggested for fixing files.
ale#linter#Define(filetype, linter) *ale#linter#Define()* ale#linter#Define(filetype, linter) *ale#linter#Define()*
Given a |String| for a filetype and a |Dictionary| Describing a linter Given a |String| for a filetype and a |Dictionary| Describing a linter
@ -985,13 +1068,13 @@ ALELint *ALELint-autocmd*
< <
=============================================================================== ===============================================================================
7. Special Thanks *ale-special-thanks* 8. Special Thanks *ale-special-thanks*
Special thanks to Mark Grealish (https://www.bhalash.com/) for providing ALE's Special thanks to Mark Grealish (https://www.bhalash.com/) for providing ALE's
snazzy looking ale glass logo. Cheers, Mark! snazzy looking ale glass logo. Cheers, Mark!
=============================================================================== ===============================================================================
8. Contact *ale-contact* 9. Contact *ale-contact*
If you like this plugin, and wish to get in touch, check out the GitHub If you like this plugin, and wish to get in touch, check out the GitHub
page for issues and more at https://github.com/w0rp/ale page for issues and more at https://github.com/w0rp/ale