#53 - Ignoring diacritics

This commit is contained in:
Simon Cambier
2022-06-04 18:59:19 +02:00
parent f679f3bde9
commit ca808502eb
3 changed files with 31 additions and 2 deletions

View File

@@ -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',

View File

@@ -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,

View File

@@ -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, '')
}