Check out this URL: https://vim.fandom.com/wiki/Different_syntax_highlighting_within_regions_of_a_file
My overarching goal is to be able to write a shell script (bash) with embedded code in other languages (Perl, AWK, sed, Python, Expect, whatever) and have the main script syntax highlighted as shell (of course), but have the regions containing code in other languages highlighted in those other languages. Specifically, right now, I am working on a shell script with embedded Expect. Something like expect -c ' # Expect script here ' At the above link, there is a solution that sort of works. It's really quite frustrating, because it will work one minute then not the next and so on. I can't find any rhyme or reason to it. So, if anyone wants to check it out and see what's wrong with it (note, BTW, that the comments section there indicate the same sort of frustration as I'm seeing - people complaining that it works, then it doesn't and so on), that'd be great. Also, please suggest alternatives. Thanks. Here is the function they provide at the URL: " Found at: " https://vim.fandom.com/wiki/Different_syntax_highlighting_within_regions_of_a_file function! TextEnableCodeSnip(filetype,start,end,textSnipHl) abort let ft=toupper(a:filetype) let group='textGroup'.ft if exists('b:current_syntax') let s:current_syntax=b:current_syntax " Remove current syntax definition, as some syntax files (e.g. cpp.vim) " do nothing if b:current_syntax is defined. unlet b:current_syntax endif execute 'syntax include @'.group.' syntax/'.a:filetype.'.vim' try execute 'syntax include @'.group.' after/syntax/'.a:filetype.'.vim' catch endtry if exists('s:current_syntax') let b:current_syntax=s:current_syntax else unlet b:current_syntax endif execute 'syntax region textSnip'.ft.' \ matchgroup='.a:textSnipHl.' \ keepend \ start="'.a:start.'" end="'.a:end.'" \ contains=@'.group endfunction After sourcing the above file, I do: call TextEnableCodeSnip('expect','@begin=expect@','@end=expect@','SpecialComment') Then I start typing (starting with the @begin...@ thing) and sometimes it works, sometimes it doesn't. Also, the original instructions at the URL, have a line in there about :hi link which I can't tell what it is there for or if it is needed. Sometimes, it works without it, sometimes not. -- -- You received this message from the "vim_use" 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_use" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/vim_use/1689131849.206325.1617998848033%40mail.yahoo.com.
