mirror of
https://github.com/kovidgoyal/kitty
synced 2026-07-19 15:04:50 +02:00
Add option select_by_word_characters_forward
This adds an option to select separate characters for forward and backward word extension on double click. If it is empty the old behavior is preserved. This is the default. If it is not empty, select_by_word_characters_forward will be used for extending the selection in forward direction (right) and select_by_word_characters will be used for extending in backward direction (left). Signed-off-by: Konrad Gräfe <kgraefe@paktolos.net>
This commit is contained in:
@@ -492,6 +492,18 @@ Unicode database will be matched.
|
||||
'''
|
||||
)
|
||||
|
||||
opt('select_by_word_characters_forward', '',
|
||||
ctype='!select_by_word_characters_forward',
|
||||
long_text='''
|
||||
Characters considered part of a word when extending the selection forward on
|
||||
double clicking. In addition to these characters any character that is marked
|
||||
as an alphanumeric character in the Unicode database will be matched.
|
||||
|
||||
If empty (default) :opt:`select_by_word_characters` will be used for both
|
||||
directions.
|
||||
'''
|
||||
)
|
||||
|
||||
opt('click_interval', '-1.0',
|
||||
option_type='float', ctype='time',
|
||||
long_text='''
|
||||
|
||||
3
kitty/options/parse.py
generated
3
kitty/options/parse.py
generated
@@ -1163,6 +1163,9 @@ class Parser:
|
||||
def select_by_word_characters(self, val: str, ans: typing.Dict[str, typing.Any]) -> None:
|
||||
ans['select_by_word_characters'] = str(val)
|
||||
|
||||
def select_by_word_characters_forward(self, val: str, ans: typing.Dict[str, typing.Any]) -> None:
|
||||
ans['select_by_word_characters_forward'] = str(val)
|
||||
|
||||
def selection_background(self, val: str, ans: typing.Dict[str, typing.Any]) -> None:
|
||||
ans['selection_background'] = to_color_or_none(val)
|
||||
|
||||
|
||||
15
kitty/options/to-c-generated.h
generated
15
kitty/options/to-c-generated.h
generated
@@ -304,6 +304,19 @@ convert_from_opts_select_by_word_characters(PyObject *py_opts, Options *opts) {
|
||||
Py_DECREF(ret);
|
||||
}
|
||||
|
||||
static void
|
||||
convert_from_python_select_by_word_characters_forward(PyObject *val, Options *opts) {
|
||||
select_by_word_characters_forward(val, opts);
|
||||
}
|
||||
|
||||
static void
|
||||
convert_from_opts_select_by_word_characters_forward(PyObject *py_opts, Options *opts) {
|
||||
PyObject *ret = PyObject_GetAttrString(py_opts, "select_by_word_characters_forward");
|
||||
if (ret == NULL) return;
|
||||
convert_from_python_select_by_word_characters_forward(ret, opts);
|
||||
Py_DECREF(ret);
|
||||
}
|
||||
|
||||
static void
|
||||
convert_from_python_click_interval(PyObject *val, Options *opts) {
|
||||
opts->click_interval = parse_s_double_to_monotonic_t(val);
|
||||
@@ -1067,6 +1080,8 @@ convert_opts_from_python_opts(PyObject *py_opts, Options *opts) {
|
||||
if (PyErr_Occurred()) return false;
|
||||
convert_from_opts_select_by_word_characters(py_opts, opts);
|
||||
if (PyErr_Occurred()) return false;
|
||||
convert_from_opts_select_by_word_characters_forward(py_opts, opts);
|
||||
if (PyErr_Occurred()) return false;
|
||||
convert_from_opts_click_interval(py_opts, opts);
|
||||
if (PyErr_Occurred()) return false;
|
||||
convert_from_opts_focus_follows_mouse(py_opts, opts);
|
||||
|
||||
@@ -187,6 +187,12 @@ select_by_word_characters(PyObject *chars, Options *opts) {
|
||||
opts->select_by_word_characters = list_of_chars(chars);
|
||||
}
|
||||
|
||||
static void
|
||||
select_by_word_characters_forward(PyObject *chars, Options *opts) {
|
||||
free(opts->select_by_word_characters_forward);
|
||||
opts->select_by_word_characters_forward = list_of_chars(chars);
|
||||
}
|
||||
|
||||
static void
|
||||
tab_bar_style(PyObject *val, Options *opts) {
|
||||
opts->tab_bar_hidden = PyUnicode_CompareWithASCIIString(val, "hidden") == 0 ? true: false;
|
||||
|
||||
2
kitty/options/types.py
generated
2
kitty/options/types.py
generated
@@ -411,6 +411,7 @@ option_names = ( # {{{
|
||||
'scrollback_pager',
|
||||
'scrollback_pager_history_size',
|
||||
'select_by_word_characters',
|
||||
'select_by_word_characters_forward',
|
||||
'selection_background',
|
||||
'selection_foreground',
|
||||
'shell',
|
||||
@@ -561,6 +562,7 @@ class Options:
|
||||
scrollback_pager: typing.List[str] = ['less', '--chop-long-lines', '--RAW-CONTROL-CHARS', '+INPUT_LINE_NUMBER']
|
||||
scrollback_pager_history_size: int = 0
|
||||
select_by_word_characters: str = '@-./_~?&=%+#'
|
||||
select_by_word_characters_forward: str = ''
|
||||
selection_background: typing.Optional[kitty.fast_data_types.Color] = Color(255, 250, 205)
|
||||
selection_foreground: typing.Optional[kitty.fast_data_types.Color] = Color(0, 0, 0)
|
||||
shell: str = '.'
|
||||
|
||||
Reference in New Issue
Block a user