diff options
author | Tom Ryder <tom@sanctum.geek.nz> | 2017-11-04 18:48:22 +1300 |
---|---|---|
committer | Tom Ryder <tom@sanctum.geek.nz> | 2017-11-04 18:48:22 +1300 |
commit | 63087e57b8b1aa030b431b86f3be533ee20f07dc (patch) | |
tree | d9c129817e6e9722bdd8c559dc2f341991b68040 /vim/config | |
parent | Merge branch 'hotfix/v0.6.1' (diff) | |
parent | Update dotfiles(7) manual from README.md (diff) | |
download | dotfiles-a24ca4fd5b9d7d954475a311d9ae402949884286.tar.gz (sig) dotfiles-a24ca4fd5b9d7d954475a311d9ae402949884286.zip |
Merge branch 'release/v0.7.0'v0.7.0
* release/v0.7.0: (21 commits)
Update dotfiles(7) manual from README.md
Bump version number
Add heading for Vim plugins subsection
Update README to mention Vim plugins
Rename toggle plugin again, use commands not funcs
Add short documentation for new custom plugins
Use same comment boilerplate for custom plugins
Check 'eval' feature for loading command_typos.vim
Wrap detect_background.vim func call in 'silent!'
Rename and refactor option toggle plugin
Don't suggest mappings in Vim plugin comments
Move Vim background detection logic into plugin
Specify an install-vim-autoload target
Spin 'fo' toggle out into new flag toggler plugin
Spin copyable linebreak config into new plugin
Spin stable join config out into new plugin
Use <Plug> prefix, make space strip configurable
Rename a misnamed variable in big_file.vim
Rename bigfile plugin to big_file
Move trailing space strip config into plugin
...
Diffstat (limited to 'vim/config')
-rw-r--r-- | vim/config/command.vim | 15 | ||||
-rw-r--r-- | vim/config/format.vim | 37 | ||||
-rw-r--r-- | vim/config/join.vim | 25 | ||||
-rw-r--r-- | vim/config/syntax.vim | 27 | ||||
-rw-r--r-- | vim/config/whitespace.vim | 59 | ||||
-rw-r--r-- | vim/config/wrap.vim | 38 |
6 files changed, 21 insertions, 180 deletions
diff --git a/vim/config/command.vim b/vim/config/command.vim index 2a60bab3..f339635f 100644 --- a/vim/config/command.vim +++ b/vim/config/command.vim @@ -25,18 +25,3 @@ set shellpipe=> if exists('+shellslash') set shellslash endif - -" Tolerate typos like :Wq, :Q, or :Qa and do what I mean, including any -" arguments or modifiers; I fat-finger these commands a lot because I type -" them so rapidly, and they don't correspond to any other commands I use -if has('user_commands') - command! -bang -complete=file -nargs=? E e<bang> <args> - command! -bang -complete=file -nargs=? W w<bang> <args> - command! -bang -complete=file -nargs=? WQ wq<bang> <args> - command! -bang -complete=file -nargs=? Wq wq<bang> <args> - command! -bang Q q<bang> - command! -bang Qa qa<bang> - command! -bang QA qa<bang> - command! -bang Wa wa<bang> - command! -bang WA wa<bang> -endif diff --git a/vim/config/format.vim b/vim/config/format.vim index b0de7621..572e9877 100644 --- a/vim/config/format.vim +++ b/vim/config/format.vim @@ -5,8 +5,8 @@ if v:version > 703 || v:version ==# 703 && has('patch541') endif " -" Quick way to toggle flags in 'formatoptions' that I often want to change; -" specifically: +" Use toggle_option_flag.vim plugin to bind quick toggle actions for some +" 'formatoptions' flags: " " a - Automatically format paragraphs, reapplying the wrap on every text " insertion or deletion; sometimes I want this and sometimes I @@ -16,30 +16,11 @@ endif " to set for me) " t - Automatically wrap text at 'textwidth' (as above) " -" So I just have to type e.g. \a to toggle the auto-format flag on and off; -" very handy -" -if has('eval') - - " Declare function - function! s:ToggleFormatFlag(flag) - - " Decide on whether we're adding or removing the flag - if &l:formatoptions =~# a:flag - let l:command = 'setlocal formatoptions-=' . a:flag - else - let l:command = 'setlocal formatoptions+=' . a:flag - endif - - " Execute the command we determined and show the result - silent! execute l:command - setlocal formatoptions? - - endfunction - - " Map leader-letters to corresponding format option flags - nnoremap <silent> <Leader>a :<C-U>call <SID>ToggleFormatFlag('a')<CR> - nnoremap <silent> <Leader>c :<C-U>call <SID>ToggleFormatFlag('c')<CR> - nnoremap <silent> <Leader>t :<C-U>call <SID>ToggleFormatFlag('t')<CR> - +if has('eval') && has('user_commands') + nnoremap <silent> <leader>a + \ :<C-U>ToggleOptionFlagLocal formatoptions a<CR> + nnoremap <silent> <leader>c + \ :<C-U>ToggleOptionFlagLocal formatoptions c<CR> + nnoremap <silent> <leader>t + \ :<C-U>ToggleOptionFlagLocal formatoptions t<CR> endif diff --git a/vim/config/join.vim b/vim/config/join.vim index 7d764dce..ebf42a8b 100644 --- a/vim/config/join.vim +++ b/vim/config/join.vim @@ -2,26 +2,9 @@ " despite the noble Steve Losh's exhortations set nojoinspaces -" Keep my cursor in place when I join lines +" Rebind normal J to run plugin-defined join that doesn't jump around, but +" only if we have the eval feature, because otherwise this mapping won't exist +" and we should keep the default behaviour if has('eval') - - " Declare function - function! s:StableNormalJoin() - - " Save current cursor position - let l:lc = line('.') - let l:cc = col('.') - - " Build and execute join command - let l:command = '.,+' . v:count1 . 'join' - execute l:command - - " Restore cursor position - call cursor(l:lc, l:cc) - - endfunction - - " Remap J to the above function - nnoremap <silent> J :<C-U>call <SID>StableNormalJoin()<CR> - + nmap J <Plug>FixedJoin endif diff --git a/vim/config/syntax.vim b/vim/config/syntax.vim index e7d94b1b..8cb1228b 100644 --- a/vim/config/syntax.vim +++ b/vim/config/syntax.vim @@ -5,32 +5,9 @@ if has('syntax') silent! syntax enable silent! syntax sync minlines=100 - " Invert Vim's built-in logic for choosing dark or light backgrounds; we'll - " default to choosing a dark background unless we find some reason *not* to. + " If we can, detect a light background, but default to a dark one if has('eval') && v:version >= 701 - - " Wrap all this logic in a function - function! s:DetectBackground() - - " Split up the value of $COLORFGBG (if any) by semicolons - let l:colorfgbg = split($COLORFGBG, ';') - - " Get the background color value, or an empty string if none - let l:bg = len(l:colorfgbg) ? l:colorfgbg[-1] : '' - - " Choose the background setting based on this value - if l:bg ==# 'default' || l:bg ==# '7' || l:bg ==# '15' - set background=light - else - set background=dark - endif - - endfunction - - " Call the function just defined directly - call s:DetectBackground() - - " Ancient or cut-down Vim? Just go dark + silent! call detect_background#DetectBackground() else set background=dark endif diff --git a/vim/config/whitespace.vim b/vim/config/whitespace.vim index bfe2663d..75ab7173 100644 --- a/vim/config/whitespace.vim +++ b/vim/config/whitespace.vim @@ -1,57 +1,2 @@ -" Strip trailing whitespace with \x in the whole document -if has('eval') - - " Define function for stripping whitespace - function! s:StripTrailingWhitespace() - - " Iterating line number - let l:li = 1 - - " Line number of last line that had non-whitespace characters on it - let l:lw = 0 - - " Line number of the file's last line - let l:ll = line('$') - - " Iterate over the lines - while l:li <= l:ll - - " Get the line text - let l:line = getline(l:li) - - " Replace the line with a subsitution of its text stripping extraneous - " whitespace - call setline(l:li, substitute(l:line, '\m\C\s\+$', '', 'g')) - - " If this line has any non-whitespace characters on it, update l:lw with - " its index - if l:line =~# '\m\C\S' - let l:lw = l:li - endif - - " Increment the line counter for the next iteration - let l:li = l:li + 1 - endwhile - - " If the last non-whitespace line was before the last line proper, we can - " delete all lines after it - if l:lw < l:ll - - " Get the current line and column so we can return to it - " (Yes I know about winsaveview() and winrestview(); I want this to work - " even on very old versions of Vim if possible) - let l:lc = line('.') - let l:cc = col('.') - - " Delete the lines, which will move the cursor - execute l:lw + 1.',$ delete' - - " Return the cursor to the saved position - call cursor(l:lc, l:cc) - endif - endfunction - - " Map \x to the function just defined - nnoremap <silent> <Leader>x :<C-U>call <SID>StripTrailingWhitespace()<CR> - -endif +" \x strips trailing whitespace via a custom plugin +nmap <leader>x <Plug>StripTrailingWhitespace diff --git a/vim/config/wrap.vim b/vim/config/wrap.vim index 7a442e89..5da843ce 100644 --- a/vim/config/wrap.vim +++ b/vim/config/wrap.vim @@ -23,42 +23,12 @@ if has('linebreak') " Precede continued lines with '...' set showbreak=... - " If we have the option, indent wrapped lines as much as the first line; - " keep the value as a script variable for the toggle function. - let s:breakindent = v:version > 704 - \ || v:version ==# 704 && has('patch338') - if s:breakindent + " If we have the option, indent wrapped lines as much as the first line + if has('&breakindent') set breakindent endif - " Bind \b to turn off linebreak and toggle the showbreak characters on and - " off for convenience of copypasting multiple lines from terminal emulators. - if has('eval') + " \b toggles copy-pasteable linebreak settings + nmap <leader>b <Plug>CopyLinebreak - " Define function - function! s:ToggleBreak() - - " If linebreak is on, turn it off - if &l:linebreak - setlocal nolinebreak linebreak? - setlocal showbreak= - if s:breakindent - setlocal nobreakindent - endif - - " If it's off, turn it on - else - setlocal linebreak linebreak? - setlocal showbreak=... - if s:breakindent - setlocal breakindent - endif - endif - - endfunction - - " Map \b to defined function - nnoremap <silent> <Leader>b :<C-U>call <SID>ToggleBreak()<CR> - - endif endif |