縦書きの自動切替No.07227
EOF さん 12/06/18 01:18
 
お世話になりますEOFです

ファイルを開く際に縦書きモードへ自動切り替えする方法の追加要望です。
現在、ファイルタイプ別の設定にある「縦書き」を使えば切り替え可能ですが、
特定のファイルだけを容易に切り替えできる方法がやはり欲しいということで、

・ファイルを開く際、ファイル先頭部に特定の文字列がある場合に縦書きとする。
・「特定の文字列」はユーザーが指定できるものとする。

というような機能があればと思うのですが、どうでしょうか。
動作環境→ファイル→開く、辺りに来る機能かと思います。
縦書き切り替えの話は確かだいぶ前にもちらっと見かけたと思うのですが、
今一度ご検討頂ければありがたいです。

[ ]
RE:07227 縦書きの自動切替No.07228
秀まるお さん 12/06/18 09:04
 
 特定のファイルの場合に限って自動で「ファイルタイプ別の設定」を切り替え
る機能ということでしたら、たしかにあったらいいかなぁと僕も思います。

 僕の場合、デバッグ目的でバイナリモードで開く場合があるのですが、一度バ
イナリモードで開いたファイルをもう一度履歴から開こうとすると、自動でバイ
ナリモードになってくれないのが不便だなぁと思っていた所です。この辺も直し
たい所ですけども、今のところ手を付けてないです。

 ブックマークに登録しておく時に、そのファイルを開く時のファイルタイプ別
設定も指定出来るようにするってアイデアもありますけどもそういうのはどうで
しょうかね。(あくまでネタとしてですが)

 対応するとしたら、なるべくなら汎用性のある機能にしたい所です。

> ・ファイルを開く際、ファイル先頭部に特定の文字列がある場合に縦書きとする。
> ・「特定の文字列」はユーザーが指定できるものとする。

 とりあえずそういう機能でよければ現状マクロで実現出来るには出来るので、
それでどうでしょうか。マクロの例では、例えば

    #x = x;
    #y = y;
    searchdown2 "このファイルは縦書き";
    if( result == 0 ) {
        searchup "このファイルは縦書き";
    }
    if( result == 1 ) {
        config "xTategaki:1";
    }
    moveto x, y;

 みたいなマクロを作っておいて、それを「マクロ・マクロ登録...」の「自動
起動」ページ中の「ファイルを開いた直後」の所に登録しておけばいいです。

[ ]
RE:07228 縦書きの自動切替No.07229
EOF さん 12/06/18 16:48
 
> とりあえずそういう機能でよければ現状マクロで実現出来るには出来るので、

なるほど!
どうも時代について行ってなかったようです。
自動起動マクロ便利ですね。

切り替えについては、そのブックマーク登録法も良さそうです。
でも私の方は秀丸の最新の状況をひと通り把握できてないぽいので、
まずはどなたか見地お持ちの方がいらっしゃいましたら。
私も何か思いついたことがありましたらまた後ほどお邪魔します。

ではでは

[ ]
RE:07229 縦書きの自動切替No.07230
EOF さん 12/06/18 17:07
 
試して気づきましたが、ファイルを開く時の自動起動マクロ法だと
デスクトップ保存からの復元では使えなかったですね。

かと言って復元時にこの自動起動を追加するなんてのでは
そもそも復元にならなくなりますし。

何か別の手を、ということになりますが、
まずは私もゆっくり考えてみたいと思います。

では

[ ]
RE:07230 縦書きの自動切替No.07231
秀まるお さん 12/06/18 18:02
 
 たしかにデスクトップ復元だとすべてのウィンドウ上ではマクロ実行されない
ようです。複数あるウィンドウのうちの1つだけで実行されてしまうようです。

 何か対策を考えてみます。

[ ]
RE:07231 縦書きの自動切替No.07232
山紫水明 さん 12/06/18 20:45
 
 秀まるおさん,

> たしかにデスクトップ復元だとすべてのウィンドウ上ではマクロ実行されない
>ようです。複数あるウィンドウのうちの1つだけで実行されてしまうようです。

秀丸エディタヘルプの「マクロ登録」→「自動起動マクロ」では,
ファイルを開いた直後登録マクロについて
「デスクトップ復元でファイルを開いた場合は呼び出されません。」
とありますから,実行されないのが仕様ですよね。
 秀丸エディタ会議室の方で,先日示した拙作の折りたたみ関係のマクロも自動
