version 1.321, 2021/04/01 06:46:12 |
version 1.322, 2021/04/05 08:43:48 |
|
|
window_copy_cursor_back_to_indentation(struct window_mode_entry *wme) |
window_copy_cursor_back_to_indentation(struct window_mode_entry *wme) |
{ |
{ |
struct window_copy_mode_data *data = wme->data; |
struct window_copy_mode_data *data = wme->data; |
u_int px, py, xx; |
struct screen *back_s = data->backing; |
struct grid_cell gc; |
struct grid_reader gr; |
|
u_int px, py, oldy, hsize; |
|
|
px = 0; |
px = data->cx; |
py = screen_hsize(data->backing) + data->cy - data->oy; |
hsize = screen_hsize(back_s); |
xx = window_copy_find_length(wme, py); |
py = hsize + data->cy - data->oy; |
|
oldy = data->cy; |
|
|
while (px < xx) { |
grid_reader_start(&gr, back_s->grid, px, py); |
grid_get_cell(data->backing->grid, px, py, &gc); |
grid_reader_cursor_back_to_indentation(&gr); |
if (gc.data.size != 1 || *gc.data.data != ' ') |
grid_reader_get_cursor(&gr, &px, &py); |
break; |
window_copy_acquire_cursor_up(wme, hsize, data->oy, oldy, px, py); |
px++; |
|
} |
|
|
|
window_copy_update_cursor(wme, px, data->cy); |
|
if (window_copy_update_selection(wme, 1, 0)) |
|
window_copy_redraw_lines(wme, data->cy, 1); |
|
} |
} |
|
|
static void |
static void |
|
|
oldy = data->cy; |
oldy = data->cy; |
|
|
grid_reader_start(&gr, back_s->grid, px, py); |
grid_reader_start(&gr, back_s->grid, px, py); |
grid_reader_cursor_left(&gr); |
grid_reader_cursor_left(&gr, 1); |
grid_reader_get_cursor(&gr, &px, &py); |
grid_reader_get_cursor(&gr, &px, &py); |
window_copy_acquire_cursor_up(wme, hsize, data->oy, oldy, px, py); |
window_copy_acquire_cursor_up(wme, hsize, data->oy, oldy, px, py); |
} |
} |
|
|
py = hsize + data->cy - data->oy; |
py = hsize + data->cy - data->oy; |
oldy = data->cy; |
oldy = data->cy; |
|
|
if (px > 0) |
|
px--; |
|
|
|
grid_reader_start(&gr, back_s->grid, px, py); |
grid_reader_start(&gr, back_s->grid, px, py); |
|
grid_reader_cursor_left(&gr, 0); |
if (grid_reader_cursor_jump_back(&gr, data->jumpchar)) { |
if (grid_reader_cursor_jump_back(&gr, data->jumpchar)) { |
grid_reader_get_cursor(&gr, &px, &py); |
grid_reader_get_cursor(&gr, &px, &py); |
window_copy_acquire_cursor_up(wme, hsize, data->oy, oldy, px, |
window_copy_acquire_cursor_up(wme, hsize, data->oy, oldy, px, |
|
|
|
|
grid_reader_start(&gr, back_s->grid, px, py); |
grid_reader_start(&gr, back_s->grid, px, py); |
if (grid_reader_cursor_jump(&gr, data->jumpchar)) { |
if (grid_reader_cursor_jump(&gr, data->jumpchar)) { |
grid_reader_cursor_left(&gr); |
grid_reader_cursor_left(&gr, 1); |
grid_reader_get_cursor(&gr, &px, &py); |
grid_reader_get_cursor(&gr, &px, &py); |
window_copy_acquire_cursor_down(wme, hsize, |
window_copy_acquire_cursor_down(wme, hsize, |
screen_size_y(back_s), data->oy, oldy, px, py, 0); |
screen_size_y(back_s), data->oy, oldy, px, py, 0); |
|
|
py = hsize + data->cy - data->oy; |
py = hsize + data->cy - data->oy; |
oldy = data->cy; |
oldy = data->cy; |
|
|
if (px > 0) |
|
px--; |
|
|
|
if (px > 0) |
|
px--; |
|
|
|
grid_reader_start(&gr, back_s->grid, px, py); |
grid_reader_start(&gr, back_s->grid, px, py); |
|
grid_reader_cursor_left(&gr, 0); |
|
grid_reader_cursor_left(&gr, 0); |
if (grid_reader_cursor_jump_back(&gr, data->jumpchar)) { |
if (grid_reader_cursor_jump_back(&gr, data->jumpchar)) { |
grid_reader_cursor_right(&gr, 1, 0); |
grid_reader_cursor_right(&gr, 1, 0); |
grid_reader_get_cursor(&gr, &px, &py); |
grid_reader_get_cursor(&gr, &px, &py); |
|
|
grid_reader_cursor_right(&gr, 0, 0); |
grid_reader_cursor_right(&gr, 0, 0); |
grid_reader_cursor_next_word_end(&gr, separators); |
grid_reader_cursor_next_word_end(&gr, separators); |
if (keys == MODEKEY_VI) |
if (keys == MODEKEY_VI) |
grid_reader_cursor_left(&gr); |
grid_reader_cursor_left(&gr, 1); |
grid_reader_get_cursor(&gr, &px, &py); |
grid_reader_get_cursor(&gr, &px, &py); |
*ppx = px; |
*ppx = px; |
*ppy = py; |
*ppy = py; |
|
|
grid_reader_cursor_right(&gr, 0, 0); |
grid_reader_cursor_right(&gr, 0, 0); |
grid_reader_cursor_next_word_end(&gr, separators); |
grid_reader_cursor_next_word_end(&gr, separators); |
if (keys == MODEKEY_VI) |
if (keys == MODEKEY_VI) |
grid_reader_cursor_left(&gr); |
grid_reader_cursor_left(&gr, 1); |
grid_reader_get_cursor(&gr, &px, &py); |
grid_reader_get_cursor(&gr, &px, &py); |
window_copy_acquire_cursor_down(wme, hsize, screen_size_y(back_s), |
window_copy_acquire_cursor_down(wme, hsize, screen_size_y(back_s), |
data->oy, oldy, px, py, no_reset); |
data->oy, oldy, px, py, no_reset); |