## 制限事項 ==既存の画像ファイルが、新規作成で指定されるパスと異なる場合に編集できない== ## 経緯 [[📓図はdraw.ioを使ってPNGで管理する]]ようにしている。ただ、新規ファイルを作成するときの手順が若干面倒。 1. Attachementを配置するのに適切な[[SVG]]ファイルのパスを作成/コピーする 2. ↑のパスに[[draw.io]]でファイルを新規作成する 時間にして10~20秒程度だが、地味にこの手間が障壁となり『文字でいいや』となってしまう。ただ、できれば図を使って分かりやすくしたいことが多い。 ## やり方 [[Templater]]を使って以下のtemplateを作る。実行しやすいコマンド名にするといい。私は`Open in draw.io`にした。 ```js <%* const cur = app.workspace.activeLeaf.view.editor.getCursor() const token = app.workspace.activeLeaf.view.editor.getClickableTokenAt(cur) const attachment = await app.vault.getAvailablePathForAttachments(token.text, "", app.workspace.getActiveFile()) const file = `"${attachment}"` tp.user.drawio({file}) %> ``` [[TemplaterからOS標準シェルのコマンドを実行]]する必要があるため、`drawio`というUser Functionを作成し、`tp.user.drawio`で呼び出している。定義したFunctionは以下[^1]。 ![[Pasted image 20210605231334.png]] ## 動作 カーソルが[[内部リンク]]に当たっている状態でコマンドを実行する。 - ファイルが存在する場合は[[draw.io]]で開く - ファイルが存在しない場合はファイルが作成され、[[draw.io]]で開く - ファイルの作成場所は`Default location for new attachments`を考慮する [^1]: [[Windows]]の[[cmd]]を使った場合。他環境では環境変数の指定方法が変わる([[Bash]]なら`$file`)