标签: tmlanguage

在Visual Studio代码中创建自定义语言

有没有办法在Visual Studio Code中扩展支持的语言/语法?我想添加自定义语言语法,但我无法找到有关如何提供语言服务的任何信息.

任何人都可以指出现有语言实现的任何参考或甚至示例吗?

visual-studio-code tmlanguage vscode-extensions

31
推荐指数
5
解决办法
2万
查看次数

如何为VS Code创建简单的自定义语言着色

我正在尝试为日志文件创建一个简单的着色,现在可以在Code中包含自定义语言(我在0.9.2上).我创建了一个简单的.tmLanguage文件,用于着色字母'q',仅用于启动,但是没有成功.

我的新语言log与文件扩展名正确关联,我也可以从Code内部手动选择它,但不会出现着色.我觉得这与我将模式联系起来的"范围"有关,但我不确定.是否有可供选择的有效范围列表?最初我以为我会使用一些通用的东西,例如"评论"来获得一些颜色,但它似乎不起作用.

这是我的.tmLanguage文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>scopeName</key>
        <string>text.log</string>

        <key>fileTypes</key>
        <array>
            <string>log</string>
        </array>

        <key>name</key>
        <string>Log file</string>

        <key>patterns</key>
        <array>
            <dict>
                <key>match</key>
                <string>q</string>
                <key>name</key>
                <string>comment</string>
            </dict>
        </array>
    </dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

我可能在这里误解了一些东西,所以非常感谢任何帮助:-)

syntax-highlighting visual-studio-code tmlanguage

9
推荐指数
2
解决办法
9137
查看次数

VS Code - 使用 TextMate 突出显示一些变量

VS Code 1.15 添加了对 TextMate 语法规则的支持。我想用这些规则突出显示 JavaScript 中的一些变量:self,me。我怎样才能做到这一点?

javascript textmate visual-studio-code tmlanguage

6
推荐指数
1
解决办法
4374
查看次数

从 Textmate 运行 Julia

我使用 Textmate 作为我的代码编辑器,我希望能够从中运行 Julia。我在保存 .jl 文件并将其发送到终端(通过 Textmate 中的 Julia 包)没有问题,但我想知道是否可以使会话具有交互性,例如,在会话时存储变量正在运行(例如,我可以将代码逐行发送给 Julia,或者使用类似 Rdaemon 的东西)。

textmate2 julia tmlanguage

5
推荐指数
1
解决办法
276
查看次数

创建Visual Studio Code扩展以自定义语言的语法突出显示

我正在尝试在Visual Studio Code中创建扩展,以便为自定义语言启用语法突出显示。我在这里找到@Wosi提供的有用建议:在Visual Studio Code中创建自定义语言。基于此,我尝试进行以下测试。我创建下一个子文件夹%USERPROFILE%\.vscode\extensionspackage.json在根定义如下(从上面的例子):

{
    "name": "mylang",
    "version": "0.0.1",
    "engines": {
        "vscode": ">=0.9.0-pre.1"
    },
    "publisher": "me",
    "contributes": {
        "languages": [{
            "id": "mylang",
            "aliases": ["MyLang", "mylang"],
            "extensions": [".mylang",".myl"]
        }],
        "grammars": [{
            "language": "mylang",
            "scopeName": "source.mylang",
            "path": "./syntaxes/mylang.tmLanguage"
        }]
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,我在其下创建了一个语法子文件夹,并mylang.tmLanguage根据@wozi给出的示例在其中包含一个文件:如何为VS Code创建简单的自定义语言着色有一些小的修改只是为了使命名与上述JSON一致文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>scopeName</key>
        <string>source.mylang</string>

        <key>fileTypes</key>
        <array>
            <string>mylang</string>
            <string>myl</string>
        </array>

        <key>name</key>
        <string>mylang file</string>

        <key>patterns</key>
        <array>
            <dict>
                <key>match</key>
                <string>\b(?i:(hint|info|information))\b</string> …
Run Code Online (Sandbox Code Playgroud)

json syntax-highlighting visual-studio-code tmlanguage vscode-extensions

5
推荐指数
1
解决办法
1764
查看次数

`"injectionSelector": "L:markup.fenced_code.block.markdown"` 中的 `L:` 是什么意思?

https://github.com/mjbvz/vscode-fenced-code-block-grammar-injection-example/blob/master/syntaxes/codeblock.json

额外的语法被注入到作用域中markup.fenced_code.block.markdown

不过L:markup.fenced_code.block.markdown是用的。在这种情况下意味着什么L:?它是范围选择器的特殊语法吗?我在https://manual.macromates.com/en/scope_selectors.html中找不到任何相关信息

textmate visual-studio-code tmlanguage

5
推荐指数
1
解决办法
1247
查看次数

是否可以扩展Visual Studio Code中的语言?

情境

我有描述一系列要执行的任务的JSON文件,其中每个任务可以引用JSON文件中的其他任务和对象。

{
    "tasks": [
        { "id": "first", "action": "doSomething()", "result": {} },
        { "id": "second", "action": "doSomething(${id:first.result})", "result": {} },
    ]
}
Run Code Online (Sandbox Code Playgroud)

我想同时具有JSON模式验证和自定义语言文本效果,例如关键字着色,甚至在JSON的字符串中都支持“转到定义”。

我可以做什么

我可以创建一个扩展名,该扩展名为文件扩展名“ * .foo.json”指定JSON模式。如果vscode将文件识别为JSON文件,则可以在编辑器中进行模式验证和代码完成。

我还可以在扩展名中为“ * .foo.json”文件创建新的“ foo”语言,该文件在JSON字符串中具有自定义关键字颜色。我通过创建从JSON.tmLanguage.json复制的TextMate(* .tmLanguage.json)文件,然后修改“ stringcontent”定义来完成此操作。

问题

问题是模式验证和提示仅在我在状态栏中选择了“ JSON”作为文件类型时才起作用,而自定义文本着色仅在我在状态栏中选择了“ foo”作为文件类型时才起作用。

有什么办法可以同时拥有两者?我可以以某种方式在vscode中扩展JSON语言处理吗?

visual-studio-code tmlanguage vscode-extensions

5
推荐指数
1
解决办法
545
查看次数

如何在自定义 VSCode 语言中引用注入语法

前言如下。可以在以下位置找到说明此问题的演示项目: https ://github.com/kirksl/so60384141

我可以在本机 VSCode 语言中引用注入语法

指定这个(package.json)

        "grammars": 
        [
            {
                "scopeName": "source.js.mylang",
                "path": "./syntaxes/mylang-js.tmLanguage.json",
                "injectTo": ["source.js"]
            }
        ]
Run Code Online (Sandbox Code Playgroud)

和这个(./syntaxes/mylang-js.tmLanguage.json)

{
  "scopeName": "source.js.mylang",
  "injectionSelector": "L:source",
  "patterns": [
    {
      "include": "#todo-keyword"
    }
  ],
  "repository": {
    "todo-keyword": {
      "match": "TODO",
      "name": "keyword.todo"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我看到这个(.js 文件,原生 JS)

在此输入图像描述

到目前为止,一切都很好。

但是,我似乎无法在下面详述的自定义语言中引用相同的注入语法。带三引号的围栏代码块应该利用它。

现在更新这个(package.json)

        "languages": [
            {
                "id": "mylang",
                "aliases": ["Mylang", "mylang"],
                "extensions": [".mylang"],
                "configuration": "./language-configuration.json"
            }
        ],
        "grammars": 
        [
            {
                "language": "mylang",
                "scopeName": "source.mylang",
                "path": "./syntaxes/mylang.tmLanguage.json",
                "embeddedLanguages": {
                    "meta.embedded.block.javascript": "javascript"
                }
            },
            {
                "scopeName": "source.js.mylang", …
Run Code Online (Sandbox Code Playgroud)

textmate visual-studio-code tmlanguage vscode-extensions

5
推荐指数
1
解决办法
2526
查看次数

有没有办法使用 tmLanguage 语法来扩展 vscode 集成 Markdown 扩展语法高亮?

我正在开发 vscode 的语言扩展。我定义了一个 tmLanguage 文件,一切运行良好。在悬停功能中,使用vscode.MarkdownString.appendCodeblock()markdown 被正确解释,并且我的自定义语言的语法突出显示可以开箱即用,通过执行以下操作:

const content = new MarkdownString("", true)
content.appendMarkdown("## Examples: \n")
content.appendCodeblock(examples, "lmps")
Run Code Online (Sandbox Code Playgroud)

其中examples包含我的自定义语言的一些示例代码,"lmps"是我的语言标识符。(图像悬停示例

我想知道是否有办法在网络视图中实现同样的事情。我成功地在 webview 中显示了content,将 markdownString 编译成 html:

async function set_doc_panel_content(panel: DocPanel | undefined, md_content: vscode.MarkdownString) {
        const html: string = await vscode.commands.executeCommand('markdown.api.render', md_content.value) as string;
        panel!.webview.html = html;
    }
Run Code Online (Sandbox Code Playgroud)

到目前为止一切都很好,但是通过这种方式,Markdown 不知道我的自定义语言,并且不做任何语法突出显示。(示例图像 Webview)现在,我了解到向 Markdown 扩展添加语言支持可以通过在激活函数中返回一个对象来贡献一个 markdown-it 插件来实现。

export function activate(context: vscode.ExtensionContext) {

...

    return {
        extendMarkdownIt(md: any) {
          return md.use(require('markdown-it-emoji'));
        }
} …
Run Code Online (Sandbox Code Playgroud)

markdown visual-studio-code tmlanguage vscode-extensions markdown-it

5
推荐指数
1
解决办法
1184
查看次数

如何在 VS Code 中将 TextMate 语法注入到 Markdown 标题中?

我想[ ]在 VS Code 的 Markdown 文件中选择语法突出显示。

我可以使用[ ]以下目标regex(?<=\s)\]|\[(?=\s)但是,[ ]当它是标题的一部分时,不会匹配。

作为一个最小的例子,package.json我有以下内容:

"contributes": {
    "grammars": [
        {
            "scopeName": "markdown.todo",
            "path": "./syntaxes/todo.markdown.json",
            "injectTo": ["text.html.markdown"]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

然后,在todo.markdown.json我有:

{
    "scopeName": "markdown.todo",
    "injectionSelector": "L:text.html.markdown",
    "patterns": [
        { "include": "#item-todo" }
    ],
    "repository": {
        "item-todo": {
            "name": "item.todo",
            "match": "(?<=\\s)\\]|\\[(?=\\s)"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

最后,在 VS Code 中settings.json我使用以下方法应用颜色:

"editor.tokenColorCustomizations": {
    "textMateRules": [
        {
            "scope": "item.todo",
            "settings": {
                "foreground": "#FF0000" …
Run Code Online (Sandbox Code Playgroud)

markdown visual-studio-code tmlanguage vscode-extensions

5
推荐指数
0
解决办法
521
查看次数