AltComment

面倒すぎて誰も作らなかった全自動コメント反転マクロ

Version 1.10 2008/10/12

目次

| printf("hogehoge"); ←→ //| printf("hogehoge");

ダウンロード

概要と特長

できないこと

セットアップ

インストール

  1. 秀丸エディタ ver 7.00 以降をお使いですね?
  2. マクロフォルダの位置を確認します。(マクロフォルダは秀丸の [その他(O)]-[動作環境(E)...]-[パス]-[環境]-[マクロファイル用のフォルダ(M)] で指定されているフォルダです。無指定なら Hidemaru.exe と同じフォルダです)
  3. ダウンロードしたアーカイブをマクロフォルダに解凍します。
  4. [マクロ(M)]-[マクロ登録(E)...] で AltComment.mac を適当な番号に登録します。
  5. [その他(O)]-[キー割り当て(K)...] で適当なキーに割り当てます。
  6. 割り当てたキーを押して実行します。ユーザー設定ファイルが自動的に作られます。

インストール後のファイル構成は次のようになります。

マクロフォルダ\
│・AltComment.mac              …起動マクロ
│
└─■AltComment\
   ・AltComment-Main.mac     …本体
   ・AltComment.ini          …ユーザー設定ファイル
   ・AltComment-Default.ini  …デフォルト設定ファイル

アップデート

  1. 新しいアーカイブをマクロフォルダに上書き解凍します。ユーザー設定ファイルはそのまま引き継がれます。

アンインストール

  1. インストール時と同じ方法でキー割り当てを解除します。
  2. 同様にマクロ登録も解除します。
  3. AltComment.mac および AltComment フォルダ以下の全ファイルを削除します。レジストリは使っていません。

使い方

動作

無選択時

カーソル位置が地の文ならコメントに、コメント内なら地の文にします。設定により行単位で処理することもできます。〈→設定

行コメント
aa|aa ←→ aa//|aa
範囲コメント
aa|aa ←→ aa/*|*/aa
両方あるとき
カーソル位置がコメント内なら上方直近の有効なコメント記号を削除します。地の文なら設定に従って決められたコメント記号を挿入します。

文字列選択時

選択範囲内の地の文をコメントに、コメントを地の文にします。

