aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/lua/vim/filetype.lua1
-rw-r--r--runtime/syntax/pacmanlog.vim41
-rw-r--r--test/old/testdir/test_filetype.vim1
3 files changed, 43 insertions, 0 deletions
diff --git a/runtime/lua/vim/filetype.lua b/runtime/lua/vim/filetype.lua
index 60882d4432..e64923ab54 100644
--- a/runtime/lua/vim/filetype.lua
+++ b/runtime/lua/vim/filetype.lua
@@ -1394,6 +1394,7 @@ local filename = {
octaverc = 'octave',
['octave.conf'] = 'octave',
opam = 'opam',
+ ['pacman.log'] = 'pacmanlog',
['/etc/pam.conf'] = 'pamconf',
['pam_env.conf'] = 'pamenv',
['.pam_environment'] = 'pamenv',
diff --git a/runtime/syntax/pacmanlog.vim b/runtime/syntax/pacmanlog.vim
new file mode 100644
index 0000000000..98abd58685
--- /dev/null
+++ b/runtime/syntax/pacmanlog.vim
@@ -0,0 +1,41 @@
+" Vim syntax file
+" Language: pacman.log
+" Maintainer: Ronan Pigott <ronan@rjp.ie>
+" Last Change: 2023 Dec 04
+
+if exists("b:current_syntax")
+ finish
+endif
+
+syn sync maxlines=1
+syn region pacmanlogMsg start='\S' end='$' keepend contains=pacmanlogTransaction,pacmanlogALPMMsg
+syn region pacmanlogTag start='\['hs=s+1 end='\]'he=e-1 keepend nextgroup=pacmanlogMsg
+syn region pacmanlogTime start='^\['hs=s+1 end='\]'he=e-1 keepend nextgroup=pacmanlogTag
+
+syn match pacmanlogPackageName '\v[a-z0-9@_+.-]+' contained skipwhite nextgroup=pacmanlogPackageVersion
+syn match pacmanlogPackageVersion '(.*)' contained
+
+syn match pacmanlogTransaction 'transaction \v(started|completed)$' contained
+syn match pacmanlogInstalled '\v(re)?installed' contained nextgroup=pacmanlogPackageName
+syn match pacmanlogUpgraded 'upgraded' contained nextgroup=pacmanlogPackageName
+syn match pacmanlogDowngraded 'downgraded' contained nextgroup=pacmanlogPackageName
+syn match pacmanlogRemoved 'removed' contained nextgroup=pacmanlogPackageName
+syn match pacmanlogWarning 'warning:.*$' contained
+
+syn region pacmanlogALPMMsg start='\v(\[ALPM\] )@<=(transaction|(re)?installed|upgraded|downgraded|removed|warning)>' end='$' contained
+ \ contains=pacmanlogTransaction,pacmanlogInstalled,pacmanlogUpgraded,pacmanlogDowngraded,pacmanlogRemoved,pacmanlogWarning,pacmanlogPackageName,pacmanlogPackgeVersion
+
+hi def link pacmanlogTime String
+hi def link pacmanlogTag Type
+
+hi def link pacmanlogTransaction Special
+hi def link pacmanlogInstalled Identifier
+hi def link pacmanlogRemoved Repeat
+hi def link pacmanlogUpgraded pacmanlogInstalled
+hi def link pacmanlogDowngraded pacmanlogRemoved
+hi def link pacmanlogWarning WarningMsg
+
+hi def link pacmanlogPackageName Normal
+hi def link pacmanlogPackageVersion Comment
+
+let b:current_syntax = "pacmanlog"
diff --git a/test/old/testdir/test_filetype.vim b/test/old/testdir/test_filetype.vim
index c77ccac3a1..4288a5bde5 100644
--- a/test/old/testdir/test_filetype.vim
+++ b/test/old/testdir/test_filetype.vim
@@ -471,6 +471,7 @@ func s:GetFilenameChecks() abort
\ 'opl': ['file.OPL', 'file.OPl', 'file.OpL', 'file.Opl', 'file.oPL', 'file.oPl', 'file.opL', 'file.opl'],
\ 'ora': ['file.ora'],
\ 'org': ['file.org', 'file.org_archive'],
+ \ 'pacmanlog': ['pacman.log'],
\ 'pamconf': ['/etc/pam.conf', '/etc/pam.d/file', 'any/etc/pam.conf', 'any/etc/pam.d/file'],
\ 'pamenv': ['/etc/security/pam_env.conf', '/home/user/.pam_environment', '.pam_environment', 'pam_env.conf'],
\ 'papp': ['file.papp', 'file.pxml', 'file.pxsl'],