From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13406 invoked by alias); 8 Jan 2018 10:22:12 -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: 42245 Received: (qmail 18406 invoked by uid 1010); 8 Jan 2018 10:22:12 -0000 X-Qmail-Scanner-Diagnostics: from mailout1.w1.samsung.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(210.118.77.11):SA:0(-1.9/5.0):. Processed in 11.763654 secs); 08 Jan 2018 10:22:12 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS,T_DKIM_INVALID,T_RP_MATCHES_RCVD autolearn=ham autolearn_force=no version=3.4.1 X-Envelope-From: p.stephenson@samsung.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20180108102154euoutp0116605bb222fe18e37fafa07e9c6581a4~Hzo9WUIFR3248132481euoutp01g DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1515406914; bh=B9UNPXIIG1vcyDzph2V95c2TamMHw5sUAFI2nO48kJE=; h=Date:From:To:Subject:In-reply-to:References:From; b=Dt4Ck0H96k8pnpSBRikE9KrvBqebXTG096JvOWPM3n4hm8LAQU2hI5fIwHNZ2gOGl ecW9FYRjfam1UDMpiyi7jDPtP+xbeiNIPGuddR0M6MYASG4WBVKLL773WOUM/n6wsB mefABUAH2QCJWtmYBDweCH3MMxd6sTCeTR86PtpM= X-AuditID: cbfec7f5-f79d06d0000031c7-45-5a5346410d77 Date: Mon, 08 Jan 2018 10:21:47 +0000 From: Peter Stephenson To: zsh-workers@zsh.org Subject: Re: [BUG?] - history word expansion for commands with interactive comments Message-id: <20180108102147.699aecda@pwslap01u.europe.root.pri> In-reply-to: Organization: Samsung Cambridge Solution Centre X-Mailer: Claws Mail 3.7.9 (GTK+ 2.22.0; i386-redhat-linux-gnu) MIME-version: 1.0 Content-type: text/plain; charset="US-ASCII" Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrAIsWRmVeSWpSXmKPExsWy7djPc7qObsFRBs2X9SwONj9kcmD0WHXw A1MAYxSXTUpqTmZZapG+XQJXxppjK1gLZolW3Py+lKWBsVWgi5GTQ0LAROL9rQksELaYxIV7 69m6GLk4hASWMkosnrqbBcLpZZK4NfsdE0zHnUUnWSESyxglTs19zQzhTGOSmDmzFypzmlHi 9P8t7BDOGUaJhf2/WUH6WQRUJS6tPQq2kU3AUGLqptmMILaIgLjE2bXnweLCAqESK99/BbN5 Bewlfr34B2ZzCgRLTH14EKyeX0Bf4urfT1A32UvMvHKGEaJeUOLH5Htg9cwCOhLbtj1mh7Dl JTaveQt2qoTAHDaJny8mMEM0u0jcu7+WHcIWlnh1fAuULSNxeXI3NGj6GSWedPtCNM8Aeu3M DjaIhLVE3+2LjBAb+CQmbZsONJQDKM4r0dEmBFHiIbFn40KomY4Sm8/MhobKEkaJzovfmCcw KsxCcvgsJIfPQnL4AkbmVYwiqaXFuempxaZ6xYm5xaV56XrJ+bmbGIHp4PS/4193MC49ZnWI UYCDUYmHd0VPUJQQa2JZcWXuIUYJDmYlEd7AX0Ah3pTEyqrUovz4otKc1OJDjNIcLErivLZR bZFCAumJJanZqakFqUUwWSYOTqkGxhip5F9sXGLelb+4YyOzVC/OXvU9r3D3a+tTu3QELDKn CMl9fTVJ7vfWN36HVgcru/GY7Ow6d/CEcKGpfIHrg4q96to1t7P/i51Qqbn5bcnTacsPp+c/ kqgvnJzA4l19rP9/80f5crY1XQ/MpQuZFhQtyxbV5Xl1wuSgybWfrFm/G8/5qt3cq8RSnJFo qMVcVJwIANlZbR0DAwAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrILMWRmVeSWpSXmKPExsVy+t/xq7qObsFRBrOauS0ONj9kcmD0WHXw A1MAYxSXTUpqTmZZapG+XQJXxppjK1gLZolW3Py+lKWBsVWgi5GTQ0LAROLOopOsELaYxIV7 69m6GLk4hASWMEos2faXEcKZwSTRM/k5O4RzmlHi049XUM4ZRonJaz4xg/SzCKhKXFp7lAXE ZhMwlJi6aTYjiC0iIC5xdu15sLiwQKjEyvdfwWxeAXuJXy/+gdmcAsESd6adgxq6jFHi4o6/ YM38AvoSV/9+YoI40F5i5pUzjBDNghI/Jt8Da2YW0JLYvK2JFcKWl9i85i3YQUIC6hI37u5m n8AoPAtJyywkLbOQtCxgZF7FKJJaWpybnltspFecmFtcmpeul5yfu4kRGNDbjv3csoOx613w IUYBDkYlHt4VPUFRQqyJZcWVuYcYJTiYlUR4A38BhXhTEiurUovy44tKc1KLDzFKc7AoifP2 7lkdKSSQnliSmp2aWpBaBJNl4uCUamA8zG1T0reYZ3NWCf+V5K0NUeJGwZ9lzqzzWarSzPGq tH2+WFDty00RaeFrBXO/P6hLr6w7/fz8Pc3A69KWLPMnFiqyu2QEvjtzSoVrC7ey/VSZqRnv 4i7INxb0PXmV9IVj2hLTRezSJreWJHHUnQ62KtysuUqw/a7Iu8lM++QP63XKz3R34VViKc5I NNRiLipOBACEHBrxZAIAAA== X-CMS-MailID: 20180108102153eucas1p1b2f7a5ef3088910ad07d2a08c899ca35 X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20180108093217epcas3p1ca24c2c8aca1afabe08df88a2a425a8d X-RootMTR: 20180108093217epcas3p1ca24c2c8aca1afabe08df88a2a425a8d References: On Mon, 8 Jan 2018 10:31:14 +0100 JB M wrote: > on a somewhat recent version of ZSH, it seems that the comment character is > considered part of the arguments of commands ending with a comment: > gandia% echo test # My comment sentence. > test > > gandia% echo !:$ > echo # Hmm, that doesn't look particularly useful. We might get away with something like this. pws diff --git a/Src/hist.c b/Src/hist.c index 177250f..e08984f 100644 --- a/Src/hist.c +++ b/Src/hist.c @@ -46,6 +46,9 @@ void (*hwaddc) _((int)); void (*hwbegin) _((int)); /**/ +void (*hwabort) _((void)); + +/**/ void (*hwend) _((void)); /**/ @@ -250,6 +253,7 @@ hist_context_save(struct hist_stack *hs, int toplevel) hs->hungetc = hungetc; hs->hwaddc = hwaddc; hs->hwbegin = hwbegin; + hs->hwabort = hwabort; hs->hwend = hwend; hs->addtoline = addtoline; hs->hlinesz = hlinesz; @@ -294,6 +298,7 @@ hist_context_restore(const struct hist_stack *hs, int toplevel) hungetc = hs->hungetc; hwaddc = hs->hwaddc; hwbegin = hs->hwbegin; + hwabort = hs->hwabort; hwend = hs->hwend; addtoline = hs->addtoline; hlinesz = hs->hlinesz; @@ -986,6 +991,11 @@ nohw(UNUSED(int c)) } static void +nohwabort(void) +{ +} + +static void nohwe(void) { } @@ -1057,6 +1067,7 @@ hbegin(int dohist) hungetc = inungetc; hwaddc = nohw; hwbegin = nohw; + hwabort = nohwabort; hwend = nohwe; addtoline = nohw; } else { @@ -1066,6 +1077,7 @@ hbegin(int dohist) hungetc = ihungetc; hwaddc = ihwaddc; hwbegin = ihwbegin; + hwabort = ihwabort; hwend = ihwend; addtoline = iaddtoline; if (!isset(BANGHIST)) @@ -1571,6 +1583,16 @@ ihwbegin(int offset) chwords[chwordpos++] = hptr - chline + offset; } +/* Abort current history word, not needed */ + +/**/ +void +ihwabort(void) +{ + if (chwordpos%2) + chwordpos--; +} + /* add a word to the history List */ /**/ diff --git a/Src/lex.c b/Src/lex.c index c2a5966..2379804 100644 --- a/Src/lex.c +++ b/Src/lex.c @@ -677,7 +677,7 @@ gettok(void) (char *)hcalloc(lexbuf.siz = LEX_HEAP_SIZE); add(c); } - hwend(); + hwabort(); while ((c = ingetc()) != '\n' && !lexstop) { hwaddc(c); addtoline(c); diff --git a/Src/zsh.h b/Src/zsh.h index 92f7576..ba2f8cd 100644 --- a/Src/zsh.h +++ b/Src/zsh.h @@ -2992,6 +2992,7 @@ struct hist_stack { void (*hungetc) _((int)); void (*hwaddc) _((int)); void (*hwbegin) _((int)); + void (*hwabort) _((void)); void (*hwend) _((void)); void (*addtoline) _((int)); unsigned char *cstack;