Package: emacs;
Reported by: PJ Weisberg <pj <at> irregularexpressions.net>
Date: Sun, 30 Jan 2011 12:05:02 UTC
Severity: normal
Found in version 23.2
Done: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Stefan Monnier <monnier <at> IRO.UMontreal.CA> To: PJ Weisberg <pj <at> irregularexpressions.net> Cc: 7940 <at> debbugs.gnu.org Subject: bug#7940: 23.2; Home and End keys don't work as expected with both pc-selection-mode and visual-line-mode enabled Date: Tue, 01 Feb 2011 16:11:19 -0500
> I've attached two (mutually exclusive) patches against the trunk. I've > never submitted a patch to Emacs before, so please let me know which is more > in line with the preferred way of doing things. That's a good question. I think the second looks cleaner, but suffers from the major problem that simple.el ends up referring to pc-select-mode, which is a mode that's rather deprecated. I think we should actually declare pc-selection-mode obsolete. Could you turn it off (and enable-delete-selection-mode instead, which is otherwise enabled by pc-selection-mode) and see which other features of pc-selection-mode you miss? Stefan > --PJ > # Bazaar merge directive format 2 (Bazaar 0.90) > # revision_id: pj <at> irregularexpressions.net-20110130045542-\ > # nuvqsje84yncvflq > # target_branch: bzr://bzr.savannah.gnu.org/emacs/trunk/ > # testament_sha1: b4d2fcdcc523cadc51d5f47e1965a9610cfcb2db > # timestamp: 2011-01-29 20:56:16 -0800 > # base_revision_id: schwab <at> linux-m68k.org-20110130003535-\ > # jminwifpi767oiw5 > # > # Begin patch > === modified file 'lisp/emulation/pc-select.el' > --- lisp/emulation/pc-select.el 2011-01-25 04:08:28 +0000 > +++ lisp/emulation/pc-select.el 2011-01-30 04:55:42 +0000 > @@ -366,8 +366,11 @@ > If scan reaches end of buffer, stop there without error." > (interactive "p") > (pc-select-ensure-mark) > - (end-of-line arg) > - (setq this-command 'end-of-line)) > + (let ((eol-command (if visual-line-mode > + 'end-of-visual-line > + 'end-of-line))) > + (funcall eol-command arg) > + (setq this-command eol-command))) > (defun backward-line-mark (&optional arg) > "Ensure mark is active; move cursor vertically up ARG lines." > @@ -501,8 +504,11 @@ > If scan reaches end of buffer, stop there without error." > (interactive "p") > (pc-select-maybe-deactivate-mark) > - (end-of-line arg) > - (setq this-command 'end-of-line)) > + (let ((eol-command (if visual-line-mode > + 'end-of-visual-line > + 'end-of-line))) > + (funcall eol-command arg) > + (setq this-command eol-command))) > (defun backward-line-nomark (&optional arg) > "Deactivate mark; move cursor vertically up ARG lines." > @@ -628,8 +634,9 @@ > If scan reaches end of buffer, stop there without error." > (interactive "p") > (pc-select-ensure-mark) > - (beginning-of-line arg)) > - > + (if visual-line-mode > + (beginning-of-visual-line arg) > + (beginning-of-line arg))) > (defun scroll-up-mark (&optional arg) > "Ensure mark is active; scroll upward ARG lines; or near full screen if no ARG. > @@ -728,7 +735,9 @@ > If scan reaches end of buffer, stop there without error." > (interactive "p") > (pc-select-maybe-deactivate-mark) > - (beginning-of-line arg)) > + (if visual-line-mode > + (beginning-of-visual-line arg) > + (beginning-of-line arg))) > (defun scroll-up-nomark (&optional arg) > "Deactivate mark; scroll upward ARG lines; or near full screen if no ARG. > # Begin bundle > IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWRC6JvgAAed/gFAQCgBQ4//3 > UhJAgL////BQBD5T3uvBYo9T2u73CSSNGiZTTwJoAp6eqe1Gp6R6j1DE9IMoJhNqaaJ6U9IeiAAA > ABoMSaJo0pjQj1B6Jo9IAAAGgilGqeKeieET1GR6QGQAAAAkkTETKeQmeoaTRhAxAAAQAw3lYeef > 1M04C3ipM5mIQotSMsIPjeRqjCNoCHAHwOOBBxl4aWGYPXxKaJFljmeQGTDWtzs+2mz7/y3CNPGO > rdiId27xSXTNBg1nYJIe2zPTfXNNzHMLabjUbTcdQ4ekxuDQMMXOFjHmc+tmMoDYLXVEgExiUdae > GQGR+qsItp2CvVpcDG411hLyxqtblv4nf1X5b5B0QdsOyOVsYGx0wJtKSfccbmALQrF4csGUjUwe > D1PWK2YRUMYeCIGAv1ZKBFCkT5J3wbz1V9I0HWdQosUfxQ8LPtzvvWYnVt8aWUgsaVNY0xSp9IjO > VEBomJ13xJCixsTQdXHOWDYHJ+edkomIZeL2o9H5yMBguRiDHeXZA5qBy+hV8LQ8TSiHLAGoyvkV > sGDDgWwBugNTweS12InsfQfwUrafIz1YC5eLILi3IOfS9wEXxH6W1oYB4SsVBa8WjQppsS1EPCJU > GsaHjadSsQ5wZSvBdoCgcIPddbN9rIxL4KadBZRpVruqIzQZzsVS8OhIyngxIKc5YasxaWYBpCYE > 5Klvmktt2i1m0rZ6vCWH6TqMaIJL5a3aNCKhgy5xm4siDSaMB5skK/nFU5e+fP5hzQcuJCx+ouYG > Y8aEeSUYo07HE4DSpjqGeKGv5W5KgxxbltiLC+N19KpdkBTmMAlQmZJqYbyJEHp6ZyafsAogsgsE > nmdYmEAgFexKzXLP0At47OQWc+tNZIMXBwbkXKRb9Eyw8G6VzBxSt79F60zN4+zjeHrj7h8Um1Ms > h4a9+51mbjx4TpNuNCXeUekTLVLAKPIBrdiu5ehvGUDRwvwFY4hImwK0h4ZI8Aqj7xJWm0mGB5dQ > rhRoNCqLN/8mhcGY8FNUGS8OZCtrDeE8aqrkuU9rMIuS9C7ShVS7VLRoScK5YYZJ1t+kKi1VivQO > B3TYEKA7gNScG28woU1Ws9OnUKuSfMDKqcOm46OKlBBUKUjFTAOLD53EvYTCKApCIRo7FmSvSFU4 > amhaUnhvpGdDPM2jmcBWpRWb9iCYWTJQPoFQZ6VwjWyq6q/BmX1d2dGUVsiRFGvJo+FlgWEPAxsH > RjDYGbBZJlWvjzjkzQMwIw2wA3mnwkxjFHgcZSXxhWateAUMQzC2ISSd3CqXbgQSCSBnFzCssT3v > mVs+rETwYnkV1QMSQCGQVY5ZjsK3ECfKTt2mFjiB2GazcDcDALkxG15mllixc0NQm46x6Z8MhN/i > 7kinChICF0TfAA== > # Bazaar merge directive format 2 (Bazaar 0.90) > # revision_id: pj <at> irregularexpressions.net-20110130033100-\ > # r8qs1ccpbbbsbg1e > # target_branch: bzr://bzr.savannah.gnu.org/emacs/trunk/ > # testament_sha1: 10ade64307d860af931f9f6fd8d3162c0b4d71e1 > # timestamp: 2011-01-29 19:42:53 -0800 > # base_revision_id: schwab <at> linux-m68k.org-20110130003535-\ > # jminwifpi767oiw5 > # > # Begin patch > === modified file 'lisp/emulation/pc-select.el' > --- lisp/emulation/pc-select.el 2011-01-25 04:08:28 +0000 > +++ lisp/emulation/pc-select.el 2011-01-30 03:31:00 +0000 > @@ -369,6 +369,15 @@ > (end-of-line arg) > (setq this-command 'end-of-line)) > +(defun end-of-visual-line-mark (&optional arg) > + "Ensure mark is active; move point to end of current visual line. > +With argument ARG not nil or 1, move forward ARG - 1 lines first. > +If scan reaches end of buffer, stop there without error." > + (interactive "p") > + (pc-select-ensure-mark) > + (end-of-visual-line arg) > + (setq this-command 'end-of-visual-line)) > + > (defun backward-line-mark (&optional arg) > "Ensure mark is active; move cursor vertically up ARG lines." > (interactive "p") > @@ -504,6 +513,15 @@ > (end-of-line arg) > (setq this-command 'end-of-line)) > +(defun end-of-visual-line-nomark (&optional arg) > + "Deactivate mark; move point to end of current visual line. > +With argument ARG not nil or 1, move forward ARG - 1 lines first. > +If scan reaches end of buffer, stop there without error." > + (interactive "p") > + (pc-select-maybe-deactivate-mark) > + (end-of-visual-line arg) > + (setq this-command 'end-of-visual-line)) > + > (defun backward-line-nomark (&optional arg) > "Deactivate mark; move cursor vertically up ARG lines." > (interactive "p") > @@ -630,6 +648,13 @@ > (pc-select-ensure-mark) > (beginning-of-line arg)) > +(defun beginning-of-visual-line-mark (&optional arg) > + "Ensure mark is active; move point to beginning of current visual line. > +With argument ARG not nil or 1, move forward ARG - 1 lines first. > +If scan reaches end of buffer, stop there without error." > + (interactive "p") > + (pc-select-ensure-mark) > + (beginning-of-visual-line arg)) > (defun scroll-up-mark (&optional arg) > "Ensure mark is active; scroll upward ARG lines; or near full screen if no ARG. > @@ -730,6 +755,14 @@ > (pc-select-maybe-deactivate-mark) > (beginning-of-line arg)) > +(defun beginning-of-visual-line-nomark (&optional arg) > + "Deactivate mark; move point to beginning of current visual line. > +With argument ARG not nil or 1, move forward ARG - 1 lines first. > +If scan reaches end of buffer, stop there without error." > + (interactive "p") > + (pc-select-maybe-deactivate-mark) > + (beginning-of-visual-line arg)) > + > (defun scroll-up-nomark (&optional arg) > "Deactivate mark; scroll upward ARG lines; or near full screen if no ARG. > A near full screen is `next-screen-context-lines' less than a full screen. > === modified file 'lisp/simple.el' > --- lisp/simple.el 2011-01-25 04:08:28 +0000 > +++ lisp/simple.el 2011-01-30 03:31:00 +0000 > @@ -4808,6 +4808,10 @@ > (define-key map [remap kill-line] 'kill-visual-line) > (define-key map [remap move-beginning-of-line] 'beginning-of-visual-line) > (define-key map [remap move-end-of-line] 'end-of-visual-line) > + (define-key map [remap end-of-line-nomark] 'end-of-visual-line-nomark) > + (define-key map [remap end-of-line-mark] 'end-of-visual-line-mark) > + (define-key map [remap beginning-of-line-nomark] 'beginning-of-visual-line-nomark) > + (define-key map [remap beginning-of-line-mark] 'beginning-of-visual-line-mark) > ;; These keybindings interfere with xterm function keys. Are > ;; there any other suitable bindings? > ;; (define-key map "\M-[" 'previous-logical-line) > # Begin bundle > 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 > 3lo=
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.