berryzplus

Results 272 comments of berryzplus

目的が変わったのでタイトル変えておきます。 報告されていた不具合は、バグじゃなさそう、ということが分かったため。 (ただし、IsBadStringPtrAの利用は「知る人ぞ知る」系の「最も危険な種類」のバグです。実害はないと思いますが。)

ぶっちゃけると、そもそも関数名からして「誤っている」んですよね。 誤) `CPPA::stdError` 正) `CPPA::ErrorProc` PPAが要求するのは `ErrorProc` であり `stdError` は呼出側で勝手に付けた名前です。 privateな関数名なので好きな名前を付けていいんですが、 `stdError`は誤解を招きやすいのでやめたほうが良いと思います。 * `std` はCプログラマ的に「標準の~」を意味する接頭辞です。 定義しているものは明確な「非標準関数」(ユーザー定義関数ともいう)なので、不適切です。 * `stderr`は「標準エラー出力(ストリーム)」を指します。 `stdError` をユーザー定義関数の名前とするのは誤解を招きやすく、不適切だと思います。 PPAから要求されている `ErrorProc` を作るならともかく、関数名から処理内容を推測できないのもイタいと思います。 名前付けの「センスがない」のは「罪じゃない」です。 気付いた人が突っ込んで、直していけばいいだけのことだと考えています。

`CPPA::stdError`はプライベートなグローバル変数`CPPA::m_CurInstance`に依存します。 https://github.com/sakura-editor/sakura/blob/e67c8ce03f808ae940689373a82e01d6bc066043/sakura_core/macro/CPPA.cpp#L333-L338 `CPPA::m_CurInstance`はCPPAの実行コンテキストを保持する構造体です。 プライベートなグローバル変数ですので、クラス外から値を変更することはできません。 `CPPA::m_CurInstance`の初期値は`nullptr`なので、上記コードをテストコードから呼び出すとAV例外が発生します。 テストしたいコードは339行目以降なので、`CPPA::stdError`をテストするには`CPPA::m_CurInstance`に有効なPPAコンテキストを設定するために仕組みが必須になります。

なんで「ウインドウ」タブなんですかね・・・ たとえばTortoiseGit/SVNは「全般」に言語のコンボボックスがあるんですけど、 「全般」に入れられなかった理由があるんですかね? まぁ、**入れられなかった理由が「他に入れる場所がなかった」である確率は90%を超えてそうだ**、というのがぼくの見解なんですが、理由があるなら押さえておきたいです。 正当な理由があっても、たぶん諦めませんけども...(キラン ダイアログの項目入替は大変なので、共通設定の見直しは後回しです。 暫定案として、「設定」メニューの末尾に「言語選択(Select Language)」を追加して言語切替できるようにしたらどうかな?と思ってます。 いま「設定」メニューの末尾は「入力改行コード指定」ですが、 こんな感じで「日本語」「English」を切替できるようにします。 賛同者がいればサクッと実装してしまいますがどうでしょう?

> ただ、「言語選択」だとプログラミング言語とか、Charsetの話にも聞こえるので、「表示言語 (Display Language)」とかの方が良いかと思います。 サクラエディタ内の「言語切替」を司るクラスの名前が `CSelectLang` なんですよw 感覚的には 「表示言語(Display Language)」 に完全同意。 > 暫定案についてですが、日本語、Englishをサブメニューにするということですかね?簡単に実装できるならそれで良いと思います。面倒なら、ds14050さんの提案のように、共通設定のウィンドウタブを選択した状態で表示するだけでもないよりマシでしょう。 「動的にサブメニューを割り当てるためのコード」というのがいくつか存在しています。 「最近使ったファイル」とかがこれで実装されています。 先述の `CSelectLang` は「利用可能な言語のリスト」を保持しているので、えいやっ!でやってやれないことはないと思われます。

賛同者がおらず、マージされる見込みがないためPRを作っていない状態っす。

個人的には、マイクロソフトの最新技術には飛びつくのは危険、だと思っています。 ![image](https://user-images.githubusercontent.com/3253151/124834972-8a790f00-dfbb-11eb-9456-2da6e42bf8f5.png) 最低限ドキュメントの「重要」が外れるまでは手を出すべきではないと思います。 膨大な学習コストを費やしたあと「結局使えない」というケースがままあるためです。 仕様をチラ見した限り、テキトーにYAML書いたら対応できそうです。 YAMLによる定義を「マニュフェスト」って呼ぶのを最近よく見かけるようになった気がします。 生Windows APIを使う環境で「マニュフェスト」と言ったら exe に埋め込む RT_MANIFEST を指すと思います。 まぎらわしいことこの上ないです(RT_MANIFESTを知らなければ混同する危険はありませんが:smiley: 誰かがwingetの仕様を勉強して、「これで対応できそう」をPRする分には問題ないと思います。

> 最低限ドキュメントの「重要」が外れるまでは手を出すべきではないと思います。 公式ドキュメントの「重要」が外されたことを確認しました。 ※重要には「wingetはpublic previewなので変更される可能性があります」と書かれていました。 #### ■手順抜粋 1. [アプリケーションに関する情報を提供するパッケージ マニフェストを作成します](https://docs.microsoft.com/ja-jp/windows/package-manager/package/manifest)。 マニフェストは、Windows パッケージ マネージャー スキーマに従う YAML ファイルです。 2. [マニフェストを Windows パッケージ マネージャー リポジトリに送信します](https://docs.microsoft.com/ja-jp/windows/package-manager/package/repository)。 これは、winget ツールがアクセスできるマニフェストのコレクションを含む GitHub のオープン ソース リポジトリです。 なんとなく、1と2は作業分担になりそうに思いました。 1を...

検索機能は共有メモリ(≒グローバル変数)を経由して実現されているので、 現状では「仕様なのでしゃあないっす」が一時回答になると思います。 「その仕様、おかしくね?」という意見はあってしかるべきですが、 たぶん「おかしくね?」を言うには代案を提示する責任がある気がするのでどうでしょう?です。

↑簡単じゃないけど技術的に可能、と理解しました。 サクラエディタのドキュメントには「販売してはいけない」と取れる記載があるので、前提条件をパスできるか微妙かもと思っています。 ライセンスさえ守れば売るのも自由、というのが国際的に見たフリーソフトの定義なので。 売ったらあかんなら不自由だっていう…