Initial commit.
This commit is contained in:
84
vim/autoload/railmoon/oscan/extractor/vims.vim
Executable file
84
vim/autoload/railmoon/oscan/extractor/vims.vim
Executable file
@@ -0,0 +1,84 @@
|
||||
" Author: Mykola Golubyev ( Nickolay Golubev )
|
||||
" Email: golubev.nikolay@gmail.com
|
||||
" Site: www.railmoon.com
|
||||
" Plugin: oscan
|
||||
" Module: extractor#vims
|
||||
" Purpose: extract vim servers to select
|
||||
|
||||
function! railmoon#oscan#extractor#vims#create()
|
||||
let new_extractor = copy(s:tag_scan_vim_extractor)
|
||||
let new_extractor.last_buffer_number = bufnr('$')
|
||||
let new_extractor.buffer_number_width = len(line('$'))
|
||||
let new_extractor.description = "Select buffer to edit among all opened Vims"
|
||||
|
||||
return new_extractor
|
||||
endfunction
|
||||
|
||||
function! railmoon#oscan#extractor#vims#select_buffer(buffer_number)
|
||||
|
||||
let current_tabpage = tabpagenr()
|
||||
let current_window = winnr()
|
||||
|
||||
for tabpage_number in range(1, tabpagenr('$'))
|
||||
exec (tabpage_number) . 'tabnext'
|
||||
|
||||
for window_number in range(1, winnr('$'))
|
||||
|
||||
let buffer_number = winbufnr(window_number)
|
||||
|
||||
if buffer_number == a:buffer_number
|
||||
exec (window_number) . 'wincmd w'
|
||||
return
|
||||
endif
|
||||
endfor
|
||||
endfor
|
||||
|
||||
exec (current_tabpage) . 'tabnext'
|
||||
exec (current_window) . 'wincmd w'
|
||||
endfunction
|
||||
|
||||
let s:tag_scan_vim_extractor = {}
|
||||
function! s:tag_scan_vim_extractor.process(record)
|
||||
let server_name = a:record.data[0]
|
||||
let buffer_number = a:record.data[1]
|
||||
|
||||
call remote_foreground(server_name)
|
||||
call remote_expr(server_name, 'railmoon#oscan#extractor#vims#select_buffer('.buffer_number.')')
|
||||
endfunction
|
||||
|
||||
function! s:tag_scan_vim_extractor.extract()
|
||||
let result = []
|
||||
|
||||
let vim_servers = split(serverlist(), "\n")
|
||||
|
||||
for servername in vim_servers
|
||||
"echo servername
|
||||
"redraw
|
||||
let buffers_result = remote_expr(servername, 'railmoon#oscan#extractor#util#buffer_list()')
|
||||
let buffers_result = '['.join(split(buffers_result, "\n"), ',').']'
|
||||
|
||||
let buffers_list = eval(buffers_result)
|
||||
|
||||
for buffer_info in buffers_list
|
||||
|
||||
let tags = [ servername ]
|
||||
let buffer_number = buffer_info[0]
|
||||
let buffer_name = buffer_info[1]
|
||||
|
||||
call add(tags, fnamemodify(buffer_name, ':p:t'))
|
||||
|
||||
call add(result, railmoon#oscan#record#create( [ buffer_name ],
|
||||
\ tags,
|
||||
\ [ servername, buffer_number ],
|
||||
\ servername))
|
||||
|
||||
endfor
|
||||
|
||||
endfor
|
||||
|
||||
return result
|
||||
endfunction
|
||||
|
||||
function! s:tag_scan_vim_extractor.colorize()
|
||||
endfunction
|
||||
|
||||
Reference in New Issue
Block a user