summaryrefslogtreecommitdiff
path: root/ClipboardStack.py
diff options
context:
space:
mode:
Diffstat (limited to 'ClipboardStack.py')
-rw-r--r--ClipboardStack.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/ClipboardStack.py b/ClipboardStack.py
new file mode 100644
index 0000000..7b37901
--- /dev/null
+++ b/ClipboardStack.py
@@ -0,0 +1,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.") \ No newline at end of file