1
0
Fork 0
mirror of https://github.com/alacritty/alacritty.git synced 2024-11-18 13:55:23 -05:00

Don't substitute \n in char bindings

This broke unintentionally due to routing paste-like input
via paste function.

Fixes #7476.
This commit is contained in:
Kirill Chibisov 2023-12-30 19:29:21 +04:00 committed by GitHub
parent b067fcca33
commit 107c8720c3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 7 deletions

View file

@ -12,6 +12,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- `alacritty migrate` failing with nonexistent imports
- `Alt` bindings requiring composed key rather than pre-composed one on macOS
- `Alt + Control` bindings not working on Windows
- `chars = "\u000A"` action in bindings inserting `\n`
## 0.13.0

View file

@ -839,13 +839,23 @@ impl<'a, N: Notify + 'a, T: EventListener> input::ActionContext<T> for ActionCon
} else {
self.on_terminal_input_start();
// In non-bracketed (ie: normal) mode, terminal applications cannot distinguish
// pasted data from keystrokes.
// In theory, we should construct the keystrokes needed to produce the data we are
// pasting... since that's neither practical nor sensible (and probably an impossible
// task to solve in a general way), we'll just replace line breaks (windows and unix
// style) with a single carriage return (\r, which is what the Enter key produces).
self.write_to_pty(text.replace("\r\n", "\r").replace('\n', "\r").into_bytes());
let payload = if bracketed {
// In non-bracketed (ie: normal) mode, terminal applications cannot distinguish
// pasted data from keystrokes.
//
// In theory, we should construct the keystrokes needed to produce the data we are
// pasting... since that's neither practical nor sensible (and probably an
// impossible task to solve in a general way), we'll just replace line breaks
// (windows and unix style) with a single carriage return (\r, which is what the
// Enter key produces).
text.replace("\r\n", "\r").replace('\n', "\r").into_bytes()
} else {
// When we explicitly disable bracketed paste don't manipulate with the input,
// so we pass user input as is.
text.to_owned().into_bytes()
};
self.write_to_pty(payload);
}
}