From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from primenet.com.au (ns1.primenet.com.au [203.24.36.2]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id 1210e39a for ; Wed, 19 Jun 2019 10:23:05 +0000 (UTC) Received: (qmail 17262 invoked by alias); 19 Jun 2019 10:22:58 -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: List-Unsubscribe: X-Seq: 44430 Received: (qmail 18813 invoked by uid 1010); 19 Jun 2019 10:22:58 -0000 X-Qmail-Scanner-Diagnostics: from mail-io1-f47.google.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.101.2/25482. spamassassin: 3.4.2. Clear:RC:0(209.85.166.47):SA:0(-2.0/5.0):. Processed in 1.445907 secs); 19 Jun 2019 10:22:58 -0000 X-Envelope-From: roman.perepelitsa@gmail.com X-Qmail-Scanner-Mime-Attachments: |countprompt-fix.patch| X-Qmail-Scanner-Zip-Files: | Received-SPF: pass (ns1.primenet.com.au: SPF record at _netblocks.google.com designates 209.85.166.47 as permitted sender) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=EyhgH3rreTOeeyonh1uloXULbtYNOI+h+epBW1e1hQ0=; b=FlGAN7oLFdomWv4FEUInEkpGr9UQF1xHd+Na8yjfMhLElEMEWi2qHIlow1Tfka+pEQ SnCrN6a8TxVF5WjI2VeFT0pQa0w+WzfNI9kAVYBGdmJ0jr51pTrJF8Nx4np6+GpN93Vf pUwboh00QL1X+yq9dhzGBpiSRAszOAuFMQoKHDx5KF+fU6Al4VCbGhje85XQB0Ce3kwV EtuyWgaWGfw/EQ9g0I2+FupGXpNm/2GWjBF6DaHAW9apEVBcBmyYOOEU83R5+lLYm9uP 6qDcl9CxcV+EEO8ohz3+MrCIStdVWqhi4aBHlO8XnYmGLWg8+StCURPq/5ELZnuSqH+D Z6Hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=EyhgH3rreTOeeyonh1uloXULbtYNOI+h+epBW1e1hQ0=; b=pnyut3DHg6Zo924gV5s2sSDQ+QFHOK94vYiZ7TtcCdtY2pPj1csLyv9xcppRbfdisv oKuR0FngUl7qi72d++KUbpETHyAjnluKFcqhHP5b11wAWAvM6asSvoK73Nm4KQYgGltP s4P6dVyY+L4jbgmU7l+bayq7GczaKQ5u+kfk2SL047G7IhqmmG7MozAOAV+M6yD/9Vnp 4MbeYJEUzYM1Obu/FhyU6BWbHp/wdeB0fz3RfsrdsOMJ6nGPTTL5se68QTKj/6C41Mma NlU5u15p1yysLRDf3LaY7af0dvlj2BgSehOw+ilG8qgpnF1/AgBAbV+dVRYYmtjOcp5p Guvw== X-Gm-Message-State: APjAAAVLIpvOb5nirAGC8uec9ANpWKOun7dVStMwFAayooIi9QNkskx3 oJFt0kXnru/C0eKgKPaN7HhrABGQL4ZSi/1cUAgQMgTeFCk= X-Google-Smtp-Source: APXvYqy9NbkHxVj7WuR2B1lNzYWcBjKnCPX52WtJeIRuz8QuWapiea+c3h/ts2YjAQwtVvGSTgbG9tvmqm6NdU556/U= X-Received: by 2002:a6b:7208:: with SMTP id n8mr10712813ioc.151.1560939743676; Wed, 19 Jun 2019 03:22:23 -0700 (PDT) MIME-Version: 1.0 From: Roman Perepelitsa Date: Wed, 19 Jun 2019 12:22:13 +0200 Message-ID: Subject: PATCH: several bug fixes in countprompt To: Zsh hackers list Content-Type: multipart/mixed; boundary="000000000000f03885058baa9ace" --000000000000f03885058baa9ace Content-Type: text/plain; charset="UTF-8" This patch fixes multiple bugs in countprompt. 1. Height off by one in the presence of meta characters at the end of the line. The following prompt has height 2 but countprompt used to return 3. PROMPT="${(pl.$COLUMNS..-.)}%f"$'\n' You can observe the effects of the bug by hitting esc-x followed by reset-prompt. 2. Width off by one when a line is broken in the middle of a wide character. Assuming COLUMNS=79, the following prompt has width 2 but countprompt used to return 0. Note that \u3050 has width 2. PROMPT="${(pl.40..\u3050.)}" zsh -df Press ctrl-r or type ls to observe the effects of the bug. 3. Width off by 1-7 when a line is broken in the middle of a tab. Assuming COLUMNS=79, the following prompt has width 1 but countprompt used to return 0. PROMPT="${(pl.10..\t.)}" zsh -df Press ctrl-r or type ls to observe the effects of the bug. On github: https://github.com/zsh-users/zsh/compare/master...romkatv:countprompt-fix. I've only tested it on one terminal. Before I test it on a dozen of different terminals, is there anything I'm missing? Anything I should be on lookout for? Roman. --000000000000f03885058baa9ace Content-Type: application/octet-stream; name="countprompt-fix.patch" Content-Disposition: attachment; filename="countprompt-fix.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jx335au70 ZGlmZiAtLWdpdCBhL1NyYy9wcm9tcHQuYyBiL1NyYy9wcm9tcHQuYw0KaW5kZXggZThkNTBkMTYx Li43ZjRkN2E3MGUgMTAwNjQ0DQotLS0gYS9TcmMvcHJvbXB0LmMNCisrKyBiL1NyYy9wcm9tcHQu Yw0KQEAgLTEwNzUsMTAgKzEwNzUsOSBAQCBwdXRzdHIoaW50IGQpDQogbW9kX2V4cG9ydCB2b2lk DQogY291bnRwcm9tcHQoY2hhciAqc3RyLCBpbnQgKndwLCBpbnQgKmhwLCBpbnQgb3ZlcmYpDQog ew0KLSAgICBpbnQgdyA9IDAsIGggPSAxLCBtdWx0aSA9IDA7DQorICAgIGludCB3ID0gMCwgaCA9 IDEsIG11bHRpID0gMCwgd2N3ID0gMDsNCiAgICAgaW50IHMgPSAxOw0KICNpZmRlZiBNVUxUSUJZ VEVfU1VQUE9SVA0KLSAgICBpbnQgd2N3Ow0KICAgICBjaGFyIGluY2hhcjsNCiAgICAgbWJzdGF0 ZV90IG1iczsNCiAgICAgd2NoYXJfdCB3YzsNCkBAIC0xMDkyLDEwICsxMDkxLDIzIEBAIGNvdW50 cHJvbXB0KGNoYXIgKnN0ciwgaW50ICp3cCwgaW50ICpocCwgaW50IG92ZXJmKQ0KIAkgKiBwcm9t cHQgYW5kIHRoZSBsaW5lIGl0IHRlcm1pbmF0ZXMgdGFrZXMgdXAgZXhhY3RseSB0aGUgd2lkdGgg b2YgdGhlDQogCSAqIHRlcm1pbmFsDQogCSAqLw0KLQlpZiAodyA+PSB6dGVybV9jb2x1bW5zICYm IG92ZXJmID49IDAgJiYgIW11bHRpICYmICpzdHIgIT0gJ1xuJykgew0KLQkgICAgdyA9IDA7DQor CXdoaWxlICh3ID4genRlcm1fY29sdW1ucyAmJiBvdmVyZiA+PSAwICYmICFtdWx0aSkgew0KIAkg ICAgaCsrOw0KKwkgICAgaWYgKHdjdykgew0KKwkJLyoNCisJCSAqIFdpZGUgY2hhcmFjdGVycyBk b24ndCBnZXQgc3BsaXQgb2ZmLiBUaGV5IG1vdmUgdG8gdGhlDQorCQkgKiBuZXh0IGxpbmUgaWYg dGhlcmUgaXMgbm90IGVub3VnaCBzcGFjZS4NCisJCSAqLw0KKwkJdyA9IHdjdzsNCisJCWJyZWFr Ow0KKwkgICAgfSBlbHNlIHsNCisJCS8qDQorCQkgKiBUYWJzIG92ZXJmbG93IHRvIHRoZSBuZXh0 IGxpbmUgYXMgaWYgdGhleSB3ZXJlIG1hZGUgb2Ygc3BhY2VzLg0KKwkJICovDQorCQl3IC09IHp0 ZXJtX2NvbHVtbnM7DQorCSAgICB9DQogCX0NCisJd2N3ID0gMDsNCiAJLyoNCiAJICogSW5wdXQg c3RyaW5nIHNob3VsZCBiZSBtZXRhZmllZCwgc28gdG9rZW5zIGluIGl0IHNob3VsZA0KIAkgKiBi ZSByZWFsIHRva2VucywgZXZlbiBpZiB0aGVyZSBhcmUgbXVsdGlieXRlIGNoYXJhY3RlcnMuDQpA QCAtMTE3NiwxMiArMTE4OCwxOSBAQCBjb3VudHByb21wdChjaGFyICpzdHIsIGludCAqd3AsIGlu dCAqaHAsIGludCBvdmVyZikNCiAgICAgICogVGhpcyBpc24ndCBlYXN5IHRvIGhhbmRsZSBnZW5l cmFsbHk7IGp1c3QgYXNzdW1lIHRoZXJlJ3Mgbm8NCiAgICAgICogb3V0cHV0Lg0KICAgICAgKi8N Ci0gICAgaWYodyA+PSB6dGVybV9jb2x1bW5zICYmIG92ZXJmID49IDApIHsNCi0JaWYgKCFvdmVy ZiB8fCB3ID4genRlcm1fY29sdW1ucykgew0KLQkgICAgdyA9IDA7DQotCSAgICBoKys7DQorICAg IHdoaWxlICh3ID4genRlcm1fY29sdW1ucyAmJiBvdmVyZiA+PSAwKSB7DQorCWgrKzsNCisJaWYg KHdjdykgew0KKwkgICAgdyA9IHdjdzsNCisJICAgIGJyZWFrOw0KKwl9IGVsc2Ugew0KKwkgICAg dyAtPSB6dGVybV9jb2x1bW5zOw0KIAl9DQogICAgIH0NCisgICAgaWYgKHcgPT0genRlcm1fY29s dW1ucyAmJiBvdmVyZiA9PSAwKSB7DQorCXcgPSAwOw0KKwloKys7DQorICAgIH0NCiAgICAgaWYo d3ApDQogCSp3cCA9IHc7DQogICAgIGlmKGhwKQ0K --000000000000f03885058baa9ace--