Macro/投稿/206

http://sakura.qp.land.to/?Macro%2F%C5%EA%B9%C6%2F206


Top > Macro > 投稿 > 206

改行コードの混在警告&統一

  • ページ: Macro/投稿
  • 作者: 971?
  • カテゴリー: js
  • 投稿日: 2009-11-25 (水) 10:39:59

メッセージ

自動実行マクロ(開ファイル後やファイル保存前)に割り当てて使うと便利かも

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
// 【UnifyEol.js】
// 改行コードが混在していたら警告&統一する
// ★正規表現にbregonig.dllが必要★
 
// sakura 2.0.3.0 以降ならメッセージボックス系のマクロ専用関数がある
var strVer = Editor.ExpandParameter("$V");
var arrVer = strVer.split(".");
var bMsgBoxSupport = (arrVer[0] >= 3 || (arrVer[0] == 2 && arrVer[1] >= 1) || (arrVer[0] == 2 && arrVer[2] >= 3));
 
var strEol;
var strFind;
var strReplace;
switch (Editor.GetLineCode())
{
case 1:
    strEol = "CR"
    strFind = "\\r\\n|(?<!\\r)\\n";
    strReplace = "\\r";
    break;
case 2:
    strEol = "LF"
    strFind = "\\r\\n|\\r(?!\\n)";
    strReplace = "\\n";
    break;
default:
    strEol = "CRLF"
    strFind = "\\r(?!\\n)|(?<!\\r)\\n";
    strReplace = "\\r\\n";
    break;
}
 
Editor.CancelMode();
Editor.SearchNext(strFind, 36);
if (Editor.IsTextSelected() != 0)
{
    Editor.MoveHistPrev();
    Editor.SearchClearMark();
    var bYes;
    var strMsg = "改行コードが混在しています。\n現在の入力改行コード(" + strEol + ")に統一しますか?";
    if (bMsgBoxSupport) // メッセージボックス系の専用関数がある
    {    // Editor.YesNoBox() を使う
        bYes = (Editor.YesNoBox(strMsg) == 6);
    }
    else
    {    // WScript.Shell の Popup() を使う
        // ※ Popup() ではエディタ画面をクリックするとメッセージがエディタの背後に隠れてしまうことがある
        var WSHShell = new ActiveXObject("WScript.Shell");
        bYes = (WSHShell.Popup(strMsg, 0, "改行コード混在", 4) == 6);
    }
    if ( bYes )
    {
        Editor.ReplaceAll(strFind, strReplace, 4);
        Editor.MoveHistPrev();
    }
}

  • 無警告で統一したければ行33を削除するだけでできます -- 971? 2009-11-25 (水) 11:06:09
  • あと、ファイル名の拡張子を見て警告・統一する/しないを判定するとか、文字コードがEUCならLFに統一するとか、好みにあわせてカスタマイズしたらいい。 -- 971? 2009-11-25 (水) 11:11:02
  • 2.0.3.0以降ならYesNoBox()を使うようにしました -- 971? 2012-02-28 (火) 10:44:19

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

リロード   新規 編集 凍結 差分 添付 複製 名前変更   ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: 2012-02-28 (火) 10:44:19 (2477d)