aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2024-11-19 22:30:50 +0100
committerChristian Clason <ch.clason+github@icloud.com>2024-11-20 09:31:15 +0100
commit4c85c217d384c79013401f09b329467c53c8a01c (patch)
tree61f66e9449587f5dafd558842f9b418a7acecb78
parentde9ed1ca5478481679df23f894b92b6756be7aed (diff)
downloadrneovim-4c85c217d384c79013401f09b329467c53c8a01c.tar.gz
rneovim-4c85c217d384c79013401f09b329467c53c8a01c.tar.bz2
rneovim-4c85c217d384c79013401f09b329467c53c8a01c.zip
vim-patch:9.1.0875: filetype: hyprlang detection can be improved
Problem: filetype: hyprlang detection can be improved Solution: detect '/hypr/*.conf' files as hyprlang filetype, include basic syntax highlighting (Luca Saccarola) fixes: vim/vim#15875 closes: vim/vim#16064 https://github.com/vim/vim/commit/a13bd294ab2d9ab38634c9ec51fa76205af6eb62 Co-authored-by: Luca Saccarola <github.e41mv@aleeas.com>
-rw-r--r--runtime/lua/vim/filetype.lua1
-rw-r--r--runtime/syntax/hyprlang.vim58
-rw-r--r--test/old/testdir/test_filetype.vim2
3 files changed, 60 insertions, 1 deletions
diff --git a/runtime/lua/vim/filetype.lua b/runtime/lua/vim/filetype.lua
index 9010adf777..c23beb960c 100644
--- a/runtime/lua/vim/filetype.lua
+++ b/runtime/lua/vim/filetype.lua
@@ -2214,6 +2214,7 @@ local pattern = {
['/screengrab/.*%.conf$'] = 'dosini',
['^${GNUPGHOME}/gpg%.conf$'] = 'gpg',
['/boot/grub/grub%.conf$'] = 'grub',
+ ['/hypr/.*%.conf$'] = 'hyprlang',
['^lilo%.conf'] = starsetf('lilo'),
['^named.*%.conf$'] = 'named',
['^rndc.*%.conf$'] = 'named',
diff --git a/runtime/syntax/hyprlang.vim b/runtime/syntax/hyprlang.vim
new file mode 100644
index 0000000000..f36c58c646
--- /dev/null
+++ b/runtime/syntax/hyprlang.vim
@@ -0,0 +1,58 @@
+" Vim syntax file
+" Language: hyprlang
+" Maintainer: Luca Saccarola <github.e41mv@aleeas.com>
+" Last Change: 2024 nov 15
+
+if exists("b:current_syntax")
+ finish
+endif
+let b:current_syntax = "hyprlang"
+
+syn case ignore
+
+syn match hyprCommand '^\s*\zs\S\+\ze\s*=' contains=hyprVariable
+syn match hyprValue '=\s*\zs.\+\ze$' contains=hyprNumber,hyprFloat,hyprBoolean,hyprString,hyprColor,hyprModifier,hyprVariable,hyprComment
+
+syn match hyprVariable '\$\w\+' contained
+
+" Category
+syn region hyprCategory matchgroup=hyprCategoryD start='^\s*\k\+\s*{' end='^\s*}' contains=hyprCommand,hyprValue,hyprComment,hyprCategory,hyprCategoryD
+
+" Variables Types
+syn match hyprNumber '\%[-+]\<\d\+\>\%[%]' contained
+syn match hyprFloat '\%[-+]\<\d\+\.\d\+\>\%[%]' contained
+syn match hyprString '["\'].*["\']' contained
+syn match hyprColor 'rgb(\(\w\|\d\)\{6})' contained
+syn match hyprColor 'rgba(\(\w\|\d\)\{8})' contained
+syn match hyprColor '0x\(\w\|\d\)\{8}' contained
+syn keyword hyprBoolean true false yes no on off contained
+
+" Super Shift Alt Ctrl Control
+syn keyword hyprModifier contained
+ \ super supershift superalt superctrl supercontrol
+ \ super_shift super_alt super_ctrl super_control
+ \ shift shiftsuper shiftalt shiftctrl shiftcontrol
+ \ shift_super shift_alt shift_ctrl shift_control
+ \ alt altsuper altshift altctrl altcontrol
+ \ alt_super alt_shift alt_ctrl alt_control
+ \ ctrl ctrlsuper ctrlshift ctrlalt ctrlcontrol
+ \ ctrl_super ctrl_shift ctrl_alt ctrl_control
+ \ control controlsuper controlshift controlalt controlctrl
+ \ control_super control_shift control_alt control_ctrl
+
+" Comments
+syn match hyprComment '#.*$'
+
+" Link to default groups
+hi def link hyprVariable Identifier
+hi def link hyprCategoryD Special
+hi def link hyprComment Comment
+hi def link hyprNumber Constant
+hi def link hyprModifier Constant
+hi def link hyprFloat hyprNumber
+hi def link hyprBoolean Boolean
+hi def link hyprString String
+hi def link hyprColor Structure
+hi def link hyprCommand Keyword
+
+" vim: ts=8 sts=2 sw=2 et
diff --git a/test/old/testdir/test_filetype.vim b/test/old/testdir/test_filetype.vim
index 2749a6a200..889386ae5b 100644
--- a/test/old/testdir/test_filetype.vim
+++ b/test/old/testdir/test_filetype.vim
@@ -353,7 +353,7 @@ func s:GetFilenameChecks() abort
\ 'htmlm4': ['file.html.m4'],
\ 'httest': ['file.htt', 'file.htb'],
\ 'hurl': ['file.hurl'],
- \ 'hyprlang': ['hyprlock.conf', 'hyprland.conf', 'hypridle.conf', 'hyprpaper.conf'],
+ \ 'hyprlang': ['hyprlock.conf', 'hyprland.conf', 'hypridle.conf', 'hyprpaper.conf', '/hypr/foo.conf'],
\ 'i3config': ['/home/user/.i3/config', '/home/user/.config/i3/config', '/etc/i3/config', '/etc/xdg/i3/config'],
\ 'ibasic': ['file.iba', 'file.ibi'],
\ 'icemenu': ['/.icewm/menu', 'any/.icewm/menu'],