qemacs-commit
[Top][All Lists]
Advanced

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

[Qemacs-commit] qemacs bufed.c buffer.c clang.c dired.c hex.c h...


From: Charlie Gordon
Subject: [Qemacs-commit] qemacs bufed.c buffer.c clang.c dired.c hex.c h...
Date: Fri, 04 Jan 2008 22:24:40 +0000

CVSROOT:        /cvsroot/qemacs
Module name:    qemacs
Changes by:     Charlie Gordon <chqrlie>        08/01/04 22:24:40

Modified files:
        .              : bufed.c buffer.c clang.c dired.c hex.c html.c 
                         htmlsrc.c image.c latex-mode.c makemode.c 
                         perl.c qe.c qe.h qeconfig.h shell.c unihex.c 
                         util.c video.c x11.c 

Log message:
        eb_scratch takes buffer creation flags
        added eb_find_new -> find a buffer by name, create one from flags if 
not found.
        qe_register_cmd_table takes ModeDef* instead of mode name
        do_global_set_key -> do_set_key with local/global flag
        added local-set-key
        reuse *bufed* buffer if one exists
        bind increase/decrease-width commands from command definition
        cosmetics, comments, remarks
        renamed kill buffers from *yank* to *kill-%d*
        save QErrorContext in parse_args, load_all_modules:
          improves readability in *messages* buffer
        fixed qe_init to fall back from x11 display to terminal session upon 
failure

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/bufed.c?cvsroot=qemacs&r1=1.12&r2=1.13
http://cvs.savannah.gnu.org/viewcvs/qemacs/buffer.c?cvsroot=qemacs&r1=1.30&r2=1.31
http://cvs.savannah.gnu.org/viewcvs/qemacs/clang.c?cvsroot=qemacs&r1=1.24&r2=1.25
http://cvs.savannah.gnu.org/viewcvs/qemacs/dired.c?cvsroot=qemacs&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/qemacs/hex.c?cvsroot=qemacs&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/qemacs/html.c?cvsroot=qemacs&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/qemacs/htmlsrc.c?cvsroot=qemacs&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/qemacs/image.c?cvsroot=qemacs&r1=1.14&r2=1.15
http://cvs.savannah.gnu.org/viewcvs/qemacs/latex-mode.c?cvsroot=qemacs&r1=1.22&r2=1.23
http://cvs.savannah.gnu.org/viewcvs/qemacs/makemode.c?cvsroot=qemacs&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/qemacs/perl.c?cvsroot=qemacs&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.c?cvsroot=qemacs&r1=1.59&r2=1.60
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.h?cvsroot=qemacs&r1=1.55&r2=1.56
http://cvs.savannah.gnu.org/viewcvs/qemacs/qeconfig.h?cvsroot=qemacs&r1=1.26&r2=1.27
http://cvs.savannah.gnu.org/viewcvs/qemacs/shell.c?cvsroot=qemacs&r1=1.37&r2=1.38
http://cvs.savannah.gnu.org/viewcvs/qemacs/unihex.c?cvsroot=qemacs&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/qemacs/util.c?cvsroot=qemacs&r1=1.32&r2=1.33
http://cvs.savannah.gnu.org/viewcvs/qemacs/video.c?cvsroot=qemacs&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/qemacs/x11.c?cvsroot=qemacs&r1=1.20&r2=1.21

Patches:
Index: bufed.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/bufed.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- bufed.c     3 Jan 2008 18:31:24 -0000       1.12
+++ bufed.c     4 Jan 2008 22:24:37 -0000       1.13
@@ -172,7 +172,7 @@
 
     /* XXX: must close this buffer when destroying window: add a
        special buffer flag to tell this */
-    b = eb_new("*bufed*", BF_READONLY | BF_SYSTEM);
+    b = eb_scratch("*bufed*", BF_READONLY | BF_SYSTEM);
 
     width = qs->width / 5;
     e = insert_window_left(b, width, WF_MODELINE);
@@ -299,7 +299,7 @@
     /* first register mode */
     qe_register_mode(&bufed_mode);
 
-    qe_register_cmd_table(bufed_commands, "bufed");
+    qe_register_cmd_table(bufed_commands, &bufed_mode);
     qe_register_cmd_table(bufed_global_commands, NULL);
 
     return 0;

Index: buffer.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/buffer.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -b -r1.30 -r1.31
--- buffer.c    3 Jan 2008 18:31:24 -0000       1.30
+++ buffer.c    4 Jan 2008 22:24:38 -0000       1.31
@@ -493,7 +493,7 @@
 }
 
 /* Return an empty scratch buffer, create one if necessary */
