编写 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之间每行的位置。