diff --git a/src/main.ts b/src/main.ts index 91fbf71..2e97d1d 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,4 +1,4 @@ -import { MarkdownView, Plugin, TFile } from 'obsidian' +import { Plugin, TFile } from 'obsidian' import { addToIndex, initGlobalSearchIndex, @@ -21,16 +21,8 @@ export default class OmnisearchPlugin extends Plugin { this.addCommand({ id: 'show-modal-infile', name: 'In-file search', - checkCallback: (checking: boolean) => { - // Can only be shown when a note is active - const view = app.workspace.getActiveViewOfType(MarkdownView) - if (view) { - if (!checking) { - new OmnisearchInFileModal(app, view.file).open() - } - return true - } - return false + editorCallback: (_editor, view) => { + new OmnisearchInFileModal(app, view.file).open() }, }) diff --git a/src/modals.ts b/src/modals.ts index 3af48a3..70c50aa 100644 --- a/src/modals.ts +++ b/src/modals.ts @@ -17,37 +17,27 @@ abstract class OmnisearchModal extends Modal { this.modalEl.tabIndex = -1 // Setup events that can be listened through the event bus - this.modalEl.onkeydown = ev => { - switch (ev.key) { - case 'ArrowDown': - ev.preventDefault() - eventBus.emit('arrow-down') - break - case 'ArrowUp': - ev.preventDefault() - eventBus.emit('arrow-up') - break - case 'Enter': - ev.preventDefault() - if (ev.ctrlKey || ev.metaKey) { - // Open in a new pane - eventBus.emit('ctrl-enter') - } - else if (ev.shiftKey) { - // Create a new note - eventBus.emit('shift-enter') - } - else if (ev.altKey) { - // Expand in-note results - eventBus.emit('alt-enter') - } - else { - // Open in current pane - eventBus.emit('enter') - } - break - } - } + this.scope.register([], 'ArrowDown', () => { + eventBus.emit('arrow-down') + }) + this.scope.register([], 'ArrowUp', () => { + eventBus.emit('arrow-up') + }) + this.scope.register(['Ctrl'], 'Enter', () => { + eventBus.emit('ctrl-enter') // Open in new pane + }) + this.scope.register(['Meta'], 'Enter', () => { + eventBus.emit('ctrl-enter') // Open in new pane (but on Mac) + }) + this.scope.register(['Alt'], 'Enter', () => { + eventBus.emit('alt-enter') // Open the InFile modal + }) + this.scope.register(['Shift'], 'Enter', () => { + eventBus.emit('shift-enter') // Create a new note + }) + this.scope.register([], 'Enter', () => { + eventBus.emit('enter') // Open in current pane + }) } }