forked from SublimeText-Markdown/MarkdownEditing
-
Notifications
You must be signed in to change notification settings - Fork 0
/
decide_title.py
28 lines (24 loc) · 1.04 KB
/
decide_title.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import sublime
import sublime_plugin
import re
class DecideTitle(sublime_plugin.EventListener):
def on_modified_async(self, view):
syntax = view.settings().get('syntax')
if syntax and 'Markdown' in syntax:
text = view.substr(sublime.Region(0, view.size()))
it = re.finditer(r'^(#{1,6}(?!#))|(-{3,}|={3,})', text, re.M)
title = ''
for m in it:
if re.match(r'^(-{3,}|={3,})$', m.group()):
title_end = m.start() - 1
title_begin = text.rfind('\n', 0, title_end) + 1
title = text[title_begin: title_end]
else:
title_begin = m.end()
title_end = re.search(
'(' + m.group() + ')?(\n|$)', text[title_begin:]).start() + title_begin
title = text[title_begin: title_end]
break
title = title.strip()
if view.file_name() is None and len(title) > 0:
view.set_name(title[:55])