-EditBuffer *eb_scratch(const char *name)
+EditBuffer *eb_scratch(const char *name, int flags)
 {
     EditBuffer *b;
 
@@ -501,7 +501,7 @@
     if (b != NULL) {
         eb_clear(b);
     } else {
-        b = eb_new(name, 0);
+        b = eb_new(name, flags);
     }
     return b;
 }
@@ -575,6 +575,16 @@
     return NULL;
 }
 
+EditBuffer *eb_find_new(const char *name, int flags)
+{
+    EditBuffer *b;
+
+    b = eb_find(name);
+    if (!b)
+        b = eb_new(name, flags);
+    return b;
+}
+
 EditBuffer *eb_find_file(const char *filename)
 {
     QEmacsState *qs = &qe_state;

Index: clang.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/clang.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- clang.c     3 Jan 2008 18:31:24 -0000       1.24
+++ clang.c     4 Jan 2008 22:24:38 -0000       1.25
@@ -790,7 +790,7 @@
     c_mode.mode_init = c_mode_init;
 
     qe_register_mode(&c_mode);
-    qe_register_cmd_table(c_commands, "C");
+    qe_register_cmd_table(c_commands, &c_mode);
     qe_register_cmd_table(c_global_commands, NULL);
 
     return 0;

Index: dired.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/dired.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- dired.c     3 Jan 2008 18:31:25 -0000       1.16
+++ dired.c     4 Jan 2008 22:24:38 -0000       1.17
@@ -502,7 +502,8 @@
      */
     b0 = s->b;
 
-    b = eb_new("*dired*", BF_READONLY | BF_SYSTEM);
+    /* Should reuse previous dired buffer for same filespec */
+    b = eb_scratch("*dired*", BF_READONLY | BF_SYSTEM);
 
     /* set the filename to the directory of the current file */
     pstrcpy(filename, sizeof(filename), s->b->filename);
@@ -587,7 +588,7 @@
     /* first register mode */
     qe_register_mode(&dired_mode);
 
-    qe_register_cmd_table(dired_commands, "dired");
+    qe_register_cmd_table(dired_commands, &dired_mode);
     qe_register_cmd_table(dired_global_commands, NULL);
 
     return 0;

Index: hex.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/hex.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- hex.c       3 Jan 2008 09:51:31 -0000       1.16
+++ hex.c       4 Jan 2008 22:24:38 -0000       1.17
@@ -121,8 +121,8 @@
 
 /* specific hex commands */
 static CmdDef hex_commands[] = {
-    CMD1( KEY_NONE, KEY_NONE, "decrease-width", do_incr_width, -1)
-    CMD1( KEY_NONE, KEY_NONE, "increase-width", do_incr_width, 1)
+    CMD1( KEY_CTRL_LEFT, KEY_NONE, "decrease-width", do_incr_width, -1)
+    CMD1( KEY_CTRL_RIGHT, KEY_NONE, "increase-width", do_incr_width, 1)
     CMD_( KEY_NONE, KEY_NONE, "set-width", do_set_width, ESi, "ui{Width: }")
     CMDV( KEY_META('g'), KEY_NONE, "goto-byte", do_goto, ESsi, 'b', "us{Goto 
byte: }v")
     CMD0( KEY_NONE, KEY_NONE, "toggle-hex", do_toggle_hex)
@@ -348,12 +348,10 @@
     qe_register_mode(&hex_mode);
 
     /* commands and default keys */
-    qe_register_cmd_table(hex_commands, "hex");
-    qe_register_cmd_table(hex_commands, "ascii");
+    qe_register_cmd_table(hex_commands, &hex_mode);
+    qe_register_cmd_table(hex_commands, &ascii_mode);
 
     /* additional mode specific keys */
-    qe_register_binding(KEY_CTRL_LEFT, "decrease-width", "ascii|hex");
-    qe_register_binding(KEY_CTRL_RIGHT, "increase-width", "ascii|hex");
     qe_register_binding(KEY_TAB, "toggle-hex", "hex");
     qe_register_binding(KEY_SHIFT_TAB, "toggle-hex", "hex");
 

Index: html.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/html.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- html.c      3 Jan 2008 09:51:31 -0000       1.13
+++ html.c      4 Jan 2008 22:24:38 -0000       1.14
@@ -100,9 +100,7 @@
 {
     EditBuffer *b;
 
-    b = eb_find(HTML_ERROR_BUFFER);
-    if (!b)
-        b = eb_new(HTML_ERROR_BUFFER, BF_READONLY);
+    b = eb_find_new(HTML_ERROR_BUFFER, BF_READONLY);
     if (!b)
         return;
     b->flags &= ~BF_READONLY;
@@ -894,7 +892,8 @@
     css_init();
 
     qe_register_mode(&html_mode);
-    qe_register_cmd_table(html_commands, "html");
+    qe_register_cmd_table(html_commands, &html_mode);
+
     return 0;
 }
 

Index: htmlsrc.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/htmlsrc.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- htmlsrc.c   3 Jan 2008 09:51:31 -0000       1.2
+++ htmlsrc.c   4 Jan 2008 22:24:38 -0000       1.3
@@ -299,7 +299,7 @@
     htmlsrc_mode.mode_init = htmlsrc_mode_init;
 
     qe_register_mode(&htmlsrc_mode);
-    qe_register_cmd_table(htmlsrc_commands, "html-src");
+    qe_register_cmd_table(htmlsrc_commands, &htmlsrc_mode);
 
     return 0;
 }

Index: image.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/image.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- image.c     3 Jan 2008 09:51:31 -0000       1.14
+++ image.c     4 Jan 2008 22:24:38 -0000       1.15
@@ -813,7 +813,8 @@
     CMD1( '.', KEY_NONE, "image-larger-10", image_mult_size, 10)
     CMD1( ',', KEY_NONE, "image-smaller-10", image_mult_size, -10)
     CMD_( 'S', KEY_NONE, "image-set-display-size", image_set_size, ESii,
-          "i{Displayed width: }i{Displayed height: }")
+          "i{Displayed width: }"
+          "i{Displayed height: }")
 #endif
     CMD_DEF_END,
 };
