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

Unable to move cursor back to second line after latest update (using Starship) #5052

Closed
1 task done
onecrayon opened this issue Jun 20, 2024 · 22 comments
Closed
1 task done
Labels
Bugs Bugs, Hangs, Crash, and Freezes

Comments

@onecrayon
Copy link

Dupe Check

Describe the bug

The latest update introduced cursors on the same line as the prompt, which I hate. I'm using a custom cursor, though, so I figured I would just follow the recommended way to adjust to a second line, but it doesn't work.

To reproduce

  1. Install Starship
  2. Configure prompt to use Starship with the Warp-recommended follow-up to overwrite the PS1 in ~/.bash_profile:
    eval "$(starship init bash)"
    PS1="${PS1}"$'\\n'
  3. Restart Warp and the cursor is still on the same line as the Starship prompt

Expected behavior

There should be a single setting for Warp-provided prompts for same-line cursors that also applies to custom prompts. Maybe Starship is doing something funky, but it's bizarre to me that before Warp just always stuck the cursor on a new line and now it always sticks it on the same line without being able to adjust the behavior in the app.

Screenshots

No response

Operating system

MacOS

Operating system and version

14.2

Shell Version

bash 5.2.15(1)

Current Warp version

v0.2024.06.18.08.02.stable_03

Regression

Yes, this bug started recently or with an X Warp version

Recent working Warp date

No response

Additional context

No response

Does this block you from using Warp daily?

Yes, this issue prevents me from using Warp daily.

Is this a Warp specific issue? (i.e. does it happen in Terminal, iTerm, Kitty, etc.)

Yes, this I confirmed this only happens in Warp, not other terminals.

Warp Internal (ignore): linear-label:b9d78064-c89e-4973-b153-5178a31ee54e

None

@onecrayon onecrayon added the Bugs Bugs, Hangs, Crash, and Freezes label Jun 20, 2024
@Advait-M
Copy link
Member

Advait-M commented Jun 20, 2024

Hey @onecrayon

Thanks for reporting this!

