カタカタブログ

SIerで働くITエンジニアがカタカタした記録を残す技術ブログ。Java, Oracle Database, Linuxが中心です。たまにRuby on Railsなども。

サクラエディタ マクロを開発してみる

サクラエディタのマクロを書いてみたので、開発方法をメモしておく。
サクラエディタはjavascriptでマクロが書けるので、ここではキーボード操作を記録して再現させるマクロの作り方ではなく、プログラミングによってテキスト変換処理を実装し、サクラエディタから呼び出せるようにするマクロのイメージ。

マクロの公式ドキュメントはここにあるよう。
http://www.geocities.jp/maru3128/SakuraMacro/

S_<メソッド名>となっているが、javascriptでマクロを書く場合は、Editor.<メソッド名>で使えるっぽい。

いろいろあるが、ここでは以下の二つだけをまず使うことにする。

Editor.GetSelectedString(0): 選択範囲の文字列を取得する。
Editor.InsText(text): エディタにテキストを挿入する。

この二つを使うと、選択範囲のテキストを一定ルールで変換する、というマクロは以下のように書ける。

var text = Editor.GetSelectedString(0);
if ( text !== "") Editor.InsText(my_function(text));

あとはmy_functionに好きな変換ロジックを実装してやればよい。
とりあえずここでは例として、選択範囲のテキストを大文字<->小文字に変換するマクロを作ってみる。
(デフォルトではCtrl + F7で大文字化、Ctrl + F6で小文字化ができるが、これはトグル式で切り替えができる)

テキストの大文字・小文字変換の関数は以下のようなかんじで実装。

switch_upper_lower.js

// 指定したテキストに大文字が含まれるならば全て小文字に、
// そうでないならば全て大文字に変換した文字列を返す。
function switch_upper_lower(text) {
 if (text.match(/[A-Z]/)) {
   return text.toLowerCase();
 } else {
   return text.toUpperCase();
 }
}
//==========
// MAIN
//==========
// 選択範囲のテキストを取得
var text = Editor.GetSelectedString(0);
// 変換後のテキストを出力
if ( text !== "" ) Editor.InsText(switch_upper_lower(text));

マクロができたので、テストしてみる。
マクロはエディタに登録し、キーボードショートカットで呼べると便利なので登録する。

設定 > 共通設定
f:id:osn_th:20140311124842p:plain

マクロタブから今回作ったマクロを設定する。
マクロ一覧のところに、作ったjavascriptフォルダを指定する。
名前は適当に「大文字・小文字変換」としておく。
Fileに作ったswitch_upper_lower.jsを選択しておく。
後はスクリプト修正が都度反映されるように、「マクロを実行するたびにファイルを読み直す」にもチェックを入れておくとデバッグに便利。完成したら外しておけば、実行が早くなる。
最後に「設定」ボタンを押し、登録内容を保存する。
f:id:osn_th:20140311124850p:plain

続いてキー割り当てのタブからマクロをキーボードショートカットで呼べるようにする。
種別を外部マクロにすると、上で作った「大文字・小文字変換」が選べるので、
適当に未割り当てだった「Shift + Ctrl + F6」にしてみる。
割付ボタンを押し、OKを押す。
f:id:osn_th:20140311124838p:plain


これで設定はOK。

これで以下のようにテキストを選択する。
f:id:osn_th:20140311124853p:plain
このままCtrl + Shift + F6を押すと
f:id:osn_th:20140311124847p:plain
正しく大文字化されている。さらに選択し、Ctrl + Shift + F6を押すと、
f:id:osn_th:20140311124845p:plain

小文字に戻る。どうやら正しく実装できているよう。

このスキームであとは複雑なテキスト変換関数をjavascriptで実装すれば
同じようにサクラエディタで呼び出せるので、便利。

はじめてのサクラエディタ―オープンソースの高機能エディタを使いこなす! (I・O BOOKS)

はじめてのサクラエディタ―オープンソースの高機能エディタを使いこなす! (I・O BOOKS)