perl用一括コメント化マクロNo.06865
旅人 さん 00/11/21 19:03
 
perl用の「一括コメント化、一括コメントアウト」マクロを探しております。

動作としては
●コメント化
 選択範囲内の行頭に # を付ける。

●コメントアウト
 コメントの逆で選択範囲内の行頭に # があればそれを削除。

当初は自分で作ろうと思っていたのですが、マクロの文法に慣れていないため一向に
はかどりません。
どなたか上記のような動作をするマクロをご存じであればお教え下さい。
よろしくお願いいたします。

[ ]
RE:06865 perl用一括コメント化マクロNo.06866
かかし さん 00/11/21 19:49
 
かかしです、こんにちは。

>動作としては
>●コメント化
> 選択範囲内の行頭に # を付ける。
>
>●コメントアウト
> コメントの逆で選択範囲内の行頭に # があればそれを削除。
>
>当初は自分で作ろうと思っていたのですが、マクロの文法に慣れていないため一向に
>はかどりません。
>どなたか上記のような動作をするマクロをご存じであればお教え下さい。
>よろしくお願いいたします。

こんな感じでC++のコメントを付けるマクロを作っていたので、
ちょっと書き換えて送ります。

これで、試してみて下さい。

--cmt_ins.mac

#inix = x;
#iniy = y;
disableinvert;
if(!selecting){
moveto 0 ,y ;
insert "#";
enableinvert;
endmacro;
}
//以下、秀丸バグ対応
#topx = 0;
#topy = seltopy;
if(selendx != 0){
#endx = 0;
#endy = selendy + 1;
}else{
#endx = selendx;
#endy = selendy;
}
moveto #topx,#topy;
beginsel;
moveto #endx,#endy;

//置換
replaceall "^","#",regular,inselect;

moveto #inix,#iniy;
enableinvert;
endmacro;
---

---cmt_del.mac

#inix = x;
#iniy = y;
disableinvert;
if(!selecting){
selectline;
replaceall "^#","",regular,inselect;
enableinvert;
endmacro;
}

//以下、秀丸バグ対応

#topx = 0;
#topy = seltopy;
if(selendx != 0){
#endx = 0;
#endy = selendy + 1;
}else{
#endx = selendx;
#endy = selendy;
}
moveto #topx,#topy;
beginsel;
moveto #endx,#endy;
//置換
replaceall "^#","",regular,inselect;

moveto #inix,#iniy;
enableinvert;
endmacro;
---


---かかし

[ ]
RE:06865 perl用一括コメント化マクロNo.06867
yoshi223 さん 00/11/21 20:23
 
>●コメント化
> 選択範囲内の行頭に # を付ける。
期待されているものとはちょっと違うかもしれませんが
拙作の矩形挿入のマクロが以下にあるので良かったら
使ってみてください.
http://www.alpha-net.ne.jp/users2/yoshi223/pc/Hidemaru/_RectInsert.mac
コメントを付けたい位置に移動してマクロを起動,
コメントを付けたい最後の行に移動してENTER,
あとはダイアログに挿入したい文字列を入れればOKです.
デフォルトは//なんで,マクロをいじるなりして
対処してください.

>●コメントアウト
> コメントの逆で選択範囲内の行頭に # があればそれを削除。
>
これまた期待しているものとはちょっと違うかもしれませんが
BOX選択で削除するのも一つの手です.

#マクロ会議室向きのネタですね(^^;

[ ]
RE:06866 perl用一括コメント化マクロNo.06868
かかし さん 00/11/21 20:36
 
かかしです、こんにちは。

自己レスです。

>こんな感じでC++のコメントを付けるマクロを作っていたので、
>ちょっと書き換えて送ります。
>
>これで、試してみて下さい。

さっきのマクロですが、結局やりたいことは、

--コメント挿入
「選択範囲の行頭(^)を # に置換する」
--コメント削除
「選択範囲の行頭+#(^#)を行頭(^)に置換する」

ということなのですが、カーソルが、かならずしも行頭を含むとも
限らないので、その時の処理をいくつか加えてあるだけです。

---かかし

[ ]
RE:06868 perl用一括コメント化マクロNo.06869
旅人 さん 00/11/22 00:14
 
バグ対応の方で無事動作しました。
アリガトウございます。非常に助かります。
早速ファンクションキーに登録させていただきました。感謝感謝。
そこで、もう一つ教えていただきたいことがあります。
コメント化、またはコメントアウト化したあとに
選択範囲の一番下の次の行にカーソルを動かすということは
できるのでしょうか?具体的にはこんな感じです。

下の2行が選択されていたとします。
******
******

この2行をコメント化したら
#*****
#*****


★の位置にカーソルを移動させたいのです。
たぶんmovetoを使うのだと思うのですが、選択範囲の一番下の行の位置を
どうやって取得したらよいのか、皆目見当がつきません。
誠に恐縮ですがお教え願えませんでしょうか?
度々で申し訳ありません。

[ ]
RE:06867 perl用一括コメント化マクロNo.06870
旅人 さん 00/11/22 00:16
 
レスポンスありがとうございます。
折角ですが、今回はかかしさんのマクロを使用してみたいと思います。
また、なにか不明な点があったら質問させてください。
その時には是非ともお願いします。

[ ]
RE:06869 perl用一括コメント化マクロNo.06874
かかし さん 00/11/22 09:31
 
旅人さん、おはようございます。かかしです。

