Mercurial > vim
diff src/netbeans.c @ 717:2fa8cb05b861 v7.0218
updated for version 7.0218
author | vimboss |
---|---|
date | Wed, 08 Mar 2006 21:32:40 +0000 |
parents | 0f9f4761ad9c |
children | 7b21554be7a1 |
line wrap: on
line diff
--- a/src/netbeans.c +++ b/src/netbeans.c @@ -1489,10 +1489,10 @@ nb_do_cmd( lbuf[0] = '\0'; nb_set_curbuf(buf->bufp); - old_b_changed = buf->bufp->b_changed; - - pos = off2pos(buf->bufp, off); - if (pos) + old_b_changed = curbuf->b_changed; + + pos = off2pos(curbuf, off); + if (pos != NULL) { if (pos->lnum == 0) pos->lnum = 1; @@ -1506,28 +1506,30 @@ nb_do_cmd( #ifdef FEAT_VIRTUALEDIT pos->coladd = 0; #endif - pos->lnum = buf->bufp->b_ml.ml_line_count; + pos->lnum = curbuf->b_ml.ml_line_count; } lnum = pos->lnum; old_w_cursor = curwin->w_cursor; curwin->w_cursor = *pos; - if (buf->bufp->b_start_eol == FALSE && lnum > 0) + if (curbuf->b_start_eol == FALSE + && lnum > 0 + && lnum <= curbuf->b_ml.ml_line_count) { /* Append to a partial line */ char_u *partial = ml_get(lnum); - if (partial != IObuff) - STRCPY(lbuf, partial); - lbuf_len = STRLEN(partial); - ml_delete(lnum, FALSE); + STRCPY(lbuf, partial); + lbuf_len = STRLEN(partial); + ml_delete(lnum, FALSE); + buf_was_empty = (curbuf->b_ml.ml_flags & ML_EMPTY); } doupdate = 1; while (*args) { nl = (char_u *)strchr((char *)args, '\n'); - if (nl) + if (nl != NULL) { STRNCAT(lbuf, args, nl - args); lbuf[lbuf_len + nl - args] = '\0'; @@ -1554,13 +1556,13 @@ nb_do_cmd( if (*(args - 1) == '\n') { - buf->bufp->b_p_eol = TRUE; - buf->bufp->b_start_eol = TRUE; + curbuf->b_p_eol = TRUE; + curbuf->b_start_eol = TRUE; } else { - buf->bufp->b_p_eol = FALSE; - buf->bufp->b_start_eol = FALSE; + curbuf->b_p_eol = FALSE; + curbuf->b_start_eol = FALSE; } appended_lines_mark(pos->lnum - 1, lnum - pos->lnum); @@ -1573,8 +1575,11 @@ nb_do_cmd( if (ff_detected == EOL_UNKNOWN) ff_detected = EOL_DOS; set_fileformat(ff_detected, OPT_LOCAL); - buf->bufp->b_start_ffc = *buf->bufp->b_p_ff; - ml_delete(curbuf->b_ml.ml_line_count, FALSE); + curbuf->b_start_ffc = *curbuf->b_p_ff; + + /* Safety check: only delete empty line */ + if (*ml_get(curbuf->b_ml.ml_line_count) == NUL) + ml_delete(curbuf->b_ml.ml_line_count, FALSE); } curwin->w_cursor = old_w_cursor; @@ -1584,11 +1589,11 @@ nb_do_cmd( * text the buffer has been updated but not written. Will * netbeans guarantee to write it? Even if I do a :q! ? */ - buf->bufp->b_changed = old_b_changed; /* logically unchanged */ + curbuf->b_changed = old_b_changed; /* logically unchanged */ netbeansFireChanges = oldFire; - u_blockfree(buf->bufp); - u_clearall(buf->bufp); + u_blockfree(curbuf); + u_clearall(curbuf); } vim_free(to_free); nb_reply_nil(cmdno); /* or !error */