On Jul 6, 3:55 pm, "Benjamin R. Haskell" <[email protected]> wrote: > On Tue, 6 Jul 2010, Charles Campbell wrote: > > Benjamin R. Haskell wrote: > > > On Mon, 5 Jul 2010, Peng Yu wrote: > > > > > No. You misunderstood me. I think that the vim can recognized the > > > > file type by the suffix of the filename. There is no need to ":set > > > > filetype=sql" explicitly. > > > > > But the default syntax highlight facility in vim doesn't reliably > > > > syntax highlight SQL code embedded in a bash script. In the > > > > following example, the SQL code after "*.txt" is not recognized > > > > correctly. > > > > The syntax highlighting for PHP handles highlighting other languages > > > within heredocs. Perhaps you can find a solution somewhere in > > > there. > > > > I believe it 'detects' the language via the heredoc label, though, > > > so you might need to use <<SQL > > > SQL > > > instead of <<EOF > > > EOF > > > > See also: > > > > :help :syn-include > > > As I see it, the script is being highlighted correctly from sh's > > viewpoint, as a heredoc is essentially just a long string. > > > What you appear to want is for the sh syntax script to recognize > > sqlite3 in the command and highlight the following heredoc using that > > other syntax. As Ben H pointed out, it is possible to use the > > syn-include approach to get what you want. I suggest writing a bit of > > extra syntax handling for this purpose and put it in your > > .vim/after/syntax/sh.vim file. Such a region would be recognized at > > the outset with sqlite3, etc. However, I don't think sh.vim is the > > place to try to recognize every possible language that heredoc strings > > might be using. > > Yep. That's what I was suggesting. And I agree that it shouldn't be in > the general 'syntax/sh.vim'. The following worksforme: > > ==> ~/.vim/after/syntax/sh.vim <== > unlet b:current_syntax > syntax include @sql syntax/sql.vim > syn region shHereDoc matchgroup=shRedir start=/<<\s*\\\=\z(\S*\)/ > end=/^\z1\s*$/ contai...@shdblquotelist,@sql > ================================== > > I got the pattern for the last line by looking at the patterns already > in the 'sh' filetype (With a 'sh' file open, run :syn). If it doesn't > work right for how you style your heredocs, you might want to try a > different one. (Not sure what the subtleties are that the many similar > matches are trying to capture, other than the contains-quoted-items > dichotomy.) You should also add the 'fold' flag if you use > g:sh_fold_enabled.
Note that I'm using the suffix .sql rather .sh, as I think that bash is just a wrapper, the main stuff is in sql. The about tips help only if a .sh suffix is used. Could you please take a look for the case where .sql suffix is used? Thank you! -- 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
