Завершение кода CodeMirror, анализируя местоположение курсора

Я хочу интегрировать функцию автозавершения кода в редактор XML на основе CodeMirror. Он в основном анализирует схему XML-файла и обеспечивает завершение кода в соответствии со схемой и ее структурой. Но есть кое-что, что я не смог сделать. Например, когда курсор перемещается в местоположение, которое находится внутри тега xml, завершение кода должно вести себя соответствующим образом. Следует помнить, что курсор находится внутри тега и т. Д. Как я могу это сделать?

Я думаю, что парсер XML зеркала кода может дать подсказку о семантической позиции расположения курсора с некоторыми изменениями. Это возможно?

Или есть какой-нибудь общий способ проанализировать местоположение курсора и вести себя соответственно?

Заранее спасибо.

1 ответ

Если вы используете CodeMirror 2, есть метод getTokenAt, который позволяет анализировать состояние анализатора в заданной позиции. Вы можете видеть, что это используется для автозаполнения локальных переменных JavaScript в http://codemirror.net/2/demo/complete.html. Для анализатора XML вы можете проверить свойство контекста состояния, которое представляет собой связанный список объектов, каждый из которых содержит свойство tagName и свойство prev, связывающееся с контекстом над ним.

Другие вопросы по тегам