filter文(Ver9.35対応版)
目次−
その他編集系文−
filter文
filter文は、パラメータを指定して、変換モジュールを呼び出します。(V5.00以降)
- パラメータ1(文字列型)
-
変換モジュール名を指定します。
変換モジュール名に "" (何も無い文字列)を指定すると、標準の変換モジュール(32bit版の場合はHmFilter.hmf、64bit版の場合はHmFilter.hmf64)を使用します。
変換モジュール名の「.hmf」または「.hmf64」の拡張子部分は省略可能です。(V8.20β8以降)
ただしフルパスでファイル名を書く場合は拡張子の省略はできません。
拡張子.hmfjsも指定可能です。(V9.25β15以降)
- パラメータ2(文字列型)
-
変換モジュール内の関数名を指定します。
- パラメータ3(文字列型、省略可能)
-
変換モジュール内の関数に渡すパラメータを指定します。
変換モジュールに渡すパラメータの内容は、変換モジュールが自由に決めることができます。パラメータは省略可能です。
- 結果コード
-
範囲選択されていない場合など、変換が実行されない場合はresultは0になります。
変換モジュールが見つからない場合などの場合は、成功しても失敗してもresultは1になります。
詳細なエラーは、getresultexでエラー情報を取得できます。
変換モジュールのパラメータを調べるには、「キー操作の記録開始/終了」と「キー操作の保存...」を使う方法があります。
変換系のコマンドをキー操作の記録すると、indentやtohankakuなどでは記録されず、filterで記録されるようになります。(V5.00以降)
filterやindentやtohankakuなどの変換の文は、範囲選択した状態で実行しなければ意味がありません。
BOX選択や複数選択の場合は、通常は単一選択扱いになります。
あらかじめ
setcompatiblemode 0x00100000; をしておくと、複数選択に対応して、選択された箇所全てに対して変換モジュールが呼ばれます。
文字列のパラメータを渡して変換する関数版の
filter関数もあります。
変換モジュールのDLLが見つからない場合や、関数が見つからない場合は、V8.88以降ではエラーが出ます。トラブル対策のオプションで「マクロで問題のある文法の警告を出さない」がONの場合はエラーは出ません。
エラーが出ない場合でも、
getresultexでエラー情報を取得できます。(V8.88以降)
標準の変換モジュール(HmFilter.hmf)の関数名一覧
ToUpper | UPPER CASE |
ToLower | lower case |
ToHankaku | ハンカク |
ToZenkakuHira | 全角ひらがな |
ToZenkakuKata | 全角カタカナ |
ToSpace | TAB -> 空白 (※注) |
ToTab | 空白 -> TAB (※注) |
ToHankakuAlnum | 英数字/記号/空白のみ半角に |
ToZenkakuAlnum | 英数字/記号/空白のみ全角に |
ToHankakuKataOnly | カタカナのみ半角に |
ToZenkakuKataOnly | カタカナのみ全角に |
Indent | インデント |
UnIndent | 逆インデント |
Sort | ソート(V8.00以降) |
ConvertCase | 大文字/小文字の変換...(V9.00以降) |
HanZenConv | 半角/全角変換...(V9.00以降) |
※注
ToSpace, ToTab は、秀丸エディタの現在の状態に依存しています。
タブの文字数の設定と、範囲選択開始位置からタブ位置を計算します。
パラメータに"1"を指定して呼ぶと、範囲選択開始位置を無視して計算します。(V8.01以降)
ToUpper, ToLowerは、パラメータを指定して、対象となる文字を指定できます。(V8.50以降)
"0000"や"1111"のような文字列で、最初の"1"は半角英字、2番目の"1"は全角英字、3番目の"1"はアクセント付きラテン文字、4番目の"1"はキリル文字とギリシャ文字(V8.85以降)を対象とすることを意味します。
省略時は半角英字と全角英字だけを対象とします。
Sortの使い方例:
//昇順、すべてチェックOFF
filter "" , "Sort" , "000000000000";//+"1"; ダイアログを出す場合
//降順、すべてチェックOFF
filter "" , "Sort" , "100000000000";
//昇順、UnicodeのみON
filter "" , "Sort" , "000010000000";
//昇順、数値の大小関係のみON
filter "" , "Sort" , "000100000000";
変換モジュールのパラメータを調べる方法
変換モジュールの関数名およびパラメータは、キー操作の記録をして、キー操作の保存をしてマクロ化することで知ることができます。
標準のソートマクロ化する例
1.適当に範囲選択する
2.[マクロ]→[キー操作の記録開始/終了](標準でShift+F1)
3.[編集]→[変換]→[ソート]
4.[マクロ]→[キー操作の記録開始/終了](標準でShift+F1)
5.[マクロ]→[キー操作の保存]
6.適当にtest.macなどというファイル名で保存
で、マクロができます。
この手順ではソートのダイアログは出ず、記録したときのダイアログで選んだソート方法が記録されています。
マクロファイル用のフォルダにあるtest.macを開くと、
filter "" , "Sort" , "000110110002001\"00";
というような感じになっていて、filter文の最後の"000110110002001\"00"の部分がパラメータになっています。
(この例では、マクロの文字列の中に「"」が含まれるので「\"」となっています)
置換を正規表現で書くときの、「置換の時の、変換モジュールによる変換の指定」(秀丸エディタ本体のヘルプ)でも似た書き方がありますが、変換モジュールと関数名の書き方が逆なので注意が必要です。
filter文は filter 変換モジュール, 関数名;のように、変換モジュールが先です。
置換文字列の変換モジュール指定はs、\(1,関数名,変換モジュール)のように、関数名が先です。