mirror of
https://github.com/kovidgoyal/kitty
synced 2026-07-15 13:04:38 +02:00
Move hyperlink hashmap to verstable
Also speedup getting url for hyperlink id by using a second hash map for it. Change behavior when there are too many hyperlinks to discard new hyperlinks instead of remapping old hyperlink id and making some old hyperlink wrong.
This commit is contained in:
@@ -825,32 +825,32 @@ class TestScreen(BaseTest):
|
||||
s.draw('hij')
|
||||
self.ae(s.line(1).hyperlink_ids(), (1, 1, 2, 2, 2))
|
||||
set_link()
|
||||
self.ae([('a:url-a', 1), (':url-b', 2)], s.hyperlinks_as_list())
|
||||
self.ae({('a:url-a', 1), (':url-b', 2)}, s.hyperlinks_as_set())
|
||||
s.garbage_collect_hyperlink_pool()
|
||||
self.ae([('a:url-a', 1), (':url-b', 2)], s.hyperlinks_as_list())
|
||||
self.ae({('a:url-a', 1), (':url-b', 2)}, s.hyperlinks_as_set())
|
||||
for i in range(s.lines + 2):
|
||||
s.linefeed()
|
||||
s.garbage_collect_hyperlink_pool()
|
||||
self.ae([('a:url-a', 1), (':url-b', 2)], s.hyperlinks_as_list())
|
||||
self.ae({('a:url-a', 1), (':url-b', 2)}, s.hyperlinks_as_set())
|
||||
for i in range(s.lines * 2):
|
||||
s.linefeed()
|
||||
s.garbage_collect_hyperlink_pool()
|
||||
self.assertFalse(s.hyperlinks_as_list())
|
||||
self.assertFalse(s.hyperlinks_as_set())
|
||||
set_link('url-a', 'x')
|
||||
s.draw('a')
|
||||
set_link('url-a', 'y')
|
||||
s.draw('a')
|
||||
set_link()
|
||||
self.ae([('x:url-a', 1), ('y:url-a', 2)], s.hyperlinks_as_list())
|
||||
self.ae({('x:url-a', 1), ('y:url-a', 2)}, s.hyperlinks_as_set())
|
||||
|
||||
s = self.create_screen()
|
||||
set_link('u' * 2048)
|
||||
s.draw('a')
|
||||
self.ae([(':' + 'u' * 2045, 1)], s.hyperlinks_as_list())
|
||||
self.ae({(':' + 'u' * 2045, 1)}, s.hyperlinks_as_set())
|
||||
s = self.create_screen()
|
||||
set_link('u' * 2048, 'i' * 300)
|
||||
s.draw('a')
|
||||
self.ae([('i'*256 + ':' + 'u' * (2045 - 256), 1)], s.hyperlinks_as_list())
|
||||
self.ae({('i'*256 + ':' + 'u' * (2045 - 256), 1)}, s.hyperlinks_as_set())
|
||||
|
||||
s = self.create_screen()
|
||||
set_link('1'), s.draw('1')
|
||||
@@ -859,19 +859,19 @@ class TestScreen(BaseTest):
|
||||
s.cursor.x = 1
|
||||
set_link(), s.draw('X')
|
||||
self.ae(s.line(0).hyperlink_ids(), (1, 0, 3, 0, 0))
|
||||
self.ae([(':1', 1), (':2', 2), (':3', 3)], s.hyperlinks_as_list())
|
||||
self.ae({(':1', 1), (':2', 2), (':3', 3)}, s.hyperlinks_as_set())
|
||||
s.garbage_collect_hyperlink_pool()
|
||||
self.ae([(':1', 1), (':3', 2)], s.hyperlinks_as_list())
|
||||
self.ae({(':1', 1), (':3', 2)}, s.hyperlinks_as_set())
|
||||
set_link('3'), s.draw('3')
|
||||
self.ae([(':1', 1), (':3', 2)], s.hyperlinks_as_list())
|
||||
self.ae({(':1', 1), (':3', 2)}, s.hyperlinks_as_set())
|
||||
set_link('4'), s.draw('4')
|
||||
self.ae([(':1', 1), (':3', 2), (':4', 3)], s.hyperlinks_as_list())
|
||||
self.ae({(':1', 1), (':3', 2), (':4', 3)}, s.hyperlinks_as_set())
|
||||
|
||||
s = self.create_screen()
|
||||
set_link('1'), s.draw('1')
|
||||
set_link('2'), s.draw('2')
|
||||
set_link('1'), s.draw('1')
|
||||
self.ae([(':2', 2), (':1', 1)], s.hyperlinks_as_list())
|
||||
self.ae({(':2', 2), (':1', 1)}, s.hyperlinks_as_set())
|
||||
|
||||
s = self.create_screen()
|
||||
set_link('1'), s.draw('12'), set_link(), s.draw('X'), set_link('1'), s.draw('3')
|
||||
|
||||
Reference in New Issue
Block a user