diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index abb1296..feae59a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -6,7 +6,7 @@ on: - "*" env: - PLUGIN_NAME: scambier.obsidian-omnisearch + PLUGIN_NAME: omnisearch DIST_FOLDER: ./dist jobs: diff --git a/README.md b/README.md index b1dfbbb..710f528 100644 --- a/README.md +++ b/README.md @@ -20,10 +20,9 @@ Under the hood, it uses the excellent [MiniSearch](https://github.com/lucaong/mi ## Installation -Omnisearch is not yet available on the official community plugins repository. You can either: +[Omnisearch is available on the official Community Plugins repository](https://obsidian.md/plugins?search=omnisearch#). -- Install it through [BRAT](https://github.com/TfTHacker/obsidian42-brat) -- Or download the `scambier.obsidian-omnisearch-x.y.z.zip` file from the [releases page](https://github.com/scambier/obsidian-omnisearch/releases) and unzip it in your `.obsidian/plugins` folder. You'll have to update it manually, though. +You can also install it through [BRAT](https://github.com/TfTHacker/obsidian42-brat) for the future beta releases. ## Usage @@ -64,4 +63,4 @@ For example, if you'd like the usual yellow highlight on search matches, you can ## LICENSE -Omnisearch is licensed under [GPL-3](https://tldrlegal.com/license/gnu-general-public-license-v3-(gpl-3)). \ No newline at end of file +Omnisearch is licensed under [GPL-3](https://tldrlegal.com/license/gnu-general-public-license-v3-(gpl-3)). diff --git a/manifest.json b/manifest.json index 0bfe0d2..f7f61bd 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { - "id": "scambier.obsidian-omnisearch", + "id": "omnisearch", "name": "Omnisearch", - "version": "0.2.5", + "version": "1.0.1", "minAppVersion": "0.14.2", "description": "A search engine that just works", "author": "Simon Cambier", diff --git a/package.json b/package.json index ad14017..8702c26 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "scambier.obsidian-search", - "version": "0.2.5", + "version": "1.0.1", "description": "A search engine for Obsidian", "main": "dist/main.js", "scripts": { diff --git a/src/components/ModalInFile.svelte b/src/components/ModalInFile.svelte index a7ae6f9..83d35d9 100644 --- a/src/components/ModalInFile.svelte +++ b/src/components/ModalInFile.svelte @@ -28,7 +28,9 @@ let selectedIndex = 0 let note: ResultNote | null = null onMount(() => { - searchQuery = lastSearch + if (lastSearch && !searchQuery) { + searchQuery = lastSearch + } eventBus.disable("vault") eventBus.on("infile", "enter", openSelection) @@ -61,7 +63,7 @@ $: { } /** - * Group together close + * Group together close matches to reduce the number of results */ function getGroups(matches: SearchMatch[]): SearchMatch[][] { const groups: SearchMatch[][] = [] diff --git a/src/main.ts b/src/main.ts index 91fbf71..65b63b0 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,4 +1,4 @@ -import { MarkdownView, Plugin, TFile } from 'obsidian' +import { Notice, Plugin, TFile } from 'obsidian' import { addToIndex, initGlobalSearchIndex, @@ -9,6 +9,8 @@ import { OmnisearchInFileModal, OmnisearchVaultModal } from './modals' export default class OmnisearchPlugin extends Plugin { async onload(): Promise { + warningOldVersion() + // Commands to display Omnisearch modals this.addCommand({ id: 'show-modal', @@ -21,16 +23,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() }, }) @@ -65,3 +59,16 @@ export default class OmnisearchPlugin extends Plugin { }) } } + +function warningOldVersion(): void { + const plugins = ((app as any).plugins?.plugins ?? {}) as Record + if (plugins['scambier.omnisearch']) { + new Notice( + `OMNISEARCH +It looks like you have 2 versions of Omnisearch installed. +Please uninstall the old one (up to 0.2.5) and keep the new one (1.0.0+) +(Click to dismiss)`, + 0, + ) + } +} 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 + }) } } diff --git a/versions.json b/versions.json index de02512..e4ffc29 100644 --- a/versions.json +++ b/versions.json @@ -13,5 +13,7 @@ "0.2.2": "0.14.2", "0.2.3": "0.14.2", "0.2.4": "0.14.2", - "0.2.5": "0.14.2" + "0.2.5": "0.14.2", + "1.0.0": "0.14.2", + "1.0.1": "0.14.2" } \ No newline at end of file