起動がらみですが,こちらの方はデスクトップの復元で10個のファイルのうち7
個で自動起動が実行されます。何か条件があるようです。

                          山紫水明

[ ]
RE:07232 縦書きの自動切替No.07233
秀まるお さん 12/06/19 14:17
 
 たしかにヘルプにそう書いてあるようです。ですが、実際は、特定の
ウィンドウ上では実行されるようで、ちょっと仕組みがおかしい気がします。

 もうちょっと詳しく調べて、なんとか対策を考えさせていただきます。

[ ]
RE:07233 縦書きの自動切替No.07234
秀まるお さん 12/06/19 17:22
 
 常駐秀丸からデスクトップ復元を実行した場合は大丈夫ですが、新規作成した
秀丸からデスクトップ復元を実行すると、その新規作成状態の秀丸上に限って
マクロが実行されてしまうようでした。

 10個開くうちの7個で実行されてしまうって現象は、すみませんがこちらで
は確認できませんでした。実行状況をトレースした限りでも、一応そういう風に
はならないはずのような気がします。

 とりあえず、新規作成状態の秀丸上でマクロ実行されてしまうのは修正させて
いただきます。

 それとは別に、デスクトップ復元の場合も各ウィンドウそれぞれでマクロ実行
するオプション追加も、出来るかとうかも含めてトライしてみます。

[ ]
RE:07234 縦書きの自動切替No.07235
EOF さん 12/06/19 18:31
 
なるほど「復元時」とかいうイベントを追加する形だと
色々整合性が取れそうですね。
私の問題、縦書の切り替えはそれで行けそうです。

バイナリの方はトリガーになるものをファイル中に置けませんから
いずれにしてもまた別の仕組みということになりそうですか。


考えてみると復元とヒストリから開くのでは少し違ってそうですね。

復元の場合は環境を含めて復元して欲しいですが、
ヒストリから開く場合は、新たに開くだけでも感覚としては合いそう。

復元だけであれば窓の数もそう多くないでしょうから、
ファイルタイプ別の設定の内容を、窓の数分全部、
レジストリ保存でもいいかもしれません。

でも、まるおさんのご希望のヒストリから開く形だとその数分保存。
今時の記憶域なら何も問題無いサイズかもしれませんが。
いずれにしても設定保存するかしないか選べる形が欲しいかもですね。

と、勝手なことを申しておりますが。
どんな形になるにせよ新しい版また楽しみになりました。

[ ]
RE:07234 縦書きの自動切替No.07236
山紫水明 さん 12/06/19 20:38
 
 秀まるおさん,

> 常駐秀丸からデスクトップ復元を実行した場合は大丈夫ですが、新規作成し
>た秀丸からデスクトップ復元を実行すると、その新規作成状態の秀丸上に限っ
>てマクロが実行されてしまうようでした。

 どうも話がずれていたようです。私の場合は常駐秀丸からデスクトップ復元を
実行していました。

> 10個開くうちの7個で実行されてしまうって現象は、すみませんがこちら
>では確認できませんでした。実行状況をトレースした限りでも、一応そういう
>風にはならないはずのような気がします。

 実行されないのはマクロの内容によるのかなと思い,例示された縦書きマクロ
で実行してみても同じ結果でした。
 自動起動が実行されないファイルはいずれも一画面におさまる程度の小さいも
ので,試みにそのファイルの末尾に改行を追加して行数を多くすると,自動起動
が実行されて縦書きになりました。
 ファイルの行数が挙動に影響するものかどうかわかりませんが,今のところそ
んなところです。

                          山紫水明

[ ]
RE:07236 縦書きの自動切替No.07237
秀まるお さん 12/06/20 12:06
 
 常駐秀丸からデスクトップ復元を実行して、「ファイルを開いた直後」の
マクロが実行されてしまうケースは…、すみませんがこちらでいろいろ調べた限
りは再現方法が分かりませんでした。

 ただ、なんとなくではありますが、こういうことが内部的に起きればそうなる
こともあるのかなぁって処理は見つけました。それは、新規作成した秀丸からデ
スクトップ復元してマクロ実行されてまうのと同じ処理の部分でした。

 なので、そこの部分を修正して、V8.20β24としてアップロードさせていただ
きます。

 それで一回テストしてみて欲しいということでお願いします。

 それでも再現してしまうようでしたら、「設定内容の保存/復元...」で設定
