Initial commit.
This commit is contained in:
79
vim/autoload/railmoon/oscan/extractor/windows.vim
Executable file
79
vim/autoload/railmoon/oscan/extractor/windows.vim
Executable file
@@ -0,0 +1,79 @@
|
||||
" Author: Mykola Golubyev ( Nickolay Golubev )
|
||||
" Email: golubev.nikolay@gmail.com
|
||||
" Site: www.railmoon.com
|
||||
" Plugin: oscan
|
||||
" Module: extractor#windows
|
||||
" Purpose: extract window names to select
|
||||
|
||||
function! railmoon#oscan#extractor#windows#create()
|
||||
let new_extractor = copy(s:tag_scan_windows_extractor)
|
||||
let new_extractor.description = 'Select window to be active'
|
||||
|
||||
return new_extractor
|
||||
endfunction
|
||||
|
||||
let s:tag_scan_windows_extractor = {}
|
||||
function! s:tag_scan_windows_extractor.process(record)
|
||||
exec a:record.data[0].'tabnext'
|
||||
exec a:record.data[1].'wincmd w'
|
||||
endfunction
|
||||
|
||||
function! s:tag_scan_windows_extractor.tags_by_name(buffer_name, buffer_number, tabpage_number, window_number)
|
||||
let tags = railmoon#oscan#extractor#util#tags_from_file_name(a:buffer_name)
|
||||
|
||||
if index(tags, string(a:buffer_number)) == -1
|
||||
call add(tags, a:buffer_number)
|
||||
endif
|
||||
|
||||
call add(tags, 'tabpage'.a:tabpage_number)
|
||||
call add(tags, 'window'.a:window_number)
|
||||
|
||||
return tags
|
||||
endfunction
|
||||
|
||||
function! s:tag_scan_windows_extractor.header_by_name(buffer_name, buffer_number)
|
||||
return [ a:buffer_name ]
|
||||
endfunction
|
||||
|
||||
function! s:tag_scan_windows_extractor.extract()
|
||||
let lazyredraw_status = &lazyredraw
|
||||
|
||||
set lazyredraw
|
||||
let result = []
|
||||
|
||||
try
|
||||
|
||||
for tabpage_number in range(1, tabpagenr('$'))
|
||||
exec (tabpage_number) . 'tabnext'
|
||||
|
||||
for window_number in range(1, winnr('$'))
|
||||
|
||||
let buffer_number = winbufnr(window_number)
|
||||
let buffer_name = bufname(buffer_number)
|
||||
exec window_number.'wincmd w'
|
||||
let line_number = line('.')
|
||||
|
||||
call add(result, railmoon#oscan#record#create( self.header_by_name(buffer_name, buffer_number),
|
||||
\ self.tags_by_name(buffer_name, buffer_number, tabpage_number, window_number),
|
||||
\ [tabpage_number, window_number],
|
||||
\ '[ '.tabpage_number.', '.window_number.' ] '.fnamemodify(buffer_name, ':p:t').' '.line_number))
|
||||
|
||||
endfor
|
||||
endfor
|
||||
|
||||
catch /.*/
|
||||
echo v:exception
|
||||
echo v:throwpoint
|
||||
|
||||
finally
|
||||
let &lazyredraw = lazyredraw_status
|
||||
return result
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
function! s:tag_scan_windows_extractor.colorize()
|
||||
syntax match Comment /|.\{-}|/
|
||||
syntax match Keyword /[\\/]/
|
||||
syntax match Number /[0-9]\+/
|
||||
endfunction
|
||||
|
||||
Reference in New Issue
Block a user