summaryrefslogtreecommitdiff
path: root/autoload
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2017-09-03 21:53:39 +0100
committerw0rp <devw0rp@gmail.com>2017-09-03 21:53:48 +0100
commit6833e01f23d07b18828fbf34c02636c63560d955 (patch)
tree786c54584c223a45b86753a72cc0c1a488cb008e /autoload
parent0aa8640d07628e179fa0fc9a93e7c67579d3f78a (diff)
downloadale-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.vim16
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,