一昨日はCtrl+Rだけ、昨日はCtrl+Shift+Rなど3つのショートカットキーを追加しました。これまでは文字列が選択されている場合のみ、それをRのコマンドと仮定してRコンソールに貼り付け実行しましたが、複数行のコマンドを一括実行したい場合、いちいち選択せずに実行できると楽。ということで足してみたのが、今日のAutoHotkeyスクリプトです。

実行環境は一昨日・昨日と同様Windows 7 32bit + AutHotkey Unicode 32bit 1.1.20 + pgAdmin Portable 1.20.0 + R Portable 3.1.2。例えば下のようにSQLの複数行コメントブロックを作り、先頭を/* Rとか適当な印を付け(AutoHotkeyで正規表現で取り出す)コマンドを自由に書きます。後はスクリプトを常駐させ、クエリツール内でCtrl+Rを打てば、コメントブロック内がまるごとRコンソールに貼り付け実行される仕組み。


デモ動画とショートカットキーまとめ
ソースコードは後掲します。動画はキーボード入力が映ってなく、文字も小さいので伝わりにくいですが、最初にAutoHotkeyスクリプトを起動し、クエリツール上の操作だけでRコンソールへコマンドを実行しています。下に動画が出ない場合はブラウザが未対応なので、リンクからダウンロードして下さい。(526日追記:Chromeで正常再生できる動画に差し替えました)
≫ Link : demo_pgadmin_query_to_R3.webm

一昨日・昨日のショートカットキーは全て引き継いでおり、まとめると下のようになります。
キー動作備考
Ctrl+R1. 文字列選択中なら、それをコンソールに貼り付けて実行
2. 文字列選択がなければ、/* R …… */の最初のブロック内をコンソールに貼り付けて実行
選択文字列もRのコードブロックもなければ、何もしない
Ctrl+Shift+R同上(コンソールを前面化)同上
Ctrl+LコンソールクリアpgAdminデフォルトの動作(行削除)は無効になる
Ctrl+Shift+Lコンソール終了R起動時にオプション --no save を付けておく

実行環境とスクリプト
スクリプト以外は、一昨日・昨日と同じ。AutoHotkeyこちらからUnicode 32bitZIPをダウンロードし、本体のプログラムだけ適当なフォルダに解凍します。同じ場所に起動用バッチファイルとスクリプトを置いて準備終わり。必要な時にバッチをダブルクリックすればスクリプトが常駐し、pgAdminクエリツール上で上記のショートカットキーが機能します。
loading from Bitbucket...
loading from Bitbucket...
スクリプトの最後にある関数GetRCode()が今日加えたもの。選択文字列がない時はこれを呼び出します。関数内では、最初にキャレット(文字カーソル)の位置を控え、次にCtrl+Aで全選択しクリップボードにコピー。その中を正規表現で検索し、最初に見つかった/* R……*/の中をクリップボードに入れ直し、コマンド実行に使う仕組みです。キャレット位置を復元するため原始的にカーソルを移動させていますが、もっといい方法がないか調査中。

ところでAutoHotkeyの正規表現の関数名はReg
Ex…で、当初PostgreSQLJavaScriptと同じRegExpだと早合点していて、嵌まりました。