]> git.pld-linux.org Git - packages/vim.git/blob - 7.2.120
- new
[packages/vim.git] / 7.2.120
1 To: vim-dev@vim.org
2 Subject: Patch 7.2.120
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.2.120
11 Problem:    When opening the quickfix window or splitting the window and
12             setting the location list, the location list is copied and then
13             deleted, which is inefficient.
14 Solution:   Don't copy the location list when not needed. (Lech Lorens)
15 Files:      src/quickfix.c, src/vim.h, src/window.c
16
17
18 *** ../vim-7.2.119/src/quickfix.c       Sun Feb 22 00:01:42 2009
19 --- src/quickfix.c      Sat Feb 21 22:54:25 2009
20 ***************
21 *** 1419,1424 ****
22 --- 1419,1425 ----
23       int                       opened_window = FALSE;
24       win_T             *win;
25       win_T             *altwin;
26 +     int                       flags;
27   #endif
28       win_T             *oldwin = curwin;
29       int                       print_message = TRUE;
30 ***************
31 *** 1531,1537 ****
32       if (qf_ptr->qf_type == 1 && (!curwin->w_buffer->b_help || cmdmod.tab != 0))
33       {
34         win_T   *wp;
35 -       int     n;
36   
37         if (cmdmod.tab != 0)
38             wp = NULL;
39 --- 1532,1537 ----
40 ***************
41 *** 1547,1559 ****
42              * Split off help window; put it at far top if no position
43              * specified, the current window is vertically split and narrow.
44              */
45 !           n = WSP_HELP;
46   # ifdef FEAT_VERTSPLIT
47             if (cmdmod.split == 0 && curwin->w_width != Columns
48                                                       && curwin->w_width < 80)
49 !               n |= WSP_TOP;
50   # endif
51 !           if (win_split(0, n) == FAIL)
52                 goto theend;
53             opened_window = TRUE;       /* close it when fail */
54   
55 --- 1547,1562 ----
56              * Split off help window; put it at far top if no position
57              * specified, the current window is vertically split and narrow.
58              */
59 !           flags = WSP_HELP;
60   # ifdef FEAT_VERTSPLIT
61             if (cmdmod.split == 0 && curwin->w_width != Columns
62                                                       && curwin->w_width < 80)
63 !               flags |= WSP_TOP;
64   # endif
65 !           if (qi != &ql_info)
66 !               flags |= WSP_NEWLOC;  /* don't copy the location list */
67
68 !           if (win_split(0, flags) == FAIL)
69                 goto theend;
70             opened_window = TRUE;       /* close it when fail */
71   
72 ***************
73 *** 1563,1569 ****
74             if (qi != &ql_info)     /* not a quickfix list */
75             {
76                 /* The new window should use the supplied location list */
77 -               qf_free_all(curwin);
78                 curwin->w_llist = qi;
79                 qi->qf_refcount++;
80             }
81 --- 1566,1571 ----
82 ***************
83 *** 1624,1630 ****
84         {
85             ll_ref = curwin->w_llist_ref;
86   
87 !           if (win_split(0, WSP_ABOVE) == FAIL)
88                 goto failed;            /* not enough room for window */
89             opened_window = TRUE;       /* close it when fail */
90             p_swb = empty_option;       /* don't split again */
91 --- 1626,1635 ----
92         {
93             ll_ref = curwin->w_llist_ref;
94   
95 !           flags = WSP_ABOVE;
96 !           if (ll_ref != NULL)
97 !               flags |= WSP_NEWLOC;
98 !           if (win_split(0, flags) == FAIL)
99                 goto failed;            /* not enough room for window */
100             opened_window = TRUE;       /* close it when fail */
101             p_swb = empty_option;       /* don't split again */
102 ***************
103 *** 1636,1642 ****
104             {
105                 /* The new window should use the location list from the
106                  * location list window */
107 -               qf_free_all(curwin);
108                 curwin->w_llist = ll_ref;
109                 ll_ref->qf_refcount++;
110             }
111 --- 1641,1646 ----
112 ***************
113 *** 2311,2325 ****
114         if (eap->cmdidx == CMD_copen || eap->cmdidx == CMD_cwindow)
115             /* Create the new window at the very bottom. */
116             win_goto(lastwin);
117 !       if (win_split(height, WSP_BELOW) == FAIL)
118             return;             /* not enough room for window */
119   #ifdef FEAT_SCROLLBIND
120         curwin->w_p_scb = FALSE;
121   #endif
122   
123 -       /* Remove the location list for the quickfix window */
124 -       qf_free_all(curwin);
125
126         if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow)
127         {
128             /*
129 --- 2315,2326 ----
130         if (eap->cmdidx == CMD_copen || eap->cmdidx == CMD_cwindow)
131             /* Create the new window at the very bottom. */
132             win_goto(lastwin);
133 !       if (win_split(height, WSP_BELOW | WSP_NEWLOC) == FAIL)
134             return;             /* not enough room for window */
135   #ifdef FEAT_SCROLLBIND
136         curwin->w_p_scb = FALSE;
137   #endif
138   
139         if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow)
140         {
141             /*
142 *** ../vim-7.2.119/src/vim.h    Thu Nov 20 14:11:47 2008
143 --- src/vim.h   Sat Feb 21 22:53:03 2009
144 ***************
145 *** 1057,1062 ****
146 --- 1057,1063 ----
147   #define WSP_HELP      16      /* creating the help window */
148   #define WSP_BELOW     32      /* put new window below/right */
149   #define WSP_ABOVE     64      /* put new window above/left */
150 + #define WSP_NEWLOC    128     /* don't copy location list */
151   
152   /*
153    * arguments for gui_set_shellsize()
154 *** ../vim-7.2.119/src/window.c Sat Feb 21 20:27:00 2009
155 --- src/window.c        Sat Feb 21 23:56:41 2009
156 ***************
157 *** 12,18 ****
158   static int path_is_url __ARGS((char_u *p));
159   #if defined(FEAT_WINDOWS) || defined(PROTO)
160   static int win_split_ins __ARGS((int size, int flags, win_T *newwin, int dir));
161 ! static void win_init __ARGS((win_T *newp, win_T *oldp));
162   static void frame_comp_pos __ARGS((frame_T *topfrp, int *row, int *col));
163   static void frame_setheight __ARGS((frame_T *curfrp, int height));
164   #ifdef FEAT_VERTSPLIT
165 --- 12,18 ----
166   static int path_is_url __ARGS((char_u *p));
167   #if defined(FEAT_WINDOWS) || defined(PROTO)
168   static int win_split_ins __ARGS((int size, int flags, win_T *newwin, int dir));
169 ! static void win_init __ARGS((win_T *newp, win_T *oldp, int flags));
170   static void frame_comp_pos __ARGS((frame_T *topfrp, int *row, int *col));
171   static void frame_setheight __ARGS((frame_T *curfrp, int height));
172   #ifdef FEAT_VERTSPLIT
173 ***************
174 *** 911,917 ****
175             return FAIL;
176   
177         /* make the contents of the new window the same as the current one */
178 !       win_init(wp, curwin);
179       }
180   
181       /*
182 --- 911,917 ----
183             return FAIL;
184   
185         /* make the contents of the new window the same as the current one */
186 !       win_init(wp, curwin, flags);
187       }
188   
189       /*
190 ***************
191 *** 1160,1170 ****
192    * Initialize window "newp" from window "oldp".
193    * Used when splitting a window and when creating a new tab page.
194    * The windows will both edit the same buffer.
195    */
196       static void
197 ! win_init(newp, oldp)
198       win_T     *newp;
199       win_T     *oldp;
200   {
201       int               i;
202   
203 --- 1160,1174 ----
204    * Initialize window "newp" from window "oldp".
205    * Used when splitting a window and when creating a new tab page.
206    * The windows will both edit the same buffer.
207 +  * WSP_NEWLOC may be specified in flags to prevent the location list from
208 +  * being copied.
209    */
210 + /*ARGSUSED*/
211       static void
212 ! win_init(newp, oldp, flags)
213       win_T     *newp;
214       win_T     *oldp;
215 +     int                flags;
216   {
217       int               i;
218   
219 ***************
220 *** 1189,1195 ****
221       copy_jumplist(oldp, newp);
222   #endif
223   #ifdef FEAT_QUICKFIX
224 !     copy_loclist(oldp, newp);
225   #endif
226       if (oldp->w_localdir != NULL)
227         newp->w_localdir = vim_strsave(oldp->w_localdir);
228 --- 1193,1206 ----
229       copy_jumplist(oldp, newp);
230   #endif
231   #ifdef FEAT_QUICKFIX
232 !     if (flags & WSP_NEWLOC)
233 !     {
234 !       /* Don't copy the location list.  */
235 !       newp->w_llist = NULL;
236 !       newp->w_llist_ref = NULL;
237 !     }
238 !     else
239 !       copy_loclist(oldp, newp);
240   #endif
241       if (oldp->w_localdir != NULL)
242         newp->w_localdir = vim_strsave(oldp->w_localdir);
243 ***************
244 *** 3219,3225 ****
245       else
246       {
247         /* First window in new tab page, initialize it from "oldwin". */
248 !       win_init(curwin, oldwin);
249   
250   # ifdef FEAT_SCROLLBIND
251         /* We don't want scroll-binding in the first window. */
252 --- 3230,3236 ----
253       else
254       {
255         /* First window in new tab page, initialize it from "oldwin". */
256 !       win_init(curwin, oldwin, 0);
257   
258   # ifdef FEAT_SCROLLBIND
259         /* We don't want scroll-binding in the first window. */
260 *** ../vim-7.2.119/src/version.c        Sun Feb 22 01:13:45 2009
261 --- src/version.c       Sun Feb 22 02:32:14 2009
262 ***************
263 *** 678,679 ****
264 --- 678,681 ----
265   {   /* Add new patch number below this line */
266 + /**/
267 +     120,
268   /**/
269
270 -- 
271 hundred-and-one symptoms of being an internet addict:
272 110. You actually volunteer to become your employer's webmaster.
273
274  /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
275 ///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
276 \\\        download, build and distribute -- http://www.A-A-P.org        ///
277  \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
This page took 0.050294 seconds and 3 git commands to generate.