启用Sublime Text中自定义语法的自动注释功能

15

我已经在Sublime Text中为自定义语言创建了.tmLanguage文件。一切都运作良好,但自动注释似乎无法正常工作。我在Sublime Text文档和Google上找不到关于如何实现自动注释的信息,但这可能是因为我没有使用正确的关键词。

让我解释一下我的意思。假设我有以下的C代码:

int i = 1;
i += 2;

如果我在Sublime Text中将其高亮,并按ctrl+/,它会被更改为

// int i = 1;
// i += 2;

同样地,对于 Python 代码:

i = 1
i += 2

变成

# i = 1
# i += 2

很明显,Sublime Text需要了解语言语法才能选择正确的注释字符,这就是为什么我认为我需要在我的.tmLanguage文件中添加一些内容才能使其工作。我查看了Sublime Text附带的C.tmLanguage和Python.tmLanguage文件,但没有发现自动注释的代码。

我需要在我的.tmLanguage文件中添加什么内容才能在Sublime Text中启用此功能?还是说我必须添加/修改其他文件才能启用此功能?

1个回答

15

查看“Comments (C++).tmPreferences”,您应该能够找出如何编辑它以适应您的语法。

  • 将您的语法的“scopeName”添加到范围中
  • TM_COMMENT_START = 行注释
  • TM_COMMENT_START_2 / TM_COMMENT_END_2 = 块注释

Comments (C++).tmPreferences:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>name</key>
    <string>Comments</string>
    <key>scope</key>
    <string>source.your_syntax</string>
    <key>settings</key>
    <dict>
        <key>shellVariables</key>
        <array>
            <dict>
                <key>name</key>
                <string>TM_COMMENT_START</string>
                <key>value</key>
                <string>// </string>
            </dict>
            <dict>
                <key>name</key>
                    <string>TM_COMMENT_START_2</string>
                <key>value</key>
                <string>/*</string>
            </dict>
            <dict>
                <key>name</key>
                <string>TM_COMMENT_END_2</string>
                <key>value</key>
                <string>*/</string>
            </dict>
            <dict>
                <key>name</key>
                <string>TM_COMMENT_DISABLE_INDENT_2</string>
                <key>value</key>
                <string>yes</string>
            </dict>
        </array>
    </dict>


谢谢!我的问题显然是我在错误的文件中寻找示例。 - SethMMorton
感谢AGS的编辑,我猜你必须使用硬制表符来编写XML代码。 - d_rail

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