Skip to content

Commit 4d993bb

Browse files
committed
fix: Click on Admonition codeblocks to edit in LP (close #278)
1 parent 9143f3f commit 4d993bb

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

src/main.ts

+33
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import {
22
addIcon,
33
Component,
4+
editorLivePreviewField,
5+
livePreviewState,
46
MarkdownPostProcessor,
57
MarkdownPostProcessorContext,
68
MarkdownPreviewRenderer,
@@ -71,6 +73,14 @@ declare module "obsidian" {
7173
namespace MarkdownPreviewRenderer {
7274
function unregisterCodeBlockPostProcessor(lang: string): void;
7375
}
76+
interface Editor {
77+
cm: {
78+
state: EditorState;
79+
focus: () => void;
80+
posAtDOM: (el: HTMLElement) => number;
81+
dispatch: (tr: TransactionSpec) => void;
82+
};
83+
}
7484
}
7585

7686
import AdmonitionSetting from "./settings";
@@ -79,6 +89,7 @@ import { InsertAdmonitionModal } from "./modal";
7989
import { IconName } from "@fortawesome/fontawesome-svg-core";
8090
import CalloutManager from "./callout/manager";
8191
import { AdmonitionSuggest } from "./suggest/suggest";
92+
import { EditorState, TransactionSpec } from "@codemirror/state";
8293

8394
const DEFAULT_APP_SETTINGS: AdmonitionSettings = {
8495
userAdmonitions: {},
@@ -354,6 +365,28 @@ ${editor.getDoc().getSelection()}
354365
);
355366
}
356367
el.replaceWith(admonitionElement);
368+
369+
const view = app.workspace.getActiveViewOfType(MarkdownView);
370+
//hack
371+
//@ts-ignore
372+
if (view?.editor?.cm?.state?.field(editorLivePreviewField)) {
373+
const editor = view.editor.cm;
374+
admonitionElement.onClickEvent((ev) => {
375+
if (ev.defaultPrevented || ev.detail > 1 || ev.shiftKey)
376+
return;
377+
try {
378+
const pos = editor.posAtDOM(admonitionElement);
379+
editor.focus();
380+
editor.dispatch({
381+
selection: {
382+
head: pos,
383+
anchor: pos
384+
}
385+
});
386+
} catch (e) {}
387+
});
388+
}
389+
357390
return admonitionElement;
358391
} catch (e) {
359392
console.error(e);

0 commit comments

Comments
 (0)