sakura icon indicating copy to clipboard operation
sakura copied to clipboard

(sf1098)単語選択でひらがなカタカナ伸ばし濁点修正と文字マッピング追加

Open usagisita opened this issue 4 years ago • 4 comments

問題内容

左向き単語移動(Ctrl+←)または選択(Ctrl+Shift+←)で、「コーヒーがある」という文章の「る」側から左に移動すると 「が」で止まらない。 「ー」まで突き抜けてとまります。 あまり左向きには選択しないので、気が付きにくいかもしれません。 でも小説とか書いていると、たまに遭遇して、ちょっと困ります。 https://sourceforge.net/p/sakura-editor/patchunicode/1098/ このパッチでは、バグ修正だけでなく、機能追加的なものも含んでいるように見えます。

サクラエディタでは「伸ばし棒」は直前の文字がひらがなかカタカナを判別していますが、その直前というのが「検索方向」に依存していて、なぜか左固定になっていないのが原因です。

これを修正すると、カーソル単語移動の仕様が変わってしまうため、バグに依存したマクロを書いたり、キーマクロを使っていると互換性がありません。 しかし修正しないならしないで、あきらかに「変な仕様」だと思います。

ちょっと調べた範囲では、 Firefox:「伸ばし記号」はカタカナ扱いで、ひらがなとはくっつきません。 Chrome:よくわからない内部で単語リストを保持していて「スクリーンショット」だと「スクリーン」と「ショット」で分離して移動します。 メモ帳(win8.1):英語では単語移動が有効ですが、日本語では残念なことに、一文字ずつしか移動しません。 しかし「ティ」とか「ラッ」「アー」など後ろに着く文字は1単語扱いで、一度に移動します。また両端どまりではないようで鉤括弧も一緒に移動します。 「バージョン」は「バー」「ジョ」「ン」と分離されていて右から左に移動しても「-ジ」や「ョン」にはなったりしません。

再現手順

本文「コーヒーがある」を右から左に単語単位移動してみます。

再現頻度

100%

問題のカテゴリ

  • 仕様の問題
  • プログラムの動作上の問題

環境情報

  • OS バージョン
  • サクラエディタバージョン 2.4.2.0 master はるか昔から、最新まで全部だと思います。
  • PC情報

スクリーンショット

特になし。

usagisita avatar Sep 25 '20 03:09 usagisita

言語学に通じていない普通の日本語の母語話者である私から見ると、「ー」や「゛」などが右側の文字に引きずられるのは直したい謎仕様だと思います。しかし、どう対応したらよいのでしょうね。

まず、「マクロに対する破壊的変更は許容されるのか」という疑問があります。許容されなければ互換性を保つための何らかの仕組みがなければこの話は終了してしまいます。今までどうしてきたのかご存じの方に伺いたいです。

また、「SourceForgeに投稿されたもかさん他のパッチをそのままこちらで取り込んでよいのか」も明らかにしたいところだと思います。最終的にzlibライセンスのもとでサクラエディタに取り込まれることを前提として書かれたパッチであることは間違いないですが、SourceForgeとGitHubのそれを同一プロジェクトとみなすことにSourceForgeの方々が揃って同意しているのかが後から来た人間にはよく分かりません。取り扱いについて何らかの合意があるならばご教示くださるとうれしいです。

kengoide avatar Dec 25 '20 13:12 kengoide

どう対応したらよいのでしょうね。

すんません、ぼくも分からんです。

今までどうしてきたのかご存じの方に伺いたいです。

してない(つもり。)です。

マクロにバージョン判別機構を導入してはどうか?という提案が出たことがあります。

「SourceForgeに投稿されたもかさん他のパッチをそのままこちらで取り込んでよいのか」も明らかにしたいところだと思います。

(取り込んでも)良い、だと思っています。 しかしながら導入実績は1件しかなかったと思います。 既にそのままでは取り込めませんし、当時とC++の規格が違うので(ry

SourceForgeとGitHubのそれを同一プロジェクトとみなすことにSourceForgeの方々が揃って同意しているのかが後から来た人間にはよく分かりません。取り扱いについて何らかの合意があるならばご教示くださるとうれしいです。

いちおう、ここのプロジェクトを立ち上げたのは SourceForge 時代のコードの 7割くらいを書いた @kobake さんなので、後継プロジェクトと考えて良いと思います。旧プロジェクトからの移行メンバーで正体を明かしているのは3人だけで、全体の規模を考えるとかなりアレなんですが、良いことにしておきます。(おそらくみなさん引退されたりクラスチェンジされているはず。歴史20年っすから。)

なお、zlibライセンスはMIT同様にかなり緩いライセンスなので、ライセンスに則ってパッチを適用する分には投稿者本人の合意を得なくとも何の問題もありません。

berryzplus avatar Dec 26 '20 08:12 berryzplus

既にそのままでは取り込めませんし、当時とC++の規格が違うので(ry

この件のパッチについては文字コードを変換するだけで現在のmaster上に適用可能ではあります。 https://github.com/k-kagari/sakura/commit/e6885cb06ab01c022cc82db226802606ba3bd443

ご説明くださったとおりにライセンス上の懸念がないということならば、問題はマクロの互換性だけということになりますね。

マクロにバージョン判別機構を導入してはどうか?という提案が出たことがあります。

エディタ内部のコマンドとマクロが1対1で対応しているのが現在の設計だと思いますが、マクロの挙動を変えられない=コマンドの動作を変更できない、ということですよね。要望されている機能拡張の中にはコマンドの挙動を変えるものが少なくないですから、マクロのバージョニングは避けて通れない…かもしれません。何かできないか考えてみようと思います。

kengoide avatar Dec 27 '20 12:12 kengoide

マクロの互換性について関連するかもしれないissue。 #326 マクロ関数の選択開始桁と選択終了桁で取得できる数値が桁数でない

kengoide avatar Dec 28 '20 13:12 kengoide