mirror of
https://github.com/preservim/tagbar.git
synced 2025-02-12 21:32:50 +08:00
Add case-insensitive sort option
This commit is contained in:
parent
7b36c46d17
commit
7fbd1ad375
|
@ -964,11 +964,12 @@ function! s:MapKeys() abort
|
|||
\ ['nextfold', 'GotoNextFold()'],
|
||||
\ ['prevfold', 'GotoPrevFold()'],
|
||||
\
|
||||
\ ['togglesort', 'ToggleSort()'],
|
||||
\ ['toggleautoclose', 'ToggleAutoclose()'],
|
||||
\ ['zoomwin', 'ZoomWindow()'],
|
||||
\ ['close', 'CloseWindow()'],
|
||||
\ ['help', 'ToggleHelp()'],
|
||||
\ ['togglesort', 'ToggleSort()'],
|
||||
\ ['togglecaseinsensitive', 'ToggleCaseInsensitive()'],
|
||||
\ ['toggleautoclose', 'ToggleAutoclose()'],
|
||||
\ ['zoomwin', 'ZoomWindow()'],
|
||||
\ ['close', 'CloseWindow()'],
|
||||
\ ['help', 'ToggleHelp()'],
|
||||
\ ]
|
||||
|
||||
for [map, func] in maps
|
||||
|
@ -2579,7 +2580,8 @@ function! s:CompareByKind(tag1, tag2) abort
|
|||
let name2 = a:tag2.name
|
||||
endif
|
||||
|
||||
if name1 <=# name2
|
||||
let ci = g:tagbar_case_insensitive
|
||||
if (((!ci) && (name1 <=# name2)) || (ci && (name1 <=? name2)))
|
||||
return -1
|
||||
else
|
||||
return 1
|
||||
|
@ -2890,6 +2892,7 @@ function! s:PrintHelp() abort
|
|||
silent put ='\"'
|
||||
silent put ='\" ---------- Misc -----------'
|
||||
silent put ='\" ' . s:get_map_str('togglesort') . ': Toggle sort'
|
||||
silent put ='\" ' . s:get_map_str('togglecaseinsensitive') . ': Toggle case insensitive sort option'
|
||||
silent put ='\" ' . s:get_map_str('toggleautoclose') . ': Toggle autoclose option'
|
||||
silent put ='\" ' . s:get_map_str('zoomwin') . ': Zoom window in/out'
|
||||
silent put ='\" ' . s:get_map_str('close') . ': Close window'
|
||||
|
@ -3823,6 +3826,35 @@ function! s:ToggleHideNonPublicTags() abort
|
|||
call s:SetStatusLine('current')
|
||||
endfunction
|
||||
|
||||
" s:ToggleCaseInsensitive() {{{2
|
||||
function! s:ToggleCaseInsensitive() abort
|
||||
let fileinfo = s:known_files.getCurrent(0)
|
||||
if empty(fileinfo)
|
||||
return
|
||||
endif
|
||||
|
||||
" Save the tag the cursor is currently on
|
||||
let curline = line('.')
|
||||
let taginfo = s:GetTagInfo(curline, 0)
|
||||
|
||||
match none
|
||||
|
||||
let g:tagbar_case_insensitive = !g:tagbar_case_insensitive
|
||||
|
||||
call fileinfo.sortTags()
|
||||
|
||||
call s:RenderKeepView()
|
||||
call s:SetStatusLine('current')
|
||||
|
||||
" If we were on a tag before sorting then jump to it, otherwise restore
|
||||
" the cursor to the current line
|
||||
if !empty(taginfo)
|
||||
execute taginfo.tline
|
||||
else
|
||||
execute curline
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" s:ToggleAutoclose() {{{2
|
||||
function! s:ToggleAutoclose() abort
|
||||
let g:tagbar_autoclose = !g:tagbar_autoclose
|
||||
|
@ -3893,6 +3925,7 @@ function! s:SetStatusLine(current)
|
|||
let flags = []
|
||||
let flags += exists('w:autoclose') && w:autoclose ? ['c'] : []
|
||||
let flags += g:tagbar_autoclose ? ['C'] : []
|
||||
let flags += (g:tagbar_sort && g:tagbar_case_insensitive) ? ['i'] : []
|
||||
let flags += g:tagbar_hide_nonpublic ? ['v'] : []
|
||||
|
||||
if exists('g:tagbar_status_func')
|
||||
|
|
|
@ -481,6 +481,18 @@ Example:
|
|||
let g:tagbar_sort = 0
|
||||
<
|
||||
|
||||
*g:tagbar_case_insensitive*
|
||||
g:tagbar_case_insensitive~
|
||||
Default: 0
|
||||
|
||||
If this option is set a case-insensitive comparison is used when the tags
|
||||
are sorted according to their name. If it is unset a case-sensitive
|
||||
comparison is used.
|
||||
|
||||
Example:
|
||||
>
|
||||
let g:tagbar_case_insensitive = 1
|
||||
<
|
||||
*g:tagbar_compact*
|
||||
g:tagbar_compact~
|
||||
Default: 0
|
||||
|
|
|
@ -59,6 +59,7 @@ function! s:setup_options() abort
|
|||
\ ['autofocus', 0],
|
||||
\ ['autopreview', 0],
|
||||
\ ['autoshowtag', 0],
|
||||
\ ['case_insensitive', 0],
|
||||
\ ['compact', 0],
|
||||
\ ['expand', 0],
|
||||
\ ['foldlevel', 99],
|
||||
|
@ -109,11 +110,12 @@ function! s:setup_keymaps() abort
|
|||
\ ['nextfold', 'zj'],
|
||||
\ ['prevfold', 'zk'],
|
||||
\
|
||||
\ ['togglesort', 's'],
|
||||
\ ['toggleautoclose', 'c'],
|
||||
\ ['zoomwin', 'x'],
|
||||
\ ['close', 'q'],
|
||||
\ ['help', ['<F1>', '?']],
|
||||
\ ['togglesort', 's'],
|
||||
\ ['togglecaseinsensitive', 'i'],
|
||||
\ ['toggleautoclose', 'c'],
|
||||
\ ['zoomwin', 'x'],
|
||||
\ ['close', 'q'],
|
||||
\ ['help', ['<F1>', '?']],
|
||||
\ ]
|
||||
|
||||
for [map, key] in keymaps
|
||||
|
|
Loading…
Reference in New Issue
Block a user