Implements suggestions and recommendations suggested by the first review
of the "Advance C# linter based on mcs -t:module (#952)" pull request.
- Clarifies and simplifies description of linters and options
- Added links to help file and marked the mcsc linter as to be run only
when file in buffer is saved or loaded.
- Added comments to the mcsc.vim file to clarify code
- removed type checks considered not necessary be reviewer.
- addresses findings by vader
- removed call to getcwd and cd in vim script
- handler expands file names relative to route of source tree into
absolute pathes. Fixes errors not being marked when vim is started
from subdirectory of source tree.
- implements tests for mcs.vim and mcsc.vim linter
The existing c-charp linter used the --syntax check mode of the mono mcs
compiler only. The new mcsc linter tries to compile the files located in
a directory tree located bejond the specified source directory or the
current one if no source is explicitly specified. The resulting module
target is placed in a temporary file managed by ale.
* Add prettier fixer support for typescript
* Add prettier fixer support for css and scss
* Add prettier fixer support for json
* Use getbufvar() to get &filetype
* Detect and use CM files for smlnj
* Split into two checkers
- one for CM projects
- one for single SML files
* Fix some typos
* Fix error caught by writing tests
We want to actually use `glob` to search in paths upwards from us.
(Previously we were just searching in the current directory every time!)
* Fix errors from former test run
* Write tests for GetCmFile and GetExecutableSmlnj
* Typo in 'smlnj/' fixture filenames
This linter works by invoking the `thrift` compiler with the buffer
contents and reporting any parser and code generation issues.
The handler rolls its own output-matching loop because we have the
(unfortunate) requirement of handling error output that spans multiple
lines.
Unit tests cover both the command callback and handler, and there is
initial documentation for all of the option variables.
* Add support for prettier configuration file.
As of version 1.6.0, prettier allows passing a `--config` argument with
a path to a configuration file.
* Add test prettier configuration file.
* Add option to use local prettier configuration.
* Add description for new prettier option.
* Also check if the config is present before using it.
SwiftFormat is a tool that can be used to format Swift files. This commit adds
support for using SwiftFormat as a fixer from ALE. It looks for executables in
the Pods directory, then the Pods directory for a React Native project, then
finally falls back to the globally installed instance if neither of those were
found.
https://github.com/nicklockwood/SwiftFormat
A limited number of clang-tidy checks can be used with C, too. I pretty much
copied and refactored the C++ clang-tidy linter, and added some documentation
about C-compatible checks.
* Add support for scalastyle
* Add scalastyle docs
* scalastyle support for column numbers
* off by one column
* Add tests for scalastyle command and handler
* update readme for scalastyle
* allow full scalastyle options instead of just config file
* fix indentation
* allow scalastyle config file in parent directories by a couple names.
* check for missing match args with empty
* remove echo
* use a for loop
* Move FindRailsRoot() to more general location
* Add rails_best_practices handler (resolves#655)
* Update documentation for rails_best_practices
Also add brakeman to *ale* documentation.
* rails_best_practices: allow overriding the executable
* rails_best_practices: format help correctly
* rails_best_practices: capture tool output on Windows
* Vim scripts shouldn't have hyphens
Especially not ones that will be autoloaded. You can't have a hyphen in
a function name, so autoloading functions based on filename will fail.
* Add g:haskell_stack_build_options, default: --fast
If we're going to use the --fast option, we may as well go the whole 9
yards and let the user configure the 'stack build' flags.
* Create documentation for stack-build options
* Add stack-build linter for Haskell
The stack-build linter works better than the other two linters when
you're working with an entire Haskell project. It builds the project
entirely and reports any errors.
The other two Haskell GHC linters only work on single files, which can
result in spurious errors (for example, not being able to find imports).
* Document all available Haskell linters
* Split GHC checkers into separate files
* Added missing statement about a `<Plug>` mapping.
* Fixed logical mistake related to "option calling".
* Rectified article usage according to a request.
* Use different reporter to support older versions of jscs
* Add test and make more consistent with other code
* Add documentation for jscs
* Add more test coverage
* Add documentation for hadolint (doc/ale-hadolint.txt)
* Allow `hadolint` linter to run via docker image
These changes enable the `hadolint` linter to run via the author's
docker image, if present. Three modes are supported:
* never use docker;
* always use docker; and
* use docker as a failback.
Just to prevent any confusion, the documentation now explicitly states
that setting `g:ale_perl_perlcritic_profile` to an empty string merely
disables passing an explicit profile to `perlcritic` and does not cause
`--no-profile` to be set.
* Adds an option to pass additional arguments to the verilog/verilator linter
The new otion is g:ale_verilog_verilator_options
+ doc
* Spell check verilog linter doc file
* Add entries to the verilog linters in the doc table of content
* Vader test for verilog/verilator linter args option verilog_verilator_options
* Add column number to perlcritic linting output
This returns the column number of the perlcritic error so that ale can
show the column in addition to the line where perlcritic found an error.
* Add perlcritic configuration for rule names
This adds a configuration setting so that the name of the perlcritic
rule is shown [Rule::Name] after the error message.
This is useful to lookup the rule failure.
* Add a vader test for perlcritic#GetCommand
* Add :ALEFirst and :ALELast commands
* Add documentation for ALEFirst and ALELast commands
* Add tests for ale#loclist_jumping#JumpToIndex()
* Fix the loclist jumping tests
* Add ktlint support (without formatting) for kotlin filetype
* Fix code style and refactor to use ALE utility functions (GetMatches)
* Remove options for configuration file
* Refactor: Rename exec variable and use ale#Set for variable configuration
"-X Disables all warnings regardless of use warnings or $^W". See
"perldoc perlrun" or http://perldoc.perl.org/perlrun.html
With the current defaults, warnings are squashed. For example:
$ perl -X -Mwarnings -c -e'BEGIN { 42 + undef }'
-e syntax OK
$ perl -Mwarnings -c -e'BEGIN { 42 + undef }'
Use of uninitialized value in addition (+) at -e line 1.
-e syntax OK
So, it's not clear from the current defaults whether Ale wants to remove
warnings or enable them. As it stands, it's trying to do both and the
disabling appears to win.
This commit enables warnings by default.
* Initial attempt at an rpmlint linter.
* Add some basic documentation.
* Play with indentation in the test file.
* Another attempt to fix the rpmlint test.
* Hopefully this does it.
* Adds options to foodcritic linter
Adds a way to pass command line options to the foodcritic command and
documentation about it.
* Creates a simple test for foodcritic command callback
This test simply runs the GetCommand function for the foodcritic linter
and feeds it with some test variables to assert the command line is
being created/escaped correctly.
* Makes foodcritic linter use a command callback
Following review comments, changes the foodcritic linter to use a
`GetCommand` callback for the `command_callback` linter option.
Makes sure that `~` are escaped: flags on foodcritic command line are
negated by adding a `~` in front of the specific cop name:
```
foodcritic -t ~FC011
```
But the way the commands are executed cause foodcritic to fail (since
tilde is recognized as home directory).
* Fixes the doc to include new variables
* [#420] Add options to facilitate linting only in normal mode
ale_lint_on_text_changed:
Allow setting to 'insert' or 'normal' to lint when text is changed only in
insert or normal mode respectively.
ale_lint_on_insert_leave:
This flag can be set to 1 to enable linting when leaving insert mode.
* [#420] Test updated global options
Ale should
- bind to TextChanged events when g:ale_lint_on_text_changed = 1
- bind to TextChanged events when g:ale_lint_on_text_changed = 'always'
- bind to InsertLeave event when g:ale_lint_on_insert_leave = 1
* Add erlc lint for Erlang (#248)
* Ignore certain errors in Erlang .hrl files (#248)
A .hrl file does not need to have a -module definition. Additionally, it
is common to have unused elements in such a file, as the entities will
be used in a file including the header.
* Address change requests to Erlang linter
* Support netcore project linting.
* Support check on the fly.
* Remove debug.
* Rename csc.vim to mcs.vim as it should be.
* Update README.
* Update doc.
* Using `=~#` instead of `=~`.
* Add rustc checker for rust files
* Add documentation for rustc
* Use a nice helper function
* Add cargo as linter
* Complete the doc for rust linters
* Put l: in front of every local variable
* Apply the requested stylistic changes
* add go build for build errors
* Add go build to doc and README
* Improvement for Go build
Go build works on package level, so copy over the other files
that belong to the same package to the temp folder as well.
* revert back to simple go build
* change gobuild script var name
* Add support for Elm linting
* Adding documentation for Elm
* Adjusting spacing
* Addressing concerns listed in pull request
Removed the s:FindRootDirectory function as it does not make much sense
in this context. Adjusted the rest of the code to handle the removal of
that function, including using the ale#util function to find the nearest
file.
Ensured that when an empty filepath is found, the code does not attempt
to change directories.
Ensured that the linter would take from stdin using the wrapper.
* Add chktex linter
* Alias plaintex to tex
* Add lacheck linter
Closes#179
* Add the chktex warning code
This very useful to have when you want to suppress lint warnings with LaTeX
comments. chktex tends to be a bit noisy so this often needed.
* lacheck: Make regex less specific
To be more robust future changes in `stdin-wrapper`
* Start adding Puppet linters
* Use the correct output stream for puppet parser
* Finish Puppet and puppet-lint linters
* Add Puppet information to documentation
Adding support the foodcritic linter for Chef files.
Listing all issues as warnings for now
Doesn't get in the way of rubocop linting if ft=ruby.chef
Updated documentation
Closes#127
* Add `javascript/flow` linter
* Add documentation for flow
* Remove a line from the docs that was from eslint
* Only run if flow gives output; Correct link in doc
* Address PR feedback #157
* Add Credo linter for Elixir
* Add requested changes
TODO: check if all message types are covered in `if` chain.
* Add information about Credo linter to README
* Add information about Credo linter to doc
* First pass at optimizing ale to autoload
First off, the structure/function names should be revised a bit,
but I will wait for @w0rp's input before unifying the naming style.
Second off, the docs probably need some more work, I just did some
simple find-and-replace work.
With that said, this pull brings major performance gains for ale. On my
slowest system, fully loading ale and all its code takes around 150ms.
I have moved all of ale's autoload-able code to autoload/, and in
addition, implemented lazy-loading of linters. This brings load time on
that same system down to 5ms.
The only downside of lazy loading is that `g:ale_linters` cannot be
changed at runtime; however, it also speeds up performance at runtime by
simplfying the logic greatly.
Please let me know what you think!
Closes#59
* Address Travis/Vint errors
For some reason, ale isn't running vint for me...
* Incorporate feedback, make fixes
Lazy-loading logic is much improved.
* Add header comments; remove incorrect workaround
* Remove unneeded plugin guards
* Fix lazy-loading linter logic
Set the wrong variable....
* Fix capitialization
* Implement an option to configure the echoed message, #48
Via `g:ale_echo_msg_format` where:
- `%s` is the error message itself
- `%linter%` is the linter name
- `%severity` is the severity type
e.g
let g:ale_echo_msg_fomat = '[%linter%] [%severity%] %s'
* Add new options for defining the string used for errors in echoed
message
`g:ale_echo_msg_error_str` and `g:ale_echo_msg_warning_str`
* Change text output of some linters
Now that the echoed message can be customized, no need to add the type
to the text variable.
* Update README & documentation file
* Fix some typos
* Sort the table of options alphabetically (except echo_msg_x_str options)
* Added echo warning str option to the doc
* Add c gcc option in the doc
* Add missing tag for eslint option in the doc
* Correct typo in doc (' ' instead of '.')
* add cpp linter
* correct typo in doc
* add filetype information for c++