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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.