mirror of
https://github.com/bronson/vim-trailing-whitespace.git
synced 2025-11-08 11:33:54 -05:00
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>
31 lines
1.4 KiB
VimL
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>)
|