Sublimetext3 在聚焦其他组以打开文件后,如何将焦点恢复到快速面板?
情况是这样的:我正在编写一个插件,需要:Sublimetext3 在聚焦其他组以打开文件后,如何将焦点恢复到快速面板?,sublimetext3,sublimetext,sublime-text-plugin,Sublimetext3,Sublimetext,Sublime Text Plugin,情况是这样的:我正在编写一个插件,需要: 打开快速面板 在第一个项目悬停时,将焦点放在其他组 在那个组中打开 将焦点恢复到快速面板输入,以便我可以移动到列表中的下一项,等等 我确实解决了1-3题,但第4题给我带来了麻烦。有办法吗?您需要获取与快速面板关联的视图。方法show\u quick\u panel不会返回视图,但是您可以使用EventListener插件激活的方法来获取视图 当您聚焦任何视图(选项卡、控制台、快速面板…)时,将调用此方法(启用)。因此,该插件将捕获与快速面板关联的视图 获
我确实解决了1-3题,但第4题给我带来了麻烦。有办法吗?您需要获取与快速面板关联的视图。方法show\u quick\u panel不会返回视图,但是您可以使用EventListener插件激活的方法来获取视图 当您聚焦任何视图(选项卡、控制台、快速面板…)时,将调用此方法(启用)。因此,该插件将捕获与快速面板关联的视图 获取视图的示例插件: 现在在您的插件中,您需要告诉eventListener激活的视图何时对应于快速面板,以便捕获它。插件中所需内容的示例:
import sublime, sublime_plugin
class Sample(sublime_plugin.WindowCommand):
def restoreQuickPanelFocus(self):
"""Restore focus to quick panel is as easy as focus in the quick panel view, that the eventListener has previously captured and saved"""
self.window.focus_view(sublime.quickPanelView)
def on_highlighted(self, index):
"""Open image[index] in group 1"""
self.window.focus_group(1)
self.window.open_file(self.items[index])
"""Wait for image to open and restore focus to quick panel"""
sublime.set_timeout(self.restoreQuickPanelFocus, 100)
def run(self):
print('runando')
"""Divide layout (as an example) """
self.window.set_layout({
"cols": [0.0, 0.4, 1.0],
"rows": [0.0, 0.6, 1.0],
"cells": [[0, 0, 2, 1], [0, 1, 1, 2], [1, 1, 2, 2]]
})
"""Items=> images paths"""
self.items = ('C:/images/img1.jpg','C:/images/img2.jpg','C:/images/img3.jpg','C:/images/img4.jpg','C:/images/img5.jpg')
"""Now we are going to show the quick panel, so we set the capturing flag to true as the next activated view will correspond to quick panel"""
sublime.capturingQuickPanelView = True
self.window.show_quick_panel(self.items, None, sublime.KEEP_OPEN_ON_FOCUS_LOST , 0, self.on_highlighted)
结果:
sergioFC的回答对我不起作用(sublime 3 3210)-文件视图获得焦点,而不是快速面板 一些替代方案 作为保持快速面板焦点的一种方式(当前组中打开的文件)
import sublime, sublime_plugin
class Sample(sublime_plugin.WindowCommand):
def restoreQuickPanelFocus(self):
"""Restore focus to quick panel is as easy as focus in the quick panel view, that the eventListener has previously captured and saved"""
self.window.focus_view(sublime.quickPanelView)
def on_highlighted(self, index):
"""Open image[index] in group 1"""
self.window.focus_group(1)
self.window.open_file(self.items[index])
"""Wait for image to open and restore focus to quick panel"""
sublime.set_timeout(self.restoreQuickPanelFocus, 100)
def run(self):
print('runando')
"""Divide layout (as an example) """
self.window.set_layout({
"cols": [0.0, 0.4, 1.0],
"rows": [0.0, 0.6, 1.0],
"cells": [[0, 0, 2, 1], [0, 1, 1, 2], [1, 1, 2, 2]]
})
"""Items=> images paths"""
self.items = ('C:/images/img1.jpg','C:/images/img2.jpg','C:/images/img3.jpg','C:/images/img4.jpg','C:/images/img5.jpg')
"""Now we are going to show the quick panel, so we set the capturing flag to true as the next activated view will correspond to quick panel"""
sublime.capturingQuickPanelView = True
self.window.show_quick_panel(self.items, None, sublime.KEEP_OPEN_ON_FOCUS_LOST , 0, self.on_highlighted)
self.window.open_file(items[index][2], 8|sublime.TRANSIENT)