秀丸エディタスレ Part46

■ このスレッドは過去ログ倉庫に格納されています
2023/02/15(水) 19:36:05.65ID:i3y85R6n0
!extend:checked:vvvvv:1000:512
次スレを立てる方は↑を二行重ねて書いてください

軽快・高機能・安定と三拍子そろったテキストエディタ
秀丸エディタについて語ろう

■前スレ
秀丸エディタスレ Part45
https://egg.5ch.net/test/read.cgi/software/1655573512/

■公式
http://hide.maruo.co.jp/

■秀シリーズサポートフォーラム
http://www.maruo.co.jp/hidesoft/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2名無しさん@お腹いっぱい。 (ワッチョイW 4f74-rLxr)
垢版 |
2023/02/16(木) 19:18:29.49ID:I5ICFkBF0
>>1
秀丸は韓国でも通用するエディタ
2023/02/17(金) 08:51:22.26ID:GM6Hw0HM0
Ver9.20
2023/02/19(日) 17:58:05.56ID:IK5YhytP0
リソース文字列を表示するマクロってどう作るんでしょうか?
src.cppのIDS_HOGEにカーソルが合っている状態でマクロを呼び出すと、"ほげほげ"が表示される感じです。

■A/B/C/D/E/src.cpp
...
IDS_HOGE
...

■A/B/C/Lang/res.rc
STRINGTABLE DISCARDABLE
BEGIN
...
IDS_HOGE "ほげほげ"
...
END

既存マクロで似たようなのあったらそれを改良するのですが、イチから作るとなるとなかなか敷居が高く。。
5名無しさん@お腹いっぱい。 (アウアウウーT Sa49-h1Ka)
垢版 |
2023/02/19(日) 18:05:13.27ID:Dk+CAQLua
×敷居が高い
○ハードルが高い
2023/02/19(日) 18:14:17.95ID:IK5YhytP0
すいません、ハードルが高いでした・・
よろしくお願いしますm(_ _)m
2023/02/24(金) 10:47:17.27ID:q+QK81tt0
>>4ですが1から勉強するしか無いでしょうか・・・
このマクロ参考になるよとかの情報でも良いのですが(T_T)
2023/02/24(金) 11:10:19.15ID:/LlAOY1Ap
まだこのスレ立った事知らない人が多いのかも
因みに「表示」というのは、"ほげほげ"の先頭へカーソル移動したいという事なの?
2023/02/24(金) 12:42:05.17ID:fzmjhi2Kp
あ、違うね
IDS_HOGEの先頭?にカーソルを立てたら、"ほげほげ"がコメント的に見える様にできないかって事か。
アウトライン表示だけじゃ駄目なのかね。
2023/02/24(金) 15:01:05.91ID:q+QK81tt0
>>8-9
レスありがとう御座います。
コメント的に見える様に....の方です。

>>4の場合、src.cppのIDS_HOGEにカーソルがある状態でキーを押したら、res.rcを開かないでも
ポップアップで「ほげほげ」と表示されるような感じです。
2023/02/24(金) 16:05:15.94ID:+kxe4Ys+p
■〜src.cpp
から
参照元のIDS_HOGE
までのパターン性がちょっと掴めないから、どうかな。特にsrc.cppの前。
参照先の■〜res.rcの内容と違ってるよね。
2023/02/24(金) 20:30:58.71ID:q+QK81tt0
>>11
ありがとう御座います。
res.rcの所在はマクロ側で事前に登録しておくという感じでも大丈夫です。
「登録された1ファイルの中から、IDS_HOGEを検索して定義内容を表示する」みたいな。
2023/02/25(土) 02:11:35.79ID:9gzk7vzG0
1. カーソル位置を「単語の選択」してIDS_HOGEを拾って変数($target とか)に入れといて
2. res.rcを(バッググラウンドとか非表示で)開いて切り替えて
3. IDS_HOGE " を検索
4. 選択開始後に次の " を検索して選択されて要る "ほげほげ" を拾う
(もしくは正規表現で "ほげほげ" 部分をうまいこと拾う)
5. src.cppに戻ってきてからメッセージボックスで "ほげほげ" を表示
 ツールチップ表示にしたいなら macrodll.dll あたりが必要かも
 title文使えばステータスバーへの表示ならできるかも

