patch 9.1.0972: filetype: TI linker map files are not recognized
Commit:
https://github.com/vim/vim/commit/5113831d16c05f3a8b47da0c6f95a641d5fc7b2e
Author: Wu, Zhenyu <[email protected]>
Date: Sun Dec 29 15:28:46 2024 +0100
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 <[email protected]>
Signed-off-by: Christian Brabandt <[email protected]>
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index 2a11f261c..754857683 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 000000000..46fb070e7
--- /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 <[email protected]>
+" 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 000000000..a1d109ef0
--- /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 <[email protected]>
+" 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 f449d0d86..0f05d19df 100644
--- a/src/testdir/test_filetype.vim
+++ b/src/testdir/test_filetype.vim
@@ -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
diff --git a/src/version.c b/src/version.c
index b1ce2cce0..18a736c6e 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,
/**/
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/vim_dev/E1tRuXO-00BjIb-TJ%40256bit.org.