编写 Sublime Text 3 插件以将文本添加到选定的文本块
Write Sublime Text 3 plugin to prepend text to selected block of text
我正在开发一个 Sublime Text 3 插件来处理 todo.txt 待办事项文件,这些文件是纯文本文件。我在编写可在 selected 区域正常工作的插件命令时遇到问题。我希望能够将日期(或 x
)添加到 selection 行(每一行都是一个任务)。这是命令之前的行。
Task one
Task two
这是所需的输出。
2015-05-26 Task one
2015-05-26 Task two
我的命令给出了这个输出,但是 只有当我使用多光标时。如果我 select 该区域(即通过单击并拖动或 CTRL-l
突出显示),那么我会得到混乱的输出。
2015-05-262015-05-26 Task one
Task two
有没有一种方法可以对 selection 进行操作,使其对多光标 和 突出显示都具有鲁棒性?
这是我的插件的一部分。
import sublime, sublime_plugin, time, re
class DateTaskCommand(sublime_plugin.TextCommand):
def run(self, edit):
for selectedRegion in self.view.sel():
selectedLines = self.view.lines(selectedRegion)
adjustBy = 0
for line in selectedLines:
insertPoint = line.begin() + adjustBy
prefix = [time.strftime('%Y-%m-%d'), '']
self.view.insert(edit, insertPoint, ' '.join(prefix))
adjustBy += 1
好像是adjustBy
的问题。尝试设置:
adjustBy += len(prefix[0]) + 1
问题是循环没有重置两个insert
之间每行的位置。
我正在开发一个 Sublime Text 3 插件来处理 todo.txt 待办事项文件,这些文件是纯文本文件。我在编写可在 selected 区域正常工作的插件命令时遇到问题。我希望能够将日期(或 x
)添加到 selection 行(每一行都是一个任务)。这是命令之前的行。
Task one
Task two
这是所需的输出。
2015-05-26 Task one
2015-05-26 Task two
我的命令给出了这个输出,但是 只有当我使用多光标时。如果我 select 该区域(即通过单击并拖动或 CTRL-l
突出显示),那么我会得到混乱的输出。
2015-05-262015-05-26 Task one
Task two
有没有一种方法可以对 selection 进行操作,使其对多光标 和 突出显示都具有鲁棒性?
这是我的插件的一部分。
import sublime, sublime_plugin, time, re
class DateTaskCommand(sublime_plugin.TextCommand):
def run(self, edit):
for selectedRegion in self.view.sel():
selectedLines = self.view.lines(selectedRegion)
adjustBy = 0
for line in selectedLines:
insertPoint = line.begin() + adjustBy
prefix = [time.strftime('%Y-%m-%d'), '']
self.view.insert(edit, insertPoint, ' '.join(prefix))
adjustBy += 1
好像是adjustBy
的问题。尝试设置:
adjustBy += len(prefix[0]) + 1
问题是循环没有重置两个insert
之间每行的位置。