Fixed #7
The freeze was caused by the remove-markdown plugin, that somehow doesn't like tables.
This commit is contained in:
@@ -30,7 +30,7 @@
|
|||||||
"typescript": "4.4.4"
|
"typescript": "4.4.4"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"minisearch": "^5.0.0-beta1",
|
"markdown-to-txt": "^2.0.0",
|
||||||
"remove-markdown": "^0.3.0"
|
"minisearch": "^5.0.0-beta1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
30
pnpm-lock.yaml
generated
30
pnpm-lock.yaml
generated
@@ -12,17 +12,17 @@ specifiers:
|
|||||||
eslint-plugin-import: 2.22.1
|
eslint-plugin-import: 2.22.1
|
||||||
eslint-plugin-node: 11.1.0
|
eslint-plugin-node: 11.1.0
|
||||||
eslint-plugin-promise: 5.0.0
|
eslint-plugin-promise: 5.0.0
|
||||||
|
markdown-to-txt: ^2.0.0
|
||||||
minisearch: ^5.0.0-beta1
|
minisearch: ^5.0.0-beta1
|
||||||
obsidian: latest
|
obsidian: latest
|
||||||
prettier: ^2.6.2
|
prettier: ^2.6.2
|
||||||
prettier-eslint: ^13.0.0
|
prettier-eslint: ^13.0.0
|
||||||
remove-markdown: ^0.3.0
|
|
||||||
tslib: 2.3.1
|
tslib: 2.3.1
|
||||||
typescript: 4.4.4
|
typescript: 4.4.4
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
|
markdown-to-txt: 2.0.0
|
||||||
minisearch: 5.0.0-beta1
|
minisearch: 5.0.0-beta1
|
||||||
remove-markdown: 0.3.0
|
|
||||||
|
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/node': 16.11.26
|
'@types/node': 16.11.26
|
||||||
@@ -1490,10 +1490,18 @@ packages:
|
|||||||
path-exists: 3.0.0
|
path-exists: 3.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/lodash.escape/4.0.1:
|
||||||
|
resolution: {integrity: sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg=}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/lodash.merge/4.6.2:
|
/lodash.merge/4.6.2:
|
||||||
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
|
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/lodash.unescape/4.0.1:
|
||||||
|
resolution: {integrity: sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/lodash/4.17.21:
|
/lodash/4.17.21:
|
||||||
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
|
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
|
||||||
dev: true
|
dev: true
|
||||||
@@ -1517,6 +1525,20 @@ packages:
|
|||||||
yallist: 4.0.0
|
yallist: 4.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/markdown-to-txt/2.0.0:
|
||||||
|
resolution: {integrity: sha512-H5DSAY6frUQ6/CR0nJMlGCEuSA3pvi14dYfICJPKLAvd/rDk6eb+cj84zU5XTNYzECyCcujoAL1PHhjmOgeqUw==}
|
||||||
|
dependencies:
|
||||||
|
lodash.escape: 4.0.1
|
||||||
|
lodash.unescape: 4.0.1
|
||||||
|
marked: 3.0.8
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/marked/3.0.8:
|
||||||
|
resolution: {integrity: sha512-0gVrAjo5m0VZSJb4rpL59K1unJAMb/hm8HRXqasD8VeC8m91ytDPMritgFSlKonfdt+rRYYpP/JfLxgIX8yoSw==}
|
||||||
|
engines: {node: '>= 12'}
|
||||||
|
hasBin: true
|
||||||
|
dev: false
|
||||||
|
|
||||||
/merge2/1.4.1:
|
/merge2/1.4.1:
|
||||||
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
|
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
|
||||||
engines: {node: '>= 8'}
|
engines: {node: '>= 8'}
|
||||||
@@ -1779,10 +1801,6 @@ packages:
|
|||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/remove-markdown/0.3.0:
|
|
||||||
resolution: {integrity: sha1-XktmdJOpNXlyjz1S7MHbnKUF3Jg=}
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/require-relative/0.8.7:
|
/require-relative/0.8.7:
|
||||||
resolution: {integrity: sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=}
|
resolution: {integrity: sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=}
|
||||||
dev: true
|
dev: true
|
||||||
|
|||||||
24
src/main.ts
24
src/main.ts
@@ -1,6 +1,6 @@
|
|||||||
import { Notice, Plugin, SuggestModal, TAbstractFile, TFile } from 'obsidian'
|
import { Notice, Plugin, SuggestModal, TAbstractFile, TFile } from 'obsidian'
|
||||||
import MiniSearch from 'minisearch'
|
import MiniSearch from 'minisearch'
|
||||||
import removeMarkdown from 'remove-markdown'
|
import { markdownToTxt } from 'markdown-to-txt'
|
||||||
|
|
||||||
type OmniNote = {
|
type OmniNote = {
|
||||||
path: string
|
path: string
|
||||||
@@ -61,13 +61,20 @@ export default class OmnisearchPlugin extends Plugin {
|
|||||||
// Index files that are already present
|
// Index files that are already present
|
||||||
const start = new Date().getTime()
|
const start = new Date().getTime()
|
||||||
const files = this.app.vault.getMarkdownFiles()
|
const files = this.app.vault.getMarkdownFiles()
|
||||||
|
|
||||||
|
// This is basically the same behavior as MiniSearch's `addAllAsync()`.
|
||||||
|
// We index files by batches of 10
|
||||||
|
console.log('Omnisearch - indexing ' + files.length + ' files')
|
||||||
for (let i = 0; i < files.length; ++i) {
|
for (let i = 0; i < files.length; ++i) {
|
||||||
if (i % 100 === 0) await wait(100)
|
if (i % 10 === 0) await wait(0)
|
||||||
await this.addToIndex(files[i])
|
const file = files[i]
|
||||||
|
// console.log(file.path)
|
||||||
|
await this.addToIndex(file)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (files.length > 0) {
|
if (files.length > 0) {
|
||||||
new Notice(
|
new Notice(
|
||||||
`Omnisearch - Loaded ${files.length} notes in ${
|
`Omnisearch - Indexed ${files.length} notes in ${
|
||||||
new Date().getTime() - start
|
new Date().getTime() - start
|
||||||
}ms`,
|
}ms`,
|
||||||
)
|
)
|
||||||
@@ -232,7 +239,7 @@ class OmnisearchModal extends SuggestModal<OmniNote> {
|
|||||||
// Sort the terms from smaller to larger
|
// Sort the terms from smaller to larger
|
||||||
// and highlight them in the title and body
|
// and highlight them in the title and body
|
||||||
const terms = result.terms.sort((a, b) => a.length - b.length)
|
const terms = result.terms.sort((a, b) => a.length - b.length)
|
||||||
const reg = new RegExp(terms.join('|'), 'gi')
|
const reg = new RegExp(escapeRegex(terms.join('|')), 'gi')
|
||||||
body = body.replace(reg, highlighter)
|
body = body.replace(reg, highlighter)
|
||||||
title = title.replace(reg, highlighter)
|
title = title.replace(reg, highlighter)
|
||||||
name = name.replace(reg, highlighter)
|
name = name.replace(reg, highlighter)
|
||||||
@@ -281,7 +288,7 @@ function highlighter(str: string): string {
|
|||||||
* @param text
|
* @param text
|
||||||
*/
|
*/
|
||||||
function clearContent(text: string): string {
|
function clearContent(text: string): string {
|
||||||
return removeMarkdown(removeFrontMatter(text))
|
return markdownToTxt(removeFrontMatter(text))
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -330,3 +337,8 @@ function wait(ms: number): Promise<void> {
|
|||||||
setTimeout(resolve, ms)
|
setTimeout(resolve, ms)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// https://stackoverflow.com/a/3561711
|
||||||
|
function escapeRegex(str: string): string {
|
||||||
|
return str.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&')
|
||||||
|
}
|
||||||
|
|||||||
1
src/modules.d.ts
vendored
1
src/modules.d.ts
vendored
@@ -1 +0,0 @@
|
|||||||
declare module 'remove-markdown'
|
|
||||||
Reference in New Issue
Block a user