open-autocomplete.ts 661 B

1234567891011121314151617
  1. import { EditorView } from '@codemirror/view'
  2. import { startCompletion } from '@codemirror/autocomplete'
  3. import { Transaction } from '@codemirror/state'
  4. import { isInEmptyArgumentNodeForAutocomplete } from '../../utils/tree-query'
  5. // start autocompletion when the cursor enters an empty pair of braces
  6. export const openAutocomplete = () => {
  7. return EditorView.updateListener.of(update => {
  8. if (update.selectionSet || update.docChanged) {
  9. if (!update.transactions.some(tr => tr.annotation(Transaction.remote))) {
  10. if (isInEmptyArgumentNodeForAutocomplete(update.state)) {
  11. startCompletion(update.view)
  12. }
  13. }
  14. }
  15. })
  16. }