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=-1.0 required=5.0 tests=MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 3418 invoked from network); 10 May 2020 05:59:35 -0000 Received-SPF: pass (primenet.com.au: domain of zsh.org designates 203.24.36.2 as permitted sender) receiver=inbox.vuxu.org; client-ip=203.24.36.2 envelope-from= Received: from ns1.primenet.com.au (HELO primenet.com.au) (203.24.36.2) by inbox.vuxu.org with ESMTPUTF8; 10 May 2020 05:59:35 -0000 Received: (qmail 5187 invoked by alias); 10 May 2020 05:59:19 -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: 45805 Received: (qmail 25510 invoked by uid 1010); 10 May 2020 05:59:19 -0000 X-Qmail-Scanner-Diagnostics: from mail-oi1-f196.google.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.102.2/25801. spamassassin: 3.4.4. Clear:RC:0(209.85.167.196):SA:0(-1.9/5.0):. Processed in 1.986363 secs); 10 May 2020 05:59:19 -0000 X-Envelope-From: schaefer@brasslantern.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 209.85.167.196 as permitted sender) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=zkyg1X5mU7vQfCH0P2qj7aGSJIjqvUeKvtJU2FH4PxM=; b=GJAjztx0/4vPbVoNt+JQVWlkVaZkb1y9OcNFxQWGMzWx6OAgZd4zjGPS3BdJtnRKeu oUyFiVAhd5mQq5s0Jr0vlpwZ518RNCxHTDXUCJaLmU695rhFrLs9XWHEYmkqT/8Wf1zo h7nqYvChqXEqIchMzTe5I3dS27bE3AozvreAdOgJiGoQOe7TBcaMmb52VKV8TBT/9AAn xjLQvvyJgI7pilVqZ5QHfDtY305aoIRGS8fGmICQI49j2L3Wp0AFWz89ctcH6MNtEwDv 8dc4cwlCOXLG9DptrpniJikJuwHnzPsJqwHCjrctUzVVMNh+tiuNW3MhqupG0HwdlBTZ guPA== X-Gm-Message-State: AGi0PuYGr0+T1a0gy5l8f08jKnCZRISvHc0Ej6dFArx7daHhRX6UOOeq jwSWul/QWSyIGnX3xhLYnOMFs8gWoErkOrxySqxI0A== X-Google-Smtp-Source: APiQypICq1FN7D7XSrj1775c3D0ltjMGj5kZAkP7x7g3EU+NyKH4k37RqUuAd5wkZ/vt1hlRsU+bduD4YO3zwgKnsSI= X-Received: by 2002:aca:ac84:: with SMTP id v126mr16197193oie.132.1589090323459; Sat, 09 May 2020 22:58:43 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Bart Schaefer Date: Sat, 9 May 2020 22:58:32 -0700 Message-ID: Subject: Re: [PATCH] expand '..n' to equivalent number of '..' segments in fixdir To: Roman Perepelitsa Cc: Dian M Fay , Zsh hackers list Content-Type: text/plain; charset="UTF-8" On Sat, May 9, 2020 at 9:44 PM Roman Perepelitsa wrote: > > On Sun, May 10, 2020 at 6:36 AM Dian M Fay wrote: > > > > dian@lamia ~/work/zsh cd ..2 > > dian@lamia ~ cd ..123 > > dian@lamia / > > `..2` is a valid directory name. So it's a breaking change. It can also be implemented as a shell function wrapper around "cd", so it's not necessary to modify the C code. Here's the basics, minus necessary handling for other cd options. cd() { emulate -L zsh -o extendedglob -o histsubstpattern while [[ $1 = (#b)((#s)(|*/)..(<->)(/*|)(#e)) ]] do local dots=${(j:/:)${:-{1..${match[3]}}}//<->/..} set -- ${1:s,${~match[1]},${match[2]}${dots}${match[4]}} done echo builtin cd $* }