@@ -844,7 +845,7 @@
     av_register_all();
     eb_register_data_type(&image_data_type);
     qe_register_mode(&image_mode);
-    qe_register_cmd_table(image_commands, "image");
+    qe_register_cmd_table(image_commands, &image_mode);
     register_completion("pixel_format", pixel_format_completion);
     /* additional mode specific keys */
     qe_register_binding('f', "toggle-full-screen", "image");

Index: latex-mode.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/latex-mode.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- latex-mode.c        3 Jan 2008 18:31:25 -0000       1.22
+++ latex-mode.c        4 Jan 2008 22:24:38 -0000       1.23
@@ -329,7 +329,7 @@
     latex_mode.mode_init = latex_mode_init;
 
     qe_register_mode(&latex_mode);
-    qe_register_cmd_table(latex_commands, "LaTeX");
+    qe_register_cmd_table(latex_commands, &latex_mode);
     register_completion("latex", latex_completion);
 
     return 0;

Index: makemode.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/makemode.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- makemode.c  3 Jan 2008 09:51:31 -0000       1.2
+++ makemode.c  4 Jan 2008 22:24:38 -0000       1.3
@@ -183,7 +183,7 @@
     makefile_mode.mode_init = makefile_mode_init;
 
     qe_register_mode(&makefile_mode);
-    qe_register_cmd_table(makefile_commands, "Makefile");
+    qe_register_cmd_table(makefile_commands, &makefile_mode);
 
     return 0;
 }

Index: perl.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/perl.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- perl.c      3 Jan 2008 09:51:31 -0000       1.4
+++ perl.c      4 Jan 2008 22:24:39 -0000       1.5
@@ -370,7 +370,7 @@
     perl_mode.mode_init = perl_mode_init;
 
     qe_register_mode(&perl_mode);
-    qe_register_cmd_table(perl_commands, "Perl");
+    qe_register_cmd_table(perl_commands, &perl_mode);
 
     return 0;
 }

