Created
August 11, 2012 23:14
-
-
Save nilium/3327730 to your computer and use it in GitHub Desktop.
A Sublime Text 2 plugin to enable running multiple commands in any given context from a single key binding.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[ | |
{ | |
"keys": ["ctrl+w"], | |
"command": "run_multiple", | |
"args": { | |
"commands": [ | |
{"command": "find_under_expand", "args": null, "context": "window"}, | |
{"command": "show_panel", "args": {"panel": "find"}, "context": "window"} | |
] | |
} | |
} | |
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import sublime, sublime_plugin | |
# Takes an array of commands (same as those you'd provide to a key binding) with | |
# an optional context (defaults to view commands) & runs each command in order. | |
# Valid contexts are 'text', 'window', and 'app' for running a TextCommand, | |
# WindowCommands, or ApplicationCommand respectively. | |
class RunMultipleCommand(sublime_plugin.TextCommand): | |
def exec_command(self, command): | |
if not 'command' in command: | |
raise Exception('No command name provided.') | |
args = None | |
if 'args' in command: | |
args = command['args'] | |
# default context is the view since it's easiest to get the other contexts | |
# from the view | |
context = self.view | |
if 'context' in command: | |
context_name = command['context'] | |
if context_name == 'window': | |
context = context.window() | |
elif context_name == 'app': | |
context = sublime | |
elif context_name == 'text': | |
pass | |
else: | |
raise Exception('Invalid command context "'+context_name+'".') | |
# skip args if not needed | |
if args is None: | |
context.run_command(command['command']) | |
else: | |
context.run_command(command['command'], args) | |
def run(self, edit, commands = None): | |
if commands is None: | |
return # not an error | |
for command in commands: | |
self.exec_command(command) |
Awesome gist.
Thank you very much for sharing.
Works great, very helpful. Thanks!
Excellent!! Even works in ST3, just tested on Build 3059 :)
Works incredibly on ST3, thanks!
Thank you so much!
it possible to add a scope to which syntax the command should run at ?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This was really helpful.
Thanks!