generated at
(WIP)awesome-suggestion
複数の拡張Scrapbox入力補完を統一して扱うscript
補完ソースと補完開始条件、キーバインドをそれぞれ独自に設定できる

仕様
設定データ
ts
type Config = <T>{ fetchCallback: () => Promise<T[]>; converter: (item: T) => string; trigger: { DOM: string; when: RegExp | (DOM: HTMLElement) => boolean; target: (DOM: HTMLElement) => string; }; keymap: { key: string; command: ''; } }[];
Web Workerを Config だけで共通化するのは難しいかも
Web Workerには関数を渡せない
できることは、検索語句と補完ソース、検索の方法を指示するoption変数を渡すくらいが限度
Web Workerのコードを直接編集するほかなさそうだ
処理の共通化
補完ソースを用意する
検索語句であいまい検索して、scrapbox-suggest-containerに渡すitem dataを作る
補完の開始と終了の条件を決める
違い
<Up> or <Down> による開始/終了条件を削る
e.g.
開始
[/] の中
[* ] の中
[$ ] の中かつ \ を押したとき
javascriptのcode block中かつ . を押したとき
etc.
js
const condition = { DOM: '.page-link', when: /^\[?\//, // 関数も可 //when: (DOM) => /^\[?\//.test(DOM.textContent), target: (DOM) => DOM.textContent.replace(/^\[?\/(\w*)\]?$/, '$1'), };
終了
候補を確定したとき
カーソルの位置や書き込まれている文字列が条件に合わなくなったとき
カーソル移動だけで、何も文字入力していないとき
終了の方はある程度共通化できそう?takker
検索語句の変化を検知して渡す

処理を共通化するの難しそう……takker.icon
2021-02-15 01:52:34 できた

JavaScript