具体的な記載方法は「キー操作の記録開始/終了」「キー操作の保存」で
操作作業をマクロに書き出せるのでそれを改造していくといい

ただぶっちゃけ秀丸マクロでVSCODEの拡張機能のようなことするのは難しい
質問の答えとは違うけどctagとタグジャンプ使った方が目的に近いことが実現できると思う
2023/02/26(日) 21:33:48.97ID:6xoTG5Gp0
>>13
ありがとう御座います。
参考にさせて頂きます。

ctagsは使用してるんですけど、リソース番号の方(resource.h)に飛んじゃうんですよね(u_u)

■A/B/C/resource.h
#define ..
#define IDS_HOGE 1006
#define ..
#define ..
15名無しさん@お腹いっぱい。 (ヒッナーW ee25-yeYs)
垢版 |
2023/03/03(金) 13:43:38.32ID:HaP46PFw00303
質問を教えてください。
This is a pen. That is England. My Mother's name is TARO.
という文字列を、
This is a pen.
That is England.
My Mother's name is TARO.
となることを期待して、「.」→「.\n」、正規表現にチェック、と置換設定して実行すると
全文章が真っ黄っ黄になってできないです。
どのようにしたら出来るでしょうか?
宜しくお願いします。
2023/03/03(金) 14:16:35.99ID:Ae9gJb6400303
.をエスケープ
\.
17名無しさん@お腹いっぱい。 (ヒッナーW ee25-yeYs)
垢版 |
2023/03/03(金) 15:35:46.65ID:HaP46PFw00303
>>16
ありがとうございました。大変助かりました。

という事は、正規表現にチェックを入れると、
被置換文字も置換文字も両方ともescapeシーケンスで書く必要がある、
と覚えれば良いでしょうか。
2023/03/03(金) 15:54:51.06ID:6PH4ngyI00303
>>17
必要なもののみエスケープする必要あり
検索ダイアログの入力ボックスの右にある小さい▶ボタン押してみて
19名無しさん@お腹いっぱい。 (ワッチョイW b1e8-2Biy)
垢版 |
2023/03/04(土) 20:31:28.50ID:90B3kAjb0
>>18
ありがとうございます
2023/03/06(月) 10:13:25.62ID:OO3/CyCEp
>>19
メタ文字(正規表現が機能として使う文字)と被る文字をリテラル(その文字そのもの)として扱いたい場合、エスケープと言って直前に\置きリテラルと認識させる事ができる。

