From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 5588 invoked from network); 8 Mar 2023 04:05:09 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 8 Mar 2023 04:05:09 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1678248309; b=jZuLRdIJaETzM2qK/pbdAjxAjzH8rCGAemU2Fpw6F/8+HMfI0rAEUdT6va3eidel10ZehnsuTl H8uSCOX0l4sTxRLv3l/JUl2L6IrRiHMJACw0xtKTk32AQSz/oYbYjqeGrPjsnkiUMuTBiKSAq9 +GPmifenmKgsdxjlKtWJY64vFD0ieXjR5D5AkyILRMcQKAZ+UZ96Enb+xskWXOcDFC71UBXAFq GqIvxIGSGzEHF5uCwvdpjyKkrRgeBwt4w1veCbCc9WauUdefeRUZcbgzbKZLqOAw7MYKq98ycp tyop09DExtMEv2lFzV338Y0thb63ZMzu1OSi+wSPwitLjw==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-oi1-f172.google.com) smtp.remote-ip=209.85.167.172; dkim=pass header.d=gmail.com header.s=20210112 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1678248309; bh=XJGi2cBwlcRUNrmMN7qC57SfzBS1+sHRwdB7W1g9z9M=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Transfer-Encoding:MIME-Version:References: In-Reply-To:Message-ID:Date:Subject:Cc:To:From:DKIM-Signature: DKIM-Signature; b=r2C8uxHHer5ZuB+kixSJ473NdKiVrSVkJ7lM437x+NjnkAxT19eOTDflHfbt+CF7RH3pQ5vRyp LcnCfBqlLNtLo5Wj0coYHMg2LyYLXuT0uzl+MnJVhkrSoDl+2LXWOxsSqK/fiym5kx6kegRJ4p IhyIsfovYZghbB5A3BKwfRkGjh4OZo3hz6diS2vUNEe7TWJcvfUsaMWa6nRk633GPhtKyJsa+i sq2TnfNejJiuzsr1p+Di+XNxVaG1wsm+vmYKsXPUwpUcmZNh/N+8FYf3HO15ENr5cEzJ0sr8lo 7GpV5k6wB2hwlF1cizcYvBlk1Wm3FYIxC1IrOkV94NpnYg==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=uJfvhKh71uJmUmIrMPaWpnyjQtHtgKm+I+q2cFXmmhQ=; b=fcJW4kDOqzoD8eA7S45/AnBH9Z 99xLJND7u5lKATF1AYRoDgJYWzLEzoSOnprbomdhV2q5V7a1C0eUN8Lu2cVAlrZk1fYNtZJyQ1sFL KvMkkxWol5ugE7B8r5pqc+8GCUkpJEg+CwidnCtc3ZE8hy/vli786eXKI2iiz+Fi5t5UJyg0GARHh a+GYPbRUhJBmdEyhpZZr3fjLhSeZEYW+a4Mrb9YyYssAp9cyPNVqjsvZRzq/LU8v2Ek0INb0te/yV JbM8XsFO2aaXoqW1LaVhjHdnyLmd5vhFC2rRXrzhoT1QKGv5XztfaIs1ThSuZqmSUHPabJ2HHdGPm LYhQkB9g==; Received: by zero.zsh.org with local id 1pZl35-0001He-Sm; Wed, 08 Mar 2023 04:05:08 +0000 Authentication-Results: zsh.org; iprev=pass (mail-oi1-f172.google.com) smtp.remote-ip=209.85.167.172; dkim=pass header.d=gmail.com header.s=20210112 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none Received: from mail-oi1-f172.google.com ([209.85.167.172]:45717) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1pZl2p-0000zo-FO; Wed, 08 Mar 2023 04:04:52 +0000 Received: by mail-oi1-f172.google.com with SMTP id t22so11261138oiw.12; Tue, 07 Mar 2023 20:04:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1678248290; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=uJfvhKh71uJmUmIrMPaWpnyjQtHtgKm+I+q2cFXmmhQ=; b=prHUytj5cI7zmqfV/ZSagTpll3HLPNbE5F1AAzCjt8iVQMocrh1xMi5EO0PHjinuSH H5eNKq0Sb92sjt+BqtqiLIqcJntj8BgKFtoAqh8aRTOBlGYUCEA9BIA/h0r3ldf4OlpV KT+PG7ipfDMHSnJD7wmWL9mwFveX33IvMHUUX4TUDQKJ0Is6a7VLKE0p2SGyRwL+ZLFH YN/e5EpYKtSYOqMjos53OuMLMP/gkPUQhBE+pBea62yQ5oGSpnpdggRHU/5EEfhoohYH CCDc6+35RkfHAKAkJZMne3jdTlY34CxfJVzymghUdfxDunUEnnxjb1OgytvQoxbT6gUL xrnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678248290; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=uJfvhKh71uJmUmIrMPaWpnyjQtHtgKm+I+q2cFXmmhQ=; b=XNiBqqn/8vWFQvhmowNc4UXX5bla/tcdpdULWf6pG7Aq3y61EYL9P/gStfReujptA5 D0B+lvBDdPQnR9Bgnm16cylD0nsD1P7cr/0P/8mVHgPYU5RekovXG8YPfpZZseuUb9Z4 RjmdznexXEm4theXejR6XN8Me50N8KjGAcDcZkmGIRwE7tk/0v7YEe9Itvfpwf6R1aKa ZjA1VBUFqK3pppbPMeJ84vC5oUulP6ql+6fpcXBXLwgyQmVBV0oU5b3YGx/ijFz1Wt1l viPeA0hDXZzCA4JiU8yleLVw/BrMJV9igLezbTiwpIEyU0qe2SmucKxFBV6Hatw2jziP VyHA== X-Gm-Message-State: AO0yUKX+MWVIYUonS2QQibJkZDJlIRZKcmpeCqa3jv9ym3G6DmolfoX5 kTORTYM1NbbuZEEFerKVcU89dQhEn0w= X-Google-Smtp-Source: AK7set/WedufJ5jyV9xGWBb1ZZzRxO+KNuVr/cr+9w3oclF/HpAt3tDN9mvXV6ZOYKq16iUM4Zvicg== X-Received: by 2002:a54:4612:0:b0:384:3b35:f741 with SMTP id p18-20020a544612000000b003843b35f741mr7112557oip.35.1678248289728; Tue, 07 Mar 2023 20:04:49 -0800 (PST) Received: from localhost ([2806:2f0:4060:3465:4ae7:daff:fe31:3285]) by smtp.gmail.com with ESMTPSA id bp14-20020a056808238e00b0037d7c3cfac7sm5874767oib.15.2023.03.07.20.04.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Mar 2023 20:04:48 -0800 (PST) From: Felipe Contreras To: zsh-workers@zsh.org Cc: Bart Schaefer , Roman Perepelitsa , Oliver Kiddle , Felipe Contreras Subject: [PATCH v4] prompt: support generic non-visible regions Date: Tue, 7 Mar 2023 22:04:47 -0600 Message-Id: <20230308040447.1576328-1-felipe.contreras@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230228155525.4186428-1-felipe.contreras@gmail.com> References: <20230228155525.4186428-1-felipe.contreras@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Seq: 51535 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: , List-Subscribe: , List-Unsubscribe: , List-Post: List-Owner: List-Archive: readline uses \001 (start of header) and \002 (start of text) as markers to delimit a non-visible character zone, which are necessary to calculate the width of a prompt. In zsh we do this with %{ and %}, but we could support \001 and \002 as well, so that a function which generates output for the prompt can use colors in a way that works for both bash and zsh. This additionally has the benefit of allowing prompts without PROMPT_PERCENT to use colors correctly. Signed-off-by: Felipe Contreras --- Interdiff against v3: diff --git a/Src/prompt.c b/Src/prompt.c index 8d7a38089..2ed90ebe1 100644 --- a/Src/prompt.c +++ b/Src/prompt.c @@ -877,12 +877,12 @@ putpromptchar(int doprint, int endchar) bv->bp += strlen(bv->bp); } } - } else if(*bv->fm == 0x01) { // start non-visible characters + } else if(*bv->fm == 0x01) { /* start non-visible characters */ if (!bv->dontcount++) { addbufspc(1); *bv->bp++ = Inpar; } - } else if(*bv->fm == 0x02) { // end non-visible characters + } else if(*bv->fm == 0x02) { /* end non-visible characters */ if (bv->dontcount && !--bv->dontcount) { addbufspc(1); *bv->bp++ = Outpar; Src/prompt.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Src/prompt.c b/Src/prompt.c index 39fcf5eb7..2ed90ebe1 100644 --- a/Src/prompt.c +++ b/Src/prompt.c @@ -877,6 +877,16 @@ putpromptchar(int doprint, int endchar) bv->bp += strlen(bv->bp); } } + } else if(*bv->fm == 0x01) { /* start non-visible characters */ + if (!bv->dontcount++) { + addbufspc(1); + *bv->bp++ = Inpar; + } + } else if(*bv->fm == 0x02) { /* end non-visible characters */ + if (bv->dontcount && !--bv->dontcount) { + addbufspc(1); + *bv->bp++ = Outpar; + } } else { char c = *bv->fm == Meta ? *++bv->fm ^ 32 : *bv->fm; -- 2.39.2