Code of Conduct
What happened?
What is the issue:
There is an issue with fish+omp not triggering a fresh render when a cd command is executed in fish shell with the pager active but no selection made. The result is that the pwd is changed by cd while the omp prompt stays the same.
Repro requirements:
- on any system that can install fish and oh-my-posh
- with fish and oh-my-posh installed
- basic
oh-my-posh init fish | source in config.fish
- (or any theme will work as well)
- create a test directory with structure
- /test
- /test/dir1
- /test/dir123
- execute these steps in fish shell with omp active
- cd to /test
- type
cd d + <tab> + <enter>
- type
pwd + <enter> to confirm that cd worked
Expected behavior:
- change pwd to /test/dir1
- render new prompt for new pwd
Actual behavior:
- change pwd to /test/dir1
- echo previous prompt
Why is this an issue with omp and not fish:
The fish behavior in this flow is reasonable to me. When the user triggers tab completion in fish, it does 2 things. It completes the segment up to the first ambiguous character, and it displays a pager with completion options. By default, none of the completion options are selected, if the user presses tab again then the pager will cycle through the options; the selected option is written as the user cycles the options; the pager closes if the user hits <enter> or if the user starts typing. This is handled correctly by omp. However, the bug arises when the user hits <enter> before making a selection in the pager. This will cause the command to be submitted as-is, with the pager open. This is where (based on my understanding of the source code) omp detects the <enter> key but does not trigger a render and instead echoes the cached prompt.
Theme
reproducible with the default theme (or any theme)
What OS are you seeing the problem on?
Linux
Which shell are you using?
fish
Log output
λ oh-my-posh debug --plain
Version: 29.9.2
Shell: shell (4.6.0)
Prompt:
ferndq@nixos ~
λ
Segments:
ConsoleTitle(true) - 0 ms
Session(true) - 7 ms
Path(true) - 0 ms
Git(false) - 0 ms
Executiontime(false) - 0 ms
Status(true) - 0 ms
Run duration: 15.121984ms
Cache path: /home/ferndq/.cache/oh-my-posh
Config path: /home/ferndq/.config/oh-my-posh/themes/lambda.omp.json
Logs:
[DEBUG] 15:56:48.666 debug.go:39 → logging enabled, raw mode: true
[DEBUG] 15:56:48.666 store.go:]:163 → (session) key not found: prompt_count_cache
[TRACE] 15:56:48.666 store.go:](session prompt_count_cache) - 64.819µs
[TRACE] 15:56:48.666 terminal.go:setPromptCount() - 83.357µs
[TRACE] 15:56:48.666 terminal.go:GOOS() - 160ns
[DEBUG] 15:56:48.666 terminal.go:setPwd:102 → /home/ferndq
[TRACE] 15:56:48.666 terminal.go:setPwd() - 336.43µs
[TRACE] 15:56:48.666 terminal.go:Init() - 447.616µs
[TRACE] 15:56:48.667 path.go:Path() - 32.382µs
[DEBUG] 15:56:48.667 store.go:init:95 → (device) loading is_wsl
[DEBUG] 15:56:48.667 store.go:init:95 → (device) loading environment_platform
[DEBUG] 15:56:48.667 store.go:init:95 → (device) loading DSC_CONFIGURATION
[DEBUG] 15:56:48.667 store.go:init:95 → (device) loading INITVERSIONFISH
[DEBUG] 15:56:48.667 store.go:init:95 → (device) loading DSC_SHELL
[TRACE] 15:56:48.667 store.go:init(device omp.cache) - 1.015167ms
[TRACE] 15:56:48.668 init.go:SessionID() - 2.59µs
[TRACE] 15:56:48.668 path.go:Path() - 250ns
[DEBUG] 15:56:48.668 store.go:init:95 → (session) loading prompt_count_cache
[DEBUG] 15:56:48.668 store.go:init:95 → (session) loading CONFIG
[DEBUG] 15:56:48.668 store.go:init:95 → (session) loading CONFIG_SOURCE
[DEBUG] 15:56:48.668 store.go:init:95 → (session) loading toggle_cache
[TRACE] 15:56:48.668 store.go:init(session fish.b93eb644-a850-42af-9828-ce707f3cf581.omp.cache) - 288.25µs
[DEBUG] 15:56:48.668 store.go:]:163 → (device) key not found: reload
[TRACE] 15:56:48.668 store.go:](device reload) - 26.954µs
[DEBUG] 15:56:48.668 store.go:]:176 → (session) found entry: CONFIG - /gIHfwMBAQZDb25maWcB/4AAASABB1BhbGV0dGUB/4IAAQtEZWJ1Z1Byb21wdAH/hAABA1ZhcgH/jgABCFBhbGV0dGVzAf+QAAEJVmFsaWRMaW5lAf+EAAEPU2Vjb25kYXJ5UHJvbXB0Af+EAAEPVHJhbnNpZW50UHJvbXB0Af+EAAEJRXJyb3JMaW5lAf+EAAEETWFwcwH/lAABB1VwZ3JhZGUB/5gAAQdFeHRlbmRzAQwAAQtBY2NlbnRDb2xvcgEMAAEUQ29uc29sZVRpdGxlVGVtcGxhdGUBDAABA1BXRAEMAAEGU291cmNlAQwAAQZGb3JtYXQBDAABElRlcm1pbmFsQmFja2dyb3VuZAEMAAEOVG9vbFRpcHNBY3Rpb24BDAABBkJsb2NrcwH/ngABBUN5Y2xlAf+iAAENSVRlcm1GZWF0dXJlcwH/pAABCFRvb2x0aXBzAf+cAAEHVmVyc2lvbgEEAAENTWlncmF0ZUdseXBocwECAAEFQXN5bmMBAgABEFNoZWxsSW50ZWdyYXRpb24BAgABCkZpbmFsU3BhY2UBAgABDVVwZ3JhZGVOb3RpY2UBAgABDlBhdGNoUHdzaEJsZWVkAQIAAQtBdXRvVXBncmFkZQECAAEXRW5hYmxlQ3Vyc29yUG9zaXRpb25pbmcBAgABCVN0cmVhbWluZwEEAAAAF/+BBAEBB1BhbGV0dGUB/4IAAQwBDAAA/gIx/4MDAQEHU2VnbWVudAH/hAABJAEHT3B0aW9ucwH/hgABClByb3BlcnRpZXMB/4YAAQVDYWNoZQH/iAABBUFsaWFzAQwAAQ5MZWFkaW5nRGlhbW9uZAEMAAEPVHJhaWxpbmdEaWFtb25kAQwAAQhUZW1wbGF0ZQEMAAEKRm9yZWdyb3VuZAEMAAEOVGVtcGxhdGVzTG9naWMBDAABD1Bvd2VybGluZVN5bWJvbAEMAAEKQmFja2dyb3VuZAEMAAEGRmlsbGVyAQwAAQRUeXBlAQwAAQVTdHlsZQEMAAEWTGVhZGluZ1Bvd2VybGluZVN5bWJvbAEMAAELUGxhY2Vob2xkZXIBDAABBFRpcHMB/4oAARNCYWNrZ3JvdW5kVGVtcGxhdGVzAf+MAAEJVGVtcGxhdGVzAf+MAAEORXhjbHVkZUZvbGRlcnMB/4oAAQ5JbmNsdWRlRm9sZGVycwH/igABBU5lZWRzAf+KAAETRm9yZWdyb3VuZFRlbXBsYXRlcwH/jAABBUluZGV4AQQAAQhNaW5XaWR0aAEEAAEIRHVyYXRpb24BBAABCk5hbWVMZW5ndGgBBAABCE1heFdpZHRoAQQAAQdUaW1lb3V0AQQAAQdOZXdsaW5lAQIAAQdFbmFibGVkAQIAAQ9JbnZlcnRQb3dlcmxpbmUBAgABBUZvcmNlAQIAAQdUb2dnbGVkAQIAAQdQZW5kaW5nAQIAAQtJbnRlcmFjdGl2ZQECAAAAE/+FBAEBA01hcAH/hgABDAEQAAAt/4cDAQEFQ2FjaGUB/4gAAQIBCER1cmF0aW9uAQwAAQhTdHJhdGVneQEMAAAAFv+JAgEBCFtdc3RyaW5nAf+KAAEMAAAS/4sCAQEETGlzdAH/jAABDAAAJ/+NBAEBF21hcFtzdHJpbmddaW50ZXJmYWNlIHt9Af+OAAEMARAAAC3/jwMBAQhQYWxldHRlcwH/kAABAgEETGlzdAH/kgABCFRlbXBsYXRlAQwAAAAp/5EEAQEYbWFwW3N0cmluZ11jb2xvci5QYWxldHRlAf+SAAEMAf+CAAA//5MDAQEGQ29uZmlnAf+UAAEDAQhVc2VyTmFtZQH/lgABCEhvc3ROYW1lAf+WAAEJU2hlbGxOYW1lAf+WAAAAE/+VBAEBA01hcAH/lgABDAEMAABc/5cDAQEGQ29uZmlnAf+YAAEGAQZTb3VyY2UBDAABCEludGVydmFsAQwAAQZMYXRlc3QBDAABBEF1dG8BAgABDURpc3BsYXlOb3RpY2UBAgABBUZvcmNlAQIAAAAe/50CAQEPW10qY29uZmlnLkJsb2NrAf+eAAH/mgAA/5D/mQMBAv+aAAEKAQRUeXBlAQwAAQlBbGlnbm1lbnQBDAABBkZpbGxlcgEMAAEIT3ZlcmZsb3cBDAABDkxlYWRpbmdEaWFtb25kAQwAAQ9UcmFpbGluZ0RpYW1vbmQBDAABCFNlZ21lbnRzAf+cAAEHTmV3bGluZQECAAEFRm9yY2UBAgABBUluZGV4AQQAAAAg/5sCAQERW10qY29uZmlnLlNlZ21lbnQB/5wAAf+EAAAU/6ECAQEFQ3ljbGUB/6IAAf+gAAAq/58DAQL/oAABAgEKQmFja2dyb3VuZAEMAAEKRm9yZWdyb3VuZAEMAAAAG/+jAgEBDUlUZXJtRmVhdHVyZXMB/6QAAQwAAP4EqP+ACgEDY2RuAQQxNjhoAAMue3tpZiAuUm9vdH19KEFkbWluKSB7e2VuZH19e3suU2hlbGx9fSB7ey5QV0R9fQI2L2hvbWUvZmVybmRxLy5jb25maWcvb2gtbXktcG9zaC90aGVtZXMvbGFtYmRhLm9tcC5qc29uAQRqc29uAwQBBnByb21wdAEEbGVmdAUCBzI8Y3lhbj57eyAuVXNlck5hbWUgfX08Lz5APGJsdWU+e3sgLkhvc3ROYW1lIH19PC8+IAYHc2Vzc2lvbgEFcGxhaW4AAQIOY2FjaGVfZHVyYXRpb24Gc3RyaW5nDAYABG5vbmUFc3R5bGUGc3RyaW5nDAYABGZ1bGwGDHt7IC5QYXRoIH19IAEHbWFnZW50YQUEcGF0aAEFcGxhaW4AAAEGcHJvbXB0AQRsZWZ0BQEBCBFmZXRjaF9zdGFzaF9jb3VudARib29sAgIAAQxmZXRjaF9zdGF0dXMEYm9vbAICAAETZmV0Y2hfdXBzdHJlYW1faWNvbgRib29sAgIAAQtnaXRodWJfaWNvbgZzdHJpbmcMAgAAEWJyYW5jaF9haGVhZF9pY29uBnN0cmluZwwGAATwn6GREmJyYW5jaF9iZWhpbmRfaWNvbgZzdHJpbmcMBgAE8J+hkwticmFuY2hfaWNvbgZzdHJpbmcMAgAADmNhY2hlX2R1cmF0aW9uBnN0cmluZwwGAARub25lBv4BNVt7eyAuSEVBRCB9fXt7aWYgLkJyYW5jaFN0YXR1cyB9fSB7eyAuQnJhbmNoU3RhdHVzIH19e3sgZW5kIH19e3sgaWYgLlN0YWdpbmcuQ2hhbmdlZCB9fSA8Z3JlZW4+e3sgLlN0YWdpbmcuU3RyaW5nIH19PC8+e3sgZW5kIH19e3sgaWYgYW5kICguV29ya2luZy5DaGFuZ2VkKSAoLlN0YWdpbmcuQ2hhbmdlZCkgfX0gfHt7IGVuZCB9fXt7IGlmIC5Xb3JraW5nLkNoYW5nZWQgfX0gPHJlZD57eyAuV29ya2luZy5TdHJpbmcgfX08Lz57eyBlbmQgfX1dIHt7IGlmIGd0IC5TdGFzaENvdW50IDAgfX0qIHt7IC5TdGFzaENvdW50IH19e3sgZW5kIH19IAEGeWVsbG93BQNnaXQBBXBsYWluCQFTe3sgaWYgYW5kICguQWhlYWQpICguQmVoaW5kKSB9fXJlZHt7IGVsc2UgaWYgbmUgKC5BaGVhZCkgKC5CZWhpbmQpIH19Z3JlZW57eyBlbmQgfX0AAAEGcHJvbXB0AQRsZWZ0BQEBAg5jYWNoZV9kdXJhdGlvbgZzdHJpbmcMBgAEbm9uZQVzdHlsZQZzdHJpbmcMCAAGYXVzdGluBhQge3sgLkZvcm1hdHRlZE1zIH19IAEEYmx1ZQUNZXhlY3V0aW9udGltZQEFcGxhaW4AAAEGcHJvbXB0AQRsZWZ0BQEBAg5hbHdheXNfZW5hYmxlZARib29sAgIAAQ5jYWNoZV9kdXJhdGlvbgZzdHJpbmcMBgAEbm9uZQYDzrsgAQV3aGl0ZQUGc3RhdHVzAQVwbGFpbgABAQAEBgA=
[TRACE] 15:56:48.668 store.go:](session CONFIG) - 89.893µs
[TRACE] 15:56:48.669 gob.go:Restore() - 495.788µs
[TRACE] 15:56:48.669 gob.go:Get() - 649.22µs
[TRACE] 15:56:48.669 terminal.go:Shell() - 279ns
[TRACE] 15:56:48.669 terminal.go:Flags() - 481ns
[DEBUG] 15:56:48.669 store.go:]:163 → (session) key not found: template_cache
[TRACE] 15:56:48.669 store.go:](session template_cache) - 95.115µs
[TRACE] 15:56:48.669 cache.go:restoreCache() - 151.397µs
[TRACE] 15:56:48.669 terminal_unix.go:Root() - 3.365µs
[TRACE] 15:56:48.669 terminal.go:Shell() - 304ns
[TRACE] 15:56:48.669 terminal.go:Flags() - 189ns
[TRACE] 15:56:48.669 terminal.go:StatusCodes() - 232ns
[DEBUG] 15:56:48.669 store.go:]:176 → (device) found entry: is_wsl - false
[TRACE] 15:56:48.669 store.go:](device is_wsl) - 18.302µs
[TRACE] 15:56:48.669 terminal_unix.go:IsWsl() - 32.244µs
[TRACE] 15:56:48.669 terminal.go:Flags() - 95ns
[TRACE] 15:56:48.669 terminal.go:Flags() - 93ns
[DEBUG] 15:56:48.669 home.go:12 → /home/ferndq
[DEBUG] 15:56:48.669 store.go:]:176 → (device) found entry: is_wsl - false
[TRACE] 15:56:48.669 store.go:](device is_wsl) - 13.005µs
[TRACE] 15:56:48.669 terminal_unix.go:IsWsl() - 25.104µs
[TRACE] 15:56:48.669 terminal.go:Flags() - 97ns
[TRACE] 15:56:48.669 terminal.go:Flags() - 99ns
[TRACE] 15:56:48.669 terminal.go:GOOS() - 151ns
[DEBUG] 15:56:48.669 terminal.go:User:236 → ferndq
[TRACE] 15:56:48.669 terminal.go:User() - 11.007µs
[DEBUG] 15:56:48.669 terminal.go:Host:253 → nixos
[TRACE] 15:56:48.669 terminal.go:Host() - 16.976µs
[TRACE] 15:56:48.669 terminal.go:GOOS() - 99ns
[DEBUG] 15:56:48.669 store.go:]:176 → (device) found entry: environment_platform - nixos
[TRACE] 15:56:48.669 store.go:](device environment_platform) - 15.51µs
[DEBUG] 15:56:48.669 terminal.go:Getenv:64 → 2
[TRACE] 15:56:48.669 terminal.go:Getenv(SHLVL) - 12.003µs
[DEBUG] 15:56:48.670 writer.go:Init:107 → terminal program: Unknown
[DEBUG] 15:56:48.670 writer.go:Init:108 → terminal shell: shell
[DEBUG] 15:56:48.670 terminal.go:Getenv:64 → NO DATA
[TRACE] 15:56:48.670 terminal.go:Getenv(OMP_CACHE_DISABLED) - 11.496µs
[DEBUG] 15:56:48.670 store.go:]:163 → (device) key not found: accent_color
[TRACE] 15:56:48.670 store.go:](device accent_color) - 16.559µs
[TRACE] 15:56:48.670 colors.go:SetAccentColor() - 44.322µs
[TRACE] 15:56:48.670 terminal.go:Shell() - 156ns
[DEBUG] 15:56:48.670 terminal.go:Getenv:64 → 4.6.0
[TRACE] 15:56:48.670 terminal.go:Getenv(POSH_SHELL_VERSION) - 10.651µs
[DEBUG] 15:56:48.670 debug.go:PrintDebug:24 → segment: Title
[DEBUG] 15:56:48.670 text.go:patchTemplate:149 → {{if .Root}}(Admin) {{end}}{{.Shell}} {{.PWD}}
[TRACE] 15:56:48.670 terminal.go:Flags() - 365ns
[DEBUG] 15:56:48.671 terminal.go:Getenv:64 → NO DATA
[TRACE] 15:56:48.671 terminal.go:Getenv(POSH_CURSOR_LINE) - 22.792µs
[DEBUG] 15:56:48.671 terminal.go:Getenv:64 → NO DATA
[TRACE] 15:56:48.671 terminal.go:Getenv(POSH_CURSOR_COLUMN) - 6.97µs
[TRACE] 15:56:48.671 terminal.go:Flags() - 109ns
[TRACE] 15:56:48.671 terminal.go:Flags() - 100ns
[TRACE] 15:56:48.671 terminal.go:Flags() - 95ns
[TRACE] 15:56:48.671 terminal.go:Flags() - 97ns
[TRACE] 15:56:48.671 terminal.go:Flags() - 107ns
[DEBUG] 15:56:48.671 home.go:12 → /home/ferndq
[TRACE] 15:56:48.671 terminal.go:GOOS() - 263ns
[DEBUG] 15:56:48.671 segment.go:Execute:173 → segment: Path
[DEBUG] 15:56:48.671 store.go:]:176 → (session) found entry: toggle_cache - map[]
[TRACE] 15:56:48.671 store.go:](session toggle_cache) - 21.626µs
[DEBUG] 15:56:48.671 segment.go:isToggled:291 → no toggles found
[TRACE] 15:56:48.671 terminal.go:Flags() - 814ns
[DEBUG] 15:56:48.671 home.go:12 → /home/ferndq
[TRACE] 15:56:48.671 terminal.go:GOOS() - 213ns
[DEBUG] 15:56:48.671 map.go:Bool:133 → display_cygpath: false
[TRACE] 15:56:48.671 terminal.go:GOOS() - 93ns
[DEBUG] 15:56:48.671 segment.go:Execute:173 → segment: Session
[TRACE] 15:56:48.671 separator.go:Separator() - 150ns
[TRACE] 15:56:48.671 terminal.go:Shell() - 215ns
[DEBUG] 15:56:48.671 store.go:]:176 → (session) found entry: toggle_cache - map[]
[TRACE] 15:56:48.671 store.go:](session toggle_cache) - 22.195µs
[DEBUG] 15:56:48.671 segment.go:isToggled:291 → no toggles found
[DEBUG] 15:56:48.671 terminal.go:Getenv:64 → NO DATA
[TRACE] 15:56:48.671 terminal.go:Getenv(SSH_CONNECTION) - 11.88µs
[DEBUG] 15:56:48.671 terminal.go:Getenv:64 → NO DATA
[TRACE] 15:56:48.671 terminal.go:GOOS() - 94ns
[TRACE] 15:56:48.671 terminal.go:Getenv(SSH_CLIENT) - 6.921µs
[DEBUG] 15:56:48.671 store.go:]:176 → (device) found entry: environment_platform - nixos
[DEBUG] 15:56:48.671 map.go:Bool:133 → mapped_locations_enabled: true
[TRACE] 15:56:48.671 store.go:](device environment_platform) - 18.063µs
[DEBUG] 15:56:48.671 map.go:String:79 → windows_registry_icon:
[DEBUG] 15:56:48.671 map.go:String:79 → windows_registry_icon:
[DEBUG] 15:56:48.671 home.go:12 → /home/ferndq
[TRACE] 15:56:48.671 separator.go:Separator() - 210ns
[TRACE] 15:56:48.671 terminal.go:GOOS() - 206ns
[TRACE] 15:56:48.671 terminal.go:GOOS() - 95ns
[DEBUG] 15:56:48.671 map.go:String:79 → home_icon: ~
[DEBUG] 15:56:48.671 map.go:KeyValueMap:208 → mapped_locations: map[]
[TRACE] 15:56:48.671 separator.go:Separator() - 125ns
[TRACE] 15:56:48.671 terminal.go:GOOS() - 93ns
[TRACE] 15:56:48.671 terminal.go:GOOS() - 95ns
[TRACE] 15:56:48.671 separator.go:Separator() - 97ns
[TRACE] 15:56:48.671 terminal.go:GOOS() - 97ns
[TRACE] 15:56:48.671 terminal.go:GOOS() - 98ns
[TRACE] 15:56:48.671 terminal.go:GOOS() - 111ns
[TRACE] 15:56:48.671 terminal.go:GOOS() - 98ns
[TRACE] 15:56:48.671 terminal.go:GOOS() - 97ns
[TRACE] 15:56:48.671 terminal.go:Flags() - 181ns
[DEBUG] 15:56:48.671 map.go:StringArray:220 → cycle: []
[DEBUG] 15:56:48.671 map.go:String:79 → folder_separator_template:
[DEBUG] 15:56:48.671 map.go:String:79 → folder_separator_icon: /
[DEBUG] 15:56:48.671 map.go:Bool:133 → cycle_folder_separator: false
[DEBUG] 15:56:48.671 map.go:String:79 → folder_format: %s
[DEBUG] 15:56:48.671 map.go:String:79 → edge_format: %s
[DEBUG] 15:56:48.671 map.go:String:79 → left_format: %s
[DEBUG] 15:56:48.671 map.go:String:79 → right_format: %s
[TRACE] 15:56:48.671 terminal.go:Flags() - 109ns
[TRACE] 15:56:48.671 terminal.go:GOOS() - 113ns
[TRACE] 15:56:48.671 terminal.go:StackCount() - 187ns
[TRACE] 15:56:48.671 terminal_unix.go:DirIsWritable(/home/ferndq) - 14.518µs
[TRACE] 15:56:48.671 terminal.go:Flags() - 107ns
[DEBUG] 15:56:48.678 terminal.go:RunCommand:280 → NO DATA
[TRACE] 15:56:48.678 terminal.go:RunCommand(who am i) - 7.14687ms
[TRACE] 15:56:48.678 terminal.go:Flags() - 250ns
[DEBUG] 15:56:48.679 text.go:patchTemplate:149 → <cyan>{{ .UserName }}</>@<blue>{{ .HostName }}</>
[DEBUG] 15:56:48.679 text.go:patchTemplate:149 → {{ .Data.Path }}
[TRACE] 15:56:48.679 terminal.go:Shell() - 678ns
[TRACE] 15:56:48.680 terminal.go:Flags() - 147ns
[TRACE] 15:56:48.680 terminal.go:Flags() - 108ns
[DEBUG] 15:56:48.680 home.go:12 → /home/ferndq
[TRACE] 15:56:48.680 terminal.go:GOOS() - 263ns
[DEBUG] 15:56:48.680 segment.go:Execute:173 → segment: Git
[DEBUG] 15:56:48.680 store.go:]:176 → (session) found entry: toggle_cache - map[]
[TRACE] 15:56:48.680 store.go:](session toggle_cache) - 22.37µs
[DEBUG] 15:56:48.680 segment.go:isToggled:291 → no toggles found
[DEBUG] 15:56:48.680 map.go:Bool:133 → disable_with_jj: false
[DEBUG] 15:56:48.680 terminal.go:ResolveSymlink:195 → /home/ferndq
[TRACE] 15:56:48.680 terminal.go:ResolveSymlink(/home/ferndq) - 35.637µs
[ERROR] 15:56:48.680 terminal.go:HasParentFilePath:464 → stat .git: no such file or directory
[TRACE] 15:56:48.680 terminal.go:HasParentFilePath(.git) - 80.926µs
[TRACE] 15:56:48.680 terminal.go:Flags() - 131ns
[TRACE] 15:56:48.680 terminal.go:Flags() - 96ns
[TRACE] 15:56:48.680 terminal.go:Flags() - 126ns
[DEBUG] 15:56:48.680 home.go:12 → /home/ferndq
[TRACE] 15:56:48.680 terminal.go:GOOS() - 112ns
[DEBUG] 15:56:48.680 segment.go:Execute:173 → segment: Executiontime
[DEBUG] 15:56:48.680 store.go:]:176 → (session) found entry: toggle_cache - map[]
[TRACE] 15:56:48.680 store.go:](session toggle_cache) - 16.417µs
[DEBUG] 15:56:48.680 segment.go:isToggled:291 → no toggles found
[DEBUG] 15:56:48.680 map.go:Bool:133 → always_enabled: false
[TRACE] 15:56:48.680 terminal.go:ExecutionTime() - 379ns
[DEBUG] 15:56:48.680 map.go:Float64:148 → threshold: 500.000000
[TRACE] 15:56:48.680 terminal.go:Flags() - 103ns
[TRACE] 15:56:48.680 terminal.go:Flags() - 97ns
[TRACE] 15:56:48.680 terminal.go:Flags() - 95ns
[DEBUG] 15:56:48.680 home.go:12 → /home/ferndq
[TRACE] 15:56:48.680 terminal.go:GOOS() - 243ns
[DEBUG] 15:56:48.680 segment.go:Execute:173 → segment: Status
[DEBUG] 15:56:48.680 store.go:]:176 → (session) found entry: toggle_cache - map[]
[TRACE] 15:56:48.680 store.go:](session toggle_cache) - 17.594µs
[DEBUG] 15:56:48.680 segment.go:isToggled:291 → no toggles found
[TRACE] 15:56:48.680 terminal.go:StatusCodes() - 246ns
[DEBUG] 15:56:48.680 map.go:String:79 → status_template: {{ .Code }}
[DEBUG] 15:56:48.680 text.go:patchTemplate:149 → {{ .Code }}
[DEBUG] 15:56:48.681 map.go:Bool:141 → always_enabled: true
[TRACE] 15:56:48.681 terminal.go:Flags() - 225ns
[TRACE] 15:56:48.681 terminal.go:Shell() - 276ns
[TRACE] 15:56:48.681 terminal.go:Flags() - 97ns
[TRACE] 15:56:48.681 terminal.go:Shell() - 97ns
[TRACE] 15:56:48.681 path.go:Path() - 557ns
Code of Conduct
What happened?
What is the issue:
There is an issue with fish+omp not triggering a fresh render when a
cdcommand is executed in fish shell with the pager active but no selection made. The result is that the pwd is changed by cd while the omp prompt stays the same.Repro requirements:
oh-my-posh init fish | sourcein config.fishcd d+ <tab> + <enter>pwd+ <enter> to confirm that cd workedExpected behavior:
Actual behavior:
Why is this an issue with omp and not fish:
The fish behavior in this flow is reasonable to me. When the user triggers tab completion in fish, it does 2 things. It completes the segment up to the first ambiguous character, and it displays a pager with completion options. By default, none of the completion options are selected, if the user presses tab again then the pager will cycle through the options; the selected option is written as the user cycles the options; the pager closes if the user hits <enter> or if the user starts typing. This is handled correctly by omp. However, the bug arises when the user hits <enter> before making a selection in the pager. This will cause the command to be submitted as-is, with the pager open. This is where (based on my understanding of the source code) omp detects the <enter> key but does not trigger a render and instead echoes the cached prompt.
Theme
reproducible with the default theme (or any theme)
What OS are you seeing the problem on?
Linux
Which shell are you using?
fish
Log output