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