UbiquityでMake Link

FirefoxのMake Link extensionがうまく動作しないので、UbiquityでMake Linkできるようにスクリプトを書いてみました。takesはいらないけど、あとで修正するかもしれないのでそのまま置いときます。動作検証は不十分なので、バグがあったらコメントよろしくです。

Ubiquityでmake-linkやmake-quoteを実行すると、リンクを作成してクリップボードにコピーしてくれます。

CmdUtils.CreateCommand({
  name: "make-link",
  takes: {"input": noun_arb_text},
  preview: function( pblock, input ) {
    var doc = context.focusedWindow.document
    var selection = CmdUtils.getSelection(context);
    var text = null;
    if (selection) {
      text = selection;
    } else {
      text = doc.title;
    }
    var template = "<a href=\"${url}\">${text}</a>";
    pblock.innerHTML = CmdUtils.renderTemplate(template, {"url": doc.URL, "text": text});
  },
  execute: function(input) {
    var doc = context.focusedWindow.document
    var selection = CmdUtils.getSelection(context);
    var text = null;
    if (selection) {
      text = selection;
    } else {
      text = doc.title;
    }
    var template = "${text}"
    var result = CmdUtils.renderTemplate(template, {"url": doc.URL, "text": text});
    CmdUtils.copyToClipboard(result);
  }
});
CmdUtils.CreateCommand({
  takes: {"input": noun_arb_text},
  preview: function( pblock, input ) {
    var doc = context.focusedWindow.document
    var selection = CmdUtils.getSelection(context);
    var template = "<blockquote cite=\"${url}\">
\n<p>${selection}</p>
[From <a href=\"${url}\"><cite>${title}</cite></a>]
</blockquote>"; pblock.innerHTML = CmdUtils.renderTemplate(template, {"url": doc.URL, "selection": selection, "title": doc.title}); }, execute: function(input) { var doc = context.focusedWindow.document var selection = CmdUtils.getSelection(context); var template = "
\n

${selection}

[From ${title}]
"; var result = CmdUtils.renderTemplate(template, {"url": doc.URL, "selection": selection, "title": doc.title}); CmdUtils.copyToClipboard(result); } });

Open/Saveダイアログで… with QuickSilver の続き

Open/Saveダイアログで指定のフォルダに移動する簡単な方法 with QuickSilver | airfunc log

の続き。

オリジナルのアクションで自動化してみました。

on open of theFiles
	tell application "System Events"
		set thePath to POSIX path of item 1 of theFiles
		set the clipboard to thePath
		keystroke "g" using {command down, shift down}
		keystroke "v" using {command down}
		keystroke return
	end tell
end open

を/Users/airfunc/Library/Application Support/Quicksilver/Actions
に適当に名前をつけて保存してQuickSilverを再起動。ダイアログを表示したら、QuickSilverでフォルダを指定して保存したアクションを実行します。

実は私はDvorak配列を使用しているので実際には以下のコードだったりします。

on open of theFiles
	tell application "System Events"
		set thePath to POSIX path of item 1 of theFiles
		set the clipboard to thePath
		keystroke "u" using {command down, shift down}
		key code 47 using command down
		keystroke return
	end tell
end open

keystrokeだとペーストがうまくいかないのでkey codeで指定してます。

それから、Open/SaveダイアログだけでなくFinderでも同じスクリプトでフォルダの移動が可能です。