Index: qe.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/qe.c,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -b -r1.59 -r1.60
--- qe.c        3 Jan 2008 18:31:25 -0000       1.59
+++ qe.c        4 Jan 2008 22:24:39 -0000       1.60
@@ -158,16 +158,19 @@
 {
     QEmacsState *qs = &qe_state;
     KeyDef **lp, *p;
+    int i;
 
     /* add key */
-    p = qe_malloc_hack(KeyDef, (nb_keys - 1) * sizeof(unsigned int));
+    p = qe_malloc_hack(KeyDef, (nb_keys - 1) * sizeof(p->keys[0]));
     if (!p)
         return -1;
-    p->nb_keys = nb_keys;
     p->cmd = d;
     p->mode = m;
-    memcpy(p->keys, keys, nb_keys * sizeof(unsigned int));
-    /* find position : mode keys should be before generic keys */
+    p->nb_keys = nb_keys;
+    for (i = 0; i < nb_keys; i++) {
+        p->keys[i] = keys[i];
+    }
+    /* find position: mode keys should be before generic keys */
     if (m == NULL) {
         lp = &qs->first_key;
         while (*lp != NULL) lp = &(*lp)->next;
@@ -204,15 +207,10 @@
 }
 
 /* if mode is non NULL, the defined keys are only active in this mode */
-void qe_register_cmd_table(CmdDef *cmds, const char *mode)
+void qe_register_cmd_table(CmdDef *cmds, ModeDef *m)
 {
     QEmacsState *qs = &qe_state;
     CmdDef **ld, *d;
-    ModeDef *m;
-
-    m = NULL;
-    if (mode)
-        m = find_mode(mode);
 
     /* find last command table */
     for (ld = &qs->first_cmd;;) {
@@ -268,12 +266,10 @@
         p = mode_names;
         for (;;) {
             r = strchr(p, '|');
-            /* XXX: overflows */
-            if (!r) {
-                strcpy(mode_name, p);
+            if (r) {
+                pstrncpy(mode_name, sizeof(mode_name), p, r - p);
             } else {
-                memcpy(mode_name, p, r - p);
-                mode_name[r - p] = '\0';
+                pstrcpy(mode_name, sizeof(mode_name), p);
             }
             m = find_mode(mode_name);
             if (m) {
@@ -304,8 +300,8 @@
 
 #define MAX_KEYS 10
 
-void do_global_set_key(EditState *s, const char *keystr,
-                       const char *cmd_name)
+void do_set_key(EditState *s, const char *keystr,
+                const char *cmd_name, int local)
 {
     int nb_keys;
     unsigned int keys[MAX_KEYS];
@@ -320,7 +316,7 @@
         put_status(s, "No command %s", cmd_name);
         return;
     }
-    qe_register_binding1(keys, nb_keys, d, NULL);
+    qe_register_binding1(keys, nb_keys, d, local ? s->mode : NULL);
 }
 
 void do_toggle_control_h(EditState *s, int set)
@@ -1380,19 +1376,23 @@
     s->offset = 0;
 }
 
-EditBuffer *new_yank_buffer(void)
+EditBuffer *new_yank_buffer(QEmacsState *qs)
 {
-    QEmacsState *qs = &qe_state;
+    char bufname[32];
     EditBuffer *b;
 
     if (qs->yank_buffers[qs->yank_current]) {
         if (++qs->yank_current == NB_YANK_BUFFERS)
             qs->yank_current = 0;
         b = qs->yank_buffers[qs->yank_current];
-        if (b)
+        if (b) {
+            /* problem if buffer is displayed in window, should instead
+             * just clear the buffer */
             eb_free(b);
     }
-    b = eb_new("*yank*", BF_SYSTEM);
+    }
+    snprintf(bufname, sizeof(bufname), "*kill-%d*", qs->yank_current + 1);
+    b = eb_new(bufname, BF_SYSTEM);
     qs->yank_buffers[qs->yank_current] = b;
     return b;
 }
@@ -1420,7 +1420,7 @@
     b = qs->yank_buffers[qs->yank_current];
     if (!b || !dir || qs->last_cmd_func != do_append_next_kill) {
         /* append kill if last command was kill already */
-        b = new_yank_buffer();
+        b = new_yank_buffer(qs);
     }
     /* insert at beginning or end depending on kill direction */
     eb_insert_buffer(b, dir < 0 ? 0 : b->total_size, s->b, p1, len);
@@ -1563,7 +1563,6 @@
     }
 }
 
-
 static void edit_set_mode_file(EditState *s, ModeDef *m,
                                ModeSavedData *saved_data, FILE *f1)
 {
@@ -1946,7 +1945,6 @@
     return pos;
 }
 
-
 void display_mode_line(EditState *s)
 {
     char buf[512];
@@ -3408,6 +3406,7 @@
 {
     EditState *s = es->s;
     QEmacsState *qs = s->qe_state;
+    QErrorContext ec;
     CmdDef *d = es->d;
     char prompt[256];
     char completion_name[64];
@@ -3512,9 +3511,11 @@
 #ifndef CONFIG_TINY
         save_selection();
 #endif
-        /* CG: Should save and restore ec context */
+        /* Save and restore ec context */
+        ec = qs->ec;
         qs->ec.function = d->name;
         call_func(d->sig, d->action, es->nb_args, es->args, es->args_type);
+        qs->ec = ec;
         /* CG: This doesn't work if the function needs input */
         /* CG: Should test for abort condition */
         /* CG: Should follow qs->active_window ? */
@@ -3749,7 +3750,7 @@
     def->action.ESs = do_execute_macro_keys;
 
     qe_register_cmd_table(def, NULL);
-    do_global_set_key(s, key_bind, name);
+    do_set_key(s, key_bind, name, 0);
 }
 
 #define MACRO_KEY_INCR 64
@@ -3877,11 +3878,8 @@
         dpy_flush(&global_screen);
     }
 
-    /* special case for escape : we transform it as meta so
+    /* Special case for escape: we transform it as meta so
        that unix users are happy ! */
-    /* CG: should allow for other key compositions, such as
-     *     diacritics, and compositions of more than 2 keys
-     */
     if (key == KEY_ESC) {
         c->is_escape = 1;
         goto next;
@@ -3895,7 +3893,7 @@
     for (kd = qs->first_key; kd != NULL; kd = kd->next) {
         if (kd->nb_keys >= c->nb_keys) {
             if (!memcmp(kd->keys, c->keys,
-                        c->nb_keys * sizeof(unsigned int)) &&
+                        c->nb_keys * sizeof(c->keys[0])) &&
                 (kd->mode == NULL || kd->mode == s->mode)) {
                 break;
             }
@@ -4046,9 +4044,7 @@
                  qs->ec.function);
         len = strlen(header);
     }
-    eb = eb_find(bufname);
-    if (!eb)
-        eb = eb_new(bufname, BF_SYSTEM);
+    eb = eb_find_new(bufname, BF_SYSTEM);
     if (eb) {
         eb_printf(eb, "%s%s\n", header, message);
     } else {
@@ -4082,7 +4078,9 @@
     vsnprintf(buf, sizeof(buf), fmt, ap);
     va_end(ap);
 
-    if (qs->screen->dpy.dpy_init != dummy_dpy_init) {
+    if (qs->screen->dpy.dpy_init == dummy_dpy_init) {
+        eb_format_message(qs, "*errors*", buf);
+    } else {
         if (strcmp(buf, qs->status_shadow) != 0) {
             print_at_byte(qs->screen,
                           0, qs->screen->height - qs->status_height,
@@ -4094,8 +4092,6 @@
             if (*p)
                 eb_format_message(qs, "*messages*", buf);
         }
-    } else {
-        eb_format_message(qs, "*errors*", buf);
     }
 }
 
@@ -4691,7 +4687,7 @@
     minibuffer_mode.name = "minibuffer";
     minibuffer_mode.scroll_up_down = minibuf_complete_scroll_up_down;
     qe_register_mode(&minibuffer_mode);
-    qe_register_cmd_table(minibuffer_commands, "minibuffer");
+    qe_register_cmd_table(minibuffer_commands, &minibuffer_mode);
 }
 
 /* less mode */
@@ -4746,7 +4742,7 @@
     memcpy(&less_mode, &text_mode, sizeof(ModeDef));
     less_mode.name = "less";
     qe_register_mode(&less_mode);
-    qe_register_cmd_table(less_commands, "less");
+    qe_register_cmd_table(less_commands, &less_mode);
 }
 
 #ifndef CONFIG_TINY
@@ -4842,11 +4838,7 @@
 {
     EditBuffer *b;
 
-    b = eb_find(bufname);
-    if (!b) {
-        /* Create a new buffer */
-        b = eb_new(bufname, BF_SAVELOG);
-    }
+    b = eb_find_new(bufname, BF_SAVELOG);
     if (b)
         switch_to_buffer(s, b);
 }
@@ -6686,7 +6678,7 @@
 int parse_config_file(EditState *s, const char *filename)
 {
     QEmacsState *qs = s->qe_state;
-    QErrorContext ec = qs->ec;
+    QErrorContext ec;
     FILE *f;
     char line[1024], str[1024];
     char prompt[64], cmd[128], *q, *strp;
@@ -6700,6 +6692,7 @@
     f = fopen(filename, "r");
     if (!f)
         return -1;
+    ec = qs->ec;
     skip = 0;
     err = 0;
     line_num = 0;
@@ -7273,18 +7266,19 @@
 
 static void load_all_modules(QEmacsState *qs)
 {
-    QErrorContext ec = qs->ec;
+    QErrorContext ec;
     FindFileState *ffst;
     char filename[MAX_FILENAME_SIZE];
     void *h;
     int (*init_func)(void);
 
+    ec = qs->ec;
+    qs->ec.function = "load-all-modules";
+
     ffst = find_file_open(qs->res_path, "*.so");
     if (!ffst)
         return;
 
-    qs->ec.function = "load-all-modules";
-
     while (!find_file_next(ffst, filename, sizeof(filename))) {
         h = dlopen(filename, RTLD_LAZY);
         if (!h) {
@@ -7408,18 +7402,25 @@
     qe_key_init();
 
     /* select the suitable display manager */
+    for (;;) {
     dpy = probe_display();
     if (!dpy) {
         fprintf(stderr, "No suitable display found, exiting\n");
         exit(1);
     }
-
     if (dpy->dpy_init(&global_screen, screen_width, screen_height) < 0) {
-        fprintf(stderr, "Could not initialize display '%s', exiting\n",
-                dpy->name);
-        exit(1);
+            /* Just disable the display and try another */
+            //fprintf(stderr, "Could not initialize display '%s', exiting\n",
+            //        dpy->name);
+            dpy->dpy_probe = NULL;
+        } else {
+            break;
+        }
     }
 
+    put_status(NULL, "%s display  %dx%d",
+               dpy->name, qs->screen->width, qs->screen->height);
+
     qe_event_init();
 
     do_refresh(s);
@@ -7448,6 +7449,7 @@
         edit_display(qs);
         dpy_flush(&global_screen);
     }
+    qs->ec.function = NULL;
 }
 
 

Index: qe.h
===================================================================
RCS file: /cvsroot/qemacs/qemacs/qe.h,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -b -r1.55 -r1.56
--- qe.h        3 Jan 2008 18:31:25 -0000       1.55
+++ qe.h        4 Jan 2008 22:24:39 -0000       1.56
@@ -753,10 +753,11 @@
                 const void *buf, int size1);
 void log_reset(EditBuffer *b);
 EditBuffer *eb_new(const char *name, int flags);
-EditBuffer *eb_scratch(const char *name);
+EditBuffer *eb_scratch(const char *name, int flags);
 void eb_clear(EditBuffer *b);
 void eb_free(EditBuffer *b);
 EditBuffer *eb_find(const char *name);
+EditBuffer *eb_find_new(const char *name, int flags);
 EditBuffer *eb_find_file(const char *filename);
 EditState *eb_find_window(EditBuffer *b, EditState *e);
 
@@ -770,6 +771,7 @@
 int eb_delete_range(EditBuffer *b, int p1, int p2);
 //int eb_clip_offset(EditBuffer *b, int offset);
 void do_undo(EditState *s);
+//void do_redo(EditState *s);
 
 int raw_load_buffer1(EditBuffer *b, FILE *f, int offset);
 int mmap_buffer(EditBuffer *b, const char *filename);
@@ -945,11 +947,15 @@
     int borders_invalid; /* true if window borders should be redrawn */
     int show_selection;  /* if true, the selection is displayed */
 
+    //int region_style;
+    //int curline_style;
+
     /* display area info */
     int width, height;
     int ytop, xleft;
     /* full window size, including borders */
     int x1, y1, x2, y2;         /* window coordinates in device units */
+    //int xx1, yy1, xx2, yy2;     /* window coordinates in 1/1000 */
 
     int flags; /* display flags */
 #define WF_POPUP      0x0001 /* popup window (with borders) */
@@ -1032,6 +1038,8 @@
 #define MODEF_NOCMD 0x0001 /* do not register xxx-mode command automatically */
     EditBufferDataType *data_type; /* native buffer data type (NULL = raw) */
     int (*mode_line)(EditState *s, char *buf, int buf_size); /* return mode 
line */
+
+    /* mode specific key bindings */
     //struct KeyDef *first_key;
 
     struct ModeDef *next;
@@ -1239,7 +1247,7 @@
 
 void qe_register_mode(ModeDef *m);
 void mode_completion(StringArray *cs, const char *input);
-void qe_register_cmd_table(CmdDef *cmds, const char *mode);
+void qe_register_cmd_table(CmdDef *cmds, ModeDef *m);
 void qe_register_binding(int key, const char *cmd_name,
                          const char *mode_names);
 CmdDef *qe_find_cmd(const char *cmd_name);
@@ -1503,7 +1511,7 @@
 void do_backspace(EditState *s, int argval);
 void do_delete_char(EditState *s, int argval);
 void do_tab(EditState *s, int argval);
-EditBuffer *new_yank_buffer(void);
+EditBuffer *new_yank_buffer(QEmacsState *qs);
 void do_append_next_kill(EditState *s);
 void do_kill(EditState *s, int p1, int p2, int dir);
 void do_kill_region(EditState *s, int killtype);
@@ -1526,7 +1534,8 @@
 void do_set_emulation(EditState *s, const char *name);
 void do_set_trace(EditState *s);
 void do_cd(EditState *s, const char *name);
-void do_global_set_key(EditState *s, const char *keystr, const char *cmd_name);
+void do_set_key(EditState *s, const char *keystr, const char *cmd_name, int 
local);
+//void do_unset_key(EditState *s, const char *keystr, int local);
 void do_bof(EditState *s);
 void do_eof(EditState *s);
 void do_bol(EditState *s);

Index: qeconfig.h
===================================================================
RCS file: /cvsroot/qemacs/qemacs/qeconfig.h,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -b -r1.26 -r1.27
--- qeconfig.h  3 Jan 2008 18:31:25 -0000       1.26
+++ qeconfig.h  4 Jan 2008 22:24:39 -0000       1.27
@@ -98,22 +98,28 @@
     CMD_( KEY_META('~'), KEY_NONE, "not-modified", do_not_modified, ESi, "ui")
     CMD_( KEY_NONE, KEY_NONE, "set-visited-file-name",
           do_set_visited_file_name, ESss,
-          "s{Set visited file name: }[file]|file|s{Rename file? }")
+         "s{Set visited file name: }[file]|file|"
+         "s{Rename file? }")
 
     /*---------------- Search and replace ----------------*/
 
     CMDV( KEY_META('S'), KEY_NONE, "search-forward", do_search_string, ESsi, 1,
-          "s{Search forward: }|search|v")
+         "s{Search forward: }|search|"
+         "v")
     CMDV( KEY_META('R'), KEY_NONE, "search-backward", do_search_string, ESsi, 
-1,
-          "s{Search backward: }|search|v")
+         "s{Search backward: }|search|"
+         "v")
     /* passing argument should switch to regex incremental search */
     CMD1( KEY_CTRL('r'), KEY_NONE, "isearch-backward", do_isearch, -1 )
     CMD1( KEY_CTRL('s'), KEY_NONE, "isearch-forward", do_isearch, 1 )
     CMD_( KEY_META('%'), KEY_NONE, "query-replace", do_query_replace, ESss,
-          "*s{Query replace: }|search|s{With: }|replace|")
+         "*" "s{Query replace: }|search|"
+         "s{With: }|replace|")
     /* passing argument restricts replace to word matches */
     CMD_( KEY_META('r'), KEY_NONE, "replace-string", do_replace_string, ESssi,
-          "*s{Replace String: }|search|s{With: }|replace|ui")
+         "*" "s{Replace String: }|search|"
+         "s{With: }|replace|"
+         "ui")
 
     /*---------------- Paragraph / case handling ----------------*/
 
