2012-06-29 58 views
1

我知道normal script tags can't self close,我對vimscript的瞭解甚少。我一直與神似HTML自定義XML模板語言,並用文件~/.vim/after/syntax/html.vim沿一直在使用HTML方式:如何在Vim中突出顯示自定義自閉腳本標記?

syn region javaScript start=+<is:PageComponents:Script[^>]*>+ keepend end=+</is:PageComponents:Script>+me=s-1 [email protected],htmlCssStyleComment,htmlScriptTag,@htmlPreproc 
syn region htmlScriptTag contained start=+<is:PageComponents:Script+ end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent 

,我遇到的問題是突出區域的「溢出」,直到該文件的結尾或下一個關閉腳本標記。

我試圖將開始更改爲:+<is:PageComponents:Script[^>]*\(\\\)\@<!>++<is:PageComponents:Script[^>]*[^\\]>+,這兩者都沒有區別。就我所瞭解的正則表達式而言,負面的後視應該是一個理想的解決方案,並且一個角色匹配應該迫使貪婪的明星退後一個角色,導致失敗。用替換*對於不明確的行爲具有相同的結果。我錯過了什麼?

如果相關,我在Cygwin的mintty中運行vim(類型是xterm-256color),shell是bash,配色方案是solarized

編輯:添加我們的標記語言

<is:PageComponents:Template title="Page Title" controller="controller"> 
    <is:PageComponents:Script src="/path/jsfile.js" /> 
    <is:PageComponents:Style src="cssfile.css" /> 
    <is:Containers:Box label="Box Label"> 
     <is:DataGridComponents:DataGrid id="data_grid_id" data_provider="data_provider" keep_state="true"> 
      <is:DataGridComponents:DataGridHeader /> 
      <is:DataGridComponents:Columns strip_placeholders="false" id="%%id%%_row"> 
       <is:DataGridComponents:Column header_title="Links Header"> 
        <span class="popup-link popup-link-type1" id="type1_%%id%%">Type 1</span> | 
        <span class="popup-link popup-link-type2" id="type2_%%id%%">Type 2</span> 
       </is:DataGridComponents:Column> 
       <is:DataGridComponents:Column header_title="Data1">%%data1%%</is:DataGridComponents:Column> 
       <is:DataGridComponents:Column header_title="Data2">%%data2%%</is:DataGridComponents:Column> 
      </is:DataGridComponents:Columns> 
      <is:DataGridComponents:DataGridFooter> 
       <is:DataGridComponents:Pager id="pager_id" data_provider="pager_data_provider" for_component="data_grid_id" /> 
       <is:Containers:Box id="footer_box_id" data_provider="footer_box_data_provider">Text: %%data%%</is:containers:box> 
      </is:DataGridComponents:DataGridFooter> 
     </is:DataGridComponents:DataGrid> 
    </is:Containers:Box> 
    <is:PageComponents:Script location="onready"> 
    {literal} 
     // Insert literal JavaScript code here for the page 
    {/literal} 
    </is:PageComponents:Script> 
    {include file="path/file1.tpl"} 
    {include file="path/file2.tpl"} 
</is:PageComponents:Template> 
+0

您忘記了您的語言樣本。 – romainl

回答

0

我的模式這兩種樣品正常工作時,我切換到我的比賽用/,而不是\

修正後的圖案爲: +<is:PageComponents:Script[^>]*\(/\)\@<!>++<is:PageComponents:Script[^>]*[^/]>+