diff kitten: Add keybindings to scroll by a page
This commit is contained in:
parent
219d3161d9
commit
a33ebce3c9
5 changed files with 13 additions and 3 deletions
|
|
@ -73,7 +73,7 @@ def parse_scroll_by(func, rest):
|
|||
@func_with_args('scroll_to')
|
||||
def parse_scroll_to(func, rest):
|
||||
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'
|
||||
return func, rest
|
||||
|
||||
|
|
|
|||
|
|
@ -47,6 +47,9 @@ map down scroll_by 1
|
|||
map up scroll_by -1
|
||||
map home scroll_to start
|
||||
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 p scroll_to prev-change
|
||||
map a change_context all
|
||||
|
|
|
|||
|
|
@ -76,7 +76,10 @@ def perform_action(self, action):
|
|||
where = args[0]
|
||||
if 'change' in where:
|
||||
return self.scroll_to_next_change(backwards='prev' in where)
|
||||
amt = len(self.diff_lines) * (1 if 'end' in where else -1)
|
||||
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)
|
||||
return self.scroll_lines(amt)
|
||||
if func == 'change_context':
|
||||
new_ctx = self.current_context_count
|
||||
|
|
|
|||
|
|
@ -204,13 +204,15 @@ def parse_kittens_shortcut(sc):
|
|||
mods = resolved_mods
|
||||
is_text = False
|
||||
rkey = parts[-1]
|
||||
if text_match(rkey) is None:
|
||||
tkey = text_match(rkey)
|
||||
if tkey is None:
|
||||
rkey = rkey.upper()
|
||||
rkey = config_key_map.get(rkey)
|
||||
if rkey is None:
|
||||
raise ValueError('Unknown shortcut key: {}'.format(sc))
|
||||
else:
|
||||
is_text = True
|
||||
rkey = tkey
|
||||
return mods, rkey, is_text
|
||||
|
||||
|
||||
|
|
|
|||
2
kitty/key_encoding.py
generated
2
kitty/key_encoding.py
generated
|
|
@ -258,6 +258,8 @@
|
|||
|
||||
|
||||
def text_match(key):
|
||||
if key.upper() == 'SPACE':
|
||||
return ' '
|
||||
if key not in text_keys:
|
||||
return
|
||||
return key
|
||||
|
|
|
|||
Loading…
Reference in a new issue