Version 2.6
1. Added support for previewing a tag. 2. Added the TlistClose command to close the taglist window 3. Added the Tlist_Exit_OnlyWindow option to close the taglist window if only that window is open.
This commit is contained in:
parent
e9b9608c00
commit
5c9f5bc85c
|
@ -1,7 +1,7 @@
|
||||||
" File: taglist.vim
|
" File: taglist.vim
|
||||||
" Author: Yegappan Lakshmanan (yegappan AT yahoo DOT com)
|
" Author: Yegappan Lakshmanan (yegappan AT yahoo DOT com)
|
||||||
" Version: 2.5
|
" Version: 2.6
|
||||||
" Last Modified: April 26, 2003
|
" Last Modified: June 9, 2003
|
||||||
"
|
"
|
||||||
" Overview
|
" Overview
|
||||||
" --------
|
" --------
|
||||||
|
@ -94,7 +94,8 @@
|
||||||
" You can close the taglist window from the taglist window by pressing 'q' or
|
" You can close the taglist window from the taglist window by pressing 'q' or
|
||||||
" using the Vim ":q" command. You can also use any of the Vim window commands
|
" using the Vim ":q" command. You can also use any of the Vim window commands
|
||||||
" to close the taglist window. Invoking the ":Tlist" command when the taglist
|
" to close the taglist window. Invoking the ":Tlist" command when the taglist
|
||||||
" window is opened, will close the taglist window.
|
" window is opened, will close the taglist window. You can also close the
|
||||||
|
" taglist window by invoking the ":TlistClose" command.
|
||||||
"
|
"
|
||||||
" As you switch between source files, the taglist window will be automatically
|
" As you switch between source files, the taglist window will be automatically
|
||||||
" updated with the tag listing for the current source file. The tag names
|
" updated with the tag listing for the current source file. The tag names
|
||||||
|
@ -112,7 +113,9 @@
|
||||||
" You can select a tag either by pressing the <Enter> key or by double
|
" You can select a tag either by pressing the <Enter> key or by double
|
||||||
" clicking the tag name using the mouse. You can configure the taglist plugin
|
" clicking the tag name using the mouse. You can configure the taglist plugin
|
||||||
" by setting the 'Tlist_Use_SingleClick' variable to jump to a tag on a single
|
" by setting the 'Tlist_Use_SingleClick' variable to jump to a tag on a single
|
||||||
" mouse click.
|
" mouse click. You can press the 'o' key to jump to the tag in a new window.
|
||||||
|
" You can press the 'p' key to jump to the tag but still keep the cursor in
|
||||||
|
" the taglist window itself.
|
||||||
"
|
"
|
||||||
" This plugin will automatically highlight the name of the current tag. The
|
" This plugin will automatically highlight the name of the current tag. The
|
||||||
" tag name will be highlighted after 'updatetime' milliseconds. The default
|
" tag name will be highlighted after 'updatetime' milliseconds. The default
|
||||||
|
@ -153,6 +156,8 @@
|
||||||
" defined.
|
" defined.
|
||||||
" o Jump to the location where the tag under cursor is
|
" o Jump to the location where the tag under cursor is
|
||||||
" defined in a new window.
|
" defined in a new window.
|
||||||
|
" p Display the tag definition in the file window and
|
||||||
|
" keep the cursor in the taglist window itself.
|
||||||
" <Space> Display the prototype of the tag under the cursor.
|
" <Space> Display the prototype of the tag under the cursor.
|
||||||
" u Update the tags listed in the taglist window
|
" u Update the tags listed in the taglist window
|
||||||
" s Change the sort order of the tags (by name or by order)
|
" s Change the sort order of the tags (by name or by order)
|
||||||
|
@ -279,6 +284,13 @@
|
||||||
"
|
"
|
||||||
" let Tlist_Compact_Format = 1
|
" let Tlist_Compact_Format = 1
|
||||||
"
|
"
|
||||||
|
" If you want to exit Vim if only the taglist window is currently open, then
|
||||||
|
" set the Tlist_Exit_OnlyWindow variable to one. By default, this variable is
|
||||||
|
" set to zero and the Vim instance will not be closed if only the taglist
|
||||||
|
" window is open.
|
||||||
|
"
|
||||||
|
" let Tlist_Exit_OnlyWindow = 1
|
||||||
|
"
|
||||||
" Extending
|
" Extending
|
||||||
" ---------
|
" ---------
|
||||||
" You can extend exuberant ctags to add support for new languages. For more
|
" You can extend exuberant ctags to add support for new languages. For more
|
||||||
|
@ -401,6 +413,12 @@ if !exists('Tlist_Compact_Format')
|
||||||
let Tlist_Compact_Format = 0
|
let Tlist_Compact_Format = 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" Exit Vim if only the taglist window is currently open. By default, this is
|
||||||
|
" set to zero.
|
||||||
|
if !exists('Tlist_Exit_OnlyWindow')
|
||||||
|
let Tlist_Exit_OnlyWindow = 0
|
||||||
|
endif
|
||||||
|
|
||||||
" assembly language
|
" assembly language
|
||||||
let s:tlist_def_asm_settings = 'asm;d:define;l:label;m:macro;t:type'
|
let s:tlist_def_asm_settings = 'asm;d:define;l:label;m:macro;t:type'
|
||||||
|
|
||||||
|
@ -880,17 +898,18 @@ function! s:Tlist_Init_Window(bufnum)
|
||||||
if exists("s:tlist_show_help") && s:tlist_show_help == 1
|
if exists("s:tlist_show_help") && s:tlist_show_help == 1
|
||||||
call append(0, '" <enter> : Jump to tag definition')
|
call append(0, '" <enter> : Jump to tag definition')
|
||||||
call append(1, '" o : Jump to tag definition in new window')
|
call append(1, '" o : Jump to tag definition in new window')
|
||||||
call append(2, '" <space> : Display tag prototype')
|
call append(2, '" p : Preview the tag definition')
|
||||||
call append(3, '" u : Update tag list')
|
call append(3, '" <space> : Display tag prototype')
|
||||||
call append(4, '" s : Select sort field')
|
call append(4, '" u : Update tag list')
|
||||||
call append(5, '" x : Zoom-out/Zoom-in taglist window')
|
call append(5, '" s : Select sort field')
|
||||||
call append(6, '" + : Open a fold')
|
call append(6, '" x : Zoom-out/Zoom-in taglist window')
|
||||||
call append(7, '" - : Close a fold')
|
call append(7, '" + : Open a fold')
|
||||||
call append(8, '" * : Open all folds')
|
call append(8, '" - : Close a fold')
|
||||||
call append(9, '" q : Close the taglist window')
|
call append(9, '" * : Open all folds')
|
||||||
call append(10, '" ? : Remove help text')
|
call append(10, '" q : Close the taglist window')
|
||||||
call append(11, '" Sorted by ' . b:tlist_sort_type)
|
call append(11, '" ? : Remove help text')
|
||||||
call append(12, '"= ' . fnamemodify(filename, ':t') . ' (' .
|
call append(12, '" Sorted by ' . b:tlist_sort_type)
|
||||||
|
call append(13, '"= ' . fnamemodify(filename, ':t') . ' (' .
|
||||||
\ fnamemodify(filename, ':p:h') . ')')
|
\ fnamemodify(filename, ':p:h') . ')')
|
||||||
else
|
else
|
||||||
call append(0, '" Press ? to display help text')
|
call append(0, '" Press ? to display help text')
|
||||||
|
@ -962,6 +981,7 @@ function! s:Tlist_Init_Window(bufnum)
|
||||||
" Create buffer local mappings for jumping to the tags and sorting the list
|
" Create buffer local mappings for jumping to the tags and sorting the list
|
||||||
nnoremap <buffer> <silent> <CR> :call <SID>Tlist_Jump_To_Tag(0)<CR>
|
nnoremap <buffer> <silent> <CR> :call <SID>Tlist_Jump_To_Tag(0)<CR>
|
||||||
nnoremap <buffer> <silent> o :call <SID>Tlist_Jump_To_Tag(1)<CR>
|
nnoremap <buffer> <silent> o :call <SID>Tlist_Jump_To_Tag(1)<CR>
|
||||||
|
nnoremap <buffer> <silent> p :call <SID>Tlist_Jump_To_Tag(2)<CR>
|
||||||
nnoremap <buffer> <silent> <2-LeftMouse> :call <SID>Tlist_Jump_To_Tag(0)<CR>
|
nnoremap <buffer> <silent> <2-LeftMouse> :call <SID>Tlist_Jump_To_Tag(0)<CR>
|
||||||
nnoremap <buffer> <silent> s :call <SID>Tlist_Change_Sort()<CR>
|
nnoremap <buffer> <silent> s :call <SID>Tlist_Change_Sort()<CR>
|
||||||
nnoremap <buffer> <silent> + :silent! foldopen<CR>
|
nnoremap <buffer> <silent> + :silent! foldopen<CR>
|
||||||
|
@ -981,6 +1001,7 @@ function! s:Tlist_Init_Window(bufnum)
|
||||||
" Windows needs return
|
" Windows needs return
|
||||||
inoremap <buffer> <silent> <Return> <C-o>:call <SID>Tlist_Jump_To_Tag(0)<CR>
|
inoremap <buffer> <silent> <Return> <C-o>:call <SID>Tlist_Jump_To_Tag(0)<CR>
|
||||||
inoremap <buffer> <silent> o <C-o>:call <SID>Tlist_Jump_To_Tag(1)<CR>
|
inoremap <buffer> <silent> o <C-o>:call <SID>Tlist_Jump_To_Tag(1)<CR>
|
||||||
|
inoremap <buffer> <silent> p <C-o>:call <SID>Tlist_Jump_To_Tag(2)<CR>
|
||||||
inoremap <buffer> <silent> <2-LeftMouse> <C-o>:call
|
inoremap <buffer> <silent> <2-LeftMouse> <C-o>:call
|
||||||
\ <SID>Tlist_Jump_To_Tag(0)<CR>
|
\ <SID>Tlist_Jump_To_Tag(0)<CR>
|
||||||
inoremap <buffer> <silent> s <C-o>:call <SID>Tlist_Change_Sort()<CR>
|
inoremap <buffer> <silent> s <C-o>:call <SID>Tlist_Change_Sort()<CR>
|
||||||
|
@ -1011,7 +1032,8 @@ function! s:Tlist_Init_Window(bufnum)
|
||||||
" Highlight the current tag
|
" Highlight the current tag
|
||||||
autocmd CursorHold * silent call <SID>Tlist_Highlight_Tag(bufnr('%'),
|
autocmd CursorHold * silent call <SID>Tlist_Highlight_Tag(bufnr('%'),
|
||||||
\ line('.'))
|
\ line('.'))
|
||||||
autocmd BufUnload __Tag_List__ call <SID>Tlist_Close_Window()
|
autocmd BufUnload __Tag_List__ call <SID>Tlist_Post_Close_Cleanup()
|
||||||
|
autocmd BufEnter __Tag_List__ call <SID>Tlist_Check_Only_Window()
|
||||||
if !s:tlist_part_of_winmanager
|
if !s:tlist_part_of_winmanager
|
||||||
" Adjust the Vim window width when taglist window is closed
|
" Adjust the Vim window width when taglist window is closed
|
||||||
" Auto refresh the taglisting window
|
" Auto refresh the taglisting window
|
||||||
|
@ -1020,9 +1042,9 @@ function! s:Tlist_Init_Window(bufnum)
|
||||||
augroup end
|
augroup end
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Tlist_Close_Window()
|
" Tlist_Post_Close_Cleanup()
|
||||||
" Close the taglist window and adjust the Vim window width
|
" Close the taglist window and adjust the Vim window width
|
||||||
function! s:Tlist_Close_Window()
|
function! s:Tlist_Post_Close_Cleanup()
|
||||||
" Remove the autocommands for the taglist window
|
" Remove the autocommands for the taglist window
|
||||||
silent! autocmd! TagListAutoCmds
|
silent! autocmd! TagListAutoCmds
|
||||||
|
|
||||||
|
@ -1054,6 +1076,19 @@ function! s:Tlist_Close_Window()
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
" Tlist_Check_Only_Window
|
||||||
|
" Check if only the taglist window is opened currently. If the
|
||||||
|
" Tlist_Exit_OnlyWindow variable is set, then close the taglist window
|
||||||
|
function! s:Tlist_Check_Only_Window()
|
||||||
|
if g:Tlist_Exit_OnlyWindow
|
||||||
|
if winbufnr(2) == -1
|
||||||
|
" If only the taglist window is currently open, then the buffer
|
||||||
|
" number associated with window 2 will be -1.
|
||||||
|
quit
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
" Tlist_Explore_File()
|
" Tlist_Explore_File()
|
||||||
" List the tags defined in the specified file in a Vim window
|
" List the tags defined in the specified file in a Vim window
|
||||||
function! s:Tlist_Explore_File(bufnum)
|
function! s:Tlist_Explore_File(bufnum)
|
||||||
|
@ -1334,6 +1369,20 @@ function! s:Tlist_Explore_File(bufnum)
|
||||||
return
|
return
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
" Tlist_Close_Window
|
||||||
|
" Close the taglist window
|
||||||
|
function! s:Tlist_Close_Window()
|
||||||
|
" Make sure the taglist window exists
|
||||||
|
let winnum = bufwinnr(g:TagList_title)
|
||||||
|
if winnum != -1
|
||||||
|
" Jump to the window if not already there
|
||||||
|
if winnr() != winnum
|
||||||
|
exe winnum . 'wincmd w'
|
||||||
|
endif
|
||||||
|
close
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
" Tlist_Toggle_Window()
|
" Tlist_Toggle_Window()
|
||||||
" Open or close a taglist window
|
" Open or close a taglist window
|
||||||
function! s:Tlist_Toggle_Window(bufnum)
|
function! s:Tlist_Toggle_Window(bufnum)
|
||||||
|
@ -1574,7 +1623,10 @@ endfunction
|
||||||
|
|
||||||
" Tlist_Jump_To_Tag()
|
" Tlist_Jump_To_Tag()
|
||||||
" Jump to the location of the current tag
|
" Jump to the location of the current tag
|
||||||
function! s:Tlist_Jump_To_Tag(new_window)
|
" win_ctrl == 0 - Reuse the existing file window
|
||||||
|
" win_ctrl == 1 - Open a new window
|
||||||
|
" win_ctrl == 2 - Preview the tag
|
||||||
|
function! s:Tlist_Jump_To_Tag(win_ctrl)
|
||||||
" Do not process comment lines and empty lines
|
" Do not process comment lines and empty lines
|
||||||
let curline = getline('.')
|
let curline = getline('.')
|
||||||
if curline == '' || curline[0] == '"'
|
if curline == '' || curline[0] == '"'
|
||||||
|
@ -1607,7 +1659,7 @@ function! s:Tlist_Jump_To_Tag(new_window)
|
||||||
let s:Tlist_Skip_Refresh = 1
|
let s:Tlist_Skip_Refresh = 1
|
||||||
|
|
||||||
if s:tlist_part_of_winmanager
|
if s:tlist_part_of_winmanager
|
||||||
call WinManagerFileEdit(bufname(b:tlist_bufnum), a:new_window)
|
call WinManagerFileEdit(bufname(b:tlist_bufnum), a:win_ctrl)
|
||||||
else
|
else
|
||||||
" Goto the window containing the file. If the window is not there, open a
|
" Goto the window containing the file. If the window is not there, open a
|
||||||
" new window
|
" new window
|
||||||
|
@ -1636,7 +1688,7 @@ function! s:Tlist_Jump_To_Tag(new_window)
|
||||||
|
|
||||||
" If the user asked to jump to the tag in a new window, then split the
|
" If the user asked to jump to the tag in a new window, then split the
|
||||||
" existing window into two.
|
" existing window into two.
|
||||||
if a:new_window
|
if a:win_ctrl == 1
|
||||||
split
|
split
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
@ -1655,6 +1707,14 @@ function! s:Tlist_Jump_To_Tag(new_window)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" If the user selects to preview the tag then jump back to the
|
||||||
|
" taglist window
|
||||||
|
if a:win_ctrl == 2
|
||||||
|
" Go back to the taglist window
|
||||||
|
let winnum = bufwinnr(g:TagList_title)
|
||||||
|
exe winnum . 'wincmd w'
|
||||||
|
endif
|
||||||
|
|
||||||
let s:Tlist_Skip_Refresh = 0
|
let s:Tlist_Skip_Refresh = 0
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
@ -1780,7 +1840,8 @@ endfunction
|
||||||
" Tlist_Highlight_Tag()
|
" Tlist_Highlight_Tag()
|
||||||
" Do a binary search in the array of tag names and pick a tag entry that
|
" Do a binary search in the array of tag names and pick a tag entry that
|
||||||
" contains the current line and highlight it. The idea behind this function
|
" contains the current line and highlight it. The idea behind this function
|
||||||
" is taken from the ctags.vim script available at the Vim online website.
|
" is taken from the ctags.vim script (by Alexey Marinichev) available at the
|
||||||
|
" Vim online website.
|
||||||
function! s:Tlist_Highlight_Tag(bufnum, curline)
|
function! s:Tlist_Highlight_Tag(bufnum, curline)
|
||||||
let filename = fnamemodify(bufname(a:bufnum), ':p')
|
let filename = fnamemodify(bufname(a:bufnum), ':p')
|
||||||
if filename == ''
|
if filename == ''
|
||||||
|
@ -1915,9 +1976,9 @@ if g:Tlist_Auto_Open
|
||||||
autocmd VimEnter * nested Tlist
|
autocmd VimEnter * nested Tlist
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Define the 'Tlist' and 'TlistSync' user commands to open/close taglist
|
" Define the user commands to manage the taglist window
|
||||||
" window
|
|
||||||
command! -nargs=0 Tlist call s:Tlist_Toggle_Window(bufnr('%'))
|
command! -nargs=0 Tlist call s:Tlist_Toggle_Window(bufnr('%'))
|
||||||
|
command! -nargs=0 TlistClose call s:Tlist_Close_Window()
|
||||||
command! -nargs=0 TlistSync call s:Tlist_Highlight_Tag(bufnr('%'), line('.'))
|
command! -nargs=0 TlistSync call s:Tlist_Highlight_Tag(bufnr('%'), line('.'))
|
||||||
command! -nargs=? TlistShowPrototype echo s:Tlist_Get_Tag_Prototype_By_Line(<q-args>)
|
command! -nargs=? TlistShowPrototype echo s:Tlist_Get_Tag_Prototype_By_Line(<q-args>)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue