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.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 4517 invoked from network); 17 May 2023 22:13:56 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 17 May 2023 22:13:56 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1684361636; b=eN9peekQ/NfgO4P0u9B+2beQqXOsYtWFFEqQhwbHCU4PopctWwY0P2uDSKAIWXIF8kQvFqo4DU WbLXdA4bWlrS5iniuA5M7IprTg0hFN9sEgah43xpDofU1vc1rgfN5X1NlfuCjBp5DHisVdDXds IUjKrjGrD0YG/Oyck50vJdixwtRBwmq65UkG3LPEFPWAz/ejgx8EQ/rL/eqDE8z3baplUnTVfq DN8ruN6EAzhLihSb5mBBiG+cagUaK0oo+Xbldp+STHTM66NwHSlwe8B9IR971h3z1yQSiTovDe HgWC4i1huuY7pUa6V4DnFm+xziNlap4RwvSGZJ8eTsgbgw==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (s1.jo-so.de) smtp.remote-ip=37.221.195.157; dmarc=none header.from=jo-so.de; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1684361636; bh=igaOL5aI9LbRg3henGbkZUvpKL4c92XB0c0idQATUvo=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Transfer-Encoding:MIME-Version:Message-ID:Date: Subject:Cc:To:From:DKIM-Signature; b=AnLO3qip9T4ULq5cYcxGbxhW/5tGcdMNC+AVd69fmRP4RKW0SR8UdrEumDpFLRgec+d7/OkX9Y 7Iiy2GK9VV1QJdmN9ydJuXCNfYqqUpwrJYNRFmZVzh6ya9yp4ppEJHGezZUHAaXwZ/piqUHVc/ xKX48I+VJSnW3nxf7faWnkX9hZHrVMRptA/Dq59JS9OBdF3SEMwdOUfYhQ7GPAQhS8nccLPPYY 4jwHgJ7BMwzb5f4RjsMqbwJUluqXjQOV1IWalMe9KVUr7gh9muJ+2SgL5yD4deJLKrpf52dt8h P5z8u7V/Pl+47UTybC5JzoDF/2Lt+CW3a9edcjobbhl0eA==; 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: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:In-Reply-To:References; bh=82qm70nOr495HBHxanGr/b4yfnfOUsV3FHCo//9nF0I=; b=OXcOWObBlneR9Hfz0P1xQ2NbBb /3T/vKe+UtCGBJHzmRytu2h+reVSgpziWyWLp98gAaYm7sCoP6ETfYSynBGHB6gFGQRw0KloED0HE B8CNs2CMchw4DspfbgRgpWZSJOL1XVIvgEDmoINW1gd21ivakx6CLvQrFNMXu01fSYniWeec6/Sad aNigZhyN0dA7gi64JtpGNrofTbzVbHugAcBIs01vTFmxouxpNUkzpPxh6Sj5pWqXVgzAr0FrJVa3e VqTCgqziawBMI0iMIFoWMQsImTgCMJMF8clxZd6hoF3WULpZ+uOHpskO2E/ZpXjUGtF4PREVmMO3x RxgyuBew==; Received: by zero.zsh.org with local id 1pzPP9-0008Xx-Bl; Wed, 17 May 2023 22:13:55 +0000 Authentication-Results: zsh.org; iprev=pass (s1.jo-so.de) smtp.remote-ip=37.221.195.157; dmarc=none header.from=jo-so.de; arc=none Received: from s1.jo-so.de ([37.221.195.157]:54921) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_256_GCM_SHA384:256) id 1pzPOl-0008Eg-Bd; Wed, 17 May 2023 22:13:35 +0000 Received: from mail-relay (helo=jo-so.de) by s1.jo-so.de with local-bsmtp (Exim 4.94.2) (envelope-from ) id 1pzPOk-0001Lm-Fh for zsh-workers@zsh.org; Thu, 18 May 2023 00:13:30 +0200 Received: from joerg by zenbook.jo-so.de with local (Exim 4.96) (envelope-from ) id 1pzPOj-005QfA-2W; Thu, 18 May 2023 00:13:29 +0200 From: =?UTF-8?q?J=C3=B6rg=20Sommer?= To: zsh-workers@zsh.org Cc: =?UTF-8?q?J=C3=B6rg=20Sommer?= Subject: [PATCH 1/4] run-help: Support variables in aliases Date: Thu, 18 May 2023 00:12:44 +0200 Message-Id: <2322b9b9b46c585516c4347ad3b07a9db26f0a7f.1684361567.git.joerg@jo-so.de> X-Mailer: git-send-email 2.40.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Seq: 51746 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: If the alias definition starts with a variable assignment, run-help fails, because it sees the variable assignment as command. Hence, skip all variable assignments and noglob|nocorrect thereafter. Example: % alias LCC='LC_ALL=C' % alias T='LCC true' % run-help T --- Functions/Misc/run-help | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/Functions/Misc/run-help b/Functions/Misc/run-help index 462044b72..438f76122 100644 --- a/Functions/Misc/run-help +++ b/Functions/Misc/run-help @@ -56,13 +56,28 @@ do [[ -n $noalias && $what = *" is an alias "* ]] && continue builtin print -r $what case $what in - (*( is an alias for (noglob|nocorrect))*) - [[ ${what[(w)7]:t} != ${what[(w)1]} ]] && - run_help_orig_cmd=${what[(w)1]} run-help ${what[(w)7]:t} ${(z)${what[(w)8,-1]}} - ;; (*( is an alias)*) - [[ ${what[(w)6]:t} != ${what[(w)1]} ]] && - run_help_orig_cmd=${what[(w)1]} run-help ${what[(w)6]:t} ${(z)${what[(w)7,-1]}} + local expansion=( ${${=what}[6,-1]} ) + while true + do + if [[ $expansion[1] == *=* ]] + then + shift expansion + elif [[ $expansion[1] == (noglob|nocorrect) ]] + then + shift expansion + break + elif [[ $expansion[1] != $1 ]] && alias $expansion[1] >/dev/null + then + expansion=( ${=$(builtin whence $expansion[1])} $expansion[2,-1] ) + else + break + fi + done + + expansion[1]=$expansion[1]:t + [[ $expansion[1] != ${what[(w)1]} ]] && + run_help_orig_cmd=${what[(w)1]} run-help $expansion[@] ;; (*( is a * function)) case ${what[(w)1]} in -- 2.40.1