File: xdg.vim

package info (click to toggle)
vim 2%3A9.2.0218-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 96,428 kB
  • sloc: ansic: 435,795; cpp: 6,445; makefile: 4,644; sh: 2,569; java: 2,488; xml: 2,099; python: 1,716; perl: 1,419; awk: 730; lisp: 501; cs: 458; objc: 369; sed: 35; csh: 9; haskell: 1
file content (44 lines) | stat: -rw-r--r-- 1,642 bytes parent folder | download
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 Vim Project <https://github.com/vim/vim>
" 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 .. '/vim')
  func s:mkvimdir(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 .. '/vim') == -1
    exe $"set packpath^={s:data}/vim"
    exe $"set packpath+={s:data}/vim/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:mkvimdir(s:data .. '/vim/undo')
  " let &viewdir = s:mkvimdir(s:data .. '/vim/view')
  " let g:netrw_home = s:mkvimdir(s:data .. '/vim')
  " call s:mkvimdir(s:data .. '/vim/spell')

  " Transient State:
  let &viminfofile = s:mkvimdir(s:state .. '/vim') .. '/viminfo'
  " let &directory = s:mkvimdir(s:state .. '/vim/swap')   .. '//'
  " let &backupdir = s:mkvimdir(s:state .. '/vim/backup') .. '//'

  delfunction s:mkvimdir
endif

unlet s:config s:data s:state