diff --git a/runtime/filetype.vim b/runtime/filetype.vim index 2a11f261cd..7548576830 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -1493,7 +1493,12 @@ au BufNewFile,BufRead */etc/man.conf,man.config setf manconf au BufNewFile,BufRead *.mv,*.mpl,*.mws setf maple " Map (UMN mapserver config file) -au BufNewFile,BufRead *.map setf map +au BufNewFile,BufRead *.map + \ if getline(1) =~ '^\*\+$' | + \ setf lnkmap | + \ else | + \ setf map | + \ endif " Markdown au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,*.mdwn,*.md diff --git a/runtime/ftplugin/lnkmap.vim b/runtime/ftplugin/lnkmap.vim new file mode 100644 index 0000000000..46fb070e71 --- /dev/null +++ b/runtime/ftplugin/lnkmap.vim @@ -0,0 +1,16 @@ +" Vim filetype plugin file +" Language: TI Linker map +" Document: https://downloads.ti.com/docs/esd/SPRUI03A/Content/SPRUI03A_HTML/linker_description.html +" Maintainer: Wu, Zhenyu +" Last Change: 2024 Dec 25 + +if exists("b:did_ftplugin") + finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +let b:undo_ftplugin = "setl iskeyword<" + +setl iskeyword+=. diff --git a/runtime/syntax/lnkmap.vim b/runtime/syntax/lnkmap.vim new file mode 100644 index 0000000000..a1d109ef0d --- /dev/null +++ b/runtime/syntax/lnkmap.vim @@ -0,0 +1,35 @@ +" Vim syntax file +" Language: TI Linker map +" Document: https://downloads.ti.com/docs/esd/SPRUI03A/Content/SPRUI03A_HTML/linker_description.html +" Maintainer: Wu, Zhenyu +" Last Change: 2024 Dec 25 + +if exists("b:current_syntax") + finish +endif + +syn match lnkmapTime ">> .*$" +syn region lnkmapHeadline start="^\*\+$" end="^\*\+$" +syn match lnkmapHeadline "^[A-Z][-A-Z0-9 ']*\ze\%(:\|$\)" +syn match lnkmapSectionDelim "^=\+$" +syn match lnkmapTableDelim "\%(^\|\s\)\zs---*\ze\%($\|\s\)" +syn match lnkmapNumber "\%(^\|\s\)\zs[0-9a-f]\+\ze\%($\|\s\)" +syn match lnkmapSections '\<\.\k\+\>' +syn match lnkmapFile '[^ =]\+\%(\.\S\+\)\+\>' +syn match lnkmapLibFile '[^ =]\+\.lib\>' +syn match lnkmapAttrib '\<[RWIX]\+\>' +syn match lnkmapAttrib '\s\zs--HOLE--\ze\%\(\s\|$\)' +syn keyword lnkmapAttrib UNINITIALIZED + + +hi def link lnkmapTime Comment +hi def link lnkmapHeadline Title +hi def link lnkmapSectionDelim PreProc +hi def link lnkmapTableDelim PreProc +hi def link lnkmapNumber Number +hi def link lnkmapSections Macro +hi def link lnkmapFile String +hi def link lnkmapLibFile Special +hi def link lnkmapAttrib Type + +let b:current_syntax = "lnkmap" diff --git a/src/testdir/test_filetype.vim b/src/testdir/test_filetype.vim index f449d0d86a..0f05d19df8 100644 --- a/src/testdir/test_filetype.vim +++ b/src/testdir/test_filetype.vim @@ -463,7 +463,6 @@ def s:GetFilenameChecks(): dict> mallard: ['file.page'], man: ['file.man'], manconf: ['/etc/man.conf', 'man.config', 'any/etc/man.conf'], - map: ['file.map'], maple: ['file.mv', 'file.mpl', 'file.mws'], markdown: ['file.markdown', 'file.mdown', 'file.mkd', 'file.mkdn', 'file.mdwn', 'file.md'], masm: ['file.masm'], @@ -2774,6 +2773,24 @@ func Test_make_file() filetype off endfunc +func Test_map_file() + filetype on + + " TI linker map file + call writefile(['******************************************************************************', ' TMS320C6x Linker Unix v7.4.24 ', '******************************************************************************'], 'Xfile.map', 'D') + split Xfile.map + call assert_equal('lnkmap', &filetype) + bwipe! + + " TI linker map file + call writefile(['MAP', 'NAME "local-demo"', 'END'], 'Xfile.map', 'D') + split Xfile.map + call assert_equal('map', &filetype) + bwipe! + + filetype off +endfunc + func Test_org_file() filetype on diff --git a/src/version.c b/src/version.c index b1ce2cce0b..18a736c6e8 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 972, /**/ 971, /**/