From ec35dfd4e257454c03338e09a14597c8c50b8a66 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 23 Apr 2025 05:53:31 +0530 Subject: [PATCH] Scaffolding for selection upto surrounding whitespace --- kitty/fast_data_types.pyi | 1 + kitty/mouse.c | 5 +++++ kitty/options/utils.py | 1 + 3 files changed, 7 insertions(+) diff --git a/kitty/fast_data_types.pyi b/kitty/fast_data_types.pyi index 34c77ede0..aea54eb43 100644 --- a/kitty/fast_data_types.pyi +++ b/kitty/fast_data_types.pyi @@ -42,6 +42,7 @@ MOUSE_SELECTION_NORMAL: int MOUSE_SELECTION_WORD: int MOUSE_SELECTION_RECTANGLE: int MOUSE_SELECTION_LINE_FROM_POINT: int +MOUSE_SELECTION_UPTO_SURROUNDING_WHITESPACE: int MOUSE_SELECTION_WORD_AND_LINE_FROM_POINT: int MOUSE_SELECTION_MOVE_END: int KITTY_VCS_REV: str diff --git a/kitty/mouse.c b/kitty/mouse.c index 5a42bc27a..2980be691 100644 --- a/kitty/mouse.c +++ b/kitty/mouse.c @@ -744,6 +744,7 @@ typedef enum MouseSelectionType { MOUSE_SELECTION_LINE_FROM_POINT, MOUSE_SELECTION_WORD_AND_LINE_FROM_POINT, MOUSE_SELECTION_MOVE_END, + MOUSE_SELECTION_UPTO_SURROUNDING_WHITESPACE, } MouseSelectionType; @@ -783,6 +784,9 @@ mouse_selection(Window *w, int code, int button) { case MOUSE_SELECTION_MOVE_END: extend_selection(w, false, false); break; + case MOUSE_SELECTION_UPTO_SURROUNDING_WHITESPACE: + // TODO: Implement me for people migrating from urxvt + break; } set_mouse_cursor_when_dragging(screen); #undef S @@ -1115,6 +1119,7 @@ init_mouse(PyObject *module) { PyModule_AddIntMacro(module, MOUSE_SELECTION_LINE_FROM_POINT); PyModule_AddIntMacro(module, MOUSE_SELECTION_WORD_AND_LINE_FROM_POINT); PyModule_AddIntMacro(module, MOUSE_SELECTION_MOVE_END); + PyModule_AddIntMacro(module, MOUSE_SELECTION_UPTO_SURROUNDING_WHITESPACE); if (PyModule_AddFunctions(module, module_methods) != 0) return false; return true; } diff --git a/kitty/options/utils.py b/kitty/options/utils.py index a8fccd252..650fe91b3 100644 --- a/kitty/options/utils.py +++ b/kitty/options/utils.py @@ -426,6 +426,7 @@ def mouse_selection(func: str, rest: str) -> FuncArgsType: 'line': defines.MOUSE_SELECTION_LINE, 'line_from_point': defines.MOUSE_SELECTION_LINE_FROM_POINT, 'word_and_line_from_point': defines.MOUSE_SELECTION_WORD_AND_LINE_FROM_POINT, + 'upto_surrounding_whitespace': defines.MOUSE_SELECTION_UPTO_SURROUNDING_WHITESPACE, } setattr(mouse_selection, 'code_map', cmap) return func, [cmap[rest]]