vim9script const BASIC_KEY_PAIRS = { "(": ")", "[": "]", "{": "}", "<": ">" } const INVERTED_BASIC_KEY_PAIRS = { ")": "(", "]": "[", "}": "{", ">": "<" } export def JapanesePairs(): list> return GroupedJapanesePairs()->values()->reduce((result, pairs) => result + pairs, []) enddef export def GroupedJapanesePairs(): dict>> return { "(": [ ["(", ")"], ], "[": [ ["[", "]"], ["「", "」"], ["『", "』"], ["【", "】"], ["〔", "〕"], ], "{": [ ["{", "}"], ], "<": [ ["〈", "〉"], ["《", "》"], ["<", ">"], ], '"': [ ["“", "”"], ], "'": [ ["‘", "’"], ], } enddef export def KeyPairFor(key: string): list return [key, get(BASIC_KEY_PAIRS, key, key)] enddef export def NormalizeKey(key: string): string return get(INVERTED_BASIC_KEY_PAIRS, key, key) enddef export def IsBasicStartKey(maybe_key: string): bool return has_key(BASIC_KEY_PAIRS, maybe_key) enddef