首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >崇高的文本插件打开文件符号

崇高的文本插件打开文件符号
EN

Stack Overflow用户
提问于 2019-07-11 10:37:31
回答 1查看 81关注 0票数 0

我试图在文本符号行处执行一个打开文件的命令。我试着使用show_overlay命令来实现这一点,但是如果您尝试在搜索中使用‘#’,它将无法正确打开。

举例说明。创建一个包含文件的项目,

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

代码语言:javascript
复制
class MagicToolbox_MagicZoomPlus_Model_Observer {
    public function fixLayoutUpdates($observer) {
    }
}

如果您尝试使用这样的命令创建一个插件:

代码语言:javascript
复制
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 ),它将显示该文件并突出显示该函数。

也许还有另一种方法来实现同样的目标。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-11 17:41:06

经过一些调查后,似乎当您向show_overlay提供文本时,它只是直接应用于文本字段的内容,并用作初始显示的简单筛选器,而不需要手动输入文本时发生的任何额外处理。因此,当您插入包含特殊goto功能的文本时,例如您在这里使用的#,它被严格地应用于正在显示的文件上,但不会发生额外的操作。

正如您已经注意到的,打开覆盖,然后作为两个操作输入文本具有所需的效果。因此,为了通过插件来完成这个任务,您需要执行两个操作:

代码语言:javascript
复制
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命令。尽管insert是一个TextCommand,但要求window执行它会告诉窗口将命令转发给任何碰巧在该窗口中有输入焦点的view,该窗口是覆盖层中的输入区域。

如果正在执行此操作的命令不是自行修改文件的选择或内容,则可以将其改为WindowCommand并使用self.window而不是self.view.window()来缩短。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56987311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档