EditiorSuggest: extracting query from [@query]

This commit is contained in:
Simon Cambier
2022-06-19 21:36:20 +02:00
parent 22576acf55
commit f108e2690f

View File

@@ -1,3 +1,5 @@
// Parts of this code come from https://github.com/valentine195/obsidian-admonition/blob/e4aa52fe04bb68a5483421ef98414c2617d666b7/src/suggest/suggest.ts
import {
Editor,
EditorSuggest,
@@ -13,16 +15,28 @@ export class OmnisearchSuggest extends EditorSuggest<string> {
editor: Editor,
file: TFile,
): EditorSuggestTriggerInfo | null {
const last2Chars = editor.getLine(cursor.line).slice(-2, cursor.ch)
if (last2Chars === '@@') {
return {
start: cursor,
end: cursor,
query: 'foo',
}
}
const line = editor.getLine(cursor.line)
// not inside the bracket
if (/\[@.+\]/.test(line.slice(0, cursor.ch))) return null
if (!/\[@.*/.test(line)) return null
const match = line.match(/\[@([^\]]*)\]?/) // [@(foo bar)] baz
if (!match) return null
const [_, query] = match
if (!query) {
return null
}
const matchData = {
end: cursor,
start: {
ch: (match.index ?? 0) + 4,
line: cursor.line,
},
query,
}
return matchData
}
getSuggestions(context: EditorSuggestContext): string[] | Promise<string[]> {
return ['foo', 'bar']