Sublime Text 2 JSP语法高亮问题

5

我在Sublime Text 2中使用JSP页面内置的语法高亮遇到了一些问题。

请看第11/12行白线后面的代码: HTML标签<strong>在这里正确显示。

这行之前的代码没有正确着色: 第二个JSP闭合标签(%>)是红色的,但应该像第一个标签一样是橙色的,里面的HTML标签被识别为Java代码,尽管作用域(可以使用CTRL+SHIFT+ALT+P查看为text.html.jsp)没有改变。

Sublime Text 2中的JSP语法高亮(主题:"Monokai Soda",编辑JSP起始/结束标签颜色

如果我使用<?php<?开始和?>关闭标签,问题就不存在了,所有颜色似乎都正确。

有人遇到过同样的问题吗?我确保将语法设置为JavaServerPages(JSP)。

我认为问题与HTML.tmLanguage文件中的这些行相关(在HTML作用域内包含JSP作用域)。

<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中没有include。但这只是我的猜测...有什么想法吗?

1个回答

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


你做了哪些更改?可以分享一下吗?我也遇到了 JSP 高亮的问题。 - yokuyuki
我们能够得到一个固定的链接吗? - km6zla
你好,感谢分享@dennis!我遇到了同样的问题,但我不知道如何应用你的修复方法,“更新的*.tmLanguage”文件要放在哪里?另外,我对User.tmTheme有点困惑,因为我有印象你多次编辑了你的答案...我们还需要这个User.tmTheme文件吗? - edelans
*.tmLanguage文件在我的Mac上的路径是:/Users/USERNAME/Library/Application Support/Sublime Text 2/Packages/[ HTML | Java | Javascript ]/ - allicarn
有点晚了,但是在ST3中有没有修复这个问题的方法?我找不到那些文件。 - Sebastianb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接