-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathGotoLastEdit.py
63 lines (54 loc) · 2.37 KB
/
GotoLastEdit.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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import sublime
import sublime_plugin
class LastEditLineCommand(sublime_plugin.TextCommand):
def run(self, edit):
if (len(CaptureEditing.last_view) > 0 and self.view.id() != CaptureEditing.last_view[-1] and CaptureEditing.last_view[-1] > 0):
sublime.active_window().focus_view(CaptureEditing.view_refs[CaptureEditing.last_view[-1]])
CaptureEditing.last_view.pop(-1)
if len(CaptureEditing.last_line[self.view.id()]) > CaptureEditing.posn[self.view.id()]:
self.view.show(self.view.line(CaptureEditing.last_line[self.view.id()][-(CaptureEditing.posn[self.view.id()] + 1)]))
self.view.sel().clear()
self.view.sel().add(self.view.line(CaptureEditing.last_line[self.view.id()][-(CaptureEditing.posn[self.view.id()] + 1)]))
CaptureEditing.posn[self.view.id()] = (CaptureEditing.posn[self.view.id()] + 1) % 5
else:
CaptureEditing.posn[self.view.id()] = 0
class CaptureEditing(sublime_plugin.EventListener):
last_line = {}
prev_line = {}
posn = {}
last_view = []
view_refs = {}
def on_modified(self, view):
sel = view.sel()[0]
curr_line, _ = view.rowcol(sel.begin())
CE = CaptureEditing
if CE.prev_line[view.id()] == -1 or curr_line != CE.prev_line[view.id()]:
CE.prev_line[view.id()] = curr_line
CE.last_line[view.id()].append(sel.begin())
if len(CE.last_line[view.id()]) > 10:
CE.last_line[view.id()].pop(0)
CE.last_view.append(view.id())
if len(CE.last_view) > 10:
CE.last_view.pop(0)
def on_close(self, view):
CE = CaptureEditing
del CE.last_line[view.id()]
del CE.prev_line[view.id()]
del CE.view_refs[view.id()]
del CE.posn[view.id()]
def on_new(self, view):
CE = CaptureEditing
CE.last_line[view.id()] = []
CE.prev_line[view.id()] = -1
CE.posn[view.id()] = 0
CE.view_refs[view.id()] = view
def on_activated(self, view):
CE = CaptureEditing
if view.id() not in CE.last_line:
CE.last_line[view.id()] = []
if view.id() not in CE.prev_line:
CE.prev_line[view.id()] = -1
if view.id() not in CE.posn:
CE.posn[view.id()] = 0
if view.id() not in CE.view_refs:
CE.view_refs[view.id()] = view