#53 - Ignoring diacritics
This commit is contained in:
@@ -10,6 +10,7 @@ import {
|
||||
import {
|
||||
extractHeadingsFromCache,
|
||||
getAliasesFromMetadata,
|
||||
removeDiacritics,
|
||||
stringsToRegex,
|
||||
stripMarkdownCharacters,
|
||||
wait,
|
||||
@@ -48,6 +49,8 @@ export async function initGlobalSearchIndex(): Promise<void> {
|
||||
resetNotesCache()
|
||||
minisearchInstance = new MiniSearch({
|
||||
tokenize,
|
||||
processTerm: term =>
|
||||
settings.ignoreDiacritics ? removeDiacritics(term) : term,
|
||||
idField: 'path',
|
||||
fields: [
|
||||
'basename',
|
||||
|
||||
@@ -11,6 +11,7 @@ interface WeightingSettings {
|
||||
export interface OmnisearchSettings extends WeightingSettings {
|
||||
respectExcluded: boolean
|
||||
reindexInRealTime: boolean
|
||||
ignoreDiacritics: boolean
|
||||
showIndexingNotices: boolean
|
||||
showShortName: boolean
|
||||
CtrlJK: boolean
|
||||
@@ -68,6 +69,19 @@ export class SettingsTab extends PluginSettingTab {
|
||||
}),
|
||||
)
|
||||
|
||||
// Ignore diacritics
|
||||
// new Setting(containerEl)
|
||||
// .setName('Ignore diacritics')
|
||||
// .setDesc(
|
||||
// 'Normalize diacritics in search terms. Words like "brûlée" or "žluťoučký" will be indexed as "brulee" and "zlutoucky". Needs a restart to take effect.',
|
||||
// )
|
||||
// .addToggle(toggle =>
|
||||
// toggle.setValue(settings.ignoreDiacritics).onChange(async v => {
|
||||
// settings.ignoreDiacritics = v
|
||||
// await saveSettings(this.plugin)
|
||||
// }),
|
||||
// )
|
||||
|
||||
// #endregion Behavior
|
||||
|
||||
// #region User Interface
|
||||
@@ -129,7 +143,9 @@ export class SettingsTab extends PluginSettingTab {
|
||||
new Setting(containerEl).setName('Shortcuts').setHeading()
|
||||
|
||||
new Setting(containerEl)
|
||||
.setName('Use [Ctrl/Cmd]+j/k to navigate up/down in the results, if Vim mode is enabled')
|
||||
.setName(
|
||||
'Use [Ctrl/Cmd]+j/k to navigate up/down in the results, if Vim mode is enabled',
|
||||
)
|
||||
.addToggle(toggle =>
|
||||
toggle.setValue(settings.CtrlJK).onChange(async v => {
|
||||
settings.CtrlJK = v
|
||||
@@ -138,7 +154,9 @@ export class SettingsTab extends PluginSettingTab {
|
||||
)
|
||||
|
||||
new Setting(containerEl)
|
||||
.setName('Use [Ctrl/Cmd]+n/p to navigate up/down in the results, if Vim mode is enabled')
|
||||
.setName(
|
||||
'Use [Ctrl/Cmd]+n/p to navigate up/down in the results, if Vim mode is enabled',
|
||||
)
|
||||
.addToggle(toggle =>
|
||||
toggle.setValue(settings.CtrlNP).onChange(async v => {
|
||||
settings.CtrlNP = v
|
||||
@@ -163,6 +181,7 @@ export class SettingsTab extends PluginSettingTab {
|
||||
export const DEFAULT_SETTINGS: OmnisearchSettings = {
|
||||
respectExcluded: true,
|
||||
reindexInRealTime: false,
|
||||
ignoreDiacritics: true,
|
||||
|
||||
showIndexingNotices: false,
|
||||
showShortName: false,
|
||||
|
||||
@@ -143,3 +143,10 @@ export function getAliasesFromMetadata(
|
||||
.map(s => (s ? s.trim() : s))
|
||||
.filter(s => !!s)
|
||||
}
|
||||
|
||||
/**
|
||||
* https://stackoverflow.com/a/37511463
|
||||
*/
|
||||
export function removeDiacritics(str: string): string {
|
||||
return str.normalize('NFD').replace(/\p{Diacritic}/gu, '')
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user