Как свободно форматировать комментарии в cc-режиме

Я довольно новичок в cc-mode, и я хотел бы настроить его так, чтобы я мог свободно форматировать и использовать вкладки в многострочных комментариях. Это важно для меня, потому что я хочу использовать cog.py в моем исходном файле и должен иметь возможность правильно форматировать исходный код python в комментарии. Я был бы согласен с комментариями, которые не имеют автоматического отступа, однако я бы хотел оставить автоматический отступ для остальной части исходного кода.

Пример:

...
/*
[[[cog
import cog
for x in ['a','b','c']:
>cog.outl(x)
]]]
*/
...

В строке, помеченной>, я хочу нажать клавишу TAB, чтобы сделать отступ в строке. cc-mode просто ничего не делает, если я так делаю. Я мог бы использовать пробелы там (что неудобно), но каждое (полу) автоматическое переиндентирование этого блока приведет к исчезновению пробелов и, следовательно, к неправильному отступу кода Python (что случится, если мне случится нажать где-нибудь клавишу Tab на этой строке после отступа с пробелами).

Я попытался запустить emacs без моего.init, чтобы убедиться, что это поведение по умолчанию, и пока оно не изменено моей конфигурацией. Я провел поиск в Google и прочитал документацию по переменным / функциям cc-mode, с которыми я столкнулся ( онлайн-документы cc-mode) во время поиска решения (т.е. c-indent-comments-syntaxically-p, c-indent-command, c-tab-всегда-отступ,...) но ни один из них, казалось, не решил мой вопрос.

РЕДАКТИРОВАТЬ 1: Благодаря идее abo-abo установки "multi-major-mode" я наткнулся на mmm-mode и настроил автоматическое переключение в режим python для секции cog, что решает большинство моих проблем.

Единственная оставшаяся проблема - перерисовать весь файл или область, содержащую раздел cog. Могу ли я как-то сказать cc-mode, чтобы он ничего не менял в комментариях при повторном выделении файла? ммм-режим + это было бы идеальным решением для меня.

1 ответ

Ты можешь использовать M-i чтобы сделать отступ для табуляции в нужных строках, чтобы вы могли использовать его для отступа в комментариях.

Вы также можете изменить свои комментарии, чтобы использовать // вместо. Просто выберите фрагмент кода Python и выполните M-x comment-region:

// def foo(x):
//      print 'hi'

Тогда автоиндент не испортит ваш отступ.

Другие вопросы по тегам