-" Popup documentation of specified object under the cursor
-" Requires github.com/zmb3/gogetdoc in the $PATH
+vim9script
-function! go#getdoc#status()
+# Popup documentation of specified object under the cursor
+# Requires github.com/zmb3/gogetdoc in the $PATH
+
+export def Status(): string
if exists("b:gogetdoc_job") && job_status(b:gogetdoc_job) == "run" | return "GD" | endif
return ""
-endfunction
+enddef
-function! go#getdoc#got(ch) abort
- let msgs = []
- while ch_status(a:ch) == "buffered"
- let msgs = add(msgs, ch_read(a:ch))
+export def Got(ch: channel)
+ var msgs: list<string>
+ while ch_status(ch) == "buffered"
+ msgs = add(msgs, ch_read(ch))
endwhile
- if exists("b:godocid") | call popup_close(b:godocid) | endif
+ if exists("b:godocid") | popup_close(b:godocid) | endif
if len(msgs) == 0
echohl WarningMsg | echomsg "No go doc" | echohl None
return
endif
- let msgs = msgs[2:]
- let b:godocid = popup_atcursor(msgs[2:-2],
- \ {"wrap": 0, "title": msgs[0], "move": "word"})
-endfunction
+ msgs = msgs[2 :]
+ b:godocid = popup_atcursor(msgs[2 : -2],
+ {"wrap": 0, "title": msgs[0], "move": "word"})
+enddef
-function! go#getdoc#do() abort
+export def Do()
if exists("b:gogetdoc_job") && job_status(b:gogetdoc_job) == "run" | return | endif
- let pos = line2byte(line(".")) + col(".") - 2
- let cmdline = "gogetdoc -pos " . expand("%p") . ":#" . pos
+ var pos = line2byte(line(".")) + col(".") - 2
+ var cmdline = "gogetdoc -pos " .. expand("%p") .. ":#" .. pos
echomsg cmdline
- let b:gogetdoc_job = job_start(cmdline, {
- \"in_mode": "nl",
- \"err_io": "null",
- \"close_cb": "go#getdoc#got",
- \})
-endfunction
+ b:gogetdoc_job = job_start(cmdline, {
+ "in_mode": "nl",
+ "err_io": "null",
+ "close_cb": "go#getdoc#Got",
+ })
+enddef