编写Sublime Text 3插件,将文本添加到选定的文本块之前

时间:2015-05-26 13:13:00

标签: sublimetext3 sublime-text-plugin

我正在使用Sublime Text 3插件来处理todo.txt todo文件,这些文件是平面文本文件。我在编写适用于所选区域的插件命令时遇到问题。我希望能够将日期(或x)添加到选择的行(每行是一个任务)。以下是命令之前的行。

Task one
Task two

这是所需的输出。

2015-05-26 Task one
2015-05-26 Task two

我的命令只有在我使用multicursor时才会输出。如果我选择区域(即通过点击并拖动或CTRL-l突出显示),那么我会得到混乱的输出。

2015-05-262015-05-26  Task one
Task two

有没有办法对多重突出显示的选项进行操作?

这是我插件的一部分。

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

1 个答案:

答案 0 :(得分:3)

似乎adjustBy是问题所在。尝试设置:

        adjustBy += len(prefix[0]) + 1 

问题是循环不会重置两个insert之间每行的位置。