Skip to content

Commit 166cd7b

Browse files
cootbrammool
authored andcommitted
patch 9.0.1632: not all cabal config files are recognized
Problem: Not all cabal config files are recognized. Solution: Add a couple of patterns. (Marcin Szamotulski, closes #12463)
1 parent 4c7cb37 commit 166cd7b

File tree

3 files changed

+41
-5
lines changed

3 files changed

+41
-5
lines changed

runtime/filetype.vim

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -784,7 +784,7 @@ au BufNewFile,BufRead */.config/git/config setf gitconfig
784784
au BufNewFile,BufRead *.git/config.worktree setf gitconfig
785785
au BufNewFile,BufRead *.git/worktrees/*/config.worktree setf gitconfig
786786
au BufNewFile,BufRead .gitmodules,*.git/modules/*/config setf gitconfig
787-
if !empty($XDG_CONFIG_HOME)
787+
if exists('$XDG_CONFIG_HOME')
788788
au BufNewFile,BufRead $XDG_CONFIG_HOME/git/config setf gitconfig
789789
au BufNewFile,BufRead $XDG_CONFIG_HOME/git/attributes setf gitattributes
790790
au BufNewFile,BufRead $XDG_CONFIG_HOME/git/ignore setf gitignore
@@ -886,6 +886,10 @@ au BufNewFile,BufRead *.lhs setf lhaskell
886886
au BufNewFile,BufRead *.chs setf chaskell
887887
au BufNewFile,BufRead cabal.project setf cabalproject
888888
au BufNewFile,BufRead $HOME/.cabal/config setf cabalconfig
889+
if exists('$XDG_CONFIG_HOME')
890+
au BufNewFile,BufRead $XDG_CONFIG_HOME/cabal/config setf cabalconfig
891+
endif
892+
au BufNewFile,BufRead $HOME/.config/cabal/config setf cabalconfig
889893
au BufNewFile,BufRead cabal.config setf cabalconfig
890894

891895
" Haste

src/testdir/test_filetype.vim

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,30 @@ func Test_other_type()
4040
filetype off
4141
endfunc
4242

43+
" If $XDG_CONFIG_HOME is set return "fname" expanded in a list.
44+
" Otherwise return an empty list.
45+
def s:WhenConfigHome(fname: string): list<string>
46+
if exists('$XDG_CONFIG_HOME')
47+
return [expand(fname)]
48+
endif
49+
return []
50+
enddef
51+
52+
" Return the name used for the $XDG_CONFIG_HOME directory.
53+
def s:GetConfigHome(): string
54+
return getcwd() .. '/Xdg_config_home'
55+
enddef
56+
57+
" saved value of $XDG_CONFIG_HOME
58+
let s:saveConfigHome = ''
59+
60+
def s:SetupConfigHome()
61+
if empty(windowsversion())
62+
s:saveConfigHome = $XDG_CONFIG_HOME
63+
setenv("XDG_CONFIG_HOME", GetConfigHome())
64+
endif
65+
enddef
66+
4367
" Filetypes detected just from matching the file name.
4468
" First one is checking that these files have no filetype.
4569
def s:GetFilenameChecks(): dict<list<string>>
@@ -95,7 +119,7 @@ def s:GetFilenameChecks(): dict<list<string>>
95119
bzr: ['bzr_log.any', 'bzr_log.file'],
96120
c: ['enlightenment/file.cfg', 'file.qc', 'file.c', 'some-enlightenment/file.cfg'],
97121
cabal: ['file.cabal'],
98-
cabalconfig: ['cabal.config'],
122+
cabalconfig: ['cabal.config', expand("$HOME/.config/cabal/config")] + WhenConfigHome('$XDG_CONFIG_HOME/cabal/config'),
99123
cabalproject: ['cabal.project', 'cabal.project.local'],
100124
cairo: ['file.cairo'],
101125
calendar: ['calendar', '/.calendar/file', '/share/calendar/any/calendar.file', '/share/calendar/calendar.file', 'any/share/calendar/any/calendar.file', 'any/share/calendar/calendar.file'],
@@ -229,10 +253,10 @@ def s:GetFilenameChecks(): dict<list<string>>
229253
gedcom: ['file.ged', 'lltxxxxx.txt', '/tmp/lltmp', '/tmp/lltmp-file', 'any/tmp/lltmp', 'any/tmp/lltmp-file'],
230254
gemtext: ['file.gmi', 'file.gemini'],
231255
gift: ['file.gift'],
232-
gitattributes: ['file.git/info/attributes', '.gitattributes', '/.config/git/attributes', '/etc/gitattributes', '/usr/local/etc/gitattributes', 'some.git/info/attributes'],
256+
gitattributes: ['file.git/info/attributes', '.gitattributes', '/.config/git/attributes', '/etc/gitattributes', '/usr/local/etc/gitattributes', 'some.git/info/attributes'] + WhenConfigHome('$XDG_CONFIG_HOME/git/attributes'),
233257
gitcommit: ['COMMIT_EDITMSG', 'MERGE_MSG', 'TAG_EDITMSG', 'NOTES_EDITMSG', 'EDIT_DESCRIPTION'],
234-
gitconfig: ['file.git/config', 'file.git/config.worktree', 'file.git/worktrees/x/config.worktree', '.gitconfig', '.gitmodules', 'file.git/modules//config', '/.config/git/config', '/etc/gitconfig', '/usr/local/etc/gitconfig', '/etc/gitconfig.d/file', 'any/etc/gitconfig.d/file', '/.gitconfig.d/file', 'any/.config/git/config', 'any/.gitconfig.d/file', 'some.git/config', 'some.git/modules/any/config'],
235-
gitignore: ['file.git/info/exclude', '.gitignore', '/.config/git/ignore', 'some.git/info/exclude'],
258+
gitconfig: ['file.git/config', 'file.git/config.worktree', 'file.git/worktrees/x/config.worktree', '.gitconfig', '.gitmodules', 'file.git/modules//config', '/.config/git/config', '/etc/gitconfig', '/usr/local/etc/gitconfig', '/etc/gitconfig.d/file', 'any/etc/gitconfig.d/file', '/.gitconfig.d/file', 'any/.config/git/config', 'any/.gitconfig.d/file', 'some.git/config', 'some.git/modules/any/config'] + WhenConfigHome('$XDG_CONFIG_HOME/git/config'),
259+
gitignore: ['file.git/info/exclude', '.gitignore', '/.config/git/ignore', 'some.git/info/exclude'] + WhenConfigHome('$XDG_CONFIG_HOME/git/ignore'),
236260
gitolite: ['gitolite.conf', '/gitolite-admin/conf/file', 'any/gitolite-admin/conf/file'],
237261
gitrebase: ['git-rebase-todo'],
238262
gitsendemail: ['.gitsendemail.msg.xxxxxx'],
@@ -807,6 +831,12 @@ def s:CheckItems(checks: dict<list<string>>)
807831
enddef
808832

809833
def Test_filetype_detection()
834+
SetupConfigHome()
835+
if !empty(s:saveConfigHome)
836+
defer setenv("XDG_CONFIG_HOME", s:saveConfigHome)
837+
endif
838+
mkdir(GetConfigHome(), 'R')
839+
810840
filetype on
811841
CheckItems(s:GetFilenameChecks())
812842
if has('fname_case')

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -695,6 +695,8 @@ static char *(features[]) =
695695

696696
static int included_patches[] =
697697
{ /* Add new patch number below this line */
698+
/**/
699+
1632,
698700
/**/
699701
1631,
700702
/**/

0 commit comments

Comments
 (0)