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

GUI new command from history #203

Open
Hyde46 opened this issue Oct 22, 2022 · 3 comments
Open

GUI new command from history #203

Hyde46 opened this issue Oct 22, 2022 · 3 comments
Assignees
Labels
✨ enhancement New feature or request

Comments

@Hyde46
Copy link
Owner

Hyde46 commented Oct 22, 2022

based on the used shell, let users add new commands from the shell history

@Hyde46 Hyde46 added the ✨ enhancement New feature or request label Oct 22, 2022
@tuxflo
Copy link

tuxflo commented Jan 3, 2023

That would be a great feature. I was wondering if I could already implement this on my own when using the fzf command for the shell history.
For me the perfect workflow would look like this:

  • hit Ctrl+R to start the fzf command histroy
  • do a fuzzy search and select the correct entry
  • hit a (configurable) shortcut like Ctrl+H
  • command is automatically sent to hoard and the hoard asks for additional stuff (like description and so on)
  • done

@Hyde46
Copy link
Owner Author

Hyde46 commented Jan 5, 2023

Would be a nice way to have a fast integration with fzf or similar shell history explorer!
We could add a section in the readme here, how to create a binding like this.
The result of that can be used with hoard new --name $RESULT to start the process of adding a new command.

Potentially, a more long term feature to target would be an integrated shell history explorer inside of hoard

@tuxflo
Copy link

tuxflo commented Jan 8, 2023

I found some time on the weekend to play around with fzf and the history widget.
To enable the feature as described above one can add the following part to the default fzf-history-widget() function in the zsh config:

--bind=\"ctrl-h:execute@cmd=\$(echo {} | cut -c 8-) && hoard new --command \${cmd} @+abort\"

This runs the command hoard new --command with the result that was selected by fzf.
However I'm not happy with the echo {} | cut part yet, as this seems a little hacky to me. It is used to cut off the number of the history output (see screenshot below)
image

The entire new fzf-history-widget() function (which comes by default if you're installing fzf and the zsh completitions) looks like this:

fzf-history-widget() {
  local selected num
  setopt localoptions noglobsubst noposixbuiltins pipefail no_aliases 2> /dev/null
  selected=( $(fc -rl 1 | awk '{ cmd=$0; sub(/^[ \t]*[0-9]+\**[ \t]+/, "", cmd); if (!seen[cmd]++) print $0 }' |
	  FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} ${FZF_DEFAULT_OPTS-} -n2..,.. --scheme=history --bind=ctrl-r:toggle-sort,ctrl-z:ignore --bind=\"ctrl-h:execute@cmd=\$(echo {} | cut -c 8-) && hoard new --command \${cmd} @+abort\"  ${FZF_CTRL_R_OPTS-} --query=${(qqq)LBUFFER} +m" $(__fzfcmd)) )
  local ret=$?
  if [ -n "$selected" ]; then
    num=$selected[1]
    if [ -n "$num" ]; then
      zle vi-fetch-history -n $num
    fi
  fi
  zle reset-prompt
  return $ret
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨ enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants