annotate oldXMenu/XDelAssoc.c @ 99492:ee792794d888

(isearch-search-fun): Compare the length of the current search string with the length of the string from the previous search state to detect the situation when the user adds or removes characters in the search string. Use word-search-forward-lax and word-search-backward-lax in this case, and otherwise word-search-forward and word-search-backward.
author Juri Linkov <juri@jurta.org>
date Tue, 11 Nov 2008 19:43:09 +0000
parents fec5e03aaf59
children ec58e5c426ef 5cc91198ffb2 a63dbe9548aa
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 void emacs_remque();
Dave Love <fx@gnu.org>
parents:
diff changeset
9 struct qelem {
Dave Love <fx@gnu.org>
parents:
diff changeset
10 struct qelem *q_forw;
Dave Love <fx@gnu.org>
parents:
diff changeset
11 struct qelem *q_back;
Dave Love <fx@gnu.org>
parents:
diff changeset
12 char q_data[1];
Dave Love <fx@gnu.org>
parents:
diff changeset
13 };
Dave Love <fx@gnu.org>
parents:
diff changeset
14
Dave Love <fx@gnu.org>
parents:
diff changeset
15 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
16 * XDeleteAssoc - Delete an association in an XAssocTable keyed on
Dave Love <fx@gnu.org>
parents:
diff changeset
17 * an XId. An association may be removed only once. Redundant
Dave Love <fx@gnu.org>
parents:
diff changeset
18 * deletes are meaningless (but cause no problems).
Dave Love <fx@gnu.org>
parents:
diff changeset
19 */
Dave Love <fx@gnu.org>
parents:
diff changeset
20 XDeleteAssoc(dpy, table, x_id)
Dave Love <fx@gnu.org>
parents:
diff changeset
21 register Display *dpy;
Dave Love <fx@gnu.org>
parents:
diff changeset
22 register XAssocTable *table;
Dave Love <fx@gnu.org>
parents:
diff changeset
23 register XID x_id;
Dave Love <fx@gnu.org>
parents:
diff changeset
24 {
Dave Love <fx@gnu.org>
parents:
diff changeset
25 int hash;
Dave Love <fx@gnu.org>
parents:
diff changeset
26 register XAssoc *bucket;
Dave Love <fx@gnu.org>
parents:
diff changeset
27 register XAssoc *Entry;
Dave Love <fx@gnu.org>
parents:
diff changeset
28
Dave Love <fx@gnu.org>
parents:
diff changeset
29 /* Hash the XId to get the bucket number. */
Dave Love <fx@gnu.org>
parents:
diff changeset
30 hash = x_id & (table->size - 1);
Dave Love <fx@gnu.org>
parents:
diff changeset
31 /* Look up the bucket to get the entries in that bucket. */
Dave Love <fx@gnu.org>
parents:
diff changeset
32 bucket = &table->buckets[hash];
Dave Love <fx@gnu.org>
parents:
diff changeset
33 /* Get the first entry in the bucket. */
Dave Love <fx@gnu.org>
parents:
diff changeset
34 Entry = bucket->next;
Dave Love <fx@gnu.org>
parents:
diff changeset
35
Dave Love <fx@gnu.org>
parents:
diff changeset
36 /* Scan through the entries in the bucket for the right XId. */
Dave Love <fx@gnu.org>
parents:
diff changeset
37 for (; Entry != bucket; Entry = Entry->next) {
Dave Love <fx@gnu.org>
parents:
diff changeset
38 if (Entry->x_id == x_id) {
Dave Love <fx@gnu.org>
parents:
diff changeset
39 /* We have the right XId. */
Dave Love <fx@gnu.org>
parents:
diff changeset
40 if (Entry->display == dpy) {
Dave Love <fx@gnu.org>
parents:
diff changeset
41 /* We have the right display. */
Dave Love <fx@gnu.org>
parents:
diff changeset
42 /* We have the right entry! */
Dave Love <fx@gnu.org>
parents:
diff changeset
43 /* Remove it from the queue and */
Dave Love <fx@gnu.org>
parents:
diff changeset
44 /* free the entry. */
Dave Love <fx@gnu.org>
parents:
diff changeset
45 emacs_remque((struct qelem *)Entry);
Dave Love <fx@gnu.org>
parents:
diff changeset
46 free((char *)Entry);
Dave Love <fx@gnu.org>
parents:
diff changeset
47 return;
Dave Love <fx@gnu.org>
parents:
diff changeset
48 }
Dave Love <fx@gnu.org>
parents:
diff changeset
49 /* Oops, identical XId's on different displays! */
Dave Love <fx@gnu.org>
parents:
diff changeset
50 continue;
Dave Love <fx@gnu.org>
parents:
diff changeset
51 }
Dave Love <fx@gnu.org>
parents:
diff changeset
52 if (Entry->x_id > x_id) {
Dave Love <fx@gnu.org>
parents:
diff changeset
53 /* We have gone past where it should be. */
Dave Love <fx@gnu.org>
parents:
diff changeset
54 /* It is apparently not in the table. */
Dave Love <fx@gnu.org>
parents:
diff changeset
55 return;
Dave Love <fx@gnu.org>
parents:
diff changeset
56 }
Dave Love <fx@gnu.org>
parents:
diff changeset
57 }
Dave Love <fx@gnu.org>
parents:
diff changeset
58 /* It is apparently not in the table. */
Dave Love <fx@gnu.org>
parents:
diff changeset
59 return;
Dave Love <fx@gnu.org>
parents:
diff changeset
60 }
Dave Love <fx@gnu.org>
parents:
diff changeset
61
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 25858
diff changeset
62 /* arch-tag: 90981a7e-601c-487a-b364-cdf55d6c475b
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 25858
diff changeset
63 (do not change this comment) */