行コメント
[aa] ←→ [//aa]
範囲コメント
[aa/*aa*/] ←→ [/*aa*/aa]
行選択時は最初と最後のコメント記号が1行を占めるようにします。
両方あるとき
選択範囲の先頭を基準として自動判別します。

BOX 選択時

1行ごとに分割し、文字列選択時の動作を適用します。全角文字やタブ文字をまたいでも大丈夫です。折り返してる2行目以降は無視されます。

行コメント
範囲コメント
両方あるとき
選択範囲の先頭を基準として自動判別します。

設定

秀丸がカラー表示に対応している言語はほとんどプリセットされてます。〈→プリセット一覧〉 プリセットに満足できないときはユーザー設定ファイル AltComment.ini に記述を加えます。ここではその方法を説明します。

設定は拡張子ごとに行います。また、複数の拡張子をひとつのファイルタイプと見なし、ファイルタイプごとに設定することもできます。詳しくはデフォルト設定ファイル AltComment-Default.ini を参考にするか、 CompleteX のマニュアルを参照してください。〈→CompleteX リファレンス:設定ファイルの書き方

設定ファイルの中身はだいたいこんな感じになります。

AltComment.ini 記述例
[.c]
1L=/*
1R=*/
2L=//
with=space,indent
line=yes
change=3
skipcolors=20

設定項目は次のとおりです。「」以下は説明文なので実際の設定ファイルに書いてはいけません。

定義

1L, 1R, 2L, 2R, ...
コメント記号を定義します。 1L, 2L, ... はコメント開始記号(必須)、 1R, 2R, ... はコメント終了記号(行コメントの場合は省略)です。
1L=//    …行コメント開始記号
2L=/*    …範囲コメント開始記号
2R=*/    …範囲コメント終了記号
; 以下同様

数字は優先順位です。1から連番になっていなければなりません。挿入時は原則として 1L, 1R に指定されたコメント記号が使われます。(後述する change= の設定によっては 2L, 2R も使えます)

with
付加文字列を指定します。(デフォルト = なし)
with=space     …挿入時:コメント記号の内側(コメント内容との間)に半角スペースを付加する
                削除時:コメント記号の内側に半角スペースがあったらそれも削除する
with=indent    …挿入時:地の文に合わせてコメント記号をインデントする
                削除時:インデントされたコメント記号も削除する
with=space,indent    …両方
インデントは処理位置が行頭の場合のみ有効です。
change
挿入時に使うコメント記号を選択します。(デフォルト = 0)
change=0    …常に 1L, 1R を使う
change=1    …無選択時は 1L, 1R を、文字列選択時は 2L, 2R を使う
change=n    …選択範囲が n 行未満のときは 1L, 1R を、それ以上のときは 2L, 2R を使う
BOX 選択時は見かけの選択行数で判断されます。この設定にかかわらず、処理範囲の先頭がコメント内だった場合はそのコメント記号が使われます。
skipcolors
コメント記号と見なさない色をカラーコードで指定します。(デフォルト = なし)
skipcolors=20,11,5    …文字定数、URL、特に強調1 は除外
カラーコードは秀丸マクロヘルプの [内部的な値を表現するキーワード]-[カーソル関連キーワード] を参照してください。カンマ区切りで複数指定できます。(カンマの前後にスペースなどを入れてはいけません)
1LX, 1RX, 2LX, 2RX, ...
判定用の検索パターンを正規表現で記述します。通常の設定で対応できないときに使います。〈→高度な設定例
1SX, 2SX, ...
判定用の検索オプションを指定します。コメント記号がアルファベットのときに使います。〈→高度な設定例

処理範囲

line
行単位で処理するかどうか指定します。(デフォルト = no)
line=yes    …行単位で処理
line=no     …文字列単位で処理
行の途中からコメント化することがない場合は line=yes を指定します。すると無選択時は行全体がコメント化され、範囲選択時は選択範囲が行単位に拡大されます。これは後述する forline=2selline=1 をともに指定するのと同じです。無選択時のコメント解除動作はこの設定に影響されません。
forline
無選択時のコメント化範囲を指定します。 line= の指定を上書きします。(デフォルト = 0)
forline=0    …カーソル位置
forline=1    …行全体(カーソル位置が行末の場合を除く)
forline=2    …行全体(常に)
コメント解除動作はこの設定に影響されません。
selline
文字列選択時の処理範囲を指定します。 line= の指定を上書きします。(デフォルト = 0)
selline=0    …選択範囲そのまま
selline=1    …選択範囲を行単位に拡大
selline=n    …選択範囲が n 行以上のときは行単位に拡大

その他の動作

autosave
実行後、自動的に上書き保存するかどうか指定します。(デフォルト = no)
autosave=yes    …保存する
autosave=no     …保存しない

参照記法

@
デフォルト値として他のセクションを参照します。他のセクションの設定をオーバーライドし、差分だけを書くことができます。
[HTML/XML]
1L=<!--
1R=-->
with=space

[.rhtml]
@=HTML/XML
with=indent

この例だと拡張子 rhtml に対し 1L=<!-- 1R=--> with=indent が設定されます。参照できるのは同じ設定ファイル内にあるセクションだけです。設定を誤ると無限ループします。

ユーザー設定とデフォルト設定

AltComment の設定はユーザー設定ファイル AltComment.ini とデフォルト設定ファイル AltComment-Default.ini の2段構えになっています。ユーザーごとの設定はユーザー設定ファイルに書きます。デフォルト設定ファイルはバージョンアップのたびに上書きされるので、いじらない方がいいです。

コメント記号の定義(1L=, 1R=, 1LX=, 1RX=, 1SX=, ...)は一括して、ユーザー設定ファイルに 1L= が定義されていればユーザー設定が、そうでなければデフォルト設定が採用されます。ふたつの設定ファイルの定義が混ざることはありません。

その他の設定(with=, line=, change=, ...)は項目ごとに、ユーザー設定ファイルに値が書かれてればそれが、書かれてなければデフォルト設定が採用されます。デフォルト設定ファイルに書かれた値を打ち消したいときはユーザー設定ファイルにデフォルト値(selline=0 など)または解釈不能な値(with=none など)を書いてください。

高度な設定例

判定用の検索パターンや検索オプションを別途指定しなければならない例を挙げます。これらの設定はマクロ内部のアルゴリズムを理解していないと難しいので、なるべくプリセットに含めておきたいと思います。通常の設定で対応できない例があったら作者に教えてください。〈→談話室

1LX=, 1RX=, 1SX=, 2LX=, 2RX=, 2SX=, ... を用いるには、対応するコメント記号 1L=, 1R=, 2L=, 2R=, ... が同じ設定ファイルに定義されていなければなりません。

例1: TeX

TeX はコメント記号をエスケープできます。エスケープされた「\%」はコメント記号ではないので無視しなければなりません。このような場合は検索パターンを正規表現で記述します。

[.tex]
1L=%
1LX=(?<!\\)%[ \t]*

この設定はプリセットに含まれています。

例2: C++

C++ で「//*」という文字列がある場合、これは行コメントですが、範囲コメントの開始と勘違いすることがあります。勘違いを防ぐには次のように指定します。

[C/Java]
1L=//
2L=/*
2R=*/
2LX=(?<!/)/\*[ \t]*
2RX=[ \t]*\*/
[.c]
@=C/Java
[.h]
@=C/Java
[.cpp]
@=C/Java

この設定はプリセットに含まれています。

例3: Fortran77

Fortran77 のコメント記号は行頭にある「C」または「*」です。行頭以外の「C」や「*」は無視しなければなりません。文は行単位なので line=yes も指定しておきましょう。

[.f77]
1L=C
1LX=^C
2L=*
2LX=^\*
line=yes

この設定はプリセットに含まれています。なお、実際に Fortran77 でこのマクロを使う際は桁ずれにご注意ください。

例4: Windows コマンドスクリプト

コマンドスクリプト(バッチファイル)は REM 命令がコメント開始記号になります。もし「REMOVE」なんてコマンドがあってもヒットしないよう、検索オプションとして word を指定します。コマンドは行単位なので line=yes も指定しておきましょう。

[.cmd]
1L=REM
with=space    …スペース付加
1LX=^REM      …検索パターン(単語の検索を行うため「^REM[ \t]*」とはしない)
1SX=word      …単語の検索
line=yes

この設定はプリセットに含まれています。なお、大文字小文字を区別するときは casesense を指定します。

1SX=casesense         …大文字小文字を区別する
1SX=word,casesense    …単語の検索、大文字小文字を区別する

プリセット一覧

プリセット(配布時の設定)はデフォルト設定ファイル AltComment-Default.ini に記述されています。内容は次のとおりです。

ファイルタイプ 拡張子 コメント開始 コメント終了 オプション
[MAIL] 秀丸メール, 新規作成, .txt > 1LX=^> ?
with=space
line=yes
[HTML/XML] .html, .htm, .shtml, .xml, .xsl <!-- -->
[ASP] .asp, .aspx, .jsp, .php, .php3, .php4 //
/* */
#
<!-- -->
[ColdFusion] .cfm, .cfml <!--- --->
<!-- -->
[C/Java] .c, .h, .cpp, .hpp, .stl, .java, .js, .rc, .y // 2LX=(?<!/)/\*[ \t]*
2RX=[ \t]*\*/
/* */
[C#] .cs /// 2LX=(?<!/)/\*[ \t]*
2RX=[ \t]*\*/
/** */
//
/* */
[Verilog] .v, .va //
/* */
[SQL] .sql /* */
--
[CSS] .css /* */
[Hidemaru] .mac, .hilight //
[UNIX] .cgi, .pl, .pm, .py, .rb, .rm, .awk, .sh, .mak #
[DOS] .bat, .cmd REM 1LX=^REM
1LS=word
with=space
line=yes
[Basic] .bas, .frm, .cls, .vbs '
[Pascal] .pas { }
(* *)
//
[ASM] .asm, .s, .as ;
[INI] .ini, .reg, .hpt ; 1LX=^;
line=yes
[LISP] .lsp, .l ;
;| |;
[VHDL] .vhd --
[TeX] .tex, .sty, .bib % 1LX=(?<!\\)%[ \t]*
[Fortran90] .f90, .for, .f !
[Fortran77] .f77 C 1LX=^C
2LX=^\*
line=yes
*

コメントマクロ比較

コメントを扱う秀丸マクロはたくさんあります。わかる範囲でピックアップしてみました。 (2005/03/13 現在)

マクロ名 作者 挿入/削除 コメント形式 処理範囲
行コメント 範囲コメント
AltComment
※このマクロです
mobitan 自動判別
(交互反転)
自動判別
(拡張子ごと/複数可)
カーソル位置
行単位
文字列範囲
BOX 範囲
kbComment.mac kotobuki-chive さん 自動判別
(先頭基準)
自動判別
(拡張子ごと)
カーソル位置
文字列範囲
kbCommentB.mac kotobuki-chive さん 自動判別
(先頭基準/
手動選択可)
自動判別
(拡張子ごと)
文字列範囲
C++ コメントブロックマクロ sasak さん 別マクロ // 専用 行単位
行頭引用符挿入&削除マクロ SAS さん 手動選択
(別マクロ)
手動選択 行単位
多形式対応コメント挿入/解除 mobitan 別マクロ 自動判別
(拡張子ごと)
カーソル位置
文字列範囲
BOX 範囲
自動判別コメント挿入/削除マクロ Kuro さん 自動判別
(先頭基準)
手動選択
(ウィンドウごと)
行単位
COBOL 編集用マクロ集 せーた さん 別マクロ COBOL 専用 行単位
コメント挿入削除マクロ FJI さん 別マクロ 自動判別
(拡張子ごと/COBOL 対応)
※範囲コメントは挿入のみ
行単位

この比較表に間違いがあったら教えてください。〈→談話室

お約束

動作環境

ライセンス

配布場所

一次配布場所は Wisteria - 秀丸マクロ - AltComment です。二次配布は次のところで行われています。

謝辞

バージョン履歴

Version 1.10 (2008/10/12)
Version 1.06 (2006/03/05)
Version 1.05 (2005/08/09)
Version 1.05 (2005/03/04)
Version 1.04 (2005/02/27)
Version 1.03 (2005/02/20)
Version 1.0 beta 11 (2004/10/11)
Version 1.0 beta 10 (2004/10/04)
Version 1.0 beta 9 (2004/06/22)
Version 1.0 beta 8 (2004/05/04)
Version 1.0 beta 5 (2004/03/07)
Version 1.0 beta 4 (2004/03/03)
Version 1.0 beta 1 (2004/02/28)

フィードバック

設定例の提供、バグ報告、ツッコミなどは 談話室 へどうぞ。