Синтаксическая информация буфера Emacs - PullRequest
2 голосов
/ 21 апреля 2011

В настоящее время я внедряю Clustered Query-Replace в Emacs.Кластеризация должна быть чувствительна к

  1. регистру,
  2. символу и контексту слова и
  3. , является ли попадание простым кодом внутри комментария или части строкового литерала

Первые два пункта легко сделать эффективными.Последний пункт требует эффективного способа извлечения всех специфичных для режима синтаксиса (syntax-table) областей комментариев и строк буфера Emacs.Я знаю о syntax-ppss, но я хочу более быстрый способ получить все регионы.Есть ли встроенная функция для этого или мне нужно вручную искать каждую строку и комментировать начало-конец пара .Я не хочу зависеть от font-lock, потому что это слишком медленно для моего приложения.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 26 апреля 2011

Если у вас есть набор инструментов CEDET, вы можете использовать лексический анализ, который поставляется вместе с инструментом Semantic, для выполнения этой работы.Все поддерживаемые режимы имеют лексер, но эти лексеры обычно игнорируют комментарии.Создать новые лексические анализаторы, которые просто обрабатывают комментарии и строки, не сложно, и есть пример, который делает это для обработки документации тегов в semantic-doc-snarf-comment-for-tag.

Что приятно в лексическом анализаторе, это то, что он дает вам списоклексических токенов, которые вы можете отфильтровать простым способом.

1 голос
/ 21 апреля 2011

Я думаю, что 'skip-syntax-forward' делает то, что вы хотите.

...