aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAyose <ayosec@gmail.com>2022-07-13 21:41:12 +0100
committerAyose <ayosec@gmail.com>2022-07-13 21:41:12 +0100
commit06b4c3cc8dacbcf26b0200e418b8f3cd23bab6c4 (patch)
treed22d2c06a18fe21bd439f13c406ab3db0e5cc73d
parent111986f9c056e813dceb6b1dc3a84c6769edfad5 (diff)
parent40bbdce6de8775b7bbc3f9a5731337d1dd05d195 (diff)
downloadr-alacritty-06b4c3cc8dacbcf26b0200e418b8f3cd23bab6c4.tar.gz
r-alacritty-06b4c3cc8dacbcf26b0200e418b8f3cd23bab6c4.tar.bz2
r-alacritty-06b4c3cc8dacbcf26b0200e418b8f3cd23bab6c4.zip
Merge branch 'master' into graphics-private
-rw-r--r--CHANGELOG.md2
-rw-r--r--alacritty/src/display/hint.rs44
-rw-r--r--alacritty_terminal/src/event.rs7
-rw-r--r--alacritty_terminal/src/term/mod.rs48
-rw-r--r--alacritty_terminal/src/vi_mode.rs7
-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.plist2
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>