I have a bunch of single line comment blocks in C-code that I want to change to multiline. Example:
// foo // bar
/* foo * bar */
How can I do this easily in Emacs?
Emacs Stack Exchange is a question and answer site for those using, extending or developing Emacs. It only takes a minute to sign up.Sign up to join this community
(defun ph/switch-inline-c-comments-to-block (beg end) "Change whole-line inline C comments between BEG and END to block comments. If the region contains any lines which are not whole-line inline C comments then the behavior of this command is undefined." (interactive "*r") (narrow-to-region beg end) (unwind-protect (let ((whole-line-inline-comment "^[[:space:]]*//\\(.*\\)$")) (goto-char (point-min)) (replace-regexp whole-line-inline-comment "/*\\1" nil (point) (line-end-position)) (forward-line) (replace-regexp whole-line-inline-comment " *\\1") (when (eolp) (open-line 1) (forward-line)) (insert " */")) (widen)))
To use it, first evaluate the defun, then mark the sequence of whole-line inline comments you want to change to a K&R-style comment and execute
M-x ph/switch-inline-c-comments-to-block RET (or bind it to a key of your choice).