## 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] 設定を通しての動作確認