Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feature: add executed task to shell history #114

Open
a-h opened this issue Mar 6, 2024 · 6 comments
Open

feature: add executed task to shell history #114

a-h opened this issue Mar 6, 2024 · 6 comments

Comments

@a-h
Copy link
Contributor

a-h commented Mar 6, 2024

I'm enjoying using the interactive mode. One thing I've noticed, is that I'll often run xc, select docker-build and it will start.

Then I'll make some changes, and want to run it again, so I'll press the up arrow on the keyboard, or I'll use Ctrl+R to search, but docker-build is not in the history.

I think it would be a case of adding a line to either .zsh_history if the shell is zsh, or .bash_history is the shell is bash.

I can put a PR for that together if you like.

@joerdav
Copy link
Owner

joerdav commented Mar 6, 2024

I noted this as a thing that was frustrating me too, would happily take a PR!

@jdmcgrath
Copy link

jdmcgrath commented Apr 7, 2024

Hi both @joerdav @a-h.

I had a look at this, and couldn't get it to work.
I am not sure about bash, but for zsh it is perfectly possible to add to .zsh_history, though the changes to the file are not checked until after the next run of a script.
I noticed you can have a script as follows which refreshes the zsh history if in a terminal session directly:

#!/bin/zsh
fc -R

though if run through the Go Script, the effect of this is confined to the subprocess created by exec.Command, not the parent shell session.
Please see commit here for crude concept and to check out the issue I'm running into.

@joerdav
Copy link
Owner

joerdav commented May 22, 2024

I can see the problem here, might need some more thinking!

I've had some inspiration on this which might solve the problem by changing how it works.

We could have the xc command pre populate your commandline. It'll mean pressing enter twice but would have the side effect of the terminal handling history?

Is this too annoying of a change?

I've been using https://github.com/atuinsh/atuin for a while and it also pre-populates your cli with a command rather than running it for you.

@a-h
Copy link
Contributor Author

a-h commented May 22, 2024

That would be great for me!

@joerdav
Copy link
Owner

joerdav commented May 23, 2024

I looked further and the way this works in atuin is that its a zsh/bash/fish plugin, that communicates to the cli.

So its able to do things like refresh the history or prepopulate the commandline as there are hooks in dotfiles. The atuin command on its own isn't able to do any of these things on its own :(

So back at square one with @jdmcgrath , you observation that this can't be done from the xc command are correct. It would be a larger change including authoring plugins for zsh/bash/fish

@phanirithvij
Copy link

phanirithvij commented Jun 7, 2024

navi does the same, user needs to source navi widget <shell> in bashrc/zshrc/config.fish, from what I can read it uses READLINE_POINT and READLINE_LINE to set to shell history.

Also on a side note, I am on nixos and use home-manager to configure bash/fish etc.
and xc -complete tries to write to bashrc which is read-only for me. so an xc hook <shell> which prints the corresponding script would be very much appreciated. (like zoxide, starship, direnv, fzf and many other tools provide)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants