React-ace: Любой пример того, как поддерживать пользовательское завершение кода?

Созданный на 3 дек. 2015  ·  9Комментарии  ·  Источник: securingsincity/react-ace

Привет. Во-первых, спасибо за эту потрясающую библиотеку!
Есть ли какой-нибудь пример поддержки пользовательского автозавершения кода? Я имею в виду ... Я хотел реализовать поддержку небольшого синтаксиса, над которым я работал. Это не совсем такой язык программирования, как JavaScript.
Любая идея?
Большое тебе спасибо.

Самый полезный комментарий

Нет необходимости во взломах, вы также можете передать все завершатели через enableBasicAutocompletion в виде массива, например:

<AceEditor
  ...
  setOptions={{
    enableBasicAutocompletion: [this.yourCustomCompleter]
  }}
/>

Все 9 Комментарий

@andrerpena , я думаю, это должно быть довольно легко реализовать (не принимая во внимание сложность вашего

Чтобы включить завершение, нам нужно использовать расширение ace:

/* set up custom completer by using a ace extension */
import ace from 'brace'

/* figured out how to load the extension properly
 * by referring to ptmt's response in https://github.com/thlorenz/brace/issues/19
 */
import 'brace/ext/language_tools'
let langTools = ace.acequire('ace/ext/language_tools');

Настройте комплектующее следующим образом:

/* your custom completer */
var customCompleter = {
      getCompletions: function(editor, session, pos, prefix, callback) {
           // your code
           /* for example
            * let TODO = ...;
            * callback(null, [{name: TODO, value: TODO, score: 1, meta: TODO}]);
            */
      }
 }
langTools.addCompleter(customCompleter);

В настоящее время существует проблема (№ 59), касающаяся того, как следует обрабатывать дополнительные параметры редактора. Без этого, я думаю, нам нужно было бы его взломать:

/* in some render somewhere
 * need this refs hack to set an editor option (another open issue in this repo)
 * inspired by elijahsmith's response in https://github.com/securingsincity/react-ace/issues/65
 */
<AceEditor ref="code" ...>

// with that setup, you can do something like
this.refs.code.editor.setOption('enableBasicAutocompletion', true);

Прошу прощения, если что-то из этого является странным или неправильным. Я только начинаю с react и только начал использовать обертку react-ace для ace. Хотя почти все это основано на чужих трудах.

Некоторые другие краткие ссылки / примеры:

@eemp Приносим извинения за поздний ответ и большое спасибо за пример. Это действительно кажется довольно простым делом. Я попытаюсь. Спасибо еще раз.

Нет необходимости во взломах, вы также можете передать все завершатели через enableBasicAutocompletion в виде массива, например:

<AceEditor
  ...
  setOptions={{
    enableBasicAutocompletion: [this.yourCustomCompleter]
  }}
/>

Я добавил свой собственный омплер, но мне нужно нажать ctr + пробел, чтобы показать соревнование. Есть ли способ показать завершение автоматически.

@ go299 Вам просто нужно включить опцию enableLiveAutocompletion в ace.

@fijolekProjects Как написать кастомный комплектующий? Есть какие-нибудь документы по этому поводу?

@oakland Не знаю о документах, но вот рабочий пример https://github.com/TouK/nussknacker/blob/v0.0.9/ui/client/components/graph/ExpressionSuggest.js#L31
В основном это объект с реализованным методом getCompletions . Надеюсь, это поможет

@fijolekProjects Большое спасибо! Я попробую это сделать в своем проекте.

как мы запускаем автозаполнение без ctrl + space. Что, если мы хотим, чтобы он запускался автоматически

Была ли эта страница полезной?
0 / 5 - 0 рейтинги