patch 9.1.1140: filetype: m17ndb files are not detected
Problem: filetype: m17ndb files are not detected
Solution: detect m17ndb files as m17ndb filetype,
include filetype, syntax and indent files for the
new filetype (David Mandelberg).
References:
https://www.nongnu.org/m17n/manual-en/m17nDBFormat.html describes the
format. https://git.savannah.nongnu.org/cgit/m17n/m17n-db.git/tree/ has
examples of the files.
closes: #16696
Signed-off-by: David Mandelberg <david@mandelberg.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/runtime/syntax/m17ndb.vim b/runtime/syntax/m17ndb.vim
new file mode 100644
index 0000000..8d63e6f
--- /dev/null
+++ b/runtime/syntax/m17ndb.vim
@@ -0,0 +1,28 @@
+" Vim syntax file
+" Language: m17n database
+" Maintainer: David Mandelberg <david@mandelberg.org>
+" Last Change: 2025 Feb 21
+"
+" https://www.nongnu.org/m17n/manual-en/m17nDBFormat.html describes the
+" syntax, but some of its regexes don't match the code. read_element() in
+" https://git.savannah.nongnu.org/cgit/m17n/m17n-lib.git/tree/src/plist.c
+" seems to be a better place to understand the syntax.
+
+if exists("b:current_syntax")
+ finish
+endif
+let b:current_syntax = "m17ndb"
+
+syn match m17ndbSymbol /\([^\x00- ()"\\]\|\\\_.\)\+/
+syn match m17ndbComment ";.*$" contains=@Spell
+syn match m17ndbInteger "-\?[0-9]\+"
+syn match m17ndbInteger "[0#]x[0-9A-Fa-f]\+"
+syn match m17ndbCharacter "?\(\_[^\\]\|\\\_.\)"
+syn region m17ndbText start=/\Z"/ skip=/\\\\\|\\"/ end=/"/
+syn region m17ndbPlist matchgroup=m17ndbParen start="(" end=")" fold contains=ALL
+
+hi def link m17ndbCharacter Character
+hi def link m17ndbComment Comment
+hi def link m17ndbInteger Number
+hi def link m17ndbParen Delimiter
+hi def link m17ndbText String