LoginSignup
0
0

More than 5 years have passed since last update.

TextExpanderでURLを展開する時に勝手に置換される問題

Last updated at Posted at 2016-07-18

URLを展開するとおかしな感じになる

TextExpanderでは、展開されるテキストにAppleScript等を記述することで、実行結果を編集中のテキストに挿入することができる。

例:Safariで開いているページのURLを取得して挿入するAppleScriptスニペット

tell application "Safari" to get URL of document 1 as Unicode text

例えばこのページ 保護者 - Wikipedia をSafariで開いている状態で、上記スクリプトを実行すると、以下のようなテキストが挿入される。

https://ja.wikipedia.org/wiki/%E47月F%9D%E8日曜日D7月7%E8%80%85

が、デッドリンクになってしまう。ただしいURLは以下の通り。

https://ja.wikipedia.org/wiki/%E4%BF%9D%E8%AD%B7%E8%80%85

TextExpanderマクロ文字列

これは、展開された(されるべき)文字列に、TextExpanderマクロが含まれるためである。
上記の例でいえば、%Bは月、%Aは曜日に、自動的に変換される。

現在のTextExpanderで、スニペットごとにマクロの展開を抑止する方法はない。はず。
よって、マクロ機能を有効にし、かつ「マクロと解釈されうる文字列」をそのまま展開するには、クリップボードに格納してペーストするなどの対策を取るしかない。

AppleScriptによるGUIスクリプティングでペーストまたはキー操作Ctrl+Vを実行するくらいしかないのだろうか。

対策:%clipboard+%snippet:hoge%

AppleScriptでURLをクリップボードへ格納した上で、%clipboardマクロを展開してみるのはどか。

tell application "Safari" to set the clipboard to URL of document 1 as Unicode text
get "%clipboard"

やはり同様の結果になってしまう。マクロで展開されたテキストに含まれるマクロも展開されるのだ。

ところが、マクロとして解釈されうる文字列をクリップボードに格納した状態で、プレインテキストのスニペットとして%clipboardを展開すると、さらなるマクロ展開は起こらなかった。
バグくさいが、とりあえずTextExpander5.1.4においては、マクロの多重展開は、スクリプト系スニペットでしか発生しない

ここで、他のスニペットを読み込むマクロ、%snippet:hoge%が使える。ふたつのスニペットを組み合わせて運用するのだ。

  1. URLを取得し、展開する文字列をクリップボードに格納するスクリプトスニペット
  2. 1のスニペット呼び出し+クリップボードから貼り付けを行うプレーンテキストスニペット

結論

以上を踏まえて、最終的なスニペットは以下のようになった。

1.スクリプトスニペット

これは直接展開しないので、abbreviations(短縮形)は誤展開しないよう長いものにしておく。

  • ???copyURLfromSafari
    • SafariからURLをクリップボードに格納
--Copy URL from Safari
tell application "Safari" to set the clipboard to URL of document 1 as unicode text
  • ???copyLinkFromSafari
    • SafariからMarkdown形式のリンクをクリップボードに格納
--Copy Markdown link from Safari
tell application "Safari"
    set cTitle to name of document 1 as Unicode text
    set cURL to URL of document 1 as Unicode text
    set the clipboard to "[" & cTitle & "](" & cURL & ")"
end tell

2.プレーンテキストスニペット

実際に展開するのはこちらになるので、単純なabbreviationsにする。

  • srl
    • SafariからURLを貼り付け
%snippet:???copyURLfromSafari%%clipboard
  • sln
    • SafariからMarkdown形式のリンクを貼り付け
%snippet:???copyLinkfromSafari%%clipboard
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0