vscode-theme-onelight/samples/python.py

70 lines
2.5 KiB
Python
Raw Permalink Normal View History

#!/usr/bin/python
# -*- coding: utf-8 -*-
import re
import sublime
import sublime_plugin
from datetime import datetime
class SublimeTasksBase(sublime_plugin.TextCommand):
def run(self, edit):
self.open_tasks_bullet = self.view.settings().get('open_tasks_bullet')
self.done_tasks_bullet = self.view.settings().get('done_tasks_bullet')
self.date_format = self.view.settings().get('date_format')
if self.view.settings().get('done_tag'):
self.done_tag = "@done"
else:
self.done_tag = ""
self.runCommand(edit)
class NewCommand(SublimeTasksBase):
def runCommand(self, edit):
for region in self.view.sel():
line = self.view.line(region)
line_contents = self.view.substr(line).rstrip()
has_bullet = re.match('^(\s*)[' + re.escape(self.open_tasks_bullet) + re.escape(self.done_tasks_bullet) + ']', self.view.substr(line))
current_scope = self.view.scope_name(self.view.sel()[0].b)
if has_bullet:
grps = has_bullet.groups()
line_contents = self.view.substr(line) + '\n' + grps[0] + self.open_tasks_bullet + ' '
self.view.replace(edit, line, line_contents)
elif 'header' in current_scope:
header = re.match('^(\s*)\S+', self.view.substr(line))
if header:
grps = header.groups()
line_contents = self.view.substr(line) + '\n' + grps[0] + ' ' + self.open_tasks_bullet + ' '
else:
line_contents = ' ' + self.open_tasks_bullet + ' '
self.view.replace(edit, line, line_contents)
end = self.view.sel()[0].b
pt = sublime.Region(end, end)
self.view.sel().clear()
self.view.sel().add(pt)
else:
has_space = re.match('^(\s+)(.*)', self.view.substr(line))
if has_space:
grps = has_space.groups()
spaces = grps[0]
line_contents = spaces + self.open_tasks_bullet + ' ' + grps[1]
self.view.replace(edit, line, line_contents)
else:
line_contents = ' ' + self.open_tasks_bullet + ' ' + self.view.substr(line)
self.view.replace(edit, line, line_contents)
end = self.view.sel()[0].b
pt = sublime.Region(end, end)
self.view.sel().clear()
self.view.sel().add(pt)