Skip to content

Instantly share code, notes, and snippets.

@OdatNurd
Created March 4, 2021 23:16
Show Gist options
  • Save OdatNurd/db3541e64a3d0a457e543aa9d98c6838 to your computer and use it in GitHub Desktop.
Save OdatNurd/db3541e64a3d0a457e543aa9d98c6838 to your computer and use it in GitHub Desktop.
Closing a Terminus view and pane at the same time
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"}]
},
]
@cbonet
Copy link

cbonet commented Feb 23, 2022

Thanks! This was really helpful. May I ask what "context": [{ "key": "terminus_view"}] does?

@OdatNurd
Copy link
Author

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

@cbonet
Copy link

cbonet commented Feb 23, 2022

Thanks for the explanation! I will watch the video

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment