[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Is Elisp really that slow?

From: Ergus
Subject: Re: Is Elisp really that slow?
Date: Wed, 15 May 2019 21:38:33 +0200
User-agent: NeoMutt/20180716

On Wed, May 15, 2019 at 10:29:42AM -0700, Drew Adams wrote:
> And, as already mentioned, comment-dwim is not an
> alternative to comment-region. They do different
> things.

I beg to differ.

And your begged difference, which presumably shows
that they do NOT do different things, is what? ;-)

I have nothing special to say here about `C-c C-c'
or `cc-mode'.  But I will say I agree with Oscar
that `comment-dwim' and `comment-region' have
different behaviors - so neither is a substitute
for the other.

In particular, `comment-region' lets you also
uncomment, including unnest, comments.

To no waste bindings we could just modify comment-region to accept
negative prefix to uncomment. So C-- M-; uncoments region, and M-;
comments it. But now there will come another user saying that the dwim
version is better... we will never agree in anything this way.

I use both, and I bind each to a short key sequence.

More precisely, I leave `comment-dwim' on `M-;'
and I bind `C-x C-;' to a command similar to
`comment-region' but that I find more useful:
`comment-region-lines'.  It comments/uncomments
whole lines.

(So it too differs from `comment-region' - so it
too is not an exact "replacement".)

As for key bindings:

Although I haven't bothered to change the binding of
`M-;', I think it's a shame and a waste to sacrifice
such a nice, short, _repeatable_ key sequence for a
command that does _nothing_ when you repeat it.

Far better to use `M-;' for some command that keeps
doing something when repeated (just hold down `M-;').
That's what Emacs should do eventually, IMHO.  No
urgency, but someday, when we find a really useful
repeatable command...

As for `comment-dwim': Since I use `C-x C-;'
(`comment-region-lines') for block commenting and
uncommenting, I never really use `M-;' for anything
other than an end-of-line comment.

`M-;' used to be bound to a command that did only
that: `indent-for-comment'.  And since that's all
I really use `M-;' for, the rest of `comment-dwim'
is, yes, wasted and replaceable by `comment-region'
or my `comment-region-line'.  `M-;' for eol comment,
`C-x C-;' for commenting/uncommenting lines.

(defun comment-region-lines (beg end &optional arg)
 "Like `comment-region', but comment/uncomment whole lines."
 (interactive "*r\nP")
 (when (> beg end)
   (setq beg  (prog1 end (setq end  beg))))
 (let ((bol  (save-excursion
               (goto-char beg)
       (eol  (save-excursion
               (goto-char end)
               (if (bolp) (point) (line-end-position)))))
   (comment-region bol eol arg)))

This is the king of features I would really support. Enable line or
region by default. There is a package for that in melpa y find very

reply via email to

[Prev in Thread] Current Thread [Next in Thread]