To:
[email protected]
Subject: Patch 6.3a.003
Fcc: outbox
From: Bram Moolenaar <
[email protected]>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 6.3a.003
Problem: E315 error with auto-formatting comments. (Henry Van Roessel)
Solution: Pass the line number to same_leader().
Files: src/ops.c
*** ../vim-6.3a.002/src/ops.c Fri May 7 10:59:38 2004
--- src/ops.c Sat May 8 12:27:21 2004
***************
*** 122,128 ****
#endif
static int ends_in_white __ARGS((linenr_T lnum));
#ifdef FEAT_COMMENTS
! static int same_leader __ARGS((int, char_u *, int, char_u *));
static int fmt_check_par __ARGS((linenr_T, int *, char_u **, int do_comments));
#else
static int fmt_check_par __ARGS((linenr_T));
--- 122,128 ----
#endif
static int ends_in_white __ARGS((linenr_T lnum));
#ifdef FEAT_COMMENTS
! static int same_leader __ARGS((linenr_T lnum, int, char_u *, int, char_u *));
static int fmt_check_par __ARGS((linenr_T, int *, char_u **, int do_comments));
#else
static int fmt_check_par __ARGS((linenr_T));
***************
*** 4082,4093 ****
#ifdef FEAT_COMMENTS
/*
! * Return TRUE if the two comment leaders given are the same. The cursor is
! * in the first line. White-space is ignored. Note that the whole of
* 'leader1' must match 'leader2_len' characters from 'leader2' -- webb
*/
static int
! same_leader(leader1_len, leader1_flags, leader2_len, leader2_flags)
int leader1_len;
char_u *leader1_flags;
int leader2_len;
--- 4082,4094 ----
#ifdef FEAT_COMMENTS
/*
! * Return TRUE if the two comment leaders given are the same. "lnum" is
! * the first line. White-space is ignored. Note that the whole of
* 'leader1' must match 'leader2_len' characters from 'leader2' -- webb
*/
static int
! same_leader(lnum, leader1_len, leader1_flags, leader2_len, leader2_flags)
! linenr_T lnum;
int leader1_len;
char_u *leader1_flags;
int leader2_len;
***************
*** 4118,4124 ****
return FALSE;
if (*p == COM_START)
{
! if (*(ml_get_curline() + leader1_len) == NUL)
return FALSE;
if (leader2_flags == NULL || leader2_len == 0)
return FALSE;
--- 4119,4125 ----
return FALSE;
if (*p == COM_START)
{
! if (*(ml_get(lnum) + leader1_len) == NUL)
return FALSE;
if (leader2_flags == NULL || leader2_len == 0)
return FALSE;
***************
*** 4134,4145 ****
* Get current line and next line, compare the leaders.
* The first line has to be saved, only one line can be locked at a time.
*/
! line1 = vim_strsave(ml_get_curline());
if (line1 != NULL)
{
for (idx1 = 0; vim_iswhite(line1[idx1]); ++idx1)
;
! line2 = ml_get(curwin->w_cursor.lnum + 1);
for (idx2 = 0; idx2 < leader2_len; ++idx2)
{
if (!vim_iswhite(line2[idx2]))
--- 4135,4146 ----
* Get current line and next line, compare the leaders.
* The first line has to be saved, only one line can be locked at a time.
*/
! line1 = vim_strsave(ml_get(lnum));
if (line1 != NULL)
{
for (idx1 = 0; vim_iswhite(line1[idx1]); ++idx1)
;
! line2 = ml_get(lnum + 1);
for (idx2 = 0; idx2 < leader2_len; ++idx2)
{
if (!vim_iswhite(line2[idx2]))
***************
*** 4379,4385 ****
*/
if (curwin->w_cursor.lnum >= curbuf->b_ml.ml_line_count
#ifdef FEAT_COMMENTS
! || !same_leader(leader_len, leader_flags,
next_leader_len, next_leader_flags)
#endif
)
--- 4380,4387 ----
*/
if (curwin->w_cursor.lnum >= curbuf->b_ml.ml_line_count
#ifdef FEAT_COMMENTS
! || !same_leader(curwin->w_cursor.lnum,
! leader_len, leader_flags,
next_leader_len, next_leader_flags)
#endif
)
***************
*** 4576,4582 ****
return TRUE; /* numbered item starts in "lnum". */
#ifdef FEAT_COMMENTS
! if (!same_leader(leader_len, leader_flags,
next_leader_len, next_leader_flags))
return TRUE; /* change of comment leader. */
#endif
--- 4578,4584 ----
return TRUE; /* numbered item starts in "lnum". */
#ifdef FEAT_COMMENTS
! if (!same_leader(lnum - 1, leader_len, leader_flags,
next_leader_len, next_leader_flags))
return TRUE; /* change of comment leader. */
#endif
*** ../vim-6.3a.002/src/version.c Fri May 7 17:06:13 2004
--- src/version.c Sat May 8 12:30:09 2004
***************
*** 643,644 ****
--- 643,646 ----
{ /* Add new patch number below this line */
+ /**/
+ 3,
/**/
--
hundred-and-one symptoms of being an internet addict:
183. You move your coffeemaker next to your computer.
/// Bram Moolenaar --
[email protected] --
http://www.Moolenaar.net \\\
/// Sponsor Vim, vote for features --
http://www.Vim.org/sponsor/ \\\
\\\ Project leader for A-A-P --
http://www.A-A-P.org ///
\\\ Buy at Amazon and help AIDS victims --
http://ICCF.nl/click1.html ///