summaryrefslogtreecommitdiff
path: root/autoload
diff options
context:
space:
mode:
authorHoracio Sanson <horacio@allm.net>2018-08-30 11:39:03 +0900
committerHoracio Sanson <horacio@allm.net>2018-09-06 13:46:59 +0900
commita9333c2866ad604ef5b8523af7fb1fce10057833 (patch)
tree9c8d51ccbd6282d27e503690a02153a1f9969a25 /autoload
parentd476578a402763f2c6e4e0ada2eb345d0ac938d7 (diff)
downloadale-a9333c2866ad604ef5b8523af7fb1fce10057833.zip
Fix #1822 - support go-langserver lsp.
Diffstat (limited to 'autoload')
-rw-r--r--autoload/ale/go.vim27
1 files changed, 27 insertions, 0 deletions
diff --git a/autoload/ale/go.vim b/autoload/ale/go.vim
new file mode 100644
index 00000000..a166480a
--- /dev/null
+++ b/autoload/ale/go.vim
@@ -0,0 +1,27 @@
+" Author: Horacio Sanson https://github.com/hsanson
+" Description: Functions for integrating with Go tools
+
+" Find the nearest dir listed in GOPATH and assume it the root of the go
+" project.
+function! ale#go#FindProjectRoot(buffer) abort
+ let l:sep = has('win32') ? ';' : ':'
+
+ let l:filename = ale#path#Simplify(expand('#' . a:buffer . ':p'))
+
+ for l:name in split($GOPATH, l:sep)
+ let l:path_dir = ale#path#Simplify(l:name)
+
+ " Use the directory from GOPATH if the current filename starts with it.
+ if l:filename[: len(l:path_dir) - 1] is? l:path_dir
+ return l:path_dir
+ endif
+ endfor
+
+ let l:default_go_path = ale#path#Simplify(expand('~/go'))
+
+ if isdirectory(l:default_go_path)
+ return l:default_go_path
+ endif
+
+ return ''
+endfunction