@@ -135,7 +141,8 @@
     /*---------------- Command handling ----------------*/
 
     CMD_( KEY_META('x'), KEY_NONE, "execute-command", do_execute_command, ESsi,
-          "s{Command: }[command]|command|ui")
+         "s{Command: }[command]|command|"
+         "ui")
     /* M-0 thru M-9 should start universal argument */
     CMD0( KEY_CTRL('u'), KEY_META('-'), "universal-argument",
           do_universal_argument)
@@ -144,10 +151,18 @@
     CMD0( KEY_CTRLX(')'), KEY_NONE, "end-kbd-macro", do_end_macro)
     CMD0( KEY_CTRLX('e'), KEY_CTRL('\\'), "call-last-kbd-macro", do_call_macro)
     CMD_( KEY_NONE, KEY_NONE, "define-kbd-macro", do_define_kbd_macro, ESsss,
-          "s{Macro name: }[command]s{Macro keys: }s{Bind to key: }[key]")
-    /* global/local?, set/unset key? */
-    CMD_( KEY_NONE, KEY_NONE, "global-set-key", do_global_set_key, ESss,
-          "s{Set key globally: }[key]s{command: }[command]|command|")
+         "s{Macro name: }[command]"
+         "s{Macro keys: }"
+         "s{Bind to key: }[key]")
+    /* set/unset key? */
+    CMDV( KEY_NONE, KEY_NONE, "global-set-key", do_set_key, ESssi, 0,
+          "s{Set key globally: }[key]"
+         "s{command: }[command]|command|"
+         "v")
+    CMDV( KEY_NONE, KEY_NONE, "local-set-key", do_set_key, ESssi, 1,
+          "s{Set key locally: }[key]"
+         "s{command: }[command]|command|"
+         "v")
 
     /*---------------- Window handling ----------------*/
 
