]>
Commit | Line | Data |
---|---|---|
1242c4cb AG |
1 | To: vim-dev@vim.org |
2 | Subject: Patch 7.0.044 | |
3 | Fcc: outbox | |
4 | From: Bram Moolenaar <Bram@moolenaar.net> | |
5 | Mime-Version: 1.0 | |
6 | Content-Type: text/plain; charset=ISO-8859-1 | |
7 | Content-Transfer-Encoding: 8bit | |
8 | ------------ | |
9 | ||
10 | Patch 7.0.044 | |
11 | Problem: Perl: setting a buffer line in another buffer may result in | |
12 | changing the current buffer. | |
13 | Solution: Properly change to the buffer to be changed. | |
14 | Files: src/if_perl.xs | |
15 | ||
16 | ||
17 | *** ../vim-7.0.043/src/if_perl.xs Tue Mar 7 00:18:16 2006 | |
18 | --- src/if_perl.xs Thu Jun 22 21:22:18 2006 | |
19 | *************** | |
20 | *** 1056,1062 **** | |
21 | int i; | |
22 | long lnum; | |
23 | char *line; | |
24 | - buf_T *savebuf; | |
25 | PPCODE: | |
26 | if (buf_valid(vimbuf)) | |
27 | { | |
28 | --- 1056,1061 ---- | |
29 | *************** | |
30 | *** 1069,1082 **** | |
31 | line = SvPV(ST(i),PL_na); | |
32 | if (lnum > 0 && lnum <= vimbuf->b_ml.ml_line_count && line != NULL) | |
33 | { | |
34 | ! savebuf = curbuf; | |
35 | curbuf = vimbuf; | |
36 | if (u_savesub(lnum) == OK) | |
37 | { | |
38 | ml_replace(lnum, (char_u *)line, TRUE); | |
39 | changed_bytes(lnum, 0); | |
40 | } | |
41 | ! curbuf = savebuf; | |
42 | } | |
43 | } | |
44 | } | |
45 | --- 1068,1098 ---- | |
46 | line = SvPV(ST(i),PL_na); | |
47 | if (lnum > 0 && lnum <= vimbuf->b_ml.ml_line_count && line != NULL) | |
48 | { | |
49 | ! #ifdef FEAT_AUTOCMD | |
50 | ! aco_save_T aco; | |
51 | ! | |
52 | ! /* set curwin/curbuf for "vimbuf" and save some things */ | |
53 | ! aucmd_prepbuf(&aco, vimbuf); | |
54 | ! #else | |
55 | ! buf_T *save_curbuf = curbuf; | |
56 | ! | |
57 | curbuf = vimbuf; | |
58 | + curwin->w_buffer = vimbuf; | |
59 | + #endif | |
60 | if (u_savesub(lnum) == OK) | |
61 | { | |
62 | ml_replace(lnum, (char_u *)line, TRUE); | |
63 | changed_bytes(lnum, 0); | |
64 | } | |
65 | ! | |
66 | ! #ifdef FEAT_AUTOCMD | |
67 | ! /* restore curwin/curbuf and a few other things */ | |
68 | ! aucmd_restbuf(&aco); | |
69 | ! /* Careful: autocommands may have made "vimbuf" invalid! */ | |
70 | ! #else | |
71 | ! curwin->w_buffer = save_curbuf; | |
72 | ! curbuf = save_curbuf; | |
73 | ! #endif | |
74 | } | |
75 | } | |
76 | } | |
77 | *************** | |
78 | *** 1087,1093 **** | |
79 | ||
80 | PREINIT: | |
81 | long i, lnum = 0, count = 0; | |
82 | - buf_T *savebuf; | |
83 | PPCODE: | |
84 | if (buf_valid(vimbuf)) | |
85 | { | |
86 | --- 1103,1108 ---- | |
87 | *************** | |
88 | *** 1114,1129 **** | |
89 | { | |
90 | if (lnum > 0 && lnum <= vimbuf->b_ml.ml_line_count) | |
91 | { | |
92 | ! savebuf = curbuf; | |
93 | curbuf = vimbuf; | |
94 | if (u_savedel(lnum, 1) == OK) | |
95 | { | |
96 | ml_delete(lnum, 0); | |
97 | deleted_lines_mark(lnum, 1L); | |
98 | ! if (savebuf == curbuf) | |
99 | check_cursor(); | |
100 | } | |
101 | ! curbuf = savebuf; | |
102 | update_curbuf(VALID); | |
103 | } | |
104 | } | |
105 | --- 1129,1159 ---- | |
106 | { | |
107 | if (lnum > 0 && lnum <= vimbuf->b_ml.ml_line_count) | |
108 | { | |
109 | ! buf_T *save_curbuf = curbuf; | |
110 | ! #ifdef FEAT_AUTOCMD | |
111 | ! aco_save_T aco; | |
112 | ! | |
113 | ! /* set curwin/curbuf for "vimbuf" and save some things */ | |
114 | ! aucmd_prepbuf(&aco, vimbuf); | |
115 | ! #else | |
116 | curbuf = vimbuf; | |
117 | + curwin->w_buffer = vimbuf; | |
118 | + #endif | |
119 | if (u_savedel(lnum, 1) == OK) | |
120 | { | |
121 | ml_delete(lnum, 0); | |
122 | deleted_lines_mark(lnum, 1L); | |
123 | ! if (save_curbuf == curbuf) | |
124 | check_cursor(); | |
125 | } | |
126 | ! #ifdef FEAT_AUTOCMD | |
127 | ! /* restore curwin/curbuf and a few other things */ | |
128 | ! aucmd_restbuf(&aco); | |
129 | ! /* Careful: autocommands may have made "vimbuf" invalid! */ | |
130 | ! #else | |
131 | ! curwin->w_buffer = save_curbuf; | |
132 | ! curbuf = save_curbuf; | |
133 | ! #endif | |
134 | update_curbuf(VALID); | |
135 | } | |
136 | } | |
137 | *************** | |
138 | *** 1138,1144 **** | |
139 | int i; | |
140 | long lnum; | |
141 | char *line; | |
142 | - buf_T *savebuf; | |
143 | PPCODE: | |
144 | if (buf_valid(vimbuf)) | |
145 | { | |
146 | --- 1168,1173 ---- | |
147 | *************** | |
148 | *** 1151,1164 **** | |
149 | line = SvPV(ST(i),PL_na); | |
150 | if (lnum >= 0 && lnum <= vimbuf->b_ml.ml_line_count && line != NULL) | |
151 | { | |
152 | ! savebuf = curbuf; | |
153 | curbuf = vimbuf; | |
154 | if (u_inssub(lnum + 1) == OK) | |
155 | { | |
156 | ml_append(lnum, (char_u *)line, (colnr_T)0, FALSE); | |
157 | appended_lines_mark(lnum, 1L); | |
158 | } | |
159 | ! curbuf = savebuf; | |
160 | update_curbuf(VALID); | |
161 | } | |
162 | } | |
163 | --- 1180,1210 ---- | |
164 | line = SvPV(ST(i),PL_na); | |
165 | if (lnum >= 0 && lnum <= vimbuf->b_ml.ml_line_count && line != NULL) | |
166 | { | |
167 | ! #ifdef FEAT_AUTOCMD | |
168 | ! aco_save_T aco; | |
169 | ! | |
170 | ! /* set curwin/curbuf for "vimbuf" and save some things */ | |
171 | ! aucmd_prepbuf(&aco, vimbuf); | |
172 | ! #else | |
173 | ! buf_T *save_curbuf = curbuf; | |
174 | ! | |
175 | curbuf = vimbuf; | |
176 | + curwin->w_buffer = vimbuf; | |
177 | + #endif | |
178 | if (u_inssub(lnum + 1) == OK) | |
179 | { | |
180 | ml_append(lnum, (char_u *)line, (colnr_T)0, FALSE); | |
181 | appended_lines_mark(lnum, 1L); | |
182 | } | |
183 | ! | |
184 | ! #ifdef FEAT_AUTOCMD | |
185 | ! /* restore curwin/curbuf and a few other things */ | |
186 | ! aucmd_restbuf(&aco); | |
187 | ! /* Careful: autocommands may have made "vimbuf" invalid! */ | |
188 | ! #else | |
189 | ! curwin->w_buffer = save_curbuf; | |
190 | ! curbuf = save_curbuf; | |
191 | ! #endif | |
192 | update_curbuf(VALID); | |
193 | } | |
194 | } | |
195 | *** ../vim-7.0.043/src/version.c Tue Aug 8 16:30:51 2006 | |
196 | --- src/version.c Tue Aug 8 16:45:40 2006 | |
197 | *************** | |
198 | *** 668,669 **** | |
199 | --- 668,671 ---- | |
200 | { /* Add new patch number below this line */ | |
201 | + /**/ | |
202 | + 44, | |
203 | /**/ | |
204 | ||
205 | -- | |
206 | Momento mori, ergo carpe diem | |
207 | ||
208 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | |
209 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | |
210 | \\\ download, build and distribute -- http://www.A-A-P.org /// | |
211 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |