gpt4 book ai didi

sublimetext3 - Sublime Text 菜单项不起作用

转载 作者:行者123 更新时间:2023-12-01 03:29:42 27 4
gpt4 key购买 nike

我正在尝试创建一个崇高的文本插件。我成功创建了它,现在我正在尝试向菜单添加一个项目,当它被选中时,它会调用插件。我无法在正确的位置插入菜单项,并在创建插件后调用该插件。

假设我有以下插件:

import sublime, sublime_plugin

class ExampleCommand(sublime_plugin.TextCommand):
def run(self, edit):
self.view.insert(edit, 0, "Hello, World!")

我创建了一个文件夹

C:\Users\"userName"\AppData\Roaming\Sublime Text 3\Packages\"My Plugin"



并将插件文件添加到该目录。然后我在名为 Main.sublime-menu 的文件中添加了以下代码
[
{
"id": "file",
"children":
[
{"id": "save"},
{"caption": "My Plugin"},
{ "command": "myPlugin" }
]
}
]

问题是,我得到两个 My PluginmyPlugin菜单中的项目,它在 exit 之后菜单。我希望它在保存之后。另外,当我选择 My Plugin ,我在控制台中收到错误消息:

Unable to parse command:



如何在 save 之后添加菜单项菜单项,并让菜单项调用一个名为 myPlugin 的插件?

最佳答案

插件中的命令名称不是取自存储它们的 python 文件的名称;它们派生自实现命令的类的名称,以便多个命令可以存储在单个文件中。

此外,命令名称是 snake cased并被迫全部小写。如果您的类没有以该样式命名,Sublime 将通过以下方式将其转换为该样式:

  • 扔掉Command末尾的文本(如果存在)
  • 将前导大写字符转换为小写
  • 用下划线和该字符的小写等效替换所有其他大写字符。

  • 这意味着对于上面的示例,您将使用的命令名称是 example .你不能让它成为 myPlugin因为里面有一个大写字符。命名类 MyPluginCommand , MyPluginmy_plugin将创建一个名为 my_plugin 的命令,这是尽可能接近的。

    您的 Main.sublime-menu 的示例内容没有遵循 children 中项目的正确数据结构数组,这就是项目出现两次的原因。有一些 unofficial documentation on the menu format概述了菜单项的字段和结构。

    将项目附加到菜单末尾的原因是因为来自多个包的菜单如何合并在一起。基本上有些项目有 id其中的字段为他们提供了唯一的 ID;当多个项目具有相同的 ID 时,它们会按照它们来自的包的加载顺序连接在一起。

    您的菜单项使用 idfile表示文件菜单,然后包含一个 idsave ;由于默认主菜单不包含具有该 ID 的项目,因此您的项目会卡在菜单的末尾。

    您在控制台中看到的错误是因为标题为 My Plugin 的菜单项不包含 command field ;相反,它后面的菜单项指定了 command并且没有指定 caption . Sublime 告诉你它无法解析命令,因为它找不到命令。

    为了做你想做的事,你需要一个 Main.sublime-menu看起来像这样:
    [
    {
    "id": "file",
    "children":
    [
    {
    "caption": "My Plugin",
    "command": "my_plugin"
    }
    ]
    },
    ]

    这假设您已重命名实现上述命令的类。

    关于sublimetext3 - Sublime Text 菜单项不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38863938/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com