diff kitten: Allow theming the selection background/foreground as well
This commit is contained in:
parent
07bd371e21
commit
59743fd7a1
@ -83,8 +83,10 @@ c('filler_bg', '#fafbfc', long_text=_('Filler (empty) line background'))
|
|||||||
c('hunk_margin_bg', '#dbedff', long_text=_('Hunk header colors'))
|
c('hunk_margin_bg', '#dbedff', long_text=_('Hunk header colors'))
|
||||||
c('hunk_bg', '#f1f8ff')
|
c('hunk_bg', '#f1f8ff')
|
||||||
|
|
||||||
c('search_bg', '#444', long_text=_('Search highlighting'))
|
c('search_bg', '#444', long_text=_('Highlighting'))
|
||||||
c('search_fg', 'white')
|
c('search_fg', 'white')
|
||||||
|
c('select_bg', '#B4D5FE')
|
||||||
|
c('select_fg', 'black')
|
||||||
|
|
||||||
g('shortcuts')
|
g('shortcuts')
|
||||||
k('quit', 'q', 'quit', _('Quit'))
|
k('quit', 'q', 'quit', _('Quit'))
|
||||||
|
|||||||
@ -205,9 +205,17 @@ class DiffHandler(Handler):
|
|||||||
def init_terminal_state(self):
|
def init_terminal_state(self):
|
||||||
self.cmd.set_line_wrapping(False)
|
self.cmd.set_line_wrapping(False)
|
||||||
self.cmd.set_window_title(main.title)
|
self.cmd.set_window_title(main.title)
|
||||||
self.cmd.set_default_colors(self.opts.foreground, self.opts.background, self.opts.foreground)
|
self.cmd.set_default_colors(
|
||||||
|
fg=self.opts.foreground, bg=self.opts.background,
|
||||||
|
cursor=self.opts.foreground, select_fg=self.opts.select_fg,
|
||||||
|
select_bg=self.opts.select_bg)
|
||||||
self.cmd.set_cursor_shape('bar')
|
self.cmd.set_cursor_shape('bar')
|
||||||
|
|
||||||
|
def finalize(self):
|
||||||
|
self.cmd.set_default_colors()
|
||||||
|
self.cmd.set_cursor_visible(True)
|
||||||
|
self.cmd.set_scrolling_region()
|
||||||
|
|
||||||
def initialize(self):
|
def initialize(self):
|
||||||
self.init_terminal_state()
|
self.init_terminal_state()
|
||||||
self.set_scrolling_region()
|
self.set_scrolling_region()
|
||||||
@ -217,10 +225,6 @@ class DiffHandler(Handler):
|
|||||||
def enforce_cursor_state(self):
|
def enforce_cursor_state(self):
|
||||||
self.cmd.set_cursor_visible(self.state > DIFFED)
|
self.cmd.set_cursor_visible(self.state > DIFFED)
|
||||||
|
|
||||||
def finalize(self):
|
|
||||||
self.cmd.set_cursor_visible(True)
|
|
||||||
self.cmd.set_scrolling_region()
|
|
||||||
|
|
||||||
def draw_lines(self, num, offset=0):
|
def draw_lines(self, num, offset=0):
|
||||||
offset += self.scroll_pos
|
offset += self.scroll_pos
|
||||||
image_involved = False
|
image_involved = False
|
||||||
|
|||||||
@ -227,20 +227,21 @@ def alternate_screen(f=None):
|
|||||||
print(reset_mode('ALTERNATE_SCREEN'), end='', file=f)
|
print(reset_mode('ALTERNATE_SCREEN'), end='', file=f)
|
||||||
|
|
||||||
|
|
||||||
def set_default_colors(fg=None, bg=None, cursor=None) -> str:
|
def set_default_colors(fg=None, bg=None, cursor=None, select_bg=None, select_fg=None) -> str:
|
||||||
ans = ''
|
ans = ''
|
||||||
if fg is None:
|
|
||||||
ans += '\x1b]110\x1b\\'
|
def item(which, num):
|
||||||
|
nonlocal ans
|
||||||
|
if item is None:
|
||||||
|
ans += '\x1b]1{}\x1b\\'.format(num)
|
||||||
else:
|
else:
|
||||||
ans += '\x1b]10;{}\x1b\\'.format(color_as_sharp(fg if isinstance(fg, Color) else to_color(fg)))
|
ans += '\x1b]{};{}\x1b\\'.format(num, color_as_sharp(which if isinstance(which, Color) else to_color(which)))
|
||||||
if cursor is None:
|
|
||||||
ans += '\x1b]112\x1b\\'
|
item(fg, 10)
|
||||||
else:
|
item(bg, 11)
|
||||||
ans += '\x1b]12;{}\x1b\\'.format(color_as_sharp(cursor if isinstance(cursor, Color) else to_color(cursor)))
|
item(cursor, 12)
|
||||||
if bg is None:
|
item(select_bg, 17)
|
||||||
ans += '\x1b]111\x1b\\'
|
item(select_fg, 19)
|
||||||
else:
|
|
||||||
ans += '\x1b]11;{}\x1b\\'.format(color_as_sharp(bg if isinstance(bg, Color) else to_color(bg)))
|
|
||||||
return ans
|
return ans
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user