括弧の過不足の検出No.37761
matushiro97 さん 19/11/30 22:41
 
コード作成に秀丸を使用しています(v8.89).
複雑な式で括弧の過不足に気づかずに実行時エラーがなることがありますが,実行前
に過不足を自動的に検出する機能(マクロ)があると便利です.
そのような機能(マクロ)はないでしょうか?

[ ]
RE:37761 括弧の過不足の検出No.37768
秀丸担当 さん 19/12/02 11:29
 

括弧の対応を調べるには、括弧の位置にカーソル移動して、「対応する括弧に移動」
コマンドを実行する方法があります。(キー割り当てでカーソル移動系のコマンド)
これを全部の括弧に対して調べるマクロを試しに作ってみました。
短いソースだったらいいですが、そこそこの規模のソースだとだいぶん時間がかかっ
て、編集するたびに実行するのは実用的ではないかもしれないです。
あと、調べるには[その他]→[ファイルタイプ別の設定]→[デザイン]→[複数行コメ
ント]で、コメントや文字列の色付けがプログラミング言語に合う適切なものになっ
ている必要があります。

[その他]→[ファイルタイプ別の設定]→[デザイン]に「対応する括弧の強調表示」が
あって、もしこれがOFFの場合、ONにしておくといいです。
複雑な式を書いているところがあったら、カーソル移動しながらどこが強調されてい
るかを見ながら編集するとやりやすくて、こちらのほうが実用的かもしれないです。


//マクロの例
setcompatiblemode 0x20000;
disabledraw;
disableerrormsg;
#x=x;
#y=y;
gofiletop;
while(1){
    searchdown2 "[(){}\\[\\]]",regular,masknormal,maskonly,nohilight;
    if(result==false){
        break;
    }
    escape;
    #x2=x;
    #y2=y;
    gokakko;
    if(result==false){
        enabledraw;
        message "対応する括弧がありません";
        endmacro;
    }
    moveto #x2,#y2;
    right;
}
moveto #x,#y;
enabledraw;
message "括弧の対応は全部合っています";

[ ]
RE:37768 括弧の過不足の検出No.37787
matushiro97 さん 19/12/03 22:06
 
ありがとうございました。
括弧の確認は一瞬で終わりました。
これから楽になります。

[ ]
RE:37787 括弧の過不足の検出No.37788
matushiro97 さん 19/12/03 22:47
 
このマクロを登録する過程で下手をしました。
マクロ登録で今は使わない古いマクロが上位にきているので、それを下に下げました。
そしてキー登録画面でこのマクロを登録したところまでは良かったのですが、使わな
いマクロを一番下に下げた結果、ソレより上位のマクロのキー登録が全部ずれました。
それで再設定しようとキー登録をしていましたが、面倒になり標準的なキーの登録が
あるのではとおもい、defaultkeyなるものを読み込みました。
多くのキーが、想定と異なる動きをして困っています。
こわくて編集中のコードがさわれません。
従来のキーの動作は次のようなものでした。

ctrl+s→上書き保存
選択中の文字+ctrl+r→置換ボックスが現れ選択文字が置換文字になる
選択中の文字+ctrl+f→検索ボックスが現れ選択文字が検索文字になる検索
単語上でWクリック→単語を選択

ctrl+z→やり直し
ctrl+y→同じ動作
ctrl+c→コピー
ctrl+p→張り付け
ctrl+n→新しいファイル
などなどです。
1.一発で回復する方法はないですか
2.キー登録の確定を登録ボックスを開いたまま行う方法はないですか。今は、毎回
OKをおしていますが、そうするとボックスが閉じて毎回マクロを選ぶので面倒です。
3.マクロ登録画面の「マクロファイル用のフォルダー」を変更できないでしょう
か?これまでドロップボックスのフォルダー内の秀丸用のフォルダーを指定していま
したが、ドロップボックをやめたので変更したいのですが、右横の開くボタンを押し
ても反応がなくて変更できません。
4.正しいキー設定を回復したら失敗しないように保存したいので保存を押すと保存
場所を選ぼうとすると全然関係ない場所が開くので毎回フォルダーを移動するのが面
倒です。デフォルトで開くフォルダーを設定できないですか?

コード作成作業を中断したままなので、お手数ですが、なるべく早くご回答いただけ
ればありがたいです。

よろしくお願いします。



[ ]
RE:37788 括弧の過不足の検出No.37789
秀丸担当 さん 19/12/04 09:57
 

