Intereting Posts
Malloc () слишком маленький буфер сделать файл на Linux – как игнорировать регистр? Почему точка с запятой не дает ошибок, но слишком многих из них нет? Почему этот код бизона дает неожиданный результат? почему я не получаю «неиспользованное неинициализированное» предупреждение от gcc в этом тривиальном примере? Почему нет необходимости выделять память при объявлении строки функция glibc для извлечения текущего исполняемого имени? Библиотека шифрования файлов встроенных систем Указатели функции каста с различными типами указателей в качестве аргумента Получение времени для определенной части кода в цикле в C C ++ нерешенные внешние C макрос, что-то странное Внедрение mergesort в связанном списке C Макросы препроцессора – условные обозначения, основанные на конкатенации аргументов scanf () работает, несмотря на то, что буфером длиной 0 и предупреждением компилятора. Что здесь происходит?

Область комментариев Emacs в режиме C

В GNU Emacs есть хороший способ изменить команду comment-region в режиме C из

/* This is a comment which extends */ /* over more than one line in C. */ 

в

 /* This is a comment which extends over more than one line in C. */ 

? я пытался

 (setq comment-multi-line t) 

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

Начиная с Emacs 21, появился модуль с именем 'newcomment , который имеет разные стили комментариев (см. Переменные 'comment-styles . Этот параметр приближается к тому, что вы хотите:

 (setq comment-style 'multi-line) 

(Примечание: вы должны, вероятно, сделать эту настройку в режиме 'c-mode-hook ).

Однако ни один из настроек не делает комментарии похожими на то, что вы хотите.

Самый простой способ, который я видел, чтобы получить то, что вы хотите, это добавить этот взлом:

 (defadvice comment-region-internal (before comment-region-internal-hack-ccs activate) "override 4th argument to be just spaces" (when (eq major-mode 'c-mode) ; some condition here (let ((arg (ad-get-arg 4))) (when arg (ad-set-arg 4 (make-string (length arg) ?\ )))))) 

Текущие настройки для comment-style всегда префикс строки комментариев «*» (если не весь «/ *»).

Если у вас нет Emacs 21, я полагаю, вы могли бы просто загрузить newcomment.el из репозитория. Я не знаю, работает ли он в предыдущих версиях Emacs, но это может стоить того, чтобы улучшить Emacs.

Мой взлом разрывает 'uncomment-region . Правильным 'comment-padright было бы изменить 'comment-padright . Это потребует немного больше исследований, чтобы не нарушать другие вещи. Вышеупомянутый взломанный 'c-mode изменяет поведение в 'c-mode (отрегулируйте условие по своему вкусу).

Ближе всего я мог бы найти встроенную поддержку комментариев, если вы установили comment-style в multi-line , который будет производить следующее:

 /* This is a comment which extends * over more than one line in C. */ 

Если это недостаточно близко, взгляните на newcomment.el и определите свои собственные функции комментариев.