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, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 31794 invoked from network); 3 Aug 2022 00:56:13 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 3 Aug 2022 00:56:13 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1659488173; b=jreZl4ZM4R0gVfbZ+L5Uhy/x0zUDROu1S/Y2RlaIhVto6/RiP0uy4/kXIEug2bX+p7WZdu/eVn 1EWB1YEDCe5e51naUQqyKg0Kf0JxaKL+4Xo4OLPTuQ+O48idvkDSjVufz0RqMaJtQk5/IScNWT vkupiEMKjmwD/jkfnbFXKrFzboBuItFQIhPYAew8SCmP0TVxfdB2Q4mQ7I6NJlSP1g2VtIG4qV ECqe27aW5AwKMgzdi4uG6vvM3lz2TRsP9Mz1tK/4WBy1xaSHkG6Z/NjmKqy0kqiW3NaYGAgtik vO4KKOrDiAkyHpuBpEVtrBf8JTsc9gGABiLMOutvV+XecQ==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-ed1-f48.google.com) smtp.remote-ip=209.85.208.48; 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=1659488173; bh=FBmgj39H/7vqM8zX/tOYynkpRPfozUUAyZuijCgwlww=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:To:Subject:Message-ID:Date:From:MIME-Version: DKIM-Signature:DKIM-Signature; b=LLpnOKu362T7m1ZB37NgGHBv9F9lpJYB6ADlK2uYfey3N4HpdADfKW1L0gZ3MLWkaWGeYpAhmO /9GmihEh8p/zmqIO1i2YRqhPY9+CHBDFxhMB1EnX2m2lsDNKbPiDKG+9/8eaKdNOp3wGcV4j7y ul2foVjwXDzA0N55ncY+WZx9Bt52oZFyX7U+I7DAD29t+WN/SRQ2pZFBXTmi5bXXIadYTMv5Hi 7N4VugioYxPw1yQxM75bJv8y18+c/4BXRpNtpxN3bsTiwgNWaDxHn1RgDXPJhmZM+lLlj0/PHK 5w3ZDC29cnVwN5ltShi91GxwpWB0xfkDJVTzx+tt8H5uvA==; 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-Type:To:Subject:Message-ID: Date:From:MIME-Version:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References; bh=Gm3bsZtpJ4m7rxsm2dvGBWtKV2s264EQLVeCjQNMeR4=; b=TGEs9W20GpGPw/TTKpbofNiIV4 wOlydta5Hd6gF9OyYuW4iYTcyV6NZZhpx4ttmA16lcCNKvYBTDzkMLvBTp8f7PrN92l8KTI+VZlcV pPX0REFdkysea49VaF3HjVY2BdJvFOx6t0D9x6XNxv2um5Ju24aEY7C86xU9VFWdO6f5uPk5t0Yxa WtvEPUtOyd0r+bTPNqs85P+UdZUhwSUDcf48xdrG3WxjNxNLa2AWHqzEzFNsviCj+UUBN2Lmppw20 0PqazsNkXhXwyTW1A3B0Z0oCmFEwXbPxNHDwX6gXWjpQ7UJoL8r65HkzR7f1Ua6yAklrTy9+5fr58 RUcYiFww==; Received: from authenticated user by zero.zsh.org with local id 1oJ2gG-0009BT-Lc; Wed, 03 Aug 2022 00:56:12 +0000 Authentication-Results: zsh.org; iprev=pass (mail-ed1-f48.google.com) smtp.remote-ip=209.85.208.48; dkim=pass header.d=gmail.com header.s=20210112 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none Received: from mail-ed1-f48.google.com ([209.85.208.48]:43617) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1oJ2fE-0008UV-4V; Wed, 03 Aug 2022 00:55:08 +0000 Received: by mail-ed1-f48.google.com with SMTP id o22so4146328edc.10 for ; Tue, 02 Aug 2022 17:55:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:mime-version:from:to:cc; bh=Gm3bsZtpJ4m7rxsm2dvGBWtKV2s264EQLVeCjQNMeR4=; b=MkxaZ+X0K+JUBEBAuKXdB7ag9uxPnnTtzCy+ib3GQp6f92WwzV+iIRQVIRzs6p0b7l Uv/gLb0FekCbFCz2D18oSAF+092b4nQTvkujkIBMhaLEdiMlB/pT4r5kbD0yzBXqLa3b zfOt/pYmqfmQfnPRqdIOCqXd+ncuCYMBxAdJzntswtWTkBgyem2v9Ptql9/z7ePU2jXi abaGzfYtiEtlgoCeK6dvGezKxh9sU5VVnxwSWSYMCP1QBmJXFmNMBnimjP8RmB5GKUpn hFfCr4y5vpGzlB4YUmfMo+e7vha8KVl0ZwRrRY2q2FB2GvGuRq0Y/1f9YcEdmiUJCK2a qvow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc; bh=Gm3bsZtpJ4m7rxsm2dvGBWtKV2s264EQLVeCjQNMeR4=; b=T4WrlRCTP9zWfOH2hp9D9pDRYjUJgZCpf+pCZGgSKwfwrfuoafJHeHfUt8Tq+VcN7S 5nfujDt5KA/O7BitVf5sDddu5n2847FMRgl6YIgmctcUrq9kg8hh3oJfhLkoWTWL+0mu 5skPACpJo9XfM9vlmqdk1abAeruS0k2MPgquY6pa1mA/9T5E0TQCBzxODHd0Uaw16Y1Z 22WCzyQWjA/Cs17UsqRhJoz39P+qAIMEjtGr7S1+jDvF4roLEfH8GQD5mtYqMCz4glxn CXXtky5vwFCKN4A8VXpt6krIuP2jeHvG4HhdCc38uD+qUm98oF8cjsBV7rnJZ21zhHXv 8IRA== X-Gm-Message-State: ACgBeo2sbXVe9n24Vk9FayY4r3AiECwKZwLdbEbAy6NYCrknl4+MsYaE 8GK4Wx1v4+O4sU9dU44PMnAjFfEionqBdTelg6EviHwb1Ws= X-Google-Smtp-Source: AA6agR5gD+OVVabs7Y57YqiQYMh95XUDrrdqYDU4pNDPZEdUCDltU9JADz/JAHkUPCjIFXxYoZ/siZo2LXcqiIbIxSc= X-Received: by 2002:a05:6402:329b:b0:43d:bd4b:2f08 with SMTP id f27-20020a056402329b00b0043dbd4b2f08mr10102606eda.244.1659488107630; Tue, 02 Aug 2022 17:55:07 -0700 (PDT) MIME-Version: 1.0 From: Felipe Contreras Date: Tue, 2 Aug 2022 19:54:56 -0500 Message-ID: Subject: Simple make completion that just works To: Zsh Users Content-Type: text/plain; charset="UTF-8" X-Seq: 27926 Archived-At: X-Loop: zsh-users@zsh.org Errors-To: zsh-users-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-users-request@zsh.org X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: Hi, A long time ago I had a problem with the completion of the make command that made me write a hack to workaround it. I've been using that hack for several years (maybe a decade), and it turns out it works perfectly fine and I don't need anything else. I decided to clean it up, and the result is rather clean, so I've decided to share it. Unlike the official completion this uses the make command to generate the list of targets and *only* completes those targets. It's possible to configure the official completion to use the make command, but it's buggy, slow, and then it will complete all the files, regardless of whether or not they are in the Makefile. Sure, my little script doesn't show any options or help, but I don't need them, all I want is 'make ' to work quickly and correctly. You might find it useful too. Cheers. #compdef make _make_parse () { awk -v RS= -F: -v PRX="$1" '!match($1, "^" PFX) { next } $1 ~ /^[^#%]+$/ { print $1 }' } local -a targets cmd=(${words[1,CURRENT-1]}) local cur=$words[CURRENT] prev=$words[CURRENT-1] local ret=1 if [[ "$prev" == -[CI] ]]; then _files -/ && ret=0 else targets=($($cmd -npq : 2> /dev/null | _make_parse "$cur")) _multi_parts -f -- / targets && ret=0 fi return ret -- Felipe Contreras