diff options
| author | Ayose <ayosec@gmail.com> | 2022-07-13 21:41:12 +0100 |
|---|---|---|
| committer | Ayose <ayosec@gmail.com> | 2022-07-13 21:41:12 +0100 |
| commit | 06b4c3cc8dacbcf26b0200e418b8f3cd23bab6c4 (patch) | |
| tree | d22d2c06a18fe21bd439f13c406ab3db0e5cc73d | |
| parent | 111986f9c056e813dceb6b1dc3a84c6769edfad5 (diff) | |
| parent | 40bbdce6de8775b7bbc3f9a5731337d1dd05d195 (diff) | |
| download | r-alacritty-06b4c3cc8dacbcf26b0200e418b8f3cd23bab6c4.tar.gz r-alacritty-06b4c3cc8dacbcf26b0200e418b8f3cd23bab6c4.tar.bz2 r-alacritty-06b4c3cc8dacbcf26b0200e418b8f3cd23bab6c4.zip | |
Merge branch 'master' into graphics-private
| -rw-r--r-- | CHANGELOG.md | 2 | ||||
| -rw-r--r-- | alacritty/src/display/hint.rs | 44 | ||||
| -rw-r--r-- | alacritty_terminal/src/event.rs | 7 | ||||
| -rw-r--r-- | alacritty_terminal/src/term/mod.rs | 48 | ||||
| -rw-r--r-- | alacritty_terminal/src/vi_mode.rs | 7 | ||||
| -rw-r--r-- | extra/linux/org.alacritty.Alacritty.appdata.xml (renamed from extra/linux/io.alacritty.Alacritty.appdata.xml) | 4 | ||||
| -rw-r--r-- | extra/osx/Alacritty.app/Contents/Info.plist | 2 |
7 files changed, 79 insertions, 35 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 47aa8b2f..b47a07f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Packaging - Minimum Rust version has been bumped to 1.57.0 +- Renamed `io.alacritty.Alacritty.appdata.xml` to `org.alacritty.Alacritty.appdata.xml` +- Renamed `io.alacritty` to `org.alacritty` for `Alacritty.app` ### Added diff --git a/alacritty/src/display/hint.rs b/alacritty/src/display/hint.rs index a59f2bc7..887840e9 100644 --- a/alacritty/src/display/hint.rs +++ b/alacritty/src/display/hint.rs @@ -79,7 +79,7 @@ impl HintState { // Add escape sequence hyperlinks. if hint.content.hyperlinks { - self.matches.extend(visible_unique_hyperlink_iter(term)); + self.matches.extend(visible_unique_hyperlinks_iter(term)); } // Add visible regex matches. @@ -298,7 +298,7 @@ pub fn visible_regex_match_iter<'a, T>( } /// Iterate over all visible hyperlinks, yanking only unique ones. -pub fn visible_unique_hyperlink_iter<T>(term: &Term<T>) -> impl Iterator<Item = Match> + '_ { +pub fn visible_unique_hyperlinks_iter<T>(term: &Term<T>) -> impl Iterator<Item = Match> + '_ { let mut display_iter = term.grid().display_iter().peekable(); // Avoid creating hints for the same hyperlinks, but from a different places. @@ -308,7 +308,7 @@ pub fn visible_unique_hyperlink_iter<T>(term: &Term<T>) -> impl Iterator<Item = // Find the start of the next unique hyperlink. let (cell, hyperlink) = display_iter.find_map(|cell| { let hyperlink = cell.hyperlink()?; - unique_hyperlinks.contains(&hyperlink).then(|| { + (!unique_hyperlinks.contains(&hyperlink)).then(|| { unique_hyperlinks.insert(hyperlink.clone()); (cell, hyperlink) }) @@ -582,6 +582,7 @@ impl<'a, T> Iterator for HintPostProcessor<'a, T> { #[cfg(test)] mod tests { + use alacritty_terminal::ansi::Handler; use alacritty_terminal::index::{Column, Line}; use alacritty_terminal::term::test::mock_term; @@ -642,4 +643,41 @@ mod tests { assert_eq!(count, 0); } + + #[test] + fn collect_unique_hyperlinks() { + let mut term = mock_term("000\r\n111"); + term.goto(Line(0), Column(0)); + + let hyperlink_foo = Hyperlink::new(Some("1"), "foo"); + let hyperlink_bar = Hyperlink::new(Some("2"), "bar"); + + // Create 2 hyperlinks on the first line. + term.set_hyperlink(Some(hyperlink_foo.clone())); + term.input('b'); + term.input('a'); + term.set_hyperlink(Some(hyperlink_bar.clone())); + term.input('r'); + term.set_hyperlink(Some(hyperlink_foo.clone())); + term.goto(Line(1), Column(0)); + + // Ditto for the second line. + term.set_hyperlink(Some(hyperlink_foo)); + term.input('b'); + term.input('a'); + term.set_hyperlink(Some(hyperlink_bar)); + term.input('r'); + term.set_hyperlink(None); + + let mut unique_hyperlinks = visible_unique_hyperlinks_iter(&term); + assert_eq!( + Some(Match::new(Point::new(Line(0), Column(0)), Point::new(Line(0), Column(1)))), + unique_hyperlinks.next() + ); + assert_eq!( + Some(Match::new(Point::new(Line(0), Column(2)), Point::new(Line(0), Column(2)))), + unique_hyperlinks.next() + ); + assert_eq!(None, unique_hyperlinks.next()); + } } diff --git a/alacritty_terminal/src/event.rs b/alacritty_terminal/src/event.rs index 9e5031a0..b592ce1b 100644 --- a/alacritty_terminal/src/event.rs +++ b/alacritty_terminal/src/event.rs @@ -99,6 +99,7 @@ pub trait EventListener { fn send_event(&self, _event: Event) {} } -/// Placeholder implementation for tests. -#[cfg(test)] -impl EventListener for () {} +/// Null sink for events. +pub struct VoidListener; + +impl EventListener for VoidListener {} diff --git a/alacritty_terminal/src/term/mod.rs b/alacritty_terminal/src/term/mod.rs index 3d71a955..4fc4032b 100644 --- a/alacritty_terminal/src/term/mod.rs +++ b/alacritty_terminal/src/term/mod.rs @@ -2323,6 +2323,7 @@ pub mod test { use unicode_width::UnicodeWidthChar; use crate::config::Config; + use crate::event::VoidListener; use crate::index::Column; #[derive(Serialize, Deserialize)] @@ -2370,7 +2371,7 @@ pub mod test { /// hello\n:)\r\ntest", /// ); /// ``` - pub fn mock_term(content: &str) -> Term<()> { + pub fn mock_term(content: &str) -> Term<VoidListener> { let lines: Vec<&str> = content.split('\n').collect(); let num_cols = lines .iter() @@ -2380,7 +2381,7 @@ pub mod test { // Create terminal with the appropriate dimensions. let size = TermSize::new(num_cols, lines.len()); - let mut term = Term::new(&Config::default(), &size, ()); + let mut term = Term::new(&Config::default(), &size, VoidListener); // Fill terminal with content. for (line, text) in lines.iter().enumerate() { @@ -2416,6 +2417,7 @@ mod tests { use crate::ansi::{self, CharsetIndex, Handler, StandardCharset}; use crate::config::Config; + use crate::event::VoidListener; use crate::grid::{Grid, Scroll}; use crate::index::{Column, Point, Side}; use crate::selection::{Selection, SelectionType}; @@ -2425,7 +2427,7 @@ mod tests { #[test] fn scroll_display_page_up() { let size = TermSize::new(5, 10); - let mut term = Term::new(&Config::default(), &size, ()); + let mut term = Term::new(&Config::default(), &size, VoidListener); // Create 11 lines of scrollback. for _ in 0..20 { @@ -2451,7 +2453,7 @@ mod tests { #[test] fn scroll_display_page_down() { let size = TermSize::new(5, 10); - let mut term = Term::new(&Config::default(), &size, ()); + let mut term = Term::new(&Config::default(), &size, VoidListener); // Create 11 lines of scrollback. for _ in 0..20 { @@ -2481,7 +2483,7 @@ mod tests { #[test] fn simple_selection_works() { let size = TermSize::new(5, 5); - let mut term = Term::new(&Config::default(), &size, ()); + let mut term = Term::new(&Config::default(), &size, VoidListener); let grid = term.grid_mut(); for i in 0..4 { if i == 1 { @@ -2527,7 +2529,7 @@ mod tests { #[test] fn semantic_selection_works() { let size = TermSize::new(5, 3); - let mut term = Term::new(&Config::default(), &size, ()); + let mut term = Term::new(&Config::default(), &size, VoidListener); let mut grid: Grid<Cell> = Grid::new(3, 5, 0); for i in 0..5 { for j in 0..2 { @@ -2575,7 +2577,7 @@ mod tests { #[test] fn line_selection_works() { let size = TermSize::new(5, 1); - let mut term = Term::new(&Config::default(), &size, ()); + let mut term = Term::new(&Config::default(), &size, VoidListener); let mut grid: Grid<Cell> = Grid::new(1, 5, 0); for i in 0..5 { grid[Line(0)][Column(i)].c = 'a'; @@ -2596,7 +2598,7 @@ mod tests { #[test] fn block_selection_works() { let size = TermSize::new(5, 5); - let mut term = Term::new(&Config::default(), &size, ()); + let mut term = Term::new(&Config::default(), &size, VoidListener); let grid = term.grid_mut(); for i in 1..4 { grid[Line(i)][Column(0)].c = '"'; @@ -2652,7 +2654,7 @@ mod tests { #[test] fn input_line_drawing_character() { let size = TermSize::new(7, 17); - let mut term = Term::new(&Config::default(), &size, ()); + let mut term = Term::new(&Config::default(), &size, VoidListener); let cursor = Point::new(Line(0), Column(0)); term.configure_charset(CharsetIndex::G0, StandardCharset::SpecialCharacterAndLineDrawing); term.input('a'); @@ -2663,7 +2665,7 @@ mod tests { #[test] fn clearing_viewport_keeps_history_position() { let size = TermSize::new(10, 20); - let mut term = Term::new(&Config::default(), &size, ()); + let mut term = Term::new(&Config::default(), &size, VoidListener); // Create 10 lines of scrollback. for _ in 0..29 { @@ -2684,7 +2686,7 @@ mod tests { #[test] fn clearing_viewport_with_vi_mode_keeps_history_position() { let size = TermSize::new(10, 20); - let mut term = Term::new(&Config::default(), &size, ()); + let mut term = Term::new(&Config::default(), &size, VoidListener); // Create 10 lines of scrollback. for _ in 0..29 { @@ -2710,7 +2712,7 @@ mod tests { #[test] fn clearing_scrollback_resets_display_offset() { let size = TermSize::new(10, 20); - let mut term = Term::new(&Config::default(), &size, ()); + let mut term = Term::new(&Config::default(), &size, VoidListener); // Create 10 lines of scrollback. for _ in 0..29 { @@ -2731,7 +2733,7 @@ mod tests { #[test] fn clearing_scrollback_sets_vi_cursor_into_viewport() { let size = TermSize::new(10, 20); - let mut term = Term::new(&Config::default(), &size, ()); + let mut term = Term::new(&Config::default(), &size, VoidListener); // Create 10 lines of scrollback. for _ in 0..29 { @@ -2757,7 +2759,7 @@ mod tests { #[test] fn clear_saved_lines() { let size = TermSize::new(7, 17); - let mut term = Term::new(&Config::default(), &size, ()); + let mut term = Term::new(&Config::default(), &size, VoidListener); // Add one line of scrollback. term.grid.scroll_up(&(Line(0)..Line(1)), 1); @@ -2779,7 +2781,7 @@ mod tests { #[test] fn vi_cursor_keep_pos_on_scrollback_buffer() { let size = TermSize::new(5, 10); - let mut term = Term::new(&Config::default(), &size, ()); + let mut term = Term::new(&Config::default(), &size, VoidListener); // Create 11 lines of scrollback. for _ in 0..20 { @@ -2799,7 +2801,7 @@ mod tests { #[test] fn grow_lines_updates_active_cursor_pos() { let mut size = TermSize::new(100, 10); - let mut term = Term::new(&Config::default(), &size, ()); + let mut term = Term::new(&Config::default(), &size, VoidListener); // Create 10 lines of scrollback. for _ in 0..19 { @@ -2819,7 +2821,7 @@ mod tests { #[test] fn grow_lines_updates_inactive_cursor_pos() { let mut size = TermSize::new(100, 10); - let mut term = Term::new(&Config::default(), &size, ()); + let mut term = Term::new(&Config::default(), &size, VoidListener); // Create 10 lines of scrollback. for _ in 0..19 { @@ -2845,7 +2847,7 @@ mod tests { #[test] fn shrink_lines_updates_active_cursor_pos() { let mut size = TermSize::new(100, 10); - let mut term = Term::new(&Config::default(), &size, ()); + let mut term = Term::new(&Config::default(), &size, VoidListener); // Create 10 lines of scrollback. for _ in 0..19 { @@ -2865,7 +2867,7 @@ mod tests { #[test] fn shrink_lines_updates_inactive_cursor_pos() { let mut size = TermSize::new(100, 10); - let mut term = Term::new(&Config::default(), &size, ()); + let mut term = Term::new(&Config::default(), &size, VoidListener); // Create 10 lines of scrollback. for _ in 0..19 { @@ -2891,7 +2893,7 @@ mod tests { #[test] fn damage_public_usage() { let size = TermSize::new(10, 10); - let mut term = Term::new(&Config::default(), &size, ()); + let mut term = Term::new(&Config::default(), &size, VoidListener); // Reset terminal for partial damage tests since it's initialized as fully damaged. term.reset_damage(); @@ -2984,7 +2986,7 @@ mod tests { #[test] fn damage_cursor_movements() { let size = TermSize::new(10, 10); - let mut term = Term::new(&Config::default(), &size, ()); + let mut term = Term::new(&Config::default(), &size, VoidListener); let num_cols = term.columns(); // Reset terminal for partial damage tests since it's initialized as fully damaged. term.reset_damage(); @@ -3082,7 +3084,7 @@ mod tests { #[test] fn full_damage() { let size = TermSize::new(100, 10); - let mut term = Term::new(&Config::default(), &size, ()); + let mut term = Term::new(&Config::default(), &size, VoidListener); assert!(term.damage.is_fully_damaged); for _ in 0..20 { @@ -3168,7 +3170,7 @@ mod tests { #[test] fn window_title() { let size = TermSize::new(7, 17); - let mut term = Term::new(&Config::default(), &size, ()); + let mut term = Term::new(&Config::default(), &size, VoidListener); // Title None by default. assert_eq!(term.title, None); diff --git a/alacritty_terminal/src/vi_mode.rs b/alacritty_terminal/src/vi_mode.rs index 7f1d40ee..0cdc6a69 100644 --- a/alacritty_terminal/src/vi_mode.rs +++ b/alacritty_terminal/src/vi_mode.rs @@ -380,13 +380,14 @@ mod tests { use crate::ansi::Handler; use crate::config::Config; + use crate::event::VoidListener; use crate::index::{Column, Line}; use crate::term::test::TermSize; use crate::term::Term; - fn term() -> Term<()> { + fn term() -> Term<VoidListener> { let size = TermSize::new(20, 20); - Term::new(&Config::default(), &size, ()) + Term::new(&Config::default(), &size, VoidListener) } #[test] @@ -493,7 +494,7 @@ mod tests { assert_eq!(cursor.point, Point::new(Line(0), Column(0))); } - fn motion_semantic_term() -> Term<()> { + fn motion_semantic_term() -> Term<VoidListener> { let mut term = term(); term.grid_mut()[Line(0)][Column(0)].c = 'x'; diff --git a/extra/linux/io.alacritty.Alacritty.appdata.xml b/extra/linux/org.alacritty.Alacritty.appdata.xml index af82c474..ddfdd281 100644 --- a/extra/linux/io.alacritty.Alacritty.appdata.xml +++ b/extra/linux/org.alacritty.Alacritty.appdata.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Copyright 2016-2019 Joe Wilm, The Alacritty Project Contributors --> +<!-- Copyright 2016-2022 Joe Wilm, The Alacritty Project Contributors --> <component type="desktop-application"> - <id>io.alacritty.Alacritty</id> + <id>org.alacritty.Alacritty</id> <!-- Translators: The application name --> <name>Alacritty</name> <project_license>APACHE-2.0</project_license> diff --git a/extra/osx/Alacritty.app/Contents/Info.plist b/extra/osx/Alacritty.app/Contents/Info.plist index 37ea41dc..593b9c6b 100644 --- a/extra/osx/Alacritty.app/Contents/Info.plist +++ b/extra/osx/Alacritty.app/Contents/Info.plist @@ -7,7 +7,7 @@ <key>CFBundleExecutable</key> <string>alacritty</string> <key>CFBundleIdentifier</key> - <string>io.alacritty</string> + <string>org.alacritty</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> |