aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/ftplugin/xcompose.vim13
-rw-r--r--runtime/lua/vim/filetype.lua2
-rw-r--r--runtime/syntax/xcompose.vim37
-rw-r--r--test/old/testdir/test_filetype.vim1
4 files changed, 53 insertions, 0 deletions
diff --git a/runtime/ftplugin/xcompose.vim b/runtime/ftplugin/xcompose.vim
new file mode 100644
index 0000000000..7345c27a2e
--- /dev/null
+++ b/runtime/ftplugin/xcompose.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language: XCompose
+" Maintainer: ObserverOfTime <chronobserver@disroot.org
+" Last Change: 2023 Nov 09
+
+if exists('b:did_ftplugin')
+ finish
+endif
+let b:did_ftplugin = 1
+
+setl comments=:# commentstring=#\ %s
+
+let b:undo_ftplugin = 'setl com< cms<'
diff --git a/runtime/lua/vim/filetype.lua b/runtime/lua/vim/filetype.lua
index b418eba294..aae63af132 100644
--- a/runtime/lua/vim/filetype.lua
+++ b/runtime/lua/vim/filetype.lua
@@ -1521,6 +1521,8 @@ local filename = {
wget2rc = 'wget2',
['.wvdialrc'] = 'wvdial',
['wvdial.conf'] = 'wvdial',
+ ['.XCompose'] = 'xcompose',
+ ['Compose'] = 'xcompose',
['.Xresources'] = 'xdefaults',
['.Xpdefaults'] = 'xdefaults',
['xdm-config'] = 'xdefaults',
diff --git a/runtime/syntax/xcompose.vim b/runtime/syntax/xcompose.vim
new file mode 100644
index 0000000000..3637b9f3b6
--- /dev/null
+++ b/runtime/syntax/xcompose.vim
@@ -0,0 +1,37 @@
+" Vim syntax file
+" Language: XCompose
+" Maintainer: ObserverOfTime <chronobserver@disroot.org>
+" Filenames: .XCompose, Compose
+" Last Change: 2023 Nov 09
+
+" Comments
+syn keyword xcomposeTodo contained TODO FIXME XXX
+syn match xcomposeComment /#.*/ contains=xcomposeTodo
+
+" Includes
+syn keyword xcomposeInclude include nextgroup=xcomposeFile skipwhite
+syn match xcomposeFile /"\([^"]\|\\"\)\+"/ contained
+syn match xcomposeSubstitution /%[HLS]/ contained containedin=xcomposeFile
+
+" Modifiers
+syn keyword xcomposeModifier Ctrl Lock Caps Shift Alt Meta None
+syn match xcomposeModifierPrefix /\s*\zs[!~]\ze\s*/
+
+" Keysyms
+syn match xcomposeKeysym /<[A-Za-z0-9_]\+>/
+syn match xcomposeKeysym /[A-Za-z0-9_]\+/ contained
+syn match xcomposeString /"\([^"]\|\\"\)\+"/ contained nextgroup=xcomposeKeysym skipwhite
+syn match xcomposeColon /:/ nextgroup=xcomposeKeysym,xcomposeString skipwhite
+
+hi def link xcomposeColon Delimiter
+hi def link xcomposeComment Comment
+hi def link xcomposeFile String
+hi def link xcomposeInclude Include
+hi def link xcomposeKeysym Constant
+hi def link xcomposeModifier Function
+hi def link xcomposeModifierPrefix Operator
+hi def link xcomposeString String
+hi def link xcomposeSubstitution Special
+hi def link xcomposeTodo Todo
+
+let b:current_syntax = 'xcompose'
diff --git a/test/old/testdir/test_filetype.vim b/test/old/testdir/test_filetype.vim
index 8af87115ac..d0361d6a87 100644
--- a/test/old/testdir/test_filetype.vim
+++ b/test/old/testdir/test_filetype.vim
@@ -721,6 +721,7 @@ func s:GetFilenameChecks() abort
\ 'wsh': ['file.wsf', 'file.wsc'],
\ 'wsml': ['file.wsml'],
\ 'wvdial': ['wvdial.conf', '.wvdialrc'],
+ \ 'xcompose': ['.XCompose', 'Compose'],
\ 'xdefaults': ['.Xdefaults', '.Xpdefaults', '.Xresources', 'xdm-config', 'file.ad', '/Xresources/file', '/app-defaults/file', 'Xresources', 'Xresources-file', 'any/Xresources/file', 'any/app-defaults/file'],
\ 'xf86conf': ['xorg.conf', 'xorg.conf-4'],
\ 'xhtml': ['file.xhtml', 'file.xht'],