diff options
author | Yaroslav <contact@yaroslavps.com> | 2020-03-31 17:52:49 +0300 |
---|---|---|
committer | Yaroslav <contact@yaroslavps.com> | 2020-03-31 17:52:49 +0300 |
commit | 7217c7749e5403c9c7856c1d12c7986eb9c3b460 (patch) | |
tree | d60a112d9119a51af1cf5f590c5efad81751edf6 /dotfiles/.local/share/nvim/site/autoload/neomake/makers/ft/elm.vim | |
parent | 9a3aa7b20a67c1b7991da1da9508ad5f78f76352 (diff) | |
download | vimrice-7217c7749e5403c9c7856c1d12c7986eb9c3b460.tar.gz vimrice-7217c7749e5403c9c7856c1d12c7986eb9c3b460.zip |
Goodbye vim, been using neovim for ages now; home directory cleanup
Diffstat (limited to 'dotfiles/.local/share/nvim/site/autoload/neomake/makers/ft/elm.vim')
-rw-r--r-- | dotfiles/.local/share/nvim/site/autoload/neomake/makers/ft/elm.vim | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/dotfiles/.local/share/nvim/site/autoload/neomake/makers/ft/elm.vim b/dotfiles/.local/share/nvim/site/autoload/neomake/makers/ft/elm.vim new file mode 100644 index 0000000..fe1d2f6 --- /dev/null +++ b/dotfiles/.local/share/nvim/site/autoload/neomake/makers/ft/elm.vim @@ -0,0 +1,53 @@ +" vim: ts=4 sw=4 et + +function! neomake#makers#ft#elm#EnabledMakers() abort + return ['elmMake'] +endfunction + +function! neomake#makers#ft#elm#elmMake() abort + return { + \ 'exe': 'elm-make', + \ 'args': ['--report=json', '--output=' . g:neomake#compat#dev_null], + \ 'process_output': function('neomake#makers#ft#elm#ElmMakeProcessOutput') + \ } +endfunction + +function! neomake#makers#ft#elm#ElmMakeProcessOutput(context) abort + let errors = [] + " output will be a List, containing either: + " 1) A success message + " 2) A string holding a JSON array for both warnings and errors + + for line in a:context.output + if line[0] ==# '[' + let decoded = neomake#compat#json_decode(line) + for item in decoded + if get(item, 'type', '') ==# 'warning' + let code = 'W' + else + let code = 'E' + endif + + let compiler_error = item['tag'] + let message = item['overview'] + let filename = item['file'] + let region_start = item['region']['start'] + let region_end = item['region']['end'] + let row = region_start['line'] + let col = region_start['column'] + let length = region_end['column'] - region_start['column'] + + let error = { + \ 'text': compiler_error . ' : ' . message, + \ 'type': code, + \ 'lnum': row, + \ 'col': col, + \ 'length': length, + \ 'filename': filename, + \ } + call add(errors, error) + endfor + endif + endfor + return errors +endfunction |