zsh-users
 help / color / mirror / code / Atom feed
From: Bart Schaefer <schaefer@brasslantern.com>
To: Ray Andrews <rayandrews@eastlink.ca>, zsh-users@zsh.org
Subject: Re: append to history entry?
Date: Wed, 28 Dec 2016 10:22:07 -0800	[thread overview]
Message-ID: <161228102207.ZM5358@torch.brasslantern.com> (raw)
In-Reply-To: <d56f360e-4e53-045d-0056-f76e5eb848df@eastlink.ca>

On Dec 28,  9:39am, Ray Andrews wrote:
} Subject: Re: append to history entry?
}
} On 27/12/16 10:04 PM, Bart Schaefer wrote:
} > You can't get away from thinking about what you mean.
} 
} Indeed not.  The difficulty is that what I mean and what zsh thinks I 
} mean ain't the same.

As it has ever been in pretty much all programming languages.
 
} If I could just intercept the command as it goes into history --
} but with each command knowing what belongs to itself when there are
} semicolons

That's where your confusion is.  History is *NOT* command history.
It's *command line input* history.  History does NOT know what text
belongs to what command, and it's not processed at the same level as
the parser that figures that out.  It's involved with the lexer,
which decides how to break things into tokens but does not decide
what those tokens mean.  History is thus connected more closely to
the line editor than to the command execution engine.

} Somewhere, in the deepest bowels of the parser, the literal string 
} exists just before it is sent to history.

No, that's completely wrong.  The literal string is long gone by the
time you get that far down in the parser.  When your "com1" function
is called, all the expansions and substitutions have long since been
done and the original text discarded; "setopt xtrace" and look at the
output -- THAT is what exists at the point "com1" runs.

In fact by that point the literal command input is *already in* the
history, unless you've stopped it somehow e.g. histignorespace.

Read up on the "trap" command with the DEBUG pseudo-signal, and the
ZSH_DEBUG_CMD variable, which is the closest thing there is to what
you are imagining.

The zshaddhistory hook is where you get at the literal input string.


  reply	other threads:[~2016-12-28 18:28 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-26 23:16 Ray Andrews
2016-12-27  1:28 ` Ray Andrews
2016-12-27  4:47   ` Bart Schaefer
     [not found] ` <5288b537-f06a-d18a-60ea-1f962856c80c__41345.3811700039$1482803962$gmane$org@eastlink.ca>
2016-12-27 12:55   ` Daniel Shahaf
2016-12-27 16:00     ` Bart Schaefer
2016-12-27 18:23       ` Ray Andrews
2016-12-27 19:09         ` Bart Schaefer
2016-12-27 23:16           ` Ray Andrews
2016-12-27 23:55             ` Bart Schaefer
2016-12-28  0:57               ` Ray Andrews
2016-12-28  6:04                 ` Bart Schaefer
2016-12-28 17:39                   ` Ray Andrews
2016-12-28 18:22                     ` Bart Schaefer [this message]
2016-12-28 19:20                       ` Ray Andrews
2016-12-28 21:24                         ` Ray Andrews
     [not found]                         ` <3b8fe027-d7fb-25fb-bc05-9ecd3a91b08f__38422.8622112007$1482960347$gmane$org@eastlink.ca>
2016-12-28 23:34                           ` Daniel Shahaf
2016-12-29  0:51                             ` Bart Schaefer
2016-12-29  3:27                             ` Ray Andrews
     [not found]               ` <f87d7f79-3529-d832-eed5-83d4130ea128__16005.139592062$1482888562$gmane$org@eastlink.ca>
2016-12-28  5:28                 ` Daniel Shahaf
2016-12-28  6:31                   ` Bart Schaefer
2016-12-28 16:33                   ` Ray Andrews

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=161228102207.ZM5358@torch.brasslantern.com \
    --to=schaefer@brasslantern.com \
    --cc=rayandrews@eastlink.ca \
    --cc=zsh-users@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).