[ESS] How to improve ESS syntax high-lighting and shortcuts
Richard M. Heiberger
rmh at temple.edu
Wed Jun 20 18:44:33 CEST 2007
This is the comment.dwim from newcomment.el in GNU Emacs.
Does it work on Xemacs? If so, you can bind it to the M-; key.
(defun comment-dwim (arg)
"Call the comment command you want (Do What I Mean).
If the region is active and `transient-mark-mode' is on, call
`comment-region' (unless it only consists of comments, in which
case it calls `uncomment-region').
Else, if the current line is empty, insert a comment and indent it.
Else if a prefix ARG is specified, call `comment-kill'.
Else, call `comment-indent'."
(if (and mark-active transient-mark-mode)
(comment-or-uncomment-region (region-beginning) (region-end) arg)
(if (save-excursion (beginning-of-line) (not (looking-at "\\s-*$")))
;; FIXME: If there's no comment to kill on this line and ARG is
;; specified, calling comment-kill is not very clever.
(if arg (comment-kill (and (integerp arg) arg)) (comment-indent))
(let ((add (if arg (prefix-numeric-value arg)
(if (= (length comment-start) 1) comment-add 0))))
;; Some modes insist on keeping column 0 comment in column 0
;; so we need to move away from it before inserting the comment.
(insert (comment-padright comment-start add))
(unless (string= "" comment-end)
(insert (comment-padleft comment-end add)))
More information about the ESS-help