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) {