CodeMirror — для чего нужен addWidget и как им пользоваться?

Я хочу сделать некоторые расширения для CodeMirror. Метод addWidget кажется многообещающей отправной точкой. В документации указано

addWidget(pos, node, scrollIntoView) Помещает узел, который должен быть абсолютно позиционированным узлом DOM, в редактор, расположенный прямо под заданной позицией {line, ch}. Если для scrollIntoView установлено значение true, редактор обеспечит видимость всего узла (если это возможно). Чтобы снова удалить виджет, просто используйте методы DOM (переместите его в другое место или вызовите removeChild для его родителя).

Я не совсем понимаю, что это значит и для чего я бы это использовал. Я не могу найти его использование ни в кодовой базе CodeMirror, ни где-либо еще в Google.


person George Mauer    schedule 16.01.2013    source источник


Ответы (1)


Вам нужно передать html-узел, позицию и логическое значение.

// create a node
var htmlNode =document.createElement("h1");
var text =  document.createTextNode("Text or whatever");
htmlNode.appendChild(text)

// call this after you initialized the editor.
// the position must be like this {ch: YourCharecterNumber, line: YourLineNumber}
editor.addWidget({ch:30 , line: 1},htmlNode, true)
person aljordan82    schedule 19.01.2013
comment
Правильно, я понимаю сигнатуру метода, в чем я не уверен, так это в том, для чего я бы это использовал. Что оно делает? Что такое вариант использования? - person George Mauer; 20.01.2013
comment
Я использовал его для добавления пользовательского виджета автозаполнения. - person aljordan82; 20.01.2013
comment
Значит, вы используете его для добавления дополнительных элементов DOM в определенное место в редакторе? Как это работает для вашего автозаполнения? Разве вам не нужно было бы добавлять виджет, где бы в данный момент ни находился курсор (я предполагаю, что это был знакомый способ выполнения автозаполнения через всплывающее окно)? - person George Mauer; 21.01.2013
comment
Это сработало хорошо. Виджет добавляется в СМ при нажатии определенных клавиш. затем я устанавливаю фокус на форму ввода автозаполнения. Я использовал editor.getCursor(), чтобы получить положение курсора. Узел autoComlete удаляется при нажатии клавиши возврата. Я использовал автозаполнение jQuery. - person aljordan82; 21.01.2013