トラブル報告2点No.11372
western さん 23/05/19 17:53
 
■ テンプレート挿入中に単語補完時のトラブル

再現方法

1. [ファイルタイプ別の設定]>[テンプレート]カテゴリ>[テンプレート(スニペッ
ト)ファイルの場所]でフォルダ C:\TEMP\snipet を指定
2. プレースホルダ付きのテンプレートを作成する ( C:\TEMP\snipet\test.txt )
 setstaticvariable "$(1,変数名)", "$(2,値)", $(3,0);$0
3. 挙動を分かりやすくするために [単語補完]カテゴリ>[自動表示]チェック=ON に
しておく
4. 単語補完とテンプレートが有効な状態(ファイルタイプ別)で tes と打つと、作成
したテンプレートが補完候補として出てくるので選択
5. 設定したテンプレートが挿入され $1 位置のプレースホルダの書き換えが始まる
ので set と入力すると setstaticvariable が補完候補に出てくるので選択
6. 入力済みのものが消えずに、その後に補完文字列が insert され setsetsetstati
cvariable となる

ご確認よろしくお願いします

■ changename 命令実行時の静的変数

changename "ファイル名";

をマクロ実行すると、設定済みの静的変数が取得(getstaticvariable)できなくなった
これは想定/意図する動作か?
ヘルプには関連の記載は見つけられなかった

再現方法

$sv0 = getstaticvariable("sv",0); // 初回は ""
setstaticvariable "sv", "sv", 0;  // 静的変数に "sv" をセット
$sv1 = getstaticvariable("sv",0); // "sv" が取得できる
changename "nul";                 // "nul" に限らず、別のファイル名を指定し
ても再現
$sv2 = getstaticvariable("sv",0); // "" が取得される
debuginfo 2;
debuginfo sprintf("[%s][getstaticvariable][%s][changename][%s]\n", $sv0, $sv
1, $sv2); // [][setstaticvariable][sv][changename][]

よろしくお願いします

[ ]
RE:11372 トラブル報告2点No.11373
こみやんま さん 23/05/19 20:53
 
>■ changename 命令実行時の静的変数
>
>changename "ファイル名";

ここは getstaticvariable の ヘルプ説明にある

```
0 を指定するか省略すると、共有せず、現在の秀丸エディタ内だけで有効です。同じ
ウィンドウであっても「ファイルを閉じる」「閉じて開く」をすると消去されます。
```

が要するに「インプロセス」「ファイル名」に紐づけて記憶域をぶら下げますよ、
ということを意味しているかと思いますね。

ようするに、jsmode のデフォルトの変数維持の挙動と同じ感じかと。

[ ]
RE:11373 トラブル報告2点No.11375
western さん 23/05/20 08:24
 
setstaticvariable した後に「名前を付けて保存」でも同じ挙動になるので
指摘されたような内部条件になっているのだと推測しますが、
ヘルプの記載漏れなのか、想定/意図した動作なのかを確認したいのです

[ ]
RE:11375 トラブル報告2点No.11383
秀丸担当 さん 23/05/22 09:47
 
バグ報告などありがとうございます。
テンプレートのときの単語補完はその通りでした。
setと書いた部分も消えてできるようにします。

setstaticvariableは、jsmodeの寿命とだいたい同じ考えではあったのですが、chang
enameとsaveasで違うのは確かに変かもしれません。
合わせるならsaveasで消えるようにするですが、いまさら変えるのもまずいと思うの
で、仕様ということにしてヘルプに書いておこうと思います。
すみません。
残しておく必要がある場合、既にお使いかもしれませんが、2で維持する方法があり
ます。

[ ]
RE:11383 トラブル報告2点No.11405
western さん 23/05/26 12:45
 
> changenameとsaveasで違うのは確かに変

の補足のニュアンスで違和感はあった(消滅してるのを確認してた)ので
β更新の確認がてら再調査しました



setstaticvariable "$name", "値", 0; した値は

■ マクロの saveas でファイル名変更した場合

$name = getstaticvariable "$name", 0; // 残っている

■ [メニュー]>[ファイル(F)]>[名前を付けて保存(A)] で保存した場合

$name = getstaticvariable "$name", 0; // 残っていない!


というヘルプの記載が更に悩ましい動作をしました



getstaticvariable( s1, n1 ) 関数について「ファイル名変更」の補足が未記載のま
までした

よろしくお願いします

[ ]
RE:11405 トラブル報告2点No.11407
秀丸担当 さん 23/05/26 16:30
 
ご指摘ありがとうございます。
名前を付けて保存とsaveasで違うのは、確かにその通りでした。
やはり直すならsaveasで消すようにしたほうがよさそうではありますが、下手にいじ
らずこれもヘルプに書いておこうと思います。

[ ]