Fix - #883 Document linting behavior better, sync up the lists of supported tools, andautomatically demand that they stay in sync
This commit is contained in:
		
							parent
							
								
									b031531e79
								
							
						
					
					
						commit
						8e3c1dbd11
					
				
							
								
								
									
										41
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								README.md
									
									
									
									
									
								
							| @ -55,50 +55,59 @@ tools will be run in combination, so they can be complementary. | |||||||
| Keep the table rows sorted alphabetically by the language name, | Keep the table rows sorted alphabetically by the language name, | ||||||
| and the tools in the tools column sorted alphabetically by the tool | and the tools in the tools column sorted alphabetically by the tool | ||||||
| name. That seems to be the fairest way to arrange this table. | name. That seems to be the fairest way to arrange this table. | ||||||
|  | 
 | ||||||
|  | Remember to also update doc/ale.txt, which has a similar list with different | ||||||
|  | formatting. | ||||||
| --> | --> | ||||||
| 
 | 
 | ||||||
|  | <a name="table-notes"></a> | ||||||
|  | **Notes:** | ||||||
|  | 
 | ||||||
|  | * *^ No linters for text or Vim help filetypes are enabled by default.* | ||||||
|  | * *! These linters check only files on disk. See `:help ale-lint-file-linters`* | ||||||
|  | 
 | ||||||
