kovidgoyal/kitty · error · ValueError
{rest} is not a valid scroll_to_mark destination
Error message
{rest} is not a valid scroll_to_mark destination What it means
scroll_to_mark raises this when its destination argument is neither prev/previous/next nor an integer in 0..3. The parser accepts a direction word or a mark column index clamped to 0-3; anything else fails int() and raises ValueError.
Source
Thrown at kitty/options/utils.py:472
raise ValueError(f'{rest} is not a valid marker specification')
ftype, spec = parts
parts = list(shlex_split(spec))
return func, list(parse_marker_spec(ftype, parts))
@func_with_args('scroll_to_mark')
def scroll_to_mark(func: str, rest: str) -> FuncArgsType:
parts = rest.split()
if not parts or not rest:
return func, [True, 0]
if len(parts) == 1:
q = parts[0].lower()
if q in ('prev', 'previous', 'next'):
return func, [q != 'next', 0]
try:
return func, [True, max(0, min(int(q), 3))]
except Exception:
raise ValueError(f'{rest} is not a valid scroll_to_mark destination')
return func, [parts[0] != 'next', max(0, min(int(parts[1]), 3))]
@func_with_args('mouse_selection')
def mouse_selection(func: str, rest: str) -> FuncArgsType:
cmap = getattr(mouse_selection, 'code_map', None)
if cmap is None:
cmap = {
'normal': defines.MOUSE_SELECTION_NORMAL,
'extend': defines.MOUSE_SELECTION_EXTEND,
'move-end': defines.MOUSE_SELECTION_MOVE_END,
'move_end': defines.MOUSE_SELECTION_MOVE_END,
'rectangle': defines.MOUSE_SELECTION_RECTANGLE,
'word': defines.MOUSE_SELECTION_WORD,
'line': defines.MOUSE_SELECTION_LINE,
'line_from_begin': defines.MOUSE_SELECTION_LINE_FROM_BEGIN,
'line_from_point': defines.MOUSE_SELECTION_LINE_FROM_POINT,
'word_and_line_from_point': defines.MOUSE_SELECTION_WORD_AND_LINE_FROM_POINT,View on GitHub (pinned to 6d5d0c4406)
Solutions
- Use prev, previous, next, or an integer 0-3
- For multi-token form use e.g. scroll_to_mark next 1
Example fix
# before map f1 scroll_to_mark home # after map f1 scroll_to_mark next
Defensive patterns
Strategy: validation
Validate before calling
def valid_scroll_dest(q: str) -> bool:
return q.lower() in ('prev','previous','next') or (q.isdigit() and 0 <= int(q) <= 3) Prevention
- Restrict destinations to prev/next or integers 0-3
- Avoid free-form user input in scroll_to_mark bindings
When it happens
Trigger: map f1 scroll_to_mark home or toggle_marker-style specs; any non-numeric, non-keyword first token. Also when two tokens are given and parts[1] is not an int.
Common situations: Typo'd keywords ('backward', 'up'), or assuming arbitrary column numbers/out-of-range formats work.
Related errors
- Unknown marker type: {ftype}
- {rest} is not a valid marker specification
- clear_terminal needs two arguments, using defaults
- {action} is unknown for clear_terminal, using reset
- This should be run as kitten broadcast
AI-assisted analysis of kovidgoyal/kitty@6d5d0c4406 (2026-08-27).
Data as JSON: /api/errors/aba65f7c51f368db.
Report an issue: GitHub.