summaryrefslogtreecommitdiff
path: root/ClipboardStack.py
blob: 7b3790199083670a77f1579426073b193a1c0804 (plain)
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
import sublime, sublime_plugin

clipboard_stack = []

class ClipboardStackPushCommand(sublime_plugin.WindowCommand):
	def run(self):
		global clipboard_stack
		clipcontent = sublime.get_clipboard()
		clipboard_stack.append(clipcontent)
		r = repr(clipcontent)[1:-1]
		sublime.status_message("\'{content}{ellipsis}\' pushed to stack ({num} elements total).".format(content=r[:10], ellipsis="..." if len(r) > 10 else "", num=len(clipboard_stack)))

class ClipboardStackPopCommand(sublime_plugin.WindowCommand):
	def run(self):
		global clipboard_stack
		if len(clipboard_stack) == 0:
			sublime.status_message("Error: Clipboard stack is empty, can not pop.")
		else:
			el = clipboard_stack.pop()
			r = repr(el)[1:-1]
			sublime.set_clipboard(el)
			sublime.status_message("Clipboard is now '{content}{ellipsis}', stack has now {num} elements.".format(content=r[:10], ellipsis="..." if len(r) > 10 else "", num=len(clipboard_stack)))

class ClipboardStackSelectCommand(sublime_plugin.WindowCommand):
	def run(self):
		global clipboard_stack
		if len(clipboard_stack) == 0:
			sublime.status_message("Stack is empty.")
		
		self.window.show_quick_panel([ repr(x)[1:-1] for x in clipboard_stack[::-1] ], self.qp_response)
	
	def qp_response(self, idx):
		global clipboard_stack
		if idx == -1:
			return
		
		addr = -(idx+1)
		
		el = clipboard_stack[addr]
		r = repr(el)[1:-1]
		clipboard_stack = clipboard_stack[:addr] + clipboard_stack[addr+1:]
		sublime.set_clipboard(el)
		sublime.status_message("Clipboard is now '{content}{ellipsis}', stack has now {num} elements.".format(content=r[:10], ellipsis="..." if len(r) > 10 else "", num=len(clipboard_stack)))

class ClipboardStackClearCommand(sublime_plugin.WindowCommand):
	def run(self):
		global clipboard_stack
		clipboard_stack = []
		sublime.status_message("Clipboard stack is now empty.")