| | Language | Tools | | | Language | Tools | | ||||||
| | -------- | ----- | | | -------- | ----- | | ||||||
| | ASM | [gcc](https://gcc.gnu.org) | | | ASM | [gcc](https://gcc.gnu.org) | | ||||||
| | Ansible | [ansible-lint](https://github.com/willthames/ansible-lint) | | | Ansible | [ansible-lint](https://github.com/willthames/ansible-lint) | | ||||||
| | AsciiDoc | [proselint](http://proselint.com/) | | | AsciiDoc | [proselint](http://proselint.com/) | | ||||||
| | Awk | [gawk](https://www.gnu.org/software/gawk/)| | | Awk | [gawk](https://www.gnu.org/software/gawk/)| | ||||||
| | Bash | [-n flag](https://www.gnu.org/software/bash/manual/bash.html#index-set), [shellcheck](https://www.shellcheck.net/) | | | Bash | shell [-n flag](https://www.gnu.org/software/bash/manual/bash.html#index-set), [shellcheck](https://www.shellcheck.net/) | | ||||||
| | Bourne Shell | [-n flag](http://linux.die.net/man/1/sh), [shellcheck](https://www.shellcheck.net/) | | | Bourne Shell | shell [-n flag](http://linux.die.net/man/1/sh), [shellcheck](https://www.shellcheck.net/) | | ||||||
| | C | [cppcheck](http://cppcheck.sourceforge.net), [gcc](https://gcc.gnu.org/), [clang](http://clang.llvm.org/), [clang-format](https://clang.llvm.org/docs/ClangFormat.html)| | | C | [cppcheck](http://cppcheck.sourceforge.net), [cpplint](https://github.com/google/styleguide/tree/gh-pages/cpplint), [gcc](https://gcc.gnu.org/), [clang](http://clang.llvm.org/), [clang-format](https://clang.llvm.org/docs/ClangFormat.html)| | ||||||
| | C++ (filetype cpp) | [clang](http://clang.llvm.org/), [clangcheck](http://clang.llvm.org/docs/ClangCheck.html), [clangtidy](http://clang.llvm.org/extra/clang-tidy/), [cppcheck](http://cppcheck.sourceforge.net), [cpplint](https://github.com/google/styleguide/tree/gh-pages/cpplint), [gcc](https://gcc.gnu.org/), [clang-format](https://clang.llvm.org/docs/ClangFormat.html)| | | C++ (filetype cpp) | [clang](http://clang.llvm.org/), [clangcheck](http://clang.llvm.org/docs/ClangCheck.html)[!](#table-notes), [clangtidy](http://clang.llvm.org/extra/clang-tidy/)[!](#table-notes), [cppcheck](http://cppcheck.sourceforge.net), [cpplint](https://github.com/google/styleguide/tree/gh-pages/cpplint)[!](#table-notes), [gcc](https://gcc.gnu.org/), [clang-format](https://clang.llvm.org/docs/ClangFormat.html)| | ||||||
| | C# | [mcs](http://www.mono-project.com/docs/about-mono/languages/csharp/) | | | C# | [mcs](http://www.mono-project.com/docs/about-mono/languages/csharp/) | | ||||||
| | Chef | [foodcritic](http://www.foodcritic.io/) | | | Chef | [foodcritic](http://www.foodcritic.io/) | | ||||||
| | CMake | [cmakelint](https://github.com/richq/cmake-lint) | | | CMake | [cmakelint](https://github.com/richq/cmake-lint) | | ||||||
| | CoffeeScript | [coffee](http://coffeescript.org/), [coffeelint](https://www.npmjs.com/package/coffeelint) | | | CoffeeScript | [coffee](http://coffeescript.org/), [coffeelint](https://www.npmjs.com/package/coffeelint) | | ||||||
| | Crystal | [crystal](https://crystal-lang.org/) | | | Crystal | [crystal](https://crystal-lang.org/)[!](#table-notes) | | ||||||
| | CSS | [csslint](http://csslint.net/), [stylelint](https://github.com/stylelint/stylelint) | | | CSS | [csslint](http://csslint.net/), [stylelint](https://github.com/stylelint/stylelint) | | ||||||
| | Cython (pyrex filetype) | [cython](http://cython.org/) | | | Cython (pyrex filetype) | [cython](http://cython.org/) | | ||||||
| | D | [dmd](https://dlang.org/dmd-linux.html) | | | D | [dmd](https://dlang.org/dmd-linux.html) | | ||||||
| | Dart | [dartanalyzer](https://github.com/dart-lang/sdk/tree/master/pkg/analyzer_cli) | | | Dart | [dartanalyzer](https://github.com/dart-lang/sdk/tree/master/pkg/analyzer_cli) | | ||||||
| | Dockerfile | [hadolint](https://github.com/lukasmartinelli/hadolint) | | | Dockerfile | [hadolint](https://github.com/lukasmartinelli/hadolint) | | ||||||
| | Elixir | [credo](https://github.com/rrrene/credo), [dogma](https://github.com/lpil/dogma) | | | Elixir | [credo](https://github.com/rrrene/credo), [dogma](https://github.com/lpil/dogma)[!](#table-notes) | | ||||||
| | Elm | [elm-make](https://github.com/elm-lang/elm-make) | | | Elm | [elm-make](https://github.com/elm-lang/elm-make) | | ||||||
| | Erb | [erb](https://github.com/jeremyevans/erubi), [erubis](https://github.com/kwatch/erubis) | | | Erb | [erb](https://github.com/jeremyevans/erubi), [erubis](https://github.com/kwatch/erubis) | | ||||||
| | Erlang | [erlc](http://erlang.org/doc/man/erlc.html), [SyntaxErl](https://github.com/ten0s/syntaxerl) | | | Erlang | [erlc](http://erlang.org/doc/man/erlc.html), [SyntaxErl](https://github.com/ten0s/syntaxerl) | | ||||||
| | Fortran | [gcc](https://gcc.gnu.org/) | | | Fortran | [gcc](https://gcc.gnu.org/) | | ||||||
| | FusionScript | [fusion-lint](https://github.com/RyanSquared/fusionscript) | | | FusionScript | [fusion-lint](https://github.com/RyanSquared/fusionscript) | | ||||||
| | Go | [gofmt -e](https://golang.org/cmd/gofmt/), [go vet](https://golang.org/cmd/vet/), [golint](https://godoc.org/github.com/golang/lint), [gometalinter](https://github.com/alecthomas/gometalinter), [go build](https://golang.org/cmd/go/), [gosimple](https://github.com/dominikh/go-tools/tree/master/cmd/gosimple), [staticcheck](https://github.com/dominikh/go-tools/tree/master/cmd/staticcheck) | | | Go | [gofmt](https://golang.org/cmd/gofmt/), [go vet](https://golang.org/cmd/vet/), [golint](https://godoc.org/github.com/golang/lint), [gometalinter](https://github.com/alecthomas/gometalinter)[!](#table-notes), [go build](https://golang.org/cmd/go/)[!](#table-notes), [gosimple](https://github.com/dominikh/go-tools/tree/master/cmd/gosimple), [staticcheck](https://github.com/dominikh/go-tools/tree/master/cmd/staticcheck) | | ||||||
| | GraphQL | [gqlint](https://github.com/happylinks/gqlint) | | | GraphQL | [gqlint](https://github.com/happylinks/gqlint) | | ||||||
| | Haml | [haml-lint](https://github.com/brigade/haml-lint) | | Haml | [haml-lint](https://github.com/brigade/haml-lint) | ||||||
| | Handlebars | [ember-template-lint](https://github.com/rwjblue/ember-template-lint) | | | Handlebars | [ember-template-lint](https://github.com/rwjblue/ember-template-lint) | | ||||||
| | Haskell | [ghc](https://www.haskell.org/ghc/), [stack-ghc](https://haskellstack.org/), [stack-build](https://haskellstack.org/), [ghc-mod](https://github.com/DanielG/ghc-mod), [stack-ghc-mod](https://github.com/DanielG/ghc-mod), [hlint](https://hackage.haskell.org/package/hlint), [hdevtools](https://hackage.haskell.org/package/hdevtools) | | | Haskell | [ghc](https://www.haskell.org/ghc/), [stack-ghc](https://haskellstack.org/), [stack-build](https://haskellstack.org/)[!](#table-notes), [ghc-mod](https://github.com/DanielG/ghc-mod), [stack-ghc-mod](https://github.com/DanielG/ghc-mod), [hlint](https://hackage.haskell.org/package/hlint), [hdevtools](https://hackage.haskell.org/package/hdevtools) | | ||||||
| | HTML | [HTMLHint](http://htmlhint.com/), [proselint](http://proselint.com/), [tidy](http://www.html-tidy.org/) | | | HTML | [HTMLHint](http://htmlhint.com/), [proselint](http://proselint.com/), [tidy](http://www.html-tidy.org/) | | ||||||
| | Idris | [idris](http://www.idris-lang.org/) | | | Idris | [idris](http://www.idris-lang.org/) | | ||||||
| | Java | [checkstyle](http://checkstyle.sourceforge.net), [javac](http://www.oracle.com/technetwork/java/javase/downloads/index.html) | | | Java | [checkstyle](http://checkstyle.sourceforge.net), [javac](http://www.oracle.com/technetwork/java/javase/downloads/index.html) | | ||||||
| | JavaScript | [eslint](http://eslint.org/), [jscs](http://jscs.info/), [jshint](http://jshint.com/), [flow](https://flowtype.org/), [standard](http://standardjs.com/), [prettier](https://github.com/prettier/prettier) (and `prettier-eslint`, `prettier-standard`), [xo](https://github.com/sindresorhus/xo) | | JavaScript | [eslint](http://eslint.org/), [jscs](http://jscs.info/), [jshint](http://jshint.com/), [flow](https://flowtype.org/), [prettier](https://github.com/prettier/prettier), prettier-eslint, prettier-standard, [standard](http://standardjs.com/), [xo](https://github.com/sindresorhus/xo) | ||||||
| | JSON | [jsonlint](http://zaa.ch/jsonlint/) | | | JSON | [jsonlint](http://zaa.ch/jsonlint/) | | ||||||
| | Kotlin | [kotlinc](https://kotlinlang.org), [ktlint](https://ktlint.github.io) see `:help ale-integration-kotlin` for configuration instructions | | Kotlin | [kotlinc](https://kotlinlang.org)[!](#table-notes), [ktlint](https://ktlint.github.io)[!](#table-notes) see `:help ale-integration-kotlin` for configuration instructions | ||||||
| | LaTeX | [chktex](http://www.nongnu.org/chktex/), [lacheck](https://www.ctan.org/pkg/lacheck), [proselint](http://proselint.com/) | | | LaTeX | [chktex](http://www.nongnu.org/chktex/), [lacheck](https://www.ctan.org/pkg/lacheck), [proselint](http://proselint.com/) | | ||||||
| | Lua | [luacheck](https://github.com/mpeterv/luacheck) | | | Lua | [luacheck](https://github.com/mpeterv/luacheck) | | ||||||
| | Markdown | [mdl](https://github.com/mivok/markdownlint), [proselint](http://proselint.com/), [vale](https://github.com/ValeLint/vale) | | | Markdown | [mdl](https://github.com/mivok/markdownlint), [proselint](http://proselint.com/), [vale](https://github.com/ValeLint/vale) | | ||||||
| | MATLAB | [mlint](https://www.mathworks.com/help/matlab/ref/mlint.html) | | | MATLAB | [mlint](https://www.mathworks.com/help/matlab/ref/mlint.html) | | ||||||
| | Nim | [nim](https://nim-lang.org/docs/nimc.html) | | | Nim | [nim check](https://nim-lang.org/docs/nimc.html)[!](#table-notes) | | ||||||
| | nix | [nix-instantiate](http://nixos.org/nix/manual/#sec-nix-instantiate) | | | nix | [nix-instantiate](http://nixos.org/nix/manual/#sec-nix-instantiate) | | ||||||
| | nroff | [proselint](http://proselint.com/)| | | nroff | [proselint](http://proselint.com/)| | ||||||
| | Objective-C | [clang](http://clang.llvm.org/) | | | Objective-C | [clang](http://clang.llvm.org/) | | ||||||
| @ -109,13 +118,13 @@ name. That seems to be the fairest way to arrange this table. | |||||||
| | Pod | [proselint](http://proselint.com/)| | | Pod | [proselint](http://proselint.com/)| | ||||||
| | Pug | [pug-lint](https://github.com/pugjs/pug-lint) | | | Pug | [pug-lint](https://github.com/pugjs/pug-lint) | | ||||||
| | Puppet | [puppet](https://puppet.com), [puppet-lint](https://puppet-lint.com) | | | Puppet | [puppet](https://puppet.com), [puppet-lint](https://puppet-lint.com) | | ||||||
| | Python | [autopep8](https://github.com/hhatto/autopep8), [flake8](http://flake8.pycqa.org/en/latest/), [isort](https://github.com/timothycrosley/isort), [mypy](http://mypy-lang.org/), [pycodestyle](https://github.com/PyCQA/pycodestyle), [pylint](https://www.pylint.org/), [yapf](https://github.com/google/yapf) | | | Python | [autopep8](https://github.com/hhatto/autopep8), [flake8](http://flake8.pycqa.org/en/latest/), [isort](https://github.com/timothycrosley/isort), [mypy](http://mypy-lang.org/), [pycodestyle](https://github.com/PyCQA/pycodestyle), [pylint](https://www.pylint.org/)[!](#table-notes), [yapf](https://github.com/google/yapf) | | ||||||
| | R | [lintr](https://github.com/jimhester/lintr) | | | R | [lintr](https://github.com/jimhester/lintr) | | ||||||
| | ReasonML | [merlin](https://github.com/the-lambda-church/merlin) see `:help ale-integration-reason-merlin` for configuration instructions | | ReasonML | [merlin](https://github.com/the-lambda-church/merlin) see `:help ale-integration-reason-merlin` for configuration instructions | ||||||
| | reStructuredText | [proselint](http://proselint.com/) | | | reStructuredText | [proselint](http://proselint.com/) | | ||||||
| | RPM spec | [rpmlint](https://github.com/rpm-software-management/rpmlint) (disabled by default; see `:help ale-integration-spec`) | | | RPM spec | [rpmlint](https://github.com/rpm-software-management/rpmlint) (disabled by default; see `:help ale-integration-spec`) | | ||||||
| | Ruby | [brakeman](http://brakemanscanner.org/), [rails_best_practices](https://github.com/flyerhzm/rails_best_practices), [reek](https://github.com/troessner/reek), [rubocop](https://github.com/bbatsov/rubocop), [ruby](https://www.ruby-lang.org) | | | Ruby | [brakeman](http://brakemanscanner.org/)[!](#table-notes), [rails_best_practices](https://github.com/flyerhzm/rails_best_practices)[!](#table-notes), [reek](https://github.com/troessner/reek), [rubocop](https://github.com/bbatsov/rubocop), [ruby](https://www.ruby-lang.org) | | ||||||
| | Rust |  cargo (see `:help ale-integration-rust` for configuration instructions), [rls](https://github.com/rust-lang-nursery/rls), [rustc](https://www.rust-lang.org/) | | | Rust |  cargo[!](#table-notes) (see `:help ale-integration-rust` for configuration instructions), [rls](https://github.com/rust-lang-nursery/rls), [rustc](https://www.rust-lang.org/) | | ||||||
| | SASS | [sass-lint](https://www.npmjs.com/package/sass-lint), [stylelint](https://github.com/stylelint/stylelint) | | | SASS | [sass-lint](https://www.npmjs.com/package/sass-lint), [stylelint](https://github.com/stylelint/stylelint) | | ||||||
| | SCSS | [sass-lint](https://www.npmjs.com/package/sass-lint), [scss-lint](https://github.com/brigade/scss-lint), [stylelint](https://github.com/stylelint/stylelint) | | | SCSS | [sass-lint](https://www.npmjs.com/package/sass-lint), [scss-lint](https://github.com/brigade/scss-lint), [stylelint](https://github.com/stylelint/stylelint) | | ||||||
| | Scala | [scalac](http://scala-lang.org), [scalastyle](http://www.scalastyle.org) | | | Scala | [scalac](http://scala-lang.org), [scalastyle](http://www.scalastyle.org) | | ||||||
| @ -124,7 +133,7 @@ name. That seems to be the fairest way to arrange this table. | |||||||
| | Stylus | [stylelint](https://github.com/stylelint/stylelint) | | | Stylus | [stylelint](https://github.com/stylelint/stylelint) | | ||||||
| | SQL | [sqlint](https://github.com/purcell/sqlint) | | | SQL | [sqlint](https://github.com/purcell/sqlint) | | ||||||
| | Swift | [swiftlint](https://github.com/realm/SwiftLint), [swiftformat](https://github.com/nicklockwood/SwiftFormat) | | | Swift | [swiftlint](https://github.com/realm/SwiftLint), [swiftformat](https://github.com/nicklockwood/SwiftFormat) | | ||||||
| | Tcl | [nagelfar](http://nagelfar.sourceforge.net)| | | Tcl | [nagelfar](http://nagelfar.sourceforge.net)[!](#table-notes) | | ||||||
| | Texinfo | [proselint](http://proselint.com/)| | | Texinfo | [proselint](http://proselint.com/)| | ||||||
| | Text^ | [proselint](http://proselint.com/), [vale](https://github.com/ValeLint/vale) | | | Text^ | [proselint](http://proselint.com/), [vale](https://github.com/ValeLint/vale) | | ||||||
| | TypeScript | [eslint](http://eslint.org/), [tslint](https://github.com/palantir/tslint), tsserver, typecheck | | | TypeScript | [eslint](http://eslint.org/), [tslint](https://github.com/palantir/tslint), tsserver, typecheck | | ||||||
| @ -135,8 +144,6 @@ name. That seems to be the fairest way to arrange this table. | |||||||
| | XML | [xmllint](http://xmlsoft.org/xmllint.html/)| | | XML | [xmllint](http://xmlsoft.org/xmllint.html/)| | ||||||
| | YAML | [swaglint](https://github.com/byCedric/swaglint), [yamllint](https://yamllint.readthedocs.io/) | | | YAML | [swaglint](https://github.com/byCedric/swaglint), [yamllint](https://yamllint.readthedocs.io/) | | ||||||
| 
 | 
 | ||||||
| * *^ No linters for text or Vim help filetypes are enabled by default.* |  | ||||||
| 
 |  | ||||||
| <a name="usage"></a> | <a name="usage"></a> | ||||||
| 
 | 
 | ||||||
| ## 2. Usage | ## 2. Usage | ||||||
|  | |||||||
							
								
								
									
										65
									
								
								check-supported-tools-tables
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										65
									
								
								check-supported-tools-tables
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,65 @@ | |||||||
|  | #!/bin/bash -eu | ||||||
|  | 
 | ||||||
|  | # This script compares the table of supported tools in both the README file | ||||||
|  | # and the doc/ale.txt file, so we can complain if they don't match up. | ||||||
|  | 
 | ||||||
|  | # Find the start and end lines for the help section. | ||||||
|  | ale_help_start_line="$( \ | ||||||
|  |     grep -m1 -n '^[0-9][0-9]*\. *Supported Languages' doc/ale.txt \ | ||||||
|  |     | sed 's/\([0-9]*\).*/\1/' \ | ||||||
|  | )" | ||||||
|  | ale_help_section_size="$( \ | ||||||
|  |     tail -n +"$ale_help_start_line" doc/ale.txt \ | ||||||
|  |     | grep -m1 -n '================' \ | ||||||
|  |     | sed 's/\([0-9]*\).*/\1/' \ | ||||||
|  | )" | ||||||
|  | ale_help_end_line="$(("$ale_help_start_line" + "$ale_help_section_size"))" | ||||||
|  | 
 | ||||||
|  | # Find the start and end lines for the same section in the README. | ||||||
|  | readme_start_line="$( \ | ||||||
|  |     grep -m1 -n '^.*[0-9][0-9]*\. *Supported Languages' README.md \ | ||||||
|  |     | sed 's/\([0-9]*\).*/\1/' \ | ||||||
|  | )" | ||||||
|  | readme_section_size="$( \ | ||||||
|  |     tail -n +"$readme_start_line" README.md \ | ||||||
|  |     | grep -m1 -n '^##.*Usage' \ | ||||||
|  |     | sed 's/\([0-9]*\).*/\1/' \ | ||||||
|  | )" | ||||||
|  | readme_end_line="$(("$readme_start_line" + "$readme_section_size"))" | ||||||
|  | 
 | ||||||
|  | doc_file="$(mktemp)" | ||||||
|  | readme_file="$(mktemp)" | ||||||
|  | 
 | ||||||
|  | sed -n "$ale_help_start_line,$ale_help_end_line"p doc/ale.txt \ | ||||||
|  |     | grep '\* .*: ' \ | ||||||
|  |     | sed 's/^*//' \ | ||||||
|  |     | sed 's/[`!^]\|([^)]*)//g' \ | ||||||
|  |     | sed 's/ *\([,:]\)/\1/g' \ | ||||||
|  |     | sed 's/  */ /g' \ | ||||||
|  |     | sed 's/^ *\| *$//g' \ | ||||||
|  |     | sed 's/^/ /' \ | ||||||
|  |     > "$doc_file" | ||||||
|  | 
 | ||||||
|  | sed -n "$readme_start_line,$readme_end_line"p README.md \ | ||||||
|  |     | grep '| .* |' \ | ||||||
|  |     | sed '/^| Language\|^| ---/d' \ | ||||||
|  |     | sed 's/^|//' \ | ||||||
|  |     | sed 's/ \?|/:/' \ | ||||||
|  |     | sed 's/[`!^|]\|([^)]*)//g' \ | ||||||
|  |     | sed 's/\[\|\]//g' \ | ||||||
|  |     | sed 's/see.*\(,\|$\)/\1/g' \ | ||||||
|  |     | sed 's/ *\([,:]\)/\1/g' \ | ||||||
|  |     | sed 's/  */ /g' \ | ||||||
|  |     | sed 's/^ *\| *$//g' \ | ||||||
|  |     | sed 's/^/ /' \ | ||||||
|  |     | sed 's/ *-n flag//g' \ | ||||||
|  |     > "$readme_file" | ||||||
|  | 
 | ||||||
|  | exit_code=0 | ||||||
|  | 
 | ||||||
|  | diff -U0 "$readme_file" "$doc_file" || exit_code=$? | ||||||
|  | 
 | ||||||
|  | rm "$doc_file" | ||||||
|  | rm "$readme_file" | ||||||
|  | 
 | ||||||
|  | exit "$exit_code" | ||||||
							
								
								
									
										432
									
								
								doc/ale.txt
									
									
									
									
									
								
							
							
						
						
									
										432
									
								
								doc/ale.txt
									
									
									
									
									
								
							| @ -8,11 +8,12 @@ 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. Linting..............................|ale-lint| | ||||||
|     3.1 Highlights........................|ale-highlights| |  | ||||||
|   4. Fixing Problems......................|ale-fix| |   4. Fixing Problems......................|ale-fix| | ||||||
|   5. Completion...........................|ale-completion| |   5. Completion...........................|ale-completion| | ||||||
|   6. Integration Documentation............|ale-integrations| |   6. Global Options.......................|ale-options| | ||||||
|  |     6.1 Highlights........................|ale-highlights| | ||||||
|  |   7. Integration Documentation............|ale-integrations| | ||||||
|     asm...................................|ale-asm-options| |     asm...................................|ale-asm-options| | ||||||
|       gcc.................................|ale-asm-gcc| |       gcc.................................|ale-asm-gcc| | ||||||
|     c.....................................|ale-c-options| |     c.....................................|ale-c-options| | ||||||
| @ -140,10 +141,10 @@ CONTENTS                                                         *ale-contents* | |||||||
|     yaml..................................|ale-yaml-options| |     yaml..................................|ale-yaml-options| | ||||||
|       swaglint............................|ale-yaml-swaglint| |       swaglint............................|ale-yaml-swaglint| | ||||||
|       yamllint............................|ale-yaml-yamllint| |       yamllint............................|ale-yaml-yamllint| | ||||||
|   7. Commands/Keybinds....................|ale-commands| |   8. Commands/Keybinds....................|ale-commands| | ||||||
|   8. API..................................|ale-api| |   9. API..................................|ale-api| | ||||||
|   9. Special Thanks.......................|ale-special-thanks| |   10. Special Thanks......................|ale-special-thanks| | ||||||
|   10. Contact.............................|ale-contact| |   11. Contact.............................|ale-contact| | ||||||
| 
 | 
 | ||||||
| =============================================================================== | =============================================================================== | ||||||
| 1. Introduction                                              *ale-introduction* | 1. Introduction                                              *ale-introduction* | ||||||
| @ -174,80 +175,246 @@ for the current buffer. | |||||||
| 
 | 
 | ||||||
| The following languages and tools are supported. | The following languages and tools are supported. | ||||||
| 
 | 
 | ||||||
| * ASM: 'gcc' | Notes: | ||||||
| * Ansible: 'ansible-lint' | 
 | ||||||
| * Asciidoc: 'proselint' | `^` No linters for text or Vim help filetypes are enabled by default. | ||||||
| * Bash: 'shell' (-n flag), 'shellcheck' | `!` These linters check only files on disk. See |ale-lint-file-linters| | ||||||
| * Bourne Shell: 'shell' (-n flag), 'shellcheck' | 
 | ||||||
| * C: 'cppcheck', 'gcc', 'clang', 'clang-format' | * ASM: `gcc` | ||||||
| * C++ (filetype cpp): 'clang', 'clangtidy', 'cppcheck', 'cpplint', 'gcc', 'clang-format' | * Ansible: `ansible-lint` | ||||||
| * C#: 'mcs' | * AsciiDoc: `proselint` | ||||||
| * Chef: 'foodcritic' | * Awk: `gawk` | ||||||
| * CMake: 'cmakelint' | * Bash: `shell` (-n flag), `shellcheck` | ||||||
| * CoffeeScript: 'coffee', 'coffelint' | * Bourne Shell: `shell` (-n flag), `shellcheck` | ||||||
| * Crystal: 'crystal' | * C: `cppcheck`, `cpplint`!, `gcc`, `clang`, `clang-format` | ||||||
| * CSS: 'csslint', 'stylelint' | * C++ (filetype cpp): `clang`, `clangcheck`!, `clangtidy`!, `cppcheck`, `cpplint`!, `gcc`, `clang-format` | ||||||
| * Cython (pyrex filetype): 'cython' | * C#: `mcs` | ||||||
| * D: 'dmd' | * Chef: `foodcritic` | ||||||
| * Dart: 'dartanalyzer' | * CMake: `cmakelint` | ||||||
| * Dockerfile: 'hadolint' | * CoffeeScript: `coffee`, `coffeelint` | ||||||
| * Elixir: 'credo', 'dogma' | * Crystal: `crystal`! | ||||||
| * Elm: 'elm-make' | * CSS: `csslint`, `stylelint` | ||||||
| * Erlang: 'erlc' | * Cython (pyrex filetype): `cython` | ||||||
| * Fortran: 'gcc' | * D: `dmd` | ||||||
| * Go: 'gofmt', 'go vet', 'golint', 'go build', 'gosimple', 'staticcheck' | * Dart: `dartanalyzer` | ||||||
| * FusionScript: 'fusion-lint' | * Dockerfile: `hadolint` | ||||||
| * Haml: 'hamllint' | * Elixir: `credo`, `dogma`! | ||||||
| * Handlebars: 'ember-template-lint' | * Elm: `elm-make` | ||||||
| * Haskell: 'ghc', 'stack-ghc', 'stack-build', 'ghc-mod', 'stack-ghc-mod', 'hlint', 'hdevtools' | * Erb: `erb`, `erubis` | ||||||
| * HTML: 'HTMLHint', 'proselint', 'tidy' | * Erlang: `erlc`, `SyntaxErl` | ||||||
| * Idris: 'idris' | * Fortran: `gcc` | ||||||
| * Java: 'javac' | * FusionScript: `fusion-lint` | ||||||
| * JavaScript: 'eslint', 'jscs', 'jshint', 'flow', 'prettier', 'prettier-eslint', 'xo' | * Go: `gofmt`, `go vet`, `golint`, `gometalinter`!, `go build`!, `gosimple`, `staticcheck` | ||||||
| * JSON: 'jsonlint' | * GraphQL: `gqlint` | ||||||
| * Kotlin: 'kotlinc' | * Haml: `haml-lint` | ||||||
| * LaTeX (tex): 'chktex', 'lacheck', 'proselint' | * Handlebars: `ember-template-lint` | ||||||
| * Lua: 'luacheck' | * Haskell: `ghc`, `stack-ghc`, `stack-build`!, `ghc-mod`, `stack-ghc-mod`, `hlint`, `hdevtools` | ||||||
| * Markdown: 'mdl', 'proselint', 'vale' | * HTML: `HTMLHint`, `proselint`, `tidy` | ||||||
| * MATLAB: 'mlint' | * Idris: `idris` | ||||||
| * nim: 'nim check' | * Java: `checkstyle`, `javac` | ||||||
| * nix: 'nix-instantiate' | * JavaScript: `eslint`, `jscs`, `jshint`, `flow`, `prettier`, `prettier-eslint`, `prettier-standard`, `standard`, `xo` | ||||||
| * nroff: 'proselint' | * JSON: `jsonlint` | ||||||
| * Objective-C: 'clang' | * Kotlin: `kotlinc`, `ktlint` | ||||||
| * Objective-C++: 'clang' | * LaTeX (tex): `chktex`, `lacheck`, `proselint` | ||||||
| * OCaml: 'merlin' (see |ale-ocaml-merlin|) | * Lua: `luacheck` | ||||||
| * Perl: 'perl' (-c flag), 'perlcritic' | * Markdown: `mdl`, `proselint`, `vale` | ||||||
| * PHP: 'hack', 'langserver', 'php' (-l flag), 'phpcs', 'phpmd', 'phpstan', 'phpcbf' | * MATLAB: `mlint` | ||||||
| * Pod: 'proselint' | * Nim: `nim check`! | ||||||
| * Pug: 'pug-lint' | * nix: `nix-instantiate` | ||||||
| * Puppet: 'puppet', 'puppet-lint' | * nroff: `proselint` | ||||||
| * Python: 'autopep8', 'flake8', 'isort', 'mypy', 'pylint', 'yapf' | * Objective-C: `clang` | ||||||
| * R: 'lintr' | * Objective-C++: `clang` | ||||||
| * ReasonML: 'merlin' | * OCaml: `merlin` (see |ale-ocaml-merlin|) | ||||||
| * reStructuredText: 'proselint' | * Perl: `perl -c`, `perl-critic` | ||||||
| * RPM spec: 'spec' | * PHP: `hack`, `langserver`, `php -l`, `phpcs`, `phpmd`, `phpstan`, `phpcbf` | ||||||
| * Rust: 'cargo', 'rls', 'rustc' (see |ale-integration-rust|) | * Pod: `proselint` | ||||||
| * Ruby: 'reek', 'rubocop' | * Pug: `pug-lint` | ||||||
| * SASS: 'sasslint', 'stylelint' | * Puppet: `puppet`, `puppet-lint` | ||||||
| * SCSS: 'sasslint', 'scsslint', 'stylelint' | * Python: `autopep8`, `flake8`, `isort`, `mypy`, `pycodestyle`, `pylint`!, `yapf` | ||||||
| * Scala: 'scalac', 'scalastyle' | * R: `lintr` | ||||||
| * Slim: 'slim-lint' | * ReasonML: `merlin` | ||||||
| * SML: 'smlnj' | * reStructuredText: `proselint` | ||||||
| * Stylus: 'stylelint' | * RPM spec: `rpmlint` | ||||||
| * SQL: 'sqlint' | * Ruby: `brakeman`, `rails_best_practices`!, `reek`, `rubocop`, `ruby` | ||||||
| * Swift: 'swiftlint', 'swiftformat' | * Rust: `cargo`!, `rls`, `rustc` (see |ale-integration-rust|) | ||||||
| * Texinfo: 'proselint' | * SASS: `sass-lint`, `stylelint` | ||||||
| * Text: 'proselint', 'vale' | * SCSS: `sass-lint`, `scss-lint`, `stylelint` | ||||||
| * TypeScript: 'eslint', 'tslint', 'tsserver', 'typecheck' | * Scala: `scalac`, `scalastyle` | ||||||
| * Verilog: 'iverilog', 'verilator' | * Slim: `slim-lint` | ||||||
| * Vim: 'vint' | * SML: `smlnj` | ||||||
| * Vim help: 'proselint' | * Stylus: `stylelint` | ||||||
| * XHTML: 'proselint' | * SQL: `sqlint` | ||||||
| * XML: 'xmllint' | * Swift: `swiftlint`, `swiftformat` | ||||||
| * YAML: 'swaglint', 'yamllint' | * Tcl: `nagelfar`! | ||||||
|  | * Texinfo: `proselint` | ||||||
|  | * Text^: `proselint`, `vale` | ||||||
|  | * TypeScript: `eslint`, `tslint`, `tsserver`, `typecheck` | ||||||
|  | * Verilog: `iverilog`, `verilator` | ||||||
|  | * Vim: `vint` | ||||||
|  | * Vim help^: `proselint` | ||||||
|  | * XHTML: `proselint` | ||||||
|  | * XML: `xmllint` | ||||||
|  | * YAML: `swaglint`, `yamllint` | ||||||
| 
 | 
 | ||||||
| =============================================================================== | =============================================================================== | ||||||
| 3. Global Options                                                 *ale-options* | 3. Linting                                                           *ale-lint* | ||||||
|  | 
 | ||||||
|  | ALE's primary focus is on checking for problems with your code with various | ||||||
|  | programs via some Vim code for integrating with those programs, referred to | ||||||
|  | as 'linters.' ALE supports a wide array of programs for linting by default, | ||||||
|  | but additional programs can be added easily by defining files in |runtimepath| | ||||||
|  | with the filename pattern `ale_linters/<filetype>/<filename>.vim`. For more | ||||||
|  | information on defining new linters, see the extensive documentation | ||||||
|  | for |ale#linter#Define()|. | ||||||
|  | 
 | ||||||
|  | Without any configuration, ALE will attempt to check all of the code for every | ||||||
|  | file you open in Vim with all available tools by default. To see what ALE | ||||||
|  | is doing, and what options have been set, try using the |:ALEInfo| command. | ||||||
|  | 
 | ||||||
|  | Most of the linters ALE runs will check the Vim buffer you are editing instead | ||||||
|  | of the file on disk. This allows you to check your code for errors before you | ||||||
|  | have even saved your changes. ALE will check your code in the following | ||||||
|  | circumstances, which can be configured with the associated options. | ||||||
|  | 
 | ||||||
|  | * When you modify a buffer.                - |g:ale_lint_on_text_changed| | ||||||
|  | * When you open a new or modified buffer.  - |g:ale_lint_on_enter| | ||||||
|  | * When you save a buffer.                  - |g:ale_lint_on_save| | ||||||
|  | * When the filetype changes for a buffer.  - |g:ale_lint_on_filetype_changed| | ||||||
|  | * If ALE is used to check ccode manually.  - |:ALELint| | ||||||
|  | 
 | ||||||
|  | In addition to the above options, ALE can also check buffers for errors when | ||||||
|  | you leave insert mode with |g:ale_lint_on_insert_leave|, which is off by | ||||||
|  | default. It is worth reading the documentation for every option. | ||||||
|  | 
 | ||||||
|  |                                                         *ale-lint-file-linters* | ||||||
|  | 
 | ||||||
|  | Some programs must be run against files which have been saved to disk, and | ||||||
|  | simply do not support reading temporary files or stdin, either of which are | ||||||
|  | required for ALE to be able to check for errors as you type. The programs | ||||||
|  | which behave this way are documented in the lists and tables of supported | ||||||
|  | programs. ALE will only lint files with these programs in the following | ||||||
|  | circumstances. | ||||||
|  | 
 | ||||||
|  | * When you open a new or modified buffer.  - |g:ale_lint_on_enter| | ||||||
|  | * When you save a buffer.                  - |g:ale_lint_on_save| | ||||||
|  | * When the filetype changes for a buffer.  - |g:ale_lint_on_filetype_changed| | ||||||
|  | * If ALE is used to check ccode manually.  - |:ALELint| | ||||||
|  | 
 | ||||||
|  | ALE will report problems with your code in the following ways, listed with | ||||||
|  | their relevant options. | ||||||
|  | 
 | ||||||
|  | * By updating loclist. (On by default)       - |g:ale_set_loclist| | ||||||
|  | * By updating quickfix. (Off by default)     - |g:ale_set_quickfix| | ||||||
|  | * By setting error highlights.               - |g:ale_set_highlights| | ||||||
|  | * By creating signs in the sign column.      - |g:ale_set_signs| | ||||||
|  | * By echoing messages based on your cursor.  - |g:ale_echo_cursor| | ||||||
|  | * By showing balloons for your mouse cursor  - |g:ale_set_balloons| | ||||||
|  | 
 | ||||||
|  | Please consult the documentation for each option, which can reveal some other | ||||||
|  | ways of tweaking the behaviour of each way of displaying problems. You can | ||||||
|  | disable or enable whichever options you prefer. | ||||||
|  | 
 | ||||||
|  | Most settings can be configured for each buffer. (|b:| instead of |g:|), | ||||||
|  | including disabling ALE for certain buffers with |b:ale_enabled|. The | ||||||
|  | |g:ale_pattern_options| setting can be used to configure files differently | ||||||
|  | based on regular expressions for filenames. For configuring entire projects, | ||||||
|  | the buffer-local options can be used with external plugins for reading Vim | ||||||
|  | project configuration files. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | =============================================================================== | ||||||
|  | 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 |ALEFixSuggest| command can be used to suggest tools that be used to | ||||||
|  | fix problems for the current buffer. | ||||||
|  | 
 | ||||||
|  | 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 either one argument `(buffer)` or | ||||||
|  | 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. | ||||||
|  | 
 | ||||||
|  | Functions receiving a variable number of arguments will not receive the second | ||||||
|  | argument `lines`. Functions should name two arguments if the `lines` argument | ||||||
|  | is desired. This is required to avoid unnecessary copying of the lines of | ||||||
|  | the buffers being checked. | ||||||
|  | 
 | ||||||
|  | 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. | ||||||
|  | 
 | ||||||
|  | For convenience, a plug mapping is defined for |ALEFix|, so you can set up a | ||||||
|  | keybind easily for fixing files. > | ||||||
|  | 
 | ||||||
|  |   " Bind F8 to fixing problems with ALE | ||||||
|  |   nmap <F8> <Plug>(ale_fix) | ||||||
|  | < | ||||||
|  | Files can be fixed automatically with the following options, which are all off | ||||||
|  | by default. | ||||||
|  | 
 | ||||||
|  | |g:ale_fix_on_save| - Fix files when they are saved. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | =============================================================================== | ||||||
|  | 5. Completion                                                  *ale-completion* | ||||||
|  | 
 | ||||||
|  | ALE offers some limited support for automatic completion of code while you | ||||||
|  | type. Completion is only supported via Language Server Protocol servers which | ||||||
|  | ALE can connect to for linting, which can offer good built-in support for | ||||||
|  | suggesting completion information. ALE will only suggest symbols for | ||||||
|  | completion for LSP linters that are enabled. | ||||||
|  | 
 | ||||||
|  | NOTE: At the moment, only `tsserver` for TypeScript code is supported for | ||||||
|  | completion. | ||||||
|  | 
 | ||||||
|  | Suggestions will be made while you type after completion is enabled. | ||||||
|  | Completion can be enabled by setting |g:ale_completion_enabled| to `1`. The | ||||||
|  | delay for completion can be configured with |g:ale_completion_delay|. ALE will | ||||||
|  | only suggest so many possible matches for completion. The maximum number of | ||||||
|  | items can be controlled with |g:ale_completion_max_suggestions|. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | =============================================================================== | ||||||
|  | 6. Global Options                                                 *ale-options* | ||||||
| 
 | 
 | ||||||
| g:airline#extensions#ale#enabled             *g:airline#extensions#ale#enabled* | g:airline#extensions#ale#enabled             *g:airline#extensions#ale#enabled* | ||||||
| 
 | 
 | ||||||
| @ -919,7 +1086,7 @@ b:ale_warn_about_trailing_whitespace     *b:ale_warn_about_trailing_whitespace* | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ||||||
| 3.1. Highlights                                                *ale-highlights* | 6.1. Highlights                                                *ale-highlights* | ||||||
| 
 | 
 | ||||||
| ALEError                                                             *ALEError* | ALEError                                                             *ALEError* | ||||||
| 
 | 
 | ||||||
| @ -1013,98 +1180,7 @@ ALEWarningSign                                                 *ALEWarningSign* | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| =============================================================================== | =============================================================================== | ||||||
| 4. Fixing Problems                                                    *ale-fix* | 7. Integration Documentation                                 *ale-integrations* | ||||||
| 
 |  | ||||||
| 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 |ALEFixSuggest| command can be used to suggest tools that be used to |  | ||||||
| fix problems for the current buffer. |  | ||||||
| 
 |  | ||||||
| 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 either one argument `(buffer)` or |  | ||||||
| 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. |  | ||||||
| 
 |  | ||||||
| Functions receiving a variable number of arguments will not receive the second |  | ||||||
| argument `lines`. Functions should name two arguments if the `lines` argument |  | ||||||
| is desired. This is required to avoid unnecessary copying of the lines of |  | ||||||
| the buffers being checked. |  | ||||||
| 
 |  | ||||||
| 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. |  | ||||||
| 
 |  | ||||||
| For convenience, a plug mapping is defined for |ALEFix|, so you can set up a |  | ||||||
| keybind easily for fixing files. > |  | ||||||
| 
 |  | ||||||
|   " Bind F8 to fixing problems with ALE |  | ||||||
|   nmap <F8> <Plug>(ale_fix) |  | ||||||
| < |  | ||||||
| Files can be fixed automatically with the following options, which are all off |  | ||||||
| by default. |  | ||||||
| 
 |  | ||||||
| |g:ale_fix_on_save| - Fix files when they are saved. |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| =============================================================================== |  | ||||||
| 5. Completion                                                  *ale-completion* |  | ||||||
| 
 |  | ||||||
| ALE offers some limited support for automatic completion of code while you |  | ||||||
| type. Completion is only supported via Language Server Protocol servers which |  | ||||||
| ALE can connect to for linting, which can offer good built-in support for |  | ||||||
| suggesting completion information. ALE will only suggest symbols for |  | ||||||
| completion for LSP linters that are enabled. |  | ||||||
| 
 |  | ||||||
| NOTE: At the moment, only `tsserver` for TypeScript code is supported for |  | ||||||
| completion. |  | ||||||
| 
 |  | ||||||
| Suggestions will be made while you type after completion is enabled. |  | ||||||
| Completion can be enabled by setting |g:ale_completion_enabled| to `1`. The |  | ||||||
| delay for completion can be configured with |g:ale_completion_delay|. ALE will |  | ||||||
| only suggest so many possible matches for completion. The maximum number of |  | ||||||
| items can be controlled with |g:ale_completion_max_suggestions|. |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| =============================================================================== |  | ||||||
| 6. Integration Documentation                                 *ale-integrations* |  | ||||||
| 
 | 
 | ||||||
| Linter and fixer options are documented in individual help files. See the | Linter and fixer options are documented in individual help files. See the | ||||||
| table of contents at |ale-contents|. | table of contents at |ale-contents|. | ||||||
| @ -1137,7 +1213,7 @@ ALE will use to search for Python executables. | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| =============================================================================== | =============================================================================== | ||||||
| 7. Commands/Keybinds                                             *ale-commands* | 8. Commands/Keybinds                                             *ale-commands* | ||||||
| 
 | 
 | ||||||
| ALEFix                                                                 *ALEFix* | ALEFix                                                                 *ALEFix* | ||||||
| 
 | 
 | ||||||
| @ -1153,6 +1229,7 @@ ALEFixSuggest                                                   *ALEFixSuggest* | |||||||
|   See |ale-fix| for more information. |   See |ale-fix| for more information. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |                                                                      *:ALELint* | ||||||
| ALELint                                                               *ALELint* | ALELint                                                               *ALELint* | ||||||
| 
 | 
 | ||||||
|   Run ALE once for the current buffer. This command can be used to run ALE |   Run ALE once for the current buffer. This command can be used to run ALE | ||||||
| @ -1222,6 +1299,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. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |                                                                      *:ALEInfo* | ||||||
| ALEInfo                                                               *ALEInfo* | ALEInfo                                                               *ALEInfo* | ||||||
| ALEInfoToClipboard                                         *ALEInfoToClipboard* | ALEInfoToClipboard                                         *ALEInfoToClipboard* | ||||||
| 
 | 
 | ||||||
| @ -1240,7 +1318,7 @@ ALEInfoToClipboard                                         *ALEInfoToClipboard* | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| =============================================================================== | =============================================================================== | ||||||
| 8. API                                                                *ale-api* | 9. API                                                                *ale-api* | ||||||
| 
 | 
 | ||||||
| ale#Queue(delay, [linting_flag, buffer_number])                   *ale#Queue()* | ale#Queue(delay, [linting_flag, buffer_number])                   *ale#Queue()* | ||||||
| 
 | 
 | ||||||
| @ -1648,13 +1726,13 @@ ALELint                                                       *ALELint-autocmd* | |||||||
|   echoing messges. |   echoing messges. | ||||||
| 
 | 
 | ||||||
| =============================================================================== | =============================================================================== | ||||||
| 9. Special Thanks                                          *ale-special-thanks* | 10. 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! | ||||||
| 
 | 
 | ||||||
| =============================================================================== | =============================================================================== | ||||||
| 10. Contact                                                       *ale-contact* | 11. 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 | ||||||
| @ -1662,10 +1740,8 @@ page for issues and more at https://github.com/w0rp/ale | |||||||
| If you wish to contact the author of this plugin directly, please feel | If you wish to contact the author of this plugin directly, please feel | ||||||
| free to send an email to devw0rp@gmail.com. | free to send an email to devw0rp@gmail.com. | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| Please drink responsibly, or not at all, which is ironically the preference | Please drink responsibly, or not at all, which is ironically the preference | ||||||
| of w0rp, who is teetotal. | of w0rp, who is teetotal. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
|   vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl: |   vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl: | ||||||
|  | |||||||
| @ -235,6 +235,14 @@ if ((run_custom_checks)); then | |||||||
|         <(grep --exclude=tags -roh "\*$tag_regex\*" doc | sort -u | sed 's/*//g') \ |         <(grep --exclude=tags -roh "\*$tag_regex\*" doc | sort -u | sed 's/*//g') \ | ||||||
|         <(grep --exclude=tags -roh "|$tag_regex|" doc | sort -u | sed 's/|//g') \ |         <(grep --exclude=tags -roh "|$tag_regex|" doc | sort -u | sed 's/|//g') \ | ||||||
|         | grep '^+[^+]' && EXIT=1 |         | grep '^+[^+]' && EXIT=1 | ||||||
|  | 
 | ||||||
|  |     echo '========================================' | ||||||
|  |     echo 'diff README.md and doc/ale.txt tables' | ||||||
|  |     echo '========================================' | ||||||
|  |     echo 'Differences follow:' | ||||||
|  |     echo | ||||||
|  | 
 | ||||||
|  |     ./check-supported-tools-tables || EXIT=$? | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| exit $EXIT | exit $EXIT | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 w0rp
						w0rp