From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3150 invoked by alias); 10 Nov 2016 09:10:17 -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: 39900 Received: (qmail 19799 invoked from network); 10 Nov 2016 09:10:17 -0000 X-Qmail-Scanner-Diagnostics: from mail-wm0-f50.google.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(74.125.82.50):SA:0(0.0/5.0):. Processed in 0.416207 secs); 10 Nov 2016 09:10:17 -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=0.0 required=5.0 tests=FREEMAIL_FROM,SPF_PASS, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.1 X-Envelope-From: layus.on@gmail.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: pass (ns1.primenet.com.au: SPF record at _netblocks.google.com designates 74.125.82.50 as permitted sender) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=kMFFWOC6svQe0phDikQ1tmVFuXWB8abYO3HskrAmc1Q=; b=nMEQQfEq+TSBp19bMXP8EJf/7lmhMu2wmtVrWAxkVPhXPDSSc4Fz/LXhMZo6r5a9Gp 6Iykakcd3vkOngIGQ3gk5BhRJCYHGa1uU20xqpVr2IdohBPajcn2j4s4TIgJ2Rq7/9dD xjNoAnHtcU0V9hqQlCN6LqWDFGfg39AX59rfoK44i0rQJ4FE0r0u/ph1JFS5T+/P1ADC 6pGrkm91QDSnrBCgne5QwgMNfz0Oo0g2ynZC2mOsb9xcZPXAGPKl4Sqp01wL5Mz0fjFa to5VdD7/jxMKYzFDqPD4ky0kjIhJwd5y1I8U3WIaG6KcF9Erzfxczuykh2UXOLuagbEb 8vmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=kMFFWOC6svQe0phDikQ1tmVFuXWB8abYO3HskrAmc1Q=; b=hTJBbZXfrSgPnALfcBo8kZmcv3CK7ACfDYCXvrwfA2FjwEuiZw00Pj6FuogtP3OyH0 KumwH7LdhAlEN8z/K9qNrvJwLnaKFJBWIutcQ85QmS6+cPIo93BASD6vSuoPcDUdp47I Cddj/fNjyGLhf1hYcoUh9S70dDGOYSF/uKck/MGFL4TOhhnSkbHHbrLoa3dTcns5n51z 67e+p6V5rj1VY/jw5DgSUz3DXLGSo3cK3zjTAJGhCiY6Tsa9Qb4xFsgnp+8jyx3hBvzx ctm3h7CPqaKZSKa0OXAXUurXTgSkdXsi3I8Qtz3y6wGr7txl+x4kAERUWtDSduIwF/IK j9Cg== X-Gm-Message-State: ABUngveUusHb0REwD+e9/tPz+zp7HBZesJRfR8KzRTcjgAHB4lGSkMi1+ooGwD8JAGt0Ow== X-Received: by 10.28.15.138 with SMTP id 132mr1123361wmp.41.1478708139360; Wed, 09 Nov 2016 08:15:39 -0800 (PST) From: Guillaume Maudoux To: zsh-workers@zsh.org Cc: Guillaume Maudoux Subject: [PATCH] make TERMINFO_DIRS variable special Date: Wed, 9 Nov 2016 17:14:33 +0100 Message-Id: <20161109161433.12584-2-layus.on@gmail.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20161109161433.12584-1-layus.on@gmail.com> References: <12935.1478707087@hydra.kiddle.eu> <20161109161433.12584-1-layus.on@gmail.com> --- Doc/Zsh/params.yo | 16 ++++++++++++---- Src/params.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/Doc/Zsh/params.yo b/Doc/Zsh/params.yo index c7d84b9..d9f7103 100644 --- a/Doc/Zsh/params.yo +++ b/Doc/Zsh/params.yo @@ -1485,10 +1485,18 @@ take effect. ) vindex(TERMINFO) item(tt(TERMINFO) )( -A reference to a compiled description of the terminal, used by the -`terminfo' library when the system has it; see manref(terminfo)(5). -If set, this causes the shell to reinitialise the terminal, making -the workaround `tt(TERM=$TERM)' unnecessary. +A reference to your terminfo database, used by the `terminfo' library when the +system has it; see manref(terminfo)(5). +If set, this causes the shell to reinitialise the terminal, making the +workaround `tt(TERM=$TERM)' unnecessary. +) +vindex(TERMINFO_DIRS) +item(tt(TERMINFO_DIRS) )( +A colon-seprarated list of terminfo databases, used by the `terminfo' library +when the system has it; see manref(terminfo)(5). This variable seems specific +to ncurses. Again, see manref(terminfo)(5) to check support on your system. +If set, this causes the shell to reinitialise the terminal, making the +workaround `tt(TERM=$TERM)' unnecessary. ) vindex(TIMEFMT) item(tt(TIMEFMT))( diff --git a/Src/params.c b/Src/params.c index 19a8c29..92b8ac1 100644 --- a/Src/params.c +++ b/Src/params.c @@ -87,6 +87,7 @@ char *ifs, /* $IFS */ *postedit, /* $POSTEDIT */ *term, /* $TERM */ *zsh_terminfo, /* $TERMINFO */ + *zsh_terminfodirs, /* $TERMINFO_DIRS */ *ttystrname, /* $TTY */ *pwd; /* $PWD */ @@ -208,6 +209,8 @@ static const struct gsu_scalar term_gsu = { termgetfn, termsetfn, stdunsetfn }; static const struct gsu_scalar terminfo_gsu = { terminfogetfn, terminfosetfn, stdunsetfn }; +static const struct gsu_scalar terminfodirs_gsu = +{ terminfodirsgetfn, terminfodirssetfn, stdunsetfn }; static const struct gsu_scalar wordchars_gsu = { wordcharsgetfn, wordcharssetfn, stdunsetfn }; static const struct gsu_scalar ifs_gsu = @@ -283,6 +286,7 @@ IPDEF2("histchars", histchars_gsu, PM_DONTIMPORT), IPDEF2("HOME", home_gsu, PM_UNSET), IPDEF2("TERM", term_gsu, PM_UNSET), IPDEF2("TERMINFO", terminfo_gsu, PM_UNSET), +IPDEF2("TERMINFO_DIRS", terminfodirs_gsu, PM_UNSET), IPDEF2("WORDCHARS", wordchars_gsu, 0), IPDEF2("IFS", ifs_gsu, PM_DONTIMPORT | PM_RESTRICTED), IPDEF2("_", underscore_gsu, PM_DONTIMPORT), @@ -4511,6 +4515,33 @@ terminfosetfn(Param pm, char *x) term_reinit_from_pm(); } +/* Function to get value of special parameter `TERMINFO_DIRS' */ + +/**/ +char * +terminfodirsgetfn(UNUSED(Param pm)) +{ + return zsh_terminfodirs ? zsh_terminfodirs : dupstring(""); +} + +/* Function to set value of special parameter `TERMINFO_DIRS' */ + +/**/ +void +terminfodirssetfn(Param pm, char *x) +{ + zsfree(zsh_terminfodirs); + zsh_terminfodirs = x; + + /* + * terminfo relies on the value being exported before + * we reinitialise the terminal. This is a bit inefficient. + */ + if ((pm->node.flags & PM_EXPORTED) && x) + addenv(pm, x); + + term_reinit_from_pm(); +} /* Function to get value for special parameter `pipestatus' */ /**/ -- 2.10.1