home *** CD-ROM | disk | FTP | other *** search
- To: vim_dev@googlegroups.com
- Subject: Patch 7.4.052
- Fcc: outbox
- From: Bram Moolenaar <Bram@moolenaar.net>
- Mime-Version: 1.0
- Content-Type: text/plain; charset=UTF-8
- Content-Transfer-Encoding: 8bit
- ------------
-
- Patch 7.4.052
- Problem: With 'fo' set to "a2" inserting a space in the first column may
- cause the cursor to jump to the previous line.
- Solution: Handle the case when there is no comment leader properly. (Tor
- Perkins) Also fix that cursor is in the wrong place when spaces
- get replaced with a Tab.
- Files: src/misc1.c, src/ops.c, src/testdir/test68.in,
- src/testdir/test68.ok
-
-
- *** ../vim-7.4.051/src/misc1.c 2013-09-05 21:41:35.000000000 +0200
- --- src/misc1.c 2013-10-06 17:46:18.000000000 +0200
- ***************
- *** 303,312 ****
- ml_replace(curwin->w_cursor.lnum, newline, FALSE);
- if (flags & SIN_CHANGED)
- changed_bytes(curwin->w_cursor.lnum, 0);
- ! /* Correct saved cursor position if it's after the indent. */
- ! if (saved_cursor.lnum == curwin->w_cursor.lnum
- ! && saved_cursor.col >= (colnr_T)(p - oldline))
- ! saved_cursor.col += ind_len - (colnr_T)(p - oldline);
- retval = TRUE;
- }
- else
- --- 303,320 ----
- ml_replace(curwin->w_cursor.lnum, newline, FALSE);
- if (flags & SIN_CHANGED)
- changed_bytes(curwin->w_cursor.lnum, 0);
- ! /* Correct saved cursor position if it is in this line. */
- ! if (saved_cursor.lnum == curwin->w_cursor.lnum)
- ! {
- ! if (saved_cursor.col >= (colnr_T)(p - oldline))
- ! /* cursor was after the indent, adjust for the number of
- ! * bytes added/removed */
- ! saved_cursor.col += ind_len - (colnr_T)(p - oldline);
- ! else if (saved_cursor.col >= (colnr_T)(s - newline))
- ! /* cursor was in the indent, and is now after it, put it back
- ! * at the start of the indent (replacing spaces with TAB) */
- ! saved_cursor.col = (colnr_T)(s - newline);
- ! }
- retval = TRUE;
- }
- else
- ***************
- *** 1581,1589 ****
-
- #if defined(FEAT_COMMENTS) || defined(PROTO)
- /*
- ! * get_leader_len() returns the length of the prefix of the given string
- ! * which introduces a comment. If this string is not a comment then 0 is
- ! * returned.
- * When "flags" is not NULL, it is set to point to the flags of the recognized
- * comment leader.
- * "backward" must be true for the "O" command.
- --- 1589,1597 ----
-
- #if defined(FEAT_COMMENTS) || defined(PROTO)
- /*
- ! * get_leader_len() returns the length in bytes of the prefix of the given
- ! * string which introduces a comment. If this string is not a comment then
- ! * 0 is returned.
- * When "flags" is not NULL, it is set to point to the flags of the recognized
- * comment leader.
- * "backward" must be true for the "O" command.
- *** ../vim-7.4.051/src/ops.c 2013-09-25 23:24:54.000000000 +0200
- --- src/ops.c 2013-10-06 17:11:51.000000000 +0200
- ***************
- *** 4989,4995 ****
-
- /*
- * When still in same paragraph, join the lines together. But
- ! * first delete the comment leader from the second line.
- */
- if (!is_end_par)
- {
- --- 4989,4995 ----
-
- /*
- * When still in same paragraph, join the lines together. But
- ! * first delete the leader from the second line.
- */
- if (!is_end_par)
- {
- ***************
- *** 4999,5009 ****
- if (line_count < 0 && u_save_cursor() == FAIL)
- break;
- #ifdef FEAT_COMMENTS
- - (void)del_bytes((long)next_leader_len, FALSE, FALSE);
- if (next_leader_len > 0)
- mark_col_adjust(curwin->w_cursor.lnum, (colnr_T)0, 0L,
- (long)-next_leader_len);
- #endif
- curwin->w_cursor.lnum--;
- if (do_join(2, TRUE, FALSE, FALSE) == FAIL)
- {
- --- 4999,5023 ----
- if (line_count < 0 && u_save_cursor() == FAIL)
- break;
- #ifdef FEAT_COMMENTS
- if (next_leader_len > 0)
- + {
- + (void)del_bytes((long)next_leader_len, FALSE, FALSE);
- mark_col_adjust(curwin->w_cursor.lnum, (colnr_T)0, 0L,
- (long)-next_leader_len);
- + } else
- #endif
- + if (second_indent > 0) /* the "leader" for FO_Q_SECOND */
- + {
- + char_u *p = ml_get_curline();
- + int indent = skipwhite(p) - p;
- +
- + if (indent > 0)
- + {
- + (void)del_bytes(indent, FALSE, FALSE);
- + mark_col_adjust(curwin->w_cursor.lnum,
- + (colnr_T)0, 0L, (long)-indent);
- + }
- + }
- curwin->w_cursor.lnum--;
- if (do_join(2, TRUE, FALSE, FALSE) == FAIL)
- {
- *** ../vim-7.4.051/src/testdir/test68.in 2012-07-25 15:57:06.000000000 +0200
- --- src/testdir/test68.in 2013-10-06 16:20:33.000000000 +0200
- ***************
- *** 62,67 ****
- --- 62,81 ----
- }
-
- STARTTEST
- + /^{/+3
- + :set tw=5 fo=t2a si
- + i A_
- + ENDTEST
- +
- + {
- +
- + x a
- + b
- + c
- +
- + }
- +
- + STARTTEST
- /^{/+1
- :set tw=5 fo=qn comments=:#
- gwap
- *** ../vim-7.4.051/src/testdir/test68.ok 2012-07-25 16:03:05.000000000 +0200
- --- src/testdir/test68.ok 2013-10-06 16:20:33.000000000 +0200
- ***************
- *** 43,48 ****
- --- 43,57 ----
-
-
- {
- +
- + x a
- + b_
- + c
- +
- + }
- +
- +
- + {
- # 1 a
- # b
- }
- *** ../vim-7.4.051/src/version.c 2013-10-06 15:46:06.000000000 +0200
- --- src/version.c 2013-10-06 17:25:27.000000000 +0200
- ***************
- *** 740,741 ****
- --- 740,743 ----
- { /* Add new patch number below this line */
- + /**/
- + 52,
- /**/
-
- --
- ARTHUR: Will you ask your master if he wants to join my court at Camelot?!
- GUARD #1: But then of course African swallows are not migratory.
- GUARD #2: Oh, yeah...
- GUARD #1: So they couldn't bring a coconut back anyway...
- The Quest for the Holy Grail (Monty Python)
-
- /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
- /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
- \\\ an exciting new programming language -- http://www.Zimbu.org ///
- \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
-