ファイルを作って、それを添付ファイルで送っていただく作戦をお願いしたい所
です。

 それともう1点の、デスクトップ復元の時にマクロ自動実行されない件は、こ
れは過去の記録を調べてみた所、

     もしもマクロの中でopenfileやrestoredesktop命令を使っていると、
     秀丸エディタが誤動作してしまう。
     (たぶんハングアップする?)

 ってことがあって、それであえて禁止してるだけのようでした。なので、
マクロの中身でそういうことをしてなければ、自動起動出来ないことは無いよう
です。

 なので、「マクロ・マクロ登録・自動起動」のページに「デスクトップ復元時
も実行する」ってオプションを用意して、それをONにすれば、デスクトップ復元
時にもマクロが自動起動されるようにします。

 よろしくお願いします。

 次のβ版はなるべく早めにアップロードします。

[ ]
RE:07237 縦書きの自動切替No.07238
山紫水明 さん 12/06/20 18:09
 
 秀まるおさん,

> 常駐秀丸からデスクトップ復元を実行して、「ファイルを開いた直後」の
>マクロが実行されてしまうケースは…、すみませんがこちらでいろいろ調べた限
>りは再現方法が分かりませんでした。

 そうですか。こちらでは実行されるのが普通のようで,実行されないのが例外の
ようです。なお,新規ファイルから「デスクトップの復元」を実行しても同じです。

 ちなみに「ファイルを開いた直後」に登録しているマクロは OpenEvent.mac で
中身は
//----------------------------
execmacro "RestoreFold.mac";
execmacro "TateOpen.mac";
endmacro;
//----------------------------
最初のはライブラリに登録した「折りたたみを自動保存・自動復元するマクロ」で
2番目のは,
//-------- TateOpen.mac --------------------------------------------//

//1行目の指示により縦書きに変えるマクロ      2012.6.19

$tategakisign = "縦書";   //縦書き指示語
#gyo = 1;  // 行番号の縦書き
#hankaku = 0;  // 半角文字の縦書き
#hankan = 0;   // 半角漢数字の使用
#set = 1;   // 半角数字2文字セット縦書き
#kasen = 1; // カーソル行の下線モード
#kaiten = 1;   // 全角の<>を90度回転
#flag = 0x01 + 0x02 * #gyo + 0x04 * #hankaku + 0x08 * #hankan + 0x10 * #set
  + 0x20 * #kasen + 0x40 * #kaiten;
