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.

Raspunde prin e-mail lui