Files
vim-trailing-whitespace/plugin/trailing-whitespace.vim
Jamie Bainbridge 08bdb05c3d Don't highlight in terminal buffers
When opening a buffer with `:terminal` trailing whitespace is
highlighted in there too.

However, this doesn't make much sense. Many programs emit trailing
whitespace and highlighting it distracts from their output. Even the
user's cursor is considered whitespace so there's always a useless
highlight.

If the user is interested in trailing outspace in the output of programs
for later document formatting, they can apply such text formatting in
the document's buffer, where this plugin will be active.

Detect terminal buffers and consider them not valid for this plugin.

Signed-off-by: Jamie Bainbridge <jamie.bainbridge@gmail.com>
2023-02-13 12:17:06 +11:00

31 lines
1.4 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
if &buftype ==# 'terminal' | return 0 | endif
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,TermOpen * 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>)