74 lines
1.9 KiB
VimL
Executable File
74 lines
1.9 KiB
VimL
Executable File
" Author: Mykola Golubyev ( Nickolay Golubev )
|
|
" Email: golubev.nikolay@gmail.com
|
|
" Site: www.railmoon.com
|
|
" Plugin: oscan
|
|
" Module: extractor#buffers
|
|
" Purpose: extract buffer names to select
|
|
|
|
function! railmoon#oscan#extractor#buffers#create()
|
|
let new_extractor = copy(s:tag_scan_buffers_extractor)
|
|
let new_extractor.description = 'Select buffer to edit'
|
|
|
|
return new_extractor
|
|
endfunction
|
|
|
|
let s:tag_scan_buffers_extractor = {}
|
|
function! s:tag_scan_buffers_extractor.process(record)
|
|
if &modified
|
|
let choice = inputlist( [ "Buffer is modified.", "1. Save current and continue" , "2. Break", "3. Open in new tab" ] )
|
|
if 1 == choice
|
|
update
|
|
elseif 2 == choice
|
|
return
|
|
elseif 3 == choice
|
|
tab new
|
|
else
|
|
tab new
|
|
endif
|
|
endif
|
|
|
|
exec 'buffer '.a:record.data
|
|
endfunction
|
|
|
|
function! s:tag_scan_buffers_extractor.tags_by_name(buffer_name, buffer_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
|
|
|
|
return tags
|
|
endfunction
|
|
|
|
function! s:tag_scan_buffers_extractor.header_by_name(buffer_name, buffer_number)
|
|
return [ a:buffer_name ]
|
|
endfunction
|
|
|
|
function! s:tag_scan_buffers_extractor.extract()
|
|
let result = []
|
|
|
|
let buffers = railmoon#oscan#extractor#util#buffer_list()
|
|
|
|
for buffer_info in buffers
|
|
|
|
let buffer_number = buffer_info[0]
|
|
let buffer_name = buffer_info[1]
|
|
|
|
call add(result, railmoon#oscan#record#create( self.header_by_name(buffer_name, buffer_number),
|
|
\ self.tags_by_name(buffer_name, buffer_number),
|
|
\ buffer_number,
|
|
\ buffer_number))
|
|
|
|
endfor
|
|
|
|
|
|
return result
|
|
endfunction
|
|
|
|
function! s:tag_scan_buffers_extractor.colorize()
|
|
syntax match FileName /.*\zs\/.*\ze/
|
|
|
|
hi link FileName Identifier
|
|
endfunction
|
|
|