From 73c7d6326646053343422aca7bda816643baf242 Mon Sep 17 00:00:00 2001 From: Jaeho Shin Date: Mon, 9 Jun 2014 03:52:40 -0700 Subject: [PATCH] Some options for better file list sorting - `g:netrw_sort_case_sensitive` - `g:netrw_sort_dirs_first` - `g:netrw_sort_dotfiles_first` For the last `g:netrw_sort_dotfiles_first` option to work, a fixed version of `$VIMRUNTIME/autoload/netrw.vim` is required. (See: https://code.google.com/p/vim/issues/detail?id=233) --- plugin/vinegar.vim | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/plugin/vinegar.vim b/plugin/vinegar.vim index d497be8..b0b540e 100644 --- a/plugin/vinegar.vim +++ b/plugin/vinegar.vim @@ -14,15 +14,26 @@ function! s:fnameescape(file) abort endif endfunction -let s:dotfiles = '\(^\|\s\s\)\zs\.\S\+' +if !exists("g:netrw_sort_sequence") + let g:netrw_sort_sequence = '*' +endif +if !get(g:, 'netrw_sort_dirs_first', 0) + let g:netrw_sort_sequence = '[\/]$,' . g:netrw_sort_sequence +endif +let g:netrw_sort_sequence .= ',\%(' . join(map(split(&suffixes, ','), 'escape(v:val, ".*$~")'), '\|') . '\)[*@]\=$' -let g:netrw_sort_sequence = '[\/]$,*,\%(' . join(map(split(&suffixes, ','), 'escape(v:val, ".*$~")'), '\|') . '\)[*@]\=$' +let s:dotfiles = '\(^\|\s\s\)\zs\.\S\+' +if !exists("g:netrw_list_hide") && !exists("g:netrw_hide") + let g:netrw_list_hide = s:dotfiles + let g:netrw_hide = 0 +endif let s:escape = 'substitute(escape(v:val, ".$~"), "*", ".*", "g")' let g:netrw_list_hide = \ join(map(split(&wildignore, ','), '"^".' . s:escape . '. "$"'), ',') . ',^\.\.\=/\=$' . \ (get(g:, 'netrw_list_hide', '')[-strlen(s:dotfiles)-1:-1] ==# s:dotfiles ? ','.s:dotfiles : '') let g:netrw_banner = 0 let s:netrw_up = '' +let s:netrw_sort_options_set = 0 nnoremap VinegarUp :call opendir('edit') if empty(maparg('-', 'n')) @@ -87,5 +98,15 @@ function! s:setup_vinegar() abort nnoremap cg :exe 'keepjumps cd ' .fnameescape(b:netrw_curdir) nnoremap cl :exe 'keepjumps lcd '.fnameescape(b:netrw_curdir) exe 'syn match netrwSuffixes =\%(\S\+ \)*\S\+\%('.join(map(split(&suffixes, ','), s:escape), '\|') . '\)[*@]\=\S\@!=' + if !s:netrw_sort_options_set + let g:netrw_sort_options = '' + if !get(g:, 'netrw_sort_case_sensitive', 0) + let g:netrw_sort_options .= 'i' + endif + if !get(g:, 'netrw_sort_dotfiles_first', 0) + let g:netrw_sort_options .= '/['.g:netrw_sepchr.'._]\+/' + endif + let s:netrw_sort_options_set = 1 + endif hi def link netrwSuffixes SpecialKey endfunction