-
-
Save OdatNurd/db3541e64a3d0a457e543aa9d98c6838 to your computer and use it in GitHub Desktop.
import sublime | |
import sublime_plugin | |
class CloseAndDestroyCommand(sublime_plugin.WindowCommand): | |
""" | |
Implement a close_and_destroy command which will close the current | |
terminus view and then destroy the origami pane that it's inside of. | |
""" | |
def run(self): | |
self.window.run_command("terminus_close"); | |
self.window.run_command("destroy_pane", {"direction": "self"}) |
[ | |
// If you use the Chain of Command package, use this binding to chain | |
// the two required commands together. | |
{ "keys": ["ctrl+shift+h"], "command": "chain", | |
"args": { | |
"commands": [ | |
["terminus_close"], | |
["destroy_pane", {"direction": "self"}] | |
] | |
}, | |
"context": [{ "key": "terminus_view"}] | |
}, | |
// If you use the Multicommand package, use this binding to chain the | |
// two required commands together. | |
{ "keys": ["ctrl+shift+h"], "command": "multicommand", | |
"args": { | |
"commands": [ | |
{ | |
"command": "terminus_close" | |
}, | |
{ | |
"command": "destroy_pane", | |
"args": {"direction": "self"} | |
} | |
] | |
}, | |
"context": [{ "key": "terminus_view"}] | |
}, | |
// If you don't use either package, then you can install the sample plugin | |
// and use a binding like this to do the same thing. | |
{ "keys": ["ctrl+shift+h"], "command": "close_and_destroy", | |
"context": [{ "key": "terminus_view"}] | |
}, | |
] |
Hmm, I'm not entirely sure what you mean. If you destroy the current pane (which the above does) you're effectively changing the layout of the window; for example if you had it as two columns, that will make it one.
It sounds like your issue is that if you had a window split in half and with multiple tabs open in both, triggering the pane to destroy moves the files to a different group, or something along those lines?
Thanks! This was really helpful. May I ask what "context": [{ "key": "terminus_view"}]
does?
The context
makes the key binding only available in cases where the condition(s) specified in the the context
have to evaluate to true
in order for the key binding to be active; otherwise it's effectively ignored. In this particular case it makes sure that the key only has an effect when the thing that currently has the input focus is a Terminus view,.
This video covers the topic in more depth: https://youtu.be/Vl8WLZ3EmOc
Thanks for the explanation! I will watch the video
recently encountered an error with the chain of command package code, it only closes a single pane and pushes the rest to the right. is there any way to only close one at a time?