Sublime Text 3,侧边栏项目不显示

Sublime Text 3, sidebar items are not showing

我正在为 Sublime Text 3 制作一个简单的插件,它应该在一个或多个文件夹中创建一个 .gitignore 文件。到目前为止,该软件包包含两个命令,可以使用 window.command(...).

从 ST3 控制台调用它们

我希望能够右键单击边栏中的文件夹,然后 select 弹出菜单中的命令。我添加了 Side Bar.sublime-menu 项目来调用方法,但是当右键单击边栏中的文件夹或文件时,菜单项没有显示。

根据下面的信息,有人知道这里缺少什么吗?


插件树:

~/Library/Application Support/Sublime Text 3/Packages/GitIgnoreFolderContents
├── Side\ Bar.sublime-menu
├── git_ignore_folder_contents.py
├── git_ignore_folder_contents.sublime-settings
├── libs
│   ├── settings.py
│   └── util.py
└── notes_use_later.txt

侧面Bar.sublime-菜单:

[
    {
        "caption": "-"
    },
    {
        "caption": "Git Ignore Folder Contents",
        "id": "git_ignore_folder_contents",
        "children:": [
            {
                "caption": "Create .gitignore",
                "command": "create_folder_gitignore",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "Create .gitkeep",
                "command": "create_folder_gitkeep",
                "args": {
                    "paths": []
                }
            }
        ]
    }
]

git_ignore_folder_contents.py:

import sublime
import sublime_plugin

from .libs.util import print_debug


class BaseCreateFolderIgnoreFileCommand(sublime_plugin.WindowCommand):
    def run(self, paths=[]):
        print_debug('[GIFC] running {}'.format(self.__class__.__name__))
        print_debug('[GIFC] paths:', paths)
        if not paths:
            print_debug('[GIFC] paths is empty, halting function')
            return

        for path in paths:
            # ToDo: create files here
            pass

    def is_enabled(self, paths=[]):
        # ToDo: disable when one of paths is not a folder
        return True


class CreateFolderGitignoreCommand(BaseCreateFolderIgnoreFileCommand):
    filename = '.gitignore'
    contents = '*\n!.gitignore'


class CreateFolderGitkeepCommand(BaseCreateFolderIgnoreFileCommand):
    filename = '.gitkeep'
    contents = ''

环境:

看起来这对您不起作用的原因是您的 sublime-menu 文件被巧妙地破坏了; children 键中有一个杂散的 : 字符。

特别是,当我使用您在此处提供的文件创建包时(相同版本的 Sublime,但在 Windows 而不是 MacOS 上),顶级菜单项出现在菜单中,但是它没有任何人可能期望的 children 。选择 Git Ignore Folder Contents 命令会在控制台中生成错误。我猜那是因为它没有直接 command 执行,因为它不应该是可选的。

将这一行修正为在密钥中没有冒号应该可以解决您的问题;或者至少它对我有用:

"children:": [