diff --git a/src/components/modals.ts b/src/components/modals.ts index aa86114..238114f 100644 --- a/src/components/modals.ts +++ b/src/components/modals.ts @@ -38,7 +38,7 @@ abstract class OmnisearchModal extends Modal { ] as const) { for (const modifier of ['Ctrl', 'Mod'] as const) { this.scope.register([modifier], key.k, _e => { - if (this.app.vault.getConfig('vimMode')) { + if (settings.vimLikeNavigationShortcut) { // e.preventDefault() eventBus.emit('arrow-' + key.dir) } @@ -53,7 +53,7 @@ abstract class OmnisearchModal extends Modal { ] as const) { for (const modifier of ['Ctrl', 'Mod'] as const) { this.scope.register([modifier], key.k, _e => { - if (this.app.vault.getConfig('vimMode')) { + if (settings.vimLikeNavigationShortcut) { // e.preventDefault() eventBus.emit('arrow-' + key.dir) } diff --git a/src/settings.ts b/src/settings.ts index 8bed456..938ad67 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -56,6 +56,7 @@ export interface OmnisearchSettings extends WeightingSettings { splitCamelCase: boolean openInNewPane: boolean verboseLogging: boolean + vimLikeNavigationShortcut: boolean fuzziness: '0' | '1' | '2' } @@ -263,6 +264,7 @@ export class SettingsTab extends PluginSettingTab { }) ) + // Open in new pane new Setting(containerEl) .setName('Open in new pane') .setDesc( @@ -275,6 +277,19 @@ export class SettingsTab extends PluginSettingTab { }) ) + // Set Vim like navigation keys + new Setting(containerEl) + .setName('Set Vim like navigation keys') + .setDesc( + 'Navigate down the results with Ctrl/⌘ + J/N, or navigate up with Ctrl/⌘ + K/P' + ) + .addToggle(toggle => + toggle.setValue(settings.vimLikeNavigationShortcut).onChange(async v => { + settings.vimLikeNavigationShortcut = v + await saveSettings(this.plugin) + }) + ) + // Fuzziness new Setting(containerEl) .setName('Fuzziness') @@ -524,6 +539,7 @@ export const DEFAULT_SETTINGS: OmnisearchSettings = { unsupportedFilesIndexing: 'no', splitCamelCase: false, openInNewPane: false, + vimLikeNavigationShortcut: app.vault.getConfig('vimMode') as boolean, ribbonIcon: true, showExcerpt: true,