Merge branch 'master' into feature/25-search-filters
This commit is contained in:
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
@@ -6,7 +6,7 @@ on:
|
||||
- "*"
|
||||
|
||||
env:
|
||||
PLUGIN_NAME: scambier.obsidian-omnisearch
|
||||
PLUGIN_NAME: omnisearch
|
||||
DIST_FOLDER: ./dist
|
||||
|
||||
jobs:
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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[][] = []
|
||||
|
||||
29
src/main.ts
29
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<void> {
|
||||
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<string, any>
|
||||
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,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
Reference in New Issue
Block a user