From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8752 invoked by alias); 29 Apr 2016 11:34:45 -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: 38356 Received: (qmail 11428 invoked from network); 29 Apr 2016 11:34:43 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham autolearn_force=no version=3.4.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to; bh=IM3TtUo9GBG9OCoAeA9r4T8Ay0yxIWT1tezJkezM3B0=; b=EjgS3ZRRccTaTTjBeTeeCsF3ef4HK0lEJw56iCFPgmcbhFmUpkTJFD//2BfmJ7/BsS vhhR6/XddHIsWNvKVSR5qms+UzImq9aUtg+svYXeXuA7LiuHPb+1VFjE6UfTFF8sxIpw LZBd0HEP3eAJ1okWTaWkDqXpiesn1CbZhmoFho+OKXugdIpzwWfieYZMbFefSc8qMdIJ 7zVTR5XB6vU6s8Mz/T5KV3ZZV1MMD3I7KGCrTDdqsg6uRyTydnkz1Q52m87JfKN2ISsh psjBCrACSt4XszZ3s0NydzcgeiHD8otQ6NEz7CJQYI8M8r6fR+20mQw1u/xCIvhYis7a dZEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=IM3TtUo9GBG9OCoAeA9r4T8Ay0yxIWT1tezJkezM3B0=; b=Nn22BXxAilm9lTYvj8LlwbG6ciZzmw7ax1wM1063MsncUuRuTBWU8YFkXoGm+3mcf6 rJZ5zyZQqFJ9qjP18MS66UizOjEOPGQKXYMBVL2OGmrP6WblabiQ//6IXtB0xqkAQmRI N4keoHoUi4EhoNOM4oftmfGxNBXrHuHXZUK0ehOZMDLR4YvHbXri9CwX38JdLXHOEA1M wy5jfX44jHpV8SLOcH5y/4nd3NEI1vUL9P1W/SlWymmKeGXTWhl0sGAB0xpngDBxU+bQ pitUiToLwN1A1dUGYjLALCPKT4Ynfz65aFrlNbMzQxTU0ivgwH9TaD1dZ+qqJNqsDz2e 3e8g== X-Gm-Message-State: AOPr4FXXt2iCZ5V14Bv+nj7VPy4NASOS/0UbZsUK1VwEWW0U37VdsXm3c9IJLcrdlhVMFjXhk8Ik7i+A+MjQlA== X-Received: by 10.112.160.35 with SMTP id xh3mr8273825lbb.86.1461929678890; Fri, 29 Apr 2016 04:34:38 -0700 (PDT) MIME-Version: 1.0 From: Sebastian Gniazdowski Date: Fri, 29 Apr 2016 13:34:19 +0200 Message-ID: Subject: Support for 256 colors in zsh/curses To: Zsh hackers list Content-Type: multipart/mixed; boundary=001a11c33f1032ece305319e075d --001a11c33f1032ece305319e075d Content-Type: text/plain; charset=UTF-8 Hello, the existing infrastructure in zsh/curses is quite nice. If user requests color pair "a/b", it is first looked up in a hash table: !(cpn = (Colorpairnode) gethashnode2(zcurses_colorpairs, colorpair))) { if it doesn't exist, then "x/y" (e.g. "red/black") is translated to corresponding integers, and init_pair is called: if (next_cp >= COLOR_PAIRS || init_pair(next_cp, f, b) == ERR) { where "f" and "b" are the translated integers. The color pair is put into the hash under "x/y" for future reuse. To support 256 colors, all I had to do is translate num1/num2 into f=num1, b=num2, i.e. just directly (classic atoi) translate color number into integer to be passed to curses as its color number. Not sure what else can I write, reading the code will reveal how transparent the change is. Any questions maybe? Best regards, Sebastian Gniazdowski --001a11c33f1032ece305319e075d Content-Type: text/plain; charset=US-ASCII; name="zshcurses_256colors.patch.txt" Content-Disposition: attachment; filename="zshcurses_256colors.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_inln5s0t0 ZGlmZiAtLWdpdCBhL0RvYy9ac2gvbW9kX2N1cnNlcy55byBiL0RvYy9ac2gvbW9kX2N1cnNlcy55 bwppbmRleCA4MTA0NTcyLi4zOTBmY2U4IDEwMDY0NAotLS0gYS9Eb2MvWnNoL21vZF9jdXJzZXMu eW8KKysrIGIvRG9jL1pzaC9tb2RfY3Vyc2VzLnlvCkBAIC0xMTEsNyArMTExLDEwIEBAIEVhY2gg dmFyKGZnX2NvbCl0dCgvKXZhcihiZ19jb2wpIGF0dHJpYnV0ZSAodG8gYmUgcmVhZCBhcwogZm9y IGNoYXJhY3RlciBvdXRwdXQuICBUaGUgY29sb3IgdHQoZGVmYXVsdCkgaXMgc29tZXRpbWVzIGF2 YWlsYWJsZQogKGluIHBhcnRpY3VsYXIgaWYgdGhlIGxpYnJhcnkgaXMgbmN1cnNlcyksIHNwZWNp ZnlpbmcgdGhlIGZvcmVncm91bmQKIG9yIGJhY2tncm91bmQgY29sb3Igd2l0aCB3aGljaCB0aGUg dGVybWluYWwgc3RhcnRlZC4gIFRoZSBjb2xvciBwYWlyCi10dChkZWZhdWx0L2RlZmF1bHQpIGlz IGFsd2F5cyBhdmFpbGFibGUuCit0dChkZWZhdWx0L2RlZmF1bHQpIGlzIGFsd2F5cyBhdmFpbGFi bGUuIFRvIHVzZSBtb3JlIHRoYW4gdGhlIDggbmFtZWQKK2NvbG9ycyAocmVkLCBncmVlbiwgZXRj LikgY29uc3RydWN0IHRoZSB2YXIoZmdfY29sKXR0KC8pdmFyKGJnX2NvbCkKK3BhaXJzIHdpdGgg bnVtYmVycyBpbiB0aGVtLCBlLmcgdHQoMTI4LzIwMCkuIE1heGltdW0gY29sb3IgbnVtYmVyIGlz CisyNTQgaWYgdGVybWluYWwgc3VwcG9ydHMgMjU2IGNvbG9ycy4KIAogdHQoYmcpIG92ZXJyaWRl cyB0aGUgY29sb3IgYW5kIG90aGVyIGF0dHJpYnV0ZXMgb2YgYWxsIGNoYXJhY3RlcnMgaW4gdGhl CiB3aW5kb3cuICBJdHMgdXN1YWwgdXNlIGlzIHRvIHNldCB0aGUgYmFja2dyb3VuZCBpbml0aWFs bHksIGJ1dCBpdCB3aWxsCmRpZmYgLS1naXQgYS9TcmMvTW9kdWxlcy9jdXJzZXMuYyBiL1NyYy9N b2R1bGVzL2N1cnNlcy5jCmluZGV4IDdmZmY4NTguLjYzYzY3NDggMTAwNjQ0Ci0tLSBhL1NyYy9N b2R1bGVzL2N1cnNlcy5jCisrKyBiL1NyYy9Nb2R1bGVzL2N1cnNlcy5jCkBAIC0zNTAsOCArMzUw LDIwIEBAIHpjdXJzZXNfY29sb3JnZXQoY29uc3QgY2hhciAqbmFtLCBjaGFyICpjb2xvcnBhaXIp CiAJfQogCiAJKmJnID0gJ1wwJzsgICAgICAgIAotCWYgPSB6Y3Vyc2VzX2NvbG9yKGNwKTsKLQli ID0gemN1cnNlc19jb2xvcihiZysxKTsKKworICAgICAgICAvLyBjcC9iZyBjYW4gYmUge251bWJl cn0ve251bWJlcn0gb3Ige25hbWV9L3tuYW1lfQorCisgICAgICAgIGlmKCBjcFswXSA+PSAnMCcg JiYgY3BbMF0gPD0gJzknICkgeworICAgICAgICAgICAgZiA9IGF0b2koY3ApOworICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgZiA9IHpjdXJzZXNfY29sb3IoY3ApOworICAgICAgICB9CisK KyAgICAgICAgaWYoIChiZysxKVswXSA+PSAnMCcgJiYgKGJnKzEpWzBdIDw9ICc5JyApIHsKKyAg ICAgICAgICAgIGIgPSBhdG9pKGJnKzEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg YiA9IHpjdXJzZXNfY29sb3IoYmcrMSk7CisgICAgICAgIH0KIAogCWlmIChmPT0tMiB8fCBiPT0t MikgewogCSAgICBpZiAoZiA9PSAtMikK --001a11c33f1032ece305319e075d Content-Type: application/octet-stream; name=cursescolors Content-Disposition: attachment; filename=cursescolors Content-Transfer-Encoding: base64 X-Attachment-Id: f_inln5s181 IyEvdXNyL2xvY2FsL2Jpbi96c2gtNS4yLWRldi0xCgp6bW9kbG9hZCB6c2gvY3Vyc2VzCgp6Y3Vy c2VzIGluaXQKCnpjdXJzZXMgYmcgc3Rkc2NyIDEwLzEyIEBfCmZvciAoKCBpID0gMDsgaSA8PSAy NjA7IGkgKysgKSk7IGRvCiAgICB6Y3Vyc2VzIGF0dHIgc3Rkc2NyICRpL2JsYWNrCiAgICB6Y3Vy c2VzIHN0cmluZyBzdGRzY3IgJGkiICIKZG9uZQoKemN1cnNlcyByZWZyZXNoIHN0ZHNjcgp6Y3Vy c2VzIGlucHV0IHN0ZHNjcgp6Y3Vyc2VzIGVuZAo= --001a11c33f1032ece305319e075d--