Inline links and Cmd-click and Cmd-enter now work
This commit is contained in:
+24
-11
@@ -1,22 +1,35 @@
|
||||
import { ClickEvent } from "../../webapp/src/app_event.ts";
|
||||
import { syscall } from "./lib/syscall.ts";
|
||||
|
||||
export async function linkNavigate() {
|
||||
let syntaxNode = await syscall("editor.getSyntaxNodeUnderCursor");
|
||||
if (syntaxNode && syntaxNode.name === "WikiLinkPage") {
|
||||
await syscall("editor.navigate", syntaxNode.text);
|
||||
async function navigate(syntaxNode: any) {
|
||||
if (!syntaxNode) {
|
||||
return;
|
||||
}
|
||||
console.log("Attempting to navigate based on syntax node", syntaxNode);
|
||||
switch (syntaxNode.name) {
|
||||
case "WikiLinkPage":
|
||||
await syscall("editor.navigate", syntaxNode.text);
|
||||
break;
|
||||
case "URL":
|
||||
await syscall("editor.openUrl", syntaxNode.text);
|
||||
break;
|
||||
case "Link":
|
||||
// Markdown link: [bla](URLHERE) needs extraction
|
||||
let match = /\[[^\\]+\]\(([^\)]+)\)/.exec(syntaxNode.text);
|
||||
if (match) {
|
||||
await syscall("editor.openUrl", match[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export async function clickNavigate(event: ClickEvent) {
|
||||
let syntaxNode = await syscall("editor.getSyntaxNodeAtPos", event.pos);
|
||||
export async function linkNavigate() {
|
||||
navigate(await syscall("editor.getSyntaxNodeUnderCursor"));
|
||||
}
|
||||
|
||||
export async function clickNavigate(event: ClickEvent) {
|
||||
if (event.ctrlKey || event.metaKey) {
|
||||
console.log("Here", syntaxNode);
|
||||
if (syntaxNode && syntaxNode.name === "WikiLinkPage") {
|
||||
await syscall("editor.navigate", syntaxNode.text);
|
||||
return;
|
||||
}
|
||||
let syntaxNode = await syscall("editor.getSyntaxNodeAtPos", event.pos);
|
||||
navigate(syntaxNode);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@ import { syscall } from "./lib/syscall.ts";
|
||||
const wikilinkRegex = new RegExp(pageLinkRegex, "g");
|
||||
|
||||
export async function indexLinks({ name, text }: IndexEvent) {
|
||||
console.log("Now indexing", name);
|
||||
let backLinks: { key: string; value: string }[] = [];
|
||||
for (let match of text.matchAll(wikilinkRegex)) {
|
||||
let toPage = match[1];
|
||||
|
||||
Reference in New Issue
Block a user