Mercurial > vim
view runtime/ftplugin/csh.vim @ 35792:f4b25cf637e7 v9.1.0616
patch 9.1.0616: filetype: Make syntax highlighting off for MS Makefiles
Commit: https://github.com/vim/vim/commit/eb4b903c9b238ebcc1d14cfcb207129b4931a33d
Author: Ken Takata <kentkt@csc.jp>
Date: Thu Jul 25 21:07:13 2024 +0200
patch 9.1.0616: filetype: Make syntax highlighting off for MS Makefiles
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: #15341
Signed-off-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: Ken Takata <kentkt@csc.jp>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 25 Jul 2024 21:30:04 +0200 |
parents | 7c7432a53a6c |
children |
line wrap: on
line source
" Vim filetype plugin file " Language: csh " Maintainer: Doug Kearns <dougkearns@gmail.com> " Previous Maintainer: Dan Sharp " Contributor: Johannes Zellner <johannes@zellner.org> " Last Change: 2024 Jan 14 " 2024 May 23 by Riley Bruins ('commentstring') if exists("b:did_ftplugin") finish endif let b:did_ftplugin = 1 let s:save_cpo = &cpo set cpo-=C setlocal comments=:# setlocal commentstring=#\ %s setlocal formatoptions-=t setlocal formatoptions+=crql let b:undo_ftplugin = "setlocal com< cms< fo<" " Csh: thanks to Johannes Zellner " - Both foreach and end must appear alone on separate lines. " - The words else and endif must appear at the beginning of input lines; " the if must appear alone on its input line or after an else. " - Each case label and the default label must appear at the start of a " line. " - while and end must appear alone on their input lines. if exists("loaded_matchit") && !exists("b:match_words") let s:line_start = '\%(^\s*\)\@<=' let b:match_words = \ s:line_start .. 'if\s*(.*)\s*then\>:' .. \ s:line_start .. 'else\s\+if\s*(.*)\s*then\>:' .. s:line_start .. 'else\>:' .. \ s:line_start .. 'endif\>,' .. \ s:line_start .. '\%(\<foreach\s\+\h\w*\|while\)\s*(:' .. \ '\<break\>:\<continue\>:' .. \ s:line_start .. 'end\>,' .. \ s:line_start .. 'switch\s*(:' .. \ s:line_start .. 'case\s\+:' .. s:line_start .. 'default\>:\<breaksw\>:' .. \ s:line_start .. 'endsw\>' unlet s:line_start let b:undo_ftplugin ..= " | unlet! b:match_words" endif if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") let b:browsefilter = "csh Scripts (*.csh)\t*.csh\n" if has("win32") let b:browsefilter ..= "All Files (*.*)\t*\n" else let b:browsefilter ..= "All Files (*)\t*\n" endif let b:csh_set_browsefilter = 1 let b:undo_ftplugin ..= " | unlet! b:browsefilter b:csh_set_browsefilter" endif let &cpo = s:save_cpo unlet s:save_cpo