◀一般トップへ
  • 4545 行のコメント化
    • 4546 Re:行のコメント化
      • 4547 Re2:行のコメント化
        • 4552 Re3:行のコメント化
          • 4556 Re4:行のコメント化
            • 4557 Re5:行のコメント化
              • 4559 Re6:行のコメント化
        • 4560 Re3:行のコメント化
          • 4561 Re4:行のコメント化
            • 4562 Re5:行のコメント化【解決】
              • 4565 Re6:行のコメント化【解決】
              • 4566 Re6:行のコメント化【解決】
                • 4568 Re7:行のコメント化【最終解決】
                • 4569 Re7:行のコメント化【解決】
  • [4545] 行のコメント化 moi 2005年07月14日 08:38

    行コメントしか対応していないタイプの言語です。
    (旧式Basicのremなど)
    ブロックコメントが無くて不便しているのですが、

    n行からm行まで一気にコメント化する方法は無いでしょうか?
    (VBのアイコンでコメントブロックみたいなもの)
    現在は、SHIFT-F6でコメント記号を入れたい場所を選択してから
    挿入しています。
    コメント記号を入れる場所が行頭が殆どという事もあり、
    楽にやる方法があれば教えてください。
    • [4546] Re:行のコメント化 すす 2005年07月14日 18:04

      n-m行の0文字目を矩形選択すれば選択した行全部にremとか入れられますよ
      • [4547] Re2:行のコメント化 maru 2005年07月15日 00:27

        >> 現在は、SHIFT-F6でコメント記号を入れ…
        > n-m行の0文字目を矩形選択すれば…

        ん?多分質問の意味が違うような。

        マクロを使用して良いなら
        //CommentBlock.mac
        S_ReplaceAll('^', '//', 156);
        S_ReDraw(0);
        S_SearchClearMark(0);
        とかをマクロに登録してツールバーに割り付け。
        • [4552] Re3:行のコメント化 maru 2005年07月19日 02:22

          //Comment.js --------------------------
          //拡張子別に行コメント文字を定義
          var aExt = new Array();
          aExt["c"] = "//";
          aExt["cpp"] = "//";
          aExt["h"] = "//";
          aExt["js"] = "//";
          aExt["vbs"] = "'";
          aExt["mac"] = "//";
          aExt["pl"] = "#";
          aExt["tex"] = "%";
          aExt["php"] = "//";
          aExt["asm"] = ";";
          aExt["uws"] = "//";
          aExt["conf"] = ";";
          aExt["ppa"] = "//";

          //行選択されていなくても
          GoLineTop_Sel();

          //先頭にキャレットがあり、無選択なときでも
          sSelect = GetSelectedString(0);
          sX = ExpandParameter("$x");
          if ((sSelect.length == 0) && (sX == "1")) GoLineEnd_Sel();

          //拡張子を切り出し
          sExt = ExpandParameter("$f");
          sExt = sExt.substring( sExt.lastIndexOf(".") + 1);
          sExt = sExt.toLowerCase()

          //選択範囲を置換
          ReplaceAll ("^.", aExt[sExt] + "$&", 148); //コメントアウト
          //ReplaceAll ("^([\t\s]*)" + aExt[sExt], "$1", 148); //コメント解除
          CancelMode();
          SearchClearMark();
          ReDraw(0);
          //EOF ----------------------------------


          //CommentCancel.js --------------------
          //拡張子別に行コメント文字を定義
          var aExt = new Array();
          aExt["c"] = "//";
          aExt["cpp"] = "//";
          aExt["h"] = "//";
          aExt["js"] = "//";
          aExt["vbs"] = "'";
          aExt["mac"] = "//";
          aExt["pl"] = "#";
          aExt["tex"] = "%";
          aExt["php"] = "//";
          aExt["asm"] = ";";
          aExt["uws"] = "//";
          aExt["conf"] = ";";
          aExt["ppa"] = "//";

          //行選択されていなくても
          GoLineTop_Sel();

          //先頭にキャレットがあり、無選択なときでも
          sSelect = GetSelectedString(0);
          sX = ExpandParameter("$x");
          if ((sSelect.length == 0) && (sX == "1")) GoLineEnd_Sel();

          //拡張子を切り出し
          sExt = ExpandParameter("$f");
          sExt = sExt.substring( sExt.lastIndexOf(".") + 1);
          sExt = sExt.toLowerCase()

          //選択範囲を置換
          //ReplaceAll ("^.", aExt[sExt] + "$&", 148); //コメントアウト
          ReplaceAll ("^([\t\s]*)" + aExt[sExt], "$1", 148); //コメント解除
          CancelMode();
          SearchClearMark();
          ReDraw(0);
          //EOF ----------------------------------
          • [4556] Re4:行のコメント化 moi 2005年07月19日 17:12

            あ、ありがとうございます。
            でも、ぜんぜんわかりません。
            Comment.js とCommentCancel.js という
            2つのマクロファイルを作るのですか?
            1つ前に頂いたレスのマクロは書いて登録してみましたが、
            ツールバーに設置がわからなくて・・・
            • [4557] Re5:行のコメント化 りーや 2005年07月19日 18:50

              >あ、ありがとうございます。
              >でも、ぜんぜんわかりません。

              あは、サクラエディタって、 ちょっとパンピーにやさしくない って感じるときありますね (^^;;
              誰かやさしい解説本でも 出してくれればいいのに 素晴らしさの割りに知名度もいまいち と思ったり・・・

              >Comment.js とCommentCancel.js という
              >2つのマクロファイルを作るのですか?

              拝見したところ、Comment.js がコメント化(コメントアウト)する方で
              CommentCancel.js はコメント化を解除して戻す方のようです。

              >1つ前に頂いたレスのマクロは書いて登録してみましたが、
              >ツールバーに設置がわからなくて・・・

              ツールバーに設置するには、 マクロの0番~19番のどこかに登録 しておく必要があります。登録したら、いったん「共通設定」を終わらせてから、 すぐに「共通設定」を開きなおして、 マクロがちゃんと登録されているのを確認します。 確認出来たら、「共通設定」の「ツールバー」のタブで、「種別(K)」で「外部マクロ」を選ぶと、 登録したものが出てきますので、それを選んで「→(A)」か「>>(B)」で右側にもってくればOKです。
              • [4559] Re6:行のコメント化 maru 2005年07月19日 22:18

                > りーやさん
                フォローありがとうございます。

                > moi

                説明不足ですいません。
                Comment.js とCommentCancel.js の2つを
                それぞれマクロに登録して云々という意味です。

                カスタマイズ項目が豊富なので
                設定方法を探すのも大変だと思います。
                sakuraのヘルプファイルは以下を参照してください。
                +コマンド概要
                +「ツール(&T)」メニュー
                ・共通設定『マクロ』
                ・共通設定『ツールバー』
                具体的には、りーやさんの解説の通りですね。
        • [4560] Re3:行のコメント化 すす 2005年07月19日 23:08

          ▼ maruさん
          > >> 現在は、SHIFT-F6でコメント記号を入れ…
          > > n-m行の0文字目を矩形選択すれば…
          おぅ、現在そうしてるってことですね。すみませんでした。
          • [4561] Re4:行のコメント化 maru 2005年07月20日 02:39

            >>data:4552
            これ、だめですね。

            VBのIDE環境での動作を意識して
            行選択されていなくても動作するようにしましたが
            インデントされた行が絡むと「行先頭への移動」は
            GoLineTop_Sel()を使うと現在位置が把握できない。
            ので、修正しました。

            ついでに"REM"によるコメントの場合は
            後に続く文字がスペースかタブか予想できないので
            コメント文字を削除する方はユーザの期待の動作を
            予想しにくい。
            とりあえず、な感じの処理を追加しました。

            // ------------------------------
            //拡張子別に行コメント文字を定義
            var aExt = new Array();
            aExt["c"] = "//";
            aExt["bat"] = "REM";
            // - 省略 -

            //行選択されていなくても
            GoLineTop(13);
            sSelect = GetSelectedString(0);
            if (sSelect.length == 0) GoLineEnd_Sel();

            //拡張子を切り出し
            sExt = ExpandParameter("$f");
            sExt = sExt.substring( sExt.lastIndexOf(".") + 1);
            sExt = sExt.toLowerCase()

            //選択範囲を置換
            if (aExt[sExt] == "REM"){
            //コメントアウト用
            ReplaceAll ("^.", "REM\t$&", 148);
            //コメント解除用
            //ReplaceAll ("^([\t\s]*)REM[\t\s]", "$1", 148);
            }
            else {
            //コメントアウト用
            ReplaceAll ("^.", aExt[sExt] + "$&", 148);
            //コメント解除用
            //ReplaceAll ("^([\t\s]*)" + aExt[sExt], "$1", 148);
            }
            CancelMode();
            SearchClearMark();
            ReDraw(0);
            //EOF -----------------------------------------
            • [4562] Re5:行のコメント化【解決】 moi 2005年07月20日 09:36

              すすさん、とんでもないです。ありがとうございます。
              maruさん、丁寧にありがとうございます。
              りーやさん、おかげで登録できました。

              さて、maruさんの最後に記述していただいた
              ものをコピペして、comment.jsという名前で保存し、登録しました。
              コメントの挿入はウマく行ってます。
              大助かりです。
              これだけでも、十分満足なのですが、不思議と欲が出るもので(w
              コメント解除は(Jabaは全くわからないのですが)
              自動認識に書いてくれてるのかな?と思いましたが、うまく
              解除できません。
              コメントマークが「REM」ではなくて「%」だからでしょうか?
              (変な言語使ってるでしょう?w)
              コメントマーク「%」は慣用的に「%//」と表記していますので、
              文字定義のところで、

              aExt["m"] = "%//";
              と、言うケースと
              aExt["m"] = "%";
              というケースで試してみましたがうまくいきませんでした。

              すでに満足なので、今の状況で十分なのですが、
              気が向けば、削除の方も教えてください。

              ありがとうございました。
              • [4565] Re6:行のコメント化【解決】 maru 2005年07月21日 00:03

                解除用もほとんどそのままなので
                掲載しなかったのですが、定義部分は
                ご自分で追記してください。

                // ------------------------------
                //拡張子別に行コメント文字を定義
                var aExt = new Array();
                aExt["c"] = "//";
                aExt["bat"] = "REM";
                // - 省略 -

                //行選択されていなくても
                GoLineTop(13);
                sSelect = GetSelectedString(0);
                if (sSelect.length == 0) GoLineEnd_Sel();

                //拡張子を切り出し
                sExt = ExpandParameter("$f");
                sExt = sExt.substring( sExt.lastIndexOf(".") + 1);
                sExt = sExt.toLowerCase()

                //選択範囲を置換
                if (aExt[sExt] == "REM"){
                //コメントアウト用
                //ReplaceAll ("^.", "REM\t$&", 148);
                //コメント解除用
                ReplaceAll ("^([\t\s]*)REM[\t\s]", "$1", 148);
                }
                else {
                //コメントアウト用
                //ReplaceAll ("^.", aExt[sExt] + "$&", 148);
                //コメント解除用
                ReplaceAll ("^([\t\s]*)" + aExt[sExt], "$1", 148);
                }
                CancelMode();
                SearchClearMark();
                ReDraw(0);
                //EOF -----------------------------------------
              • [4566] Re6:行のコメント化【解決】 しみづ 2005年07月21日 02:42

                >コメントマークが「REM」ではなくて「%」だからでしょうか?

                 「%」は特殊な意味を持つようなので、「%%」とか「\%」で置き換えたらどうなるでしょうか。あるいは16進「0x25」では。
                • [4568] Re7:行のコメント化【最終解決】 moi 2005年07月21日 11:03

                  しみづさん,maruさん、ありがとうございます。
                  すごいです。大感激!
                  ホントにありがとうございました。
                • [4569] Re7:行のコメント化【解決】 しみづ 2005年07月21日 11:34


                   すいません、的外れでした。取り消します。
                  >>data:4552
                  のCommentCancel.jsに
                  aExt["bat"] = "%";
                  を追加して、変えたいところを選択してから実行させたら動きました。

                  >>data:4565
                  こちらでも
                  aExt["bat"] = "%";
                  でできました。