From 20130d89dc2c33faefd4e3bec9acbbe2e2cded0b Mon Sep 17 00:00:00 2001 From: ridiculousfish Date: Wed, 29 Jan 2014 15:42:52 -0800 Subject: [PATCH] Support for escaped colons in makefile targets in __fish_print_make_targets, as part of #1259 --- share/functions/__fish_print_make_targets.fish | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/share/functions/__fish_print_make_targets.fish b/share/functions/__fish_print_make_targets.fish index 5be984b8c..8848f2701 100644 --- a/share/functions/__fish_print_make_targets.fish +++ b/share/functions/__fish_print_make_targets.fish @@ -1,8 +1,15 @@ function __fish_print_make_targets - set files Makefile makefile GNUmakefile # Some seds (e.g. on Mac OS X), don't support \n in the RHS # Use a literal newline instead # http://sed.sourceforge.net/sedfaq4.html#s4.1 - sgrep -h -E '^[^#%=$[:space:]][^#%=$]*:([^=]|$)' $files ^/dev/null | cut -d ":" -f 1 | sed -e 's/^ *//;s/ *$//;s/ */\\ + # The 'rev | cut | rev' trick removes everything after the last colon + for file in GNUmakefile Makefile makefile + if test -f $file + sgrep -h -o -E '^[^#%=$[:space:]][^#%=$]*:([^=]|$)' $file ^/dev/null | rev | cut -d ":" -f 2- | rev | sed -e 's/^ *//;s/ *$//;s/ */\\ /g' ^/dev/null + # On case insensitive filesystems, Makefile and makefile are the same; stop now so we don't double-print + break + end + end end +