В emacs, как я могу заставить определенные символы действовать в качестве концевых выражений операторов? - PullRequest
3 голосов
/ 24 ноября 2011

Я создал новый основной режим, полученный из cc-mode, потому что я использую метаязык, который в основном похож на C, но анализируется для автоматической генерации кода.

Скажи, что у меня есть что-то вроде этого:

struct MyNewStruct
{
    int newInt = 32;
    {
        [flag, different-flag]
        string newString = "foo";
    }
}

Мне нужно, чтобы символ ']' был фактически эквивалентен символу; или следующая строка, объявляющая строку, не имеет правильного отступа.

Я пытался использовать Mx modify-syntax-entry для ']' и сделать его как закрывающим, так и символом пунктуации (согласно руководству GNU по таблицам синтаксиса), но это не похоже на разрешено принадлежать двум классам символов одновременно (если только один из этих классов символов не является комментарием). (И если это просто знак пунктуации, это вызывает другие проблемы.)

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

1 Ответ

0 голосов
/ 26 ноября 2011

В этом случае реальным ответом было выбрать что-то, что было бы синтаксически ближе к моему мета-языку. csharp-mode уже правильно анализирует скобки и помечает разделы, заключенные в скобки, как операторы, а не оператор-продолжение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...