Loading ...
Sorry, an error occurred while loading the content.
 

Re: syntax highlighting question

Expand Messages
  • Peter Miller
    ... thanks for the replies people! and no worries if it takes a while :) somebody on stackoverflow showed me that if i put at the start of the string,
    Message 1 of 7 , Aug 1, 2012
      On Thu, Aug 2, 2012 at 1:20 AM, Ben Fritz <fritzophrenic@...> wrote:
      On Wednesday, August 1, 2012 1:08:35 AM UTC-5, mulllhausen wrote:
      > hi all,
      >
      > i gather from the lack of response that my previous question has no feasible answer. anyway, i have updated the question a bit to give some other possible ways of solving the problem. any pointers in the right direction would be much appreciated. i am pretty competent with vim but i have little to no vim scripting. then again i am a quick learner and very eager haha...
      >
      >
      > here is the updated question: http://stackoverflow.com/questions/11661614/vim-php-javascriptinstrings-option
      >
      >
      >
      >
      >
      >
      >
      > I noticed that the syntax/php.vim file on my ubuntu machine has a php_htmlInStrings
      >  option. I can turn this option on to display HTML syntax highlighting
      > within strings in my php files, which is great. I would also like to do
      > javascript syntax highlighting within strings in a php file. Does
      > anybody know if this can be done and if so how can I do it?
      >
      >
      > edited - added extra possibilities
      >
      >
      > I should also mention that I would be happy with a solution where i
      > have to parse all my javascript strings though a php function before
      > outputting the result. This might get around the problem suggested by
      > connor below where vim has trouble deciding if the string contains
      > javascript. for example:
      >
      > $js = "some regular text which is not javascript##now vim has
      > detected that this part is javscript##back to regular text";
      >
      > parse($js);
      > function parse($str)
      >
      > {
      >     return str_replace('##', '', $str);
      >
      > }
      >
      >
      >
      > The reason I would be happy to do this is because I will probably be
      > incorporating a html/css/js variable minifier into my project which will
      >  be doing substitutions on strings anyway.
      >
      >
      > Of course if there is a vim-specific equivalent character for ## which will not show up in the source code and would not need to be filtered out then this would be preferable...

      I personally passed up the question because I don't know of a way that is already built into the php syntax script but maybe one exists.

      It's possible to do, see http://vim.wikia.com/wiki/Different_syntax_highlighting_within_regions_of_a_file and the help links it gives but it will require a lot of work on your part to do it yourself.

      --
      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


      thanks for the replies people! and no worries if it takes a while :)

      somebody on stackoverflow showed me that if i put <script> at the start of the string, then turn on the html syntax highlighting, vim will interpret the string as javascript and format accordingly.

      my line 167 in syntax/html.vim previously looked like this:

      syn region  javaScript start=+<script[^>]*>+ keepend end=+</script>+me=s-1 contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc

      so i commented it out and changed "script" to "js". i have a work around now where i parse all javascript strings through a function to strip out the opening tag (i found that i dont actually need a closing tag for vim to give the proper syntax highlighting). however, while this is functional, it would be nice if i could use the following format to get the syntax highlighting:

      /*<js>*/ "this string should have javascript syntax highlighting" /*</js>*/

      i have had a go at this but i'm a bit new to the way that vim groups regions under headings so i didn't get it right. line 340 in syntax/php.vim currently reads:

        syn region  phpComment  start="/\*" end="\*/" contained contains=phpTodo

      so i tried changing it to:

        syn region  phpComment  start="/\*" end="\*/" contained contains=@htmlJavascript,phpTodo

      but that doesn't do it.

      actually if somebody could give me some pointers as to a good place to learn about the vim syntax regions that would be a great help. or if anybody can tell me how i could alter my syntax/ files that would be even better!

      thanks in advance!
      peter

      --
      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
    Your message has been successfully submitted and would be delivered to recipients shortly.