Mercurial > vim
annotate src/if_perlsfio.c @ 11416:32aed0993813 v8.0.0592
patch 8.0.0592: if a job writes to a buffer screen is not updated
commit https://github.com/vim/vim/commit/29ae377ea7039874337bc79ace9ab2b37b9056e5
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Apr 30 19:39:39 2017 +0200
patch 8.0.0592: if a job writes to a buffer screen is not updated
Problem: If a job writes to a buffer and the user is typing a command, the
screen isn't updated. When a message is displayed the changed
buffer may cause it to be cleared. (Ramel Eshed)
Solution: Update the screen and then the command line if the screen didn't
scroll. Avoid inserting screen lines, as it clears any message.
Update the status line when the buffer changed.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 30 Apr 2017 19:45:03 +0200 |
parents | 4aead6a9b7a9 |
children | ef00b6bc186b |
rev | line source |
---|---|
10042
4aead6a9b7a9
commit https://github.com/vim/vim/commit/edf3f97ae2af024708ebb4ac614227327033ca47
Christian Brabandt <cb@256bit.org>
parents:
7823
diff
changeset
|
1 /* vi:set ts=8 sts=4 sw=4 noet: |
7 | 2 * |
3 * VIM - Vi IMproved by Bram Moolenaar | |
4 * | |
5 * Do ":help uganda" in Vim to read copying and usage conditions. | |
6 * Do ":help credits" in Vim to see a list of people who contributed. | |
7 * See README.txt for an overview of the Vim source code. | |
8 */ | |
9 /* | |
10 * if_perlsfio.c: Special I/O functions for Perl interface. | |
11 */ | |
12 | |
13 #define _memory_h /* avoid memset redeclaration */ | |
14 #define IN_PERL_FILE /* don't include if_perl.pro from prot.h */ | |
15 | |
16 #include "vim.h" | |
17 | |
18 #if defined(USE_SFIO) || defined(PROTO) | |
19 | |
20 #ifndef USE_SFIO /* just generating prototypes */ | |
21 # define Sfio_t int | |
22 # define Sfdisc_t int | |
23 #endif | |
24 | |
25 #define NIL(type) ((type)0) | |
26 | |
27 static int | |
7823
bcef391c101c
commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
28 sfvimwrite( |
bcef391c101c
commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
29 Sfio_t *f, /* stream involved */ |
bcef391c101c
commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
30 char *buf, /* buffer to read from */ |
bcef391c101c
commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
31 int n, /* number of bytes to write */ |
bcef391c101c
commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
32 Sfdisc_t *disc) /* discipline */ |
7 | 33 { |
34 char_u *str; | |
35 | |
36 str = vim_strnsave((char_u *)buf, n); | |
37 if (str == NULL) | |
38 return 0; | |
39 msg_split((char *)str); | |
40 vim_free(str); | |
41 | |
42 return n; | |
43 } | |
44 | |
45 /* | |
46 * sfdcnewnvi -- | |
47 * Create Vim discipline | |
48 */ | |
49 Sfdisc_t * | |
7823
bcef391c101c
commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
50 sfdcnewvim(void) |
7 | 51 { |
52 Sfdisc_t *disc; | |
53 | |
54 disc = (Sfdisc_t *)alloc((unsigned)sizeof(Sfdisc_t)); | |
55 if (disc == NULL) | |
56 return NULL; | |
57 | |
58 disc->readf = (Sfread_f)NULL; | |
59 disc->writef = sfvimwrite; | |
60 disc->seekf = (Sfseek_f)NULL; | |
61 disc->exceptf = (Sfexcept_f)NULL; | |
62 | |
63 return disc; | |
64 } | |
65 | |
66 #endif /* USE_SFIO */ |