diff options
Diffstat (limited to 'vim/plugin')
-rw-r--r-- | vim/plugin/put_date.vim | 11 | ||||
-rw-r--r-- | vim/plugin/spellfile_local.vim | 19 | ||||
-rw-r--r-- | vim/plugin/utc.vim | 31 |
3 files changed, 55 insertions, 6 deletions
diff --git a/vim/plugin/put_date.vim b/vim/plugin/put_date.vim new file mode 100644 index 00000000..29cf886e --- /dev/null +++ b/vim/plugin/put_date.vim @@ -0,0 +1,11 @@ +if exists('loaded_put_date') + finish +endif +let loaded_put_date = 1 + +" Define a :PutDate command that inserts a line into the buffer with an +" RFC-2822 date string, using the system strftime() implementation. Allow it +" to accept a range which defaults to the current line. +" +command! -range PutDate + \ <line1>put =strftime('%a, %d %b %Y %T %z') diff --git a/vim/plugin/spellfile_local.vim b/vim/plugin/spellfile_local.vim index 583df986..0ded3fc1 100644 --- a/vim/plugin/spellfile_local.vim +++ b/vim/plugin/spellfile_local.vim @@ -3,7 +3,7 @@ if exists('loaded_spellfile_local') endif let loaded_spellfile_local = 1 -EnsureDir $MYVIM/cache/spell +Establish $MYVIM/cache/spell let spellfile = join([ \ substitute(v:lang, '_.*', '', ''), @@ -11,9 +11,9 @@ let spellfile = join([ \ ], '.') . '.add' execute 'set spellfile=$MYVIM/cache/spell/'.spellfile -EnsureDir $MYVIM/cache/spell/local +Establish $MYVIM/cache/spell/local -function! AddLocalSpellfile() abort +function! AddLocalSpellFile() abort let spellfile = join([ \ substitute(expand('%:p'), '[^0-9A-Za-z_.-]', '%', 'g'), \ substitute(v:lang, '_.*', '', ''), @@ -21,6 +21,13 @@ function! AddLocalSpellfile() abort \ ], '.') . '.add' setlocal spellfile< execute 'setlocal spellfile+=$MYVIM/cache/spell/local/'.spellfile -endfunction! -autocmd vimrc BufRead * - \ call AddLocalSpellfile() | nnoremap <buffer> zG 2zg + nnoremap <buffer> zG 2zg +endfunction + +command! AddLocalSpellFile + \ call AddLocalSpellFile() + +augroup spellfile_local + autocmd BufRead * + \ AddLocalSpellFile +augroup END diff --git a/vim/plugin/utc.vim b/vim/plugin/utc.vim new file mode 100644 index 00000000..39eebad8 --- /dev/null +++ b/vim/plugin/utc.vim @@ -0,0 +1,31 @@ +if exists('loaded_utc') + finish +endif +let loaded_utc = 1 + +" Define a :UTC command wrapper, implemented with a script-local function of +" the same name. Use expand('$TZ') to ensure we're getting the value of the +" current timezone from the environment, and cache that in a local variable +" just long enough to manipulate the environment into using UTC for a command. +" +" While this is a tidy way to abstract the operation for the map, I don't like +" the function implementation much at all. It works OK in stable versions of +" Vim, but changing an environment variable just long enough to affect the +" outcome of a command as a side effect seems a bit gross. +" +" Worse, the whole thing presently seems to be broken in v8.1.1487; the +" timezone first chosen seems to 'stick' permanently, and the mapping each +" produce timestamps in that zone. I haven't worked out why this happens yet. +" Using the new getenv() and setenv() functions does not seem to fix it. It +" works fine in Debian GNU/Linux's packaged v8.0.x. + +function! s:UTC(command) abort + let tz = expand('$TZ') + let $TZ = 'UTC' | execute a:command | let $TZ = tz +endfunction + +" The :UTC command itself completes another command name, and accepts one +" required argument, which it passes in quoted form to the helper function. +" +command! -complete=command -nargs=1 UTC + \ call s:UTC(<q-args>) |