@@ -191,7 +206,7 @@
           "s{Charset: }[charset]")
     CMD_( KEY_NONE, KEY_NONE, "convert-buffer-file-coding-system",
           do_convert_buffer_file_coding_system, ESs,
-          "*s{Charset: }[charset]")
+          "*" "s{Charset: }[charset]")
     CMD0( KEY_CTRLXRET('b'), KEY_NONE, "toggle-bidir", do_toggle_bidir)
     CMD_( KEY_CTRLXRET(KEY_CTRL('\\')), KEY_NONE, "set-input-method",
           do_set_input_method, ESs,
@@ -201,15 +216,18 @@
 
     /*---------------- Styles & display ----------------*/
     CMD_( KEY_NONE, KEY_NONE, "define-color", do_define_color, ESss,
-          "s{Color name: }[color]|color|s{Color value: }[color]|color|")
+         "s{Color name: }[color]|color|"
+         "s{Color value: }[color]|color|")
     CMD_( KEY_NONE, KEY_NONE, "set-style", do_set_style, ESsss,
           "s{Style: }[style]|style|"
           "s{CSS Property Name: }"
           "s{CSS Property Value: }")
     CMD_( KEY_NONE, KEY_NONE, "set-display-size", do_set_display_size, ESii,
-          "i{Width: }i{Height: }")
+         "i{Width: }"
+         "i{Height: }")
     CMD_( KEY_NONE, KEY_NONE, "set-system-font", do_set_system_font, ESss,
-          "s{Font family: }s{System fonts: }")
+         "s{Font family: }"
+         "s{System fonts: }")
 
     /*---------------- Miscellaneous ----------------*/
 
