function! SetupEncoding(encoding)
- if !has("iconv") || exists('b:encoding_set')
+ if !has("iconv") || exists('b:encoding_set') || strlen(a:encoding) == 0
return
endif
- if strlen(a:encoding) > 0
- call RestorePosition()
- let b:encoding_set = 1
- execute "edit ++enc=" . a:encoding
- endif
+ call RestorePosition()
+ let b:encoding_set = 1
+ execute "edit ++enc=" . a:encoding
endfunction
" Called automagically after every buffer read, enables fileencoding
-" setting from modeline (see Tip #911)
+" setting from modeline (see Tip #911: http://vim.wikia.com/wiki/VimTip911)
function! AutoEncoding()
- if exists("b:justloaded")
- unlet b:justloaded
- if &modified && &fileencoding != ""
- call SetupEncoding(&fileencoding)
- endif
+ if &modified && &fileencoding != ""
+ call SetupEncoding(&fileencoding)
endif
+ autocmd! auto-encoding
+ augroup! auto-encoding
endfunction
-" Magic autocommands installed here
-autocmd BufReadPost * let b:justloaded = 1
+augroup auto-encoding
+autocmd!
autocmd BufWinEnter * call AutoEncoding()
+augroup END
let CONVERT=1
autocmd!
" Redraw screen after all macros in ~/.vimrc and ~/.vim/
autocmd BufReadPost * redraw
-" Remove the redraw autocommand (it's only needed once) and the autgroup
+" Remove the redraw autocommand (it's only needed once) and the group
autocmd BufReadPost * autocmd! redraw-once
autocmd BufReadPost * augroup! redraw-once
augroup END