patch 9.1.0953: filetype: APKBUILD files not correctly detected Commit: https://github.com/vim/vim/commit/7cb24917a112ba473cb351bdcdc48b8adbd46793 Author: Hugo Osvaldo Barrera' via vim_dev <vim_dev@googlegroups.com> Date: Wed Dec 18 17:52:48 2024 +0100
patch 9.1.0953: filetype: APKBUILD files not correctly detected Problem: filetype: APKBUILD files not correctly detected Solution: detect 'APKBUILD' files as apkbuild filetype, include a apkbuild syntax script (which basically just sources the sh.vim syntax file) (Hugo Osvaldo Barrera) Vim plugins (e.g.: ALE, nvim-lspconfig, etc) rely on filetype to determine which integrations/helpers are applicable. They expect filetype=apkbuild for APKBUILD files. On the other hand, plugins also enable bash-specific linters and functionality when filetype=bash, but APKBUILD files are POSIX sh, not bash, so these often provide bogus results. Change the filetype for APKBUILD to a 'apkbuild', so that tools and ftplugin can properly target these files. This filetype will use the existing `sh` syntax rules, since these are applicable for them. Signed-off-by: Hugo Osvaldo Barrera' via vim_dev <vim_dev@googlegroups.com> Signed-off-by: Christian Brabandt <c...@256bit.org> diff --git a/runtime/filetype.vim b/runtime/filetype.vim index fe3d4b554..8b3d44db5 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -2273,12 +2273,13 @@ au BufNewFile,BufRead *.decl,*.dcl,*.dec au BufNewFile,BufRead catalog setf catalog " Shell scripts (sh, ksh, bash, bash2, csh); Allow .profile_foo etc. -" Gentoo ebuilds, Arch Linux PKGBUILDs and Alpine Linux APKBUILDs are actually -" bash scripts. +" Gentoo ebuilds and Arch Linux PKGBUILDs are actually bash scripts. " NOTE: Patterns ending in a star are further down, these have lower priority. -au BufNewFile,BufRead .bashrc,bashrc,bash.bashrc,.bash[_-]profile,.bash[_-]logout,.bash[_-]aliases,.bash[_-]history,bash-fc[-.],*.ebuild,*.bash,*.eclass,PKGBUILD,APKBUILD,*.bats,*.cygport call dist#ft#SetFileTypeSH("bash") +au BufNewFile,BufRead .bashrc,bashrc,bash.bashrc,.bash[_-]profile,.bash[_-]logout,.bash[_-]aliases,.bash[_-]history,bash-fc[-.],*.ebuild,*.bash,*.eclass,PKGBUILD,*.bats,*.cygport call dist#ft#SetFileTypeSH("bash") au BufNewFile,BufRead .kshrc,*.ksh call dist#ft#SetFileTypeSH("ksh") au BufNewFile,BufRead */etc/profile,.profile,*.sh,*.env{rc,} call dist#ft#SetFileTypeSH(getline(1)) +" Alpine Linux APKBUILDs are actually POSIX sh scripts with special treatment. +au BufNewFile,BufRead APKBUILD setf apkbuild " Shell script (Arch Linux) or PHP file (Drupal) au BufNewFile,BufRead *.install diff --git a/runtime/syntax/apkbuild.vim b/runtime/syntax/apkbuild.vim new file mode 100644 index 000000000..f969ff0e2 --- /dev/null +++ b/runtime/syntax/apkbuild.vim @@ -0,0 +1,17 @@ +" Vim syntax file +" Language: apkbuild +" Maintainer: The Vim Project <https://github.com/vim/vim> +" Last Change: 2024 Dec 22 + +" quit when a syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +" The actual syntax is in sh.vim and controlled by buffer-local variables. +unlet! b:is_bash b:is_kornshell +let b:is_sh = 1 + +runtime! syntax/sh.vim + +let b:current_syntax = 'apkbuild' diff --git a/src/testdir/test_filetype.vim b/src/testdir/test_filetype.vim index 4761e7137..b5e2dc0b1 100644 --- a/src/testdir/test_filetype.vim +++ b/src/testdir/test_filetype.vim @@ -107,6 +107,7 @@ def s:GetFilenameChecks(): dict<list<string>> '/etc/httpd/sites-some/file', '/etc/httpd/conf.file/conf'], apachestyle: ['/etc/proftpd/file.config,/etc/proftpd/conf.file/file', '/etc/proftpd/conf.file/file', '/etc/proftpd/file.conf', '/etc/proftpd/file.conf-file', 'any/etc/proftpd/conf.file/file', 'any/etc/proftpd/file.conf', 'any/etc/proftpd/file.conf-file', 'proftpd.conf', 'proftpd.conf-file'], + apkbuild: ['APKBUILD'], applescript: ['file.scpt'], aptconf: ['apt.conf', '/.aptitude/config', 'any/.aptitude/config'], arch: ['.arch-inventory', '=tagging-method'], @@ -683,7 +684,7 @@ def s:GetFilenameChecks(): dict<list<string>> setserial: ['/etc/serial.conf', 'any/etc/serial.conf'], sexplib: ['file.sexp'], sh: ['.bashrc', '.bash_profile', '.bash-profile', '.bash_logout', '.bash-logout', '.bash_aliases', '.bash-aliases', '.bash_history', '.bash-history', - '/tmp/bash-fc-3Ozjlw', '/tmp/bash-fc.3Ozjlw', 'PKGBUILD', 'APKBUILD', 'file.bash', '/usr/share/doc/bash-completion/filter.sh', + '/tmp/bash-fc-3Ozjlw', '/tmp/bash-fc.3Ozjlw', 'PKGBUILD', 'file.bash', '/usr/share/doc/bash-completion/filter.sh', '/etc/udev/cdsymlinks.conf', 'any/etc/udev/cdsymlinks.conf', 'file.bats', '.ash_history', 'any/etc/neofetch/config.conf', '.xprofile', 'user-dirs.defaults', 'user-dirs.dirs', 'makepkg.conf', '.makepkg.conf', 'file.mdd', 'file.cygport', '.env', '.envrc', 'devscripts.conf', '.devscripts', 'file.lo', 'file.la', 'file.lai'], diff --git a/src/version.c b/src/version.c index dc7a029f4..51498fd16 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 953, /**/ 952, /**/ -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/vim_dev/E1tPMjX-00E45A-Ax%40256bit.org.