So, first off - to address how to return to the prior state:

  • The provided command generally applied to "vanilla" prompts rather than custom prompt plugins, such as Starship, which generally have their own configurations.
  • I checked the command myself against Zsh and Bash's Starship. Verified it actually does work in Zsh, however, it does not work in Bash (due to differences in how the shells pass around their prompts I believe). This command was largely meant to tackle the "simple prompt" case of something like PS1="foo".
  • Could you please provide your starship.toml? I can help with modifying it to revert to the previous behavior. More generally, add_newline is the Starship config option for adding a newline or not (see https://starship.rs/config/#options). Feel free to let me know if you'd like to email it to me instead and I can follow up with that (to avoid posting here)!

With respect to Warp's updating behavior:

  • The behavior for PS1s within Warp was actually a broken experience. We were not respecting user's custom prompts. We were artificially adding a "newline" at the end of their prompts in Warp.
  • We've received a lot of feedback about this being an issue at Prompt in one line / Cursor in the same line with the prompt #2304.
  • Hence, we'd made the decision to fix this behavior within Warp and truly respect your PS1/custom prompt. However, we wanted to make it easy for folks to revert their experience if they'd wanted to, hence offering a command to help (in the simple cases).

Why did we not offer an option within the app to revert the behavior?

This was a major refactor of core Warp code to support this feature. At a high-level, there'd be a lot of product and tech debt for us to maintain a setting like this within Warp. At the end of the day, the existing PS1 experience within Warp was broken, and this is what it should've been from the start. We do realize the friction it causes folks that want to have the legacy experience, hence our efforts to alleviate this.

Also note that we have not changed default Warp prompt (non-PS1) behavior. It still uses 2 lines by default (opt-in experience into same line prompt).

That being said, we really appreciate your feedback here - please keep it coming!

@onecrayon
Copy link
Author

onecrayon commented Jun 21, 2024

@Advait-M The vast majority of my starship.toml is just disabling a bunch of output that I don't want to see, along with custom symbols using a nerd font for some of the formatting for other sub-commands. If you remove all of that, it boils down to just this:

[line_break]
disabled = true

add_newline is true by default, and I didn't override that (plus I would expect this to have no impact either way, because it has to do with adding newlines before the prompt, not after it). However, before filing this issue, I attempted the following:

add_newline = true
format = "$all$line_break"

[line_break]
disabled = false

But this also made no difference. I can verify that the other elements in my TOML file are not interferring, because when I comment them all out and just leave the above options the behavior is identical (the specific prompt contents just change a little bit).

@Advait-M
Copy link
Member

@Advait-M The vast majority of my starship.toml is just disabling a bunch of output that I don't want to see, along with custom symbols using a nerd font for some of the formatting for other sub-commands. If you remove all of that, it boils down to just this:

[line_break]
disabled = true

add_newline is true by default, and I didn't override that (plus I would expect this to have no impact either way, because it has to do with adding newlines before the prompt, not after it). However, before filing this issue, I attempted the following:

add_newline = true
format = "$all$line_break"

[line_break]
disabled = false

But this also made no difference. I can verify that the other elements in my TOML file are not interferring, because when I comment them all out and just leave the above options the behavior is identical (the specific prompt contents just change a little bit).

Thanks for the info! Got it - agreed re add_newline. Yep, so line_break affects this:

Default state - just $all (or with line_break set to disabled = false):
image

$all with line_break set to disabled = true:
image

I believe the top version is what you desire for a 2 line prompt? Let me know if I'm wrong here (with regards to the goal state) or I missed something!

@onecrayon
Copy link
Author

@Advait-M Found it! Apparently if you disable the character module, then it doesn't matter if your line_break module is enabled or not; it will never output a linebreak. I'm not too sure what is going on there since those two should be inter-related based on their documentation, but this looks like something that deserves to be filed in the Starship issues rather than here.

@Advait-M
Copy link
Member

@Advait-M Found it! Apparently if you disable the character module, then it doesn't matter if your line_break module is enabled or not; it will never output a linebreak. I'm not too sure what is going on there since those two should be inter-related based on their documentation, but this looks like something that deserves to be filed in the Starship issues rather than here.

Ooh interesting - yeah that does sound weird, I wouldn't expect those two to be interconnected 🤔 .

Gotcha - agreed! Thanks for digging into this!

And again, thanks for raising this! I'll explore how to make the onboarding block that we show to Warp users better for Starship users on Bash too - want to make sure we can make it as easy as possible to go back to the previous experience, if users would like to! 😄

@warpdotdev-devx warpdotdev-devx bot reopened this Jun 28, 2024
@Advait-M
Copy link
Member

Advait-M commented Jun 28, 2024

^ We're gonna try to improve the SLP onboarding block to specifically detect/target plugins such as Starship and p10k (with specific instructions) hence the re-open above! 😄

@Advait-M
Copy link
Member

Starship-specific SLP onboarding block for Bash has been updated to this:

image

Closing out this issue 😄 !

@Integralist
Copy link

Hmm, the solution of [line_break] doesn't work for me 😞

Below a condensed version of my Starship config.

Can someone who has the old 2-line prompt behaviour working help me understand what I need to be configuring. Thanks!

command_timeout = 5000

format = """\
[](bg:#282A36 fg:#7DF9AA)\
[$jobs](bg:#7DF9AA fg:#282A36)\
[](fg:#7DF9AA bg:#1C3A5E)\
$time\
[](fg:#1C3A5E bg:#3B76F0)\
$directory\
[](fg:#3B76F0 bg:#FCF392)\
$git_branch\
[](fg:#FCF392 bg:#f0af22)\
$git_status\
$git_metrics\
[](fg:#f0af22 bg:#bd4024)\
$custom\
[](fg:#bd4024 bg:#ff8a9f)\
$golang\
$lua\
$nodejs\
$perl\
$php\
$python\
$ruby\
$rust\
$shell\
$terraform\
$zig\
[](fg:#ff8a9f bg:#282A36)\
$character\
$cmd_duration\
$line_break\
"""

add_newline = true

[line_break]
disabled = false

[character]
success_symbol = '[ ➜](bold green) '
error_symbol = '[ ✗](#E84D44) '

@Advait-M
Copy link
Member

@Integralist hmm, that's weird yep; I would've expected that config to show up with a 2-line prompt 🤔 (was messing around with this myself)

To check - are you on Zsh or Bash or Fish? On Zsh/Fish, you can also add a newline at the rcfile level (as opposed to the Starship toml level). Though, I'm guessing this is likely Bash?

@Advait-M Advait-M reopened this Jul 12, 2024
@Integralist
Copy link

I'm using Zsh actually how do you do this at the RC level?

@Advait-M
Copy link
Member

Advait-M commented Jul 12, 2024

I'm using Zsh actually how do you do this at the RC level?

Oh nice - could you try adding this to the end of your rcfile: PROMPT="${PROMPT}"$'\n' 👀 - this should work for that prompt!

@jhegele
Copy link

jhegele commented Jul 12, 2024

Any idea how to fix this with fish? The [line_break] fix isn't working for me either. Thanks!

@Advait-M
Copy link
Member

Any idea how to fix this with fish? The [line_break] fix isn't working for me either. Thanks!

For fish, you should be able to use the following (add it to end of config.fish) @jhegele :

functions --copy fish_prompt fish_prompt_orig; function fish_prompt; fish_prompt_orig; echo; end

@jhegele
Copy link

jhegele commented Jul 12, 2024

No luck. Also tried swapping out fish_prompt for fish_right_prompt (I'm using both) and that doesn't seem to work either. I'm using Warp + Starship + fish if that makes any difference. Appreciate the help @Advait-M!

@Advait-M
Copy link
Member

No luck. Also tried swapping out fish_prompt for fish_right_prompt (I'm using both) and that doesn't seem to work either. I'm using Warp + Starship + fish if that makes any difference. Appreciate the help @Advait-M!

Hmm... could you also provide your starship.toml? Want to figure out why that isn't working - for me with fish and that line in rcfile:
image

@Advait-M
Copy link
Member

By the way @Integralist and @jhegele - did the both of you try the command you got when updating Warp to the latest version in the SLP onboarding block? Wanted to confirm the triggering logic is working correctly for folks

For Zsh:

image

For Fish:

image

@Integralist
Copy link

Apologies I've not been able to check yet. Will do so on Monday and report back either way. Thanks again

@jhegele
Copy link

jhegele commented Jul 12, 2024

No luck. Also tried swapping out fish_prompt for fish_right_prompt (I'm using both) and that doesn't seem to work either. I'm using Warp + Starship + fish if that makes any difference. Appreciate the help @Advait-M!

Hmm... could you also provide your starship.toml? Want to figure out why that isn't working - for me with fish and that line in rcfile: image

@Advait-M starship.toml is below, nothing particularly weird in there as far as I'm aware. I didn't notice the prompt to run that command when I updated Warp. 🤦

format = """
$directory\
$git_branch\
$git_status\
$fill\
$python\
$c\
$elixir\
$elm\
$golang\
$haskell\
$java\
$julia\
$nodejs\
$nim\
$rust\
$scala\
$docker_context\
"""

# Disable the blank line at the start of the prompt
# add_newline = false

# Set longer command timeout for nodenv
command_timeout = 1000

add_newline = true

# You can also replace your username with a neat symbol like  to save some space
[fill]
symbol = " "

[directory]
# style = "fg:#DA627D"
style = "cyan bold"
format = "[ $path ]($style)"
truncation_length = 3
truncation_symbol = "…/"

[python]
pyenv_version_name = true
style = "fg:#86BBD8"
format = '[ $symbol ($version) ]($style)'

[c]
symbol = ""
style = "fg:#86BBD8"
format = '[ $symbol ($version) ]($style)'

[docker_context]
symbol = ""
style = "fg:#06969A"
format = '[ $symbol $context ]($style) $path'

[elixir]
symbol = ""
style = "fg:#86BBD8"
format = '[ $symbol ($version) ]($style)'

[elm]
symbol = ""
style = "fg:#86BBD8"
format = '[ $symbol ($version) ]($style)'

[git_branch]
symbol = ""
style = "fg:#FCA17D"
format = '[ $symbol $branch ]($style)'

[git_status]
style = "fg:#FCA17D"
format = '[$all_status$ahead_behind ]($style)'

[golang]
symbol = ""
style = "fg:#86BBD8"
format = '[ $symbol ($version) ]($style)'

[haskell]
symbol = ""
style = "fg:#86BBD8"
format = '[ $symbol ($version) ]($style)'

[java]
symbol = ""
style = "fg:#86BBD8"
format = '[ $symbol ($version) ]($style)'

[julia]
symbol = ""
style = "fg:#86BBD8"
format = '[ $symbol ($version) ]($style)'

[nodejs]
symbol = ""
style = "fg:#86BBD8"
format = '[ $symbol ($version) ]($style)'

[nim]
symbol = ""
style = "fg:#86BBD8"
format = '[ $symbol ($version) ]($style)'

[rust]
symbol = ""
style = "fg:#86BBD8"
format = '[ $symbol ($version) ]($style)'

[scala]
symbol = ""
style = "fg:#86BBD8"
format = '[ $symbol ($version) ]($style)'

[time]
disabled = false
time_format = "%R"           # Hour:Minute Format
style = "fg:#33658A"
format = '[ $time ]($style)'

[line_break]
disabled = false

@jhegele
Copy link

jhegele commented Jul 13, 2024

Turns out, the issue here is that I am an idiot and was editing the wrong config.fish file. Once I fixed that error, I'm back to a two line terminal. Thanks again for your help @Advait-M!

@Advait-M
Copy link
Member

Turns out, the issue here is that I am an idiot and was editing the wrong config.fish file. Once I fixed that error, I'm back to a two line terminal. Thanks again for your help @Advait-M!

Awesome haha, no worries - glad to hear we could fix it!

@Integralist
Copy link

👋🏻 @Advait-M

Just to confirm this worked for me (double line break gives me a nicer spacing)...

PROMPT="${PROMPT}"$'\n\n'
Screenshot 2024-07-15 at 09 25 17

Thanks for your help! 🙂 🥳

@Advait-M
Copy link
Member

Advait-M commented Aug 2, 2024

👋🏻 @Advait-M

Just to confirm this worked for me (double line break gives me a nicer spacing)...

PROMPT="${PROMPT}"$'\n\n'
Screenshot 2024-07-15 at 09 25 17 Thanks for your help! 🙂 🥳

Glad to hear! I'm going to close out this issue for now - we can re-open a new one if needed for any folks!

@Advait-M Advait-M closed this as completed Aug 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bugs Bugs, Hangs, Crash, and Freezes
Projects
None yet
Development

No branches or pull requests

4 participants