-
Notifications
You must be signed in to change notification settings - Fork 3
/
arrow_complete.py
36 lines (31 loc) · 1016 Bytes
/
arrow_complete.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
29
30
31
32
33
34
35
36
import sublime
import sublime_plugin
import re
ARROW = re.compile(r"(<?)([-=]{1,2})(>?)$")
arrow_map = {
"<-": "\\leftarrow",
"<--": "\\longleftarrow",
"->": "\\rightarrow",
"-->": "\\longrightarrow",
"<->": "\\leftrightarrow",
"<-->": "\\longleftrightarrow",
"<=": "\\Leftarrow",
"<==": "\\Longleftarrow",
"=>": "\\Rightarrow",
"==>": "\\Longrightarrow",
"<=>": "\\Leftrightarrow",
"<==>": "\\Longleftrightarrow"
}
class LatexyzArrowCompleteCommand(sublime_plugin.TextCommand):
def run(self, edit):
view = self.view
sel = view.sel()
for s in reversed(sel):
if not s.empty():
return
pt = s.end()
arrow = view.substr(sublime.Region(pt - 4, pt))
m = ARROW.search(arrow)
if m and (m.group(1) or m.group(3)) and m.group(0) in arrow_map:
arr = arrow_map[m.group(0)]
view.replace(edit, sublime.Region(pt - len(m.group(0)), pt), arr)