Merge remote-tracking branch 'origin/main' into dev/migrie/oop/ragnarok
This commit is contained in:
commit
a338ca168c
1
.github/actions/spelling/allow/allow.txt
vendored
1
.github/actions/spelling/allow/allow.txt
vendored
|
@ -41,6 +41,7 @@ Lmid
|
|||
Lorigin
|
||||
maxed
|
||||
mkmk
|
||||
mnt
|
||||
mru
|
||||
noreply
|
||||
nje
|
||||
|
|
|
@ -28,6 +28,7 @@ namespace Microsoft.Terminal.Control
|
|||
Microsoft.Terminal.Control.IControlAppearance
|
||||
{
|
||||
String ProfileName;
|
||||
String ProfileSource;
|
||||
|
||||
Boolean UseAcrylic { get; };
|
||||
ScrollbarState ScrollState { get; };
|
||||
|
|
|
@ -2296,6 +2296,42 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
|||
}
|
||||
|
||||
std::wstring fullPath{ item.Path() };
|
||||
|
||||
// Fix path for WSL
|
||||
if (_settings.ProfileSource() == L"Windows.Terminal.Wsl")
|
||||
{
|
||||
std::replace(fullPath.begin(), fullPath.end(), L'\\', L'/');
|
||||
|
||||
if (fullPath.size() >= 2 && fullPath.at(1) == L':')
|
||||
{
|
||||
// C:/foo/bar -> Cc/foo/bar
|
||||
fullPath.at(1) = til::tolower_ascii(fullPath.at(0));
|
||||
// Cc/foo/bar -> /mnt/c/foo/bar
|
||||
fullPath.replace(0, 1, L"/mnt/");
|
||||
}
|
||||
else
|
||||
{
|
||||
static constexpr std::wstring_view wslPathPrefixes[] = { L"//wsl.localhost/", L"//wsl$/" };
|
||||
for (auto prefix : wslPathPrefixes)
|
||||
{
|
||||
if (til::starts_with(fullPath, prefix))
|
||||
{
|
||||
if (const auto idx = fullPath.find(L'/', prefix.size()); idx != std::wstring::npos)
|
||||
{
|
||||
// //wsl.localhost/Ubuntu-18.04/foo/bar -> /foo/bar
|
||||
fullPath.erase(0, idx);
|
||||
}
|
||||
else
|
||||
{
|
||||
// //wsl.localhost/Ubuntu-18.04 -> /
|
||||
fullPath = L"/";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const auto containsSpaces = std::find(fullPath.begin(),
|
||||
fullPath.end(),
|
||||
L' ') != fullPath.end();
|
||||
|
@ -2308,6 +2344,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
|||
|
||||
allPaths += fullPath;
|
||||
}
|
||||
|
||||
_core.PasteText(winrt::hstring{ allPaths });
|
||||
}
|
||||
}
|
||||
|
|
|
@ -222,6 +222,7 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation
|
|||
|
||||
// Fill in the remaining properties from the profile
|
||||
_ProfileName = profile.Name();
|
||||
_ProfileSource = profile.Source();
|
||||
_UseAcrylic = profile.UseAcrylic();
|
||||
|
||||
_FontFace = profile.FontInfo().FontFace();
|
||||
|
|
|
@ -112,6 +112,8 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation
|
|||
// ------------------------ End of Core Settings -----------------------
|
||||
|
||||
INHERITABLE_SETTING(Model::TerminalSettings, hstring, ProfileName);
|
||||
INHERITABLE_SETTING(Model::TerminalSettings, hstring, ProfileSource);
|
||||
|
||||
INHERITABLE_SETTING(Model::TerminalSettings, bool, UseAcrylic, false);
|
||||
INHERITABLE_SETTING(Model::TerminalSettings, double, Opacity, UseAcrylic() ? 0.5 : 1.0);
|
||||
INHERITABLE_SETTING(Model::TerminalSettings, hstring, Padding, DEFAULT_PADDING);
|
||||
|
|
|
@ -50,6 +50,7 @@ namespace ControlUnitTests
|
|||
// ------------------------ End of Core Settings -----------------------
|
||||
|
||||
WINRT_PROPERTY(winrt::hstring, ProfileName);
|
||||
WINRT_PROPERTY(winrt::hstring, ProfileSource);
|
||||
WINRT_PROPERTY(bool, UseAcrylic, false);
|
||||
WINRT_PROPERTY(double, Opacity, .5);
|
||||
WINRT_PROPERTY(winrt::hstring, Padding, DEFAULT_PADDING);
|
||||
|
|
|
@ -2509,53 +2509,55 @@ ITermDispatch::StringHandler AdaptDispatch::RequestSetting()
|
|||
// - None
|
||||
void AdaptDispatch::_ReportSGRSetting() const
|
||||
{
|
||||
using namespace std::string_view_literals;
|
||||
|
||||
// A valid response always starts with DCS 1 $ r.
|
||||
// Then the '0' parameter is to reset the SGR attributes to the defaults.
|
||||
std::wstring response = L"\033P1$r0";
|
||||
fmt::basic_memory_buffer<wchar_t, 64> response;
|
||||
response.append(L"\033P1$r0"sv);
|
||||
|
||||
TextAttribute attr;
|
||||
if (_pConApi->PrivateGetTextAttributes(attr))
|
||||
{
|
||||
// For each boolean attribute that is set, we add the appropriate
|
||||
// parameter value to the response string.
|
||||
const auto addAttribute = [&](const auto parameter, const auto enabled) {
|
||||
const auto addAttribute = [&](const auto& parameter, const auto enabled) {
|
||||
if (enabled)
|
||||
{
|
||||
response += parameter;
|
||||
response.append(parameter);
|
||||
}
|
||||
};
|
||||
addAttribute(L";1", attr.IsBold());
|
||||
addAttribute(L";2", attr.IsFaint());
|
||||
addAttribute(L";3", attr.IsItalic());
|
||||
addAttribute(L";4", attr.IsUnderlined());
|
||||
addAttribute(L";5", attr.IsBlinking());
|
||||
addAttribute(L";7", attr.IsReverseVideo());
|
||||
addAttribute(L";8", attr.IsInvisible());
|
||||
addAttribute(L";9", attr.IsCrossedOut());
|
||||
addAttribute(L";21", attr.IsDoublyUnderlined());
|
||||
addAttribute(L";53", attr.IsOverlined());
|
||||
addAttribute(L";1"sv, attr.IsBold());
|
||||
addAttribute(L";2"sv, attr.IsFaint());
|
||||
addAttribute(L";3"sv, attr.IsItalic());
|
||||
addAttribute(L";4"sv, attr.IsUnderlined());
|
||||
addAttribute(L";5"sv, attr.IsBlinking());
|
||||
addAttribute(L";7"sv, attr.IsReverseVideo());
|
||||
addAttribute(L";8"sv, attr.IsInvisible());
|
||||
addAttribute(L";9"sv, attr.IsCrossedOut());
|
||||
addAttribute(L";21"sv, attr.IsDoublyUnderlined());
|
||||
addAttribute(L";53"sv, attr.IsOverlined());
|
||||
|
||||
// We also need to add the appropriate color encoding parameters for
|
||||
// both the foreground and background colors.
|
||||
const auto addColor = [&](const auto base, const auto color) {
|
||||
const auto iterator = std::back_insert_iterator(response);
|
||||
if (color.IsIndex16())
|
||||
{
|
||||
const auto index = color.GetIndex();
|
||||
const auto colorParameter = base + (index >= 8 ? 60 : 0) + (index % 8);
|
||||
fmt::format_to(iterator, FMT_STRING(L";{}"), colorParameter);
|
||||
fmt::format_to(std::back_inserter(response), FMT_COMPILE(L";{}"), colorParameter);
|
||||
}
|
||||
else if (color.IsIndex256())
|
||||
{
|
||||
const auto index = color.GetIndex();
|
||||
fmt::format_to(iterator, FMT_STRING(L";{};5;{}"), base + 8, index);
|
||||
fmt::format_to(std::back_inserter(response), FMT_COMPILE(L";{};5;{}"), base + 8, index);
|
||||
}
|
||||
else if (color.IsRgb())
|
||||
{
|
||||
const auto r = GetRValue(color.GetRGB());
|
||||
const auto g = GetGValue(color.GetRGB());
|
||||
const auto b = GetBValue(color.GetRGB());
|
||||
fmt::format_to(iterator, FMT_STRING(L";{};2;{};{};{}"), base + 8, r, g, b);
|
||||
fmt::format_to(std::back_inserter(response), FMT_COMPILE(L";{};2;{};{};{}"), base + 8, r, g, b);
|
||||
}
|
||||
};
|
||||
addColor(30, attr.GetForeground());
|
||||
|
@ -2563,8 +2565,8 @@ void AdaptDispatch::_ReportSGRSetting() const
|
|||
}
|
||||
|
||||
// The 'm' indicates this is an SGR response, and ST ends the sequence.
|
||||
response += L"m\033\\";
|
||||
_WriteResponse(response);
|
||||
response.append(L"m\033\\"sv);
|
||||
_WriteResponse({ response.data(), response.size() });
|
||||
}
|
||||
|
||||
// Method Description:
|
||||
|
@ -2575,8 +2577,11 @@ void AdaptDispatch::_ReportSGRSetting() const
|
|||
// - None
|
||||
void AdaptDispatch::_ReportDECSTBMSetting() const
|
||||
{
|
||||
using namespace std::string_view_literals;
|
||||
|
||||
// A valid response always starts with DCS 1 $ r.
|
||||
std::wstring response = L"\033P1$r";
|
||||
fmt::basic_memory_buffer<wchar_t, 64> response;
|
||||
response.append(L"\033P1$r"sv);
|
||||
|
||||
CONSOLE_SCREEN_BUFFER_INFOEX csbiex = { 0 };
|
||||
csbiex.cbSize = sizeof(CONSOLE_SCREEN_BUFFER_INFOEX);
|
||||
|
@ -2592,11 +2597,10 @@ void AdaptDispatch::_ReportDECSTBMSetting() const
|
|||
marginTop = 1;
|
||||
marginBottom = csbiex.srWindow.Bottom - csbiex.srWindow.Top;
|
||||
}
|
||||
const auto iterator = std::back_insert_iterator(response);
|
||||
fmt::format_to(iterator, FMT_STRING(L"{};{}"), marginTop, marginBottom);
|
||||
fmt::format_to(std::back_inserter(response), FMT_COMPILE(L"{};{}"), marginTop, marginBottom);
|
||||
}
|
||||
|
||||
// The 'r' indicates this is an DECSTBM response, and ST ends the sequence.
|
||||
response += L"r\033\\";
|
||||
_WriteResponse(response);
|
||||
response.append(L"r\033\\"sv);
|
||||
_WriteResponse({ response.data(), response.size() });
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue