]> git.pld-linux.org Git - packages/vim.git/blame - 7.2.121
- new
[packages/vim.git] / 7.2.121
CommitLineData
9512a71a
AG
1To: vim-dev@vim.org
2Subject: Patch 7.2.121
3Fcc: outbox
4From: Bram Moolenaar <Bram@moolenaar.net>
5Mime-Version: 1.0
6Content-Type: text/plain; charset=ISO-8859-1
7Content-Transfer-Encoding: 8bit
8------------
9
10Patch 7.2.121
11Problem: In gvim "!grep a *.c" spews out a lot of text that can't be
12 stopped with CTRL-C.
13Solution: When looping to read and show text, do check for typed characters
14 every two seconds.
15Files: src/os_unix.c
16
17
18*** ../vim-7.2.120/src/os_unix.c Wed Feb 4 14:18:44 2009
19--- src/os_unix.c Sun Feb 22 00:54:05 2009
20***************
21*** 4092,4097 ****
22--- 4092,4100 ----
23 int fromshell_fd;
24 garray_T ga;
25 int noread_cnt;
26+ # if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
27+ struct timeval start_tv;
28+ # endif
29
30 # ifdef FEAT_GUI
31 if (pty_master_fd >= 0)
32***************
33*** 4201,4207 ****
34 ga_init2(&ga, 1, BUFLEN);
35
36 noread_cnt = 0;
37!
38 for (;;)
39 {
40 /*
41--- 4204,4212 ----
42 ga_init2(&ga, 1, BUFLEN);
43
44 noread_cnt = 0;
45! # if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
46! gettimeofday(&start_tv, NULL);
47! # endif
48 for (;;)
49 {
50 /*
51***************
52*** 4214,4238 ****
53 * that a typed password is echoed for ssh or gpg command.
54 * Don't get characters when the child has already
55 * finished (wait_pid == 0).
56- * Don't get extra characters when we already have one.
57 * Don't read characters unless we didn't get output for a
58! * while, avoids that ":r !ls" eats typeahead.
59 */
60 len = 0;
61 if (!(options & SHELL_EXPAND)
62 && ((options &
63 (SHELL_READ|SHELL_WRITE|SHELL_COOKED))
64 != (SHELL_READ|SHELL_WRITE|SHELL_COOKED)
65! #ifdef FEAT_GUI
66 || gui.in_use
67! #endif
68 )
69 && wait_pid == 0
70! && (ta_len > 0
71! || (noread_cnt > 4
72! && (len = ui_inchar(ta_buf,
73! BUFLEN, 10L, 0)) > 0)))
74 {
75 /*
76 * For pipes:
77 * Check for CTRL-C: send interrupt signal to child.
78--- 4219,4252 ----
79 * that a typed password is echoed for ssh or gpg command.
80 * Don't get characters when the child has already
81 * finished (wait_pid == 0).
82 * Don't read characters unless we didn't get output for a
83! * while (noread_cnt > 4), avoids that ":r !ls" eats
84! * typeahead.
85 */
86 len = 0;
87 if (!(options & SHELL_EXPAND)
88 && ((options &
89 (SHELL_READ|SHELL_WRITE|SHELL_COOKED))
90 != (SHELL_READ|SHELL_WRITE|SHELL_COOKED)
91! # ifdef FEAT_GUI
92 || gui.in_use
93! # endif
94 )
95 && wait_pid == 0
96! && (ta_len > 0 || noread_cnt > 4))
97 {
98+ if (ta_len == 0)
99+ {
100+ /* Get extra characters when we don't have any.
101+ * Reset the counter and timer. */
102+ noread_cnt = 0;
103+ # if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
104+ gettimeofday(&start_tv, NULL);
105+ # endif
106+ len = ui_inchar(ta_buf, BUFLEN, 10L, 0);
107+ }
108+ if (ta_len > 0 || len > 0)
109+ {
110 /*
111 * For pipes:
112 * Check for CTRL-C: send interrupt signal to child.
113***************
114*** 4334,4342 ****
115 {
116 ta_len -= len;
117 mch_memmove(ta_buf, ta_buf + len, ta_len);
118- noread_cnt = 0;
119 }
120 }
121 }
122
123 if (got_int)
124--- 4348,4356 ----
125 {
126 ta_len -= len;
127 mch_memmove(ta_buf, ta_buf + len, ta_len);
128 }
129 }
130+ }
131 }
132
133 if (got_int)
134***************
135*** 4444,4449 ****
136--- 4458,4482 ----
137 out_flush();
138 if (got_int)
139 break;
140+
141+ # if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
142+ {
143+ struct timeval now_tv;
144+ long msec;
145+
146+ /* Avoid that we keep looping here without
147+ * checking for a CTRL-C for a long time. Don't
148+ * break out too often to avoid losing typeahead. */
149+ gettimeofday(&now_tv, NULL);
150+ msec = (now_tv.tv_sec - start_tv.tv_sec) * 1000L
151+ + (now_tv.tv_usec - start_tv.tv_usec) / 1000L;
152+ if (msec > 2000)
153+ {
154+ noread_cnt = 5;
155+ break;
156+ }
157+ }
158+ # endif
159 }
160
161 /* If we already detected the child has finished break the
162*** ../vim-7.2.120/src/version.c Sun Feb 22 02:36:36 2009
163--- src/version.c Sun Feb 22 02:48:03 2009
164***************
165*** 678,679 ****
166--- 678,681 ----
167 { /* Add new patch number below this line */
168+ /**/
169+ 121,
170 /**/
171
172--
173hundred-and-one symptoms of being an internet addict:
174111. You and your friends get together regularly on IRC, even though
175 all of you live in the same city.
176
177 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
178/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
179\\\ download, build and distribute -- http://www.A-A-P.org ///
180 \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
This page took 0.039763 seconds and 4 git commands to generate.