feat: ignore leading space on clear

This commit is contained in:
Jan De Dobbeleer 2023-02-05 09:06:26 +01:00 committed by Jan De Dobbeleer
parent 3b7604377d
commit c76e9fd166
5 changed files with 16 additions and 3 deletions

View file

@ -17,6 +17,7 @@ var (
stackCount int
terminalWidth int
eval bool
cleared bool
command string
shellVersion string
@ -58,6 +59,7 @@ var printCmd = &cobra.Command{
ShellVersion: shellVersion,
Plain: plain,
Primary: args[0] == "primary",
Cleared: cleared,
}
eng := engine.New(flags)
@ -97,6 +99,7 @@ func init() { //nolint:gochecknoinits
printCmd.Flags().IntVarP(&terminalWidth, "terminal-width", "w", 0, "width of the terminal")
printCmd.Flags().StringVar(&command, "command", "", "tooltip command")
printCmd.Flags().BoolVarP(&plain, "plain", "p", false, "plain text output (no ANSI)")
printCmd.Flags().BoolVar(&cleared, "cleared", false, "do we have a clear terminal or not")
printCmd.Flags().BoolVar(&eval, "eval", false, "output the prompt for eval")
RootCmd.AddCommand(printCmd)
}

View file

@ -67,7 +67,7 @@ func (e *Engine) PrintPrimary() string {
var cancelNewline bool
if i == 0 {
row, _ := e.Env.CursorPosition()
cancelNewline = e.Env.Flags().PromptCount == 1 || row == 1
cancelNewline = e.Env.Flags().Cleared || e.Env.Flags().PromptCount == 1 || row == 1
}
e.renderBlock(block, cancelNewline)
}

View file

@ -66,6 +66,7 @@ type Flags struct {
Plain bool
Primary bool
PromptCount int
Cleared bool
}
type CommandError struct {

View file

@ -36,7 +36,12 @@ function fish_prompt
set --global --export omp_last_status_generation $status_generation
end
set_poshcontext
::OMP:: print primary --config $POSH_THEME --shell fish --error $omp_status_cache --execution-time $omp_duration --stack-count $omp_stack_count --shell-version $FISH_VERSION
# validate if the user cleared the screen
set --local omp_cleared false
if test (history | head -1) = "clear"
set omp_cleared true
end
::OMP:: print primary --config $POSH_THEME --shell fish --error $omp_status_cache --execution-time $omp_duration --stack-count $omp_stack_count --shell-version $FISH_VERSION --cleared=$omp_cleared
end
function fish_right_prompt

View file

@ -18,7 +18,11 @@ export-env {
# See https://github.com/nushell/nushell/discussions/6402#discussioncomment-3466687.
let cmd_duration = if $env.CMD_DURATION_MS == "0823" { 0 } else { $env.CMD_DURATION_MS }
# hack to set the cursor line to 1 when the user clears the screen
# this obviously isn't bulletproof, but it's a start
let clear = (history | last 1 | get 0.command) == "clear"
let width = ((term size).columns | into string)
^::OMP:: print primary $"--config=($env.POSH_THEME)" --shell=nu $"--shell-version=($env.NU_VERSION)" $"--execution-time=($cmd_duration)" $"--error=($env.LAST_EXIT_CODE)" $"--terminal-width=($width)"
^::OMP:: print primary $"--config=($env.POSH_THEME)" --shell=nu $"--shell-version=($env.NU_VERSION)" $"--execution-time=($cmd_duration)" $"--error=($env.LAST_EXIT_CODE)" $"--terminal-width=($width)" $"--cleared=($clear)"
}
}