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

Alt-c overwrites prompt that is in next line #3765

Open
5 of 10 tasks
Drllap opened this issue May 2, 2024 · 6 comments
Open
5 of 10 tasks

Alt-c overwrites prompt that is in next line #3765

Drllap opened this issue May 2, 2024 · 6 comments

Comments

@Drllap
Copy link

Drllap commented May 2, 2024

Checklist

  • I have read through the manual page (man fzf)
  • I have searched through the existing issues
  • For bug reports, I have checked if the bug is reproducible in the latest version of fzf

Output of fzf --version

0.48.1 (9ffe951)

OS

  • Linux
  • macOS
  • Windows
  • Etc.

Shell

  • bash
  • zsh
  • fish

Problem / Steps to reproduce

I'm using starship and have a theme where the prompt continues on the next line. If I use Alt+C to cd the curser ends up before the prompt:
alt-c-fzf
When I go out of vi-insert-mode the prompt overwrites what was written

Edit:
This is what I have in my .bashrc

eval "$(fzf --bash)"
eval "$(starship init bash)"

The starship config can be found here

@Drllap
Copy link
Author

Drllap commented May 2, 2024

Note that if I execute after leaving the vi-insert-mode the "correct" thing is executed (the prompt arrow doesn't affect it) so this is only a minor visual glitch

@Drllap
Copy link
Author

Drllap commented May 2, 2024

Also, why do I get `__fzf_cd__` when I use Alt+c? I don't get `__fzf_history__` when I use Ctrl+r or nvim ** <tab>.
Is it intentional?

@Drllap Drllap changed the title Alt-c overrides prompt that is in next line Alt-c overwrites prompt that is in next line May 2, 2024
@tmpm697
Copy link

tmpm697 commented May 3, 2024

this is probably how u play with fzf, i got this issue before, but it does not appear now.

@Drllap
Copy link
Author

Drllap commented May 5, 2024

@tmpm697 I'm not entirely sure what you mean by "how you play with fzf"

I'm just using the default keybindings. The only thing I have in my .bashrc

eval "$(fzf --bash)"
eval "$(starship init bash)"

@junegunn
Copy link
Owner

junegunn commented May 6, 2024

Also, why do I get `__fzf_cd__` when I use Alt+c? I don't get `__fzf_history__` when I use Ctrl+r or nvim ** <tab>.
Is it intentional?

That's because ALT-C uses a different mechanism than the others. No -x option.

fzf/shell/key-bindings.bash

Lines 126 to 144 in 7bac1a7

# CTRL-T - Paste the selected file path into the command line
if [[ "${FZF_CTRL_T_COMMAND-x}" != "" ]]; then
bind -m emacs-standard -x '"\C-t": fzf-file-widget'
bind -m vi-command -x '"\C-t": fzf-file-widget'
bind -m vi-insert -x '"\C-t": fzf-file-widget'
fi
# CTRL-R - Paste the selected command from history into the command line
bind -m emacs-standard -x '"\C-r": __fzf_history__'
bind -m vi-command -x '"\C-r": __fzf_history__'
bind -m vi-insert -x '"\C-r": __fzf_history__'
fi
# ALT-C - cd into the selected directory
if [[ "${FZF_ALT_C_COMMAND-x}" != "" ]]; then
bind -m emacs-standard '"\ec": " \C-b\C-k \C-u`__fzf_cd__`\e\C-e\er\C-m\C-y\C-h\e \C-y\ey\C-x\C-x\C-d"'
bind -m vi-command '"\ec": "\C-z\ec\C-z"'
bind -m vi-insert '"\ec": "\C-z\ec\C-z"'
fi

The reason we decided to use this method (only for ALT-C) can be found here: #2674 (and an older one: #546 (comment))

I have no experience with starship, so I'm currently unaware of how you can work around the issue.

@Drllap
Copy link
Author

Drllap commented May 8, 2024

Ok, I narrowed it down a bit. This is pretty much what starship does when I have deleted most of the things that aren't relevant to my issue:

function set_PS1 {
  PS1="something cool
\[�[1;38;2;152;151;26m\]\[�[0m\] "
}

precmd_functions+=(set_PS1)

Edit: Ok github doesn't render all of the "characters" in the file so here is the file:
test-bashrc.txt

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

3 participants