diff --git a/src/interface/obsidian/src/search_modal.ts b/src/interface/obsidian/src/search_modal.ts index e99e644e..9fd1ac65 100644 --- a/src/interface/obsidian/src/search_modal.ts +++ b/src/interface/obsidian/src/search_modal.ts @@ -161,7 +161,7 @@ export class KhojSearchModal extends SuggestModal { // Open vault file at heading of chosen search result if (file_match) { let resultHeading = file_match.extension !== 'pdf' ? result.entry.split('\n', 1)[0] : ''; - let linkToEntry = `${file_match.path}${resultHeading}` + let linkToEntry = resultHeading.startsWith('#') ? `${file_match.path}${resultHeading}` : file_match.path; this.app.workspace.openLinkText(linkToEntry, ''); console.log(`Link: ${linkToEntry}, File: ${file_match.path}, Heading: ${resultHeading}`); } diff --git a/src/interface/obsidian/src/utils.ts b/src/interface/obsidian/src/utils.ts index 053562b6..c14912e5 100644 --- a/src/interface/obsidian/src/utils.ts +++ b/src/interface/obsidian/src/utils.ts @@ -72,41 +72,58 @@ export async function configureKhojBackend(vault: Vault, setting: KhojSetting, n } } // Else if khoj is not configured to index markdown files in configured obsidian vault - else if (data["content-type"]["markdown"]["input-filter"].length != 1 || + else if ( + data["content-type"]["markdown"]["input-files"] != null || + data["content-type"]["markdown"]["input-filter"] == null || + data["content-type"]["markdown"]["input-filter"].length != 1 || data["content-type"]["markdown"]["input-filter"][0] !== mdInVault) { - // Update markdown config in khoj content-type config - // Set markdown config to only index markdown files in configured obsidian vault - let khojMdIndexDirectory = getIndexDirectoryFromBackendConfig(data["content-type"]["markdown"]["embeddings-file"]); - data["content-type"]["markdown"] = { - "input-filter": [mdInVault], - "input-files": null, - "embeddings-file": `${khojMdIndexDirectory}/${indexName}.pt`, - "compressed-jsonl": `${khojMdIndexDirectory}/${indexName}.jsonl.gz`, - } + // Update markdown config in khoj content-type config + // Set markdown config to only index markdown files in configured obsidian vault + let khojMdIndexDirectory = getIndexDirectoryFromBackendConfig(data["content-type"]["markdown"]["embeddings-file"]); + data["content-type"]["markdown"] = { + "input-filter": [mdInVault], + "input-files": null, + "embeddings-file": `${khojMdIndexDirectory}/${indexName}.pt`, + "compressed-jsonl": `${khojMdIndexDirectory}/${indexName}.jsonl.gz`, + } } if (khoj_already_configured && !data["content-type"]["pdf"]) { - // Add pdf config to khoj content-type config - // Set pdf config to index pdf files in configured obsidian vault - data["content-type"]["pdf"] = { - "input-filter": [pdfInVault], - "input-files": null, - "embeddings-file": `${khojDefaultPdfIndexDirectory}/${indexName}.pt`, - "compressed-jsonl": `${khojDefaultPdfIndexDirectory}/${indexName}.jsonl.gz`, + const hasPdfFiles = app.vault.getFiles().some(file => file.extension === 'pdf'); + + if (hasPdfFiles) { + data["content-type"]["pdf"] = { + "input-filter": [pdfInVault], + "input-files": null, + "embeddings-file": `${khojDefaultPdfIndexDirectory}/${indexName}.pt`, + "compressed-jsonl": `${khojDefaultPdfIndexDirectory}/${indexName}.jsonl.gz`, + } + } else { + data["content-type"]["pdf"] = null; } } // Else if khoj is not configured to index pdf files in configured obsidian vault else if (khoj_already_configured && - (data["content-type"]["pdf"]["input-filter"].length != 1 || - data["content-type"]["pdf"]["input-filter"][0] !== pdfInVault)) { - // Update pdf config in khoj content-type config - // Set pdf config to only index pdf files in configured obsidian vault - let khojPdfIndexDirectory = getIndexDirectoryFromBackendConfig(data["content-type"]["pdf"]["embeddings-file"]); - data["content-type"]["pdf"] = { - "input-filter": [pdfInVault], - "input-files": null, - "embeddings-file": `${khojPdfIndexDirectory}/${indexName}.pt`, - "compressed-jsonl": `${khojPdfIndexDirectory}/${indexName}.jsonl.gz`, + ( + data["content-type"]["pdf"]["input-files"] != null || + data["content-type"]["pdf"]["input-filter"] == null || + data["content-type"]["pdf"]["input-filter"].length != 1 || + data["content-type"]["pdf"]["input-filter"][0] !== pdfInVault)) { + + let hasPdfFiles = app.vault.getFiles().some(file => file.extension === 'pdf'); + + if (hasPdfFiles) { + // Update pdf config in khoj content-type config + // Set pdf config to only index pdf files in configured obsidian vault + let khojPdfIndexDirectory = getIndexDirectoryFromBackendConfig(data["content-type"]["pdf"]["embeddings-file"]); + data["content-type"]["pdf"] = { + "input-filter": [pdfInVault], + "input-files": null, + "embeddings-file": `${khojPdfIndexDirectory}/${indexName}.pt`, + "compressed-jsonl": `${khojPdfIndexDirectory}/${indexName}.jsonl.gz`, + } + } else { + data["content-type"]["pdf"] = null; } }