如果侧边栏打开,如何检测键绑定?

时间:2018-05-12 04:41:20

标签: sublimetext3 sublimetext2 sublimetext sublimetext-snippet

我希望cmd+1在侧边栏中显示(如果已关闭)并且如果侧边栏处于打开状态,请将其关闭。

如果已关闭:{ "keys": ["super+1"], "command": "reveal_in_side_bar"}

如果打开:{ "keys": ["super+1"], "command": "toggle_side_bar" }

我不知道如何做if部分 。感谢

1 个答案:

答案 0 :(得分:2)

据我所知,没有内置的键绑定上下文可用于判断侧栏是打开还是关闭。但这可以使用Python API轻松完成,特别是window.is_sidebar_visible(),也可以创建自定义键绑定上下文。

从“工具”菜单中,导航至“开发人员”>新插件。然后用:

替换视图的内容
import sublime, sublime_plugin

class SidebarContextListener(sublime_plugin.EventListener):
    def on_query_context(self, view, key, operator, operand, match_all):
        if key != 'sidebar_visible' or not (operand in ('reveal', 'toggle')):
            return None
        visible = view.window().is_sidebar_visible()
        if operand == 'toggle' and visible:
            return True
        if operand == 'reveal' and not visible:
            return True
        return None

并将其保存在ST建议的文件夹(Packages/User)中,类似于sidebar_context.py - 扩展名很重要,名称不是。

现在,我们可以在您的键绑定中使用它,例如:

{ "keys": ["super+1"], "command": "toggle_side_bar", "context":
    [
        { "key": "sidebar_visible", "operand": "toggle" },
    ],
},

{ "keys": ["super+1"], "command": "reveal_in_side_bar", "context":
    [
        { "key": "sidebar_visible", "operand": "reveal" },
    ],
},