default.keyは標準のキー割り当てですが、標準のキー割り当ては、以下のものとだ
いたい同じのようです。(Ctrl+Pだけ違います)
>ctrl+s→上書き保存
>選択中の文字+ctrl+r→置換ボックスが現れ選択文字が置換文字になる
>選択中の文字+ctrl+f→検索ボックスが現れ選択文字が検索文字になる検索
>単語上でWクリック→単語を選択
>
>ctrl+z→やり直し
>ctrl+y→同じ動作
>ctrl+c→コピー
>ctrl+p→張り付け
>ctrl+n→新しいファイル

default.keyではないものを読み込んでいる可能性がありそうなので、そうだとした
ら、改めてdefault.keyを読み込みし直してみるといいかもしれないです。
あるいは、default.keyが別のキー割り当てで既に上書きされてしまっているという
ことだとしたら、読み込みし直してもだめかもしれません。
キー割り当ての「読み込み(R)...」で「参照(B)...」ボタンを押して、C:\Program F
iles\Hidemaru(またはC:\Program Files (x86)\Hidemaru)に元々のdefault.keyが
あるはずなので、それを読み込むといいです。

読み込んでから、上記の割り当て例ではCtrl+Pだけ直すといいと思います。


>1.一発で回復する方法はないですか

もし[その他]→[設定内容の保存/復元...]でファイルに保存していたものがあったら、
それを使うと他の設定も含めてその時点のものに一発で復元できます。

または、[その他]→[キー割り当て...]のダイアログで「保存(A)...」ボタンでキー
割り当て(とマクロ登録)だけ保存したものがあったら、それを使っても復元できま
す。
そういう保存しておいたファイルが無かったら、できないです。

(設定はレジストリに保存されているので、Windowsの復元ポイントを使うとなんと
かなるかもしれないですが、秀丸エディタ以外のあらゆることが変わるので最後の手
段としたほうがいいと思います)


>2.キー登録の確定を登録ボックスを開いたまま行う方法はないですか。

キー割り当てダイアログを開いたまま確定するという方法は無いです。
確定ではないですが、実はキー割り当てダイアログで変更中は一時的に反映されてい
て、秀丸エディタのウィンドウを2つ開いて(タブモードであれば分離して)、変え
ながらもう片方で試してみることはできてしまいます。
(OKしていないのに反映されるのはあまり良くないと思っていて、いずれ変更するか
もしれません)


>3.マクロ登録画面の「マクロファイル用のフォルダー」を変更できないでしょう
>か?

[その他]→[動作環境]→[環境]の「マクロファイル用のフォルダ」で変更できます。


>4.正しいキー設定を回復したら失敗しないように保存したいので保存を押すと保存
>場所を選ぼうとすると全然関係ない場所が開くので毎回フォルダーを移動するのが面
>倒です。デフォルトで開くフォルダーを設定できないですか?

キー割り当てのデフォルトの保存先は、[その他]→[動作環境]→[環境]の「設定ファ
イル用のフォルダ」で変更できます。


------

あと参考情報として、[マクロ]→[マクロ登録...]ダイアログの左下の「モード>>」
より、「キー割り当ての入れ替えを許可」をONにしておくと、並べ替えと同時にキー
割り当ての変更をする方法があります。
このときは一覧にキーも表示されていますが、この設定に関わらず常時キー表示した
ほうがよさそうです。今後のバージョンで検討します。

V8.89以下では[その他]→[キー割り当て...]で、「一覧表作成」ボタンを押すと、
キー割り当ての一覧のテキストが出力されて全体がわかりやすいです。

現在β版のV8.90βでは、キー割り当てダイアログがリニューアルされていて、キー
割り当てのダイアログ上だけで割り当て状況が見渡せるようになっています。

[ ]
RE:37789 括弧の過不足の検出No.37792
matushiro97 さん 19/12/04 11:18
 
ありがとうございました。無事回復できました。

あとマクロ登録のマクロ4-10までが文字化けして表示されています。キー割り当てで
"curentusing"という名前のファイルを読み込んだ時に発生した現象でした。前回def
olt.keyと書いたのは間違いでした。

4-10を一括削除する機能はないですか?

[ ]
RE:37792 括弧の過不足の検出No.37793
秀丸担当 さん 19/12/04 12:07
 

回復できたということでよかったです。
マクロ登録の4〜10などのある範囲を削除するには、一括ではできまくて、1つずつ
削除するしかないです。
Alt+数字キーで対象を変えることができるので、それを使うとやりやすいかもしれな
いです。
例えばマクロ4を削除する場合、Alt+4, Delelteキー, Tabキー, Deleteキーとすると
削除できます。

[ ]