@ Malabarbas Antwort scheint die einfachste und eleganteste Lösung zu sein. Wenn Sie dies jedoch so weit tun, dass eine eigene Funktion gewährleistet ist, können Sie sich auch comment-kill
an das Löschen anpassen , ohne den Kill-Ring zu ändern. Hier ist der Quellcode von
comment-kill
mit der einzeiligen Änderung zu definieren comment-delete
:
(defun comment-delete (arg)
"Delete the first comment on this line, if any. Don't touch
the kill ring. With prefix ARG, delete comments on that many
lines starting with this one."
(interactive "P")
(comment-normalize-vars)
(dotimes (_i (prefix-numeric-value arg))
(save-excursion
(beginning-of-line)
(let ((cs (comment-search-forward (line-end-position) t)))
(when cs
(goto-char cs)
(skip-syntax-backward " ")
(setq cs (point))
(comment-forward)
;; (kill-region cs (if (bolp) (1- (point)) (point))) ; original
(delete-region cs (if (bolp) (1- (point)) (point))) ; replace kill-region with delete-region
(indent-according-to-mode))))
(if arg (forward-line 1))))
Und hier ist eine Funktion (NB: minimal getestet), die einige zusätzliche Funktionen bietet, mit denen Sie Kommentare in der aktuellen Zeile, im aktiven Bereich oder im gesamten Puffer löschen können:
(defun comment-delete-dwim (beg end arg)
"Delete comments without touching the kill ring. With active
region, delete comments in region. With prefix, delete comments
in whole buffer. With neither, delete comments on current line."
(interactive "r\nP")
(let ((lines (cond (arg
(count-lines (point-min) (point-max)))
((region-active-p)
(count-lines beg end)))))
(save-excursion
(when lines
(goto-char (if arg (point-min) beg)))
(comment-delete (or lines 1)))))
Ich habe Leistungsprobleme nicht überprüft, aber vielleicht gibt es eine kleine Beule, wenn ich den Kill Ring nicht berühre. Unabhängig davon bezweifle ich, dass Sie Leistungsprobleme bemerken werden, wenn Sie nicht mit einem wirklich massiven Puffer arbeiten. Da es jedoch unwahrscheinlich ist, dass Sie diese Funktion sehr häufig verwenden, lohnt es sich anscheinend nicht, an der Optimierung zu arbeiten.
M-x flush-lines ^\s-*\/\/
oder etwas in diesem Sinne tun . Nicht perfekt, könnte aber manchmal funktionieren.