diff kitten: Add keybindings to scroll by a page
This commit is contained in:
parent
219d3161d9
commit
a33ebce3c9
@ -73,7 +73,7 @@ def parse_scroll_by(func, rest):
|
|||||||
@func_with_args('scroll_to')
|
@func_with_args('scroll_to')
|
||||||
def parse_scroll_to(func, rest):
|
def parse_scroll_to(func, rest):
|
||||||
rest = rest.lower()
|
rest = rest.lower()
|
||||||
if rest not in {'start', 'end', 'next-change', 'prev-change'}:
|
if rest not in {'start', 'end', 'next-change', 'prev-change', 'next-page', 'prev-page'}:
|
||||||
rest = 'start'
|
rest = 'start'
|
||||||
return func, rest
|
return func, rest
|
||||||
|
|
||||||
|
|||||||
@ -47,6 +47,9 @@ map down scroll_by 1
|
|||||||
map up scroll_by -1
|
map up scroll_by -1
|
||||||
map home scroll_to start
|
map home scroll_to start
|
||||||
map end scroll_to end
|
map end scroll_to end
|
||||||
|
map page_down scroll_to next-page
|
||||||
|
map page_up scroll_to prev-page
|
||||||
|
map space scroll_to next-page
|
||||||
map n scroll_to next-change
|
map n scroll_to next-change
|
||||||
map p scroll_to prev-change
|
map p scroll_to prev-change
|
||||||
map a change_context all
|
map a change_context all
|
||||||
|
|||||||
@ -76,6 +76,9 @@ class DiffHandler(Handler):
|
|||||||
where = args[0]
|
where = args[0]
|
||||||
if 'change' in where:
|
if 'change' in where:
|
||||||
return self.scroll_to_next_change(backwards='prev' in where)
|
return self.scroll_to_next_change(backwards='prev' in where)
|
||||||
|
if 'page' in where:
|
||||||
|
amt = self.num_lines * (1 if 'next' in where else -1)
|
||||||
|
else:
|
||||||
amt = len(self.diff_lines) * (1 if 'end' in where else -1)
|
amt = len(self.diff_lines) * (1 if 'end' in where else -1)
|
||||||
return self.scroll_lines(amt)
|
return self.scroll_lines(amt)
|
||||||
if func == 'change_context':
|
if func == 'change_context':
|
||||||
|
|||||||
@ -204,13 +204,15 @@ def parse_kittens_shortcut(sc):
|
|||||||
mods = resolved_mods
|
mods = resolved_mods
|
||||||
is_text = False
|
is_text = False
|
||||||
rkey = parts[-1]
|
rkey = parts[-1]
|
||||||
if text_match(rkey) is None:
|
tkey = text_match(rkey)
|
||||||
|
if tkey is None:
|
||||||
rkey = rkey.upper()
|
rkey = rkey.upper()
|
||||||
rkey = config_key_map.get(rkey)
|
rkey = config_key_map.get(rkey)
|
||||||
if rkey is None:
|
if rkey is None:
|
||||||
raise ValueError('Unknown shortcut key: {}'.format(sc))
|
raise ValueError('Unknown shortcut key: {}'.format(sc))
|
||||||
else:
|
else:
|
||||||
is_text = True
|
is_text = True
|
||||||
|
rkey = tkey
|
||||||
return mods, rkey, is_text
|
return mods, rkey, is_text
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
2
kitty/key_encoding.py
generated
2
kitty/key_encoding.py
generated
@ -258,6 +258,8 @@ text_keys = string.ascii_uppercase + string.ascii_lowercase + string.digits + '`
|
|||||||
|
|
||||||
|
|
||||||
def text_match(key):
|
def text_match(key):
|
||||||
|
if key.upper() == 'SPACE':
|
||||||
|
return ' '
|
||||||
if key not in text_keys:
|
if key not in text_keys:
|
||||||
return
|
return
|
||||||
return key
|
return key
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user