summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md37
-rw-r--r--ale_linters/coffee/coffeelint.vim2
-rw-r--r--ale_linters/yaml/yamllint.vim2
-rw-r--r--doc/ale.txt39
-rw-r--r--img/echo.pngbin0 -> 5154 bytes
-rw-r--r--plugin/ale/aaflags.vim9
-rw-r--r--plugin/ale/cursor.vim21
-rw-r--r--plugin/ale/zmain.vim5
8 files changed, 104 insertions, 11 deletions
diff --git a/README.md b/README.md
index a628e9e3..d142f400 100644
--- a/README.md
+++ b/README.md
@@ -76,20 +76,23 @@ vimrc file for all given linters is as follows:
| Option | Description | Default |
| ------ | ----------- | ------- |
-| `g:ale_linters` | a dictionary of linters to whitelist | _not set_ |
-| `g:ale_lint_on_text_changed` | lint while typing | `1` |
+| `g:ale_echo_cursor` | echo errors when the cursor is over them | `1` |
+| `g:ale_echo_msg_format` | string format to use for the echoed message | `'%s'` |
+| `g:ale_echo_msg_error_str` | string used for error severity in echoed message | `'Error'` |
+| `g:ale_echo_msg_warning_str` | string used for warning severity in echoed message | `'Warning'` |
| `g:ale_lint_delay` | milliseconds to wait before linting | `200` |
+| `g:ale_linters` | a dictionary of linters to whitelist | _not set_ |
| `g:ale_lint_on_enter` | lint when opening a file | `1` |
| `g:ale_lint_on_save` | lint when saving a file | `0` |
+| `g:ale_lint_on_text_changed` | lint while typing | `1` |
| `g:ale_set_loclist` | set the loclist with errors | `1` |
| `g:ale_set_signs` | set gutter signs with error markers | `has('signs')` |
| `g:ale_sign_column_always` | always show the sign gutter | `0` |
| `g:ale_sign_error` | the text to use for errors in the gutter | `'>>'` |
-| `g:ale_sign_warning` | the text to use for warnings in the gutter | `'--'` |
| `g:ale_sign_offset` | an offset for sign ids | `1000000` |
-| `g:ale_echo_cursor` | echo errors when the cursor is over them | `1` |
+| `g:ale_sign_warning` | the text to use for warnings in the gutter | `'--'` |
+| `g:ale_statusline_format` | string format to use in statusline flag | `['%d error(s)', '%d warning(s)', 'OK']` |
| `g:ale_warn_about_trailing_whitespace` | enable trailing whitespace warnings for some linters | `1` |
-| `g:ale_statusline_format` | String format to use in statusline flag | `['%d error(s)', '%d warning(s)', 'OK']` |
### Selecting Particular Linters
@@ -155,6 +158,30 @@ let g:ale_statusline_format = ['⨉ %d', '⚠ %d', '⬥ ok']
![Statusline with issues](img/issues.png)
![Statusline with no issues](img/no_issues.png)
+
+### Customize echoed message
+
+There are 3 global options that allow customizing the echoed message.
+
+- `g:ale_echo_msg_format` where:
+ * `%s` is the error message itself
+ * `%linter%` is the linter name
+ * `%severity` is the severity type
+- `g:ale_echo_msg_error_str` is the string used for error severity.
+- `g:ale_echo_msg_warning_str` is the string used for warning severity.
+
+So for example this:
+
+```vim
+let g:ale_echo_msg_error_str = 'E'
+let g:ale_echo_msg_error_str = 'W'
+let g:ale_echo_msg_fomat = '[%linter%] %s [%severity%]'
+```
+
+Will give you:
+
+![Echoed message](img/echo.png)
+
## Installation
To install this plugin, you should use one of the following methods.
diff --git a/ale_linters/coffee/coffeelint.vim b/ale_linters/coffee/coffeelint.vim
index aba29c4a..972fa25d 100644
--- a/ale_linters/coffee/coffeelint.vim
+++ b/ale_linters/coffee/coffeelint.vim
@@ -27,7 +27,7 @@ function! ale_linters#coffee#coffeelint#Handle(buffer, lines)
let line = l:match[1] + 0
let column = 1
let type = l:match[3] ==# 'error' ? 'E' : 'W'
- let text = l:match[3] . ': ' . l:match[4]
+ let text = l:match[4]
" vcol is needed to indicate that the column is a character
call add(output, {
diff --git a/ale_linters/yaml/yamllint.vim b/ale_linters/yaml/yamllint.vim
index cb7ca4b9..92a4313d 100644
--- a/ale_linters/yaml/yamllint.vim
+++ b/ale_linters/yaml/yamllint.vim
@@ -23,7 +23,7 @@ function! ale_linters#yaml#yamllint#Handle(buffer, lines)
let line = match[1] + 0
let col = match[2] + 0
let type = match[3]
- let text = printf('[%s]%s', type, match[4])
+ let text = match[4]
" vcol is Needed to indicate that the column is a character.
call add(output, {
diff --git a/doc/ale.txt b/doc/ale.txt
index bdd2b801..ec2e8028 100644
--- a/doc/ale.txt
+++ b/doc/ale.txt
@@ -1,7 +1,7 @@
-*ale.txt* For Vim version 8.0. Last change: 2016 October 7
+*ale.txt* For Vim version 8.0. Last change: 2016 October 10
*ale*
-ALE - Asychronous Lint Engine
+ALE - Asynchronous Lint Engine
===============================================================================
CONTENTS *ale-contents*
@@ -157,7 +157,7 @@ g:ale_set_signs *g:ale_set_signs*
When this option is set to `1`, the |sign| column will be populated with
signs marking where errors and warnings appear in the file. The
- 'ALEErrorSign' and 'ALEWarningSign' highlight groups will be used to provide
+ `ALEErrorSign` and `ALEWarningSign` highlight groups will be used to provide
highlighting for the signs. The text used for signs can be customised with
the |g:ale_sign_error| and |g:ale_sign_warning| options.
@@ -216,6 +216,39 @@ g:ale_echo_cursor *g:ale_echo_cursor*
error at a column nearest to the cursor when the cursor is resting on a line
which contains a warning or error. This option can be set to `0` to disable
this behaviour.
+ The format of the message can be customizable in |g:ale_echo_msg_format|.
+
+
+g:ale_echo_msg_format *g:ale_echo_msg_format*
+
+ Type: |String|
+ Default: `%s`
+
+ This variable defines the format of the echoed message. The `%s` is the
+ error message itself, and it can contain the following handlers:
+ - `%linter%` for linter's name
+ - `%severity%` for the type of severity
+ Note |`g:ale_echo_cursor`| should be setted to 1
+
+
+g:ale_echo_msg_error_str *g:ale_echo_msg_error_str*
+
+ Type: |String|
+ Default: `Error`
+
+ The string used for error severity in the echoed message.
+ Note |`g:ale_echo_cursor`| should be setted to 1
+ Note |`g:ale_echo_msg_format`| should contain the `%severity%` handler
+
+
+g:ale_echo_msg_warning_str *g:ale_echo_msg_warning_str*
+
+ Type: |String|
+ Default: `Warning`
+
+ The string used for warning severity in the echoed message.
+ Note |`g:ale_echo_cursor`| should be setted to 1
+ Note |`g:ale_echo_msg_format`| should contain the `%severity%` handler
g:ale_warn_about_trailing_whitespace *g:ale_warn_about_trailing_whitespace*
diff --git a/img/echo.png b/img/echo.png
new file mode 100644
index 00000000..671a66b2
--- /dev/null
+++ b/img/echo.png
Binary files differ
diff --git a/plugin/ale/aaflags.vim b/plugin/ale/aaflags.vim
index 10d82128..f18dcc43 100644
--- a/plugin/ale/aaflags.vim
+++ b/plugin/ale/aaflags.vim
@@ -48,3 +48,12 @@ let g:ale_sign_column_always = get(g:, 'ale_sign_column_always', 0)
let g:ale_statusline_format = get(g:, 'ale_statusline_format',
\ ['%d error(s)', '%d warning(s)', 'OK']
\)
+
+" String format for the echoed message
+" A %s is mandatory
+" It can contain 2 handlers: %linter%, %severity%
+let g:ale_echo_msg_format = get(g:, 'ale_echo_msg_format', '%s')
+
+" Strings used for severity in the echoed message
+let g:ale_echo_msg_error_str = get(g:, 'ale_echo_msg_error_str', 'Error')
+let g:ale_echo_msg_warning_str = get(g:, 'ale_echo_msg_warning_str', 'Warning')
diff --git a/plugin/ale/cursor.vim b/plugin/ale/cursor.vim
index e0751a8c..24f1f183 100644
--- a/plugin/ale/cursor.vim
+++ b/plugin/ale/cursor.vim
@@ -7,6 +7,23 @@ endif
let g:loaded_ale_cursor = 1
+" Return a formatted message according to g:ale_echo_msg_format variable
+function! s:GetMessage(linter, type, text) abort
+ let msg = g:ale_echo_msg_format
+ let type = a:type ==# 'E'
+ \ ? g:ale_echo_msg_error_str
+ \ : g:ale_echo_msg_warning_str
+ " Capitalize the 1st character
+ let text = toupper(a:text[0]) . a:text[1:-1]
+
+ " Replace handlers if they exist
+ for [k, v] in items({'linter': a:linter, 'severity': type})
+ let msg = substitute(msg, '\V%' . k . '%', v, '')
+ endfor
+
+ return printf(msg, text)
+endfunction
+
" This function will perform a binary search to find a message from the
" loclist to echo when the cursor moves.
function! s:BinarySearch(loclist, line, column)
@@ -81,7 +98,9 @@ function! ale#cursor#EchoCursorWarning(...)
let index = s:BinarySearch(loclist, pos[1], pos[2])
if index >= 0
- call ale#cursor#TruncatedEcho(loclist[index]['text'])
+ let l = loclist[index]
+ let msg = s:GetMessage(l.linter_name, l.type, l.text)
+ call ale#cursor#TruncatedEcho(msg)
else
echo
endif
diff --git a/plugin/ale/zmain.vim b/plugin/ale/zmain.vim
index 96d20491..a918f663 100644
--- a/plugin/ale/zmain.vim
+++ b/plugin/ale/zmain.vim
@@ -137,6 +137,11 @@ function! s:HandleExit(job)
" Make some adjustments to the loclists to fix common problems.
call s:FixLoclist(buffer, linter_loclist)
+ " Remember which linter returned these items for later use.
+ for obj in linter_loclist
+ let obj.linter_name = linter.name
+ endfor
+
if g:ale_buffer_should_reset_map[buffer]
let g:ale_buffer_should_reset_map[buffer] = 0
let g:ale_buffer_loclist_map[buffer] = []