在sublime文本上切换第一张(制表符)和上一张表

时间:2018-01-08 05:57:09

标签: plugins sublimetext3

我正在尝试为自己编写一个插件来自动切换标签。当我切换到其他窗口时,将显示第一个选项卡。当我改回sublime时,将显示editng选项卡。我得到了以下代码,可以切换到第一个选项卡。但是当我回到崇高的文本时,它会挂起,而不是切换回标签。有什么我不想理解的床单吗?谢谢!

import sublime
import sublime_plugin



class ShowSheets(sublime_plugin.EventListener):
    """
    Display the name of the current project in the status bar.
    """
    orisheet = 0



    def show_1st(self,view):    
        if view.window() is None:
            return  
        self.orisheet = view.window().active_sheet()
        firstsheet = view.window().sheets()
        view.window().focus_sheet(firstsheet[0])

    def show_original(self,view):
        if view.window() is None:
            return
        if self.orisheet == 0:
            return    
        view.window().focus_sheet(self.orisheet)


    def on_activated(self, view):
        self.show_original (view)

    def on_deactivated(self, view):
        self.show_1st (view)    

1 个答案:

答案 0 :(得分:1)

这是因为您创建了一个无限回调循环 - 当标签获得或失去焦点时会调用on_activatedon_deactivated

因此,当ST窗口失去焦点时,on_deactivated会运行一次。然后,当ST窗口重新获得焦点时,它会调用on_activated一次。然后,您的代码会切换活动标签,以便再次执行on_deactivatedon_activated,并且循环会无限期重复。<​​/ p>

可能您可以通过检查哪个标签已处于活动状态来解决此问题,并且不要将焦点设置为当前活动的标签。但是,您可能会发现您的代码只会阻止您切换选项卡,因为没有真正的方法可以判断Window何时失去焦点而活动选项卡已更改。