Support Escape out of multi-cursor mode (#833)

This commit is contained in:
Jonatan Kłosko 2021-12-28 22:40:24 +01:00 committed by GitHub
parent 4c9b1f374e
commit 66390dc677
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -305,21 +305,8 @@ function handleDocumentKeyDown(hook, event) {
keyBuffer.reset();
if (key === "Escape") {
const monacoInputOpen = !!event.target.closest(".monaco-inputbox");
const editor = event.target.closest(".monaco-editor.focused");
const completionBoxOpen = !!(
editor &&
editor.querySelector(".editor-widget.parameter-hints-widget.visible")
);
const signatureDetailsOpen = !!(
editor && editor.querySelector(".editor-widget.suggest-widget.visible")
);
// Ignore Escape if it's supposed to close some Monaco input
// (like the find/replace box), or an intellisense widget
if (!monacoInputOpen && !completionBoxOpen && !signatureDetailsOpen) {
// Ignore Escape if it's supposed to close an editor widget
if (!escapesMonacoWidget(event)) {
escapeInsertMode(hook);
}
} else if (cmd && shift && !alt && key === "Enter") {
@ -411,6 +398,36 @@ function handleDocumentKeyDown(hook, event) {
}
}
function escapesMonacoWidget(event) {
// Escape pressed in an editor input
if (event.target.closest(".monaco-inputbox")) {
return true;
}
const editor = event.target.closest(".monaco-editor.focused");
if (!editor) {
return false;
}
// Completion box open
if (editor.querySelector(".editor-widget.parameter-hints-widget.visible")) {
return true;
}
// Signature details open
if (editor.querySelector(".editor-widget.suggest-widget.visible")) {
return true;
}
// Multi-cursor selection enabled
if (editor.querySelectorAll(".cursor").length > 1) {
return true;
}
return false;
}
/**
* Focuses/blurs a cell when the user clicks somewhere.
*