【问题标题】:Sublime Text Plugin Open file symbolSublime Text Plugin 打开文件符号
【发布时间】:2019-07-11 10:37:31
【问题描述】:

我试图在文本符号行执行打开文件的命令。 我尝试使用 show_overlay 命令来实现,但如果您尝试在搜索中使用“#”,它将无法正确打开。

示例。创建一个包含文件的项目,

app/code/community/MagicToolbox/MagicZoomPlus/Model/Observer.php

class MagicToolbox_MagicZoomPlus_Model_Observer {
    public function fixLayoutUpdates($observer) {
    }
}

如果您尝试使用如下命令创建插件:

class MyPluginCommand(sublime_plugin.TextCommand):
    def run(self, view):
            sublime_api.window_run_command(
                self.view.window().id(),
                'show_overlay',
                {
                    'overlay': 'goto',
                    'show_files': True,
                    'text': 'MagicToolbox/MagicZoomPlus/Model/Observer#fixLayoutUpdates'
                }
            )

它不会直接显示文件。但如果您从搜索输入中删除所有文本,然后再次粘贴MagicToolbox/MagicZoomPlus/Model/Observer#fixLayoutUpdates,它将显示文件并突出显示该功能。

也许还有其他方法可以达到同样的效果。

【问题讨论】:

    标签: sublime-text-plugin


    【解决方案1】:

    经过一番调查,看起来当您向 show_overlay 提供文本时,它只是直接应用于文本字段的内容并用作初始显示的简单过滤器,而无需任何额外处理,如果您手动输入文本。因此,当您插入包含特殊 goto 功能(例如您在此处使用的 #)的文本时,它会严格用作正在显示的文件的过滤器,但不会发生额外操作。

    正如您所指出的,打开叠加层,然后作为两个操作输入文本具有预期的效果。因此,为了通过插件执行此操作,您需要通过两个操作来执行此操作:

    import sublime
    import sublime_plugin
    
    
    class ExampleCommand(sublime_plugin.TextCommand):
        def run(self, edit):
            self.view.window().run_command("show_overlay", {
                "overlay": "goto",
                "show_files": True
            })
            self.view.window().run_command("insert", {
                "characters": "Observer#fixLayoutUpdates"
            })
    

    这里我们先打开叠加层,然后使用insert命令插入文本。这里的重要关键是要求window 运行insert 命令。尽管insertTextCommand,但要求window 执行它会告诉窗口将命令转发到任何view 恰好在该窗口中具有输入焦点的位置,即覆盖中的输入区域。

    如果您正在执行此操作的命令不是自己修改文件的选择或内容,您可以通过将其设置为 WindowCommand 并使用 self.window 而不是 @987654335 来缩短它@。

    【讨论】:

    • 感谢完美。您知道在哪里可以找到有关 goto 窗口语法的更多信息吗?在某些情况下 # 并没有达到我的预期
    • 我认为Official Docs 中没有关于它的任何信息,但非官方文档有一个page about it
    猜你喜欢
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 2014-03-09
    • 2014-05-26
    • 2012-03-21
    • 1970-01-01
    • 2015-06-15
    相关资源
    最近更新 更多