diff options
author | Tom Ryder <tom@sanctum.geek.nz> | 2020-04-25 19:34:14 +1200 |
---|---|---|
committer | Tom Ryder <tom@sanctum.geek.nz> | 2020-04-25 19:34:14 +1200 |
commit | 0d1a44c4b4a8a3a8d25a6d3a433dfcd4f408e9f3 (patch) | |
tree | 5ab01f553a43bfe353d491614650a0b6d9682c1a /vim/vimrc | |
parent | Merge branch 'release/v8.19.0' (diff) | |
parent | Bump VERSION (diff) | |
download | dotfiles-0d1a44c4b4a8a3a8d25a6d3a433dfcd4f408e9f3.tar.gz dotfiles-0d1a44c4b4a8a3a8d25a6d3a433dfcd4f408e9f3.zip |
Merge branch 'release/v8.20.0'v8.20.0
* release/v8.20.0:
Revert "Remove Vim :helptags generation"
Remove Vim :helptags generation
Include XDG_{CONFIG,DATA}_DIRS handling in Vim
Roll out the beginnings of XDG support for Vim
Remove thesaurus install target
Correct built paths for Vim cache dirs
Use explicitly nullglob Zsh patterns
Diffstat (limited to 'vim/vimrc')
-rw-r--r-- | vim/vimrc | 59 |
1 files changed, 36 insertions, 23 deletions
@@ -93,17 +93,28 @@ scriptencoding utf-8 " " We do all this with an autoloaded function option#Split(). " -" If an environment variable MYVIM exists, and it isn’t blank, apply its value -" as the first value of 'runtimepath', after escaping it appropriately. -" Otherwise, do it the other way around: the first path in the 'runtimepath' -" list becomes MYVIM. -" -if exists('$MYVIM') && $MYVIM !=# '' - execute 'set runtimepath^='.option#Escape(option#item#Escape($MYVIM, 1)) -elseif &runtimepath !=# '' +" We define an environment variable for ~/.vim or ~/vimfiles, by retrieving +" the first value from the 'runtimepath', correctly split. +" +if &runtimepath !=# '' let $MYVIM = option#Split(&runtimepath)[0] endif +" We'll use the XDG directories as machine-local configuration and storage. +" <https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html#variables> +" +"" Config +for s:configdir in reverse(xdg#ConfigDirs('vim')) + execute 'set runtimepath^=' + \.option#Escape(option#item#Escape(s:configdir)) +endfor +"" Cache; put this first so that e.g. spellfiles get created in it +let s:cachedir = xdg#CacheDir('vim') +execute 'set runtimepath^=' + \.option#Escape(option#item#Escape(s:cachedir)) +"" Data +let s:datadir = xdg#DataDirs('vim')[0] + " We need a command to reliably establish a full path, whether or not the " directories already exist. We create a wrapper for the autoloaded function " path#Create() with similar calling conventions to mkdir(), but with the ‘p’ @@ -133,8 +144,8 @@ command! -bang -bar -complete=dir -nargs=1 CreatePath " " <https://github.com/vim/vim/releases/tag/v8.1.0716> " -execute 'set viminfo+='.option#Escape('n'.$MYVIM.'/viminfo') -call path#Create($MYVIM) +execute 'set viminfo+='.option#Escape('n'.s:cachedir.'/viminfo') +call path#Create(s:cachedir) " Speaking of recorded data in viminfo files, the default Vim limit of a mere " 50 entries for command and search history is pretty stingy. Because I don’t @@ -180,9 +191,9 @@ set history=10000 " set backup execute 'set backupdir^='.option#Escape(option#item#Escape( - \ $MYVIM.'/backup'.(has#('patch-8.1.251') ? '//' : ''), + \ s:cachedir.'/backup'.(has#('patch-8.1.251') ? '//' : ''), \)) -call path#Create($MYVIM.'/backup') +call path#Create(s:cachedir.'/backup') " Files in certain directories on Unix-compatible filesystems should not be " backed up, for security reasons. This is particularly important if editing @@ -218,9 +229,10 @@ endif " option has supported that hint for much longer than 'backupdir' has. We " apply path#Create() to attempt to create the path, if needed. " +let s:swap = s:cachedir.'/swap' execute 'set directory^=' - \.option#Escape(option#item#Escape($MYVIM.'/swap//')) -call path#Create($MYVIM.'/swap') + \.option#Escape(option#item#Escape(s:swap.'//')) +call path#Create(s:swap) " Keep tracked undo history for files permanently, in a dedicated cache " directory, so that the u/:undo and CTRL-R/:redo commands will work between @@ -237,9 +249,10 @@ call path#Create($MYVIM.'/swap') " if has#('persistent_undo') set undofile + let s:undodir = s:cachedir.'/undo' execute 'set undodir^=' - \.option#Escape(option#item#Escape($MYVIM.'/undo//')) - call path#Create($MYVIM.'/undo') + \.option#Escape(option#item#Escape(s:undodir.'//')) + call path#Create(s:undodir) endif " Set up a directory for files generated by :mkview. To date, I think I have @@ -248,9 +261,10 @@ endif " ('backupdir', 'directory', 'spell', 'undodir') " if has#('mksession') + let s:viewdir = s:cachedir.'/view' execute 'set viewdir=' - \.option#Escape(option#item#Escape($MYVIM.'/view')) - call path#Create($MYVIM.'/view') + \.option#Escape(option#item#Escape(s:viewdir)) + call path#Create(s:viewdir) endif " Now that we have a bit more confidence in our runtime environment, set up @@ -346,8 +360,8 @@ set spellcapcheck=[.?!]\\%(\ \ \\\|[\\n\\r\\t]\\) " In much the same way, we add an expected path to a thesaurus, for completion " with CTRL-X CTRL-T in insert mode, or with ‘t’ added to 'completeopt'. The " thesaurus data isn’t installed as part of the default ‘install-vim’ target -" in tejr’s dotfiles, but it can be retrieved and installed with -" ‘install-vim-thesaurus’. +" in tejr’s dotfiles, but it can be retrieved from +" <https://sanctum.geek.nz/ref/thesaurus.txt>. " " I got the thesaurus itself from the link in the :help for 'thesaurus' in " v8.1. It’s from WordNet and MyThes-1. I maintain a mirror on my own @@ -365,12 +379,11 @@ set spellcapcheck=[.?!]\\%(\ \ \\\|[\\n\\r\\t]\\) " around this one with 'isfname'; the blacklist is hard-coded. " set dictionary^=/usr/share/dict/words -let s:ref = $MYVIM.'/ref' try execute 'set dictionary^=' - \.option#Escape(option#item#Escape(s:ref.'/dictionary.txt')) + \.option#Escape(option#item#Escape(s:datadir.'/dictionary.txt')) execute 'set thesaurus^=' - \.option#Escape(option#item#Escape(s:ref.'/thesaurus.txt')) + \.option#Escape(option#item#Escape(s:datadir.'/thesaurus.txt')) catch /^Vim\%((\a\+)\)\=:E474:/ endtry |