diff --git a/src/main.ts b/src/main.ts index 2927fb7..a68d364 100644 --- a/src/main.ts +++ b/src/main.ts @@ -103,7 +103,7 @@ export default class OmnisearchPlugin extends Plugin { if (isFileIndexable(file.path)) { logDebug('Renaming file', file.path) cacheManager.removeFromLiveCache(oldPath) - cacheManager.addToLiveCache(file.path) + await cacheManager.addToLiveCache(file.path) searchEngine.removeFromPaths([oldPath]) await searchEngine.addFromPaths([file.path]) } @@ -206,14 +206,14 @@ export default class OmnisearchPlugin extends Plugin { // Disable settings.useCache while writing the cache, in case it freezes settings.useCache = false - saveSettings(this) + await saveSettings(this) // Write the cache await searchEngine.writeToCache() // Re-enable settings.caching settings.useCache = true - saveSettings(this) + await saveSettings(this) } console.timeEnd('Omnisearch - Indexing total time') diff --git a/src/notes-index.ts b/src/notes-index.ts index 4a0f5cc..a6bffe5 100644 --- a/src/notes-index.ts +++ b/src/notes-index.ts @@ -43,7 +43,7 @@ export async function refreshIndex(): Promise { const paths = [...notesToReindex].map(n => n.path) if (paths.length) { searchEngine.removeFromPaths(paths) - searchEngine.addFromPaths(paths) + await searchEngine.addFromPaths(paths) notesToReindex.clear() // console.log(`Omnisearch - Reindexed ${paths.length} file(s)`) } diff --git a/src/search/omnisearch.ts b/src/search/omnisearch.ts index a5de141..a91a684 100644 --- a/src/search/omnisearch.ts +++ b/src/search/omnisearch.ts @@ -25,6 +25,12 @@ import { sortBy } from 'lodash-es' const tokenize = (text: string): string[] => { let tokens = text.split(SPACE_OR_PUNCTUATION) + // Split hyphenated tokens + tokens = [...tokens, ...tokens.flatMap(splitHyphens)] + + // Split camelCase tokens into "camel" and "case + tokens = [...tokens, ...tokens.flatMap(splitCamelCase)] + // When enabled, we only use the chsSegmenter, // and not the other custom tokenizers const chsSegmenter = getChsSegmenter() @@ -32,12 +38,8 @@ const tokenize = (text: string): string[] => { tokens = tokens.flatMap(word => chsRegex.test(word) ? chsSegmenter.cut(word) : [word] ) - } else { - // Split camelCase tokens into "camel" and "case - tokens = [...tokens, ...tokens.flatMap(splitCamelCase)] - // Split hyphenated tokens - tokens = [...tokens, ...tokens.flatMap(splitHyphens)] } + return tokens } diff --git a/src/settings.ts b/src/settings.ts index 7ddd502..8bed456 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -507,9 +507,9 @@ export class SettingsTab extends PluginSettingTab { cb.setLimits(1, 5, 0.1) .setValue(settings[key]) .setDynamicTooltip() - .onChange(v => { + .onChange(async (v) => { settings[key] = v - saveSettings(this.plugin) + await saveSettings(this.plugin) }) } } diff --git a/src/tools/utils.ts b/src/tools/utils.ts index 75c43f8..7854847 100644 --- a/src/tools/utils.ts +++ b/src/tools/utils.ts @@ -342,14 +342,15 @@ export function chunkArray(arr: T[], len: number): T[][] { * @param text */ export function splitCamelCase(text: string): string[] { - const split = text + // if no camel case found, do nothing + if (!/[a-z][A-Z]/.test(text)) { + return []; + } + const splittedText = text .replace(/([a-z](?=[A-Z]))/g, '$1 ') .split(' ') - .filter(t => t) - if (split.length > 1) { - return split - } - return [] + .filter(t => t); + return splittedText; } /**