$firstline = gettext2( 0, 1, linelen2, 1 );
if( strstr($firstline, $tategakisign) >= 0 ) {
    config "xTategaki:" + str(#flag);
}
endmacro;
//------------------------------------------------------------------//
というものです。
 なお,秀丸エディタは少し古かったので,最新のβ版(浮動小数点数版)にし
てみましたが,結果は同じです。 (Windows Vista)

> それで一回テストしてみて欲しいということでお願いします。
> それでも再現してしまうようでしたら、「設定内容の保存/復元...」で設定
>ファイルを作って、それを添付ファイルで送っていただく作戦をお願いしたい所
>です。

 了解しました。

>     もしもマクロの中でopenfileやrestoredesktop命令を使っていると、
>     秀丸エディタが誤動作してしまう。
>     (たぶんハングアップする?)
> ってことがあって、それであえて禁止してるだけのようでした。なので、
>マクロの中身でそういうことをしてなければ、自動起動出来ないことは無いよう
>です。

 マクロの中身で判断しているとすれば,私のマクロの場合はそういう命令はな
いので自動起動しているのかもしれません。
 なお,私の場合,自動起動しても何等差し支えありません。自動起動するファ
イルとしないファイルがあること,それとヘルプとの整合性がちょっと気になっ
ただけです。

                          山紫水明

[ ]
RE:07238 縦書きの自動切替No.07239
秀まるお さん 12/06/21 09:46
 
 なるべく早めに次のβ版でテストしてもらおうと思ったんですが、新しく追加
した「デスクトップ復元でも実行」のオプションが、タブモードだとうまく動か
ないことを今見つけてしまいました。

 もうちょっと時間かかりそうです。少々お待ちください。

[ ]
RE:07239 縦書きの自動切替No.07241
山紫水明 さん 12/06/21 20:03
 
 秀まるおさん,

β24で試して見ました。

 次のようなテスト用ファイルを作ります。
ヘルプの「秀丸エディタの概要」の最初の部分
------------------------------------------------------------------------
 秀丸エディタは、Windows 95,98,Me以降、またはWindows NT4.0,2000,XP,
Vista,7以降で動作するテキストエディタです。
(その他のOSの対応 )
 秀丸エディタは、Windows上での簡単なテキストファイル編集から、本格的な
プログラム開発にまで対応するように設計されています。Windowsアプリケーシ
ョンらしさを保ちつつ、従来のDOS上のエディタに慣れた方にも違和感なく使っ
ていただけるように設計されています。
 秀丸エディタはシェアウェアです。継続してご利用いただく場合は作者に送金
していただく必要があります。詳しくは送金方法 を参照してください。
 秀丸エディタのバージョンアップは無料です。古いバージョンの秀丸エディタ
に対して送金した人は最新の秀丸エディタも追加の送金なしで利用できます。
 基本的なスペック・特徴は以下のとおりです。
------------------------------------------------------------------------
(途中の改行はなし)
 これを新規ファイルに貼り付けて,ファイル先頭に
縦書き+改行
を挿入して,test1.txt として保存。

同じ内容を2回貼り付け,同様にして test2.txt として保存。
以下同様に3〜5回貼り付けて test3.txt〜test5.txtとして保存。

この5つのファイルを同時に開いてデスクトップ保存を実行して,いったん終了。
マクロの自動起動の内容は前回のコメントの通りです。

ファイルを開いた直後の自動起動
1.デスクトップ復元時も実行するに設定
 自動起動は実行されるが,test1.txtで実行されないことがある。

2.デスクトップ復元時は実行しないに設定
 自動実行されないことが多いが,test3.txt,test4.txt,test5.txt が縦書きに
 なることがあり,少し不安定。
(常駐秀丸,新規ファイル,タブモード,非タブモードともに)

とりあえず,以上のような結果です。
設定ファイルを送る必要があるでしょうか。

                          山紫水明

[ ]
RE:07241 縦書きの自動切替No.07242
秀まるお さん 12/06/21 23:01
 
 マクロ実行しないはずの設定でも実行してしまう理由が、自分的にはさっぱり
分からずです。

 秀丸エディタもややこしい機能が増えてきたので秀丸メールみたいにdump.txt
を出力するような手段でも無いと、バグの調査も難しくなってきました。

 とりあえず、設定ファイルだけでも送っていただけるとテストの助けになりま
すので、よろしくお願いします。送り先は、"maruo@mitene.or.jp"です。

[ ]
RE:07242 縦書きの自動切替No.07245
山紫水明 さん 12/06/22 07:55
 
 秀まるおさん,

> とりあえず、設定ファイルだけでも送っていただけるとテストの助けになりま
>すので、よろしくお願いします。

 設定ファイル送ります。
 私自身は現状で不都合を感じているわけではないのですが,問題究明に役立て
ればと思います。

                          山紫水明

[ ]
RE:07245 縦書きの自動切替No.07246
秀まるお さん 12/06/22 08:36
 
 とりあえず、送っていただいた設定ファイルで再現テストしたら一発で再現出
来ました。

 5個くらいファイルを開いてデスクトップ保存してから全終了し、常駐秀丸か
らデスクトップ復元したら、1つの秀丸だけマクロ実行されるようでした。

 助かりました。

[ ]
RE:07245 縦書きの自動切替No.07252
秀まるお さん 12/06/25 18:38
 
 「デスクトップ復元も実行する」のオプションOFF時にマクロが実行されてし
まうバグ修正は出来ました。

 それと反対のバグ、つまり、上記オプションONなのにマクロ実行されない方は、
マクロのバグだと思いました。

 TateOpen.macの、

$firstline = gettext2( 0, 1, linelen2, 1 );

 って部分がまずいです。linelen2はカーソル行の長さを返すので、運が悪いと
これが0になってしまうようです。

$firstline = gettext2( 0, 1, 9999, 1 );

 とすればうまくいくようでした。

[ ]
RE:07252 縦書きの自動切替No.07257
山紫水明 さん 12/06/28 20:18
 
 秀まるおさん,

> 「デスクトップ復元も実行する」のオプションOFF時にマクロが実行されてし
>まうバグ修正は出来ました。

 β25で何度か実行したところでは,正しく処理されていました。

>$firstline = gettext2( 0, 1, linelen2, 1 );
> って部分がまずいです。linelen2はカーソル行の長さを返すので、運が悪いと
>これが0になってしまうようです。

 これはうっかりしていました。ご指摘ありがとうございました。

                          山紫水明

[ ]