From 6331bf38783810a01a233ac73fa94ed028a0e965 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Sun, 27 Mar 2016 17:05:34 +0200 Subject: vis: align selections with in visual mode --- config.def.h | 1 + main.c | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/config.def.h b/config.def.h index 27fc4eb..827fb0c 100644 --- a/config.def.h +++ b/config.def.h @@ -278,6 +278,7 @@ static const KeyBinding bindings_visual[] = { { "o", ACTION(SELECTION_FLIP) }, { ">", ALIAS("gv") }, { "<", ALIAS("gv") }, + { "" , ACTION(CURSORS_ALIGN_INDENT) }, { 0 /* empty last element, array terminator */ }, }; diff --git a/main.c b/main.c index 652ee11..4494233 100644 --- a/main.c +++ b/main.c @@ -1230,7 +1230,9 @@ static const char *cursors_align_indent(Vis *vis, const char *keys, const Arg *a for (int i = 0; i < columns; i++) { int mincol = INT_MAX, maxcol = 0; for (Cursor *c = view_cursors_column(view, i); c; c = view_cursors_column_next(c, i)) { - int col = text_line_width_get(txt, view_cursors_pos(c)); + Filerange sel = view_cursors_selection_get(c); + size_t pos = text_range_valid(&sel) ? sel.start : view_cursors_pos(c); + int col = text_line_width_get(txt, pos); if (col < mincol) mincol = col; if (col > maxcol) @@ -1244,7 +1246,8 @@ static const char *cursors_align_indent(Vis *vis, const char *keys, const Arg *a memset(buf, ' ', len); for (Cursor *c = view_cursors_column(view, i); c; c = view_cursors_column_next(c, i)) { - size_t pos = view_cursors_pos(c); + Filerange sel = view_cursors_selection_get(c); + size_t pos = text_range_valid(&sel) ? sel.start : view_cursors_pos(c); int col = text_line_width_get(txt, pos); if (col < maxcol) { size_t off = maxcol - col; -- cgit v1.2.3