## Issue - [Feature Request: Option treat "words containg underscore like foo\_bar" as one word · Issue \#271 · tadashi\-aikawa/obsidian\-various\-complements\-plugin](https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/issues/271) ## 制限事項 対応するStrategyは以下2つのみ。 - default - English only ## ポイント - `tokenizer/toknizers` の 以下からアンダースコアを抜けば実現はできる - `INPUT_TRIM_CHAR_PATTERN` - `INDEXING_TRIM_CHAR_PATTERN` - 一方、懸念もある - `_` は [[Markdown]]において `*` と同じ意味合いがあり本文で利用される - `_I_ like __Obsidian__ !!` みたいなときに `_I_` や `__Obsidian__` がサジェストされるのはまずい - 解析は不可能ではないと思うが、処理時間をかけてまでやることじゃない - 解決策 - オプションで `_` の扱いを決められるようにする - 仮説 - `_` を名称用途で利用する人は `*` を使うだろう - [[Markdown]]として `_` を使わないだろう - それなら `_` をtrimしなくても実害はないはず ## TODO - [x] `INPUT_TRIM_CHAR_PATTERN` と `INDEXING_TRIM_CHAR_PATTERN` にアンダースコアを追加する (英語のみ) - [x] 期待通り動いていそうかを確認する - [x] パラメータを自由に設定できるようにするかの検討 - [x] エスケープ周りが大変なことになるので今はやらない方がよさそう - [x] **アンダースコアを単語の1部分として扱うオプション** くらいがいい - [x] Default Tokenizerでまずは実装する - [x] コンストラクタに口開け - [x] `Treat Underscore as Part of Word` - [x] `new RegExp(p.toString().replace("_", "").slice(1, -1))` - [x] 無効な場合にテストが通ること - [x] 有効な場合にテストが失敗すること - [x] (必要なら) テストコードの修正 - [x] Japaneseに追加 - [x] コンストラクタに口開け - [x] テスト - [[TinySegmenter]]で分解されちゃうから無理だな... - [x] 日本語はサポートから外す - [x] English onlyに追加 - [x] コンストラクタに口開け - [x] テスト - [x] サポートはDefaultとEnglish onlyだけで - [x] 設定の追加 - [x] 設定を通しての動作確認