先頭行 -*- coding: hoge; mode: fuga -*-No.34926
5HPONGO さん 16/04/04 05:49
 
 まいど,5HPONGOと申します。

 現在,秀丸エディタと某マックスの両方を使っています(某マックスについて
は初心者レベルです)。ご承知のこととは存じますが,某マックスではファイル
の第1行または第2行に
        -*- coding: sjis -*-
または
        -*- coding: utf-8 -*-
という記述が含まれていると,文字コード(エンコーディング)がそれぞれ
Shift_JIS または UTF-8 であるとして開かれます(他のエンコーディングも指
定できます)。また,編集時にこの部分を変更してから上書き保存すると,ファ
イルのエンコーディングが変更されます(変換できない文字があると文句を言わ
れます)。

 また,
        -*- mode: lisp -*-
になっていると Lisp のソースプログラムファイルだと認識されます。拡張子に
よるファイルの種類指定よりも,こちらの方を優先して見てくれればありがたい
です(例えば .bak ファイルであっても -*- mode: lisp -*- を見て .lisp の
設定を参照するように)。もちろん Lisp ソースプログラム用の(つまり .lisp
用の)強調表示指定ファイルは自分で作成しなければならないと認識しています
(秀丸標準実装の Lisp らしきものの設定では不充分です)。上記のものは
        -*- coding: utf-8; mode: lisp -*-
        -*- mode: lisp; coding: utf-8 -*-
のように(セミコロン区切りで)両方が順不同で現れても認識されるようです。
他にもいろいろ指定できるようですが,私自身はこの2種類しか使っていません
(他のものはよくわからない)。

 こういった機能を秀丸エディタで標準装備していただければありがたいのです
が,某マックスなんぞ使ってはいかんとかの理由で無理ならば,マクロで実現す
るためのヒントをいただければ幸いに存じます。

 ほな,ご機嫌よろしゅう。

----
5HPONGO
[2016-04-04T00:26:36+09:00]

[ ]
RE:34926 先頭行 -*- coding: hoge; mode:No.34930
秀丸担当 さん 16/04/04 15:05
 

似たような判断としては、xml宣言やhtmlのmetaタグがあります。
[その他]→[動作環境]で左下の「上級者向け設定」をONにして、
[その他]→[動作環境]→[ファイル]→[エンコード1]のところに設定があり、テ
キストの先頭に書かれた内容を判断しています。
coding: といった書き方には対応していないです。
Emacs独自の書き方であれば対応するのはどうかと思いますが、プログラミング
言語の解釈として確立されたものであれば秀丸エディタで設定があってもいいと
は思います。

現状でやるとしたら、自動起動マクロでやる方法が考えられます。
[マクロ]→[マクロ登録]→[自動起動]の「ファイルを開いた直後」に登録できま
す。
例えば簡単にした例では、先頭100文字に"coding: utf-8"が含まれていればutf-
8に変更するといったマクロでは以下のような感じになります。

$a=gettext(0,0,100,0);
if(strstr($a,"coding: utf-8")>=0){
  if(encode!=6){  //utf8
    setencode 6,0;
  }
}
endmacro;

[ ]
RE:34930 先頭行 -*- coding: hoge; mode:No.34931
colder さん 16/04/04 17:46
 
>Emacs独自の書き方であれば対応するのはどうかと思いますが、プログラミング
>言語の解釈として確立されたものであれば秀丸エディタで設定があってもいいと
>は思います。
RubyやPythonがこれでファイルの文字コードを判断しています。
http://docs.ruby-lang.org/ja/1.9.3/doc/spec=2fm17n.html#script_encoding
http://docs.python.jp/2.5/ref/encodings.html

[ ]
RE:34930 先頭行 -*- coding: hoge; mode:No.34932
5HPONGO さん 16/04/05 00:15
 
秀丸担当 様

 まいど,お世話になっております。ご回答ありがとうございます。

> 現状でやるとしたら、自動起動マクロでやる方法が考えられます。
> [マクロ]→[マクロ登録]→[自動起動]の「ファイルを開いた直後」に登録できま
> す。
> 例えば簡単にした例では、先頭100文字に"coding: utf-8"が含まれていればutf-
> 8に変更するといったマクロでは以下のような感じになります。
>
> $a=gettext(0,0,100,0);
> if(strstr($a,"coding: utf-8")>=0){
>   if(encode!=6){  //utf8
>     setencode 6,0;
>   }
> }
> endmacro;

 何とか理解できました。"mode: lisp" の場合は setfiletype ".lisp"; を使
えばいいのだろうというのも分かりました。強烈に雑なバージョン(人様にお見
せできない代物)ならば作れそうです。誠にありがとうございました。

 ほな,ご機嫌よろしゅう。

----
5HPONGO
[2016-04-05T00:06:49+09:00]

[ ]
RE:34931 先頭行 -*- coding: hoge; mode:No.34933
秀丸担当 さん 16/04/05 11:43
 

情報ありがとうございます。
プログラミング言語としてそういう解釈があるということで、設定があってもい
いと思います。今後の機能の参考にさせていただきます。
やるとしたらファイルタイプ別の設定のほうがよさそうです。

[ ]