-
Notifications
You must be signed in to change notification settings - Fork 8.5k
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
Console "Discard Old Duplicates" doesn't apply in Windows Terminal #13515
Comments
FWIW, I'm not sure this is a Windows Terminal issue, as I'm noticing every time I open the (legacy) "Console Windows Properties" I'm seeing the "Discard Old Duplicates" setting unchecked while I'm seeing I'm observing this UI(?) quirk on at least two Windows 10 machines. |
More details – if I repeat just the same last command, it doesn't get multiplied to the end of the command history:
F7 (
So it is likely a half-baked port of the original "Discard Old Duplicates" implementation. My workflow involves repeating 2-3 commands (build, deploy, |
This is probably another face of #2558. When run in ConPTY (read: the terminal), the console just ignores most settings. That might have been a mis-play. We may want to keep around the history settings, but just ignore the "appearance" ones. Ultimately, this has the same root cause as that issue, so I'm gonna close it as a dupe for bookkeeping purposes. Thanks! /dup #2558 |
This comment was marked as outdated.
This comment was marked as outdated.
Just want to clarify my problem is not that the Windows Terminal doesn't appear to obey the "Discard Old Duplicates" option. It appears to implement some form of it – "discards" just the last command if it matches the previous one. It might be doing it by default, not obeying the original setting (haven't verified explicitly) but this issue is about not matching the original "Discard Old Duplicates" behavior. I suspect even if the setting is read from the Console, the Terminal behavior might still be left broken (at least for me). |
Yeah, I think this one is worth tracking. Even in its default configuration (read: enabled) it doesn't do what it says on the tin. |
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as off-topic.
This comment was marked as off-topic.
Hi, it's been a couple years and I'd like to ping the status. I'm using the command prompt profile in Terminal 1.18.10301.0, which doesn't have the checkbox described in this original post, but I continue to see duplicate entries in history. Or are there workarounds? For example,
Side note: why isn't Set-PSReadLineOption -HistoryNoDuplicates:$True the default behavior? In other words, what advantage is there to having exact duplicates in the history, no matter what type of shell you're running? Thanks! |
Ah, it looks like we didn't link up the pull request and associated issue that caused us to reopen this! When we first fixed it, we just flipped that option on by default for everyone in Terminal. It turned out to not have been the right call. There was a lot of spirited discussion about it. The console hosting part of the subsystem expressly ignores things set in the registry, in part because by the time the session is established and we know what application we'll be hosting we wouldn't be able to apply application-specific settings from the same registry keys. So, ideally we would allow the host to configure this. Leonard may have more thoughts on why we don't currently or whether that fits in with the plan to move hosting in-process and give it a nice shapely API... But TL;DR we don't have the infrastructure today to expose that in Terminal's settings and we don't have the confidence to read it from conhost's settings. Reopened in #18229, related to #18138, discussion in #17797.
Excellent question for the PowerShell or PSReadline folks! |
Windows Terminal version
1.14.1861.0
Windows build number
10.0.19043.1826
Other Software
No response
Steps to reproduce
Open a legacy "Command Prompt" console;
From the window menu (top-right icon) select "Defaults";
Check "Discard Old Duplicates" in the "Command History" options group, and "OK" to apply;
Open a "Command Prompt" in Windows Terminal, and enter commands in succession:
Expected Behavior
The command buffer should discard previous duplicate entries, as I'm seeing in a legacy "Command Prompt" console – pressing F7 reveals:
Actual Behavior
The "Command Prompt" in Windows Terminal doesn't appear to honor the "Discard Old Duplicates" setting – pressing F7 reveals:
This often causes the inconvenience of losing previous command history, after repeating a few of the same commands in succession for some time.
The text was updated successfully, but these errors were encountered: