diff options
| author | Albert Cervin <albert@acervin.com> | 2024-05-14 21:28:34 +0200 |
|---|---|---|
| committer | Albert Cervin <albert@acervin.com> | 2024-05-14 21:28:34 +0200 |
| commit | e6387d332aa7c00c26bba6f981f75639c92acbb9 (patch) | |
| tree | be1fd21f931960703facf2590e7752b2b194acf3 /src/dged/buffer_view.c | |
| parent | cd4829ad5d4d873d188d5f532e0ac82a91c5f9ed (diff) | |
| download | dged-e6387d332aa7c00c26bba6f981f75639c92acbb9.tar.gz dged-e6387d332aa7c00c26bba6f981f75639c92acbb9.tar.xz dged-e6387d332aa7c00c26bba6f981f75639c92acbb9.zip | |
Add indent for region
If a region is active, indentation is added to the whole region.
Diffstat (limited to 'src/dged/buffer_view.c')
| -rw-r--r-- | src/dged/buffer_view.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/dged/buffer_view.c b/src/dged/buffer_view.c index 6d77822..2d0b6b8 100644 --- a/src/dged/buffer_view.c +++ b/src/dged/buffer_view.c @@ -140,11 +140,27 @@ void buffer_view_newline(struct buffer_view *view) { } void buffer_view_indent(struct buffer_view *view) { - view->dot = buffer_indent(view->buffer, view->dot); + struct region reg = region_new(view->dot, view->mark); + if (view->mark_set && region_has_size(reg)) { + for (uint32_t line = reg.begin.line; line <= reg.end.line; ++line) { + view->dot = buffer_indent(view->buffer, + (struct location){.line = line, .col = 0}); + } + } else { + view->dot = buffer_indent(view->buffer, view->dot); + } } void buffer_view_indent_alt(struct buffer_view *view) { - view->dot = buffer_indent_alt(view->buffer, view->dot); + struct region reg = region_new(view->dot, view->mark); + if (view->mark_set && region_has_size(reg)) { + for (uint32_t line = reg.begin.line; line <= reg.end.line; ++line) { + view->dot = buffer_indent_alt(view->buffer, + (struct location){.line = line, .col = 0}); + } + } else { + view->dot = buffer_indent_alt(view->buffer, view->dot); + } } void buffer_view_copy(struct buffer_view *view) { |
