diff options
author | w0rp <devw0rp@gmail.com> | 2017-09-03 21:53:39 +0100 |
---|---|---|
committer | w0rp <devw0rp@gmail.com> | 2017-09-03 21:53:48 +0100 |
commit | 6833e01f23d07b18828fbf34c02636c63560d955 (patch) | |
tree | 786c54584c223a45b86753a72cc0c1a488cb008e /autoload | |
parent | 0aa8640d07628e179fa0fc9a93e7c67579d3f78a (diff) | |
download | ale-6833e01f23d07b18828fbf34c02636c63560d955.zip |
#894 - Replace ugly temporary filenames for Haskell problems with the buffer's basename
Diffstat (limited to 'autoload')
-rw-r--r-- | autoload/ale/handlers/haskell.vim | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/autoload/ale/handlers/haskell.vim b/autoload/ale/handlers/haskell.vim index bac5f4ae..9c8d0586 100644 --- a/autoload/ale/handlers/haskell.vim +++ b/autoload/ale/handlers/haskell.vim @@ -1,11 +1,24 @@ " Author: w0rp <devw0rp@gmail.com> " Description: Error handling for the format GHC outputs. +" Remember the directory used for temporary files for Vim. +let s:temp_dir = fnamemodify(tempname(), ':h') +" Build part of a regular expression for matching ALE temporary filenames. +let s:temp_regex_prefix = +\ '\M' +\ . substitute(s:temp_dir, '\\', '\\\\', 'g') +\ . '\.\{-}' + function! ale#handlers#haskell#HandleGHCFormat(buffer, lines) abort " Look for lines like the following. " "Appoint/Lib.hs:8:1: warning: "Appoint/Lib.hs:8:1: + let l:basename = expand('#' . a:buffer . ':t') + " Build a complete regular expression for replacing temporary filenames + " in Haskell error messages with the basename for this file. + let l:temp_filename_regex = s:temp_regex_prefix . l:basename + let l:pattern = '\v^([a-zA-Z]?:?[^:]+):(\d+):(\d+):(.*)?$' let l:output = [] @@ -51,6 +64,9 @@ function! ale#handlers#haskell#HandleGHCFormat(buffer, lines) abort let l:type = 'E' endif + " Replace temporary filenames in problem messages with the basename + let l:text = substitute(l:text, l:temp_filename_regex, l:basename, 'g') + call add(l:output, { \ 'lnum': l:match[2] + 0, \ 'col': l:match[3] + 0, |