diff --git a/manifest-beta.json b/manifest-beta.json
index e4dcfb4..ef569ca 100644
--- a/manifest-beta.json
+++ b/manifest-beta.json
@@ -1,7 +1,7 @@
{
"id": "omnisearch",
"name": "Omnisearch",
- "version": "1.11.1",
+ "version": "1.12.2",
"minAppVersion": "1.0.0",
"description": "A search engine that just works",
"author": "Simon Cambier",
diff --git a/manifest.json b/manifest.json
index 96adfa2..290aefc 100644
--- a/manifest.json
+++ b/manifest.json
@@ -1,7 +1,7 @@
{
"id": "omnisearch",
"name": "Omnisearch",
- "version": "1.11.1",
+ "version": "1.12.2",
"minAppVersion": "1.0.0",
"description": "A search engine that just works",
"author": "Simon Cambier",
diff --git a/package.json b/package.json
index 4d604b3..07d033e 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "scambier.obsidian-search",
- "version": "1.12.1-beta.1",
+ "version": "1.12.2",
"description": "A search engine for Obsidian",
"main": "dist/main.js",
"scripts": {
diff --git a/src/search/omnisearch.ts b/src/search/omnisearch.ts
index a057604..902607d 100644
--- a/src/search/omnisearch.ts
+++ b/src/search/omnisearch.ts
@@ -190,9 +190,11 @@ export class Omnisearch {
// Filter query results to only keep files that match query.extensions (if any)
if (query.extensions.length) {
- results = results.filter(r =>
- query.extensions.some(e => r.id.endsWith(e))
- )
+ results = results.filter(r => {
+ // ".can" should match ".canvas"
+ const ext = '.' + r.id.split('.').pop()
+ return query.extensions.some(e => ext.startsWith(e))
+ })
}
// If the query does not return any result,
diff --git a/src/tools/utils.ts b/src/tools/utils.ts
index 66ee8d2..73eed56 100644
--- a/src/tools/utils.ts
+++ b/src/tools/utils.ts
@@ -27,7 +27,12 @@ export function highlighter(str: string): string {
}
export function highlighterGroups(...args: any[]) {
- if (args[1] && args[2])
+ if (
+ args[1] !== null &&
+ args[1] !== undefined &&
+ args[2] !== null &&
+ args[2] !== undefined
+ )
return `${args[1]}${args[2]}`
return '<no content>'
}
@@ -63,8 +68,9 @@ export function wait(ms: number): Promise {
}
// https://stackoverflow.com/a/3561711
+// but we enclose special chars in brackets to avoid them being interpreted as regex
export function escapeRegex(str: string): string {
- return str.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&')
+ return str.replace(/[-/\\^$*+?.()|[\]{}]/g, '[$&]')
}
/**
@@ -88,7 +94,7 @@ export function stringsToRegex(strings: string[]): RegExp {
// Default word split is not applied if the user uses the cm-chs-patch plugin
const joined =
'(' +
- (getChsSegmenter() ? '' : SPACE_OR_PUNCTUATION.source) +
+ (getChsSegmenter() ? '' : `^|${SPACE_OR_PUNCTUATION.source}`) +
')' +
'(' +
strings.map(s => escapeRegex(s)).join('|') +
diff --git a/versions.json b/versions.json
index 83402db..31daaf8 100644
--- a/versions.json
+++ b/versions.json
@@ -95,5 +95,9 @@
"1.10.1": "1.0.0",
"1.11.0-beta.1": "1.0.0",
"1.11.0": "1.0.0",
- "1.11.1": "1.0.0"
+ "1.11.1": "1.0.0",
+ "1.12.0": "1.0.0",
+ "1.12.1-beta.1": "1.0.0",
+ "1.12.1": "1.0.0",
+ "1.12.2": "1.0.0"
}
\ No newline at end of file