Added custom tab keybinding to support autocomplete and default editor tab behaviour

This commit is contained in:
Dean 2023-07-03 12:48:17 +01:00
parent bc47f5b0b2
commit 64216f61a9
1 changed files with 21 additions and 2 deletions

View File

@ -7,6 +7,8 @@
closeBrackets, closeBrackets,
completionKeymap, completionKeymap,
closeBracketsKeymap, closeBracketsKeymap,
acceptCompletion,
completionStatus,
} from "@codemirror/autocomplete" } from "@codemirror/autocomplete"
import { import {
EditorView, EditorView,
@ -34,7 +36,8 @@
defaultKeymap, defaultKeymap,
historyKeymap, historyKeymap,
history, history,
indentWithTab, indentMore,
indentLess,
} from "@codemirror/commands" } from "@codemirror/commands"
import { Compartment } from "@codemirror/state" import { Compartment } from "@codemirror/state"
import { javascript } from "@codemirror/lang-javascript" import { javascript } from "@codemirror/lang-javascript"
@ -107,6 +110,22 @@
let isDark = !currentTheme.includes("light") let isDark = !currentTheme.includes("light")
let themeConfig = new Compartment() let themeConfig = new Compartment()
const indentWithTabCustom = {
key: "Tab",
run: view => {
if (completionStatus(view.state) == "active") {
acceptCompletion(view)
return true
}
indentMore(view)
return true
},
shift: view => {
indentLess(view)
return true
},
}
const buildKeymap = () => { const buildKeymap = () => {
const baseMap = [ const baseMap = [
...closeBracketsKeymap, ...closeBracketsKeymap,
@ -114,7 +133,7 @@
...historyKeymap, ...historyKeymap,
...foldKeymap, ...foldKeymap,
...completionKeymap, ...completionKeymap,
indentWithTab, indentWithTabCustom,
] ]
return baseMap return baseMap
} }