qemacs-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemacs-commit] Changes to qemacs/qe.c


From: Charlie Gordon
Subject: [Qemacs-commit] Changes to qemacs/qe.c
Date: Mon, 24 Apr 2006 11:44:57 +0000

Index: qemacs/qe.c
diff -u qemacs/qe.c:1.25 qemacs/qe.c:1.26
--- qemacs/qe.c:1.25    Fri Jul  8 09:30:44 2005
+++ qemacs/qe.c Mon Apr 24 11:44:57 2006
@@ -268,20 +268,27 @@
         m = find_mode(mode);
 
     /* find last command table */
-    ld = &first_cmd;
-    while (*ld != NULL) {
+    for (ld = &first_cmd;;) {
         d = *ld;
+        if (d == NULL) {
+            /* link new command table */
+            *ld = cmds;
+            break;
+        }
+        if (d == cmds) {
+            /* Command table already registered, still do the binding
+             * phase to allow multiple mode bindings.
+             */
+            break;
+        }
         while (d->name != NULL) {
             d++;
         }
         ld = &d->action.next;
     }
-    /* add new command table */
-    *ld = cmds;
 
     /* add default bindings */
-    d = cmds;
-    while (d->name != NULL) {
+    for (d = cmds; d->name != NULL; d++) {
         if (d->key == KEY_CTRL('x')) {
             unsigned int keys[2];
             keys[0] = d->key;
@@ -293,7 +300,6 @@
             if (d->alt_key != KEY_NONE)
                 qe_register_binding2(d->alt_key, d, m);
         }
-        d++;
     }
 }
 
@@ -4416,6 +4422,18 @@
     }
 }
 
+void do_minibuffer_get_binary(EditState *s)
+{
+    unsigned long offset;
+
+    if (minibuffer_saved_active) {
+        eb_read(minibuffer_saved_active->b,
+                minibuffer_saved_active->offset,
+                &offset, sizeof(offset));
+        eb_printf(s->b, "%lu", offset);
+    }
+}
+
 void do_minibuffer_exit(EditState *s, int abort)
 {
     QEmacsState *qs = s->qe_state;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]