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 { import {
Editor, Editor,
EditorSuggest, EditorSuggest,
@@ -13,15 +15,27 @@ export class OmnisearchSuggest extends EditorSuggest<string> {
editor: Editor, editor: Editor,
file: TFile, file: TFile,
): EditorSuggestTriggerInfo | null { ): EditorSuggestTriggerInfo | null {
const last2Chars = editor.getLine(cursor.line).slice(-2, cursor.ch) const line = editor.getLine(cursor.line)
if (last2Chars === '@@') { // not inside the bracket
return { if (/\[@.+\]/.test(line.slice(0, cursor.ch))) return null
start: cursor, if (!/\[@.*/.test(line)) return null
end: cursor,
query: 'foo', const match = line.match(/\[@([^\]]*)\]?/) // [@(foo bar)] baz
} if (!match) return null
const [_, query] = match
if (!query) {
return null
} }
return null const matchData = {
end: cursor,
start: {
ch: (match.index ?? 0) + 4,
line: cursor.line,
},
query,
}
return matchData
} }
getSuggestions(context: EditorSuggestContext): string[] | Promise<string[]> { getSuggestions(context: EditorSuggestContext): string[] | Promise<string[]> {