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 55e6f1b2 for ; Sat, 8 Dec 2018 22:05:05 +0000 (UTC) Received: (qmail 13014 invoked by alias); 8 Dec 2018 22:04: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: List-Unsubscribe: X-Seq: 43875 Received: (qmail 28909 invoked by uid 1010); 8 Dec 2018 22:04:52 -0000 X-Qmail-Scanner-Diagnostics: from mail-oi1-f170.google.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.100.2/25112. spamassassin: 3.4.2. Clear:RC:0(209.85.167.170):SA:0(-2.0/5.0):. Processed in 2.423336 secs); 08 Dec 2018 22:04:52 -0000 X-Envelope-From: sgniazdowski@gmail.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | 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=FgDrcUINpYJcJkaXVIUOjXW9HotcT/6rVnCVkMHnFI4=; b=kKK0WSYKs9ABlUZmsOnbmLWZF4RZahvxRx/BSMw4YExmYreFElxDrmWtm2WMc33H8+ AlVqmTMiuBL4O8UOHH3BJ7x5SqUEx5TT41l56cJWnz6+WeCH9vE5jWg8oYqEn7rUSo8P KE+llO1sMZ+5+yaY83QOwsbAo82od1X752nqQ4gCJhND+J2h/XCxgFMs2uhAzFW3rxBv rxiizMwctW1d+RdxymCfS8u97RU5diWoPwXy7piZjiyhbby+dSG+I/USeUZK6BXJSrt6 Qv/+H9ttsMbkEHs1HWGOMvvXNSAk07tGuQBxMdJT0rCPM0HKT7a3wp2Dl03I0cXd2I/n y9SA== 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=FgDrcUINpYJcJkaXVIUOjXW9HotcT/6rVnCVkMHnFI4=; b=mulXpVwNzfcZiQ49jC+FxxOtWuHGfqHjgQecbX2Z9TUktgWeNSUVjSWPYiT8KF86NF nLSVlOxeKW5me9FWCDmjyrpvjj0uGYFTcgwzFh9nZCLuSvebM9N4YRsbnH2CsPjOshJQ RiQPad7hGU6O5qd7uiMbs1mJbnuvLCZKfkD+2bBGjmLfSUQahizFfIEfDKo9B9gQfYHE i02J01wlLsfliFG8OuFfLugfIaS9qrvqSdIGpjyGO2czfgRxhS+atEDHiuYLD2o/DMeh foRxriu5l2C5Qlt6eCFOGSrBGK1CbxpQARrgsWVjIJzHlDisa0/VTVkqY/UEwjiWaoMl c8Sw== X-Gm-Message-State: AA+aEWYvGJ5Ig9l5Q6pjAlSxT+YU6wMnaOHjHKRw6PpncoP9/hl/3EST fhuOSdFHRssBip1Lc3NK5h74dXrOH54RfZR1zBDG0mtO X-Google-Smtp-Source: AFSGD/WuqiVqNGiZfucBnomGURt1stsBQpXk3+s7Uw4RYqt75VshHHicDmvtdZ6MAV/wFSyll/7fgQmDVmaEL6PBINs= X-Received: by 2002:aca:195:: with SMTP id 143mr4026014oib.322.1544306685502; Sat, 08 Dec 2018 14:04:45 -0800 (PST) MIME-Version: 1.0 From: Sebastian Gniazdowski Date: Sat, 8 Dec 2018 23:04:33 +0100 Message-ID: Subject: [PATCH] Make 256 color codes be based on zle_highlight array, not on termcap To: Zsh hackers list Content-Type: multipart/mixed; boundary="0000000000006a1537057c89eb2b" --0000000000006a1537057c89eb2b Content-Type: text/plain; charset="UTF-8" Hello, zle_highlight array has fields like `fg_start_code' & `fg_end_code'. The first is by default $'\x1b[', the second - 'm'. ANSI colors and True-Colors are using those fields to construct and emit the final, complete escape (by default) code to the terminal. Yet the 248 colors are ignoring zle_highlight and are equipped with terminal code by use of termcap. I think the following line (prompt.c: ~2044) does the conversion: tputs(tgoto(tcstr[tc], colour, colour), 1, putshout); The patch makes the 256 colors to also use zle_highlight. This is the main addition of the patch (also included the TrueColor case, to show that this is done exactly this way): } else if (use_truecolor) { ptr += sprintf(ptr, "8;2;%d;%d;%d", colour >> 16, (colour >> 8) & 0xff, colour & 0xff); + } else if (colour > 7 && colour <= 255) { + ptr += sprintf(ptr, "8;5;%d", colour); Is the patch acceptable? I imagine someone might suspect there exists a terminal that uses escape codes for first 8 colors, but some other kind of codes, collected in termcap, for remaining 248 colors. Can this be considered impossible to accept the patch? BTW. I've made X04 zle tests more rock-solid, because the debug prints I added to track the 256-color/zle_highlight issue were slowing down Zle, and a rare phenomenon (not occurred from the time I've simplified Zle, disabled the echoing of input text) became very often: Ctrl-D was appearing too quickly after Ctrl-A. A sleep of 333 ms made the problem go away, and I think the issue is solved, and Zle tests are quite rock solid now. -- Sebastian Gniazdowski News: https://twitter.com/ZdharmaI IRC: https://kiwiirc.com/client/chat.freenode.net:+6697/#zplugin Blog: http://zdharma.org --0000000000006a1537057c89eb2b Content-Type: text/plain; charset="US-ASCII"; name="256-colors-to-use-zle_highlight.diff.txt" Content-Disposition: attachment; filename="256-colors-to-use-zle_highlight.diff.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jpg079gm0 Y29tbWl0IDVkZGEyMTJiM2JlM2YxZjEyYWQzMWUzZDY1NDNkMzY3Zjk4N2VlNTUKQXV0aG9yOiBT ZWJhc3RpYW4gR25pYXpkb3dza2kgPHNnbmlhemRvd3NraUBnbWFpbC5jb20+CkRhdGU6ICAgU2F0 IERlYyA4IDIyOjQyOjQ5IDIwMTggKzAxMDAKCiAgICBJbnN0ZWFkIG9mIHVzaW5nIHRlcm1jYXAs IDI1Ni1jb2xvdXJzIGFyZSBiYXNlZCBvbiB6bGVfaGlnaGxpZ2h0IGVudHJpZXMKICAgIAogICAg Rm9sbG93aW5nIGNvZGUgc25pcHBldCBwZXJmb3JtcyB0aGUgY29udmVyc2lvbiBvZiBjb2xvdXIg bnVtYmVyIHRvIHRoZQogICAgY29kZSB0byBiZSBlbWl0dGVkIHRvIHRlcm1pbmFsICh0aGUgZXhh bXBsZSBzaG93cyBmb3JlZ3JvdW5kIGNvbG9yCiAgICBoYW5kbGluZyk6CiAgICAgICAgLi4uCiAg ICAgICAgc3RyY3B5KGNvbHNlcV9idWYsIGZnX2JnX3NlcXVlbmNlc1tmZ19iZ10uc3RhcnQpOwog ICAgICAgIC4uLgogICAgICAgIH0gZWxzZSBpZiAoY29sb3VyID4gNyAmJiBjb2xvdXIgPD0gMjU1 KSB7CiAgICAgICAgICAgIHB0ciArPSBzcHJpbnRmKHB0ciwgIjg7NTslZCIsIGNvbG91cik7CiAg ICAgICAgLi4uCgpkaWZmIC0tZ2l0IGEvU3JjL3Byb21wdC5jIGIvU3JjL3Byb21wdC5jCmluZGV4 IDU2OGJmYzJhOS4uNGE5MGY1ZmNmIDEwMDY0NAotLS0gYS9TcmMvcHJvbXB0LmMKKysrIGIvU3Jj L3Byb21wdC5jCkBAIC0xNzY0LDcgKzE3NjQsOSBAQCBvdXRwdXRfY29sb3VyKGludCBjb2xvdXIs IGludCBmZ19iZywgaW50IHVzZV90YywgaW50IHRydWVjb2wsIGNoYXIgKmJ1ZikKIAkvKiBsZW5n dGggb2YgaGV4IHRyaXBsZXQgYWx3YXlzIDcsIGRvbid0IG5lZWQgc3ByaW50ZiB0byBjb3VudCAq LwogCWF0cmxlbiArPSBidWYgPyBzcHJpbnRmKHB0ciwgIiMlMDJ4JTAyeCUwMngiLCBjb2xvdXIg Pj4gMTYsCiAJCShjb2xvdXIgPj4gOCkgJiAweGZmLCBjb2xvdXIgJiAweGZmKSA6IDc7Ci0gICAg LyogY29sb3VyIHNob3VsZCBvbmx5IGJlID4gNyBpZiB1c2luZyB0ZXJtY2FwIGJ1dCBsZXQncyBi ZSBzYWZlICovCisgICAgLyogY29sb3VyIHNob3VsZCBvbmx5IGJlID4gNyBpZiB1c2luZyB0ZXJt Y2FwIGJ1dCBsZXQncyBiZSBzYWZlCisgICAgICogdXBkYXRlOiBjdXJyZW50bHkgb3RoZXIgcGxh Y2VzIGluIGNvZGUgZG9uJ3QgYWx3YXlzIGltcGx5CisgICAgICogdGhhdCBjb2xvdXIgPiA3ID0+ IHVzaW5nLXRlcm1jYXAgKi8KICAgICB9IGVsc2UgaWYgKHVzZV90YyB8fCBjb2xvdXIgPiA3KSB7 CiAJY2hhciBkaWdidWZbRElHQlVGU0laRV07CiAJc3ByaW50ZihkaWdidWYsICIlZCIsIGNvbG91 cik7CkBAIC0yMDIwLDcgKzIwMjIsNyBAQCBzZXRfY29sb3VyX2F0dHJpYnV0ZSh6YXR0ciBhdHIs IGludCBmZ19iZywgaW50IGZsYWdzKQogICAgICAqIGhpZ2hsaWdodGluZyB2YXJpYWJsZXMsIHNv IG11Y2ggb2YgdGhpcyBzaG91bGRuJ3QgYmUKICAgICAgKiBuZWNlc3NhcnkgYXQgdGhpcyBwb2lu dCwgYnV0IHdlIG1pZ2h0IGFzIHdlbGwgYmUgc2FmZS4KICAgICAgKi8KLSAgICBpZiAoIWRlZiAm JiAhdXNlX3RydWVjb2xvciAmJiAoY29sb3VyID4gNyB8fCB1c2VfdGVybWNhcCkpIHsKKyAgICBp ZiAoIWRlZiAmJiAhdXNlX3RydWVjb2xvciAmJiAoY29sb3VyID4gMjU1ICYmIHVzZV90ZXJtY2Fw KSkgewogCS8qCiAJICogV2UgY2FuIGlmIGl0J3MgYXZhaWxhYmxlLCBhbmQgZWl0aGVyIHdlIGNv dWxkbid0IGdldAogCSAqIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjb2xvdXJzLCBvciB0aGUgY29s b3VyIGlzIGluIHJhbmdlLgpAQCAtMjA0Niw5ICsyMDQ4LDEwIEBAIHNldF9jb2xvdXJfYXR0cmli dXRlKHphdHRyIGF0ciwgaW50IGZnX2JnLCBpbnQgZmxhZ3MpCiAJfQogCS8qCiAJICogTm9wZSwg dGhhdCBkaWRuJ3Qgd29yay4KLQkgKiBJZiAwIHRvIDcsIGFzc3VtZSBzdGFuZGFyZCBBTlNJIHdv cmtzLCBvdGhlcndpc2UgaXQgd29uJ3QuCisJICogSWYgMCB0byA3LCBhc3N1bWUgc3RhbmRhcmQg QU5TSSB3b3JrcywgaWYgOCB0byAyNTUsIGFzc3VtZQorICAgICAgICAgKiBzdGFuZGFyZCAyNTYt Y29sb3IgZXNjYXBlcyB3b3Jrcywgb3RoZXJ3aXNlIGl0IHdvbid0LgogCSAqLwotCWlmIChjb2xv dXIgPiA3KQorCWlmIChjb2xvdXIgPiAyNTUpCiAJICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIw NjcsNiArMjA3MCw4IEBAIHNldF9jb2xvdXJfYXR0cmlidXRlKHphdHRyIGF0ciwgaW50IGZnX2Jn LCBpbnQgZmxhZ3MpCiAgICAgfSBlbHNlIGlmICh1c2VfdHJ1ZWNvbG9yKSB7CiAJcHRyICs9IHNw cmludGYocHRyLCAiODsyOyVkOyVkOyVkIiwgY29sb3VyID4+IDE2LAogCQkoY29sb3VyID4+IDgp ICYgMHhmZiwgY29sb3VyICYgMHhmZik7CisgICAgfSBlbHNlIGlmIChjb2xvdXIgPiA3ICYmIGNv bG91ciA8PSAyNTUpIHsKKyAgICAgICAgcHRyICs9IHNwcmludGYocHRyLCAiODs1OyVkIiwgY29s b3VyKTsKICAgICB9IGVsc2UKIAkqcHRyKysgPSBjb2xvdXIgKyAnMCc7CiAgICAgc3RyY3B5KHB0 ciwgZmdfYmdfc2VxdWVuY2VzW2ZnX2JnXS5lbmQpOwo= --0000000000006a1537057c89eb2b--