獣医疫学メモ帳

獣医疫学(に関係ないかもしれない)メモ帳。

RStudioのEast Asian Width問題をなんとかしたい(願望)

※ただの作業メモ。
目的未達
誰かやってください...。

目的

RStudioでを入力するとカーソル位置がおかしくなる問題(East Asian Width問題)をなんとかしたい。

こういうやつ

参考

背景

従来のRStudioはQtWebEngineを用いて作成されていた。こちらのコードペイン部分はQTermWidgetを使用していると思われる。そしてEast Asian Width問題に関連すると思われるissueがこちら。

github.com

2016年2月にopenされ、2021年2月以降動きがない。

2022年6月、RStudio PreviewのElectron版がリリースされた。また今後RStudioはQtWebEngineからElectronに移行する予定だそうだ。
RStudio Electron Preview Release Notes – RStudio Support
Electron版のコードペイン部分はAceを使用していると思われる。East Asian Width問題に関連すると思われるissueがこちら。

github.com

2021年10月にopenされ、関連するisssueは多いが修正の動きはない。
まあ正直QTermWidget以上に動きはないのだが、コードをちらちら読んでいたら「自分でもなんとかなるかも」と思ったので途中まで作業してみたメモ。

作業内容

カーソル表示位置に関連するコードはおそらくこの部分。
ace/text.js at 3f934510514a25c53edf64bb80911a96b7133908 · ajaxorg/ace
re = ...を修正してその直後のwhileループ部分に場合分けを追加してやればなんとかなる気がする。
UnicodeEastAsianWidth.txt (version 14.0.0) から作成したregexが以下。

[\u00A1\u00A4\u00A7-\u00A8\u00AA\u00AD-\u00AE\u00B0-\u00B4\u00B6-\u00BA\u00BC-\u00BF\u00C6\u00D0\u00D7-\u00D8\u00DE-\u00E1\u00E6\u00E8-\u00EA\u00EC-\u00ED\u00F0\u00F2-\u00F3\u00F7-\u00FA\u00FC\u00FE\u0101\u0111\u0113\u011B\u0126-\u0127\u012B\u0131-\u0133\u0138\u013F-\u0142\u0144\u0148-\u014B\u014D\u0152-\u0153\u0166-\u0167\u016B\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u0251\u0261\u02C4\u02C7\u02C9-\u02CB\u02CD\u02D0\u02D8-\u02DB\u02DD\u02DF\u0300-\u036F\u0391-\u03A9\u03B1-\u03C1\u03C3-\u03C9\u0401\u0410-\u044F\u0451\u2010\u2013-\u2016\u2018-\u2019\u201C-\u201D\u2020-\u2022\u2024-\u2027\u2030\u2032-\u2033\u2035\u203B\u203E\u2074\u207F\u2081-\u2084\u20AC\u2103\u2105\u2109\u2113\u2116\u2121-\u2122\u2126\u212B\u2153-\u2154\u215B-\u215E\u2160-\u216B\u2170-\u2179\u2189\u2190-\u2199\u21B8-\u21B9\u21D2\u21D4\u21E7\u2200\u2202-\u2203\u2207-\u2208\u220B\u220F\u2211\u2215\u221A\u221D-\u2220\u2223\u2225\u2227-\u222C\u222E\u2234-\u2237\u223C-\u223D\u2248\u224C\u2252\u2260-\u2261\u2264-\u2267\u226A-\u226B\u226E-\u226F\u2282-\u2283\u2286-\u2287\u2295\u2299\u22A5\u22BF\u2312\u2460-\u24E9\u24EB-\u254B\u2550-\u2573\u2580-\u258F\u2592-\u2595\u25A0-\u25A1\u25A3-\u25A9\u25B2-\u25B3\u25B6-\u25B7\u25BC-\u25BD\u25C0-\u25C1\u25C6-\u25C8\u25CB\u25CE-\u25D1\u25E2-\u25E5\u25EF\u2605-\u2606\u2609\u260E-\u260F\u261C\u261E\u2640\u2642\u2660-\u2661\u2663-\u2665\u2667-\u266A\u266C-\u266D\u266F\u269E-\u269F\u26BF\u26C6-\u26CD\u26CF-\u26D3\u26D5-\u26E1\u26E3\u26E8-\u26E9\u26EB-\u26F1\u26F4\u26F6-\u26F9\u26FB-\u26FC\u26FE-\u26FF\u273D\u2776-\u277F\u2B56-\u2B59\u3248-\u324F\uE000-\uF8FF\uFE00-\uFE0F\uFFFD\u1F100-\u1F10A\u1F110-\u1F12D\u1F130-\u1F169\u1F170-\u1F18D\u1F18F-\u1F190\u1F19B-\u1F1AC\uE0100-\u10FFFD]

作業ここまで。
誰かやってくれないかなー。

追記

github.com
これを参考に修正していけばなんとかなる.....だろうけど多すぎてやる気なくなってきたな......。