@@ -218,8 +236,10 @@
     CMD0( KEY_CTRL('l'), KEY_NONE, "refresh", do_refresh_complete)
     CMD0( KEY_NONE, KEY_NONE, "doctor", do_doctor)
     CMD0( KEY_CTRLX('u'), KEY_CTRL('_'), "undo", do_undo)
-    CMDV( KEY_META('g'), KEY_NONE, "goto-line", do_goto, ESsi, 'l', "us{Goto 
line: }v")
-    CMDV( KEY_CTRLX('g'), KEY_NONE, "goto-char", do_goto, ESsi, 'c',  "us{Goto 
char: }v")
+    CMDV( KEY_META('g'), KEY_NONE, "goto-line", do_goto, ESsi, 'l',
+          "us{Goto line: }" "v")
+    CMDV( KEY_CTRLX('g'), KEY_NONE, "goto-char", do_goto, ESsi, 'c',
+          "us{Goto char: }" "v")
     CMD0( KEY_CTRLX('l'), KEY_NONE, "count-lines", do_count_lines)
     CMD0( KEY_CTRLX('='), KEY_NONE, "what-cursor-position",
           do_what_cursor_position)

Index: shell.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/shell.c,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -b -r1.37 -r1.38
--- shell.c     3 Jan 2008 18:31:25 -0000       1.37
+++ shell.c     4 Jan 2008 22:24:39 -0000       1.38
@@ -1448,7 +1448,7 @@
     qe_register_mode(&shell_mode);
 
     /* commands and default keys */
