refactor: pass current token position to auto completers on codemirror

This commit is contained in:
Andrew Bastin
2021-09-08 05:36:46 +05:30
parent f64ff58dbc
commit b016d3fd9d
2 changed files with 14 additions and 5 deletions

View File

@@ -27,6 +27,7 @@ import "codemirror/addon/dialog/dialog"
import { watch, onMounted, ref, Ref, useContext } from "@nuxtjs/composition-api"
import { LinterDefinition } from "./linting/linter"
import { Completer } from "./completion"
import { convertIndexToLineCh } from "./utils"
type CodeMirrorOptions = {
extendedEditorConfig: Omit<CodeMirror.EditorConfiguration, "value">
@@ -88,10 +89,14 @@ export function useCodemirror(
const pos = editor.getCursor()
const text = editor.getValue()
const result = await options.completer!(text, pos)
const token = editor.getTokenAt(pos)
console.log("complete!")
console.log(result)
const result = await options.completer!(text, pos, {
start: convertIndexToLineCh(text, token.start),
end: convertIndexToLineCh(text, token.end),
})
if (!result) return null
return <CodeMirror.Hints>{
from: result.start,

View File

@@ -29,5 +29,9 @@ export type Completer = (
/**
* Position where the completer is fired
*/
completePos: { line: number; ch: number }
) => Promise<CompleterResult>
completePos: { line: number; ch: number },
completeTokenLocation: {
start: { line: number; ch: number }
end: { line: number; ch: number }
}
) => Promise<CompleterResult | null>