From unknown Sun Aug 17 10:23:02 2025 X-Loop: help-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 Resent-From: PJ Weisberg Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 30 Jan 2011 12:05:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 7940 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 7940@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.12963890776493 (code B ref -1); Sun, 30 Jan 2011 12:05:02 +0000 Received: (at submit) by debbugs.gnu.org; 30 Jan 2011 12:04:37 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1PjW1A-0001gc-PN for submit@debbugs.gnu.org; Sun, 30 Jan 2011 07:04:37 -0500 Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1PjPGf-0000Wf-1e for submit@debbugs.gnu.org; Sat, 29 Jan 2011 23:52:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PjPOe-0004uv-Ha for submit@debbugs.gnu.org; Sun, 30 Jan 2011 00:00:21 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,HTML_MESSAGE, RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from lists.gnu.org ([199.232.76.165]:36477) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PjPOe-0004ur-C4 for submit@debbugs.gnu.org; Sun, 30 Jan 2011 00:00:20 -0500 Received: from [140.186.70.92] (port=47952 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PjPOc-0000EC-Eu for bug-gnu-emacs@gnu.org; Sun, 30 Jan 2011 00:00:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PjPOa-0004u2-SK for bug-gnu-emacs@gnu.org; Sun, 30 Jan 2011 00:00:18 -0500 Received: from smtpauth17.prod.mesa1.secureserver.net ([64.202.165.29]:56838) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1PjPOa-0004tF-AF for bug-gnu-emacs@gnu.org; Sun, 30 Jan 2011 00:00:16 -0500 Received: (qmail 24015 invoked from network); 30 Jan 2011 04:40:47 -0000 Received: from unknown (209.85.161.41) by smtpauth17.prod.mesa1.secureserver.net (64.202.165.29) with ESMTP; 30 Jan 2011 04:40:46 -0000 Received: by fxm12 with SMTP id 12so5533369fxm.0 for ; Sat, 29 Jan 2011 21:00:09 -0800 (PST) MIME-Version: 1.0 Received: by 10.223.119.129 with SMTP id z1mr4395446faq.50.1296363609240; Sat, 29 Jan 2011 21:00:09 -0800 (PST) Received: by 10.223.102.70 with HTTP; Sat, 29 Jan 2011 21:00:09 -0800 (PST) Date: Sat, 29 Jan 2011 21:00:09 -0800 Message-ID: From: PJ Weisberg Content-Type: multipart/mixed; boundary=001636c5a7d66db4be049b092c0d X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4-2.6 X-Received-From: 64.202.165.29 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 199.232.76.165 X-Spam-Score: -6.6 (------) X-Mailman-Approved-At: Sun, 30 Jan 2011 07:04:31 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.6 (------) --001636c5a7d66db4be049b092c0d Content-Type: multipart/alternative; boundary=001636c5a7d66db4a6049b092c0b --001636c5a7d66db4a6049b092c0b Content-Type: text/plain; charset=ISO-8859-1 1) Open or create a file with logical lines longer than the width of the window. 2) Enable visual-line-mode and pc-selection-mode (order doesn't matter). 3) Press the and/or keys with point on one of these long lines. Expected: Point moves to the beginning/end of the current visual line. Observed: Point moves to the beginning/end of the current logical line. 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. --PJ --001636c5a7d66db4a6049b092c0b Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable 1) Open or create a file with logical lines longer than the width of thewindow.
2) Enable visual-line-mode and pc-selection-mode (order doesn&#= 39;t matter).
3) Press the <home> and/or <end> keys with poi= nt on one of these long
lines.

Expected: Point moves to the beginning/end of the current vis= ual line.
Observed: Point moves to the beginning/end of the current logi= cal line.

