Extract completion function
This commit is contained in:
parent
973f6e6ae8
commit
d09288542b
|
@ -244,6 +244,36 @@
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function handleCompletions(
|
||||||
|
view: EditorView,
|
||||||
|
from: number,
|
||||||
|
to: number,
|
||||||
|
insert: string
|
||||||
|
) {
|
||||||
|
if (jsBindingWrapping && insert === "$") {
|
||||||
|
let { text } = view.state.doc.lineAt(from)
|
||||||
|
|
||||||
|
const left = from ? text.substring(0, from) : ""
|
||||||
|
const right = to ? text.substring(to) : ""
|
||||||
|
const wrap = !left.includes('$("') || !right.includes('")')
|
||||||
|
const tr = view.state.update(
|
||||||
|
{
|
||||||
|
changes: [{ from, insert: wrap ? '$("")' : "$" }],
|
||||||
|
selection: {
|
||||||
|
anchor: from + (wrap ? 3 : 1),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
scrollIntoView: true,
|
||||||
|
userEvent: "input.type",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
view.dispatch(tr)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// None of this is reactive, but it never has been, so we just assume most
|
// None of this is reactive, but it never has been, so we just assume most
|
||||||
// config flags aren't changed at runtime
|
// config flags aren't changed at runtime
|
||||||
// TODO: work out type for base
|
// TODO: work out type for base
|
||||||
|
@ -262,32 +292,7 @@
|
||||||
: "autocomplete-option",
|
: "autocomplete-option",
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
complete.push(
|
complete.push(EditorView.inputHandler.of(handleCompletions))
|
||||||
EditorView.inputHandler.of((view, from, to, insert) => {
|
|
||||||
if (jsBindingWrapping && insert === "$") {
|
|
||||||
let { text } = view.state.doc.lineAt(from)
|
|
||||||
|
|
||||||
const left = from ? text.substring(0, from) : ""
|
|
||||||
const right = to ? text.substring(to) : ""
|
|
||||||
const wrap = !left.includes('$("') || !right.includes('")')
|
|
||||||
const tr = view.state.update(
|
|
||||||
{
|
|
||||||
changes: [{ from, insert: wrap ? '$("")' : "$" }],
|
|
||||||
selection: {
|
|
||||||
anchor: from + (wrap ? 3 : 1),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
scrollIntoView: true,
|
|
||||||
userEvent: "input.type",
|
|
||||||
}
|
|
||||||
)
|
|
||||||
view.dispatch(tr)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
})
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// JS only plugins
|
// JS only plugins
|
||||||
|
|
Loading…
Reference in New Issue