-
Notifications
You must be signed in to change notification settings - Fork 165
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
キーワードヘルプの説明文に"\n"を表示できるようにしたい。 #1399
キーワードヘルプの説明文に"\n"を表示できるようにしたい。 #1399
Conversation
✅ Build sakura 1.0.3079 completed (commit 7949f055c8 by @berryzplus) |
なんだっけキーヘルプが出る状態で右クリックすると出る「キーワードの説明をクリップボードにコピー」というのがあるんだった気がします。 sakura/sakura_core/cmd/CViewCommander_CustMenu.cpp Lines 43 to 49 in 17bcab7
置換そのものはパッチのコードで置換されますが、 \\n などの置換後の文字列がさらに置換されてしまいます。あとパッチの新置換コードのみだとLFになってコピペ時にCRLFにはなりません。まあここはシーケンスの置換処理はLFにしておいて、コピー直前にファイルの改行コードに置換しなおしたほうが親切かもしれません。 ところでCプリプロセッサの複数行定義みたいに「行末に\マークを置きたい」場合は、今までは たぶん置換処理を関数でくくって、各キーワードからm_cInfoに拾い上げる部分でそれぞれ置換しないとだめっぽいですね。 ちなみに
|
そんな機能ありましたね・・・完全に「漏れ」なので考慮入れたいと思います。 |
提示した仕様では これはデグレですね・・・。 正規表現で人間が意図した行末を検知するのは不可能なので、普通に考えると実現不能、って結論になりそうです。 |
|
もともと定義されていたエスケープは |
This reverts commit 803c8d9.
いかん、アニメ見てたら夜があけてしまった...orz 説明はあとで書き直します。 C言語的に言う |
✅ Build sakura 1.0.3083 completed (commit 51ca690edb by @berryzplus) |
エスケープシーケンスですが、下記の2つだけでは何が問題なんでしょうか?
|
置換されるのは |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
CTipWnd::Show
メソッドの第3引数の const WCHAR* szText
ですが削除してしまった方が良いと思います。その理由ですが
- 呼び出しで実際に文字列を設定している箇所が無いです。つまり利用されていないです。
- 引数を無くせば
m_cInfo
メンバーの差し替えもなくなるので、UnEscapeInfoText
を呼び出す必要も無くなります。あとそうすればUnEscapeInfoText
関数のスコープもファイル内に限定出来るのではないかと。。
#1399 (comment) の質問に回答します。
khpに これ、エスケープシーケンスではなくて、特定パターンを順序通り置換する仕様なので |
|
なんか間違っとりました。 エスケープシーケンスではなくて「単なる置換」なので、 |
普通にありますね。 置換仕様を変えておきます。 |
仕様変更ならそれも仕方がないんじゃないかと思いますよ。 |
厳密には仕様追加なので、既存khpの表示がおかしくなる仕様追加はマズいと思いました。 |
✅ Build sakura 1.0.3090 completed (commit f4be851c20 by @berryzplus) |
HLP000105.html も更新すべきでしょう。 |
✅ Build sakura 1.0.3091 completed (commit 662c760ce6 by @berryzplus) |
確かにユーザーの負担がなるべく少なくなる仕様変更の方が望ましいですね。 |
✅ Build sakura 1.0.3093 completed (commit c3be95843c by @berryzplus) |
const WCHAR* UnEscapeInfoText( CNativeW& cInfo ) | ||
{ | ||
cInfo.Replace( L"\\n", L"\n" ); | ||
cInfo.Replace( L"\\x5C", L"\\" ); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
\x5C
だけでなく \x5c
も \
に置換してあげた方が良かったりするでしょうか?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
もともと \n
の置換でも \N
は考慮してないので、
大文字小文字の違いを考慮する必要はないと思います。(強引
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
アメリカ人の知能指数が将来的に低下してアルファベットの大文字だけしか使われなくなるかもしれないのでそれで良さそうですね。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
C には \N
なんて存在しませんし、\x5C
も \x5c
も使えますので強引すぎますね。
C 系のエスケープシーケンス表記に慣れた人には \x5c
が使えないというのは不自然に感じるでしょうから、\x5C
にしか対応しないのであれば、ヘルプにも注意書きとして明記しておいた方が親切ですね。
✅ Build sakura 1.0.3094 completed (commit 7ae443760f by @berryzplus) |
よく考えたら |
新たなルールを追加するのは避けられないので、何らかの形で非互換性が出るのは仕方ないです。
結局、どの程度非互換性を許容するかです。 あるいは、互換性は壊したくないので見た目だけ |
ぬぅ・・・。
|
それは全然別のレイヤーの話です。 |
一旦この仕様でレビューをお願いします。 キーワードヘルプの説明文の記述ルールを追加します。
記述ルールの適用順序は①、②の順番になります。 記述ルールは、エスケープシーケンスではなく「単なる置換」です。 |
仕様はそれでいいと思います。 コードレビューは他の方にお任せします。 |
動作確認しました。確認するべきパターンがこれだけかというとそうでは無いかもしれませんが考える事を止めます。
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
問題無いと思います。
このPRの変更とは無関係ですが、タイプ別設定のキーワードヘルプの画面で辞書ファイルをファイルダイアログで読む際に、Vista以降の新しいスタイルのファイルダイアログが使われる事に気付きました。 共通設定で有効化していなくても自動で使われるのはどうしてか調べてみたところ、下記のフラグが付加されていない場合にそうなるようです。
標準を超えてカスタマイズすると将来になって後継への移行に支障が出るというのは何だか色々な事に当てはまりそうです。 |
レビューありがとうございます。マージしちゃいます。 |
これは不具合として対策します? 個人的には、ここで表示される「ファイルを開く」ダイアログはサクラエディタ仕様でなくて構わないので「そういうもんです」で済ませてよい気がします。サクラエディタ仕様の「ファイルを開く」ダイアログにはコードページや改行コードを選択できる機能がありますが、ここの処理でそれらを指定しても反映してないと思うので標準で構わないはず。 |
いや、不具合ではないので対策する必要は無いと思います。 |
PR の目的
キーワードヘルプの説明文に"\n"を表示できるようにします。
カテゴリ
PR の背景
#1359
キーワードヘルプの説明文に"\n"を表示できるようにしたい。
を参照。PR のメリット
キーワードヘルプの説明文に"\n"を表示できるようになります。
#1399 (comment) で教えてもらった不具合が直ります。
(キーワードヘルプのコピーでキーワードヘルプの説明文以外の
\n
が改行されてしまう。)PR のデメリット (トレードオフとかあれば)
キーワードヘルプの説明文の記述ルールが複雑になります。
説明文に
\x5C
を含んだ既存khpの表示がおかしくなります。(\x5C
でなく\
と表示されてしまう。)仕様・動作説明
キーワードヘルプの説明文の記述ルールを追加します。
\n
と入れたら改行できる。\x5C
と入れたら\
を表示できる。\x5c
は\x5c
のまま表示されます。記述ルールの適用順序は①、②の順番になります。
記述ルールは、エスケープシーケンスではなく「単なる置換」です。
記述ルールとマッチしない
\
はそのまま表示されます。見え方のサンプル
bat.khp
を改変して\\n
を挿入し、表示確認したキャプチャを貼ります。使用したkhpは bat.zip で取得できます。使用したkhpは [https://github.com/sakura-editor/sakura/files/5213150/bat_v2.zip) で取得できます。使用したkhpは [https://github.com/sakura-editor/sakura/files/5213999/bat_v3.zip) で取得できます。
テスト内容
仕様説明にある変更前後比較を行いました。
PR の影響範囲
キーワードヘルプ・辞書ツールの表示に影響します。
キーワードヘルプの右クリックコピーでコピーされる文字列に影響があります。
関連 issue, PR
close #1359
参考資料
https://osdn.net/projects/sakura-editor/forums/34071/42347/