mirror of
https://github.com/bronson/vim-trailing-whitespace.git
synced 2025-11-08 11:33:54 -05:00
Some plugins, e.g., fzf-lua, only set the filetype after creating a new buffer. To exclude the later-set filetype correctly, rerun the setup.
30 lines
1.3 KiB
VimL
30 lines
1.3 KiB
VimL
if exists('loaded_trailing_whitespace_plugin') | finish | endif
|
|
let loaded_trailing_whitespace_plugin = 1
|
|
|
|
if !exists('g:extra_whitespace_ignored_filetypes')
|
|
let g:extra_whitespace_ignored_filetypes = []
|
|
endif
|
|
|
|
function! ShouldMatchWhitespace()
|
|
for ft in g:extra_whitespace_ignored_filetypes
|
|
if ft ==# &filetype | return 0 | endif
|
|
endfor
|
|
return 1
|
|
endfunction
|
|
|
|
" Highlight EOL whitespace, http://vim.wikia.com/wiki/Highlight_unwanted_spaces
|
|
highlight default ExtraWhitespace ctermbg=darkred guibg=darkred
|
|
autocmd ColorScheme * highlight default ExtraWhitespace ctermbg=darkred guibg=darkred
|
|
autocmd BufRead,BufNew,FileType * if ShouldMatchWhitespace() | match ExtraWhitespace /\\\@<![\u3000[:space:]]\+$/ | else | match ExtraWhitespace /^^/ | endif
|
|
|
|
" The above flashes annoyingly while typing, be calmer in insert mode
|
|
autocmd InsertLeave * if ShouldMatchWhitespace() | match ExtraWhitespace /\\\@<![\u3000[:space:]]\+$/ | endif
|
|
autocmd InsertEnter * if ShouldMatchWhitespace() | match ExtraWhitespace /\\\@<![\u3000[:space:]]\+\%#\@<!$/ | endif
|
|
|
|
function! s:FixWhitespace(line1,line2)
|
|
silent! keepjumps execute ':' . a:line1 . ',' . a:line2 . 's/\\\@<!\s\+$//'
|
|
endfunction
|
|
|
|
" Run :FixWhitespace to remove end of line white space
|
|
command! -range=% FixWhitespace call <SID>FixWhitespace(<line1>,<line2>)
|