Register autocmds once

This commit changes the autocmd registration in vimwiki so that
registration happens once rather than once per extension.

Instead of the following,

    autocmd BufEnter *.md call s:setup_buffer_enter()
    autocmd BufEnter *.mdown call s:setup_buffer_enter()

We'll now only run,

    autocmd BufEnter *.md,*.mdown call s:setup_buffer_enter()

This probably has no effect on performance but it makes for a simpler
implementation.
This commit is contained in:
Abhinav Gupta 2019-08-18 13:47:19 -07:00
parent 28d78b0d39
commit 152a7bfdf1
2 changed files with 29 additions and 27 deletions

View File

@ -3457,6 +3457,7 @@ Contributors and their Github usernames in roughly chronological order:
- Alexander Gude (@agude) - Alexander Gude (@agude)
- Jonny Bylsma (@jbylsma) - Jonny Bylsma (@jbylsma)
- Shaedil (@Shaedil) - Shaedil (@Shaedil)
- Abhinav Gupta (@abhinav)
============================================================================== ==============================================================================

View File

@ -308,33 +308,34 @@ endif
augroup vimwiki augroup vimwiki
autocmd! autocmd!
autocmd ColorScheme * call s:setup_cleared_syntax() autocmd ColorScheme * call s:setup_cleared_syntax()
for s:ext in s:known_extensions
exe 'autocmd BufNewFile,BufRead *'.s:ext.' call s:setup_new_wiki_buffer()' " ['.md', '.mdown'] => *.md,*.mdown
exe 'autocmd BufEnter *'.s:ext.' call s:setup_buffer_enter()' let pat = join(map(s:known_extensions, '"*" . v:val'), ',')
exe 'autocmd BufLeave *'.s:ext.' call s:setup_buffer_leave()' exe 'autocmd BufNewFile,BufRead '.pat.' call s:setup_new_wiki_buffer()'
exe 'autocmd BufWinEnter *'.s:ext.' call s:setup_buffer_win_enter()' exe 'autocmd BufEnter '.pat.' call s:setup_buffer_enter()'
exe 'autocmd BufLeave '.pat.' call s:setup_buffer_leave()'
exe 'autocmd BufWinEnter '.pat.' call s:setup_buffer_win_enter()'
if exists('##DiffUpdated') if exists('##DiffUpdated')
exe 'autocmd DiffUpdated *'.s:ext.' call s:setup_buffer_win_enter()' exe 'autocmd DiffUpdated '.pat.' call s:setup_buffer_win_enter()'
endif endif
" automatically generate a level 1 header for new files " automatically generate a level 1 header for new files
exe 'autocmd BufNewFile *'.s:ext.' call s:create_h1(expand("%:p"))' exe 'autocmd BufNewFile '.pat.' call s:create_h1(expand("%:p"))'
" Format tables when exit from insert mode. Do not use textwidth to " Format tables when exit from insert mode. Do not use textwidth to
" autowrap tables. " autowrap tables.
if vimwiki#vars#get_global('table_auto_fmt') if vimwiki#vars#get_global('table_auto_fmt')
exe 'autocmd InsertLeave *'.s:ext.' call vimwiki#tbl#format(line("."), 2)' exe 'autocmd InsertLeave '.pat.' call vimwiki#tbl#format(line("."), 2)'
exe 'autocmd InsertEnter *'.s:ext.' call vimwiki#tbl#reset_tw(line("."))' exe 'autocmd InsertEnter '.pat.' call vimwiki#tbl#reset_tw(line("."))'
endif endif
if vimwiki#vars#get_global('folding') =~? ':quick$' if vimwiki#vars#get_global('folding') =~? ':quick$'
" from http://vim.wikia.com/wiki/Keep_folds_closed_while_inserting_text " from http://vim.wikia.com/wiki/Keep_folds_closed_while_inserting_text
" Don't screw up folds when inserting text that might affect them, until " Don't screw up folds when inserting text that might affect them, until
" leaving insert mode. Foldmethod is local to the window. Protect against " leaving insert mode. Foldmethod is local to the window. Protect against
" screwing up folding when switching between windows. " screwing up folding when switching between windows.
exe 'autocmd InsertEnter *'.s:ext.' if !exists("w:last_fdm") | let w:last_fdm=&foldmethod'. exe 'autocmd InsertEnter '.pat.' if !exists("w:last_fdm") | let w:last_fdm=&foldmethod'.
\ ' | setlocal foldmethod=manual | endif' \ ' | setlocal foldmethod=manual | endif'
exe 'autocmd InsertLeave,WinLeave *'.s:ext.' if exists("w:last_fdm") |'. exe 'autocmd InsertLeave,WinLeave '.pat.' if exists("w:last_fdm") |'.
\ 'let &l:foldmethod=w:last_fdm | unlet w:last_fdm | endif' \ 'let &l:foldmethod=w:last_fdm | unlet w:last_fdm | endif'
endif endif
endfor
augroup END augroup END