Skip to content
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

メールアドレスを含むテキストを開いた場合に、メールアドレスの区切りを超えてメールアドレスと認識される。 #775

Open
m-tmatma opened this issue Jan 20, 2019 · 10 comments
Labels
🐛bug🦋 ■バグ修正(Something isn't working) duplicate 重複【ChangeLog除外】

Comments

@m-tmatma
Copy link
Member

m-tmatma commented Jan 20, 2019

バグ内容

メールアドレスを含むテキストを開いた場合に、メールアドレスの区切りを超えてメールアドレスと認識される。

再現手順

mailaddress.txt
を開く

再現頻度

100%

環境情報

スクリーンショット

mailaddress-link-bug

@m-tmatma m-tmatma added the 🐛bug🦋 ■バグ修正(Something isn't working) label Jan 20, 2019
@m-tmatma
Copy link
Member Author

以下のようなバッチファイルで確認した。

for /r %%i in (sakura.exe) do (
	if exist %%i del %%i
)
for /r %%i in (sakura.ini) do (
	if exist %%i del %%i
)
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exe" sakura.sln /p:Platform=Win32 /p:Configuration=Release  /t:"Build"  /flp:logfile=msbuild-Win32-Release.log

for /r %%i in (sakura.exe) do (
	if exist %%i %%i mailaddress.txt
)

@berryzplus
Copy link
Contributor

#493

@m-tmatma m-tmatma added the duplicate 重複【ChangeLog除外】 label Jan 20, 2019
@jakenjarvis
Copy link

■環境

  • OS バージョン
    Windows 10 Pro 64bit

  • サクラエディタバージョン
    sakura-tag-v2.4.0-alpha1-build1699-2582c34c-Win32-Release-Exe.zip

GMailのフィルタ設定をエクスポートし、ダウンロードした mailFilters.xml を開いたときに、同様の症状を確認しました。

<apps:property name='from' value='mailings-noreply@xxxxxxxx.xxx'/>
この文字列に対して、 value='mailings-noreply@xxxxxxxx.xxx まで下線が引かれます。

で、メールアドレスって、「 ' アポストロフィー(シングルクォーテーション)」って使えたっけ?と思って、軽くWikipediaを見てみると、「ローカル部に使用できる文字」に、 = もあわせてしっかり入ってますね。(RFC確認まではめんどくさくてしてません)

実際に ' をメールアドレスに使っているケースを見たことがないので、解決案としては、「厳密にRFCに準拠して判断するモード」と「一般的なアドレス使用文字に狭めて判断するモード」を用意するような解決方法でしょうか・・・。

@berryzplus
Copy link
Contributor

<apps:property name='from' value='mailings-noreply@xxxxxxxx.xxx'/>
この文字列に対して、 value='mailings-noreply@xxxxxxxx.xxx まで下線が引かれます。

で、メールアドレスって、「 ' アポストロフィー(シングルクォーテーション)」って使えたっけ?と思って、軽くWikipediaを見てみると、「ローカル部に使用できる文字」に、 = もあわせてしっかり入ってますね。(RFC確認まではめんどくさくてしてません)

xmlなのに引用符シングルなんですね。(普通はダブルクォート &quot; を使うような。)

メールアドレス判定は、本質的に「メールアドレスかどうかを判定する機能」ではなくって、「クリックしたら何かが起こる部分文字列(=URL)を検出して強調する機能」の一部だと考えています。

検討対象を IsMailAddress 関数から「クリッカブルURL検出」にまで広げたら、ぜんぜん違う方向の解決策が出てきたりするんじゃないか?と思っています。クリッカブルURL検出には、ユーザ定義でカスタマイズできる「正規表現キーワード」の枠組みが含まれてきますから・・・。

@ds14050
Copy link
Contributor

ds14050 commented Apr 27, 2019

@jakenjarvis さんの報告はこの PR のもともとのバグ報告とは原因が異なっていて、「Chg: メールアドレスの記号類を許可する · sakura-editor/sakura@f6990fd」による意図された変更から導かれる結果です。

単純にバグを潰すという対応ではなく、過去の決定を覆すという判断が必要です。

@jakenjarvis
Copy link

xmlなのに引用符シングルなんですね。(普通はダブルクォート " を使うような。)

天下のGoogleさんが!と思って調べてみたら、XMLもシングルでもダブルでもいいみたいです。よく考えたらHTMLもそうですよね。

@jakenjarvis さんの報告はこの PR のもともとのバグ報告とは原因が異なっていて、「Chg: メールアドレスの記号類を許可する · sakura-editor/sakura@f6990fd」による意図された変更から導かれる結果です。

んーむ、そうなると、機能要望みたいになってしまいますね。Issueを分けたほうがいいのかな?

個人的には「メールアドレスのリンクをクリックしてメールを作成する」、、みたいな使い方をテキストエディタで行うことが無いので、リンクを張るべきではない文字(上記の場合 value=' )にリンクがあること自体に問題を感じたのですが、メールアドレスとして有効な文字列なので、仕方がないかぁ、と思いつつも投稿したところです。
投稿する文書を書きつつ「どう解決できるかなぁ」と、思考を巡らせたんですよねぇ。
で、中身を知らない私は、オプションでユーザが好みで設定する方法しか思いつかなかった感じです。

@ds14050
Copy link
Contributor

ds14050 commented Apr 27, 2019

<apps:property name='from' value='mailings-noreply@xxxxxxxx.xxx'/>

これに関しては、XML の「属性名」と「属性値」に対して色分けを定義することで解消する(解決すべき)問題だと思います。メールアドレスのリンク化も色分けの一種ですが、色分けが全体として不完全なために生じている問題だということです。

@jakenjarvis
Copy link

なるほど、了解しました。
issue #806 で話に挙がった「Language Server Protocol に丸投げ」っていう、この話を実装するときにでも、解決してもらえると嬉しいです。

@berryzplus
Copy link
Contributor

issue #806 で話に挙がった「Language Server Protocol に丸投げ」っていう、この話を実装するときにでも、解決してもらえると嬉しいです。

(; ̄Д ̄)!?

Language Server Protocol は JSON-RPC で実装するものらしいので、真面目に実装を検討してみた結果「対応するとは思うけど Server 実装はやんないんじゃないか?」とヘタレなことを考え始めています。@ds14050 さんの書いてる通り、属性値の色付け規則を定義して引用符の中だけを色付けするようにしたらこの問題については解決しそうに思うので、まぁ解決はするんじゃないかと思います。

@berryzplus
Copy link
Contributor

というか、元の問題の再現確認をしていないような気がしないでもない・・・。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐛bug🦋 ■バグ修正(Something isn't working) duplicate 重複【ChangeLog除外】
Projects
None yet
Development

No branches or pull requests

4 participants