summaryrefslogtreecommitdiffstats
path: root/source/ap/vim/patches/7.3.541
diff options
context:
space:
mode:
Diffstat (limited to 'source/ap/vim/patches/7.3.541')
-rw-r--r--source/ap/vim/patches/7.3.5411090
1 files changed, 0 insertions, 1090 deletions
diff --git a/source/ap/vim/patches/7.3.541 b/source/ap/vim/patches/7.3.541
deleted file mode 100644
index 133b82dad..000000000
--- a/source/ap/vim/patches/7.3.541
+++ /dev/null
@@ -1,1090 +0,0 @@
-To: vim_dev@googlegroups.com
-Subject: Patch 7.3.541
-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.3.541
-Problem: When joining lines comment leaders need to be removed manually.
-Solution: Add the 'j' flag to 'formatoptions'. (Lech Lorens)
-Files: runtime/doc/change.txt, src/edit.c, src/ex_docmd.c, src/misc1.c,
- src/normal.c, src/ops.c, src/option.h, src/proto/misc1.pro,
- src/proto/ops.pro, src/search.c, src/testdir/test29.in,
- src/testdir/test29.ok
-
-
-*** ../vim-7.3.540/runtime/doc/change.txt 2011-05-05 14:26:37.000000000 +0200
---- runtime/doc/change.txt 2012-06-06 13:05:04.000000000 +0200
-***************
-*** 1495,1500 ****
---- 1522,1533 ----
- characters. Overruled by the 'M' flag.
- 1 Don't break a line after a one-letter word. It's broken before it
- instead (if possible).
-+ j Where it makes sense, remove a comment leader when joining lines. For
-+ example, joining:
-+ int i; // the index ~
-+ // in the list ~
-+ Becomes:
-+ int i; // the index in the list ~
-
-
- With 't' and 'c' you can specify when Vim performs auto-wrapping:
-*** ../vim-7.3.540/src/edit.c 2012-06-01 15:20:49.000000000 +0200
---- src/edit.c 2012-06-06 13:00:29.000000000 +0200
-***************
-*** 5847,5853 ****
- * Need to remove existing (middle) comment leader and insert end
- * comment leader. First, check what comment leader we can find.
- */
-! i = get_leader_len(line = ml_get_curline(), &p, FALSE);
- if (i > 0 && vim_strchr(p, COM_MIDDLE) != NULL) /* Just checking */
- {
- /* Skip middle-comment string */
---- 5847,5853 ----
- * Need to remove existing (middle) comment leader and insert end
- * comment leader. First, check what comment leader we can find.
- */
-! i = get_leader_len(line = ml_get_curline(), &p, FALSE, TRUE);
- if (i > 0 && vim_strchr(p, COM_MIDDLE) != NULL) /* Just checking */
- {
- /* Skip middle-comment string */
-***************
-*** 6085,6091 ****
-
- /* Don't break until after the comment leader */
- if (do_comments)
-! leader_len = get_leader_len(ml_get_curline(), NULL, FALSE);
- else
- leader_len = 0;
-
---- 6085,6091 ----
-
- /* Don't break until after the comment leader */
- if (do_comments)
-! leader_len = get_leader_len(ml_get_curline(), NULL, FALSE, TRUE);
- else
- leader_len = 0;
-
-***************
-*** 6411,6417 ****
- /* With the 'c' flag in 'formatoptions' and 't' missing: only format
- * comments. */
- if (has_format_option(FO_WRAP_COMS) && !has_format_option(FO_WRAP)
-! && get_leader_len(old, NULL, FALSE) == 0)
- return;
- #endif
-
---- 6411,6417 ----
- /* With the 'c' flag in 'formatoptions' and 't' missing: only format
- * comments. */
- if (has_format_option(FO_WRAP_COMS) && !has_format_option(FO_WRAP)
-! && get_leader_len(old, NULL, FALSE, TRUE) == 0)
- return;
- #endif
-
-***************
-*** 8565,8571 ****
- {
- temp = curwin->w_cursor.col;
- if (!can_bs(BS_EOL) /* only if "eol" included */
-! || do_join(2, FALSE, TRUE) == FAIL)
- vim_beep();
- else
- curwin->w_cursor.col = temp;
---- 8565,8571 ----
- {
- temp = curwin->w_cursor.col;
- if (!can_bs(BS_EOL) /* only if "eol" included */
-! || do_join(2, FALSE, TRUE, FALSE) == FAIL)
- vim_beep();
- else
- curwin->w_cursor.col = temp;
-***************
-*** 8746,8752 ****
- ptr[len - 1] = NUL;
- }
-
-! (void)do_join(2, FALSE, FALSE);
- if (temp == NUL && gchar_cursor() != NUL)
- inc_cursor();
- }
---- 8746,8752 ----
- ptr[len - 1] = NUL;
- }
-
-! (void)do_join(2, FALSE, FALSE, FALSE);
- if (temp == NUL && gchar_cursor() != NUL)
- inc_cursor();
- }
-*** ../vim-7.3.540/src/ex_docmd.c 2012-04-30 18:48:38.000000000 +0200
---- src/ex_docmd.c 2012-06-06 13:00:29.000000000 +0200
-***************
-*** 8545,8551 ****
- }
- ++eap->line2;
- }
-! (void)do_join(eap->line2 - eap->line1 + 1, !eap->forceit, TRUE);
- beginline(BL_WHITE | BL_FIX);
- ex_may_print(eap);
- }
---- 8545,8551 ----
- }
- ++eap->line2;
- }
-! (void)do_join(eap->line2 - eap->line1 + 1, !eap->forceit, TRUE, TRUE);
- beginline(BL_WHITE | BL_FIX);
- ex_may_print(eap);
- }
-*** ../vim-7.3.540/src/misc1.c 2012-06-01 15:20:49.000000000 +0200
---- src/misc1.c 2012-06-06 13:27:32.000000000 +0200
-***************
-*** 671,677 ****
- ptr = saved_line;
- # ifdef FEAT_COMMENTS
- if (flags & OPENLINE_DO_COM)
-! lead_len = get_leader_len(ptr, NULL, FALSE);
- else
- lead_len = 0;
- # endif
---- 671,677 ----
- ptr = saved_line;
- # ifdef FEAT_COMMENTS
- if (flags & OPENLINE_DO_COM)
-! lead_len = get_leader_len(ptr, NULL, FALSE, TRUE);
- else
- lead_len = 0;
- # endif
-***************
-*** 693,699 ****
- }
- # ifdef FEAT_COMMENTS
- if (flags & OPENLINE_DO_COM)
-! lead_len = get_leader_len(ptr, NULL, FALSE);
- else
- lead_len = 0;
- if (lead_len > 0)
---- 693,699 ----
- }
- # ifdef FEAT_COMMENTS
- if (flags & OPENLINE_DO_COM)
-! lead_len = get_leader_len(ptr, NULL, FALSE, TRUE);
- else
- lead_len = 0;
- if (lead_len > 0)
-***************
-*** 836,842 ****
- */
- end_comment_pending = NUL;
- if (flags & OPENLINE_DO_COM)
-! lead_len = get_leader_len(saved_line, &lead_flags, dir == BACKWARD);
- else
- lead_len = 0;
- if (lead_len > 0)
---- 836,842 ----
- */
- end_comment_pending = NUL;
- if (flags & OPENLINE_DO_COM)
-! lead_len = get_leader_len(saved_line, &lead_flags, dir == BACKWARD, TRUE);
- else
- lead_len = 0;
- if (lead_len > 0)
-***************
-*** 1548,1561 ****
- * 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.
- */
- int
-! get_leader_len(line, flags, backward)
- char_u *line;
- char_u **flags;
- int backward;
- {
- int i, j;
- int got_com = FALSE;
- int found_one;
- char_u part_buf[COM_MAX_LEN]; /* buffer for one option part */
---- 1548,1565 ----
- * 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.
-+ * If "include_space" is set, include trailing whitespace while calculating the
-+ * length.
- */
- int
-! get_leader_len(line, flags, backward, include_space)
- char_u *line;
- char_u **flags;
- int backward;
-+ int include_space;
- {
- int i, j;
-+ int result;
- int got_com = FALSE;
- int found_one;
- char_u part_buf[COM_MAX_LEN]; /* buffer for one option part */
-***************
-*** 1565,1571 ****
- char_u *prev_list;
- char_u *saved_flags = NULL;
-
-! i = 0;
- while (vim_iswhite(line[i])) /* leading white space is ignored */
- ++i;
-
---- 1569,1575 ----
- char_u *prev_list;
- char_u *saved_flags = NULL;
-
-! result = i = 0;
- while (vim_iswhite(line[i])) /* leading white space is ignored */
- ++i;
-
-***************
-*** 1668,1684 ****
- if (!found_one)
- break;
-
- /* Include any trailing white space. */
- while (vim_iswhite(line[i]))
- ++i;
-
- /* If this comment doesn't nest, stop here. */
- got_com = TRUE;
- if (vim_strchr(part_buf, COM_NEST) == NULL)
- break;
- }
-
-! return (got_com ? i : 0);
- }
- #endif
-
---- 1672,1838 ----
- if (!found_one)
- break;
-
-+ result = i;
-+
- /* Include any trailing white space. */
- while (vim_iswhite(line[i]))
- ++i;
-
-+ if (include_space)
-+ result = i;
-+
- /* If this comment doesn't nest, stop here. */
- got_com = TRUE;
- if (vim_strchr(part_buf, COM_NEST) == NULL)
- break;
- }
-+ return result;
-+ }
-+
-+ /*
-+ * Return the offset at which the last comment in line starts. If there is no
-+ * comment in the whole line, -1 is returned.
-+ *
-+ * When "flags" is not null, it is set to point to the flags describing the
-+ * recognized comment leader.
-+ */
-+ int
-+ get_last_leader_offset(line, flags)
-+ char_u *line;
-+ char_u **flags;
-+ {
-+ int result = -1;
-+ int i, j;
-+ int lower_check_bound = 0;
-+ char_u *string;
-+ char_u *com_leader;
-+ char_u *com_flags;
-+ char_u *list;
-+ int found_one;
-+ char_u part_buf[COM_MAX_LEN]; /* buffer for one option part */
-+
-+ /*
-+ * Repeat to match several nested comment strings.
-+ */
-+ i = (int)STRLEN(line);
-+ while (--i >= lower_check_bound)
-+ {
-+ /*
-+ * scan through the 'comments' option for a match
-+ */
-+ found_one = FALSE;
-+ for (list = curbuf->b_p_com; *list; )
-+ {
-+ char_u *flags_save = list;
-+
-+ /*
-+ * Get one option part into part_buf[]. Advance list to next one.
-+ * put string at start of string.
-+ */
-+ (void)copy_option_part(&list, part_buf, COM_MAX_LEN, ",");
-+ string = vim_strchr(part_buf, ':');
-+ if (string == NULL) /* If everything is fine, this cannot actually
-+ * happen. */
-+ {
-+ continue;
-+ }
-+ *string++ = NUL; /* Isolate flags from string. */
-+ com_leader = string;
-+
-+ /*
-+ * Line contents and string must match.
-+ * When string starts with white space, must have some white space
-+ * (but the amount does not need to match, there might be a mix of
-+ * TABs and spaces).
-+ */
-+ if (vim_iswhite(string[0]))
-+ {
-+ if (i == 0 || !vim_iswhite(line[i - 1]))
-+ continue;
-+ while (vim_iswhite(string[0]))
-+ ++string;
-+ }
-+ for (j = 0; string[j] != NUL && string[j] == line[i + j]; ++j)
-+ /* do nothing */;
-+ if (string[j] != NUL)
-+ continue;
-+
-+ /*
-+ * When 'b' flag used, there must be white space or an
-+ * end-of-line after the string in the line.
-+ */
-+ if (vim_strchr(part_buf, COM_BLANK) != NULL
-+ && !vim_iswhite(line[i + j]) && line[i + j] != NUL)
-+ {
-+ continue;
-+ }
-+
-+ /*
-+ * We have found a match, stop searching.
-+ */
-+ found_one = TRUE;
-+
-+ if (flags)
-+ *flags = flags_save;
-+ com_flags = flags_save;
-+
-+ break;
-+ }
-
-! if (found_one)
-! {
-! char_u part_buf2[COM_MAX_LEN]; /* buffer for one option part */
-! int len1, len2, off;
-!
-! result = i;
-! /*
-! * If this comment nests, continue searching.
-! */
-! if (vim_strchr(part_buf, COM_NEST) != NULL)
-! continue;
-!
-! lower_check_bound = i;
-!
-! /* Let's verify whether the comment leader found is a substring
-! * of other comment leaders. If it is, let's adjust the
-! * lower_check_bound so that we make sure that we have determined
-! * the comment leader correctly.
-! */
-!
-! while (vim_iswhite(*com_leader))
-! ++com_leader;
-! len1 = (int)STRLEN(com_leader);
-!
-! for (list = curbuf->b_p_com; *list; )
-! {
-! char_u *flags_save = list;
-!
-! (void)copy_option_part(&list, part_buf2, COM_MAX_LEN, ",");
-! if (flags_save == com_flags)
-! continue;
-! string = vim_strchr(part_buf2, ':');
-! ++string;
-! while (vim_iswhite(*string))
-! ++string;
-! len2 = (int)STRLEN(string);
-! if (len2 == 0)
-! continue;
-!
-! /* Now we have to verify whether string ends with a substring
-! * beginning the com_leader. */
-! for (off = (len2 > i ? i : len2); off > 0 && off + len1 > len2;)
-! {
-! --off;
-! if (!STRNCMP(string + off, com_leader, len2 - off))
-! {
-! if (i - off < lower_check_bound)
-! lower_check_bound = i - off;
-! }
-! }
-! }
-! }
-! }
-! return result;
- }
- #endif
-
-*** ../vim-7.3.540/src/normal.c 2012-05-25 13:12:33.000000000 +0200
---- src/normal.c 2012-06-06 13:00:29.000000000 +0200
-***************
-*** 1968,1974 ****
- beep_flush();
- else
- {
-! (void)do_join(oap->line_count, oap->op_type == OP_JOIN, TRUE);
- auto_format(FALSE, TRUE);
- }
- break;
---- 1968,1974 ----
- beep_flush();
- else
- {
-! (void)do_join(oap->line_count, oap->op_type == OP_JOIN, TRUE, TRUE);
- auto_format(FALSE, TRUE);
- }
- break;
-***************
-*** 4426,4432 ****
- break;
- }
- #ifdef FEAT_COMMENTS
-! if (get_leader_len(ml_get_curline(), NULL, FALSE) > 0)
- {
- /* Ignore this line, continue at start of next line. */
- ++curwin->w_cursor.lnum;
---- 4426,4432 ----
- break;
- }
- #ifdef FEAT_COMMENTS
-! if (get_leader_len(ml_get_curline(), NULL, FALSE, TRUE) > 0)
- {
- /* Ignore this line, continue at start of next line. */
- ++curwin->w_cursor.lnum;
-***************
-*** 9324,9330 ****
- {
- prep_redo(cap->oap->regname, cap->count0,
- NUL, cap->cmdchar, NUL, NUL, cap->nchar);
-! (void)do_join(cap->count0, cap->nchar == NUL, TRUE);
- }
- }
- }
---- 9324,9330 ----
- {
- prep_redo(cap->oap->regname, cap->count0,
- NUL, cap->cmdchar, NUL, NUL, cap->nchar);
-! (void)do_join(cap->count0, cap->nchar == NUL, TRUE, TRUE);
- }
- }
- }
-*** ../vim-7.3.540/src/ops.c 2012-05-18 12:49:33.000000000 +0200
---- src/ops.c 2012-06-06 15:43:31.000000000 +0200
-***************
-*** 112,117 ****
---- 112,120 ----
- # endif
- #endif
- static void dis_msg __ARGS((char_u *p, int skip_esc));
-+ #if defined(FEAT_COMMENTS) || defined(PROTO)
-+ static char_u *skip_comment __ARGS((char_u *line, int process, int include_space, int *is_comment));
-+ #endif
- #ifdef FEAT_VISUAL
- static void block_prep __ARGS((oparg_T *oap, struct block_def *, linenr_T, int));
- #endif
-***************
-*** 1987,1993 ****
- curwin->w_cursor = curpos; /* restore curwin->w_cursor */
- }
- if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count)
-! (void)do_join(2, FALSE, FALSE);
- }
- }
-
---- 1990,1996 ----
- curwin->w_cursor = curpos; /* restore curwin->w_cursor */
- }
- if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count)
-! (void)do_join(2, FALSE, FALSE, FALSE);
- }
- }
-
-***************
-*** 4197,4213 ****
- ui_breakcheck();
- }
-
- /*
- * Join 'count' lines (minimal 2) at cursor position.
- * When "save_undo" is TRUE save lines for undo first.
- *
- * return FAIL for failure, OK otherwise
- */
- int
-! do_join(count, insert_space, save_undo)
- long count;
- int insert_space;
- int save_undo;
- {
- char_u *curr = NULL;
- char_u *curr_start = NULL;
---- 4200,4297 ----
- ui_breakcheck();
- }
-
-+ #if defined(FEAT_COMMENTS) || defined(PROTO)
-+ /*
-+ * If "process" is TRUE and the line begins with a comment leader (possibly
-+ * after some white space), return a pointer to the text after it. Put a boolean
-+ * value indicating whether the line ends with an unclosed comment in
-+ * "is_comment".
-+ * line - line to be processed,
-+ * process - if FALSE, will only check whether the line ends with an unclosed
-+ * comment,
-+ * include_space - whether to also skip space following the comment leader,
-+ * is_comment - will indicate whether the current line ends with an unclosed
-+ * comment.
-+ */
-+ static char_u *
-+ skip_comment(line, process, include_space, is_comment)
-+ char_u *line;
-+ int process;
-+ int include_space;
-+ int *is_comment;
-+ {
-+ char_u *comment_flags = NULL;
-+ int lead_len;
-+ int leader_offset = get_last_leader_offset(line, &comment_flags);
-+
-+ *is_comment = FALSE;
-+ if (leader_offset != -1)
-+ {
-+ /* Let's check whether the line ends with an unclosed comment.
-+ * If the last comment leader has COM_END in flags, there's no comment.
-+ */
-+ while (*comment_flags)
-+ {
-+ if (*comment_flags == COM_END
-+ || *comment_flags == ':')
-+ break;
-+ ++comment_flags;
-+ }
-+ if (*comment_flags != COM_END)
-+ *is_comment = TRUE;
-+ }
-+
-+ if (process == FALSE)
-+ return line;
-+
-+ lead_len = get_leader_len(line, &comment_flags, FALSE, include_space);
-+
-+ if (lead_len == 0)
-+ return line;
-+
-+ /* Find:
-+ * - COM_START,
-+ * - COM_END,
-+ * - colon,
-+ * whichever comes first.
-+ */
-+ while (*comment_flags)
-+ {
-+ if (*comment_flags == COM_START
-+ || *comment_flags == COM_END
-+ || *comment_flags == ':')
-+ {
-+ break;
-+ }
-+ ++comment_flags;
-+ }
-+
-+ /* If we found a colon, it means that we are not processing a line
-+ * starting with an opening or a closing part of a three-part
-+ * comment. That's good, because we don't want to remove those as
-+ * this would be annoying.
-+ */
-+ if (*comment_flags == ':' || *comment_flags == NUL)
-+ line += lead_len;
-+
-+ return line;
-+ }
-+ #endif
-+
- /*
- * Join 'count' lines (minimal 2) at cursor position.
- * When "save_undo" is TRUE save lines for undo first.
-+ * Set "use_formatoptions" to FALSE when e.g. processing
-+ * backspace and comment leaders should not be removed.
- *
- * return FAIL for failure, OK otherwise
- */
- int
-! do_join(count, insert_space, save_undo, use_formatoptions)
- long count;
- int insert_space;
- int save_undo;
-+ int use_formatoptions UNUSED;
- {
- char_u *curr = NULL;
- char_u *curr_start = NULL;
-***************
-*** 4221,4226 ****
---- 4305,4317 ----
- linenr_T t;
- colnr_T col = 0;
- int ret = OK;
-+ #if defined(FEAT_COMMENTS) || defined(PROTO)
-+ int *comments;
-+ int remove_comments = (use_formatoptions == TRUE)
-+ && has_format_option(FO_REMOVE_COMS);
-+ int prev_was_comment;
-+ #endif
-+
-
- if (save_undo && u_save((linenr_T)(curwin->w_cursor.lnum - 1),
- (linenr_T)(curwin->w_cursor.lnum + count)) == FAIL)
-***************
-*** 4232,4237 ****
---- 4323,4339 ----
- spaces = lalloc_clear((long_u)count, TRUE);
- if (spaces == NULL)
- return FAIL;
-+ #if defined(FEAT_COMMENTS) || defined(PROTO)
-+ if (remove_comments)
-+ {
-+ comments = (int *)lalloc_clear((long_u)count * sizeof(int), TRUE);
-+ if (comments == NULL)
-+ {
-+ vim_free(spaces);
-+ return FAIL;
-+ }
-+ }
-+ #endif
-
- /*
- * Don't move anything, just compute the final line length
-***************
-*** 4240,4245 ****
---- 4342,4366 ----
- for (t = 0; t < count; ++t)
- {
- curr = curr_start = ml_get((linenr_T)(curwin->w_cursor.lnum + t));
-+ #if defined(FEAT_COMMENTS) || defined(PROTO)
-+ if (remove_comments)
-+ {
-+ /* We don't want to remove the comment leader if the
-+ * previous line is not a comment. */
-+ if (t > 0 && prev_was_comment)
-+ {
-+
-+ char_u *new_curr = skip_comment(curr, TRUE, insert_space,
-+ &prev_was_comment);
-+ comments[t] = new_curr - curr;
-+ curr = new_curr;
-+ }
-+ else
-+ curr = skip_comment(curr, FALSE, insert_space,
-+ &prev_was_comment);
-+ }
-+ #endif
-+
- if (insert_space && t > 0)
- {
- curr = skipwhite(curr);
-***************
-*** 4327,4332 ****
---- 4448,4457 ----
- if (t == 0)
- break;
- curr = curr_start = ml_get((linenr_T)(curwin->w_cursor.lnum + t - 1));
-+ #if defined(FEAT_COMMENTS) || defined(PROTO)
-+ if (remove_comments)
-+ curr += comments[t - 1];
-+ #endif
- if (insert_space && t > 1)
- curr = skipwhite(curr);
- currsize = (int)STRLEN(curr);
-***************
-*** 4364,4369 ****
---- 4489,4498 ----
-
- theend:
- vim_free(spaces);
-+ #if defined(FEAT_COMMENTS) || defined(PROTO)
-+ if (remove_comments)
-+ vim_free(comments);
-+ #endif
- return ret;
- }
-
-***************
-*** 4788,4794 ****
- (long)-next_leader_len);
- #endif
- curwin->w_cursor.lnum--;
-! if (do_join(2, TRUE, FALSE) == FAIL)
- {
- beep_flush();
- break;
---- 4917,4923 ----
- (long)-next_leader_len);
- #endif
- curwin->w_cursor.lnum--;
-! if (do_join(2, TRUE, FALSE, FALSE) == FAIL)
- {
- beep_flush();
- break;
-***************
-*** 4844,4850 ****
-
- ptr = ml_get(lnum);
- if (do_comments)
-! *leader_len = get_leader_len(ptr, leader_flags, FALSE);
- else
- *leader_len = 0;
-
---- 4973,4979 ----
-
- ptr = ml_get(lnum);
- if (do_comments)
-! *leader_len = get_leader_len(ptr, leader_flags, FALSE, TRUE);
- else
- *leader_len = 0;
-
-*** ../vim-7.3.540/src/option.h 2012-02-20 22:18:22.000000000 +0100
---- src/option.h 2012-06-06 13:00:29.000000000 +0200
-***************
-*** 104,113 ****
- #define FO_ONE_LETTER '1'
- #define FO_WHITE_PAR 'w' /* trailing white space continues paragr. */
- #define FO_AUTO 'a' /* automatic formatting */
-
- #define DFLT_FO_VI "vt"
- #define DFLT_FO_VIM "tcq"
-! #define FO_ALL "tcroq2vlb1mMBn,aw" /* for do_set() */
-
- /* characters for the p_cpo option: */
- #define CPO_ALTREAD 'a' /* ":read" sets alternate file name */
---- 104,114 ----
- #define FO_ONE_LETTER '1'
- #define FO_WHITE_PAR 'w' /* trailing white space continues paragr. */
- #define FO_AUTO 'a' /* automatic formatting */
-+ #define FO_REMOVE_COMS 'j' /* remove comment leaders when joining lines */
-
- #define DFLT_FO_VI "vt"
- #define DFLT_FO_VIM "tcq"
-! #define FO_ALL "tcroq2vlb1mMBn,awj" /* for do_set() */
-
- /* characters for the p_cpo option: */
- #define CPO_ALTREAD 'a' /* ":read" sets alternate file name */
-*** ../vim-7.3.540/src/proto/misc1.pro 2010-08-15 21:57:28.000000000 +0200
---- src/proto/misc1.pro 2012-06-06 13:00:29.000000000 +0200
-***************
-*** 6,12 ****
- int set_indent __ARGS((int size, int flags));
- int get_number_indent __ARGS((linenr_T lnum));
- int open_line __ARGS((int dir, int flags, int old_indent));
-! int get_leader_len __ARGS((char_u *line, char_u **flags, int backward));
- int plines __ARGS((linenr_T lnum));
- int plines_win __ARGS((win_T *wp, linenr_T lnum, int winheight));
- int plines_nofill __ARGS((linenr_T lnum));
---- 6,13 ----
- int set_indent __ARGS((int size, int flags));
- int get_number_indent __ARGS((linenr_T lnum));
- int open_line __ARGS((int dir, int flags, int old_indent));
-! int get_leader_len __ARGS((char_u *line, char_u **flags, int backward, int do_skip_space));
-! int get_last_leader_offset __ARGS((char_u *line, char_u **flags));
- int plines __ARGS((linenr_T lnum));
- int plines_win __ARGS((win_T *wp, linenr_T lnum, int winheight));
- int plines_nofill __ARGS((linenr_T lnum));
-*** ../vim-7.3.540/src/proto/ops.pro 2010-08-15 21:57:28.000000000 +0200
---- src/proto/ops.pro 2012-06-06 13:00:29.000000000 +0200
-***************
-*** 36,42 ****
- int preprocs_left __ARGS((void));
- int get_register_name __ARGS((int num));
- void ex_display __ARGS((exarg_T *eap));
-! int do_join __ARGS((long count, int insert_space, int save_undo));
- void op_format __ARGS((oparg_T *oap, int keep_cursor));
- void op_formatexpr __ARGS((oparg_T *oap));
- int fex_format __ARGS((linenr_T lnum, long count, int c));
---- 36,42 ----
- int preprocs_left __ARGS((void));
- int get_register_name __ARGS((int num));
- void ex_display __ARGS((exarg_T *eap));
-! int do_join __ARGS((long count, int insert_space, int save_undo, int use_formatoptions));
- void op_format __ARGS((oparg_T *oap, int keep_cursor));
- void op_formatexpr __ARGS((oparg_T *oap));
- int fex_format __ARGS((linenr_T lnum, long count, int c));
-*** ../vim-7.3.540/src/search.c 2012-02-04 23:34:57.000000000 +0100
---- src/search.c 2012-06-06 13:00:29.000000000 +0200
-***************
-*** 1548,1554 ****
- int len;
- int stop = TRUE;
- #ifdef FEAT_MBYTE
-! static char_u bytes[MB_MAXBYTES];
- static int bytelen = 1; /* >1 for multi-byte char */
- #endif
-
---- 1548,1554 ----
- int len;
- int stop = TRUE;
- #ifdef FEAT_MBYTE
-! static char_u bytes[MB_MAXBYTES + 1];
- static int bytelen = 1; /* >1 for multi-byte char */
- #endif
-
-***************
-*** 4901,4907 ****
- #ifdef FEAT_COMMENTS
- if ((*line != '#' ||
- STRNCMP(skipwhite(line + 1), "define", 6) != 0)
-! && get_leader_len(line, NULL, FALSE))
- matched = FALSE;
-
- /*
---- 4901,4907 ----
- #ifdef FEAT_COMMENTS
- if ((*line != '#' ||
- STRNCMP(skipwhite(line + 1), "define", 6) != 0)
-! && get_leader_len(line, NULL, FALSE, TRUE))
- matched = FALSE;
-
- /*
-*** ../vim-7.3.540/src/testdir/test29.in 2010-08-15 21:57:29.000000000 +0200
---- src/testdir/test29.in 2012-06-06 15:44:38.000000000 +0200
-***************
-*** 4,19 ****
- and with 'cpoptions' flag 'j' set or not
-
- STARTTEST
- :set nocompatible viminfo+=nviminfo
- :set nojoinspaces
- :set cpoptions-=j
- /firstline/
-! j"tdGpJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j
- j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j joinspaces
- j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j
- j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j nojoinspaces compatible
-! j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj4Jy3l$pjdG:?firstline?+1,$w! test.out
-! :qa!
- ENDTEST
-
- firstline
---- 4,20 ----
- and with 'cpoptions' flag 'j' set or not
-
- STARTTEST
-+ :so small.vim
- :set nocompatible viminfo+=nviminfo
- :set nojoinspaces
- :set cpoptions-=j
- /firstline/
-! j"td/^STARTTEST/-1
-! PJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j
- j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j joinspaces
- j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j
- j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j nojoinspaces compatible
-! j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj4Jy3l$pjd/STARTTEST/-2
- ENDTEST
-
- firstline
-***************
-*** 54,56 ****
---- 55,181 ----
- hjkl iop!
- ert
-
-+ STARTTEST
-+ /^{/+1
-+ :set comments=s1:/*,mb:*,ex:*/,://
-+ :set nojoinspaces fo=j
-+ :set backspace=eol,start
-+ :.,+3join
-+ j4J
-+ :.,+2join
-+ j3J
-+ :.,+2join
-+ j3J
-+ :.,+2join
-+ jj3J
-+ ENDTEST
-+
-+ {
-+
-+ /*
-+ * Make sure the previous comment leader is not removed.
-+ */
-+
-+ /*
-+ * Make sure the previous comment leader is not removed.
-+ */
-+
-+ // Should the next comment leader be left alone?
-+ // Yes.
-+
-+ // Should the next comment leader be left alone?
-+ // Yes.
-+
-+ /* Here the comment leader should be left intact. */
-+ // And so should this one.
-+
-+ /* Here the comment leader should be left intact. */
-+ // And so should this one.
-+
-+ if (condition) // Remove the next comment leader!
-+ // OK, I will.
-+ action();
-+
-+ if (condition) // Remove the next comment leader!
-+ // OK, I will.
-+ action();
-+ }
-+
-+ STARTTEST
-+ /^{/+1
-+ :set comments=s1:/*,mb:*,ex:*/,://
-+ :set comments+=s1:>#,mb:#,ex:#<,:<
-+ :set cpoptions-=j joinspaces fo=j
-+ :set backspace=eol,start
-+ :.,+3join
-+ j4J
-+ :.,+2join
-+ j3J
-+ :.,+2join
-+ j3J
-+ :.,+2join
-+ jj3J
-+ j:.,+2join
-+ jj3J
-+ j:.,+5join
-+ j6J
-+ oSome code! // Make sure backspacing does not remove this comment leader.0i
-+ ENDTEST
-+
-+ {
-+
-+ /*
-+ * Make sure the previous comment leader is not removed.
-+ */
-+
-+ /*
-+ * Make sure the previous comment leader is not removed.
-+ */
-+
-+ // Should the next comment leader be left alone?
-+ // Yes.
-+
-+ // Should the next comment leader be left alone?
-+ // Yes.
-+
-+ /* Here the comment leader should be left intact. */
-+ // And so should this one.
-+
-+ /* Here the comment leader should be left intact. */
-+ // And so should this one.
-+
-+ if (condition) // Remove the next comment leader!
-+ // OK, I will.
-+ action();
-+
-+ if (condition) // Remove the next comment leader!
-+ // OK, I will.
-+ action();
-+
-+ int i = 7 /* foo *// 3
-+ // comment
-+ ;
-+
-+ int i = 7 /* foo *// 3
-+ // comment
-+ ;
-+
-+ ># Note that the last character of the ending comment leader (left angle
-+ # bracket) is a comment leader itself. Make sure that this comment leader is
-+ # not removed from the next line #<
-+ < On this line a new comment is opened which spans 2 lines. This comment should
-+ < retain its comment leader.
-+
-+ ># Note that the last character of the ending comment leader (left angle
-+ # bracket) is a comment leader itself. Make sure that this comment leader is
-+ # not removed from the next line #<
-+ < On this line a new comment is opened which spans 2 lines. This comment should
-+ < retain its comment leader.
-+
-+ }
-+
-+ STARTTEST
-+ :g/^STARTTEST/.,/^ENDTEST/d
-+ :?firstline?+1,$w! test.out
-+ :qa!
-+ ENDTEST
-*** ../vim-7.3.540/src/testdir/test29.ok 2010-08-15 21:57:29.000000000 +0200
---- src/testdir/test29.ok 2012-06-06 13:00:29.000000000 +0200
-***************
-*** 47,49 ****
---- 47,86 ----
- asdfasdf asdf
- asdfasdf asdf
- zx cvn. as dfg? hjkl iop! ert a
-+
-+
-+ {
-+ /* Make sure the previous comment leader is not removed. */
-+ /* Make sure the previous comment leader is not removed. */
-+ // Should the next comment leader be left alone? Yes.
-+ // Should the next comment leader be left alone? Yes.
-+ /* Here the comment leader should be left intact. */ // And so should this one.
-+ /* Here the comment leader should be left intact. */ // And so should this one.
-+ if (condition) // Remove the next comment leader! OK, I will.
-+ action();
-+ if (condition) // Remove the next comment leader! OK, I will.
-+ action();
-+ }
-+
-+
-+ {
-+ /* Make sure the previous comment leader is not removed. */
-+ /* Make sure the previous comment leader is not removed. */
-+ // Should the next comment leader be left alone? Yes.
-+ // Should the next comment leader be left alone? Yes.
-+ /* Here the comment leader should be left intact. */ // And so should this one.
-+ /* Here the comment leader should be left intact. */ // And so should this one.
-+ if (condition) // Remove the next comment leader! OK, I will.
-+ action();
-+ if (condition) // Remove the next comment leader! OK, I will.
-+ action();
-+ int i = 7 /* foo *// 3 // comment
-+ ;
-+ int i = 7 /* foo *// 3 // comment
-+ ;
-+ ># Note that the last character of the ending comment leader (left angle bracket) is a comment leader itself. Make sure that this comment leader is not removed from the next line #< < On this line a new comment is opened which spans 2 lines. This comment should retain its comment leader.
-+ ># Note that the last character of the ending comment leader (left angle bracket) is a comment leader itself. Make sure that this comment leader is not removed from the next line #< < On this line a new comment is opened which spans 2 lines. This comment should retain its comment leader.
-+
-+ Some code!// Make sure backspacing does not remove this comment leader.
-+ }
-+
-*** ../vim-7.3.540/src/version.c 2012-06-06 12:06:10.000000000 +0200
---- src/version.c 2012-06-06 16:10:03.000000000 +0200
-***************
-*** 716,717 ****
---- 716,719 ----
- { /* Add new patch number below this line */
-+ /**/
-+ 541,
- /**/
-
---
-I have a drinking problem -- I don't have a drink!
-
- /// 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 ///