В 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
и определите свои собственные функции комментариев.