From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9346 invoked by alias); 29 Apr 2012 16:22:59 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: X-Seq: 17041 Received: (qmail 18814 invoked from network); 29 Apr 2012 16:22:45 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.2 Received-SPF: pass (ns1.primenet.com.au: SPF record at benizi.com designates 64.130.10.15 as permitted sender) Date: Sun, 29 Apr 2012 12:22:16 -0400 (EDT) From: "Benjamin R. Haskell" To: Zsh Users Subject: Command not found handler for non-searched commands? Message-ID: User-Agent: Alpine 2.01 (LNX 1266 2009-07-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII I use autocd quite a bit. And often the first thing I want to do when starting a new project is to create a directory and cd into it. I tried creating the following command_not_found_handler: command_not_found_handler () { local dir create echo HEREIAM >&2 (( $# == 1 )) || return 1 [[ $1 == */* ]] || return 1 dir=$1 read -q "create?Create $dir [y/N]? " || return 1 mkdir -p $dir || return 1 cd $dir } But, it doesn't get called when I need it: ## when I don't need it: $ fake-command-here HEREIAM zsh: command not found: fake-command-here ## when I do need it: $ ~/tmp/one-off-project zsh: no such file or directory: /home/bhaskell/tmp/one-off-project I see from the description of how commands are found that it won't get called when there's a slash in the command. Is there a way to force it? Otherwise, is there another, easy way to accomplish my goal? -- Best, Ben