LINUX.ORG.RU

emacs: c-mode и comment-region


0

0

Братья чатлане, помогите научить емакс в c-mode комментировать выделенную область с помощью /* в начале области и */ в конце. Сейчас по comment-region комментируется каждая строчка (//).

anonymous

(defun my-comment-region (beg end &optional arg)
  (interactive "*r\nP")
  (save-excursion
    (goto-char beg)
    (insert "/*")
    (goto-char (+ end 2))
    (insert "*/")))

Kpoxman ★★
()

c-like комменты /**/ это дурной тон

aton
()
Ответ на: комментарий от Kpoxman

Получится

/*
foo(f1, f2);
/* some comment */
bar(b1, b2);
*/

поскольку вложенных коментариев нет, то:



/*                            <- комментарий тут начинается
foo(f1, f2);
/* some comment */            <- а тут заканчивается
bar(b1, b2);
*/                            <- а вот эта хрень приведет к синтаксической ошибке

Begemoth ★★★★★
()
Ответ на: комментарий от Begemoth

Ну да. Лучше это никак не сделать:
1) Можно было бы удалять все вложенные комменты, но это will confuse the user
2) Можно было бы написать, чтобы делалось так:

/*
foo(f1, f2);*/
/* some comment */
/*bar(b1, b2);
*/

но это уже фарш напоминает :)

Kpoxman ★★
()
Ответ на: комментарий от Begemoth

> поскольку вложенных коментариев нет, то:

настоящие джедаи ;) используют

#if 0
foo(f1, f2);
/* some comment */
bar(b1, b2);
#endif

beastie ★★★★★
()
Ответ на: комментарий от beastie

Опередил :)))

а по-другому и не как :)

как бы не было похоже на "грязный хак", но такое решению используют не только "джедаи", но и програмеры в серьёзных коммерческих проектах :)

Cy6erBr4in ★★★
()
Ответ на: комментарий от Cy6erBr4in

Руки им за такое поотрывать бы. Однострочные С++ комменты от таких проблем как раз и избавляют.

aton
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.