但し範囲内を表現する[文字列](ブラケットで囲まれた中)に限っては例外として不要になる(というかあってもなくてもいい」
2023/03/06(月) 15:40:29.61ID:vNF37C7+0
前スレ落ちてたのに気づいてなくって最近静かだなって思ってました orz

>>4
いまいちどういう使い方をされようとしてるのか分からないですが
選択した文字列で特定のファイルをgrepかけるという程度のことで
良ければ割と簡単そうで叩き台となるサンプルのマクロを
提示できそうな気がします
メッセージボックスを使うよりファイルに書き出す方が扱いやすくって
自分的には好みです
というか、まだ見てるかな?
2023/03/06(月) 15:57:24.54ID:ANeahzAtp
多分、リアルタイムで参照しながら作業したいんじゃないかな。
2023/03/06(月) 16:15:53.78ID:vNF37C7+0
というとgrepとかでなくてカーソルを合わせただけで
吹き出しが出て表示されるようなイメージでしょうか?
期待値が高すぎて出る幕なかったかも
2023/03/06(月) 16:23:28.98ID:EG+FmZU50
おまいら、キーボード何使ってんの?

特集 - ソフトウェア開発者/有限会社サイトー企画代表 秀まるお氏 インタビュー | REALFORCE | 日本製プレミアムキーボードの最高峰
https://www.realforce.co.jp/special/2208/#sec01
2023/03/06(月) 17:17:21.78ID:G08o2ZjTp
打鍵のソフトさを最優先してロジKX800。しかしFやesc、ctrl等の配列(サイズ感)は最悪であるw
でもこいつだと、マイクロソリューションに専用シートがあるんよな…
2023/03/06(月) 19:33:29.95ID:eYUa5+N+0
ミネベア VANGUARD V101(RT6656TWJP)
PS/2 → USB 変換アダプタを介してPCに接続してる
ぶっ壊れる気配がまったく無いよ~
2023/03/06(月) 19:35:16.72ID:eYUa5+N+0
ミネベアつうかWiNDyだった
2023/03/06(月) 20:12:09.55ID:EG+FmZU50
>>26
おー、ワイも持ってるで
あと、RT6652TWJP (黒筐体)、初代 Realforce 91 (PS/2)、IBM Spacesaver Ⅱ、Natural Keyboard、
Keychron Q8 (半額祭でゲット)、IDOBAO ID80、Portico75、YMDK 67 minila
3行目のは全て QMK 入り Q8 と YMDK 67 minila は親指厨も満足の US キーボード
2023/03/08(水) 00:35:38.44ID:7391Vj7X0
>>21-23
レスありがとう御座います。
吹き出しのようなイメージです!
カーソル合わせただけで出てくる必要はないのですが、カーソル合わせてバインドしたキーを押すと出てくる感じでしょうか。
今はgrepしてるんですが面倒だなぁ・・と。

ctagでヘッダじゃなくってリソースの方に飛んでくれるのならそれでも良いんですが・・・
2023/03/08(水) 02:17:45.99ID:/ufsibxp0
あまり分かってないので期待されてるのと違うかもしれませんが上げてみる

//resのgrep.mac

//$s:選択文字列
//$f:対象ファイル
//$d:対象ディレクトリ

if(!selecting){endmacro;}
$s=gettext(seltopx,seltopy,selendx,selendy);
$d="c:\\users\\user\\appdata\\roaming\\hidemaruo\\hidemaru\\macro\\230308";
$f="res.rc";
grep $s, $f,$d;
setwindowsize 50, 7;setwindowpos 80, 5;
2023/03/09(木) 10:33:46.73ID:EqRwHkzKa
要件無視したソフトはたくさん見てきたけどこれはレベチ
2023/03/09(木) 11:22:05.33ID:CxS9cZ4z0
普通に読み解けば、IDEによくあるようにシンボルに
マウス当てたら静的に分析できる値なり説明なりが
ポップアップで出るってモノでしょう。

いちいちマクロやgrep走らせるのなんか使い物にならんよ。
2023/03/09(木) 12:27:52.94ID:bZDOGGxwp
秀丸はイベントってないよね
2023/03/09(木) 13:30:00.36ID:aW3hLJ+x0
grep で行数とか他の要素が出るのが気に入らないなら
値だけ表示するように加工することもできるし
grep結果のファイルが残ってしまうのが問題なら
表示して何秒後に自動で消すこともできるけど
まずは叩き台と思って
2023/03/09(木) 15:00:53.29ID:aW3hLJ+x0
>>29
> カーソル合わせただけで出てくる必要はないのですが、カーソル合わせてバインドしたキーを押すと出てくる感じでしょうか。
> 今はgrepしてるんですが面倒だなぁ・・と。

マクロ登録すればカーソルを合わせてキー入力で表示できますし、現状でもgrepを使っていて手数を減らしたいとのことだったので、それほど仕様を無視したつもりではないのですが
2023/03/09(木) 20:49:16.35ID:MEKMA5bJ0
自動起動マクロでトリガーをカーソル移動あたりにすれは
(使い物になる重さかはともかく)イベントっぽいことは一応可能じゃね
2023/03/15(水) 15:23:23.05ID:zAuzCXZ90
> 登録された1ファイルの中から、IDS_HOGEを検索して定義内容を表示する
grep関係ないやん

> カーソルが合っている状態でマクロを呼び出す
> カーソル合わせてバインドしたキーを押す
イベント関係ないやん

@ selectwordでカーソル位置のIDS_HOGEを取得
A searchdownで登録ファイル内のIDS_HOGEを検索
B IDS_HOGEと同行の""で区切られた文字列を取得
C messageでほげほげを表示

ctag改造は無理でもこれぐらいは作ったれよ
2023/03/15(水) 16:20:04.85ID:UuxglPsW0
//その1.mac
//$s:選択文字列 $f:対象ファイル $m:メッセージ

if(!selecting){selectword;}
$s=gettext(seltopx,seltopy,selendx,selendy);
$f="c:\\users\\user\\appdata\\roaming\\hidemaruo\\hidemaru\\macro\\230308\\res.rc";
openfile "/h "+$f;if(!result){endmacro;}
searchdown $s;
searchdown "(?<=\").",regular;beginsel;
searchdown "\"",regular;
$m=gettext(seltopx,seltopy,selendx,selendy);
message $m;#h=hidemaruhandle(0);
setactivehidemaru 1;closehidemaruforced #h;
2023/03/15(水) 16:20:41.58ID:UuxglPsW0
//その2.mac
//$s:選択文字列 $f:対象ファイル $d:対象ディレクトリ

if(!selecting){selectword;}
$s=gettext(seltopx,seltopy,selendx,selendy);
$d="c:\\users\\user\\appdata\\roaming\\hidemaruo\\hidemaru\\macro\\230308";
$f="res.rc";
grep $s, $f,$d;
setwindowsize 50, 7;setwindowpos 80, 5;
replaceallfast ".*?\"([^\"]+)\".*","\\1",regular
sleep(1500);#h=hidemaruhandle(0);
setactivehidemaru 1;closehidemaruforced #h;
2023/03/20(月) 10:10:41.78ID:VHNupFsax
>>38-39
すみません全く気づきませんでした!!
>>38が求めていたものズバリです!めっちゃ感動です!!
本当にありがとう御座いました!

もし、、本当にもし、時間が許せば以下の拡張をお願いできませんでしょうか…さすがにあつかましいお願いでしょうか(>_<)

(1) 言語選択メニュー
起動直後に↓のポップアップが表示される。
1 日本語で表示
2 英語で表示

選択された言語に従って、1であれば、Lang1\\ResJpnA.rcとLang2\\ResJpnB.rcの2つが
2であれば、Lang3\\ResEngC.rcとLang4\\ResEngD.rcの2つが
内部記憶される。

例えば、1を選択すると$Res1、$Res2はそれぞれ
$Res1 = "Lang1\\ResJpnA.rc";
$Res2 = "Lang2\\ResJpnB.rc";
のように記憶される。

(2) フォルダ/ファイル探索機能
A/B/C/D/E/src.cpp内にあるIDS_HOGEにカーソルがある状態でマクロを実行するとA/B/C/D/Eに$Res1もしくは$Res2があるか検索、無ければ
A/B/C/Dに$Res1もしくは$Res2があるか検索、無ければ更に階層をあがり、ファイルがあるまで検索する。
見つからなければマクロ終了。

見つかった場合、$Res1に対してIDS_HOGEを検索し、見つかれば"ほげほげ"を表示(>>38ですね)し、見つからなければ$Res2に対してIDS_HOGEを検索...見つからなければマクロ終了。
2023/03/20(月) 11:13:06.14ID:ozwXs2i20
grepバージョンならタグジャンプでソース元にも跳べるし
便利そうなんて思って作ったんですが
見当外れの上に散々な言われようでちょっと凹みました

その1については
1.ダイアログを使う
2.マウスメニューを使う
3.普通に起動すると日本語、シフトを押しながら起動すると英語
という3バージョンを思いつきました
メニュー選択のひと手間が面倒で自分の好みでは3なんですが
見当外れの前科があるので一応全部作ってみます

変数として内部に記憶してもマクロ終了で失われてしまうので
ここはiniファイルとして外部に保存するようにしましょう

その2のファイル検索は秀丸マクロだけでは難しそう
いや、できるかもしれないけどなにかあるとすぐにrubyに
頼ってしまう自分のような軟弱者には無理
ruby使っていいですか?
■ このスレッドは過去ログ倉庫に格納されています
16歳の水野カイトが封印の刀を見つけ、時間が裂けて黒い風と亡霊の侍が現れ、霊の時雨と契約して呪われた刀の継承者となる場面

ニューススポーツなんでも実況