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"
|
||||
},
|
||||
"dependencies": {
|
||||
"minisearch": "^5.0.0-beta1",
|
||||
"remove-markdown": "^0.3.0"
|
||||
"markdown-to-txt": "^2.0.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-node: 11.1.0
|
||||
eslint-plugin-promise: 5.0.0
|
||||
markdown-to-txt: ^2.0.0
|
||||
minisearch: ^5.0.0-beta1
|
||||
obsidian: latest
|
||||
prettier: ^2.6.2
|
||||
prettier-eslint: ^13.0.0
|
||||
remove-markdown: ^0.3.0
|
||||
tslib: 2.3.1
|
||||
typescript: 4.4.4
|
||||
|
||||
dependencies:
|
||||
markdown-to-txt: 2.0.0
|
||||
minisearch: 5.0.0-beta1
|
||||
remove-markdown: 0.3.0
|
||||
|
||||
devDependencies:
|
||||
'@types/node': 16.11.26
|
||||
@@ -1490,10 +1490,18 @@ packages:
|
||||
path-exists: 3.0.0
|
||||
dev: true
|
||||
|
||||
/lodash.escape/4.0.1:
|
||||
resolution: {integrity: sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg=}
|
||||
dev: false
|
||||
|
||||
/lodash.merge/4.6.2:
|
||||
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
|
||||
dev: true
|
||||
|
||||
/lodash.unescape/4.0.1:
|
||||
resolution: {integrity: sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=}
|
||||
dev: false
|
||||
|
||||
/lodash/4.17.21:
|
||||
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
|
||||
dev: true
|
||||
@@ -1517,6 +1525,20 @@ packages:
|
||||
yallist: 4.0.0
|
||||
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:
|
||||
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
|
||||
engines: {node: '>= 8'}
|
||||
@@ -1779,10 +1801,6 @@ packages:
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/remove-markdown/0.3.0:
|
||||
resolution: {integrity: sha1-XktmdJOpNXlyjz1S7MHbnKUF3Jg=}
|
||||
dev: false
|
||||
|
||||
/require-relative/0.8.7:
|
||||
resolution: {integrity: sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=}
|
||||
dev: true
|
||||
|
||||
24
src/main.ts
24
src/main.ts
@@ -1,6 +1,6 @@
|
||||
import { Notice, Plugin, SuggestModal, TAbstractFile, TFile } from 'obsidian'
|
||||
import MiniSearch from 'minisearch'
|
||||
import removeMarkdown from 'remove-markdown'
|
||||
import { markdownToTxt } from 'markdown-to-txt'
|
||||
|
||||
type OmniNote = {
|
||||
path: string
|
||||
@@ -61,13 +61,20 @@ export default class OmnisearchPlugin extends Plugin {
|
||||
// Index files that are already present
|
||||
const start = new Date().getTime()
|
||||
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) {
|
||||
if (i % 100 === 0) await wait(100)
|
||||
await this.addToIndex(files[i])
|
||||
if (i % 10 === 0) await wait(0)
|
||||
const file = files[i]
|
||||
// console.log(file.path)
|
||||
await this.addToIndex(file)
|
||||
}
|
||||
|
||||
if (files.length > 0) {
|
||||
new Notice(
|
||||
`Omnisearch - Loaded ${files.length} notes in ${
|
||||
`Omnisearch - Indexed ${files.length} notes in ${
|
||||
new Date().getTime() - start
|
||||
}ms`,
|
||||
)
|
||||
@@ -232,7 +239,7 @@ class OmnisearchModal extends SuggestModal<OmniNote> {
|
||||
// Sort the terms from smaller to larger
|
||||
// and highlight them in the title and body
|
||||
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)
|
||||
title = title.replace(reg, highlighter)
|
||||
name = name.replace(reg, highlighter)
|
||||
@@ -281,7 +288,7 @@ function highlighter(str: string): string {
|
||||
* @param text
|
||||
*/
|
||||
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)
|
||||
})
|
||||
}
|
||||
|
||||
// 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