]> Sergey Matveev's repositories - dotfiles.git/blob - vim/.vim/pack/stargrave/start/go-gogetdoc/autoload/go/getdoc.vim
Move to vim9script
[dotfiles.git] / vim / .vim / pack / stargrave / start / go-gogetdoc / autoload / go / getdoc.vim
1 vim9script
2
3 # Popup documentation of specified object under the cursor
4 # Requires github.com/zmb3/gogetdoc in the $PATH
5
6 export def Status(): string
7     if exists("b:gogetdoc_job") && job_status(b:gogetdoc_job) == "run" | return "GD" | endif
8     return ""
9 enddef
10
11 export def Got(ch: channel)
12     var msgs: list<string>
13     while ch_status(ch) == "buffered"
14         msgs = add(msgs, ch_read(ch))
15     endwhile
16     if exists("b:godocid") | popup_close(b:godocid) | endif
17     if len(msgs) == 0
18         echohl WarningMsg | echomsg "No go doc" | echohl None
19         return
20     endif
21     msgs = msgs[2 :]
22     b:godocid = popup_atcursor(msgs[2 : -2],
23         {"wrap": 0, "title": msgs[0], "move": "word"})
24 enddef
25
26 export def Do()
27     if exists("b:gogetdoc_job") && job_status(b:gogetdoc_job) == "run" | return | endif
28     var pos = line2byte(line(".")) + col(".") - 2
29     var cmdline = "gogetdoc -pos " .. expand("%p") .. ":#" .. pos
30     echomsg cmdline
31     b:gogetdoc_job = job_start(cmdline, {
32         "in_mode": "nl",
33         "err_io": "null",
34         "close_cb": "go#getdoc#Got",
35     })
36 enddef