Завершение кода CodeMirror, анализируя местоположение курсора - PullRequest
1 голос
/ 20 февраля 2011

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

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

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

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

1 Ответ

2 голосов
/ 23 февраля 2011

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

...