comparison src/channel.c @ 11666:5cd9ba96561d v8.0.0716

patch 8.0.0716: not easy to start Vim cleanly commit https://github.com/vim/vim/commit/c4da113ef98dcfd6f2a088b1693c0317dcb5bf42 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jul 15 19:39:43 2017 +0200 patch 8.0.0716: not easy to start Vim cleanly Problem: Not easy to start Vim cleanly without changing the viminfo file. Not possible to know whether the -i command line flag was used. Solution: Add the --clean command line argument. Add the 'viminfofile' option. Add "-u DEFAULTS".
author Christian Brabandt <cb@256bit.org>
date Sat, 15 Jul 2017 19:45:03 +0200
parents 32aed0993813
children 3b2afa2b77b3
comparison
equal deleted inserted replaced
11665:d7fe6dc88ea4 11666:5cd9ba96561d
1436 if (buf == NULL || in_part->ch_buf_append) 1436 if (buf == NULL || in_part->ch_buf_append)
1437 return; /* no buffer or using appending */ 1437 return; /* no buffer or using appending */
1438 if (!bufref_valid(&in_part->ch_bufref) || buf->b_ml.ml_mfp == NULL) 1438 if (!bufref_valid(&in_part->ch_bufref) || buf->b_ml.ml_mfp == NULL)
1439 { 1439 {
1440 /* buffer was wiped out or unloaded */ 1440 /* buffer was wiped out or unloaded */
1441 ch_log(channel, "input buffer has been wiped out");
1441 in_part->ch_bufref.br_buf = NULL; 1442 in_part->ch_bufref.br_buf = NULL;
1442 return; 1443 return;
1443 } 1444 }
1444 1445
1445 for (lnum = in_part->ch_buf_top; lnum <= in_part->ch_buf_bot 1446 for (lnum = in_part->ch_buf_top; lnum <= in_part->ch_buf_bot
2336 buf_T *save_curbuf = curbuf; 2337 buf_T *save_curbuf = curbuf;
2337 linenr_T lnum = buffer->b_ml.ml_line_count; 2338 linenr_T lnum = buffer->b_ml.ml_line_count;
2338 int save_write_to = buffer->b_write_to_channel; 2339 int save_write_to = buffer->b_write_to_channel;
2339 chanpart_T *ch_part = &channel->ch_part[part]; 2340 chanpart_T *ch_part = &channel->ch_part[part];
2340 int save_p_ma = buffer->b_p_ma; 2341 int save_p_ma = buffer->b_p_ma;
2341 int empty = (buffer->b_ml.ml_flags & ML_EMPTY); 2342 int empty = (buffer->b_ml.ml_flags & ML_EMPTY) ? 1 : 0;
2342 2343
2343 if (!buffer->b_p_ma && !ch_part->ch_nomodifiable) 2344 if (!buffer->b_p_ma && !ch_part->ch_nomodifiable)
2344 { 2345 {
2345 if (!ch_part->ch_nomod_error) 2346 if (!ch_part->ch_nomod_error)
2346 { 2347 {
2357 --lnum; 2358 --lnum;
2358 buffer->b_write_to_channel = FALSE; 2359 buffer->b_write_to_channel = FALSE;
2359 } 2360 }
2360 2361
2361 /* Append to the buffer */ 2362 /* Append to the buffer */
2362 ch_logn(channel, "appending line %d to buffer", (int)lnum + 1); 2363 ch_logn(channel, "appending line %d to buffer", (int)lnum + 1 - empty);
2363 2364
2364 buffer->b_p_ma = TRUE; 2365 buffer->b_p_ma = TRUE;
2365 curbuf = buffer; 2366 curbuf = buffer;
2367 curwin->w_buffer = curbuf;
2366 u_sync(TRUE); 2368 u_sync(TRUE);
2367 /* ignore undo failure, undo is not very useful here */ 2369 /* ignore undo failure, undo is not very useful here */
2368 ignored = u_save(lnum, lnum + 1 + (empty ? 1 : 0)); 2370 ignored = u_save(lnum - empty, lnum + 1);
2369 2371
2370 if (empty) 2372 if (empty)
2371 { 2373 {
2372 /* The buffer is empty, replace the first (dummy) line. */ 2374 /* The buffer is empty, replace the first (dummy) line. */
2373 ml_replace(lnum, msg, TRUE); 2375 ml_replace(lnum, msg, TRUE);
2375 } 2377 }
2376 else 2378 else
2377 ml_append(lnum, msg, 0, FALSE); 2379 ml_append(lnum, msg, 0, FALSE);
2378 appended_lines_mark(lnum, 1L); 2380 appended_lines_mark(lnum, 1L);
2379 curbuf = save_curbuf; 2381 curbuf = save_curbuf;
2382 curwin->w_buffer = curbuf;
2380 if (ch_part->ch_nomodifiable) 2383 if (ch_part->ch_nomodifiable)
2381 buffer->b_p_ma = FALSE; 2384 buffer->b_p_ma = FALSE;
2382 else 2385 else
2383 buffer->b_p_ma = save_p_ma; 2386 buffer->b_p_ma = save_p_ma;
2384 2387
2481 callback = channel->ch_callback; 2484 callback = channel->ch_callback;
2482 partial = channel->ch_partial; 2485 partial = channel->ch_partial;
2483 } 2486 }
2484 2487
2485 buffer = ch_part->ch_bufref.br_buf; 2488 buffer = ch_part->ch_bufref.br_buf;
2486 if (buffer != NULL && !bufref_valid(&ch_part->ch_bufref)) 2489 if (buffer != NULL && (!bufref_valid(&ch_part->ch_bufref)
2487 { 2490 || buffer->b_ml.ml_mfp == NULL))
2488 /* buffer was wiped out */ 2491 {
2492 /* buffer was wiped out or unloaded */
2493 ch_logs(channel, "%s buffer has been wiped out", part_names[part]);
2489 ch_part->ch_bufref.br_buf = NULL; 2494 ch_part->ch_bufref.br_buf = NULL;
2490 buffer = NULL; 2495 buffer = NULL;
2491 } 2496 }
2492 2497
2493 if (ch_mode == MODE_JSON || ch_mode == MODE_JS) 2498 if (ch_mode == MODE_JSON || ch_mode == MODE_JS)