From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25009 invoked by alias); 23 Oct 2014 22:12:52 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 33520 Received: (qmail 18536 invoked from network); 23 Oct 2014 22:12:40 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.co.uk; s=s2048; t=1414101991; bh=XVCzo7WSc1sUqlrQWz8JUzkyPIxpGFpn3rQ7Nczvn+0=; h=From:To:Subject:Date:From:Subject; b=oYdCpi5pimArgcsyMwB5bKngeN43OJqVq8DracTbu8kgu+vOW2L/t0xpbKwhW5iOg03Q7tMbLTjwFcuZSV1879PqOwyj+c8YjieCyHSyXgN5QCIsW1qmDxjtwpQl9muksq/DTZNJRsSMW46Li5+Pa09J0IGJS6Q7Up7Y1yrBRvnUeMe7+eTQzkFBUTgPq5OER3OS+bGa2v1tTAs1g7/5DoI/+5JWdRtX8TYSd7nsrF/pcnEYfAcu+MI0cc91Cuv4rW3T3yah51rowD/d9mOl6MtTAN1FOPDcXacrg2l9Vo089nAvgVpYdFMTX+UyTlI85Sy80WRu1SrZI39LVjQF8g== DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s2048; d=yahoo.co.uk; b=jKq1L05PZCxtG8kZ6aQya5c/crJmxvq4pCZAtrU/XXSgGID0ajwYJRWZhRNQEr7G/vOfQwmUE2iIrdB/QAuI+m2qkcbvlnz6yNFrbXv0Pcuwk5CFKgkyWFVVqw7nZ7Qc/ks2AbHWQlTUQ3r9KacpaCLiwpUREgQb3h1I+rs9po5kvJ1uQaAEHivaf9aTNZdofqPm+Kv9gweydY9sHjXOlMvCuZSkPuA8UECULiYUmmEEchyG0N3cW+6WAI9oHW6NbAuWaz+NTo67RutQFC7ly+bFNU7jtsxyFHHz3dB2zMN3oWd+1AaFm2SgkI432pBjUPqT4cgwPh/IQ8i1gPJmHQ==; X-Yahoo-Newman-Id: 548716.91878.bm@smtp104.mail.ir2.yahoo.com X-Yahoo-Newman-Property: ymail-3 X-YMail-OSG: fWS4H8QVM1luQlA187Fpu4grqAA56zlUvaqLDX97zXIvTk0 oPc2u.bTMnkyUF1VE8a7jQZd.YLGm8MO1Ah5RxI6Fw597UozGXUsU8jq9joT e5s2J1U2BZ1RKkdBlzEoBnMdkpC_QtKSzYjsG49AZCRitYNuTW_PXF4Sw8H9 R1ImaTKDBH3n9CsQL7X0p49ZI2bjCDtGKAioanD4x39cv6w3yLIT0rKKKZgI A8QutjKk_1Hs7VXzQxkdA7hY3gOnvRFQYjcx6Ixj.Xtbr2fkvCVdbH247Z_c 3cBh7JRBdW4HYxbR5XCxBa.pu.hYX5HDU2BvcH3Pt9QlW1U7Wzq1To_zDaIL YYy7Uj5.I2ciNqlKAjn_EtGGmFJowy1Ilimg7_8rwQ10CqbLRxhsRuKB896n IxkD4BaMKAfHxQpp5F1F_cg1m3pHFC4w0hL5A.6w3.pQGalPf2NdqqmD3zJ3 7bcmhpJIFWwsYxwNB0ytohknD5sR14TuluddZJKngXaPeyiDY0JRCmvjMQ4N N3TPKYcWQmOyUrbkMs1n6y2NruVI- X-Yahoo-SMTP: opAkk_CswBAce_kJ3nIPlH80cJI- From: Oliver Kiddle To: Zsh workers Subject: PATCH: cursor position after vi yank MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-ID: <4409.1414101990.1@thecus.kiddle.eu> Date: Fri, 24 Oct 2014 00:06:30 +0200 Message-ID: <4410.1414101990@thecus.kiddle.eu> When producing the test cases, I noticed that zsh is not quite matching vi in terms of cursor positioning after a yank. This fixes that. Oliver diff --git a/Src/Zle/zle_vi.c b/Src/Zle/zle_vi.c index 20cece0..53919e3 100644 --- a/Src/Zle/zle_vi.c +++ b/Src/Zle/zle_vi.c @@ -457,7 +457,14 @@ viyank(UNUSED(char **args)) ret = 0; } vichgflag = 0; - zlecs = oldcs; + /* cursor now at the start of the range yanked. For line mode + * restore the column position */ + if (vilinerange) { + while (oldcs > 0 && zleline[oldcs - 1] != ZWC('\n') && + zlecs != zlell && zleline[zlecs] != ZWC('\n')) { + ++zlecs; --oldcs; + } + } return ret; } diff --git a/Test/X02zlevi.ztst b/Test/X02zlevi.ztst index b4426a8..d9fa0d5 100644 --- a/Test/X02zlevi.ztst +++ b/Test/X02zlevi.ztst @@ -15,6 +15,28 @@ >BUFFER: good >CURSOR: 4 + zletest $'one two\eyb' +0:yank left moves the cursor +>BUFFER: one two +>CURSOR: 4 + + zletest $'one two\e0ye' +0:yank right leaves the cursor +>BUFFER: one two +>CURSOR: 0 + + zletest $'short\eoand longer\eyk' +0:yank up line moves cursor up but not to buffer start +>BUFFER: short +>and longer +>CURSOR: 4 + + zletest $'one\eotwo\ekyj' +0:yank down line leaves the cursor +>BUFFER: one +>two +>CURSOR: 2 + zletest $'yankee doodle\ebhDyy0"1P' 0:paste register 1 to get last deletion >BUFFER: doodleyankee