diff src/edit.c @ 15440:5ecac7734184 v8.1.0728

patch 8.1.0728: cannot avoid breaking after a single space. commit https://github.com/vim/vim/commit/c3c3158756ae074052b0db2a3e3a7ba192df5330 Author: Bram Moolenaar <Bram@vim.org> Date: Fri Jan 11 22:15:05 2019 +0100 patch 8.1.0728: cannot avoid breaking after a single space. Problem: Cannot avoid breaking after a single space. Solution: Add the 'p' flag to 'formatoptions'. (Tom Ryder)
author Bram Moolenaar <Bram@vim.org>
date Fri, 11 Jan 2019 22:30:06 +0100
parents 29f3d59bb6f0
children 55ccc2d353bd
line wrap: on
line diff
--- 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)