mirror of
https://github.com/NixOS/nix.git
synced 2024-11-25 08:12:29 +00:00
Filter OSC 8 correctly
This allows Nix to use lowdown 1.2.0 which outputs OSC-8 links.
This commit is contained in:
parent
14edb78d53
commit
1301f8434d
@ -57,4 +57,9 @@ TEST(filterANSIEscapes, utf8)
|
|||||||
ASSERT_EQ(filterANSIEscapes("f𐍈𐍈bär", true, 4), "f𐍈𐍈b");
|
ASSERT_EQ(filterANSIEscapes("f𐍈𐍈bär", true, 4), "f𐍈𐍈b");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(filterANSIEscapes, osc8)
|
||||||
|
{
|
||||||
|
ASSERT_EQ(filterANSIEscapes("\e]8;;http://example.com\e\\This is a link\e]8;;\e\\"), "This is a link");
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace nix
|
} // namespace nix
|
||||||
|
@ -45,6 +45,13 @@ std::string filterANSIEscapes(std::string_view s, bool filterAll, unsigned int w
|
|||||||
while (i != s.end() && *i >= 0x20 && *i <= 0x2f) e += *i++;
|
while (i != s.end() && *i >= 0x20 && *i <= 0x2f) e += *i++;
|
||||||
// eat final byte
|
// eat final byte
|
||||||
if (i != s.end() && *i >= 0x40 && *i <= 0x7e) e += last = *i++;
|
if (i != s.end() && *i >= 0x40 && *i <= 0x7e) e += last = *i++;
|
||||||
|
} else if (i != s.end() && *i == ']') {
|
||||||
|
// OSC
|
||||||
|
e += *i++;
|
||||||
|
// eat ESC
|
||||||
|
while (i != s.end() && *i != '\e') e += *i++;
|
||||||
|
// eat backslash
|
||||||
|
if (i != s.end() && *i == '\\') e += last = *i++;
|
||||||
} else {
|
} else {
|
||||||
if (i != s.end() && *i >= 0x40 && *i <= 0x5f) e += *i++;
|
if (i != s.end() && *i >= 0x40 && *i <= 0x5f) e += *i++;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user