我有一个插件可以打开一个文件,然后在加载时调用
view.run_command("goto_line", {"line": item["Line"]})
在左侧的排水沟中,它似乎转到那条线,因为它的行号在装订线中突出显示,但是该文件中没有插入符号。有没有办法让插入符号开始在那条线上闪烁?
更新:我注意到文件是否已经打开,插入符号出现在该行上,所以只有当你打开一个关闭文件时,插入符不在那里
答案 0 :(得分:2)
短篇小说:
在开发插件时,我遇到过很多次这个问题。这是为我做的那条线:
self.view.window().open_file("{0}:{1}:{2}".format(full_file_path, line_num, 0), sublime.ENCODED_POSITION)
这将打开full_file_path
并跳转到line_num
,即使文件尚未打开。
长篇故事:
此行的前几个单词取决于命令类继承的内容。出于我的目的,这一行被放置在一个扩展sublime_plugin.TextCommand
的类中。扩展sublime_plugin.TextCommand
的类没有直接与window
通信的方式。相反,他们引用window
作为view
对象的方法,该对象是sublime_plugin.TextCommand
s的原生对象。 (该方法返回对window
对象的引用)。
如果要将此行放在扩展sublime_plugin.WindowCommand
的类中,则需要对其进行修改:
self.window.open_file("{0}:{1}:{2}".format(full_file_path, line_num, 0), sublime.ENCODED_POSITION)
注意:没有view
个对象,window
后面的括号被省略,因为我们不再通过view
的方法引用它。
如here所示,window()方法“返回对包含视图的窗口的引用”,从而允许我们访问these methods,即使我们没有直接来自{{1} }}