a544f56e17
## Summary of the Pull Request This adds a new setting `intenseTextStyle`. It's a per-appearance, control setting, defaulting to `"all"`. * When set to `"all"` or `["bold", "bright"]`, then we'll render text as both **bold** and bright (1.10 behavior) * When set to `"bold"`, `["bold"]`, we'll render text formatted with `^[[1m` as **bold**, but not bright * When set to `"bright"`, `["bright"]`, we'll render text formatted with `^[[1m` as bright, but not bold. This is the pre 1.10 behavior * When set to `"none"`, we won't do anything special for it at all. ## references * I last did this in #10648. This time it's an enum, so we can add bright in the future. It's got positive wording this time. * ~We will want to add `"bright"` as a value in the future, to disable the auto intense->bright conversion.~ I just did that now. * #5682 is related ## PR Checklist * [x] Closes #10576 * [x] I seriously don't think we have an issue for "disable intense is bright", but I'm not crazy, people wanted that, right? https://github.com/microsoft/terminal/issues/2916#issuecomment-544880423 was the closest * [x] I work here * [x] Tests added/passed * [x] https://github.com/MicrosoftDocs/terminal/pull/381 ## Validation Steps Performed <!-- ![image](https://user-images.githubusercontent.com/18356694/125480327-07f6b711-6bca-4c1b-9a76-75fc978c702d.png) --> ![image](https://user-images.githubusercontent.com/18356694/128929228-504933ee-cf50-43a2-9982-55110ba39191.png) Yea that works. Printed some bold text, toggled it on, the text was no longer bold. hooray. ### EDIT, 10 Aug ```json "intenseTextStyle": "none", "intenseTextStyle": "bold", "intenseTextStyle": "bright", "intenseTextStyle": "all", "intenseTextStyle": ["bold", "bright"], ``` all work now. Repro script: ```sh printf "\e[1m[bold]\e[m[normal]\e[34m[blue]\e[1m[bold blue]\e[m\n" ```
63 lines
3.2 KiB
C++
63 lines
3.2 KiB
C++
// Copyright (c) Microsoft Corporation
|
|
// Licensed under the MIT license.
|
|
|
|
#include "pch.h"
|
|
#include "ActionAndArgs.h"
|
|
#include "JsonUtils.h"
|
|
#include "TerminalSettingsSerializationHelpers.h"
|
|
|
|
#include "EnumMappings.h"
|
|
#include "EnumMappings.g.cpp"
|
|
|
|
using namespace winrt;
|
|
using namespace winrt::Windows::Foundation::Collections;
|
|
using namespace ::Microsoft::Terminal::Settings::Model;
|
|
|
|
#define DEFINE_ENUM_MAP(type, name) \
|
|
winrt::Windows::Foundation::Collections::IMap<winrt::hstring, type> EnumMappings::name() \
|
|
{ \
|
|
static IMap<winrt::hstring, type> enumMap = []() { \
|
|
auto map = single_threaded_map<winrt::hstring, type>(); \
|
|
for (auto [enumStr, enumVal] : JsonUtils::ConversionTrait<type>::mappings) \
|
|
{ \
|
|
map.Insert(winrt::to_hstring(enumStr), enumVal); \
|
|
} \
|
|
return map; \
|
|
}(); \
|
|
return enumMap; \
|
|
}
|
|
|
|
namespace winrt::Microsoft::Terminal::Settings::Model::implementation
|
|
{
|
|
// Global Settings
|
|
DEFINE_ENUM_MAP(winrt::Windows::UI::Xaml::ElementTheme, ElementTheme);
|
|
DEFINE_ENUM_MAP(winrt::Microsoft::UI::Xaml::Controls::TabViewWidthMode, TabViewWidthMode);
|
|
DEFINE_ENUM_MAP(Model::LaunchMode, LaunchMode);
|
|
DEFINE_ENUM_MAP(Model::TabSwitcherMode, TabSwitcherMode);
|
|
DEFINE_ENUM_MAP(Microsoft::Terminal::Control::CopyFormat, CopyFormat);
|
|
DEFINE_ENUM_MAP(Model::WindowingMode, WindowingMode);
|
|
|
|
// Profile Settings
|
|
DEFINE_ENUM_MAP(Model::CloseOnExitMode, CloseOnExitMode);
|
|
DEFINE_ENUM_MAP(Microsoft::Terminal::Control::ScrollbarState, ScrollbarState);
|
|
DEFINE_ENUM_MAP(Windows::UI::Xaml::Media::Stretch, BackgroundImageStretchMode);
|
|
DEFINE_ENUM_MAP(Microsoft::Terminal::Control::TextAntialiasingMode, TextAntialiasingMode);
|
|
DEFINE_ENUM_MAP(Microsoft::Terminal::Core::CursorStyle, CursorStyle);
|
|
DEFINE_ENUM_MAP(Microsoft::Terminal::Settings::Model::IntenseStyle, IntenseTextStyle);
|
|
|
|
// FontWeight is special because the JsonUtils::ConversionTrait for it
|
|
// creates a FontWeight object, but we need to use the uint16_t value.
|
|
winrt::Windows::Foundation::Collections::IMap<winrt::hstring, uint16_t> EnumMappings::FontWeight()
|
|
{
|
|
static IMap<winrt::hstring, uint16_t> enumMap = []() {
|
|
auto map = single_threaded_map<winrt::hstring, uint16_t>();
|
|
for (auto [enumStr, enumVal] : JsonUtils::ConversionTrait<Windows::UI::Text::FontWeight>::mappings)
|
|
{
|
|
map.Insert(winrt::to_hstring(enumStr), enumVal);
|
|
}
|
|
return map;
|
|
}();
|
|
return enumMap;
|
|
}
|
|
}
|