Ace: Добавление '.' символ для сопоставления префикса для дополнителей Ref- 'ace/autocomplete/util'

Созданный на 31 окт. 2013  ·  10Комментарии  ·  Источник: ajaxorg/ace

На рассмотрение,

Модуль ace/autocomplete/util в файле ext-language_Tools.js определяет регулярное выражение, которое используется для определения соответствия префикса для определенных средств завершения.

var ID_REGEX = /[a-zA-Z_0-9$-]/;
используется в , exports.retrievePrecedingIdentifier

Поскольку мы определили настраиваемое средство завершения для поддержки структур наших объектов (Person.Name.First и т. д.), это вызвало проблему, заключающуюся в том, что ID_REGEX не будет совпадать с символом точки. Это можно переопределить в нашем пользовательском средстве завершения, но это приводит к тому, что средства завершения, определенные в ace/ext/language_tools, загрязняют наши совпадения со всей областью документа.

Модификация кажется тривиальной...
var ID_REGEX = /[a-zA-Z_0-9$-.]/;

language_tools

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

@nightwing есть новости по этому поводу?

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

Или, скорее, можно ли сделать ID_REGEX опцией для mdoule ace/autocomplete/util?

да, сделать его вариантом лучше

Я сталкиваюсь с той же проблемой. Я попытался найти изящный способ настроить соответствие префиксов, но не нашел ничего жизнеспособного. Есть ли доступное решение?

Я предположил, что Tokenizer текущего режима будет использоваться для определения текущего префикса... что позволит динамические правила поиска префикса... аккуратно? или я что-то упускаю? Таким образом, я мог бы создать свой собственный режим (может быть, не такой тривиальный, как я надеюсь, но он подойдет... верно?)

Экспериментальная поддержка для этого была добавлена ​​некоторое время назад https://github.com/ajaxorg/ace/blob/badade8f4e9d10194b1f802c57cc368e5fe90688/lib/ace/autocomplete.js#L220 , но я не уверен, что это работает хорошо, и все еще может измениться.
Использование токенизатора будет работать, если токенизатор написан с учетом этого, но многие режимы не будут работать, поскольку они назначают текстовый класс всему, что не выделено.

Это будет полезно, не могу поверить, что автозаполнение работает без этого.

@nightwing это работает (используя первый элемент в массиве результатов для передачи регулярного выражения)

@antonpod Можете ли вы описать, что вы сделали, чтобы заставить его работать? Я открывал эту тему пару месяцев назад.

@ rsmith31415 в моем случае мне не нужно было знать префикс перед отправкой запроса Ajax. Мне просто нужно было настроить регулярное выражение, чтобы оно также соответствовало точкам после того, как ключевые слова были выбраны.
В любом случае, это не работает должным образом, получая странные совпадения, которые выглядят абсолютно случайными.

@antonpod Спасибо за ваш ответ. Возможно , @nightwing может поделиться новостями о поддержке этой функции.

@nightwing есть новости по этому поводу?

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