>下の2行が選択されていたとします。
>******
>******
>
>この2行をコメント化したら
>#*****
>#*****
>★
>
>★の位置にカーソルを移動させたいのです。
>たぶんmovetoを使うのだと思うのですが、選択範囲の一番下の行の位置を
>どうやって取得したらよいのか、皆目見当がつきません。
>誠に恐縮ですがお教え願えませんでしょうか?
>度々で申し訳ありません。

マクロの一番最後で記述している
moveto #inix,#iniy;

moveto #endx,#endy;
と書き換えることで、対応できます。

一般的に、選択された範囲の最後を取得するのは、

#end_x = selendx;
#end_y = selendy;

となります。

---かかし

[ ]
RE:06869 perl用一括コメント化マクロNo.06875
ひろ さん 00/11/22 10:41
 
 旅人さん今日は、ひろです。
> たぶんmovetoを使うのだと思うのですが、選択範囲の一番下の行の位置を
 範囲選択関係は、seltopx, seltopy, selendx, selendy を参考にして下さい。
 また perl だと editor 的な行の数え方をした場合の次の行ですよね。こ
の場合は moveto より movetolineno を使った方がよいでしょう。column,
lineno も合わせて参照してください。

 投稿の全て follow していませんが、6866
> //以下、秀丸バグ対応
これは bug というより仕様というべきだと思う(^^)。

[ ]
RE:06875 perl用一括コメント化マクロNo.06876
かかし さん 00/11/22 11:42
 
かかしです、こんにちは。

> 投稿の全て follow していませんが、6866
>> //以下、秀丸バグ対応
>これは bug というより仕様というべきだと思う(^^)。

・・・申し訳ありません。
<以下言い訳>
あのマクロを作ったのが1999/8/19(もう1年以上前・・・)
だったのですが、その時のコメントをそのままこの会議室に送ってしまったのです。

今では、なにが「バグ」なのかもわからず送ってしまった後
やばい・・と思ったのですが。

あのコメントを見て不快に思った方、申し訳ありません。
この場を借りてお詫び申し上げます。

以上です。
---かかし

[ ]
RE:06874 perl用一括コメント化マクロNo.06878
旅人 さん 00/11/22 14:50
 
動作を確認しました。ありがとうございます。
これで仕事がはかどります。
マクロは時間があるときにじっくりモノにしてみたいと思います。

それから意味も知らずバグのという言葉を使ってしまい
申し訳ありませんでした。

これからもよろしくお願いします。


[ ]
RE:06865 perl用一括コメント化マクロNo.06880
える さん 00/11/24 13:32
 
>perl用の「一括コメント化、一括コメントアウト」マクロを探しております。

perl5 ならブロック化されたコメントにすればいいんじゃ...


ex)

if ($a==1)
{
  print "test";
}



=disable : 2000.11.21 挙動が怪しいので停止

if ($a==1)
{
  print "test";
}

=disable : 2000.11.21 挙動が怪しいので停止 (ここまで)
=cut

再び使えるようにするためには、色々方法が
ありますが、



=disable : 2000.11.21 挙動が怪しいので停止
=cut 2000.11.22 テストのため停止解除

if ($a==1)
{
  print "test";
}

=disable : 2000.11.21 挙動が怪しいので停止 (ここまで)
=cut

みたいに、さらに

=disable : 2000.11.21 挙動が怪しいので停止
=cut 2000.11.22 テストのため停止解除
=disable : 2000.11.24 結局必要ないので停止

if ($a==1)
{
  print "test";
}

=disable : 2000.11.21 挙動が怪しいので停止 (ここまで)
=cut

などと、後から何故コメントされているかわか
って便利かもしれないです。
# 秀丸でコメント色にならないのが欠点か。

「POD 形式」というコメント文法に則っておけ
ばあとでドキュメント化できます。
( POD 形式はコメント文法であって = で始める
コメント文を POD と呼ぶわけではないです)

[ ]
RE:06880 perl用一括コメント化マクロNo.06887
旅人 さん 00/11/25 23:19
 
>>perl用の「一括コメント化、一括コメントアウト」マクロを探しております。
>
>perl5 ならブロック化されたコメントにすればいいんじゃ...
># 秀丸でコメント色にならないのが欠点か。

そうなんですよ。それって結構大きな問題なんです。
でも今はかかしさんに提示していただいたコードですごく満足しています。
今までが、もう不便で不便で、VC++かDelphiで専用のエディタを作ろうかと、
そこまで考えていました。
やっぱり手になじんだエディターが一番使いやすいですね。

[ ]
RE:06887 perl用一括コメント化マクロNo.06896
かかし さん 00/11/27 18:50
 
かかしです、こんにちは。

>>perl5 ならブロック化されたコメントにすればいいんじゃ...
>># 秀丸でコメント色にならないのが欠点か。
>
>そうなんですよ。それって結構大きな問題なんです。
>でも今はかかしさんに提示していただいたコードですごく満足しています。

昔、マクロになれ始めた頃作ったやつで、個人で使っていたのですが
そこまで言ってくれると、ほんとに嬉しいです。

>今までが、もう不便で不便で、VC++かDelphiで専用のエディタを作ろうかと、
>そこまで考えていました。
>やっぱり手になじんだエディターが一番使いやすいですね。

ですね。
でもカスタマイズしまくってるいるので、普通の秀丸だと使いづらいんですよね。

---かかし

[ ]