Mercurial > vim
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) |