| 12345678910111213141516171819202122232425 |
- import { EditorView } from '@codemirror/view'
- import { startCompletion } from '@codemirror/autocomplete'
- import { Transaction } from '@codemirror/state'
- import { isInEmptyArgumentNodeForAutocomplete } from '../../utils/tree-query'
- import { openContextMenuAnnotation } from '../../extensions/context-menu'
- // start autocompletion when the cursor enters an empty pair of braces
- // but skip updates caused by context menu open or remote transactions
- export const openAutocomplete = () => {
- return EditorView.updateListener.of(update => {
- if (update.selectionSet || update.docChanged) {
- if (
- !update.transactions.some(
- tr =>
- tr.annotation(Transaction.remote) ||
- tr.annotation(openContextMenuAnnotation)
- )
- ) {
- if (isInEmptyArgumentNodeForAutocomplete(update.state)) {
- startCompletion(update.view)
- }
- }
- }
- })
- }
|