diff options
author | Kevin Chabowski <kevin@kch42.de> | 2012-06-27 23:48:24 +0200 |
---|---|---|
committer | Kevin Chabowski <kevin@kch42.de> | 2012-06-27 23:48:24 +0200 |
commit | 3978d3d574ad0f1483aa1b76e904eeb8b43d7eef (patch) | |
tree | 0f4e3abaa1f1433b9771f47b46f05d737be0d878 /ClipboardStack.py | |
download | ClipboardStack-3978d3d574ad0f1483aa1b76e904eeb8b43d7eef.tar.gz ClipboardStack-3978d3d574ad0f1483aa1b76e904eeb8b43d7eef.tar.bz2 ClipboardStack-3978d3d574ad0f1483aa1b76e904eeb8b43d7eef.zip |
Initial Commit.
Diffstat (limited to 'ClipboardStack.py')
-rw-r--r-- | ClipboardStack.py | 49 |
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 |