2

在使用 Python 插件的 SublimeText 2 中。我正在尝试增强我发现的现有插件。

基本上,它是一个计时器插件,具有start, stop,pause功能,并将使用此 Sublimetext API 调用将时间打印到状态栏...

sublime.status_message(TIMER)

我想做的是在 中显示一些东西,Status Bar以表明 Timer 实际上已启动并正在运行。像这样的东西...

sublime.status_message('Timer: on')

问题是这只是在被解雇之前短暂地显示我的状态栏消息几秒钟。

所以我正在寻找有关如何打印到状态栏并长期保存的信息?

4

3 回答 3

3

您可以使用view.set_status(key, value)在状态栏中放置持久消息。但是,这绑定到视图,而不是应用程序。如果您需要独立于视图的消息,则必须使用激活和停用的侦听器做一些工作。或者,您可以设置窗口中所有视图的状态,方法是使用window.views()获取窗口中所有视图的数组,并将状态消息放置在所有视图上。然后,完成后,删除所有状态消息。

于 2013-05-09T16:49:15.250 回答
1

请参考下面的代码。这是一个在指定时间到期后清除状态的类,要使用这个类,只需调用 set_status() 函数。

import time, threading

class StatusDisplay:
  def __init__(self):
    self.timeout = 3
    self.timer = None

  def set_status(self, view, msg, overwrite):
    self.cancel_timer()
    self.view = view
    if overwrite:
        self.view.set_status("mytag", msg+'\n')
    else:
        self.view.set_status("mytag", msg)
    self.start_timer()

  def cancel_timer(self):
    if self.timer != None:
        self.timer.cancel()

  def start_timer(self):
    self.timer = threading.Timer(self.timeout, self.clear)
    self.timer.start()

  def clear(self):
    print('clear message')
    self.view.erase_status("mytag")
于 2015-12-21T04:24:51.450 回答
0

我还没有真正遇到任何可以在状态栏中长时间保留消息的插件。这可能是一个有意的设计决定,因此用户可以访问状态栏菜单,并且插件不会劫持其他需要显示的消息,例如光标位置。

查看ScopeHunter了解将消息打印到不同位置的选项。特别是,通过用户设置,它可以打印到状态栏、剪贴板、面板和/或控制台日志。

于 2013-05-08T14:33:30.553 回答