sakura-editor / sakura

SAKURA Editor (Japanese text editor for MS Windows)
https://sakura-editor.github.io/
Other
1.25k stars 163 forks source link

URL強調について #1020

Open beru opened 5 years ago

beru commented 5 years ago

479 要望機能

Discord の「ユーザー質問・要望」チャンネルで下記がリクエストされました。

CSV形式にして保存した際に、URLが含まれる項がある場合、以降すべてURL扱いになってしまい正常な操作ができないので、例外・禁止文字の設定がほしい

スクリーンショット

image

beru commented 5 years ago

SNKさんの返信コメントも転載します。

遅レスになりました。(最近、人少ないのかな?:disappointed_relieved:)
お困りの内容は、「URLのすぐ後ろにカンマ","が来ると、URLがつながっていると認識してしまう」という内容のようですね。

unknown (1)

サクラエディタのURL判定は、他にも誤認識することがあり不都合がありますよね。
なんか良い方法ないでしょうかねえ??
案. 設定で逃げれるようにする。
     ご提案のように、例外・禁止文字を設定できるようにするとか。
案. URLも正規表現パターンを設定できるようにするとか。
他には、逆に、URL途中に日本語文字が入ると切れてしまう問題がサクラエディタにはありますが、OutlookとかではURLを< >で囲むと切れないような仕様になっています。 ( <>内は URLやFILE:パスとして認識)
beru commented 5 years ago

該当実装は IsURL 関数だと思います。

https://github.com/sakura-editor/sakura/blob/83c7f6a8dae1b5b380c22a8afdfa7384a5e5b578/sakura_core/parse/CWordParse.cpp#L344-L427

RFC 2396 や RFC 3986 に準拠した判定を行うように設定で選べるようにすれば問題が解決するかな?

KENCHjp commented 5 years ago

問題が解決するかな?

これ、メールアドレスの時も議論したように思いますが、日本語ドメインが絡むと、 エディタ上では、日本語の状態でURL扱いにしたいと思うので、RFCに準拠しただけでは、 要件的には満足しないんじゃないかなと思っています。 個人的には、

<http(s):// ~>

のように<>でくくられた中をURLにして「~」は何が入っててもよいとかにするのはどうかなと思っておりますが、 なかなかまとまらないっすよねぇ。

berryzplus commented 5 years ago

正規表現キーワードの検知機構を改善したいっす。で、ユーザー設定のURLパターンを先に見るようにしたい。

beru commented 5 years ago

これ、メールアドレスの時も議論したように思いますが、日本語ドメインが絡むと、 エディタ上では、日本語の状態でURL扱いにしたいと思うので、RFCに準拠しただけでは、 要件的には満足しないんじゃないかなと思っています。 個人的には、

<http(s):// ~>

のように<>でくくられた中をURLにして「~」は何が入っててもよいとかにするのはどうかなと思っておりますが、 なかなかまとまらないっすよねぇ。

国際化ドメイン名に関してもRFCで標準化されてるみたいですが、テキストエディタの場合には真面目に対応する必要は無さそうな感じがしますね。

https://jprs.co.jp/idn/std.html

<> でくくらないでもドメイン名に日本語等が使われた場合に認識出来る方が良い気がします。

Microsoft Office Word 2007 とVS Codeで確認したところ、https://日本語.jp というドメインがURLとしてハイライトされてリンクになりました。

usagisita commented 5 years ago

案. URLも正規表現パターンを設定できるようにするとか。

正規表現キーワードの検知機構を改善したいっす。で、ユーザー設定のURLパターンを先に見るようにしたい。

周辺の問題を無視して、この問題のみなら 内蔵のURL強調表示をOFFにして(これ重要)、正規表現キーワードで色を"URL"に指定すれば、いいんじゃないでしょうか。 それでカンマを含まないhttp/httpsの正規表現を書けばそれっぽくなります。 URL強調をOFFにしても正規表現キーワード側がURLだった場合、それは色分け、クリッカブル対象みたいですよ。ヘルプにも書いてありました。 https://sakura-editor.github.io/help/HLP000203.html 内蔵OFFにするとメールアドレス等も必要なら正規表現で追加する必要はあります。

usagisita commented 5 years ago

本件とは無関係ですが、正規表現キーワードのURLで0文字マッチすると無限ループしますね。 ////k /^/k とかをURLにするとアウトみたいです。

beru commented 5 years ago

本件とは無関係ですが、正規表現キーワードのURLで0文字マッチすると無限ループしますね。 ////k /^/k とかをURLにするとアウトみたいです。

ほんとですね。#1027 を作成しました。

berryzplus commented 5 years ago

周辺の問題を無視して、この問題のみなら 内蔵のURL強調表示をOFFにして(これ重要)、正規表現キーワードで色を"URL"に指定すれば、いいんじゃないでしょうか。

設定は排他でしたか。

テキストエディタに求められるクリッカブルURI検出は、 つまるところ「俺にとってのクリッカブル」に尽きると思います。

だから、正規表現キーワードでユーザーが独自に設定できるようにするのが最善かと思ったのですがそうそう上手くはいかない感じですね。

本件とは無関係ですが、正規表現キーワードのURLで0文字マッチすると無限ループしますね。 ////k /^/k とかをURLにするとアウトみたいです。

ほんとですね。#1027 を作成しました。

何がどう問題なのか、よく分ってない感じです。 クリッカブルURLを検出する正規表現パターンに0文字マッチ可能なパターンを指定した場合、どうなってほしいんでしょうか?

1文字マッチの場合、マッチした文字に下線が引かれて青くなりますよね? 0文字マッチだったらどうして欲しい?

普通の正規表現検索で0文字マッチの場合、マッチ位置の次の1文字を強調することで表現しています。あえて当たり前のこと言いますけど、幅0pxの背景色を変えることはできません。検索の描画処理では、背景描画の表現は1文字、マッチ文字数は0文字とすることで 0文字マッチは表現できない の問題を回避しています。

正規表現キーワードってのが何かというと、キーワード強調表示の対象を正規表現パターンを使って指定できる機能です。キーワード強調は、指定した文字パターンを「キーワード」として強調する機能です。強調とは、「前景色・背景色・文字の太さを変える」です。正規表現キーワードは、強調すべきキーワードを正規表現で指定できる機能です。検索のときとは異なり、0文字マッチは許されない気がします。0文字のマッチは強調ができないからです。

そう考えていくと、対処候補の問題点は複数存在することが分かってきます。

この件、ぼくの基本的な立ち位置は、設定するヤツが悪い、です(マテ

1028 の対応は、正規表現キーワードの仕組みがハナっから0文字マッチには対応していない、という制約を見なかったことにして突き進むものであるような気がします。

結論としては「0文字マッチはスルーする」の対応をどっかに入れる感じになると思うんですけど、どうしたいですかねぇ・・・。

berryzplus commented 5 years ago

周辺の問題を無視して、この問題のみなら 内蔵のURL強調表示をOFFにして(これ重要)、正規表現キーワードで色を"URL"に指定すれば、いいんじゃないでしょうか。

設定は排他でしたか。

クリッカブルURL検出は、元から正規表現キーワードが優先になっているようです。

正規表現キーワードが先にチェックされて、 正規表現キーワードに一致しない場合だけ通常の処理が走る感じの実装です。