複数行コメントを設定する命令文No.08399
ヤバルゴ mdl.2 さん 16/10/10 12:41
 
秀丸エディタを利用しております。

マクロについて説明をする前に、秀丸エディタを利用する上で使いにくい
と個人的に思った点と、マクロへ至る経緯を説明いたします。
(対応策が間違っていないことを確認していただきたいため。)

【問題点】
秀丸エディタのファイルタイプ別の設定では、各々の設定が独立しています。
ですので、例えば「共通」設定をコピーして「Java」設定を作った後に
「共通」の『デザイン』を変更した場合、「Java」にも同様の変更作業を
しなければなりません。

【対応策】
この作業を省くためには、以下のような挙動が実現できれば良いのでは、
と考えました。

@秀丸エディタでファイルを開く際、デフォルトでは
 「共通」設定を利用する。なお、「共通」では
  『複数行コメント』:自動判定
  『強調表示』:自動判定
 と設定されている。

A特定の拡張子(例えば.java)を開く際は
 「共通」設定を利用する。ただし設定の一部を一時的に変更し、
  『複数行コメント』:言語指定 or ユーザー定義
  『強調表示』:ユーザー定義
 と設定する。

【マクロについて】
上記の対応策を実現するためには、『複数行コメント』や『強調表示』の設定を
読み込むマクロを自動起動マクロに登録する、といった流れになると思います。
(マクロ初心者かつ構想段階ですので具体的に定まってないです。)

『強調表示』の方はloadhilight文で設定できそうですが、
『複数行コメント』の方は命令文がないので、設定できなさそうです。

【質問】
『複数行コメント』を設定する命令文はあるのでしょうか。


以上となります。よろしくお願いいたします。

[ ]
RE:08399 複数行コメントを設定する命令文No.08400
天翔記jp さん 16/10/10 14:08
 
複数行のコメントもloadhilightですよ〜

loadhilight "***.color.hilight",1, 0x00000008;   カラー
loadhilight "***.comment.hilight",1, 0x00000002; 複数行の強調とか(複数行で
ある必要はないです)
loadhilight "***.tree.hilight",1, 0x00000004;  ツリー解析
loadhilight "***.strong.hilight",1, 0x00000001;  強調


拡張子単位だけではなく、
同じ拡張子であっても、ファイルのパス位置等々でも
動的に強調表示のパターンを切り替えたり出来るので便利です。

いずれにしても詳細は、秀丸マクロヘルプのloadhilight文です。

[ ]
RE:08400 複数行コメントを設定する命令文No.08401
ヤバルゴ mdl.2 さん 16/10/10 19:19
 
天翔記jp さん、ご回答ありがとうございます。

>複数行のコメントもloadhilightですよ〜
>loadhilight "***.comment.hilight",1, 0x00000002; 複数行の強調とか(複数行で
>ある必要はないです)
>いずれにしても詳細は、秀丸マクロヘルプのloadhilight文です。

マクロヘルプを読みました。
複数行の強調が複数行コメントに該当するのでしょうか。

試しに以下のようなマクロを組みました。

【sethilight.mac】
if (filetype == ".sty") {
  config "y+";
  loadhilight "yavatex.hilight", 0, 0x3;
}
endmacro;

【yavatex.hilight】
275,#+[0-9]+
209,(?<!\\)(&|\$|\^|~|{|}|_)
81,\\(begin|end)(?={[^ ]*})
17,\\([@a-zA-Z、-◯ぁ-んァ-ヶ亜-熙]+\*?|[^ ])
/<HilightMulti>
/0003,00000003,00,00,00010003,"(?<!\\\\)%",00000002,""

このマクロを手動で実行した結果、強調表示の方は読み込まれましたが、
複数行のコメントの方は読み込まれませんでした。

どこかに誤りがありましたらご指摘してくださると幸いです。
よろしくお願いいたします。

[ ]
RE:08401 複数行コメントを設定する命令文No.08402
h-tom さん 16/10/10 19:49
 

h-tom です。

>どこかに誤りがありましたらご指摘してくださると幸いです。
複数行コメントを、ユーザー定義に設定する必要があります。
(xColorComment)

texだったら、ユーザーで定義では無く、言語指定で tex を設定しても
いいように思いますけどね。

[ ]
RE:08402 複数行コメントを設定する命令文No.08403
ヤバルゴ mdl.2 さん 16/10/10 21:23
 
h-tom さん、ご回答ありがとうございます。

>複数行コメントを、ユーザー定義に設定する必要があります。
>(xColorComment)

>texだったら、ユーザーで定義では無く、言語指定で tex を設定しても
>いいように思いますけどね。

ご指摘の通り、
  config "xColorComment:13";
で、複数行コメントを、TeXの複数行コメントを適用できました。
(ヘルプの読み込みが甘いがために、皆様にはお手数をおかけしています。)

【作成したマクロ】
if (filetype == ".sty" || filetype == ".tex") {
  config "y+";
  config "xColorComment:13";
  loadhilight "yavatex.hilight", 0, 0x1;
} else {
  config "y:2";
}
endmacro;

このマクロで目的通りの挙動を実現できました。
ありがとうございます。

【別の疑問】
上記のマクロでは、複数行コメントを言語指定(TeX)に設定しています。
そのため(?)、複数行コメントを自動判定に戻す処理をしなくても別のファイルを
自動判定できます。

しかし複数行コメントをユーザー定義に設定した場合は、自動判定に戻す処理が必要
となると考えられます。

【質問】
複数行コメントを自動判定に設定する命令文はあるのでしょうか。

よろしくお願いいたします。

[ ]
RE:08403 複数行コメントを設定する命令文No.08405
秀丸担当 さん 16/10/11 11:05
 

複数行コメントが「言語指定」や「ユーザー定義」になっているとき、マクロの
config文で「自動判定」に変更する方法がないか調べてみたところ、ありません
でした。
config文で指定できる方法があるべきなので、今後のバージョンで追加を検討し
たいと思います。

現状でやるとしたら、あらかじめ自動判定となっている設定を用意しておいて、
設定をまるごと読み込み直すような形でやるしかなさそうです。
例えばconfigset文は指定された設定のリストに切り替えます。
使い方の例として、
configset "";
とすると、「共通」に切り替えて、一時的な設定になります。
configset currentconfigset,1;
とすると、現在選ばれている設定のリストから設定を読み込みしなおし、一時的
な設定は解除します。

他には、setfiletype文もあります。
setfiletype ".tex";
とすると、.texに指定されたファイルタイプ別の設定に切り替えます。

[ ]
RE:08405 複数行コメントを設定する命令文No.08406
ヤバルゴ mdl.2 さん 16/10/11 19:50
 
秀丸担当 さん、ご回答ありがとうございます。

>config文で指定できる方法があるべきなので、今後のバージョンで追加を検討し
>たいと思います。

ご検討ありがとうございます。

>現状でやるとしたら、あらかじめ自動判定となっている設定を用意しておいて、
>設定をまるごと読み込み直すような形でやるしかなさそうです。

その発想は思いつきませんでした。
明示的に「共通」設定を読み込むようにすれば、強調表示や複数行コメントを
自動判定に戻す処理は必要ありませんね。
是非マクロに組み込ませていただきます。

皆様のお力添えのおかげで、希望に沿うマクロを作れました。
ありがとうございました。

[ ]