blob: 89f45229afbe0b25c4277e211aa93cff67df6bb6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
" XDG Base Directory support
" This script sets up paths for XDG compliance.
" Maintainer: The MNV Project <https://github.com/Project-Tick/Project-Tick>
" Last Change: 2026 Feb 19
let s:config = empty($XDG_CONFIG_HOME) ? expand("~/.config") : expand("$XDG_CONFIG_HOME")
let s:data = empty($XDG_DATA_HOME) ? expand("~/.local/share") : expand("$XDG_DATA_HOME")
let s:state = empty($XDG_STATE_HOME) ? expand("~/.local/state") : expand("$XDG_STATE_HOME")
if isdirectory(s:config .. '/mnv')
func s:mkmnvdir(dir)
if !isdirectory(a:dir)
call mkdir(a:dir, 'p', 0700)
endif
return a:dir
endfunc
" Use Data for packages, prevent duplicates
if index(split(&packpath, ','), s:data .. '/mnv') == -1
exe $"set packpath^={s:data}/mnv"
exe $"set packpath+={s:data}/mnv/after"
endif
" These options are not set by default because they change the behavior of
" where files are saved. Uncomment them if you want to fully move all
" transient/persistent files to XDG directories.
" Note: Undo/Views/Spell are placed in DATA_HOME as they are persistent,
" while Swap/Backups use STATE_HOME as transient session state.
" Persistent Data:
" let &undodir = s:mkmnvdir(s:data .. '/mnv/undo')
" let &viewdir = s:mkmnvdir(s:data .. '/mnv/view')
" let g:netrw_home = s:mkmnvdir(s:data .. '/mnv')
" call s:mkmnvdir(s:data .. '/mnv/spell')
" Transient State:
let &mnvinfofile = s:mkmnvdir(s:state .. '/mnv') .. '/mnvinfo'
" let &directory = s:mkmnvdir(s:state .. '/mnv/swap') .. '//'
" let &backupdir = s:mkmnvdir(s:state .. '/mnv/backup') .. '//'
delfunction s:mkmnvdir
endif
unlet s:config s:data s:state
|