#include "keycombination.h" #include #include #include "libnewsboat-ffi/src/keycombination.rs.h" #include "strprintf.h" namespace newsboat { KeyCombination convert(const keycombination::bridged::KeyCombination& key_combination) { ShiftState shift = ShiftState::NoShift; ControlState control = ControlState::NoControl; AltState alt = AltState::NoAlt; const auto key = std::string(keycombination::bridged::get_key(key_combination)); if (keycombination::bridged::has_shift(key_combination)) { shift = ShiftState::Shift; } if (keycombination::bridged::has_control(key_combination)) { control = ControlState::Control; } if (keycombination::bridged::has_alt(key_combination)) { alt = AltState::Alt; } return KeyCombination(key, shift, control, alt); } KeyCombination::KeyCombination(const std::string& key, ShiftState shift, ControlState control, AltState alt) : key(key) , shift(shift) , control(control) , alt(alt) { } KeyCombination KeyCombination::from_bindkey(const std::string& input) { const auto key_combination = keycombination::bridged::from_bindkey(input); return convert(*key_combination); } std::vector KeyCombination::from_bind(const std::string& input) { const auto key_combinations_rs = keycombination::bridged::from_bind(input); std::vector key_combinations; for (const auto& key_combination_rs : key_combinations_rs) { key_combinations.push_back(convert(key_combination_rs)); } return key_combinations; } std::string KeyCombination::to_bindkey_string() const { if (control == ControlState::Control && key.length() == 1) { return strprintf::fmt("^%c", static_cast(std::toupper(key[0]))); } else if (shift == ShiftState::Shift && key.length() == 1) { return strprintf::fmt("%c", static_cast(std::toupper(key[0]))); } else { return key; } } std::string KeyCombination::to_bind_string() const { if (key.size() == 1 && isalpha(key[0])) { if (has_shift() && !has_control() && !has_alt()) { return strprintf::fmt("%c", static_cast(std::toupper(key[0]))); } if (!has_shift() && has_control() && !has_alt()) { return strprintf::fmt("^%c", static_cast(std::toupper(key[0]))); } } if (key.size() == 1 && !has_shift() && !has_control() && !has_alt()) { return key; } std::string modifiers = ""; if (has_control()) { modifiers += "C-"; } if (has_shift()) { modifiers += "S-"; } if (has_alt()) { modifiers += "M-"; } return strprintf::fmt("<%s%s>", modifiers, key); } bool KeyCombination::operator==(const KeyCombination& other) const { return key == other.key && shift == other.shift && control == other.control && alt == other.alt; } bool KeyCombination::operator<(const KeyCombination& rhs) const { return std::tie(key, shift, control, alt) < std::tie(rhs.key, rhs.shift, rhs.control, rhs.alt); } std::string KeyCombination::get_key() const { return key; } bool KeyCombination::has_shift() const { return shift == ShiftState::Shift; } bool KeyCombination::has_control() const { return control == ControlState::Control; } bool KeyCombination::has_alt() const { return alt == AltState::Alt; } } // namespace newsboat tion value='derrick/fix/event-emitter-emit-throw-native'>derrick/fix/event-emitter-emit-throw-native Unnamed repository; edit this file 'description' to name the repository.
aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2023-07-29Update wtf-bindings.cppGravatar Jarred Sumner 1-13/+1
2023-07-29experiment: use bmalloc/libpas instead of mimalloc in most placesGravatar Jarred Sumner 13-82/+165
2023-07-29typo spawn.md (#3875)Gravatar Jhorman Tito 1-1/+1
2023-07-28Update nodejs-apis.mdGravatar Jarred Sumner 1-4/+4
2023-07-28Update nodejs-apis.mdGravatar Jarred Sumner 1-5/+5
2023-07-28Defer task destructionbun-v0.7.1Gravatar Jarred Sumner 1-1/+17
2023-07-28Stat largefile test (#3870)Gravatar Jarred Sumner 1-0/+22
* Add test for stat on a large file * Update fs.test.ts --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-07-28Ignore when printing to stdout errors (#3869)Gravatar Jarred Sumner 1-2/+4
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-07-28Fix bug with `/path/to/absolute/bun.lockb`Gravatar Jarred Sumner 1-10/+13
2023-07-28markBindingGravatar Dylan Conway 1-0/+1
2023-07-28optional parameterGravatar Dylan Conway 1-3/+3
2023-07-28Fixes #3868Gravatar Jarred Sumner 1-2/+3
Fixes #3868 Fixes #849
2023-07-28Fix assertion failure and possible infinite loop when printing as yarn lock ↵Gravatar Jarred Sumner 2-3/+16
files
2023-07-28Mark broken test as todoGravatar Jarred Sumner 2-1/+5
2023-07-28fix types and add message channel/port gc testGravatar Dylan Conway 2-62/+18
2023-07-28`MessageChannel` and `MessagePort` (#3860)Gravatar Dylan Conway 57-247/+3752
* copy and format * copy * copy * cleanup * some tests * spellcheck * add types * don't lock getting contextId * array buffer test
2023-07-28mark tests as todoGravatar Jarred Sumner 2-81/+75
2023-07-28add fork to child_process (#3851)Gravatar Vlad Sirenko 7-19/+446
* add fork to child_process * fix export * add test to child_process method `fork` * fmt fork * remove only from test
2023-07-28feat(bun/test): Impl. expect().pass() & expect().fail() (#3843)Gravatar Tiramify (A.K. Daniel) 6-5/+212
* Impl. pass & fail * fix * fix 2 * smol
2023-07-28fix the chunk boundary (`node:stream:createReadStream`) (#3853)Gravatar Ai Hoshino 3-8/+90
* fix the slice boundary. Close: #3668 * Add more boundary test case. * fix end is 0.
2023-07-28Support file: URLs in `fetch` (#3858)Gravatar Jarred Sumner 6-183/+281
* Support file: URLs in `fetch` * Update url.zig --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-07-28fix(tls) exposes native canonicalizeIP and fix rootCertificates (#3866)Gravatar Ciro Spaciari 7-29/+125
* exposes native canonicalizeIP * remove unintended duplicate * add tests * add tests for debug builds * add rootCertificates test and fix len * just randomize test ids on prisma * remove work around and bump usockets with the actual fix * fix case * bump uws
2023-07-28Fixes #3795 (#3856)Gravatar Jarred Sumner 11-6/+140
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-07-28Add todoGravatar Jarred Sumner 2-0/+8
cc @cirospaciari
2023-07-28Update pull_request_template.mdGravatar Jarred Sumner 1-1/+1
2023-07-28Update pull_request_template.mdGravatar Jarred Sumner 1-11/+16
2023-07-27Fix bug with // @bun annotation in main thread (#3855)Gravatar Jarred Sumner 4-2/+53
* Uncomment test * Fix bug with // @bun + async transpiler --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-07-27Add `Bun.isMainThread`Gravatar Jarred Sumner 7-3/+48
2023-07-27Uncomment testGravatar Jarred Sumner 1-1/+1
2023-07-27Resolve watch directories outside main thread + async iterator and symlink ↵Gravatar Ciro Spaciari 8-197/+523
fixes (#3846) * linux working pending tests with FSEvents * add more tests, fix async iterator * remove unnecessary check * fix macos symlink on directories * remove indirection layer * todos * fixes and some permission test * fix opsie and make prisma test more reliable * rebase with main * add comptime check for macOS * oops * oops2 * fix symlinks cascade on FSEvents * use JSC.WorkPool * use withResolver, createFIFO and fix close event on async iterator * remove unused events --------- Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2023-07-27Update pull_request_template.mdGravatar Jarred Sumner 1-1/+1
2023-07-27Update pull_request_template.mdGravatar Jarred Sumner 1-1/+1
2023-07-27Update pull_request_template.mdGravatar Jarred Sumner 1-1/+1
2023-07-27Update pull_request_template.mdGravatar Jarred Sumner 1-2/+2
2023-07-27Update pull_request_template.mdGravatar Jarred Sumner 1-0/+4
2023-07-27Update pull_request_template.mdGravatar Jarred Sumner 1-5/+11