如何在 sublime text 插件中回显对文件的更改
How do I echo the changes to a file in a sublime text plugin
我正在试验一个 sublime text 插件,我想捕获每个击键并在控制台中打印 inserted/deleted 字符以及行号和行中的位置。
事件侦听器 class 中有一个 on_modified 事件,我可以连接它,但它 returns 是一个 view 对象。我只想要所做的更改以及有关更改的一些信息(行号和列号)。我过去曾扩展过其他编辑器,此信息可作为一组编辑器使用。
插入或删除的文本以及文件中的位置是否可从 sublime 插件中的事件侦听器获得?
我会避免使用控制台。与视图相比,面板非常有限,您将与标准控制台输出竞争。如果你真的想使用面板,请使用 create_output_panel & show_input_panel
我会使用一个存储的字符串或字符串数组,您可以将信息不断附加到其中,并创建一个命令以在需要时将存储的信息打印到新视图。您可以实现一个字典来存储每个文件的更改信息。
您可以使用 substr
& rowcol
查找最近输入的字符及其位置。
示例:
代码:
import sublime, sublime_plugin
class EventListener ( sublime_plugin.EventListener ):
def on_modified ( self, view ):
selectedRegions = view.sel()
for region in selectedRegions:
row, column = view.rowcol ( region.a )
line = row + 1
lastCharacter_Region = sublime.Region ( region.a - 1, region.a )
lastCharacter = view.substr ( lastCharacter_Region )
print ( "line: " + str ( line ) + " col: " + str ( column ) + " char: " + lastCharacter )
备注:
[1]
为了简单起见,我没有在上面的示例中实现输出面板。您可以按原样使用代码,但如果您打算发布插件,我会避免使用控制台。
例如:我默认启用命令 sublime.log_input ( True )
& sublime.log_commands ( True )
(用于开发目的),因此任何系统打印都会穿插所有的日志输出。
[2]
我正在开发一个有点相关的插件,LineDiff. The solutions I mentioned above will work great for keyboard-entered changes, but keeping track of programmatic changes is a bit more involved. See this thread 以表达我对那个问题的一些想法和建议的解决方案。
[3]
OP 在 SublimeText 论坛创建了一个主题来进一步讨论这个问题。
已取得重大进展,请查看@:
Retrieving inserted and deleted text
我正在试验一个 sublime text 插件,我想捕获每个击键并在控制台中打印 inserted/deleted 字符以及行号和行中的位置。
事件侦听器 class 中有一个 on_modified 事件,我可以连接它,但它 returns 是一个 view 对象。我只想要所做的更改以及有关更改的一些信息(行号和列号)。我过去曾扩展过其他编辑器,此信息可作为一组编辑器使用。
插入或删除的文本以及文件中的位置是否可从 sublime 插件中的事件侦听器获得?
我会避免使用控制台。与视图相比,面板非常有限,您将与标准控制台输出竞争。如果你真的想使用面板,请使用 create_output_panel & show_input_panel
我会使用一个存储的字符串或字符串数组,您可以将信息不断附加到其中,并创建一个命令以在需要时将存储的信息打印到新视图。您可以实现一个字典来存储每个文件的更改信息。
您可以使用 substr
& rowcol
查找最近输入的字符及其位置。
示例:
代码:
import sublime, sublime_plugin
class EventListener ( sublime_plugin.EventListener ):
def on_modified ( self, view ):
selectedRegions = view.sel()
for region in selectedRegions:
row, column = view.rowcol ( region.a )
line = row + 1
lastCharacter_Region = sublime.Region ( region.a - 1, region.a )
lastCharacter = view.substr ( lastCharacter_Region )
print ( "line: " + str ( line ) + " col: " + str ( column ) + " char: " + lastCharacter )
备注:
[1]
为了简单起见,我没有在上面的示例中实现输出面板。您可以按原样使用代码,但如果您打算发布插件,我会避免使用控制台。
例如:我默认启用命令 sublime.log_input ( True )
& sublime.log_commands ( True )
(用于开发目的),因此任何系统打印都会穿插所有的日志输出。
[2]
我正在开发一个有点相关的插件,LineDiff. The solutions I mentioned above will work great for keyboard-entered changes, but keeping track of programmatic changes is a bit more involved. See this thread 以表达我对那个问题的一些想法和建议的解决方案。
[3]
OP 在 SublimeText 论坛创建了一个主题来进一步讨论这个问题。
已取得重大进展,请查看@: