mirror of
https://github.com/kovidgoyal/kitty
synced 2026-07-28 03:01:57 +02:00
Cleaner implementation of max_tab_title_length
Ensures that tab decorations are not affected
This commit is contained in:
@@ -1157,7 +1157,7 @@ this is rendered.
|
|||||||
|
|
||||||
opt('tab_title_max_length', '0', option_type='positive_int',
|
opt('tab_title_max_length', '0', option_type='positive_int',
|
||||||
long_text='''
|
long_text='''
|
||||||
The maximum number of cells that can be used to render a tab. A value of zero
|
The maximum number of cells that can be used to render the text in a tab. A value of zero
|
||||||
means that no limit is applied.
|
means that no limit is applied.
|
||||||
'''
|
'''
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -220,6 +220,8 @@ def draw_title(draw_data: DrawData, screen: Screen, tab: TabBarData, index: int,
|
|||||||
'title': tab.title,
|
'title': tab.title,
|
||||||
'tab': ta,
|
'tab': ta,
|
||||||
}
|
}
|
||||||
|
if draw_data.max_tab_title_length > 0:
|
||||||
|
max_title_length = min(max_title_length, draw_data.max_tab_title_length)
|
||||||
ColorFormatter.draw_data = draw_data
|
ColorFormatter.draw_data = draw_data
|
||||||
ColorFormatter.tab_data = tab
|
ColorFormatter.tab_data = tab
|
||||||
eval_locals = {
|
eval_locals = {
|
||||||
@@ -251,7 +253,13 @@ def draw_title(draw_data: DrawData, screen: Screen, tab: TabBarData, index: int,
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
report_template_failure(template, str(e))
|
report_template_failure(template, str(e))
|
||||||
title = tab.title
|
title = tab.title
|
||||||
|
before_draw = screen.cursor.x
|
||||||
draw_attributed_string(title, screen)
|
draw_attributed_string(title, screen)
|
||||||
|
if draw_data.max_tab_title_length > 0:
|
||||||
|
x_limit = before_draw + draw_data.max_tab_title_length
|
||||||
|
if screen.cursor.x > x_limit:
|
||||||
|
screen.cursor.x = x_limit - 1
|
||||||
|
screen.draw('…')
|
||||||
|
|
||||||
|
|
||||||
DrawTabFunc = Callable[[DrawData, Screen, TabBarData, int, int, int, bool, ExtraData], int]
|
DrawTabFunc = Callable[[DrawData, Screen, TabBarData, int, int, int, bool, ExtraData], int]
|
||||||
@@ -286,8 +294,6 @@ def draw_tab_with_slant(
|
|||||||
else:
|
else:
|
||||||
draw_sep(left_sep)
|
draw_sep(left_sep)
|
||||||
screen.draw(' ')
|
screen.draw(' ')
|
||||||
if draw_data.max_tab_title_length > 0:
|
|
||||||
max_tab_length = min(draw_data.max_tab_title_length, max_tab_length)
|
|
||||||
draw_title(draw_data, screen, tab, index, max_tab_length)
|
draw_title(draw_data, screen, tab, index, max_tab_length)
|
||||||
extra = screen.cursor.x - before - max_tab_length
|
extra = screen.cursor.x - before - max_tab_length
|
||||||
if extra >= 0:
|
if extra >= 0:
|
||||||
@@ -309,8 +315,6 @@ def draw_tab_with_separator(
|
|||||||
) -> int:
|
) -> int:
|
||||||
if draw_data.leading_spaces:
|
if draw_data.leading_spaces:
|
||||||
screen.draw(' ' * draw_data.leading_spaces)
|
screen.draw(' ' * draw_data.leading_spaces)
|
||||||
if draw_data.max_tab_title_length > 0:
|
|
||||||
max_tab_length = min(draw_data.max_tab_title_length, max_tab_length)
|
|
||||||
draw_title(draw_data, screen, tab, index, max_tab_length)
|
draw_title(draw_data, screen, tab, index, max_tab_length)
|
||||||
trailing_spaces = min(max_tab_length - 1, draw_data.trailing_spaces)
|
trailing_spaces = min(max_tab_length - 1, draw_data.trailing_spaces)
|
||||||
max_tab_length -= trailing_spaces
|
max_tab_length -= trailing_spaces
|
||||||
@@ -342,8 +346,6 @@ def draw_tab_with_fade(
|
|||||||
screen.cursor.bg = bg
|
screen.cursor.bg = bg
|
||||||
screen.draw(' ')
|
screen.draw(' ')
|
||||||
screen.cursor.bg = orig_bg
|
screen.cursor.bg = orig_bg
|
||||||
if draw_data.max_tab_title_length > 0:
|
|
||||||
max_tab_length = min(draw_data.max_tab_title_length, max_tab_length)
|
|
||||||
draw_title(draw_data, screen, tab, index, max(0, max_tab_length - 8))
|
draw_title(draw_data, screen, tab, index, max(0, max_tab_length - 8))
|
||||||
extra = screen.cursor.x - before - max_tab_length
|
extra = screen.cursor.x - before - max_tab_length
|
||||||
if extra > 0:
|
if extra > 0:
|
||||||
@@ -396,8 +398,6 @@ def draw_tab_with_powerline(
|
|||||||
start_draw = 1
|
start_draw = 1
|
||||||
|
|
||||||
screen.cursor.bg = tab_bg
|
screen.cursor.bg = tab_bg
|
||||||
if draw_data.max_tab_title_length > 0:
|
|
||||||
max_tab_length = min(draw_data.max_tab_title_length, max_tab_length)
|
|
||||||
if min_title_length >= max_tab_length:
|
if min_title_length >= max_tab_length:
|
||||||
screen.draw('…')
|
screen.draw('…')
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user