479ef264b2
This implements command line matching for `CascadiaSettings::GetProfileForArgs`. The command lines for all user profiles are resolved to absolute file paths, argument quotes are standardized ("canonicalized") and the results are cached. When `GetProfileForArgs` is called with a Commandline() value, we "canonicalize" the argument as well and find the profile that is the longest prefix. If none could be found the default profile is returned. ## PR Checklist * [x] Closes #9458 * [x] Closes #10952 * [x] I work here * [ ] Tests added/passed ## Validation Steps Performed * Open a `cmd.exe` tab in the store-version of WT * Run `start cmd` --> A tab with the `cmd.exe` profile opens * Run `start pwsh.exe` --> A tab with the PowerShell 7 profile opens * Run PowerShell 7 from the start menu --> A tab with the PowerShell 7 profile opens * Create a symlink for PowerShell 7 and launch `pwsh.exe` from there --> A tab with the PowerShell 7 profile opens
33 lines
812 B
Plaintext
33 lines
812 B
Plaintext
// Copyright (c) Microsoft Corporation.
|
|
// Licensed under the MIT license.
|
|
|
|
namespace Microsoft.Terminal.TerminalConnection
|
|
{
|
|
enum ConnectionState
|
|
{
|
|
NotConnected = 0,
|
|
Connecting,
|
|
Connected,
|
|
Closing,
|
|
Closed,
|
|
Failed
|
|
};
|
|
|
|
delegate void TerminalOutputHandler(String output);
|
|
|
|
interface ITerminalConnection
|
|
{
|
|
void Initialize(Windows.Foundation.Collections.ValueSet settings);
|
|
|
|
void Start();
|
|
void WriteInput(String data);
|
|
void Resize(UInt32 rows, UInt32 columns);
|
|
void Close();
|
|
|
|
event TerminalOutputHandler TerminalOutput;
|
|
|
|
event Windows.Foundation.TypedEventHandler<ITerminalConnection, Object> StateChanged;
|
|
ConnectionState State { get; };
|
|
};
|
|
}
|