From 40091489c06f53c0ac8d964cadae37a7de962693 Mon Sep 17 00:00:00 2001 From: Debanjum Singh Solanky Date: Thu, 30 Mar 2023 03:31:47 +0700 Subject: [PATCH] For each result: snip it by lines, show filename, remove frontmatter Based on PR #135 Resolves #134 --- src/interface/obsidian/src/search_modal.ts | 24 +++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/interface/obsidian/src/search_modal.ts b/src/interface/obsidian/src/search_modal.ts index db06caaa..bd4d6271 100644 --- a/src/interface/obsidian/src/search_modal.ts +++ b/src/interface/obsidian/src/search_modal.ts @@ -90,12 +90,26 @@ export class KhojSearchModal extends SuggestModal { } async renderSuggestion(result: SearchResult, el: HTMLElement) { - let words_to_render = 30; - let entry_words = result.entry.split(' ') - let entry_snipped_indicator = entry_words.length > words_to_render ? ' **...**' : ''; - let snipped_entry = entry_words.slice(0, words_to_render).join(' '); + // Max number of lines to render + let lines_to_render = 8; + + // Extract filename of result + let os_path_separator = result.file.includes('\\') ? '\\' : '/'; + let filename = result.file.split(os_path_separator).pop(); + + // Remove YAML frontmatter when rendering string + result.entry = result.entry.replace(/---[\n\r][\s\S]*---[\n\r]/, ''); + + // Truncate search results to lines_to_render + let entry_snipped_indicator = result.entry.split('\n').length > lines_to_render ? ' **...**' : ''; + let snipped_entry = result.entry.split('\n').slice(0, lines_to_render).join('\n'); + + // Show filename of each search result for context + el.createEl("div",{ cls: 'khoj-result-file' }).setText(filename ?? ""); + let result_el = el.createEl("div", { cls: 'khoj-result-entry' }) + // @ts-ignore - MarkdownRenderer.renderMarkdown(snipped_entry + entry_snipped_indicator, el, null, null); + MarkdownRenderer.renderMarkdown(snipped_entry + entry_snipped_indicator, result_el, null, null); } async onChooseSuggestion(result: SearchResult, _: MouseEvent | KeyboardEvent) {