Sublime text plugin 升华文本插件打开文件符号

Sublime text plugin 升华文本插件打开文件符号,sublime-text-plugin,Sublime Text Plugin,我试图执行一个命令,在文本符号行打开一个文件。 我尝试使用show#u overlay命令来实现这一点,但如果您尝试在搜索中使用“#”,它将无法正确打开 例如。创建包含文件的项目 app/code/community/MagicToolbox/magiczoompus/Model/Observer.php: class MagicToolbox_MagicZoomPlus_Model_Observer { public function fixLayoutUpdates($observe

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

例如。创建包含文件的项目

app/code/community/MagicToolbox/magiczoompus/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/magiczoompus/Model/Observer#fixLayoutUpdates
,它将显示该文件并突出显示该功能


也许还有另一种方法可以达到同样的效果。

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

正如您所注意到的,打开覆盖,然后作为两个操作输入文本具有所需的效果。因此,为了通过插件实现这一点,您需要通过两个操作来实现:

导入升华
导入升华插件
类ExampleCommand(升华插件.TextCommand):
def运行(自我,编辑):
self.view.window().run_命令(“show_overlay”{
“覆盖”:“转到”,
“显示_文件”:真
})
self.view.window().运行_命令(“插入”{
“字符”:“观察者#固定布局更新”
})
在这里,我们首先打开覆盖,然后使用
insert
命令插入文本。这里的关键是要求
窗口
运行
插入
命令。虽然
insert
是一个
TextCommand
,但要求
窗口执行它会告诉窗口将命令转发到该窗口中恰好有输入焦点的任何
视图
,该窗口是覆盖中的输入区域


如果您在其中执行此操作的命令本身没有修改文件的选择或内容,您可以将其改为
WindowCommand
,并在经过一些调查后,使用
self.window
而不是
self.view.window()

来缩短此操作,看起来,当您向
show\u overlay
提供文本时,它只是直接应用于文本字段的内容,并用作初始显示的简单过滤器,而无需手动输入文本时会发生的任何额外处理。因此,当您插入包含特殊转到功能(如此处使用的
#
)的文本时,它将严格用作显示文件的过滤器,但不会发生额外操作

正如您所注意到的,打开覆盖,然后作为两个操作输入文本具有所需的效果。因此,为了通过插件实现这一点,您需要通过两个操作来实现:

导入升华
导入升华插件
类ExampleCommand(升华插件.TextCommand):
def运行(自我,编辑):
self.view.window().run_命令(“show_overlay”{
“覆盖”:“转到”,
“显示_文件”:真
})
self.view.window().运行_命令(“插入”{
“字符”:“观察者#固定布局更新”
})
在这里,我们首先打开覆盖,然后使用
insert
命令插入文本。这里的关键是要求
窗口
运行
插入
命令。虽然
insert
是一个
TextCommand
,但要求
窗口执行它会告诉窗口将命令转发到该窗口中恰好有输入焦点的任何
视图
,该窗口是覆盖中的输入区域


如果您在中执行此操作的命令本身没有修改文件的选择或内容,您可以将其改为
WindowCommand
,并使用
self.window
而不是
self.view.window()
,以缩短此操作,谢谢您的帮助。你知道我在哪里可以找到更多关于goto窗口语法的信息吗?有些情况下#并没有达到我的预期。我不认为在文档中有任何关于它的信息,但非官方文档有一个。谢谢,这非常有效。你知道我在哪里可以找到更多关于goto窗口语法的信息吗?有些情况下#没有达到我预期的效果。我不认为文件中有任何关于它的信息,但非官方文件有一个。