berryzplus

Results 272 comments of berryzplus

インストール先が `C:\Program Files (x86)\sakura\sakura.exe` なら、`sakura.exe.ini`の場所は `C:\Program Files (x86)\sakura\sakura.exe.ini` です。 ここ以外の`sakura.exe.ini`は無視されます。 インストーラを使った場合、`sakura.exe.ini`の設定内容は以下です。 https://github.com/sakura-editor/sakura/blob/1c6bc820dce8c8397ecd33aec63dd75ea3dd0ca3/resource/sakura.exe.ini#L26-L28 この設定だと`sakura.ini`の場所は`%APPDATA%\sakura\sakura.ini`です。 ※`%USERPROFILE%\Application Data\sakura`を見に行きますがファイル入出力がWindowsにリダイレクトされて`%APPDATA%\sakura`になります。 インストーラを使わずにインストールした場合、`sakura.exe.ini`を自分で用意することになります。 ※`sakura.exe`と同じフォルダに`sakura.exe.ini`を用意しなかった場合、`C:\Program Files (x86)\sakura\`へのファイル出力はWindowsにより`%LocalAppData%\VirtualStore\Program Files (x86)\sakura\`にリダイレクトされます。一方、ファイル入力のほうは勝手にリダイレクトされないので、「設定変更が保存されない」に見える事象が発生することになります。

インストーラーってこれですかね? [sakura-tag-v2.4.1-build2849-ee8234f-Win32-Release-Installer.zip](https://github.com/sakura-editor/sakura/releases/download/v2.4.1/sakura-tag-v2.4.1-build2849-ee8234f-Win32-Release-Installer.zip) `Windows 10 1809`の仮想マシンで試してみた限り、このインストーラーは壊れてなさそうです。 インストーラーの説明に出てきますが、マルチユーザー設定を外すと動かないことが多いです。

> 再インストールの必要がありますか? 一度アンインストールして、再度インストールするのが早いと思います。 > sakura.iniを編集で対応できますか? `sakura.ini`を編集しても参照されないので効果がないです。 `sakura.exe.ini`の編集なら改善を期待できますが、サクラエディタは`C:\Program Files (x86)`配下のファイルを編集できないのでどこかに一時フォルダにコピーしてから編集し、変更後ファイルを元のフォルダに貼り付ける感じになります。(貼り付け時に管理者権限が必要です。) ちゃんと説明してませんでしたが、`sakura.exe.ini`と`sakura.ini`は別モノで、役割が異なります。 * `sakura.exe.ini` = マルチユーザー設定ファイル、`sakura.ini` の格納場所を設定します。 このファイルは`sakura.exe`と同じフォルダに格納する必要があり、格納位置は変更できません。 ファイルがない場合、`sakura.ini`を`sakura.exe`と同じフォルダに作ろうとしますが、Windows Vista以降では`C:\Program Files (x86)`配下に書き込みできないので設定を保存できなくなってしまいます。 このファイルで`Multiuser=0`を設定すると、ファイルがないのと同じになります。おそらくコレです。 * `sakura.ini` = 設定ファイル、共通設定ダイアログでの変更を格納します。

> 再インストールする時に、何か特別オプションを選びますか?(どこかでそんなん読んだ気がします。) 最後に表示される確認画面で「Virtual Store:無効」となるようにしてみてください。

これが危険な話で、サクラエディタにはそういう「○コード」がたくさんあることは理解しています。 nullptrを返す関数の存在を許容しておきながら、関数が返したインスタンスのメソッドをノーチェックで呼び出すコードを許容している現状では、仕方ないんじゃないかなぁと思っています。 通常ならば両者の共存を許さない、という方向で環境整備を進めるんですが、すでにガチガチのスパゲッティなので「呼び出しても問題ない抜け道をつくる」しかなかったんだと思います。危険な状態にも見えるけど、意外と問題ないようになっているのかもです(楽観趣味)。

認識している限りこんなのがあるんです。 ```c++ m_pNanika->GetNankaNoObj().DoAction()->GetResult()->reset(); ``` `登場するメンバ名、メソッド名は、実際に存在するメンバ名、メソッド名とは一切関係ありません。` NULLチェックが漏れてるからNULLチェックしよう!という素直な対応が大変しずらいコードがあるわけです。どうしたらいいかの答えは、結構長いこと考えているんですが、いまだに出ません。

サクラエディタのコマンド仕様として考えられることは2つあります。 |考え方|説明| |--|--| |コマンドが実行できないのがおかしい|状況によってコマンドを実行できない不具合を修正することになります。| |メニューが有効なのがおかしい|メニューが無効化されない不具合を修正することになります。| いずれにしろ「バグじゃね?」ってことになるんですが、なんとなく後者な気がします。 コマンドに「実行できない状況」があるのは当たり前だと思うからです。 ex) 挿入するにはキャレットが必要、タブを閉じるにはタブを表示していることが必要。 詳細見ないでテキトー言ってるので「違ってたらごめん」です。

メニューが無効になるから困ってる、ということですかね。 「行削除(折り返し単位)」の機能はたぶん、 現在位置の「折り返し行頭」から「折り返し行末」までの文字列(=1行)を削除する だと思われます。 1文字以上選択されていたら即使えない機能ではないので、メニューの活性条件が誤っている気がします。 ただ、それとは別に選択された範囲(複数行も考慮する)の外側にある「折り返し行頭」から「折り返し行末」までを削除させたいのであれば、それは確かに仕様変更である気もします。 類似機能がいくつかあるので進め方を迷う感じです。

1年超放置のPRを順番に閉じてきてここに来ました。 > それと、気が付いてしまった。ブランチ名がfutureになってますが、featureですよね、これは恥ずかしい。 ブランチ名の修正はPRを作り直さないとできないと思います。 (できる方法があるのかも知れませんが、ぼくは知らない。)

これは一旦「解決」ですかね? ### 現状 * 既存機能で一応開ける * 再オープン時に自動判定するのは無理。 ### 機能改善例 * サクラエディタ独自の「文字コードセット名」に中国語等の文字セットを追加する。 * サクラエディタに指定できる「文字コードセット名」を標準化する(≒既存の独自定義を廃止)。 なんとなく、目的は達成できてそうに見えました。