diff options
Diffstat (limited to 'vim/vimrc')
-rw-r--r-- | vim/vimrc | 47 |
1 files changed, 28 insertions, 19 deletions
@@ -2,7 +2,7 @@ " Tom Ryder (tejr)’s Literate Vimrc " ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ " -" Last updated: Wed, 29 Apr 2020 02:53:22 UTC +" Last updated: Sat, 02 May 2020 14:04:10 UTC " " │ And I was lifted up in heart, and thought " │ Of all my late-shown prowess in the lists, @@ -103,22 +103,30 @@ endif " We'll use the XDG directories as machine-local configuration and storage. " <https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html#variables> " -" Add all the configuration directories to 'runtimepath', and then put the -" cache home at the very front, so that e.g. 'spellfile' gets created in there -" rather than in the configuration directories. +" Add all the configuration directories to 'runtimepath', including "after" +" directories to the end of it, in reverse order, forming the desired layers +" of configuration. " -let s:xdgruntimepaths = xdg#['config']['dirs'] -if xdg#['config']['home'] !=# '' - call insert(s:xdgruntimepaths, xdg#['config']['home']) +let s:xdgconfigpaths = xdg#['config']['dirs'] +if xdg#['config']['home'] !=# v:null + call insert(s:xdgconfigpaths, xdg#['config']['home']) endif -if xdg#['cache']['home'] !=# '' - call insert(s:xdgruntimepaths, xdg#['cache']['home']) -endif -for s:xdgruntimepath in reverse(s:xdgruntimepaths) +for s:xdgconfigpath in reverse(s:xdgconfigpaths) execute 'set runtimepath^=' - \.option#Escape(option#item#Escape(s:xdgruntimepath)) + \.option#Escape(option#item#Escape(s:xdgconfigpath)) + execute 'set runtimepath+=' + \.option#Escape(option#item#Escape(s:xdgconfigpath.'/after')) endfor -unlet s:xdgruntimepaths s:xdgruntimepath +unlet! s:xdgconfigpath +unlet s:xdgconfigpaths + +" Now put the XDG cache home at the very front, so that e.g. 'spellfile' gets +" created in there rather than in the configuration directories. +" +if xdg#['cache']['home'] !=# v:null + execute 'set runtimepath^=' + \.option#Escape(option#item#Escape(xdg#['cache']['home'])) +endif " 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 @@ -145,7 +153,7 @@ command! -bang -bar -complete=dir -nargs=1 CreatePath " v8.1.716 introduced a way to set this with an option named 'viminfofile', " but I don't see a reason to use that. " -if xdg#['cache']['home'] !=# '' && path#Create(xdg#['cache']['home']) +if xdg#['cache']['home'] !=# v:null && path#Create(xdg#['cache']['home']) execute 'set viminfo+='.option#Escape( \ 'n'.xdg#['cache']['home'].'/viminfo' \) @@ -194,7 +202,7 @@ set history=10000 " 'backupfullname', 'swapfilefullname' would have been clearer. " set backup -if xdg#['cache']['home'] !=# '' +if xdg#['cache']['home'] !=# v:null let s:backupdir = xdg#['cache']['home'].'/backup' if path#Create(s:backupdir) execute 'set backupdir^='.option#Escape(option#item#Escape( @@ -238,7 +246,7 @@ endif " option has supported that hint for much longer than 'backupdir' has. We " apply path#Create() to attempt to create the path, if needed. " -if xdg#['cache']['home'] !=# '' +if xdg#['cache']['home'] !=# v:null let s:directory = xdg#['cache']['home'].'/swap' if path#Create(s:directory) execute 'set directory^='.option#Escape(option#item#Escape( @@ -263,7 +271,7 @@ endif " if has#('persistent_undo') set undofile - if xdg#['cache']['home'] !=# '' + if xdg#['cache']['home'] !=# v:null let s:undodir = xdg#['cache']['home'].'/undo' if path#Create(s:undodir) execute 'set undodir^='.option#Escape(option#item#Escape( @@ -402,7 +410,7 @@ set spellcapcheck=[.?!]\\%(\ \ \\\|[\\n\\r\\t]\\) set dictionary^=/usr/share/dict/words try let s:refdirs = xdg#['data']['dirs'] - if xdg#['data']['home'] !=# '' + if xdg#['data']['home'] !=# v:null call insert(s:refdirs, xdg#['data']['home']) endif for s:refdir in reverse(s:refdirs) @@ -411,7 +419,8 @@ try execute 'set thesaurus^=' \.option#Escape(option#item#Escape(s:refdir.'/thesaurus.txt')) endfor - unlet s:refdirs s:refdir + unlet! s:refdir + unlet s:refdirs catch /^Vim\%((\a\+)\)\=:E474:/ endtry |