123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- let s:buf_nr = -1
- function! go#ui#OpenWindow(title, content, filetype) abort
-
- call go#util#Windo("unlet! w:vim_go_return_window")
-
- let w:vim_go_return_window = 1
-
- if !bufexists(s:buf_nr)
- execute 'botright new'
- file `="[" . a:title . "]"`
- let s:buf_nr = bufnr('%')
- elseif bufwinnr(s:buf_nr) == -1
- execute 'botright new'
- execute s:buf_nr . 'buffer'
- elseif bufwinnr(s:buf_nr) != bufwinnr('%')
- execute bufwinnr(s:buf_nr) . 'wincmd w'
- endif
-
- exe 'resize' . len(a:content)
- execute "setlocal filetype=".a:filetype
-
- setlocal bufhidden=delete
- setlocal buftype=nofile
- setlocal noswapfile
- setlocal nobuflisted
- setlocal winfixheight
- setlocal cursorline
- setlocal nonumber
- setlocal norelativenumber
- setlocal showbreak=""
-
- setlocal modifiable
-
- %delete _
-
- call append(0, a:content)
-
- $delete _
-
- setlocal nomodifiable
-
- echon
- endfunction
- function! go#ui#GetReturnWindow() abort
- for l:wn in range(1, winnr("$"))
- if !empty(getwinvar(l:wn, "vim_go_return_window"))
- return l:wn
- endif
- endfor
- endfunction
- function! go#ui#CloseWindow() abort
-
- if bufexists(s:buf_nr)
- let ui_window_number = bufwinnr(s:buf_nr)
- if ui_window_number != -1
- execute ui_window_number . 'close'
- endif
- endif
-
- let l:rw = go#ui#GetReturnWindow()
- if !empty(l:rw)
- execute l:rw . 'wincmd w'
- unlet! w:vim_go_return_window
- endif
- endfunction
- function! go#ui#OpenDefinition(filter) abort
- let curline = getline('.')
-
- if curline =~ a:filter || curline =~ "^$"
-
- echo ""
- return
- endif
-
- let mx = '^\(^\S*\)\s*\(.\{-}\):\(\d\+\):\(\d\+\)'
-
- let tokens = matchlist(curline, mx)
-
- let expr = tokens[2] . ":" . tokens[3] . ":" . tokens[4]
-
-
- lgetexpr expr
- tab split
- ll 1
-
- norm! zz
- endfunction
|