Sublime Text 2 JSP语法突出显示问题

时间:2012-09-28 16:21:04

标签: jsp syntax-highlighting sublimetext2 sublimetext

我对Sublime Text 2中JSP页面的内置语法高亮显示有一些问题。

请参阅第11/12行的白线后面的代码:此处正确显示HTML代码<strong>

此行之前的代码未正确着色:第二个JSP结束标记(%>)为红色,但应该像第一个一样橙色,内部的HTML标记被认为是Java代码我认为,虽然范围(CTRL+SHIFT+ALT+P显示为text.html.jsp)不会改变。

JSP Syntax Highlighting in Sublime Text 2 (Theme: "Monokai Soda", edited colors of JSP start/end tags

如果我对<?php<?起始和?>结束标记执行相同操作,则问题不存在,所有颜色似乎都正确。

有没有人有同样的问题?我确保语法设置为JavaServerPages(JSP)。

我认为问题与HTML.tmLanguage文件中的这些行有关(JSP范围在HTML范围内):

<dict>
    <key>embedded-code</key>
    <dict>
        <key>patterns</key>
        <array>
            <dict>
                <key>include</key>
                <string>#ruby</string>
            </dict>
            <dict>
                <key>include</key>
                <string>#php</string>
            </dict>
            <!--
            <dict>
                <key>include</key>
                <string>#smarty</string>
            </dict>
            -->
            <dict>
                <key>include</key>
                <string>#python</string>
            </dict>
        </array>
    </dict>

JSP没有包含。但我只是猜测......有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我设法现在编辑HTML.tmLanguageJava Server Pages (JSP).tmLanguage文件... ruby​​的一些匹配覆盖了HTML <script>标记内的jsp范围,我删除了大括号的匹配,并且另外,我在一些范围定义中添加了一些text.html.jsp包含。


我复制了我的.tmTheme文件,并将其作为User放入User.tmTheme包文件夹中。然后我将这些行添加到底部的这个文件中:

    <dict>
        <key>name</key>
        <string>Embedded Code Punctuation</string>
        <key>scope</key>
        <string>punctuation.section.embedded</string>
        <key>settings</key>
        <dict>
            <key>fontStyle</key>
            <string>bold</string>
            <key>foreground</key>
            <string>#FD971F</string>
        </dict>
    </dict>
    <dict>
        <key>name</key>
        <string>Embedded Java Code Directive</string>
        <key>scope</key>
        <string>punctuation.section.directive</string>
        <key>settings</key>
        <dict>
            <key>foreground</key>
            <string>#FD971F</string>
        </dict>
    </dict>
    <dict>
        <key>name</key>
        <string>Embedded Java Code</string>
        <key>scope</key>
        <string>source.java.embedded.html</string>
        <key>settings</key>
        <dict>
            <key>foreground</key>
            <string>#F8F8F2</string>
        </dict>
    </dict>
    <dict>
        <key>name</key>
        <string>Embedded Java Code String</string>
        <key>scope</key>
        <string>string.quoted.double.java</string>
        <key>settings</key>
        <dict>
            <key>foreground</key>
            <string>#E6DB74</string>
        </dict>
    </dict>

然后,我在文件夹HTMLJava中编辑了这两个文件,并注释掉了一些ruby包含和内容。

请参阅此处的文件:

HTML.tmLanguage
Java Server Pages (JSP).tmLanguage
JavaScript.tmLanguage