summaryrefslogtreecommitdiffstats
path: root/src/edit.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-01-11 22:15:05 +0100
committerBram Moolenaar <Bram@vim.org>2019-01-11 22:15:05 +0100
commitc3c3158756ae074052b0db2a3e3a7ba192df5330 (patch)
tree79e1b820b5e86fce5f98573097e4457ec06f5881 /src/edit.c
parent44a7db4ffdd11dafd345fd1c2c7b2509d01e3895 (diff)
patch 8.1.0728: cannot avoid breaking after a single space.v8.1.0728
Problem: Cannot avoid breaking after a single space. Solution: Add the 'p' flag to 'formatoptions'. (Tom Ryder)
Diffstat (limited to 'src/edit.c')
-rw-r--r--src/edit.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/edit.c b/src/edit.c
index 33e0e6708b..9099c0c707 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -6498,6 +6498,7 @@ internal_format(
char_u *saved_text = NULL;
colnr_T col;
colnr_T end_col;
+ int wcc; // counter for whitespace chars
virtcol = get_nolist_virtcol()
+ char2cells(c != NUL ? c : gchar_cursor());
@@ -6559,14 +6560,26 @@ internal_format(
/* remember position of blank just before text */
end_col = curwin->w_cursor.col;
- /* find start of sequence of blanks */
+ // find start of sequence of blanks
+ wcc = 0;
while (curwin->w_cursor.col > 0 && WHITECHAR(cc))
{
dec_cursor();
cc = gchar_cursor();
+
+ // Increment count of how many whitespace chars in this
+ // group; we only need to know if it's more than one.
+ if (wcc < 2)
+ wcc++;
}
if (curwin->w_cursor.col == 0 && WHITECHAR(cc))
break; /* only spaces in front of text */
+
+ // Don't break after a period when 'formatoptions' has 'p' and
+ // there are less than two spaces.
+ if (has_format_option(FO_PERIOD_ABBR) && cc == '.' && wcc < 2)
+ continue;
+
#ifdef FEAT_COMMENTS
/* Don't break until after the comment leader */
if (curwin->w_cursor.col < leader_len)