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>
This commit is contained in:
David Mandelberg
2025-02-23 09:41:42 +01:00
committed by Christian Brabandt
parent f1c3134ee1
commit ed7d8e55ac
7 changed files with 73 additions and 1 deletions

View File

@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: The Vim Project <https://github.com/vim/vim>
" Last Change: 2025 Feb 22
" Last Change: 2025 Feb 23
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
" Listen very carefully, I will say this only once
@ -341,6 +341,11 @@ au BufNewFile,BufRead *.capnp setf capnp
" Cgdb config file
au BufNewFile,BufRead cgdbrc setf cgdbrc
" m17n database files. */m17n/* matches installed files, */.m17n.d/* matches
" per-user config files, */m17n-db/* matches the git repo. (must be before
" *.cs)
au BufNewFile,BufRead */{m17n,.m17n.d,m17n-db}/*.{ali,cs,dir,flt,fst,lnm,mic,mim,tbl} setf m17ndb
" C#
au BufNewFile,BufRead *.cs,*.csx,*.cake setf cs

View File

@ -0,0 +1,17 @@
" Vim filetype plugin
" Language: m17n database
" Maintainer: David Mandelberg <david@mandelberg.org>
" Last Change: 2025 Feb 21
if exists('b:did_ftplugin')
finish
endif
let b:did_ftplugin = 1
setlocal comments=:;;;,:;;,:;
setlocal commentstring=;\ %s
setlocal iskeyword=!-~,@,^34,^(,^),^92
setlocal lisp
setlocal lispwords=
let b:undo_ftplugin = "setlocal comments< commentstring< iskeyword< lisp< lispwords<"

14
runtime/indent/m17ndb.vim Normal file
View File

@ -0,0 +1,14 @@
" Vim indent file
" Language: m17n database
" Maintainer: David Mandelberg <david@mandelberg.org>
" Last Change: 2025 Feb 21
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
setlocal autoindent
setlocal nosmartindent
let b:undo_indent = "setlocal autoindent< smartindent<"

28
runtime/syntax/m17ndb.vim Normal file
View File

@ -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