From 3978d3d574ad0f1483aa1b76e904eeb8b43d7eef Mon Sep 17 00:00:00 2001 From: Kevin Chabowski Date: Wed, 27 Jun 2012 23:48:24 +0200 Subject: Initial Commit. --- ClipboardStack.py | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 ClipboardStack.py (limited to 'ClipboardStack.py') 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 -- cgit v1.2.3-54-g00ecf