マクロでフォントの種類変更時のsaveconfiNo.28328
yamachof さん 10/05/25 11:12
 
はじめて投稿させていただきます。
yamachofと申します。

マクロにてconfigでフォント名を指定後にsaveconfigを行っても
上書き保存や、再度文書を開いたタイミングで元の設定に戻ってしまうという現象が
起こっております。
"xFont:"指定でも同様の現象が起こります。

sオプションにてフォントサイズの変更ではこのような現象は起きません。

当方の環境
・WindowsXP SP3
・秀丸エディタバージョン:8.00

実行したマクロのソースコードは以下になります。
------------------------------------------------
$msgothic = "MS ゴシック";
//$konatsu = "KonatuTohaba";
$new_font = "(" + $msgothic + ")";
config "f" + $new_font;
//config "xFont:" + $new_font;
config "s20";

//設定は切り替わるが、上書き保存をすると、なぜか元のフォントに戻ってしまう。
//(エディタを閉じて、再度開いても同じだった。)
//試しにxオプションで設定してみたが、同じだった。
//但し、一度、ファイルタイプ別の設定を開いてOKを押下すれば保存される。
//また、sオプションについては、このように元に戻ることは無かった。

saveconfig;
------------------------------------------------

[ ]
RE:28328 マクロでフォントの種類変更時のNo.28329
秀丸担当 さん 10/05/25 13:24
 

>マクロにてconfigでフォント名を指定後にsaveconfigを行っても
>上書き保存や、再度文書を開いたタイミングで元の設定に戻ってしまうという現象が
>起こっております。
>"xFont:"指定でも同様の現象が起こります。

ご報告ありがとうございます。
確認してみたところ、確かに言われている通りになりました。

内部的に[ファイルタイプ別の設定]→[フォント]→[多言語]に相当する部分は書
き換わっておらず、これを保存しているため書き換わっていない状態になってい
ました。
以前から起きていた問題だったようです。

次のバージョンでフォント名も大丈夫になるように修正させていただきます。

[ ]
RE:28329 マクロでフォントの種類変更時のNo.28330
秀丸担当 さん 10/05/25 15:00
 

現状のまま回避するとしたら、少々手間ですが、マクロからレジストリを直接書
き換えるようにしたらなんとかできました。
FontInternationalのところはencodeとは違う番号になっていて、変換がややこ
しいかもしれません。

saveconfig;

//設定名取得
$filetype=filetype;
if(encode==26)$filetype = "binary";
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\" + $filetype;
if(result!=0){
  $configname = "Config\\"+getregstr("");
  closereg;
} else {
  $configname = "Default";
}

//設定のレジストリを書き換え
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\" + $configname;
if(result!=0){
  //encodeとFontInternational番号の対応表
  #a[0]=1;#a[1]=1;#a[2]=0;#a[3]=1;#a[4]=1;
  #a[5]=0;#a[6]=0;#a[7]=0;#a[8]=2;#a[9]=3;
  #a[10]=4;#a[11]=5;#a[12]=6;#a[13]=8;#a[14]=7;
  #a[15]=9;#a[16]=10;#a[17]=11;#a[18]=12;#a[19]=13;
  #a[20]=14;#a[21]=15;#a[22]=16;#a[23]=17;#a[24]=18;
  #a[25]=19;#a[26]=0;#a[27]=0;#a[28]=0;
  writeregstr
    "FontInternational"+rightstr("0"+str(#a[encode]),2),
    getconfig( "Font" );
  closereg;
}

//設定をレジストリから再度更新
envchanged;

[ ]