mirror of
				https://github.com/vim/vim.git
				synced 2025-10-30 09:47:20 -04:00 
			
		
		
		
	patch 8.2.3754: undesired changing of the indent of the first formatted line
Problem: Undesired changing of the indent of the first formatted line. Solution: Do not indent the first formatted line.
This commit is contained in:
		| @@ -172,7 +172,8 @@ func Test_indent_func_with_gq() | |||||||
|         \ 'metus lectus ultrices odio, sed elementum mi ante at arcu.', '', '\begin{center}', '', |         \ 'metus lectus ultrices odio, sed elementum mi ante at arcu.', '', '\begin{center}', '', | ||||||
|         \ 'Proin nec risus consequat nunc dapibus consectetur. Mauris lacinia est a augue', |         \ 'Proin nec risus consequat nunc dapibus consectetur. Mauris lacinia est a augue', | ||||||
|         \ 'tristique accumsan. Morbi pretium, felis molestie eleifend condimentum, arcu', |         \ 'tristique accumsan. Morbi pretium, felis molestie eleifend condimentum, arcu', | ||||||
|         \ 'ipsum congue nisl, quis euismod purus libero in ante. Donec id semper purus.', |         \ 'ipsum congue nisl, quis euismod purus libero in ante.', '', | ||||||
|  |         \ 'Donec id semper purus.', | ||||||
|         \ 'Suspendisse eget aliquam nunc. Maecenas fringilla mauris vitae maximus', |         \ 'Suspendisse eget aliquam nunc. Maecenas fringilla mauris vitae maximus', | ||||||
|         \ 'condimentum. Cras a quam in mi dictum eleifend at a lorem. Sed convallis', |         \ 'condimentum. Cras a quam in mi dictum eleifend at a lorem. Sed convallis', | ||||||
|         \ 'ante a commodo facilisis. Nam suscipit vulputate odio, vel dapibus nisl', |         \ 'ante a commodo facilisis. Nam suscipit vulputate odio, vel dapibus nisl', | ||||||
| @@ -181,10 +182,10 @@ func Test_indent_func_with_gq() | |||||||
|   1d_ |   1d_ | ||||||
|   call cursor(5, 1) |   call cursor(5, 1) | ||||||
|   ka |   ka | ||||||
|   call cursor(15, 1) |   call cursor(14, 1) | ||||||
|   kb |   kb | ||||||
|   norm! 'agqap |   norm! 'agqap | ||||||
|   norm! 'bgqap |   norm! 'bgqG | ||||||
|   let expected = [ '\documentclass{article}', '', '\begin{document}', '', |   let expected = [ '\documentclass{article}', '', '\begin{document}', '', | ||||||
|         \ 'Lorem ipsum dolor sit amet, consectetur adipiscing', |         \ 'Lorem ipsum dolor sit amet, consectetur adipiscing', | ||||||
|         \ 'elit. Fusce ut enim non libero efficitur aliquet.', |         \ 'elit. Fusce ut enim non libero efficitur aliquet.', | ||||||
| @@ -201,9 +202,10 @@ func Test_indent_func_with_gq() | |||||||
|         \ '  consectetur. Mauris lacinia est a augue', |         \ '  consectetur. Mauris lacinia est a augue', | ||||||
|         \ '  tristique accumsan. Morbi pretium, felis', |         \ '  tristique accumsan. Morbi pretium, felis', | ||||||
|         \ '  molestie eleifend condimentum, arcu ipsum congue', |         \ '  molestie eleifend condimentum, arcu ipsum congue', | ||||||
|         \ '  nisl, quis euismod purus libero in ante. Donec', |         \ '  nisl, quis euismod purus libero in ante.', | ||||||
|         \ '  id semper purus.  Suspendisse eget aliquam nunc.', |         \ '', | ||||||
|         \ '  Maecenas fringilla mauris vitae maximus', |         \ '  Donec id semper purus.  Suspendisse eget aliquam', | ||||||
|  |         \ '  nunc. Maecenas fringilla mauris vitae maximus', | ||||||
|         \ '  condimentum. Cras a quam in mi dictum eleifend', |         \ '  condimentum. Cras a quam in mi dictum eleifend', | ||||||
|         \ '  at a lorem. Sed convallis ante a commodo', |         \ '  at a lorem. Sed convallis ante a commodo', | ||||||
|         \ '  facilisis. Nam suscipit vulputate odio, vel', |         \ '  facilisis. Nam suscipit vulputate odio, vel', | ||||||
| @@ -217,4 +219,28 @@ func Test_indent_func_with_gq() | |||||||
|   delfunction GetTeXIndent  |   delfunction GetTeXIndent  | ||||||
| endfu | endfu | ||||||
|  |  | ||||||
|  | func Test_formatting_keeps_first_line_indent() | ||||||
|  |   let lines =<< trim END | ||||||
|  |       foo() | ||||||
|  |       { | ||||||
|  |           int x;         // manually positioned | ||||||
|  |                          // more text that will be formatted | ||||||
|  |                          // but not reindented | ||||||
|  |   END | ||||||
|  |   new | ||||||
|  |   call setline(1, lines) | ||||||
|  |   setlocal sw=4 cindent tw=45 et | ||||||
|  |   normal! 4Ggqj | ||||||
|  |   let expected =<< trim END | ||||||
|  |       foo() | ||||||
|  |       { | ||||||
|  |           int x;         // manually positioned | ||||||
|  |                          // more text that will be | ||||||
|  |                          // formatted but not | ||||||
|  |                          // reindented | ||||||
|  |   END | ||||||
|  |   call assert_equal(expected, getline(1, '$')) | ||||||
|  |   bwipe! | ||||||
|  | endfunc | ||||||
|  |  | ||||||
| " vim: shiftwidth=2 sts=2 expandtab | " vim: shiftwidth=2 sts=2 expandtab | ||||||
|   | |||||||
| @@ -954,6 +954,7 @@ format_lines( | |||||||
|     int		smd_save; |     int		smd_save; | ||||||
|     long	count; |     long	count; | ||||||
|     int		need_set_indent = TRUE;	// set indent of next paragraph |     int		need_set_indent = TRUE;	// set indent of next paragraph | ||||||
|  |     linenr_T	first_line = curwin->w_cursor.lnum; | ||||||
|     int		force_format = FALSE; |     int		force_format = FALSE; | ||||||
|     int		old_State = State; |     int		old_State = State; | ||||||
|  |  | ||||||
| @@ -1073,8 +1074,13 @@ format_lines( | |||||||
| 		{ | 		{ | ||||||
| 		    int		indent = 0; // amount of indent needed | 		    int		indent = 0; // amount of indent needed | ||||||
|  |  | ||||||
| 		    // replace indent in first line with minimal number of | 		    // Replace indent in first line of a paragraph with minimal | ||||||
| 		    // tabs and spaces, according to current options | 		    // number of tabs and spaces, according to current options. | ||||||
|  | 		    // For the very first formatted line keep the current | ||||||
|  | 		    // indent. | ||||||
|  | 		    if (curwin->w_cursor.lnum == first_line) | ||||||
|  | 			indent = get_indent(); | ||||||
|  | 		    else | ||||||
| # ifdef FEAT_LISP | # ifdef FEAT_LISP | ||||||
| 		    if (curbuf->b_p_lisp) | 		    if (curbuf->b_p_lisp) | ||||||
| 			indent = get_lisp_indent(); | 			indent = get_lisp_indent(); | ||||||
|   | |||||||
| @@ -753,6 +753,8 @@ static char *(features[]) = | |||||||
|  |  | ||||||
| static int included_patches[] = | static int included_patches[] = | ||||||
| {   /* Add new patch number below this line */ | {   /* Add new patch number below this line */ | ||||||
|  | /**/ | ||||||
|  |     3754, | ||||||
| /**/ | /**/ | ||||||
|     3753, |     3753, | ||||||
| /**/ | /**/ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user