fix(editor): restore snippet Tab navigation after completion

Closes #5892
This commit is contained in:
t8y2 committed 2026-08-11 16:52:08 +08:00
1 parent 691f24b286
commit 20b992ea02
2 files changed
+15 -12

No files matched your search

@@ -742,8 +742,7 @@ function editorIndentUnit(): string {
}
function handleTab(view: EditorViewType): boolean {
if (codeMirrorCompletionStatus?.(view.state)) return false;
return performNormalTab(view);
return acceptCompletionOrNextSnippetField(view) || performNormalTab(view);
}
function performNormalTab(view: EditorViewType): boolean {
@@ -1853,11 +1852,8 @@ function extendQueryEditorSelectionForView(currentView: EditorViewType): boolean
function acceptCompletionOrNextSnippetField(view: EditorViewType): boolean {
const completionStatus = codeMirrorCompletionStatus?.(view.state) ?? null;
if (completionStatus === "active" && (codeMirrorAcceptCompletion?.(view) ?? false)) return true;
// Snippet fields keep their normal immediate Tab priority when completion
// is pending or still inside CodeMirror's interaction delay.
if (codeMirrorNextSnippetField?.(view)) return true;
if (completionStatus) return waitForCompletionTab(view);
return false;
return codeMirrorNextSnippetField?.(view) ?? false;
}
function clearPendingCompletionTab() {
@@ -1879,7 +1875,6 @@ function waitForCompletionTab(view: EditorViewType): boolean {
const completionStatus = codeMirrorCompletionStatus?.(view.state) ?? null;
if (completionStatus === "active" && (codeMirrorAcceptCompletion?.(view) ?? false)) return;
if (codeMirrorNextSnippetField?.(view)) return;
if (completionStatus && Date.now() - startedAt < COMPLETION_TAB_MAX_WAIT_MS) {
pendingCompletionTabTimer = setTimeout(retry, COMPLETION_TAB_RETRY_DELAY_MS);
return;