patch 9.1.0972: filetype: TI linker map files are not recognized

Problem:  filetype: TI linker map files are not recognized
Solution: detect TI linker map files as lnkmap filetype
          (Wu, Zhenyu)

References:
https://downloads.ti.com/docs/esd/SPRUI03A/Content/SPRUI03A_HTML/linker_description.html

closes: #16324

Signed-off-by: Wu, Zhenyu <wuzhenyu@ustc.edu>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Wu, Zhenyu
2024-12-29 15:28:46 +01:00
committed by Christian Brabandt
parent f0ab3e4e41
commit 5113831d16
5 changed files with 77 additions and 2 deletions

View File

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

View File

@ -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 <wuzhenyu@ustc.edu>
" 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+=.

35
runtime/syntax/lnkmap.vim Normal file
View File

@ -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 <wuzhenyu@ustc.edu>
" 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"

View File

@ -463,7 +463,6 @@ def s:GetFilenameChecks(): dict<list<string>>
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

View File

@ -704,6 +704,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
972,
/**/
971,
/**/