wip suggestions
This commit is contained in:
@@ -7,11 +7,13 @@ import {
|
|||||||
} from './search'
|
} from './search'
|
||||||
import { OmnisearchInFileModal, OmnisearchVaultModal } from './modals'
|
import { OmnisearchInFileModal, OmnisearchVaultModal } from './modals'
|
||||||
import { loadSettings, SettingsTab } from './settings'
|
import { loadSettings, SettingsTab } from './settings'
|
||||||
|
import { OmnisearchSuggest } from './suggestions'
|
||||||
|
|
||||||
export default class OmnisearchPlugin extends Plugin {
|
export default class OmnisearchPlugin extends Plugin {
|
||||||
async onload(): Promise<void> {
|
async onload(): Promise<void> {
|
||||||
await loadSettings(this)
|
await loadSettings(this)
|
||||||
this.addSettingTab(new SettingsTab(this))
|
this.addSettingTab(new SettingsTab(this))
|
||||||
|
this.registerEditorSuggest(new OmnisearchSuggest(app))
|
||||||
|
|
||||||
// Commands to display Omnisearch modals
|
// Commands to display Omnisearch modals
|
||||||
this.addCommand({
|
this.addCommand({
|
||||||
|
|||||||
38
src/suggestions.ts
Normal file
38
src/suggestions.ts
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
import {
|
||||||
|
Editor,
|
||||||
|
EditorSuggest,
|
||||||
|
TFile,
|
||||||
|
type EditorPosition,
|
||||||
|
type EditorSuggestContext,
|
||||||
|
type EditorSuggestTriggerInfo,
|
||||||
|
} from 'obsidian'
|
||||||
|
|
||||||
|
export class OmnisearchSuggest extends EditorSuggest<string> {
|
||||||
|
onTrigger(
|
||||||
|
cursor: EditorPosition,
|
||||||
|
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',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
getSuggestions(context: EditorSuggestContext): string[] | Promise<string[]> {
|
||||||
|
return ['foo', 'bar']
|
||||||
|
}
|
||||||
|
|
||||||
|
renderSuggestion(value: string, el: HTMLElement): void {
|
||||||
|
el.createSpan({ text: value })
|
||||||
|
}
|
||||||
|
|
||||||
|
selectSuggestion(value: string, evt: MouseEvent | KeyboardEvent): void {
|
||||||
|
throw new Error('Method not implemented.')
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user