I've attached two (mutually exclusive) patches against= the trunk.=A0 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.
--PJ
--001636c5a7d66db4a6049b092c0b-- --001636c5a7d66db4be049b092c0d Content-Type: text/x-patch; charset=US-ASCII; name="pc-visual-line_if.patch" Content-Disposition: attachment; filename="pc-visual-line_if.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gjjhc0g20 IyBCYXphYXIgbWVyZ2UgZGlyZWN0aXZlIGZvcm1hdCAyIChCYXphYXIgMC45MCkKIyByZXZpc2lv bl9pZDogcGpAaXJyZWd1bGFyZXhwcmVzc2lvbnMubmV0LTIwMTEwMTMwMDQ1NTQyLVwKIyAgIG51 dnFzamU4NHluY3ZmbHEKIyB0YXJnZXRfYnJhbmNoOiBienI6Ly9ienIuc2F2YW5uYWguZ251Lm9y Zy9lbWFjcy90cnVuay8KIyB0ZXN0YW1lbnRfc2hhMTogYjRkMmZjZGNjNTIzY2FkYzUxZDVmNDdl MTk2NWE5NjEwY2ZjYjJkYgojIHRpbWVzdGFtcDogMjAxMS0wMS0yOSAyMDo1NjoxNiAtMDgwMAoj IGJhc2VfcmV2aXNpb25faWQ6IHNjaHdhYkBsaW51eC1tNjhrLm9yZy0yMDExMDEzMDAwMzUzNS1c CiMgICBqbWlud2lmcGk3NjdvaXc1CiMgCiMgQmVnaW4gcGF0Y2gKPT09IG1vZGlmaWVkIGZpbGUg J2xpc3AvZW11bGF0aW9uL3BjLXNlbGVjdC5lbCcKLS0tIGxpc3AvZW11bGF0aW9uL3BjLXNlbGVj dC5lbAkyMDExLTAxLTI1IDA0OjA4OjI4ICswMDAwCisrKyBsaXNwL2VtdWxhdGlvbi9wYy1zZWxl Y3QuZWwJMjAxMS0wMS0zMCAwNDo1NTo0MiArMDAwMApAQCAtMzY2LDggKzM2NiwxMSBAQAogSWYg c2NhbiByZWFjaGVzIGVuZCBvZiBidWZmZXIsIHN0b3AgdGhlcmUgd2l0aG91dCBlcnJvci4iCiAg IChpbnRlcmFjdGl2ZSAicCIpCiAgIChwYy1zZWxlY3QtZW5zdXJlLW1hcmspCi0gIChlbmQtb2Yt bGluZSBhcmcpCi0gIChzZXRxIHRoaXMtY29tbWFuZCAnZW5kLW9mLWxpbmUpKQorICAobGV0ICgo ZW9sLWNvbW1hbmQgKGlmIHZpc3VhbC1saW5lLW1vZGUKKyAgICAgICAgICAgICAgICAgICAgICAg ICAnZW5kLW9mLXZpc3VhbC1saW5lCisgICAgICAgICAgICAgICAgICAgICAgICdlbmQtb2YtbGlu ZSkpKQorICAgIChmdW5jYWxsIGVvbC1jb21tYW5kIGFyZykKKyAgICAoc2V0cSB0aGlzLWNvbW1h bmQgZW9sLWNvbW1hbmQpKSkKIAogKGRlZnVuIGJhY2t3YXJkLWxpbmUtbWFyayAoJm9wdGlvbmFs IGFyZykKICAgIkVuc3VyZSBtYXJrIGlzIGFjdGl2ZTsgbW92ZSBjdXJzb3IgdmVydGljYWxseSB1 cCBBUkcgbGluZXMuIgpAQCAtNTAxLDggKzUwNCwxMSBAQAogSWYgc2NhbiByZWFjaGVzIGVuZCBv ZiBidWZmZXIsIHN0b3AgdGhlcmUgd2l0aG91dCBlcnJvci4iCiAgIChpbnRlcmFjdGl2ZSAicCIp CiAgIChwYy1zZWxlY3QtbWF5YmUtZGVhY3RpdmF0ZS1tYXJrKQotICAoZW5kLW9mLWxpbmUgYXJn KQotICAoc2V0cSB0aGlzLWNvbW1hbmQgJ2VuZC1vZi1saW5lKSkKKyAgKGxldCAoKGVvbC1jb21t YW5kIChpZiB2aXN1YWwtbGluZS1tb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuZC1v Zi12aXN1YWwtbGluZQorICAgICAgICAgICAgICAgICAgICAgICAnZW5kLW9mLWxpbmUpKSkKKyAg ICAoZnVuY2FsbCBlb2wtY29tbWFuZCBhcmcpCisgICAgKHNldHEgdGhpcy1jb21tYW5kIGVvbC1j b21tYW5kKSkpCiAKIChkZWZ1biBiYWNrd2FyZC1saW5lLW5vbWFyayAoJm9wdGlvbmFsIGFyZykK ICAgIkRlYWN0aXZhdGUgbWFyazsgbW92ZSBjdXJzb3IgdmVydGljYWxseSB1cCBBUkcgbGluZXMu IgpAQCAtNjI4LDggKzYzNCw5IEBACiBJZiBzY2FuIHJlYWNoZXMgZW5kIG9mIGJ1ZmZlciwgc3Rv cCB0aGVyZSB3aXRob3V0IGVycm9yLiIKICAgKGludGVyYWN0aXZlICJwIikKICAgKHBjLXNlbGVj dC1lbnN1cmUtbWFyaykKLSAgKGJlZ2lubmluZy1vZi1saW5lIGFyZykpCi0KKyAgKGlmIHZpc3Vh bC1saW5lLW1vZGUKKyAgICAgIChiZWdpbm5pbmctb2YtdmlzdWFsLWxpbmUgYXJnKQorICAgIChi ZWdpbm5pbmctb2YtbGluZSBhcmcpKSkKIAogKGRlZnVuIHNjcm9sbC11cC1tYXJrICgmb3B0aW9u YWwgYXJnKQogICAiRW5zdXJlIG1hcmsgaXMgYWN0aXZlOyBzY3JvbGwgdXB3YXJkIEFSRyBsaW5l czsgb3IgbmVhciBmdWxsIHNjcmVlbiBpZiBubyBBUkcuCkBAIC03MjgsNyArNzM1LDkgQEAKIElm IHNjYW4gcmVhY2hlcyBlbmQgb2YgYnVmZmVyLCBzdG9wIHRoZXJlIHdpdGhvdXQgZXJyb3IuIgog ICAoaW50ZXJhY3RpdmUgInAiKQogICAocGMtc2VsZWN0LW1heWJlLWRlYWN0aXZhdGUtbWFyaykK LSAgKGJlZ2lubmluZy1vZi1saW5lIGFyZykpCisgIChpZiB2aXN1YWwtbGluZS1tb2RlCisgICAg ICAoYmVnaW5uaW5nLW9mLXZpc3VhbC1saW5lIGFyZykKKyAgICAoYmVnaW5uaW5nLW9mLWxpbmUg YXJnKSkpCiAKIChkZWZ1biBzY3JvbGwtdXAtbm9tYXJrICgmb3B0aW9uYWwgYXJnKQogICAiRGVh Y3RpdmF0ZSBtYXJrOyBzY3JvbGwgdXB3YXJkIEFSRyBsaW5lczsgb3IgbmVhciBmdWxsIHNjcmVl biBpZiBubyBBUkcuCgojIEJlZ2luIGJ1bmRsZQpJeUJDWVhwaFlYSWdjbVYyYVhOcGIyNGdZblZ1 Wkd4bElIWTBDaU1LUWxwb09URkJXU1pUV1JDNkp2Z0FBZWQvZ0ZBUUNnQlE0Ly8zClVoSkFnTC8v Ly9CUUJENVQzdXZCWW85VDJ1NzNDU1NOR2laVFR3Sm9BcDZlcWUxR3A2UjZqMURFOUlNb0poTnFh YUo2VTlJZWlBQUEKQUJvTVNhSm8wcGpRajFCNkpvOUlBQUFHZ2lsR3FlS2VpZUVUMUdSNlFHUUFB QUFra1RFVEtlUW1lb2FUUmhBeEFBQVFBdzNsWWVlZgoxTTA0QzNpcE01bUlRb3RTTXNJUGplUnFq Q05vQ0hBSHdPT0JCeGw0YVdHWVBYeEthSkZsam1lUUdURFd0enMrMm16Ny95M0NOUEdPCnJkaUlk Mjd4U1hUTkJnMW5ZSkllMnpQVGZYTk56SE1MYWJqVWJUY2RRNGVreHVEUU1NWE9GakhtYyt0bU1v RFlMWFZFZ0V4aVVkYWUKR1FHUitxc0l0cDJDdlZwY0RHNDExaEx5eHF0Ymx2NG5mMVg1YjVCMFFk c095T1ZzWUd4MHdKdEtTZmNjYm1BTFFyRjRjc0dValV3ZQpEMVBXSzJZUlVNWWVDSUdBdjFaS0JG Q2tUNUozd2J6MVY5STBIV2RRb3NVZnhROExQdHp2dldZblZ0OGFXVWdzYVZOWTB4U3A5SWpPClZF Qm9tSjEzeEpDaXhzVFFkWEhPV0RZSEorZWRrb21JWmVMMm85SDV5TUJndVJpREhlWFpBNXFCeSto VjhMUThUU2lITEFHb3l2a1YKc0dERGdXd0J1Z05Ud2VTMTJJbnNmUWZ3VXJhZkl6MVlDNWVMSUxp M0lPZlM5d0VYeEg2VzFvWUI0U3NWQmE4V2pRcHBzUzFFUENKVQpHc2FIamFkU3NRNXdaU3ZCZG9D Z2NJUGRkYk45ckl4TDRLYWRCWlJwVnJ1cUl6UVp6c1ZTOE9oSXluZ3hJS2M1WWFzeGFXWUJwQ1lF CjVLbHZta3R0MmkxbTByWjZ2Q1dINlRxTWFJSkw1YTNhTkNLaGd5NXhtNHNpRFNhTUI1c2tLL25G VTVlK2ZQNWh6UWN1SkN4K291WUcKWThhRWVTVVlvMDdIRTREU3BqcUdlS0d2NVc1S2d4eGJsdGlM QytOMTlLcGRrQlRtTUFsUW1aSnFZYnlKRUhwNlp5YWZzQW9nc2dzRQpubWRZbUVBZ0ZleEt6WExQ MEF0NDdPUVdjK3ROWklNWEJ3YmtYS1JiOUV5dzhHNlZ6QnhTdDc5RjYwek40K3pqZUhyajdoOFVt MU1zCmg0YTkrNTFtYmp4NFRwTnVOQ1hlVWVrVExWTEFLUElCcmRpdTVlaHZHVURSd3Z3Rlk0aElt d0swaDRaSThBcWo3eEpXbTBtR0I1ZFEKcmhSb05DcUxOLzhtaGNHWThGTlVHUzhPWkN0ckRlRThh cXJrdVU5ck1JdVM5QzdTaFZTN1ZMUm9TY0s1WVlaSjF0K2tLaTFWaXZRTwpCM1RZRUtBN2dOU2NH Mjh3b1UxV3M5T25VS3VTZk1ES3FjT200Nk9LbEJCVUtVakZUQU9MRDUzRXZZVENLQXBDSVJvN0Zt U3ZTRlU0CmFtaGFVbmh2cEdkRFBNMmptY0JXcFJXYjlpQ1lXVEpRUG9GUVo2VndqV3lxNnEvQm1Y MWQyZEdVVnNpUkZHdkpvK0ZsZ1dFUEF4c0gKUmpEWUdiQlpKbFd2anpqa3pRTXdJdzJ3QTNtbndr eGpGSGdjWlNYeGhXYXRlQVVNUXpDMklTU2QzQ3FYYmdRU0NTQm5GekNzc1QzdgptVnMrckVUd1lu a1YxUU1TUUNHUVZZNVpqc0szRUNmS1R0Mm1GamlCMkdhemNEY0RBTGt4RzE1bWxsaXhjME5RbTQ2 eDZaOE1oTi9pCjdraW5DaElDRjBUZkFBPT0K --001636c5a7d66db4be049b092c0d Content-Type: text/x-patch; charset=US-ASCII; name="pc-visual-line_function.patch" Content-Disposition: attachment; filename="pc-visual-line_function.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gjjhcgk51 IyBCYXphYXIgbWVyZ2UgZGlyZWN0aXZlIGZvcm1hdCAyIChCYXphYXIgMC45MCkKIyByZXZpc2lv bl9pZDogcGpAaXJyZWd1bGFyZXhwcmVzc2lvbnMubmV0LTIwMTEwMTMwMDMzMTAwLVwKIyAgIHI4 cXMxY2NwYmJic2JnMWUKIyB0YXJnZXRfYnJhbmNoOiBienI6Ly9ienIuc2F2YW5uYWguZ251Lm9y Zy9lbWFjcy90cnVuay8KIyB0ZXN0YW1lbnRfc2hhMTogMTBhZGU2NDMwN2Q4NjBhZjkzMWY5ZjZm ZDhkMzE2MmMwYjRkNzFlMQojIHRpbWVzdGFtcDogMjAxMS0wMS0yOSAxOTo0Mjo1MyAtMDgwMAoj IGJhc2VfcmV2aXNpb25faWQ6IHNjaHdhYkBsaW51eC1tNjhrLm9yZy0yMDExMDEzMDAwMzUzNS1c CiMgICBqbWlud2lmcGk3NjdvaXc1CiMgCiMgQmVnaW4gcGF0Y2gKPT09IG1vZGlmaWVkIGZpbGUg J2xpc3AvZW11bGF0aW9uL3BjLXNlbGVjdC5lbCcKLS0tIGxpc3AvZW11bGF0aW9uL3BjLXNlbGVj dC5lbAkyMDExLTAxLTI1IDA0OjA4OjI4ICswMDAwCisrKyBsaXNwL2VtdWxhdGlvbi9wYy1zZWxl Y3QuZWwJMjAxMS0wMS0zMCAwMzozMTowMCArMDAwMApAQCAtMzY5LDYgKzM2OSwxNSBAQAogICAo ZW5kLW9mLWxpbmUgYXJnKQogICAoc2V0cSB0aGlzLWNvbW1hbmQgJ2VuZC1vZi1saW5lKSkKIAor KGRlZnVuIGVuZC1vZi12aXN1YWwtbGluZS1tYXJrICgmb3B0aW9uYWwgYXJnKQorICAiRW5zdXJl IG1hcmsgaXMgYWN0aXZlOyBtb3ZlIHBvaW50IHRvIGVuZCBvZiBjdXJyZW50IHZpc3VhbCBsaW5l LgorV2l0aCBhcmd1bWVudCBBUkcgbm90IG5pbCBvciAxLCBtb3ZlIGZvcndhcmQgQVJHIC0gMSBs aW5lcyBmaXJzdC4KK0lmIHNjYW4gcmVhY2hlcyBlbmQgb2YgYnVmZmVyLCBzdG9wIHRoZXJlIHdp dGhvdXQgZXJyb3IuIgorICAoaW50ZXJhY3RpdmUgInAiKQorICAocGMtc2VsZWN0LWVuc3VyZS1t YXJrKQorICAoZW5kLW9mLXZpc3VhbC1saW5lIGFyZykKKyAgKHNldHEgdGhpcy1jb21tYW5kICdl bmQtb2YtdmlzdWFsLWxpbmUpKQorCiAoZGVmdW4gYmFja3dhcmQtbGluZS1tYXJrICgmb3B0aW9u YWwgYXJnKQogICAiRW5zdXJlIG1hcmsgaXMgYWN0aXZlOyBtb3ZlIGN1cnNvciB2ZXJ0aWNhbGx5 IHVwIEFSRyBsaW5lcy4iCiAgIChpbnRlcmFjdGl2ZSAicCIpCkBAIC01MDQsNiArNTEzLDE1IEBA CiAgIChlbmQtb2YtbGluZSBhcmcpCiAgIChzZXRxIHRoaXMtY29tbWFuZCAnZW5kLW9mLWxpbmUp KQogCisoZGVmdW4gZW5kLW9mLXZpc3VhbC1saW5lLW5vbWFyayAoJm9wdGlvbmFsIGFyZykKKyAg IkRlYWN0aXZhdGUgbWFyazsgbW92ZSBwb2ludCB0byBlbmQgb2YgY3VycmVudCB2aXN1YWwgbGlu ZS4KK1dpdGggYXJndW1lbnQgQVJHIG5vdCBuaWwgb3IgMSwgbW92ZSBmb3J3YXJkIEFSRyAtIDEg bGluZXMgZmlyc3QuCitJZiBzY2FuIHJlYWNoZXMgZW5kIG9mIGJ1ZmZlciwgc3RvcCB0aGVyZSB3 aXRob3V0IGVycm9yLiIKKyAgKGludGVyYWN0aXZlICJwIikKKyAgKHBjLXNlbGVjdC1tYXliZS1k ZWFjdGl2YXRlLW1hcmspCisgIChlbmQtb2YtdmlzdWFsLWxpbmUgYXJnKQorICAoc2V0cSB0aGlz LWNvbW1hbmQgJ2VuZC1vZi12aXN1YWwtbGluZSkpCisKIChkZWZ1biBiYWNrd2FyZC1saW5lLW5v bWFyayAoJm9wdGlvbmFsIGFyZykKICAgIkRlYWN0aXZhdGUgbWFyazsgbW92ZSBjdXJzb3IgdmVy dGljYWxseSB1cCBBUkcgbGluZXMuIgogICAoaW50ZXJhY3RpdmUgInAiKQpAQCAtNjMwLDYgKzY0 OCwxMyBAQAogICAocGMtc2VsZWN0LWVuc3VyZS1tYXJrKQogICAoYmVnaW5uaW5nLW9mLWxpbmUg YXJnKSkKIAorKGRlZnVuIGJlZ2lubmluZy1vZi12aXN1YWwtbGluZS1tYXJrICgmb3B0aW9uYWwg YXJnKQorICAiRW5zdXJlIG1hcmsgaXMgYWN0aXZlOyBtb3ZlIHBvaW50IHRvIGJlZ2lubmluZyBv ZiBjdXJyZW50IHZpc3VhbCBsaW5lLgorV2l0aCBhcmd1bWVudCBBUkcgbm90IG5pbCBvciAxLCBt b3ZlIGZvcndhcmQgQVJHIC0gMSBsaW5lcyBmaXJzdC4KK0lmIHNjYW4gcmVhY2hlcyBlbmQgb2Yg YnVmZmVyLCBzdG9wIHRoZXJlIHdpdGhvdXQgZXJyb3IuIgorICAoaW50ZXJhY3RpdmUgInAiKQor ICAocGMtc2VsZWN0LWVuc3VyZS1tYXJrKQorICAoYmVnaW5uaW5nLW9mLXZpc3VhbC1saW5lIGFy ZykpCiAKIChkZWZ1biBzY3JvbGwtdXAtbWFyayAoJm9wdGlvbmFsIGFyZykKICAgIkVuc3VyZSBt YXJrIGlzIGFjdGl2ZTsgc2Nyb2xsIHVwd2FyZCBBUkcgbGluZXM7IG9yIG5lYXIgZnVsbCBzY3Jl ZW4gaWYgbm8gQVJHLgpAQCAtNzMwLDYgKzc1NSwxNCBAQAogICAocGMtc2VsZWN0LW1heWJlLWRl YWN0aXZhdGUtbWFyaykKICAgKGJlZ2lubmluZy1vZi1saW5lIGFyZykpCiAKKyhkZWZ1biBiZWdp bm5pbmctb2YtdmlzdWFsLWxpbmUtbm9tYXJrICgmb3B0aW9uYWwgYXJnKQorICAiRGVhY3RpdmF0 ZSBtYXJrOyBtb3ZlIHBvaW50IHRvIGJlZ2lubmluZyBvZiBjdXJyZW50IHZpc3VhbCBsaW5lLgor V2l0aCBhcmd1bWVudCBBUkcgbm90IG5pbCBvciAxLCBtb3ZlIGZvcndhcmQgQVJHIC0gMSBsaW5l cyBmaXJzdC4KK0lmIHNjYW4gcmVhY2hlcyBlbmQgb2YgYnVmZmVyLCBzdG9wIHRoZXJlIHdpdGhv dXQgZXJyb3IuIgorICAoaW50ZXJhY3RpdmUgInAiKQorICAocGMtc2VsZWN0LW1heWJlLWRlYWN0 aXZhdGUtbWFyaykKKyAgKGJlZ2lubmluZy1vZi12aXN1YWwtbGluZSBhcmcpKQorCiAoZGVmdW4g c2Nyb2xsLXVwLW5vbWFyayAoJm9wdGlvbmFsIGFyZykKICAgIkRlYWN0aXZhdGUgbWFyazsgc2Ny b2xsIHVwd2FyZCBBUkcgbGluZXM7IG9yIG5lYXIgZnVsbCBzY3JlZW4gaWYgbm8gQVJHLgogQSBu ZWFyIGZ1bGwgc2NyZWVuIGlzIGBuZXh0LXNjcmVlbi1jb250ZXh0LWxpbmVzJyBsZXNzIHRoYW4g YSBmdWxsIHNjcmVlbi4KCj09PSBtb2RpZmllZCBmaWxlICdsaXNwL3NpbXBsZS5lbCcKLS0tIGxp c3Avc2ltcGxlLmVsCTIwMTEtMDEtMjUgMDQ6MDg6MjggKzAwMDAKKysrIGxpc3Avc2ltcGxlLmVs CTIwMTEtMDEtMzAgMDM6MzE6MDAgKzAwMDAKQEAgLTQ4MDgsNiArNDgwOCwxMCBAQAogICAgIChk ZWZpbmUta2V5IG1hcCBbcmVtYXAga2lsbC1saW5lXSAna2lsbC12aXN1YWwtbGluZSkKICAgICAo ZGVmaW5lLWtleSBtYXAgW3JlbWFwIG1vdmUtYmVnaW5uaW5nLW9mLWxpbmVdICdiZWdpbm5pbmct b2YtdmlzdWFsLWxpbmUpCiAgICAgKGRlZmluZS1rZXkgbWFwIFtyZW1hcCBtb3ZlLWVuZC1vZi1s aW5lXSAgJ2VuZC1vZi12aXN1YWwtbGluZSkKKyAgICAoZGVmaW5lLWtleSBtYXAgW3JlbWFwIGVu ZC1vZi1saW5lLW5vbWFya10gJ2VuZC1vZi12aXN1YWwtbGluZS1ub21hcmspCisgICAgKGRlZmlu ZS1rZXkgbWFwIFtyZW1hcCBlbmQtb2YtbGluZS1tYXJrXSAnZW5kLW9mLXZpc3VhbC1saW5lLW1h cmspCisgICAgKGRlZmluZS1rZXkgbWFwIFtyZW1hcCBiZWdpbm5pbmctb2YtbGluZS1ub21hcmtd ICdiZWdpbm5pbmctb2YtdmlzdWFsLWxpbmUtbm9tYXJrKQorICAgIChkZWZpbmUta2V5IG1hcCBb cmVtYXAgYmVnaW5uaW5nLW9mLWxpbmUtbWFya10gJ2JlZ2lubmluZy1vZi12aXN1YWwtbGluZS1t YXJrKQogICAgIDs7IFRoZXNlIGtleWJpbmRpbmdzIGludGVyZmVyZSB3aXRoIHh0ZXJtIGZ1bmN0 aW9uIGtleXMuICBBcmUKICAgICA7OyB0aGVyZSBhbnkgb3RoZXIgc3VpdGFibGUgYmluZGluZ3M/ CiAgICAgOzsgKGRlZmluZS1rZXkgbWFwICJcTS1bIiAncHJldmlvdXMtbG9naWNhbC1saW5lKQoK IyBCZWdpbiBidW5kbGUKSXlCQ1lYcGhZWElnY21WMmFYTnBiMjRnWW5WdVpHeGxJSFkwQ2lNS1Fs cG9PVEZCV1NaVFdSMWZieTBBQXhCZmdFQVFVZWYvLzNheQpVSXEvLy8vd1lBYjMzbHBvWUN5RFVn R2dHaGptQUFtVEFBbUV3VENHQUl3QUpSQ25rWkRUS2JVSnRTZWhORFFEUUFHbWpRT1lBQ1pNCkFD WVRCTUlZQWpBQWxOSlR5cDdSTlJwNVRCRGFtZ0FBQUdUUUE1Z0FKa3dBSmhNRXdoZ0NNQUJVa2dR TkpvWk5URFFTbjVNcDZtVTAKTkdodFRhak5SZ1FTWnhUWTFWWDdPMzlwbzE2TVVDSUtKdjRRTEpE ZTkyZ0dDU1ZpMVpYOVh3ckRUZGEvSGNTeVJSdFBkK1NuK0M4WgpVbm9GaDNGWW1TU0QyODIxWHFM ZytBeWJNWXF5RnNBdlRjSXJmVUU3d1JaYjZPRllYOGVrTlJkcENZYUF6a2pDYUFpZ29DSkZnMW1M CkE3ZjR1TnR6WnNONWlZbnFlNTNOWnlOWnZWVmlHank4Smd4S2hJR0J0cUhlWWdYVlVOdGcxMTYr dWluTFF2NVpuMGkvNGxsRlNlNVkKbnNmSXRFOVp6MVU3U2pxTFBiVXM4VHVOQi8zbHpiektPc2Vl TTFxZGpZd1RXUm9CTVl1RXdqOWFBeEVrOXlHeWpWNTBtUWhKSktxNwpSK0NlZXRKcU5CcS9UZ2FH R0VwdWh6dmhPcGcwNjdUanB3amhTcUxxV3Exd3Q3WFE4WkY4OFV4cUplazMrVENSZjFxUy9KM2Zs aGtwCmd5UzQwVGd0MVgzM3RUQm5OYjN1dWxxR2JPMkEwTTZrZHpyNVp4T1pNRXZ3dmFNclo1YStq TitPTWo4ekFTTVAwRGpxeGs5T3psRGcKV0UyU0hFSm5pQTZVU2RtUDNIZnRSQXZhSm1PMDF4TWtX MHptNHRNTlg2Rm1JUm13amM3YXhsbXhlQ1JGS0FTbTBSNERJR3JyMDVubwo2RURQV3BVVjQ2UkZG dU5YNDFibGptS01ET3d5SWxhRGkwRVRJd0xaSkhSeng0NHNrVFRBazBtUHZyTmlVTXJoWk9jcVpw Q200dmJpClBnTE8zS0g5M0M2R0F6MGlkb2tzY0lLM0VVcEdSYmM3Zm1WMkpnY3ZCSlhXdUJ1UkRF dmpsZmFBNHhkd1J4dk14M0pNcnl1YlFidkkKQ2VNb2wrRlRHNHp3RlZsaGpMb2FXU3RHV1RkdDE4 MTF1eFRacG5jTkdiaGJERk8vTGt3VEREanV3WTdSOWNwaGdzVVNrcWQzTmUydAo0VG1wU2RyemhG NVgySGsxREZFbFRabVNzNXhKVmNjWFdJU3hpZFovSWhDV1kvR0RFMUlFcWhOVlYrdXBkVDdDOHc3 bjZpMXhSdU5qClJ6VW5yODd5amZUdjZubDNXZDNMNzk3Mm1jZTlIbWREN1hkaW5SaEhTZlNROXJP SHNZZURYUTRiVGJKOG9ZRXdTUHVWZHFzOXVMczkKUFpUWkh3YkJ2NEQrYjIzSDVxK3RWMTQvallj L3BlTVRnbm1qTk0rZnhjL1AwbVowam01Y2VXZ3hsVzV2bTZPUTNOd3lSaWFaeUJ6QQpDc20zWm1E UjRkTUFZNUJZKzB5T1lCdGlhUWZFVGFkUjg5WlhndU9oNUxIeXVNcGs3VkRHOVZvbVUwWTJWM3BN dWlOMFU5ejNIbE9oCko5aGtyTUM1Qmt3N3laVG9PbDl3SFBTZzRTbXZQeHpFYzE2K2pJRGNJVVFP SGg3eE1USlpmbGgxQVhCMjlZZkY2clZWZmIwZUJsSjUKU2p4NG0veXVqd09ybXpQUzg0bnBuc2hW MFAzMEwwbXFPeU1ma1AzS1E1UEIwZER6NlBWNUo3WXo1cFJoMHozTzE2T3Q0bEh3cHFveQpscnpx d1ZFb2FSbWw2TjdCKzY2RmpqSHE2MHRxb3VLYmFMVGFNcm5kTkRQdys4Vmh4bjlKZ2NFdmJadjZl VWU2WWxSSE5vUjlFZDU2ClJoTi9ETGpOdTJsRkZRNHcySE0rTGo1eHNxUS9FM3hyMW8zVFl5NjRj WjFuWlVqNXkxazQzbTd0anVISTZFdEpLTTM4bTJOdDU0SXkKYzBvdUd1UTFqaTNOZnl6ekZWRE9Z U1lVaHNFU0FuU1FPSjByR2Nla1V3N2RyeWZwTmVNME5RMDZKb211dFJlWlI2S2t5WVhtSVdpcQpr UytqNlFxUnB4T0tOTjZMMHZPMU1vZm8wcGlWSlJVcWpuV2g0OGpTbTUwNnhjaDhEZk9EY25kNDFO aFBlb2F0aFg4R3dzWFJ3amZ1Cm0yaStiRGZtYzQvczRpODdqdncyOXRLT2tlaGovcFdNMGJaZXZs TXZsak5KdTVmV0dPbzZIUW5vTGp2NktMRlRrS0xSK0Y1cVhsTmgKMXcrNVJoSnRobjU0eStHaWhx akJZdTliSmZTU3B6WGFOSjN3Mkdnc1ZsbFVseTRkbG5QRDZnL1YxQUpoTkw2b2FpdDFGR0xRNDhW aQpoSkFjWUI2M1NFT2tyTTFSZklWdU9GRzgzbGhrT2RhbVpVeHZ2ZFpoZVd2endOWjhka1drb3kx WjVydGxjU3lNak9HcWJGWmFMR3J3ClN6R1EzZFI1dzVlRmlqVGpHWnVOTTFuMFNpNUZMcHRqbU90 RlVYenltb3htRWJVcm1UakpqTkpBamFPZ2c5TFAvaTdraW5DaElEcSsKM2xvPQo= --001636c5a7d66db4be049b092c0d-- From unknown Sun Aug 17 10:23:02 2025 X-Loop: help-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 Resent-From: Stefan Monnier Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 01 Feb 2011 21:03:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 7940 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: PJ Weisberg Cc: 7940@debbugs.gnu.org Received: via spool by 7940-submit@debbugs.gnu.org id=B7940.129659418130155 (code B ref 7940); Tue, 01 Feb 2011 21:03:02 +0000 Received: (at 7940) by debbugs.gnu.org; 1 Feb 2011 21:03:01 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1PkNNN-0007qK-5X for submit@debbugs.gnu.org; Tue, 01 Feb 2011 16:03:01 -0500 Received: from chene.dit.umontreal.ca ([132.204.246.20]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1PkNNK-0007q6-4h for 7940@debbugs.gnu.org; Tue, 01 Feb 2011 16:02:59 -0500 Received: from faina.iro.umontreal.ca (lechon.iro.umontreal.ca [132.204.27.242]) by chene.dit.umontreal.ca (8.14.1/8.14.1) with ESMTP id p11LBprZ029021; Tue, 1 Feb 2011 16:11:51 -0500 Received: by faina.iro.umontreal.ca (Postfix, from userid 20848) id 68B2A1300EB; Tue, 1 Feb 2011 16:11:19 -0500 (EST) From: Stefan Monnier Message-ID: References: Date: Tue, 01 Feb 2011 16:11:19 -0500 In-Reply-To: (PJ Weisberg's message of "Sat, 29 Jan 2011 21:00:09 -0800") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 1 Rules triggered RV3735=0 X-Spam-Score: -2.0 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.0 (--) > 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@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@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@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@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 > IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWR1fby0AAxBfgEAQUef//3ay > UIq////wYAb33lpoYCyDUgGgGhjmAAmTAAmEwTCGAIwAJRCnkZDTKbUJtSehNDQDQAGmjQOYACZM > ACYTBMIYAjAAlNJTyp7RNRp5TBDamgAAAGTQA5gAJkwAJhMEwhgCMABUkgQNJoZNTDQSn5Mp6mU0 > NGhtTajNRgQSZxTY1VX7O39po16MUCIKJv4QLJDe92gGCSVi1ZX9XwrDTda/HcSyRRtPd+Sn+C8Z > UnoFh3FYmSSD2821XqLg+AybMYqyFsAvTcIrfUE7wRZb6OFYX8ekNRdpCYaAzkjCaAigoCJFg1mL > A7f4uNtzZsN5iYnqe53NZyNZvVViGjy8JgxKhIGBtqHeYgXVUNtg116+uinLQv5Zn0i/4llFSe5Y > nsfItE9Zz1U7SjqLPbUs8TuNB/3lzbzKOseeM1qdjYwTWRoBMYuEwj9aAxEk9yGyjV50mQhJJKq7 > R+CeetJqNBq/TgaGGEpuhzvhOpg067TjpwjhSqLqWq1wt7XQ8ZF88UxqJek3+TCRf1qS/J3flhkp > gyS40Tgt1X33tTBnNb3uulqGbO2A0M6kdzr5ZxOZMEvwvaMrZ5a+jN+OMj8zASMP0Djqxk9OzlDg > WE2SHEJniA6USdmP3HftRAvaJmO01xMkW0zm4tMNX6FmIRmwjc7axlmxeCRFKASm0R4DIGrr05no > 6EDPWpUV46RFFuNX41bljmKMDOwyIlaDi0ETIwLZJHRzx44skTTAk0mPvrNiUMrhZOcqZpCm4vbi > PgLO3KH93C6GAz0idokscIK3EUpGRbc7fmV2JgcvBJXWuBuRDEvjlfaA4xdwRxvMx3JMryubQbvI > CeMol+FTG4zwFVlhjLoaWStGWTdt1811uxTZpncNGbhbDFO/LkwTDDjuwY7R9cphgsUSkqd3Ne2t > 4TmpSdrzhF5X2Hk1DFElTZmSs5xJVccXWISxidZ/IhCWY/GDE1IEqhNVV+updT7C8w7n6i1xRuNj > RzUnr87yjfTv6nl3Wd3L7972mce9HmdD7XdinRhHSfSQ9rOHsYeDXQ4bTbJ8oYEwSPuVdqs9uLs9 > PZTZHwbBv4D+b23H5q+tV14/jYc/peMTgnmjNM+fxc/P0mZ0jm5ceWgxlW5vm6OQ3NwyRiaZyBzA > Csm3ZmDR4dMAY5BY+0yOYBtiaQfETadR89ZXguOh5LHyuMpk7VDG9VomU0Y2V3pMuiN0U9z3HlOh > J9hkrMC5Bkw7yZToOl9wHPSg4SmvPxzEc16+jIDcIUQOHh7xMTJZflh1AXB29YfF6rVVfb0eBlJ5 > Sjx4m/yujwOrmzPS84npnshV0P30L0mqOyMfkP3KQ5PB0dDz6PV5J7Yz5pRh0z3O16Ot4lHwpqoy > lrzqwVEoaRml6N7B+66FjjHq60tqouKbaLTaMrndNDPw+8Vhxn9JgcEvbZv6eUe6YlRHNoR9Ed56 > RhN/DLjNu2lFFQ4w2HM+Lj5xsqQ/E3xr1o3TYy64cZ1nZUj5y1k43m7tjuHI6EtJKM38m2Nt54Iy > c0ouGuQ1ji3NfyzzFVDOYSYUhsESAnSQOJ0rGcekUw7dryfpNeM0NQ06JomutReZR6KkyYXmIWiq > kS+j6QqRpxOKNN6L0vO1Mofo0piVJRUqjnWh48jSm506xch8DfODcnd41NhPeoathX8GwsXRwjfu > m2i+bDfmc4/s4i87jvw29tKOkehj/pWM0bZevlMvljNJu5fWGOo6HQnoLjv6KLFTkKLR+F5qXlNh > 1w+5RhJthn54y+GihqjBYu9bJfSSpzXaNJ3w2GgsVllUly4dlnPD6g/V1AJhNL6oait1FGLQ48Vi > hJAcYB63SEOkrM1RfIVuOFG83lhkOdamZUxvvdZheWvzwNZ8dkWkoy1Z5rtlcSyMjOGqbFZaLGrw > SzGQ3dR5w5eFijTjGZuNM1n0Si5FLptjmOtFUXzymoxmEbUrmTjJjNJAjaOgg9LP/i7kinChIDq+ > 3lo= From unknown Sun Aug 17 10:23:02 2025 X-Loop: help-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 Resent-From: PJ Weisberg Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 05 Feb 2011 21:34:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 7940 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Monnier Cc: 7940@debbugs.gnu.org Received: via spool by 7940-submit@debbugs.gnu.org id=B7940.129694158430761 (code B ref 7940); Sat, 05 Feb 2011 21:34:02 +0000 Received: (at 7940) by debbugs.gnu.org; 5 Feb 2011 21:33:04 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Plpkd-000806-Mt for submit@debbugs.gnu.org; Sat, 05 Feb 2011 16:33:03 -0500 Received: from smtpauth17.prod.mesa1.secureserver.net ([64.202.165.29]) by debbugs.gnu.org with smtp (Exim 4.69) (envelope-from ) id 1Plpkc-0007ze-Bg for 7940@debbugs.gnu.org; Sat, 05 Feb 2011 16:33:03 -0500 Received: (qmail 2112 invoked from network); 5 Feb 2011 21:21:36 -0000 Received: from unknown (209.85.161.44) by smtpauth17.prod.mesa1.secureserver.net (64.202.165.29) with ESMTP; 05 Feb 2011 21:21:36 -0000 Received: by fxm9 with SMTP id 9so3941096fxm.3 for <7940@debbugs.gnu.org>; Sat, 05 Feb 2011 13:41:33 -0800 (PST) MIME-Version: 1.0 Received: by 10.223.114.65 with SMTP id d1mr13015233faq.88.1296942093875; Sat, 05 Feb 2011 13:41:33 -0800 (PST) Received: by 10.223.102.70 with HTTP; Sat, 5 Feb 2011 13:41:33 -0800 (PST) In-Reply-To: References: Date: Sat, 5 Feb 2011 13:41:33 -0800 Message-ID: From: PJ Weisberg Content-Type: text/plain; charset=ISO-8859-1 X-Spam-Score: -4.6 (----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -3.9 (---) On 2/1/11, Stefan Monnier wrote: > 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? I think delete-selection-mode is the only feature I notice that isn't on by default in Emacs 23. I'm not sure how you treat 'obsolete' features, but maybe you could use the less clean-looking patch on pc-select.el to fix the bug and then just not look at it ever again. ;-) -PJ From unknown Sun Aug 17 10:23:02 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.427 (Entity 5.427) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: PJ Weisberg Subject: bug#7940: closed (Re: bug#7940: 23.2; Home and End keys don't work as expected with both pc-selection-mode and visual-line-mode enabled) Message-ID: References: X-Gnu-PR-Message: they-closed 7940 X-Gnu-PR-Package: emacs Reply-To: 7940@debbugs.gnu.org Date: Tue, 08 Feb 2011 20:38:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1297197482-781-1" This is a multi-part message in MIME format... ------------=_1297197482-781-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #7940: 23.2; Home and End keys don't work as expected with both pc-selectio= n-mode and visual-line-mode enabled which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 7940@debbugs.gnu.org. --=20 7940: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D7940 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1297197482-781-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 7940-done) by debbugs.gnu.org; 8 Feb 2011 20:37:32 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1PmuJW-0000Bu-PO for submit@debbugs.gnu.org; Tue, 08 Feb 2011 15:37:32 -0500 Received: from chene.dit.umontreal.ca ([132.204.246.20]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1PmuJU-0000Bh-AG for 7940-done@debbugs.gnu.org; Tue, 08 Feb 2011 15:37:29 -0500 Received: from faina.iro.umontreal.ca (lechon.iro.umontreal.ca [132.204.27.242]) by chene.dit.umontreal.ca (8.14.1/8.14.1) with ESMTP id p18KkjDF019768; Tue, 8 Feb 2011 15:46:45 -0500 Received: by faina.iro.umontreal.ca (Postfix, from userid 20848) id 316AAB4106; Tue, 8 Feb 2011 15:46:08 -0500 (EST) From: Stefan Monnier To: PJ Weisberg Subject: Re: bug#7940: 23.2; Home and End keys don't work as expected with both pc-selection-mode and visual-line-mode enabled Message-ID: References: Date: Tue, 08 Feb 2011 15:46:08 -0500 In-Reply-To: (PJ Weisberg's message of "Sat, 29 Jan 2011 21:00:09 -0800") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 1 Rules triggered RV3735=0 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 7940-done Cc: 7940-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -0.7 (/) > 1) Open or create a file with logical lines longer than the width of the > window. > 2) Enable visual-line-mode and pc-selection-mode (order doesn't matter). > 3) Press the and/or keys with point on one of these long > lines. > Expected: Point moves to the beginning/end of the current visual line. > Observed: Point moves to the beginning/end of the current logical line. Thanks for your report. I've installed a different patch (see below) which removes most of pc-select's code so it relies on shift-select-mode instead, which ends up fixing your bug. Stefan === renamed file 'lisp/emulation/pc-select.el' => 'lisp/obsolete/pc-select.el' --- lisp/emulation/pc-select.el 2011-01-25 04:08:28 +0000 +++ lisp/obsolete/pc-select.el 2011-02-08 19:26:07 +0000 @@ -7,6 +7,7 @@ ;; Author: Michael Staats ;; Keywords: convenience emulations ;; Created: 26 Sep 1995 +;; Obsolete-since: 24.1 ;; This file is part of GNU Emacs. @@ -83,6 +84,9 @@ :prefix "pc-select" :group 'emulations) +(define-obsolete-variable-alias 'pc-select-override-scroll-error + 'scroll-error-top-bottom + "24.1") (defcustom pc-select-override-scroll-error t "Non-nil means don't generate error on scrolling past edge of buffer. This variable applies in PC Selection mode only. @@ -92,9 +96,6 @@ errors are suppressed." :type 'boolean :group 'pc-select) -(define-obsolete-variable-alias 'pc-select-override-scroll-error - 'scroll-error-top-bottom - "24.1") (defcustom pc-select-selection-keys-only nil "Non-nil means only bind the basic selection keys when started. @@ -132,73 +133,14 @@ (defvar pc-select-default-key-bindings nil "These key bindings always get set by PC Selection mode.") -(unless pc-select-default-key-bindings - (let ((lst - ;; This is to avoid confusion with the delete-selection-mode. - ;; On simple displays you can't see that a region is active and - ;; will be deleted on the next keypress IMHO especially for - ;; copy-region-as-kill this is confusing. - ;; The same goes for exchange-point-and-mark - '(("\M-w" . copy-region-as-kill-nomark) - ("\C-x\C-x" . exchange-point-and-mark-nomark) - ([S-right] . forward-char-mark) - ([right] . forward-char-nomark) - ([C-S-right] . forward-word-mark) - ([C-right] . forward-word-nomark) - ([S-left] . backward-char-mark) - ([left] . backward-char-nomark) - ([C-S-left] . backward-word-mark) - ([C-left] . backward-word-nomark) - ([S-down] . next-line-mark) - ([down] . next-line-nomark) - - ([S-end] . end-of-line-mark) - ([end] . end-of-line-nomark) - ([S-C-end] . end-of-buffer-mark) - ([C-end] . end-of-buffer-nomark) - ([S-M-end] . end-of-buffer-mark) - ([M-end] . end-of-buffer-nomark) - - ([S-next] . scroll-up-mark) - ([next] . scroll-up-nomark) - - ([S-up] . previous-line-mark) - ([up] . previous-line-nomark) - - ([S-home] . beginning-of-line-mark) - ([home] . beginning-of-line-nomark) - ([S-C-home] . beginning-of-buffer-mark) - ([C-home] . beginning-of-buffer-nomark) - ([S-M-home] . beginning-of-buffer-mark) - ([M-home] . beginning-of-buffer-nomark) - - ([M-S-down] . forward-line-mark) - ([M-down] . forward-line-nomark) - ([M-S-up] . backward-line-mark) - ([M-up] . backward-line-nomark) - - ([S-prior] . scroll-down-mark) - ([prior] . scroll-down-nomark) - - ;; Next four lines are from Pete Forman. - ([C-down] . forward-paragraph-nomark) ; KNextPara cDn - ([C-up] . backward-paragraph-nomark) ; KPrevPara cUp - ([S-C-down] . forward-paragraph-mark) - ([S-C-up] . backward-paragraph-mark)))) - - (setq pc-select-default-key-bindings lst))) - -(defvar pc-select-extra-key-bindings nil - "Key bindings to set only if `pc-select-selection-keys-only' is nil.") - -;; The following keybindings are for standard ISO keyboards -;; as they are used with IBM compatible PCs, IBM RS/6000, -;; MACs, many X-Stations and probably more -(unless pc-select-extra-key-bindings - (let ((lst - '(([S-insert] . yank) - ([C-insert] . copy-region-as-kill) - ([S-delete] . kill-region) +(defvar pc-select-extra-key-bindings + ;; The following keybindings are for standard ISO keyboards + ;; as they are used with IBM compatible PCs, IBM RS/6000, + ;; MACs, many X-Stations and probably more. + '(;; Commented out since it's been standard at least since Emacs-21. + ;;([S-insert] . yank) + ;;([C-insert] . copy-region-as-kill) + ;;([S-delete] . kill-region) ;; The following bindings are useful on Sun Type 3 keyboards ;; They implement the Get-Delete-Put (copy-cut-paste) @@ -218,19 +160,14 @@ ;; I only used the one that is not covered above. ([C-M-delete] . kill-sexp) ;; Next line proposed by Eli Barzilay - ([C-escape] . electric-buffer-list)))) - - (setq pc-select-extra-key-bindings lst))) + ([C-escape] . electric-buffer-list)) + "Key bindings to set only if `pc-select-selection-keys-only' is nil.") (defvar pc-select-meta-moves-sexps-key-bindings - '((([M-S-right] . forward-sexp-mark) - ([M-right] . forward-sexp-nomark) - ([M-S-left] . backward-sexp-mark) - ([M-left] . backward-sexp-nomark)) - (([M-S-right] . forward-word-mark) - ([M-right] . forward-word-nomark) - ([M-S-left] . backward-word-mark) - ([M-left] . backward-word-nomark))) + '((([M-right] . forward-sexp) + ([M-left] . backward-sexp)) + (([M-right] . forward-word) + ([M-left] . backward-word))) "The list of key bindings controlled by `pc-select-meta-moves-sexp'. The bindings in the car of this list get installed if `pc-select-meta-moves-sexp' is t, the bindings in the cadr of this @@ -259,514 +196,6 @@ (provide 'pc-select) -(defun copy-region-as-kill-nomark (beg end) - "Save the region as if killed, but don't kill it; deactivate mark. -If `interprogram-cut-function' is non-nil, also save the text for a window -system cut and paste. - -Deactivating mark is to avoid confusion with `delete-selection-mode' -and `transient-mark-mode'." - (interactive "r") - (copy-region-as-kill beg end) - (setq mark-active nil) - (message "Region saved")) - -(defun exchange-point-and-mark-nomark () - "Like `exchange-point-and-mark' but without activating the mark." - (interactive) - (exchange-point-and-mark) - (setq mark-active nil)) - -;;;; -;; non-interactive -;;;; -(defun pc-select-ensure-mark () - ;; make sure mark is active - ;; test if it is active, if it isn't, set it and activate it - (or mark-active (set-mark-command nil)) - ;; Remember who activated the mark. - (setq mark-active 'pc-select)) - -(defun pc-select-maybe-deactivate-mark () - ;; maybe switch off mark (only if *we* switched it on) - (when (eq mark-active 'pc-select) - (deactivate-mark))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;;; forward and mark -;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defun forward-char-mark (&optional arg) - "Ensure mark is active; move point right ARG characters (left if ARG negative). -On reaching end of buffer, stop and signal error." - (interactive "p") - (pc-select-ensure-mark) - (forward-char arg)) - -(defun forward-word-mark (&optional arg) - "Ensure mark is active; move point right ARG words (backward if ARG is negative). -Normally returns t. -If an edge of the buffer is reached, point is left there -and nil is returned." - (interactive "p") - (pc-select-ensure-mark) - (forward-word arg)) - -(defun forward-line-mark (&optional arg) - "Ensure mark is active; move cursor vertically down ARG lines." - (interactive "p") - (pc-select-ensure-mark) - (forward-line arg) - (setq this-command 'forward-line) -) - -(defun forward-sexp-mark (&optional arg) - "Ensure mark is active; move forward across one balanced expression (sexp). -With argument, do it that many times. Negative arg -N means -move backward across N balanced expressions." - (interactive "p") - (pc-select-ensure-mark) - (forward-sexp arg)) - -(defun forward-paragraph-mark (&optional arg) - "Ensure mark is active; move forward to end of paragraph. -With arg N, do it N times; negative arg -N means move backward N paragraphs. - -A line which `paragraph-start' matches either separates paragraphs -\(if `paragraph-separate' matches it also) or is the first line of a paragraph. -A paragraph end is the beginning of a line which is not part of the paragraph -to which the end of the previous line belongs, or the end of the buffer." - (interactive "p") - (pc-select-ensure-mark) - (forward-paragraph arg)) - -(defun next-line-mark (&optional arg) - "Ensure mark is active; move cursor vertically down ARG lines. -If there is no character in the target line exactly under the current column, -the cursor is positioned after the character in that line which spans this -column, or at the end of the line if it is not long enough. -If there is no line in the buffer after this one, behavior depends on the -value of `next-line-add-newlines'. If non-nil, it inserts a newline character -to create a line, and moves the cursor to that line. Otherwise it moves the -cursor to the end of the buffer \(if already at the end of the buffer, an error -is signaled). - -The command \\[set-goal-column] can be used to create -a semipermanent goal column to which this command always moves. -Then it does not try to move vertically. This goal column is stored -in `goal-column', which is nil when there is none." - (interactive "p") - (pc-select-ensure-mark) - (with-no-warnings (next-line arg)) - (setq this-command 'next-line)) - -(defun end-of-line-mark (&optional arg) - "Ensure mark is active; move point to end of current 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-line arg) - (setq this-command 'end-of-line)) - -(defun backward-line-mark (&optional arg) - "Ensure mark is active; move cursor vertically up ARG lines." - (interactive "p") - (pc-select-ensure-mark) - (if (null arg) - (setq arg 1)) - (forward-line (- arg)) - (setq this-command 'forward-line) -) - -(defun scroll-down-mark (&optional arg) - "Ensure mark is active; scroll down ARG lines; or near full screen if no ARG. -A near full screen is `next-screen-context-lines' less than a full screen. -Negative ARG means scroll upward. -When calling from a program, supply a number as argument or nil. -Attempting to scroll past the edge of buffer does not raise an -error, unless `pc-select-override-scroll-error' is nil." - (interactive "P") - (pc-select-ensure-mark) - (cond (pc-select-override-scroll-error - (condition-case nil (scroll-down arg) - (beginning-of-buffer (goto-char (point-min))))) - (t (scroll-down arg)))) - -(defun end-of-buffer-mark (&optional arg) - "Ensure mark is active; move point to the end of the buffer. -With arg N, put point N/10 of the way from the end. - -If the buffer is narrowed, this command uses the beginning and size -of the accessible part of the buffer. - -Don't use this command in Lisp programs! -\(goto-char \(point-max)) is faster and avoids clobbering the mark." - (interactive "P") - (pc-select-ensure-mark) - (let ((size (- (point-max) (point-min)))) - (goto-char (if arg - (- (point-max) - (if (> size 10000) - ;; Avoid overflow for large buffer sizes! - (* (prefix-numeric-value arg) - (/ size 10)) - (/ (* size (prefix-numeric-value arg)) 10))) - (point-max)))) - ;; If we went to a place in the middle of the buffer, - ;; adjust it to the beginning of a line. - (if arg (forward-line 1) - ;; If the end of the buffer is not already on the screen, - ;; then scroll specially to put it near, but not at, the bottom. - (if (let ((old-point (point))) - (save-excursion - (goto-char (window-start)) - (vertical-motion (window-height)) - (< (point) old-point))) - (progn - (overlay-recenter (point)) - (recenter -3))))) - -;;;;;;;;; -;;;;; no mark -;;;;;;;;; - -(defun forward-char-nomark (&optional arg) - "Deactivate mark; move point right ARG characters \(left if ARG negative). -On reaching end of buffer, stop and signal error." - (interactive "p") - (pc-select-maybe-deactivate-mark) - (forward-char arg)) - -(defun forward-word-nomark (&optional arg) - "Deactivate mark; move point right ARG words \(backward if ARG is negative). -Normally returns t. -If an edge of the buffer is reached, point is left there -and nil is returned." - (interactive "p") - (pc-select-maybe-deactivate-mark) - (forward-word arg)) - -(defun forward-line-nomark (&optional arg) - "Deactivate mark; move cursor vertically down ARG lines." - (interactive "p") - (pc-select-maybe-deactivate-mark) - (forward-line arg) - (setq this-command 'forward-line) -) - -(defun forward-sexp-nomark (&optional arg) - "Deactivate mark; move forward across one balanced expression (sexp). -With argument, do it that many times. Negative arg -N means -move backward across N balanced expressions." - (interactive "p") - (pc-select-maybe-deactivate-mark) - (forward-sexp arg)) - -(defun forward-paragraph-nomark (&optional arg) - "Deactivate mark; move forward to end of paragraph. -With arg N, do it N times; negative arg -N means move backward N paragraphs. - -A line which `paragraph-start' matches either separates paragraphs -\(if `paragraph-separate' matches it also) or is the first line of a paragraph. -A paragraph end is the beginning of a line which is not part of the paragraph -to which the end of the previous line belongs, or the end of the buffer." - (interactive "p") - (pc-select-maybe-deactivate-mark) - (forward-paragraph arg)) - -(defun next-line-nomark (&optional arg) - "Deactivate mark; move cursor vertically down ARG lines. -If there is no character in the target line exactly under the current column, -the cursor is positioned after the character in that line which spans this -column, or at the end of the line if it is not long enough. -If there is no line in the buffer after this one, behavior depends on the -value of `next-line-add-newlines'. If non-nil, it inserts a newline character -to create a line, and moves the cursor to that line. Otherwise it moves the -cursor to the end of the buffer (if already at the end of the buffer, an error -is signaled). - -The command \\[set-goal-column] can be used to create -a semipermanent goal column to which this command always moves. -Then it does not try to move vertically. This goal column is stored -in `goal-column', which is nil when there is none." - (interactive "p") - (pc-select-maybe-deactivate-mark) - (with-no-warnings (next-line arg)) - (setq this-command 'next-line)) - -(defun end-of-line-nomark (&optional arg) - "Deactivate mark; move point to end of current 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-line arg) - (setq this-command 'end-of-line)) - -(defun backward-line-nomark (&optional arg) - "Deactivate mark; move cursor vertically up ARG lines." - (interactive "p") - (pc-select-maybe-deactivate-mark) - (if (null arg) - (setq arg 1)) - (forward-line (- arg)) - (setq this-command 'forward-line) -) - -(defun scroll-down-nomark (&optional arg) - "Deactivate mark; scroll down ARG lines; or near full screen if no ARG. -A near full screen is `next-screen-context-lines' less than a full screen. -Negative ARG means scroll upward. -When calling from a program, supply a number as argument or nil. -Attempting to scroll past the edge of buffer does not raise an -error, unless `pc-select-override-scroll-error' is nil." - (interactive "P") - (pc-select-maybe-deactivate-mark) - (cond (pc-select-override-scroll-error - (condition-case nil (scroll-down arg) - (beginning-of-buffer (goto-char (point-min))))) - (t (scroll-down arg)))) - -(defun end-of-buffer-nomark (&optional arg) - "Deactivate mark; move point to the end of the buffer. -With arg N, put point N/10 of the way from the end. - -If the buffer is narrowed, this command uses the beginning and size -of the accessible part of the buffer. - -Don't use this command in Lisp programs! -\(goto-char (point-max)) is faster and avoids clobbering the mark." - (interactive "P") - (pc-select-maybe-deactivate-mark) - (let ((size (- (point-max) (point-min)))) - (goto-char (if arg - (- (point-max) - (if (> size 10000) - ;; Avoid overflow for large buffer sizes! - (* (prefix-numeric-value arg) - (/ size 10)) - (/ (* size (prefix-numeric-value arg)) 10))) - (point-max)))) - ;; If we went to a place in the middle of the buffer, - ;; adjust it to the beginning of a line. - (if arg (forward-line 1) - ;; If the end of the buffer is not already on the screen, - ;; then scroll specially to put it near, but not at, the bottom. - (if (let ((old-point (point))) - (save-excursion - (goto-char (window-start)) - (vertical-motion (window-height)) - (< (point) old-point))) - (progn - (overlay-recenter (point)) - (recenter -3))))) - - -;;;;;;;;;;;;;;;;;;;; -;;;;;; backwards and mark -;;;;;;;;;;;;;;;;;;;; - -(defun backward-char-mark (&optional arg) - "Ensure mark is active; move point left ARG characters (right if ARG negative). -On attempt to pass beginning or end of buffer, stop and signal error." - (interactive "p") - (pc-select-ensure-mark) - (backward-char arg)) - -(defun backward-word-mark (&optional arg) - "Ensure mark is active; move backward until encountering the end of a word. -With argument, do this that many times." - (interactive "p") - (pc-select-ensure-mark) - (backward-word arg)) - -(defun backward-sexp-mark (&optional arg) - "Ensure mark is active; move backward across one balanced expression (sexp). -With argument, do it that many times. Negative arg -N means -move forward across N balanced expressions." - (interactive "p") - (pc-select-ensure-mark) - (backward-sexp arg)) - -(defun backward-paragraph-mark (&optional arg) - "Ensure mark is active; move backward to start of paragraph. -With arg N, do it N times; negative arg -N means move forward N paragraphs. - -A paragraph start is the beginning of a line which is a -`first-line-of-paragraph' or which is ordinary text and follows a -paragraph-separating line; except: if the first real line of a -paragraph is preceded by a blank line, the paragraph starts at that -blank line. - -See `forward-paragraph' for more information." - (interactive "p") - (pc-select-ensure-mark) - (backward-paragraph arg)) - -(defun previous-line-mark (&optional arg) - "Ensure mark is active; move cursor vertically up ARG lines. -If there is no character in the target line exactly over the current column, -the cursor is positioned after the character in that line which spans this -column, or at the end of the line if it is not long enough. - -The command \\[set-goal-column] can be used to create -a semipermanent goal column to which this command always moves. -Then it does not try to move vertically. - -If you are thinking of using this in a Lisp program, consider using -`forward-line' with a negative argument instead. It is usually easier -to use and more reliable (no dependence on goal column, etc.)." - (interactive "p") - (pc-select-ensure-mark) - (with-no-warnings (previous-line arg)) - (setq this-command 'previous-line)) - -(defun beginning-of-line-mark (&optional arg) - "Ensure mark is active; move point to beginning of current 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-line arg)) - - -(defun scroll-up-mark (&optional arg) - "Ensure mark is active; 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. -Negative ARG means scroll downward. -When calling from a program, supply a number as argument or nil. -Attempting to scroll past the edge of buffer does not raise an -error, unless `pc-select-override-scroll-error' is nil." - (interactive "P") - (pc-select-ensure-mark) - (cond (pc-select-override-scroll-error - (condition-case nil (scroll-up arg) - (end-of-buffer (goto-char (point-max))))) - (t (scroll-up arg)))) - -(defun beginning-of-buffer-mark (&optional arg) - "Ensure mark is active; move point to the beginning of the buffer. -With arg N, put point N/10 of the way from the beginning. - -If the buffer is narrowed, this command uses the beginning and size -of the accessible part of the buffer. - -Don't use this command in Lisp programs! -\(goto-char (point-min)) is faster and avoids clobbering the mark." - (interactive "P") - (pc-select-ensure-mark) - (let ((size (- (point-max) (point-min)))) - (goto-char (if arg - (+ (point-min) - (if (> size 10000) - ;; Avoid overflow for large buffer sizes! - (* (prefix-numeric-value arg) - (/ size 10)) - (/ (+ 10 (* size (prefix-numeric-value arg))) 10))) - (point-min)))) - (if arg (forward-line 1))) - -;;;;;;;; -;;; no mark -;;;;;;;; - -(defun backward-char-nomark (&optional arg) - "Deactivate mark; move point left ARG characters (right if ARG negative). -On attempt to pass beginning or end of buffer, stop and signal error." - (interactive "p") - (pc-select-maybe-deactivate-mark) - (backward-char arg)) - -(defun backward-word-nomark (&optional arg) - "Deactivate mark; move backward until encountering the end of a word. -With argument, do this that many times." - (interactive "p") - (pc-select-maybe-deactivate-mark) - (backward-word arg)) - -(defun backward-sexp-nomark (&optional arg) - "Deactivate mark; move backward across one balanced expression (sexp). -With argument, do it that many times. Negative arg -N means -move forward across N balanced expressions." - (interactive "p") - (pc-select-maybe-deactivate-mark) - (backward-sexp arg)) - -(defun backward-paragraph-nomark (&optional arg) - "Deactivate mark; move backward to start of paragraph. -With arg N, do it N times; negative arg -N means move forward N paragraphs. - -A paragraph start is the beginning of a line which is a -`first-line-of-paragraph' or which is ordinary text and follows a -paragraph-separating line; except: if the first real line of a -paragraph is preceded by a blank line, the paragraph starts at that -blank line. - -See `forward-paragraph' for more information." - (interactive "p") - (pc-select-maybe-deactivate-mark) - (backward-paragraph arg)) - -(defun previous-line-nomark (&optional arg) - "Deactivate mark; move cursor vertically up ARG lines. -If there is no character in the target line exactly over the current column, -the cursor is positioned after the character in that line which spans this -column, or at the end of the line if it is not long enough. - -The command \\[set-goal-column] can be used to create -a semipermanent goal column to which this command always moves. -Then it does not try to move vertically." - (interactive "p") - (pc-select-maybe-deactivate-mark) - (with-no-warnings (previous-line arg)) - (setq this-command 'previous-line)) - -(defun beginning-of-line-nomark (&optional arg) - "Deactivate mark; move point to beginning of current 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-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. -Negative ARG means scroll downward. -When calling from a program, supply a number as argument or nil. -Attempting to scroll past the edge of buffer does not raise an -error, unless `pc-select-override-scroll-error' is nil." - (interactive "P") - (pc-select-maybe-deactivate-mark) - (cond (pc-select-override-scroll-error - (condition-case nil (scroll-up arg) - (end-of-buffer (goto-char (point-max))))) - (t (scroll-up arg)))) - -(defun beginning-of-buffer-nomark (&optional arg) - "Deactivate mark; move point to the beginning of the buffer. -With arg N, put point N/10 of the way from the beginning. - -If the buffer is narrowed, this command uses the beginning and size -of the accessible part of the buffer. - -Don't use this command in Lisp programs! -\(goto-char (point-min)) is faster and avoids clobbering the mark." - (interactive "P") - (pc-select-maybe-deactivate-mark) - (let ((size (- (point-max) (point-min)))) - (goto-char (if arg - (+ (point-min) - (if (> size 10000) - ;; Avoid overflow for large buffer sizes! - (* (prefix-numeric-value arg) - (/ size 10)) - (/ (+ 10 (* size (prefix-numeric-value arg))) 10))) - (point-min)))) - (if arg (forward-line 1))) - - (defun pc-select-define-keys (alist keymap) "Make KEYMAP have the key bindings specified in ALIST." (let ((lst alist)) @@ -937,6 +366,7 @@ (pc-select-save-and-set-var highlight-nonselected-windows nil) (pc-select-save-and-set-var transient-mark-mode t) + (pc-select-save-and-set-var shift-select-mode t) (pc-select-save-and-set-var mark-even-if-inactive t) (pc-select-save-and-set-mode delete-selection-mode 1)) ;;else @@ -974,6 +404,7 @@ (pc-select-restore-var highlight-nonselected-windows) (pc-select-restore-var transient-mark-mode) + (pc-select-restore-var shift-select-mode) (pc-select-restore-var mark-even-if-inactive) (pc-select-restore-mode delete-selection-mode) (and pc-select-old-M-delete-binding @@ -981,5 +412,6 @@ pc-select-old-M-delete-binding)) (setq pc-select-key-bindings-alist nil pc-select-saved-settings-alist nil)))) +(make-obsolete 'pc-selection-mode 'delete-selection-mode "24.1") ;;; pc-select.el ends here ------------=_1297197482-781-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 30 Jan 2011 12:04:37 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1PjW1A-0001gc-PN for submit@debbugs.gnu.org; Sun, 30 Jan 2011 07:04:37 -0500 Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1PjPGf-0000Wf-1e for submit@debbugs.gnu.org; Sat, 29 Jan 2011 23:52:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PjPOe-0004uv-Ha for submit@debbugs.gnu.org; Sun, 30 Jan 2011 00:00:21 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,HTML_MESSAGE, RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from lists.gnu.org ([199.232.76.165]:36477) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PjPOe-0004ur-C4 for submit@debbugs.gnu.org; Sun, 30 Jan 2011 00:00:20 -0500 Received: from [140.186.70.92] (port=47952 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PjPOc-0000EC-Eu for bug-gnu-emacs@gnu.org; Sun, 30 Jan 2011 00:00:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PjPOa-0004u2-SK for bug-gnu-emacs@gnu.org; Sun, 30 Jan 2011 00:00:18 -0500 Received: from smtpauth17.prod.mesa1.secureserver.net ([64.202.165.29]:56838) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1PjPOa-0004tF-AF for bug-gnu-emacs@gnu.org; Sun, 30 Jan 2011 00:00:16 -0500 Received: (qmail 24015 invoked from network); 30 Jan 2011 04:40:47 -0000 Received: from unknown (209.85.161.41) by smtpauth17.prod.mesa1.secureserver.net (64.202.165.29) with ESMTP; 30 Jan 2011 04:40:46 -0000 Received: by fxm12 with SMTP id 12so5533369fxm.0 for ; Sat, 29 Jan 2011 21:00:09 -0800 (PST) MIME-Version: 1.0 Received: by 10.223.119.129 with SMTP id z1mr4395446faq.50.1296363609240; Sat, 29 Jan 2011 21:00:09 -0800 (PST) Received: by 10.223.102.70 with HTTP; Sat, 29 Jan 2011 21:00:09 -0800 (PST) Date: Sat, 29 Jan 2011 21:00:09 -0800 Message-ID: Subject: 23.2; Home and End keys don't work as expected with both pc-selection-mode and visual-line-mode enabled From: PJ Weisberg To: bug-gnu-emacs@gnu.org Content-Type: multipart/mixed; boundary=001636c5a7d66db4be049b092c0d X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4-2.6 X-Received-From: 64.202.165.29 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 199.232.76.165 X-Spam-Score: -6.6 (------) X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Sun, 30 Jan 2011 07:04:31 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.6 (------) --001636c5a7d66db4be049b092c0d Content-Type: multipart/alternative; boundary=001636c5a7d66db4a6049b092c0b --001636c5a7d66db4a6049b092c0b Content-Type: text/plain; charset=ISO-8859-1 1) Open or create a file with logical lines longer than the width of the window. 2) Enable visual-line-mode and pc-selection-mode (order doesn't matter). 3) Press the and/or keys with point on one of these long lines. Expected: Point moves to the beginning/end of the current visual line. Observed: Point moves to the beginning/end of the current logical line. 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. --PJ --001636c5a7d66db4a6049b092c0b Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable 1) Open or create a file with logical lines longer than the width of thewindow.
2) Enable visual-line-mode and pc-selection-mode (order doesn&#= 39;t matter).
3) Press the <home> and/or <end> keys with poi= nt on one of these long
lines.

Expected: Point moves to the beginning/end of the current vis= ual line.
Observed: Point moves to the beginning/end of the current logi= cal line.

I've attached two (mutually exclusive) patches against= the trunk.=A0 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.
--PJ
--001636c5a7d66db4a6049b092c0b-- --001636c5a7d66db4be049b092c0d Content-Type: text/x-patch; charset=US-ASCII; name="pc-visual-line_if.patch" Content-Disposition: attachment; filename="pc-visual-line_if.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gjjhc0g20 IyBCYXphYXIgbWVyZ2UgZGlyZWN0aXZlIGZvcm1hdCAyIChCYXphYXIgMC45MCkKIyByZXZpc2lv bl9pZDogcGpAaXJyZWd1bGFyZXhwcmVzc2lvbnMubmV0LTIwMTEwMTMwMDQ1NTQyLVwKIyAgIG51 dnFzamU4NHluY3ZmbHEKIyB0YXJnZXRfYnJhbmNoOiBienI6Ly9ienIuc2F2YW5uYWguZ251Lm9y Zy9lbWFjcy90cnVuay8KIyB0ZXN0YW1lbnRfc2hhMTogYjRkMmZjZGNjNTIzY2FkYzUxZDVmNDdl MTk2NWE5NjEwY2ZjYjJkYgojIHRpbWVzdGFtcDogMjAxMS0wMS0yOSAyMDo1NjoxNiAtMDgwMAoj IGJhc2VfcmV2aXNpb25faWQ6IHNjaHdhYkBsaW51eC1tNjhrLm9yZy0yMDExMDEzMDAwMzUzNS1c CiMgICBqbWlud2lmcGk3NjdvaXc1CiMgCiMgQmVnaW4gcGF0Y2gKPT09IG1vZGlmaWVkIGZpbGUg J2xpc3AvZW11bGF0aW9uL3BjLXNlbGVjdC5lbCcKLS0tIGxpc3AvZW11bGF0aW9uL3BjLXNlbGVj dC5lbAkyMDExLTAxLTI1IDA0OjA4OjI4ICswMDAwCisrKyBsaXNwL2VtdWxhdGlvbi9wYy1zZWxl Y3QuZWwJMjAxMS0wMS0zMCAwNDo1NTo0MiArMDAwMApAQCAtMzY2LDggKzM2NiwxMSBAQAogSWYg c2NhbiByZWFjaGVzIGVuZCBvZiBidWZmZXIsIHN0b3AgdGhlcmUgd2l0aG91dCBlcnJvci4iCiAg IChpbnRlcmFjdGl2ZSAicCIpCiAgIChwYy1zZWxlY3QtZW5zdXJlLW1hcmspCi0gIChlbmQtb2Yt bGluZSBhcmcpCi0gIChzZXRxIHRoaXMtY29tbWFuZCAnZW5kLW9mLWxpbmUpKQorICAobGV0ICgo ZW9sLWNvbW1hbmQgKGlmIHZpc3VhbC1saW5lLW1vZGUKKyAgICAgICAgICAgICAgICAgICAgICAg ICAnZW5kLW9mLXZpc3VhbC1saW5lCisgICAgICAgICAgICAgICAgICAgICAgICdlbmQtb2YtbGlu ZSkpKQorICAgIChmdW5jYWxsIGVvbC1jb21tYW5kIGFyZykKKyAgICAoc2V0cSB0aGlzLWNvbW1h bmQgZW9sLWNvbW1hbmQpKSkKIAogKGRlZnVuIGJhY2t3YXJkLWxpbmUtbWFyayAoJm9wdGlvbmFs IGFyZykKICAgIkVuc3VyZSBtYXJrIGlzIGFjdGl2ZTsgbW92ZSBjdXJzb3IgdmVydGljYWxseSB1 cCBBUkcgbGluZXMuIgpAQCAtNTAxLDggKzUwNCwxMSBAQAogSWYgc2NhbiByZWFjaGVzIGVuZCBv ZiBidWZmZXIsIHN0b3AgdGhlcmUgd2l0aG91dCBlcnJvci4iCiAgIChpbnRlcmFjdGl2ZSAicCIp CiAgIChwYy1zZWxlY3QtbWF5YmUtZGVhY3RpdmF0ZS1tYXJrKQotICAoZW5kLW9mLWxpbmUgYXJn KQotICAoc2V0cSB0aGlzLWNvbW1hbmQgJ2VuZC1vZi1saW5lKSkKKyAgKGxldCAoKGVvbC1jb21t YW5kIChpZiB2aXN1YWwtbGluZS1tb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuZC1v Zi12aXN1YWwtbGluZQorICAgICAgICAgICAgICAgICAgICAgICAnZW5kLW9mLWxpbmUpKSkKKyAg ICAoZnVuY2FsbCBlb2wtY29tbWFuZCBhcmcpCisgICAgKHNldHEgdGhpcy1jb21tYW5kIGVvbC1j b21tYW5kKSkpCiAKIChkZWZ1biBiYWNrd2FyZC1saW5lLW5vbWFyayAoJm9wdGlvbmFsIGFyZykK ICAgIkRlYWN0aXZhdGUgbWFyazsgbW92ZSBjdXJzb3IgdmVydGljYWxseSB1cCBBUkcgbGluZXMu IgpAQCAtNjI4LDggKzYzNCw5IEBACiBJZiBzY2FuIHJlYWNoZXMgZW5kIG9mIGJ1ZmZlciwgc3Rv cCB0aGVyZSB3aXRob3V0IGVycm9yLiIKICAgKGludGVyYWN0aXZlICJwIikKICAgKHBjLXNlbGVj dC1lbnN1cmUtbWFyaykKLSAgKGJlZ2lubmluZy1vZi1saW5lIGFyZykpCi0KKyAgKGlmIHZpc3Vh bC1saW5lLW1vZGUKKyAgICAgIChiZWdpbm5pbmctb2YtdmlzdWFsLWxpbmUgYXJnKQorICAgIChi ZWdpbm5pbmctb2YtbGluZSBhcmcpKSkKIAogKGRlZnVuIHNjcm9sbC11cC1tYXJrICgmb3B0aW9u YWwgYXJnKQogICAiRW5zdXJlIG1hcmsgaXMgYWN0aXZlOyBzY3JvbGwgdXB3YXJkIEFSRyBsaW5l czsgb3IgbmVhciBmdWxsIHNjcmVlbiBpZiBubyBBUkcuCkBAIC03MjgsNyArNzM1LDkgQEAKIElm IHNjYW4gcmVhY2hlcyBlbmQgb2YgYnVmZmVyLCBzdG9wIHRoZXJlIHdpdGhvdXQgZXJyb3IuIgog ICAoaW50ZXJhY3RpdmUgInAiKQogICAocGMtc2VsZWN0LW1heWJlLWRlYWN0aXZhdGUtbWFyaykK LSAgKGJlZ2lubmluZy1vZi1saW5lIGFyZykpCisgIChpZiB2aXN1YWwtbGluZS1tb2RlCisgICAg ICAoYmVnaW5uaW5nLW9mLXZpc3VhbC1saW5lIGFyZykKKyAgICAoYmVnaW5uaW5nLW9mLWxpbmUg YXJnKSkpCiAKIChkZWZ1biBzY3JvbGwtdXAtbm9tYXJrICgmb3B0aW9uYWwgYXJnKQogICAiRGVh Y3RpdmF0ZSBtYXJrOyBzY3JvbGwgdXB3YXJkIEFSRyBsaW5lczsgb3IgbmVhciBmdWxsIHNjcmVl biBpZiBubyBBUkcuCgojIEJlZ2luIGJ1bmRsZQpJeUJDWVhwaFlYSWdjbVYyYVhOcGIyNGdZblZ1 Wkd4bElIWTBDaU1LUWxwb09URkJXU1pUV1JDNkp2Z0FBZWQvZ0ZBUUNnQlE0Ly8zClVoSkFnTC8v Ly9CUUJENVQzdXZCWW85VDJ1NzNDU1NOR2laVFR3Sm9BcDZlcWUxR3A2UjZqMURFOUlNb0poTnFh YUo2VTlJZWlBQUEKQUJvTVNhSm8wcGpRajFCNkpvOUlBQUFHZ2lsR3FlS2VpZUVUMUdSNlFHUUFB QUFra1RFVEtlUW1lb2FUUmhBeEFBQVFBdzNsWWVlZgoxTTA0QzNpcE01bUlRb3RTTXNJUGplUnFq Q05vQ0hBSHdPT0JCeGw0YVdHWVBYeEthSkZsam1lUUdURFd0enMrMm16Ny95M0NOUEdPCnJkaUlk Mjd4U1hUTkJnMW5ZSkllMnpQVGZYTk56SE1MYWJqVWJUY2RRNGVreHVEUU1NWE9GakhtYyt0bU1v RFlMWFZFZ0V4aVVkYWUKR1FHUitxc0l0cDJDdlZwY0RHNDExaEx5eHF0Ymx2NG5mMVg1YjVCMFFk c095T1ZzWUd4MHdKdEtTZmNjYm1BTFFyRjRjc0dValV3ZQpEMVBXSzJZUlVNWWVDSUdBdjFaS0JG Q2tUNUozd2J6MVY5STBIV2RRb3NVZnhROExQdHp2dldZblZ0OGFXVWdzYVZOWTB4U3A5SWpPClZF Qm9tSjEzeEpDaXhzVFFkWEhPV0RZSEorZWRrb21JWmVMMm85SDV5TUJndVJpREhlWFpBNXFCeSto VjhMUThUU2lITEFHb3l2a1YKc0dERGdXd0J1Z05Ud2VTMTJJbnNmUWZ3VXJhZkl6MVlDNWVMSUxp M0lPZlM5d0VYeEg2VzFvWUI0U3NWQmE4V2pRcHBzUzFFUENKVQpHc2FIamFkU3NRNXdaU3ZCZG9D Z2NJUGRkYk45ckl4TDRLYWRCWlJwVnJ1cUl6UVp6c1ZTOE9oSXluZ3hJS2M1WWFzeGFXWUJwQ1lF CjVLbHZta3R0MmkxbTByWjZ2Q1dINlRxTWFJSkw1YTNhTkNLaGd5NXhtNHNpRFNhTUI1c2tLL25G VTVlK2ZQNWh6UWN1SkN4K291WUcKWThhRWVTVVlvMDdIRTREU3BqcUdlS0d2NVc1S2d4eGJsdGlM QytOMTlLcGRrQlRtTUFsUW1aSnFZYnlKRUhwNlp5YWZzQW9nc2dzRQpubWRZbUVBZ0ZleEt6WExQ MEF0NDdPUVdjK3ROWklNWEJ3YmtYS1JiOUV5dzhHNlZ6QnhTdDc5RjYwek40K3pqZUhyajdoOFVt MU1zCmg0YTkrNTFtYmp4NFRwTnVOQ1hlVWVrVExWTEFLUElCcmRpdTVlaHZHVURSd3Z3Rlk0aElt d0swaDRaSThBcWo3eEpXbTBtR0I1ZFEKcmhSb05DcUxOLzhtaGNHWThGTlVHUzhPWkN0ckRlRThh cXJrdVU5ck1JdVM5QzdTaFZTN1ZMUm9TY0s1WVlaSjF0K2tLaTFWaXZRTwpCM1RZRUtBN2dOU2NH Mjh3b1UxV3M5T25VS3VTZk1ES3FjT200Nk9LbEJCVUtVakZUQU9MRDUzRXZZVENLQXBDSVJvN0Zt U3ZTRlU0CmFtaGFVbmh2cEdkRFBNMmptY0JXcFJXYjlpQ1lXVEpRUG9GUVo2VndqV3lxNnEvQm1Y MWQyZEdVVnNpUkZHdkpvK0ZsZ1dFUEF4c0gKUmpEWUdiQlpKbFd2anpqa3pRTXdJdzJ3QTNtbndr eGpGSGdjWlNYeGhXYXRlQVVNUXpDMklTU2QzQ3FYYmdRU0NTQm5GekNzc1QzdgptVnMrckVUd1lu a1YxUU1TUUNHUVZZNVpqc0szRUNmS1R0Mm1GamlCMkdhemNEY0RBTGt4RzE1bWxsaXhjME5RbTQ2 eDZaOE1oTi9pCjdraW5DaElDRjBUZkFBPT0K --001636c5a7d66db4be049b092c0d Content-Type: text/x-patch; charset=US-ASCII; name="pc-visual-line_function.patch" Content-Disposition: attachment; filename="pc-visual-line_function.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gjjhcgk51 IyBCYXphYXIgbWVyZ2UgZGlyZWN0aXZlIGZvcm1hdCAyIChCYXphYXIgMC45MCkKIyByZXZpc2lv bl9pZDogcGpAaXJyZWd1bGFyZXhwcmVzc2lvbnMubmV0LTIwMTEwMTMwMDMzMTAwLVwKIyAgIHI4 cXMxY2NwYmJic2JnMWUKIyB0YXJnZXRfYnJhbmNoOiBienI6Ly9ienIuc2F2YW5uYWguZ251Lm9y Zy9lbWFjcy90cnVuay8KIyB0ZXN0YW1lbnRfc2hhMTogMTBhZGU2NDMwN2Q4NjBhZjkzMWY5ZjZm ZDhkMzE2MmMwYjRkNzFlMQojIHRpbWVzdGFtcDogMjAxMS0wMS0yOSAxOTo0Mjo1MyAtMDgwMAoj IGJhc2VfcmV2aXNpb25faWQ6IHNjaHdhYkBsaW51eC1tNjhrLm9yZy0yMDExMDEzMDAwMzUzNS1c CiMgICBqbWlud2lmcGk3NjdvaXc1CiMgCiMgQmVnaW4gcGF0Y2gKPT09IG1vZGlmaWVkIGZpbGUg J2xpc3AvZW11bGF0aW9uL3BjLXNlbGVjdC5lbCcKLS0tIGxpc3AvZW11bGF0aW9uL3BjLXNlbGVj dC5lbAkyMDExLTAxLTI1IDA0OjA4OjI4ICswMDAwCisrKyBsaXNwL2VtdWxhdGlvbi9wYy1zZWxl Y3QuZWwJMjAxMS0wMS0zMCAwMzozMTowMCArMDAwMApAQCAtMzY5LDYgKzM2OSwxNSBAQAogICAo ZW5kLW9mLWxpbmUgYXJnKQogICAoc2V0cSB0aGlzLWNvbW1hbmQgJ2VuZC1vZi1saW5lKSkKIAor KGRlZnVuIGVuZC1vZi12aXN1YWwtbGluZS1tYXJrICgmb3B0aW9uYWwgYXJnKQorICAiRW5zdXJl IG1hcmsgaXMgYWN0aXZlOyBtb3ZlIHBvaW50IHRvIGVuZCBvZiBjdXJyZW50IHZpc3VhbCBsaW5l LgorV2l0aCBhcmd1bWVudCBBUkcgbm90IG5pbCBvciAxLCBtb3ZlIGZvcndhcmQgQVJHIC0gMSBs aW5lcyBmaXJzdC4KK0lmIHNjYW4gcmVhY2hlcyBlbmQgb2YgYnVmZmVyLCBzdG9wIHRoZXJlIHdp dGhvdXQgZXJyb3IuIgorICAoaW50ZXJhY3RpdmUgInAiKQorICAocGMtc2VsZWN0LWVuc3VyZS1t YXJrKQorICAoZW5kLW9mLXZpc3VhbC1saW5lIGFyZykKKyAgKHNldHEgdGhpcy1jb21tYW5kICdl bmQtb2YtdmlzdWFsLWxpbmUpKQorCiAoZGVmdW4gYmFja3dhcmQtbGluZS1tYXJrICgmb3B0aW9u YWwgYXJnKQogICAiRW5zdXJlIG1hcmsgaXMgYWN0aXZlOyBtb3ZlIGN1cnNvciB2ZXJ0aWNhbGx5 IHVwIEFSRyBsaW5lcy4iCiAgIChpbnRlcmFjdGl2ZSAicCIpCkBAIC01MDQsNiArNTEzLDE1IEBA CiAgIChlbmQtb2YtbGluZSBhcmcpCiAgIChzZXRxIHRoaXMtY29tbWFuZCAnZW5kLW9mLWxpbmUp KQogCisoZGVmdW4gZW5kLW9mLXZpc3VhbC1saW5lLW5vbWFyayAoJm9wdGlvbmFsIGFyZykKKyAg IkRlYWN0aXZhdGUgbWFyazsgbW92ZSBwb2ludCB0byBlbmQgb2YgY3VycmVudCB2aXN1YWwgbGlu ZS4KK1dpdGggYXJndW1lbnQgQVJHIG5vdCBuaWwgb3IgMSwgbW92ZSBmb3J3YXJkIEFSRyAtIDEg bGluZXMgZmlyc3QuCitJZiBzY2FuIHJlYWNoZXMgZW5kIG9mIGJ1ZmZlciwgc3RvcCB0aGVyZSB3 aXRob3V0IGVycm9yLiIKKyAgKGludGVyYWN0aXZlICJwIikKKyAgKHBjLXNlbGVjdC1tYXliZS1k ZWFjdGl2YXRlLW1hcmspCisgIChlbmQtb2YtdmlzdWFsLWxpbmUgYXJnKQorICAoc2V0cSB0aGlz LWNvbW1hbmQgJ2VuZC1vZi12aXN1YWwtbGluZSkpCisKIChkZWZ1biBiYWNrd2FyZC1saW5lLW5v bWFyayAoJm9wdGlvbmFsIGFyZykKICAgIkRlYWN0aXZhdGUgbWFyazsgbW92ZSBjdXJzb3IgdmVy dGljYWxseSB1cCBBUkcgbGluZXMuIgogICAoaW50ZXJhY3RpdmUgInAiKQpAQCAtNjMwLDYgKzY0 OCwxMyBAQAogICAocGMtc2VsZWN0LWVuc3VyZS1tYXJrKQogICAoYmVnaW5uaW5nLW9mLWxpbmUg YXJnKSkKIAorKGRlZnVuIGJlZ2lubmluZy1vZi12aXN1YWwtbGluZS1tYXJrICgmb3B0aW9uYWwg YXJnKQorICAiRW5zdXJlIG1hcmsgaXMgYWN0aXZlOyBtb3ZlIHBvaW50IHRvIGJlZ2lubmluZyBv ZiBjdXJyZW50IHZpc3VhbCBsaW5lLgorV2l0aCBhcmd1bWVudCBBUkcgbm90IG5pbCBvciAxLCBt b3ZlIGZvcndhcmQgQVJHIC0gMSBsaW5lcyBmaXJzdC4KK0lmIHNjYW4gcmVhY2hlcyBlbmQgb2Yg YnVmZmVyLCBzdG9wIHRoZXJlIHdpdGhvdXQgZXJyb3IuIgorICAoaW50ZXJhY3RpdmUgInAiKQor ICAocGMtc2VsZWN0LWVuc3VyZS1tYXJrKQorICAoYmVnaW5uaW5nLW9mLXZpc3VhbC1saW5lIGFy ZykpCiAKIChkZWZ1biBzY3JvbGwtdXAtbWFyayAoJm9wdGlvbmFsIGFyZykKICAgIkVuc3VyZSBt YXJrIGlzIGFjdGl2ZTsgc2Nyb2xsIHVwd2FyZCBBUkcgbGluZXM7IG9yIG5lYXIgZnVsbCBzY3Jl ZW4gaWYgbm8gQVJHLgpAQCAtNzMwLDYgKzc1NSwxNCBAQAogICAocGMtc2VsZWN0LW1heWJlLWRl YWN0aXZhdGUtbWFyaykKICAgKGJlZ2lubmluZy1vZi1saW5lIGFyZykpCiAKKyhkZWZ1biBiZWdp bm5pbmctb2YtdmlzdWFsLWxpbmUtbm9tYXJrICgmb3B0aW9uYWwgYXJnKQorICAiRGVhY3RpdmF0 ZSBtYXJrOyBtb3ZlIHBvaW50IHRvIGJlZ2lubmluZyBvZiBjdXJyZW50IHZpc3VhbCBsaW5lLgor V2l0aCBhcmd1bWVudCBBUkcgbm90IG5pbCBvciAxLCBtb3ZlIGZvcndhcmQgQVJHIC0gMSBsaW5l cyBmaXJzdC4KK0lmIHNjYW4gcmVhY2hlcyBlbmQgb2YgYnVmZmVyLCBzdG9wIHRoZXJlIHdpdGhv dXQgZXJyb3IuIgorICAoaW50ZXJhY3RpdmUgInAiKQorICAocGMtc2VsZWN0LW1heWJlLWRlYWN0 aXZhdGUtbWFyaykKKyAgKGJlZ2lubmluZy1vZi12aXN1YWwtbGluZSBhcmcpKQorCiAoZGVmdW4g c2Nyb2xsLXVwLW5vbWFyayAoJm9wdGlvbmFsIGFyZykKICAgIkRlYWN0aXZhdGUgbWFyazsgc2Ny b2xsIHVwd2FyZCBBUkcgbGluZXM7IG9yIG5lYXIgZnVsbCBzY3JlZW4gaWYgbm8gQVJHLgogQSBu ZWFyIGZ1bGwgc2NyZWVuIGlzIGBuZXh0LXNjcmVlbi1jb250ZXh0LWxpbmVzJyBsZXNzIHRoYW4g YSBmdWxsIHNjcmVlbi4KCj09PSBtb2RpZmllZCBmaWxlICdsaXNwL3NpbXBsZS5lbCcKLS0tIGxp c3Avc2ltcGxlLmVsCTIwMTEtMDEtMjUgMDQ6MDg6MjggKzAwMDAKKysrIGxpc3Avc2ltcGxlLmVs CTIwMTEtMDEtMzAgMDM6MzE6MDAgKzAwMDAKQEAgLTQ4MDgsNiArNDgwOCwxMCBAQAogICAgIChk ZWZpbmUta2V5IG1hcCBbcmVtYXAga2lsbC1saW5lXSAna2lsbC12aXN1YWwtbGluZSkKICAgICAo ZGVmaW5lLWtleSBtYXAgW3JlbWFwIG1vdmUtYmVnaW5uaW5nLW9mLWxpbmVdICdiZWdpbm5pbmct b2YtdmlzdWFsLWxpbmUpCiAgICAgKGRlZmluZS1rZXkgbWFwIFtyZW1hcCBtb3ZlLWVuZC1vZi1s aW5lXSAgJ2VuZC1vZi12aXN1YWwtbGluZSkKKyAgICAoZGVmaW5lLWtleSBtYXAgW3JlbWFwIGVu ZC1vZi1saW5lLW5vbWFya10gJ2VuZC1vZi12aXN1YWwtbGluZS1ub21hcmspCisgICAgKGRlZmlu ZS1rZXkgbWFwIFtyZW1hcCBlbmQtb2YtbGluZS1tYXJrXSAnZW5kLW9mLXZpc3VhbC1saW5lLW1h cmspCisgICAgKGRlZmluZS1rZXkgbWFwIFtyZW1hcCBiZWdpbm5pbmctb2YtbGluZS1ub21hcmtd ICdiZWdpbm5pbmctb2YtdmlzdWFsLWxpbmUtbm9tYXJrKQorICAgIChkZWZpbmUta2V5IG1hcCBb cmVtYXAgYmVnaW5uaW5nLW9mLWxpbmUtbWFya10gJ2JlZ2lubmluZy1vZi12aXN1YWwtbGluZS1t YXJrKQogICAgIDs7IFRoZXNlIGtleWJpbmRpbmdzIGludGVyZmVyZSB3aXRoIHh0ZXJtIGZ1bmN0 aW9uIGtleXMuICBBcmUKICAgICA7OyB0aGVyZSBhbnkgb3RoZXIgc3VpdGFibGUgYmluZGluZ3M/ CiAgICAgOzsgKGRlZmluZS1rZXkgbWFwICJcTS1bIiAncHJldmlvdXMtbG9naWNhbC1saW5lKQoK IyBCZWdpbiBidW5kbGUKSXlCQ1lYcGhZWElnY21WMmFYTnBiMjRnWW5WdVpHeGxJSFkwQ2lNS1Fs cG9PVEZCV1NaVFdSMWZieTBBQXhCZmdFQVFVZWYvLzNheQpVSXEvLy8vd1lBYjMzbHBvWUN5RFVn R2dHaGptQUFtVEFBbUV3VENHQUl3QUpSQ25rWkRUS2JVSnRTZWhORFFEUUFHbWpRT1lBQ1pNCkFD WVRCTUlZQWpBQWxOSlR5cDdSTlJwNVRCRGFtZ0FBQUdUUUE1Z0FKa3dBSmhNRXdoZ0NNQUJVa2dR TkpvWk5URFFTbjVNcDZtVTAKTkdodFRhak5SZ1FTWnhUWTFWWDdPMzlwbzE2TVVDSUtKdjRRTEpE ZTkyZ0dDU1ZpMVpYOVh3ckRUZGEvSGNTeVJSdFBkK1NuK0M4WgpVbm9GaDNGWW1TU0QyODIxWHFM ZytBeWJNWXF5RnNBdlRjSXJmVUU3d1JaYjZPRllYOGVrTlJkcENZYUF6a2pDYUFpZ29DSkZnMW1M CkE3ZjR1TnR6WnNONWlZbnFlNTNOWnlOWnZWVmlHank4Smd4S2hJR0J0cUhlWWdYVlVOdGcxMTYr dWluTFF2NVpuMGkvNGxsRlNlNVkKbnNmSXRFOVp6MVU3U2pxTFBiVXM4VHVOQi8zbHpiektPc2Vl TTFxZGpZd1RXUm9CTVl1RXdqOWFBeEVrOXlHeWpWNTBtUWhKSktxNwpSK0NlZXRKcU5CcS9UZ2FH R0VwdWh6dmhPcGcwNjdUanB3amhTcUxxV3Exd3Q3WFE4WkY4OFV4cUplazMrVENSZjFxUy9KM2Zs aGtwCmd5UzQwVGd0MVgzM3RUQm5OYjN1dWxxR2JPMkEwTTZrZHpyNVp4T1pNRXZ3dmFNclo1YStq TitPTWo4ekFTTVAwRGpxeGs5T3psRGcKV0UyU0hFSm5pQTZVU2RtUDNIZnRSQXZhSm1PMDF4TWtX MHptNHRNTlg2Rm1JUm13amM3YXhsbXhlQ1JGS0FTbTBSNERJR3JyMDVubwo2RURQV3BVVjQ2UkZG dU5YNDFibGptS01ET3d5SWxhRGkwRVRJd0xaSkhSeng0NHNrVFRBazBtUHZyTmlVTXJoWk9jcVpw Q200dmJpClBnTE8zS0g5M0M2R0F6MGlkb2tzY0lLM0VVcEdSYmM3Zm1WMkpnY3ZCSlhXdUJ1UkRF dmpsZmFBNHhkd1J4dk14M0pNcnl1YlFidkkKQ2VNb2wrRlRHNHp3RlZsaGpMb2FXU3RHV1RkdDE4 MTF1eFRacG5jTkdiaGJERk8vTGt3VEREanV3WTdSOWNwaGdzVVNrcWQzTmUydAo0VG1wU2RyemhG NVgySGsxREZFbFRabVNzNXhKVmNjWFdJU3hpZFovSWhDV1kvR0RFMUlFcWhOVlYrdXBkVDdDOHc3 bjZpMXhSdU5qClJ6VW5yODd5amZUdjZubDNXZDNMNzk3Mm1jZTlIbWREN1hkaW5SaEhTZlNROXJP SHNZZURYUTRiVGJKOG9ZRXdTUHVWZHFzOXVMczkKUFpUWkh3YkJ2NEQrYjIzSDVxK3RWMTQvallj L3BlTVRnbm1qTk0rZnhjL1AwbVowam01Y2VXZ3hsVzV2bTZPUTNOd3lSaWFaeUJ6QQpDc20zWm1E UjRkTUFZNUJZKzB5T1lCdGlhUWZFVGFkUjg5WlhndU9oNUxIeXVNcGs3VkRHOVZvbVUwWTJWM3BN dWlOMFU5ejNIbE9oCko5aGtyTUM1Qmt3N3laVG9PbDl3SFBTZzRTbXZQeHpFYzE2K2pJRGNJVVFP SGg3eE1USlpmbGgxQVhCMjlZZkY2clZWZmIwZUJsSjUKU2p4NG0veXVqd09ybXpQUzg0bnBuc2hW MFAzMEwwbXFPeU1ma1AzS1E1UEIwZER6NlBWNUo3WXo1cFJoMHozTzE2T3Q0bEh3cHFveQpscnpx d1ZFb2FSbWw2TjdCKzY2RmpqSHE2MHRxb3VLYmFMVGFNcm5kTkRQdys4Vmh4bjlKZ2NFdmJadjZl VWU2WWxSSE5vUjlFZDU2ClJoTi9ETGpOdTJsRkZRNHcySE0rTGo1eHNxUS9FM3hyMW8zVFl5NjRj WjFuWlVqNXkxazQzbTd0anVISTZFdEpLTTM4bTJOdDU0SXkKYzBvdUd1UTFqaTNOZnl6ekZWRE9Z U1lVaHNFU0FuU1FPSjByR2Nla1V3N2RyeWZwTmVNME5RMDZKb211dFJlWlI2S2t5WVhtSVdpcQpr UytqNlFxUnB4T0tOTjZMMHZPMU1vZm8wcGlWSlJVcWpuV2g0OGpTbTUwNnhjaDhEZk9EY25kNDFO aFBlb2F0aFg4R3dzWFJ3amZ1Cm0yaStiRGZtYzQvczRpODdqdncyOXRLT2tlaGovcFdNMGJaZXZs TXZsak5KdTVmV0dPbzZIUW5vTGp2NktMRlRrS0xSK0Y1cVhsTmgKMXcrNVJoSnRobjU0eStHaWhx akJZdTliSmZTU3B6WGFOSjN3Mkdnc1ZsbFVseTRkbG5QRDZnL1YxQUpoTkw2b2FpdDFGR0xRNDhW aQpoSkFjWUI2M1NFT2tyTTFSZklWdU9GRzgzbGhrT2RhbVpVeHZ2ZFpoZVd2endOWjhka1drb3kx WjVydGxjU3lNak9HcWJGWmFMR3J3ClN6R1EzZFI1dzVlRmlqVGpHWnVOTTFuMFNpNUZMcHRqbU90 RlVYenltb3htRWJVcm1UakpqTkpBamFPZ2c5TFAvaTdraW5DaElEcSsKM2xvPQo= --001636c5a7d66db4be049b092c0d-- ------------=_1297197482-781-1--