mirror of git://git.sv.gnu.org/nano.git
text: let indenting/commenting skip the last line if its x is zero
If the marked region ends at the start of a line, do not include that line in the indenting/undenting or commenting/uncommenting. This is closer to what the eye would expect.
This commit is contained in:
parent
df41114e0e
commit
4b8a387529
|
@ -609,6 +609,8 @@ void remove_magicline(void);
|
|||
#ifndef NANO_TINY
|
||||
void mark_order(const filestruct **top, size_t *top_x, const filestruct
|
||||
**bot, size_t *bot_x, bool *right_side_up);
|
||||
void get_region(const filestruct **top, size_t *top_x,
|
||||
const filestruct **bot, size_t *bot_x);
|
||||
#endif
|
||||
size_t get_totsize(const filestruct *begin, const filestruct *end);
|
||||
#ifndef NANO_TINY
|
||||
|
|
12
src/text.c
12
src/text.c
|
@ -300,8 +300,8 @@ void do_indent(void)
|
|||
|
||||
/* Use either all the marked lines or just the current line. */
|
||||
if (openfile->mark)
|
||||
mark_order((const filestruct **)&top, &top_x,
|
||||
(const filestruct **)&bot, &bot_x, NULL);
|
||||
get_region((const filestruct **)&top, &top_x,
|
||||
(const filestruct **)&bot, &bot_x);
|
||||
else {
|
||||
top = openfile->current;
|
||||
bot = top;
|
||||
|
@ -405,8 +405,8 @@ void do_unindent(void)
|
|||
|
||||
/* Use either all the marked lines or just the current line. */
|
||||
if (openfile->mark)
|
||||
mark_order((const filestruct **)&top, &top_x,
|
||||
(const filestruct **)&bot, &bot_x, NULL);
|
||||
get_region((const filestruct **)&top, &top_x,
|
||||
(const filestruct **)&bot, &bot_x);
|
||||
else {
|
||||
top = openfile->current;
|
||||
bot = top;
|
||||
|
@ -509,8 +509,8 @@ void do_comment(void)
|
|||
|
||||
/* Determine which lines to work on. */
|
||||
if (openfile->mark)
|
||||
mark_order((const filestruct **)&top, &top_x,
|
||||
(const filestruct **)&bot, &bot_x, NULL);
|
||||
get_region((const filestruct **)&top, &top_x,
|
||||
(const filestruct **)&bot, &bot_x);
|
||||
else {
|
||||
top = openfile->current;
|
||||
bot = top;
|
||||
|
|
11
src/utils.c
11
src/utils.c
|
@ -532,6 +532,17 @@ void mark_order(const filestruct **top, size_t *top_x, const filestruct
|
|||
}
|
||||
}
|
||||
|
||||
/* Get the start and end points of the marked region, but
|
||||
* push the end point back if it's at the start of a line. */
|
||||
void get_region(const filestruct **top, size_t *top_x,
|
||||
const filestruct **bot, size_t *bot_x)
|
||||
{
|
||||
mark_order(top, top_x, bot, bot_x, NULL);
|
||||
|
||||
if (*bot_x == 0)
|
||||
*bot = (*bot)->prev;
|
||||
}
|
||||
|
||||
/* Given a line number, return a pointer to the corresponding struct. */
|
||||
filestruct *fsfromline(ssize_t lineno)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue