diff options
author | zeertzjq <zeertzjq@outlook.com> | 2024-07-27 16:48:29 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-27 16:48:29 +0800 |
commit | 60967cd9aac545a5a5f17070d39121d4070e2298 (patch) | |
tree | 3e4514463f6a69673bf299de42f5bd1ff2892ace /runtime/lua/vim | |
parent | aa853f362addded400d52d8fdfe5247c300c0e89 (diff) | |
download | rneovim-60967cd9aac545a5a5f17070d39121d4070e2298.tar.gz rneovim-60967cd9aac545a5a5f17070d39121d4070e2298.tar.bz2 rneovim-60967cd9aac545a5a5f17070d39121d4070e2298.zip |
vim-patch:9.1.0616: filetype: Make syntax highlighting off for MS Makefiles (#29874)
Problem: filetype: Make syntax highlighting off for MS Makefiles
Solution: Try to detect MS Makefiles and adjust syntax rules to it.
(Ken Takata)
Highlighting of variable expansion in Microsoft Makefile can be broken.
E.g.:
https://github.com/vim/vim/blob/2979cfc2627d76a9c09cad46a1647dcd4aa73f5f/src/Make_mvc.mak#L1331
Don't use backslash as escape characters if `make_microsoft` is set.
Also fix that `make_no_comments` was not considered if `make_microsoft`
was set.
Also add description for `make_microsoft` and `make_no_comments` to the
documentation and include a very simple filetype test
closes: vim/vim#15341
https://github.com/vim/vim/commit/eb4b903c9b238ebcc1d14cfcb207129b4931a33d
Co-authored-by: Ken Takata <kentkt@csc.jp>
Diffstat (limited to 'runtime/lua/vim')
-rw-r--r-- | runtime/lua/vim/filetype.lua | 6 | ||||
-rw-r--r-- | runtime/lua/vim/filetype/detect.lua | 18 |
2 files changed, 21 insertions, 3 deletions
diff --git a/runtime/lua/vim/filetype.lua b/runtime/lua/vim/filetype.lua index 7cbf3a158d..bf00392087 100644 --- a/runtime/lua/vim/filetype.lua +++ b/runtime/lua/vim/filetype.lua @@ -693,8 +693,8 @@ local extension = { return not (path:find('html%.m4$') or path:find('fvwm2rc')) and 'm4' or nil end, eml = 'mail', - mk = 'make', - mak = 'make', + mk = detect.make, + mak = detect.make, page = 'mallard', map = 'map', mws = 'maple', @@ -2122,7 +2122,7 @@ local pattern = { ['^Containerfile%.'] = starsetf('dockerfile'), ['^Dockerfile%.'] = starsetf('dockerfile'), ['^[jJ]ustfile$'] = 'just', - ['[mM]akefile$'] = 'make', + ['[mM]akefile$'] = detect.make, ['^[mM]akefile'] = starsetf('make'), ['^[rR]akefile$'] = 'ruby', ['^[rR]akefile'] = starsetf('ruby'), diff --git a/runtime/lua/vim/filetype/detect.lua b/runtime/lua/vim/filetype/detect.lua index 1fe7db0e1f..cb953f9d0c 100644 --- a/runtime/lua/vim/filetype/detect.lua +++ b/runtime/lua/vim/filetype/detect.lua @@ -972,6 +972,24 @@ local function m4(contents) end end +--- Check if it is a Microsoft Makefile +--- @type vim.filetype.mapfn +function M.make(_, bufnr) + vim.b.make_microsoft = nil + for _, line in ipairs(getlines(bufnr, 1, 1000)) do + if matchregex(line, [[\c^\s*!\s*\(ifn\=\(def\)\=\|include\|message\|error\)\>]]) then + vim.b.make_microsoft = 1 + break + elseif + matchregex(line, [[^ *ifn\=\(eq\|def\)\>]]) + or findany(line, { '^ *[-s]?%s', '^ *%w+%s*[!?:+]=' }) + then + break + end + end + return 'make' +end + --- @type vim.filetype.mapfn function M.markdown(_, _) return vim.g.filetype_md or 'markdown' |