aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2018-05-30 23:43:54 +1200
committerTom Ryder <tom@sanctum.geek.nz>2018-05-30 23:48:46 +1200
commit6165cfe32251c80f44625b4b3128dcb5585a6ad3 (patch)
treef354bacae41e15da9f5569a7c09efe9fb67531af
parente132c864e873e8f8f040f4048e992d20468e4255 (diff)
downloaddotfiles-6165cfe32251c80f44625b4b3128dcb5585a6ad3.tar.gz
dotfiles-6165cfe32251c80f44625b4b3128dcb5585a6ad3.zip
Spin off toggle_option_flag Vim plugin
-rw-r--r--.gitmodules3
-rw-r--r--Makefile11
m---------vim/bundle/toggle_option_flags0
-rw-r--r--vim/doc/toggle_option_flag.txt37
-rw-r--r--vim/plugin/toggle_option_flag.vim104
5 files changed, 5 insertions, 150 deletions
diff --git a/.gitmodules b/.gitmodules
index 8772a8e5..550c19e9 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -11,6 +11,9 @@
[submodule "vim/bundle/sahara"]
path = vim/bundle/sahara
url = https://sanctum.geek.nz/code/vim-sahara.git
+[submodule "vim/bundle/toggle_option_flags"]
+ path = vim/bundle/toggle_option_flags
+ url = https://sanctum.geek.nz/code/vim-toggle-option-flags.git
# Others' Vim plugins
[submodule "vim/bundle/abolish"]
diff --git a/Makefile b/Makefile
index ff1cad84..605c10f9 100644
--- a/Makefile
+++ b/Makefile
@@ -83,8 +83,7 @@
dist-vim-plugin-command-typos \
dist-vim-plugin-copy-linebreak \
dist-vim-plugin-mail-mutt \
- dist-vim-plugin-strip-trailing-whitespace \
- dist-vim-plugin-toggle-option-flag
+ dist-vim-plugin-strip-trailing-whitespace
.SUFFIXES:
.SUFFIXES: .awk .bash .m4 .mi5 .pl .sed .sh
@@ -678,8 +677,7 @@ dist-vim-plugin: dist-vim-plugin-auto-backupdir \
dist-vim-plugin-copy-linebreak \
dist-vim-plugin-detect-background \
dist-vim-plugin-mail-mutt \
- dist-vim-plugin-strip-trailing-whitespace \
- dist-vim-plugin-toggle-option-flag
+ dist-vim-plugin-strip-trailing-whitespace
dist-vim-plugin-auto-backupdir: \
vim/plugin/auto_backupdir.vim \
@@ -726,8 +724,3 @@ dist-vim-plugin-strip-trailing-whitespace: \
vim/doc/strip_trailing_whitespace.txt \
VERSION
sh dist/vim-plugin.sh strip_trailing_whitespace
-dist-vim-plugin-toggle-option-flag: \
- vim/plugin/toggle_option_flag.vim \
- vim/doc/toggle_option_flag.txt \
- VERSION
- sh dist/vim-plugin.sh toggle_option_flag
diff --git a/vim/bundle/toggle_option_flags b/vim/bundle/toggle_option_flags
new file mode 160000
+Subproject 59f8825150b79f732d57d33cb75a20719a7c690
diff --git a/vim/doc/toggle_option_flag.txt b/vim/doc/toggle_option_flag.txt
deleted file mode 100644
index be035221..00000000
--- a/vim/doc/toggle_option_flag.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-*toggle_option_flag.txt* For Vim version 7.0 Last change: 2017 November 12
-
-DESCRIPTION *toggle_option_flag*
-
- *:ToggleOptionFlag* *:ToggleOptionFlagLocal*
-This plugin provides `:ToggleOptionFlag` and `:ToggleOptionFlagLocal` commands
-to toggle the values of options like |'formatoptions'| or |'complete'| that
-have values comprised of single-character or comma-separated flags. The author
-originally designed it for toggling flags in |'formatoptions'| quickly.
-
-EXAMPLES *toggle_option_flag-examples*
->
- :ToggleOptionFlag formatoptions a
- :ToggleOptionFlag switchbuf useopen
- :ToggleOptionFlagLocal shortmess I
-<
-REQUIREMENTS *toggle_option_flag-requirements*
-
-This plugin is only available if 'compatible' is not set. It also requires the
-|+user_commands| Vim feature.
-
-AUTHOR *toggle_option_flag-author*
-
-Written and maintained by Tom Ryder <tom@sanctum.geek.nz>.
-
-LICENSE *toggle_option_flag-license*
-
-Licensed for distribution under the same terms as Vim itself (see |license|).
-
-DISTRIBUTION *toggle_option_flag-distribution*
-
-This plugin lives in Tom Ryder's "dotfiles" suite, and may eventually be spun
-off into a separate distribution as it solidifies and this documentation
-improves. See <https://sanctum.geek.nz/cgit/dotfiles.git/about/> for more
-information.
-
- vim:tw=78:ts=8:ft=help:norl:
diff --git a/vim/plugin/toggle_option_flag.vim b/vim/plugin/toggle_option_flag.vim
deleted file mode 100644
index bc7ccd78..00000000
--- a/vim/plugin/toggle_option_flag.vim
+++ /dev/null
@@ -1,104 +0,0 @@
-"
-" toggle_option_flag.vim: Provide commands to toggle flags in grouped options
-" like 'formatoptions', 'shortmess', 'complete', 'switchbuf', etc.
-"
-" Author: Tom Ryder <tom@sanctum.geek.nz>
-" License: Same as Vim itself
-"
-if exists('g:loaded_toggle_option_flag') || &compatible
- finish
-endif
-if !has('user_commands')
- finish
-endif
-let g:loaded_toggle_option_flag = 1
-
-" Show an error-highlighted message and beep, but without a real :echoerr
-function! s:Error(message)
- execute 'normal! \<Esc>'
- echohl ErrorMsg
- echomsg a:message
- echohl None
-endfunction
-
-" Test whether an option currently has a flag as part of its value
-function! s:Has(option, flag)
-
- " Horrible :execute to get the option's current setting into a variable
- " (I couldn't get {curly braces} indirection to work)
- let l:current = ''
- execute 'let l:current = &' . a:option
-
- " If the flag we're toggling is longer than one character, this must by
- " necessity be a delimited option. I think all of those in VimL are
- " comma-separated. Extend the flag and value so that they'll still match at
- " the start and end. Otherwise, use them as-is.
- if strlen(a:flag) > 1
- let l:search_flag = ',' . a:flag . ','
- let l:search_value = ',' . l:current . ','
- else
- let l:search_flag = a:flag
- let l:search_value = l:current
- endif
-
- " Return whether
- return stridx(l:search_value, l:search_flag) > -1
-
-endfunction
-
-" Internal function to do the toggling
-function! s:Toggle(option, flag, local)
-
- " Check for spurious option strings, we don't want to :execute anything funny
- if a:option =~# '\m\L'
- call s:Error('Illegal option name')
- return 0
- endif
-
- " Check the option actually exists
- if !exists('&' . a:option)
- call s:Error('No such option: ' . a:option)
- return 0
- endif
-
- " Choose which set command to use
- let l:set = a:local
- \ ? 'setlocal'
- \ : 'set'
-
- " Find whether the flag is set before the change
- let l:before = s:Has(a:option, a:flag)
-
- " Assign -= or += as the operation to run based on whether the flag already
- " appears in the option value or not
- let l:operation = l:before
- \ ? '-='
- \ : '+='
-
- " Try to set the option; suppress errors, we'll check our work
- silent! execute l:set
- \ . ' '
- \ . a:option . l:operation . escape(a:flag, '\ ')
-
- " Find whether the flag is set after the change
- let l:after = s:Has(a:option, a:flag)
-
- " If we made a difference, report the new value; if we didn't, admit it
- if l:before != l:after
- execute l:set . ' ' . a:option . '?'
- else
- call s:Error('Unable to toggle '.a:option.' flag '.a:flag)
- endif
-
- " Return value is whether we made a change
- return l:before != l:after
-
-endfunction
-
-" User commands wrapping around calls to the above function
-command -nargs=+ -complete=option
- \ ToggleOptionFlag
- \ call <SID>Toggle(<f-args>, 0)
-command -nargs=+ -complete=option
- \ ToggleOptionFlagLocal
- \ call <SID>Toggle(<f-args>, 1)