-    qe_register_cmd_table(shell_commands, "shell");
+    qe_register_cmd_table(shell_commands, &shell_mode);
     qe_register_cmd_table(compile_commands, NULL);
 
     return 0;

Index: unihex.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/unihex.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- unihex.c    3 Jan 2008 09:51:32 -0000       1.10
+++ unihex.c    4 Jan 2008 22:24:39 -0000       1.11
@@ -182,7 +182,8 @@
     /* additional mode specific keys */
     qe_register_binding(KEY_CTRL_LEFT, "decrease-width", "unihex");
     qe_register_binding(KEY_CTRL_RIGHT, "increase-width", "unihex");
-    qe_register_binding(KEY_CTRL('i'), "toggle-hex", "unihex");
+    qe_register_binding(KEY_TAB, "toggle-hex", "unihex");
+    qe_register_binding(KEY_SHIFT_TAB, "toggle-hex", "unihex");
     return 0;
 }
 

Index: util.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/util.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -b -r1.32 -r1.33
--- util.c      3 Jan 2008 18:31:25 -0000       1.32
+++ util.c      4 Jan 2008 22:24:39 -0000       1.33
@@ -766,6 +766,7 @@
 #endif
     /* Should also support backslash escapes: \000 \x00 \u0000 */
     /* Should also support ^x and syntax and Ctrl- prefix for control keys */
+    /* Should test for p[2] in range 'a'..'z', '@'..'_', '?' */
     if (p[0] == 'C' && p[1] == '-' && p1 == p + 3) {
         /* control */
         key = KEY_CTRL(p[2]);

Index: video.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/video.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- video.c     3 Jan 2008 09:51:32 -0000       1.9
+++ video.c     4 Jan 2008 22:24:39 -0000       1.10
@@ -968,7 +968,7 @@
 {
     eb_register_data_type(&video_data_type);
     qe_register_mode(&video_mode);
-    qe_register_cmd_table(video_commands, "av");
+    qe_register_cmd_table(video_commands, &video_mode);
     /* additional mode specific keys */
     qe_register_binding('f', "toggle-full-screen", "av");
     return 0;

Index: x11.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/x11.c,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -b -r1.20 -r1.21
--- x11.c       3 Jan 2008 09:51:32 -0000       1.20
+++ x11.c       4 Jan 2008 22:24:40 -0000       1.21
@@ -1060,6 +1060,7 @@
    if needed */
 static void term_selection_request(__unused__ QEditScreen *s)
 {
+    QEmacsState *qs = &qe_state;
     Window w;
     Atom prop;
     long nread;
@@ -1088,7 +1089,7 @@
     prop = xev.xselection.property;
 
     /* copy GUI selection a new yank buffer */
-    b = new_yank_buffer();
+    b = new_yank_buffer(qs);
 
     nread = 0;
     for (;;) {




reply via email to

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