* Re: master 97cb255: newcomment.el (comment-line): New command on C-x C-; . [not found] ` <E1YKX8s-0007vW-86@vcs.savannah.gnu.org> @ 2015-02-08 20:07 ` Stephen Berman 2015-02-08 20:26 ` Artur Malabarba 0 siblings, 1 reply; 5+ messages in thread From: Stephen Berman @ 2015-02-08 20:07 UTC (permalink / raw) To: emacs-devel; +Cc: Artur Malabarba This patch is missing a final `)', see below. Please fix, and before you push, trying compiling or at least using check-parens. Thanks. Steve Berman On Sun, 08 Feb 2015 19:03:38 +0000 Artur Malabarba <bruce.connor.am@gmail.com> wrote: > +;;;###autoload > +(defun comment-line (n) > + "Comment or uncomment current line and leave point after it. > +With positive prefix, apply to N lines including current one. > +With negative prefix, apply to -N lines above. Also, further > +consecutive invocations of this command will inherit the negative > +argument. > + > +If region is active, comment lines in active region instead. > +Unlike `comment-dwim', this always comments whole lines." > + (interactive "p") > + (if (use-region-p) > + (comment-or-uncomment-region > + (save-excursion > + (goto-char (region-beginning)) > + (line-beginning-position)) > + (save-excursion > + (goto-char (region-end)) > + (line-end-position))) > + (when (and (eq last-command 'comment-line-backward) > + (natnump n)) > + (setq n (- n))) > + (let ((range > + (list (line-beginning-position) > + (goto-char (line-end-position n))))) > + (comment-or-uncomment-region > + (apply #'min range) > + (apply #'max range))) > + (forward-line 1) > + (back-to-indentation) > + (unless (natnump n) (setq this-command 'comment-line-backward))) ) ; <== here > + > (provide 'newcomment) > > ;;; newcomment.el ends here ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: master 97cb255: newcomment.el (comment-line): New command on C-x C-; . 2015-02-08 20:07 ` master 97cb255: newcomment.el (comment-line): New command on C-x C-; Stephen Berman @ 2015-02-08 20:26 ` Artur Malabarba 2015-02-09 1:13 ` Drew Adams 0 siblings, 1 reply; 5+ messages in thread From: Artur Malabarba @ 2015-02-08 20:26 UTC (permalink / raw) To: Stephen Berman; +Cc: emacs-devel Fixed. 2015-02-08 18:07 GMT-02:00 Stephen Berman <stephen.berman@gmx.net>: > This patch is missing a final `)', see below. Please fix, and before > you push, trying compiling or at least using check-parens. Thanks. > > Steve Berman > > On Sun, 08 Feb 2015 19:03:38 +0000 Artur Malabarba <bruce.connor.am@gmail.com> wrote: > >> +;;;###autoload >> +(defun comment-line (n) >> + "Comment or uncomment current line and leave point after it. >> +With positive prefix, apply to N lines including current one. >> +With negative prefix, apply to -N lines above. Also, further >> +consecutive invocations of this command will inherit the negative >> +argument. >> + >> +If region is active, comment lines in active region instead. >> +Unlike `comment-dwim', this always comments whole lines." >> + (interactive "p") >> + (if (use-region-p) >> + (comment-or-uncomment-region >> + (save-excursion >> + (goto-char (region-beginning)) >> + (line-beginning-position)) >> + (save-excursion >> + (goto-char (region-end)) >> + (line-end-position))) >> + (when (and (eq last-command 'comment-line-backward) >> + (natnump n)) >> + (setq n (- n))) >> + (let ((range >> + (list (line-beginning-position) >> + (goto-char (line-end-position n))))) >> + (comment-or-uncomment-region >> + (apply #'min range) >> + (apply #'max range))) >> + (forward-line 1) >> + (back-to-indentation) >> + (unless (natnump n) (setq this-command 'comment-line-backward))) > > ) ; <== here > >> + >> (provide 'newcomment) >> >> ;;; newcomment.el ends here ^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: master 97cb255: newcomment.el (comment-line): New command on C-x C-; . 2015-02-08 20:26 ` Artur Malabarba @ 2015-02-09 1:13 ` Drew Adams 2015-02-10 0:13 ` Artur Malabarba 0 siblings, 1 reply; 5+ messages in thread From: Drew Adams @ 2015-02-09 1:13 UTC (permalink / raw) To: Artur Malabarba; +Cc: emacs-devel > + (when (and (eq last-command 'comment-line-backward) > + (natnump n)) > + (setq n (- n))) It's really too bad (IMO) that you didn't take my suggestion. It sounded like you were going to... ("Good idea. Will do.") You did part of it - repeated upward commenting when started with a negative prefix arg. So far, so good. Thx. But this other feature, which you left out, is also useful, IMO: When repeated, a negative prefix arg switches direction. If you change the above predicate to just (eq last-command 'comment-line-backward) then you get the direction-switching that I suggested. You then still get inheritance of a negative prefix arg when you repeat (upward commenting instead of downward). The direction-switching feature does not change the behavior in any way, except if you use a negative prefix arg again, while you are repeating. With your implementation, hitting `C--' while you are repeating has an effect only if you are going downward. In that case it does switch direction. But if you hit `C--' when going up then it is a no-op. And in fact I see no way to switch to going down again - not `C-1' or `C-u' or ... The direction-switching behavior is thus not symmetric. It's not very useful for it to work only when moving down, IMO. If someone does not want to switch direction when repeating moving down, then s?he just won't hit `C-' again. Since the initial prefix arg is inherited, there is no reason to hit `C--' again, if it does nothing. In that context, `C--' is useless anyway. Did you try what I suggested in this regard? If so, did you find something wrong with it? To me it is handy to be able to always reverse direction (by hitting `C--') - not only when you are moving downward. It is in general handy to have a quick way to reverse the direction of an operation that is bound to a repeating key. One can easily repeat quickly and go past a target position. A quick way to reverse, while staying within the repeating command (e.g. as opposed to using `undo'), is an advantage in general - not just for this command. Anyway, not a big deal. It won't be the first time I will have my own local version of something. ;-) I would prefer not to have to, of course. And I am curious what downside you saw to this feature, if you even tried it at all. ^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: master 97cb255: newcomment.el (comment-line): New command on C-x C-; . 2015-02-09 1:13 ` Drew Adams @ 2015-02-10 0:13 ` Artur Malabarba 2015-02-10 6:21 ` Drew Adams 0 siblings, 1 reply; 5+ messages in thread From: Artur Malabarba @ 2015-02-10 0:13 UTC (permalink / raw) To: Drew Adams; +Cc: emacs-devel [-- Attachment #1: Type: text/plain, Size: 3627 bytes --] Yes, I did give it a try and it was a conscious decision, but let me start by saying I didn't put a huge amount of thought into it. There were three factors that made me choose this: 1. Reversing direction while going up can also be done by just hitting some harmless key like C-a (for this particular command, C-a is harmless). That takes the same number of keys as C-- and has the same effect. In some cases (when you're moving one line at a time), `undo' will also do what you want with even less keys. 2. A good portion of users won't expect it to behave like that (even if it's written in the doc). This also applies to the current version, but see below. 3. Unlike the current "persistent negative argument effect", this "reverse direction twice" functionality seems like it would come up very rarely, probably less than the number of times it would catch someone by surprise. Combine 3 with the fact that it has perfectly plausible alternatives for those instances when it does come up, and that's I why I decided this way. As I said, I just thought of this very briefly. Items 2 and 3 are really just hunches. Cheers On 9 Feb 2015 01:13, "Drew Adams" <drew.adams@oracle.com> wrote: > > > + (when (and (eq last-command 'comment-line-backward) > > + (natnump n)) > > + (setq n (- n))) > > It's really too bad (IMO) that you didn't take my suggestion. > It sounded like you were going to... ("Good idea. Will do.") > > You did part of it - repeated upward commenting when started > with a negative prefix arg. So far, so good. Thx. > > But this other feature, which you left out, is also useful, IMO: > > When repeated, a negative prefix arg switches direction. > > If you change the above predicate to just (eq last-command > 'comment-line-backward) then you get the direction-switching > that I suggested. > > You then still get inheritance of a negative prefix arg when > you repeat (upward commenting instead of downward). > > The direction-switching feature does not change the behavior > in any way, except if you use a negative prefix arg again, > while you are repeating. > > With your implementation, hitting `C--' while you are > repeating has an effect only if you are going downward. In > that case it does switch direction. But if you hit `C--' > when going up then it is a no-op. And in fact I see no way > to switch to going down again - not `C-1' or `C-u' or ... > > The direction-switching behavior is thus not symmetric. > It's not very useful for it to work only when moving down, > IMO. If someone does not want to switch direction when > repeating moving down, then s?he just won't hit `C-' again. > Since the initial prefix arg is inherited, there is no > reason to hit `C--' again, if it does nothing. In that > context, `C--' is useless anyway. > > Did you try what I suggested in this regard? If so, did > you find something wrong with it? To me it is handy to be > able to always reverse direction (by hitting `C--') - not > only when you are moving downward. > > It is in general handy to have a quick way to reverse > the direction of an operation that is bound to a repeating > key. One can easily repeat quickly and go past a target > position. A quick way to reverse, while staying within > the repeating command (e.g. as opposed to using `undo'), > is an advantage in general - not just for this command. > > Anyway, not a big deal. It won't be the first time I will > have my own local version of something. ;-) I would prefer > not to have to, of course. And I am curious what downside > you saw to this feature, if you even tried it at all. [-- Attachment #2: Type: text/html, Size: 4460 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: master 97cb255: newcomment.el (comment-line): New command on C-x C-; . 2015-02-10 0:13 ` Artur Malabarba @ 2015-02-10 6:21 ` Drew Adams 0 siblings, 0 replies; 5+ messages in thread From: Drew Adams @ 2015-02-10 6:21 UTC (permalink / raw) To: bruce.connor.am; +Cc: emacs-devel > Yes, I did give it a try and it was a conscious decision, but let me start by saying I didn't put a huge amount of thought into it. > There were three factors that made me choose this: > 1. Reversing direction while going up can also be done by just hitting some harmless key like C-a (for this particular command, C-a is harmless). That takes the same number of keys as C-- and has the same effect. In some cases (when you're moving one line at a time), `undo' will also do what you want with even less keys. > 2. A good portion of users won't expect it to behave like that (even if it's written in the doc). This also applies to the current version, but see below. > 3. Unlike the current "persistent negative argument effect", this "reverse direction twice" functionality seems like it would come up very rarely, probably less than the number of times it would catch someone by surprise. > Combine 3 with the fact that it has perfectly plausible alternatives for those instances when it does come up, and that's I why I decided this way. > As I said, I just thought of this very briefly. Items 2 and 3 are really just hunches. Like I said: >> It won't be the first time I will have my own local version of >> something. ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-02-10 6:21 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <20150208190338.30436.1351@vcs.savannah.gnu.org> [not found] ` <E1YKX8s-0007vW-86@vcs.savannah.gnu.org> 2015-02-08 20:07 ` master 97cb255: newcomment.el (comment-line): New command on C-x C-; Stephen Berman 2015-02-08 20:26 ` Artur Malabarba 2015-02-09 1:13 ` Drew Adams 2015-02-10 0:13 ` Artur Malabarba 2015-02-10 6:21 ` Drew Adams
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).