auto-pair.ts 726 B

1234567891011121314151617181920212223
  1. import { keymap } from '@codemirror/view'
  2. import { Compartment, Prec, TransactionSpec } from '@codemirror/state'
  3. import { closeBrackets, closeBracketsKeymap } from '@codemirror/autocomplete'
  4. const autoPairConf = new Compartment()
  5. export const autoPair = ({
  6. autoPairDelimiters,
  7. }: {
  8. autoPairDelimiters: boolean
  9. }) => autoPairConf.of(autoPairDelimiters ? extension : [])
  10. export const setAutoPair = (autoPairDelimiters: boolean): TransactionSpec => {
  11. return {
  12. effects: autoPairConf.reconfigure(autoPairDelimiters ? extension : []),
  13. }
  14. }
  15. const extension = [
  16. closeBrackets(),
  17. // NOTE: using Prec.highest as this needs to run before the default Backspace handler
  18. Prec.highest(keymap.of(closeBracketsKeymap)),
  19. ]