annotate oldXMenu/XDestAssoc.c @ 107777:13c077500eb3

2010-04-04 John Wiegley <jwiegley@gmail.com> * ido.el (ido-use-virtual-buffers): New variable to indicate whether "virtual buffer" support is enabled for IDO. Essentially it works as follows: Say you are visiting a file and the buffer gets cleaned up by mignight.el. Later, you want to switch to that buffer, but find it's no longer open. With virtual buffers enabled, the buffer name stays in the buffer list (using the ido-virtual face, and always at the end), and if you select it, it opens the file back up again. This allows you to think less about whether recently opened files are still open or not. Most of the time you can quit Emacs, restart, and then switch to a file buffer that was previously open as if it still were. NOTE: This feature has been present in iswitchb for several years now, and I'm porting the same logic to IDO. (ido-virtual): Face used to indicate virtual buffers in the list. (ido-buffer-internal): If a buffer is chosen, and no such buffer exists, but a virtual buffer of that name does (which would be why it was in the list), recreate the buffer by reopening the file. (ido-make-buffer-list): If virtual buffers are being used, call `ido-add-virtual-buffers-to-list' before the make list hook. (ido-virtual-buffers): New variable which contains a copy of the current contents of the `recentf-list', albeit pared down for the sake of speed, and with proper faces applied. (ido-add-virtual-buffers-to-list): Using the `recentf-list', create a list of "virtual buffers" to present to the user in addition to the currently open set. Note that this logic could get rather slow if that list is too large. With the default `recentf-max-saved-items' of 200, there is little speed penalty.
author jwiegley@gmail.com
date Sun, 04 Apr 2010 02:55:19 -0400
parents fec5e03aaf59
children ec58e5c426ef 5cc91198ffb2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
1 /* Copyright Massachusetts Institute of Technology 1985 */
Dave Love <fx@gnu.org>
parents:
diff changeset
2
76133
995b45abe69d Remove license text in favour of including copyright.h, as was done in
Glenn Morris <rgm@gnu.org>
parents: 75348
diff changeset
3 #include "copyright.h"
995b45abe69d Remove license text in favour of including copyright.h, as was done in
Glenn Morris <rgm@gnu.org>
parents: 75348
diff changeset
4
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
5
Dave Love <fx@gnu.org>
parents:
diff changeset
6 #include <X11/Xlib.h>
Dave Love <fx@gnu.org>
parents:
diff changeset
7 #include "X10.h"
Dave Love <fx@gnu.org>
parents:
diff changeset
8
Dave Love <fx@gnu.org>
parents:
diff changeset
9 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
10 * XDestroyAssocTable - Destroy (free the memory associated with)
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
11 * an XAssocTable.
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
12 */
Dave Love <fx@gnu.org>
parents:
diff changeset
13 XDestroyAssocTable(table)
Dave Love <fx@gnu.org>
parents:
diff changeset
14 register XAssocTable *table;
Dave Love <fx@gnu.org>
parents:
diff changeset
15 {
Dave Love <fx@gnu.org>
parents:
diff changeset
16 register int i;
Dave Love <fx@gnu.org>
parents:
diff changeset
17 register XAssoc *bucket;
Dave Love <fx@gnu.org>
parents:
diff changeset
18 register XAssoc *Entry, *entry_next;
Dave Love <fx@gnu.org>
parents:
diff changeset
19
Dave Love <fx@gnu.org>
parents:
diff changeset
20 /* Free the buckets. */
Dave Love <fx@gnu.org>
parents:
diff changeset
21 for (i = 0; i < table->size; i++) {
Dave Love <fx@gnu.org>
parents:
diff changeset
22 bucket = &table->buckets[i];
Dave Love <fx@gnu.org>
parents:
diff changeset
23 for (
Dave Love <fx@gnu.org>
parents:
diff changeset
24 Entry = bucket->next;
Dave Love <fx@gnu.org>
parents:
diff changeset
25 Entry != bucket;
Dave Love <fx@gnu.org>
parents:
diff changeset
26 Entry = entry_next
Dave Love <fx@gnu.org>
parents:
diff changeset
27 ) {
Dave Love <fx@gnu.org>
parents:
diff changeset
28 entry_next = Entry->next;
Dave Love <fx@gnu.org>
parents:
diff changeset
29 free((char *)Entry);
Dave Love <fx@gnu.org>
parents:
diff changeset
30 }
Dave Love <fx@gnu.org>
parents:
diff changeset
31 }
Dave Love <fx@gnu.org>
parents:
diff changeset
32
Dave Love <fx@gnu.org>
parents:
diff changeset
33 /* Free the bucket array. */
Dave Love <fx@gnu.org>
parents:
diff changeset
34 free((char *)table->buckets);
Dave Love <fx@gnu.org>
parents:
diff changeset
35
Dave Love <fx@gnu.org>
parents:
diff changeset
36 /* Free the table. */
Dave Love <fx@gnu.org>
parents:
diff changeset
37 free((char *)table);
Dave Love <fx@gnu.org>
parents:
diff changeset
38 }
Dave Love <fx@gnu.org>
parents:
diff changeset
39
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
40 /* arch-tag: a536bf02-8d63-45f2-8c1a-c7f9fd4da2cf
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
41 (do not change this comment) */