qemacs-commit
[Top][All Lists]
Advanced

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

[Qemacs-commit] qemacs qe.h bufed.c htmlsrc.c parser.c TODO.org...


From: Charlie Gordon
Subject: [Qemacs-commit] qemacs qe.h bufed.c htmlsrc.c parser.c TODO.org...
Date: Wed, 19 Dec 2018 06:45:39 -0500 (EST)

CVSROOT:        /sources/qemacs
Module name:    qemacs
Changes by:     Charlie Gordon <chqrlie>        18/12/19 06:45:39

Modified files:
        .              : qe.h bufed.c htmlsrc.c parser.c TODO.org 
                         VERSION fractal.c x11.c clang.c extras.c qe.c 
                         .filelist 

Log message:
        Small fixes
        - support SF_NUMBER for buffer sort
        - fix image scaling
        - support ESC c and fix ESC [ J escape sequences
        - add C-u C-x C-n to parse nest-error from current buffer offset
        - increase MIN_MMAP_SIZE to 2MB
        - add window caption for popup windows
        - store completion name in MinibufState for popup window caption
        - adjust htmlsrc-mode score:
          85 if both extension and contents match rules
          80 if just one of them matches
        - refine c-mode probe function
        - simplify print_bindings()

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.h?cvsroot=qemacs&r1=1.270&r2=1.271
http://cvs.savannah.gnu.org/viewcvs/qemacs/bufed.c?cvsroot=qemacs&r1=1.46&r2=1.47
http://cvs.savannah.gnu.org/viewcvs/qemacs/htmlsrc.c?cvsroot=qemacs&r1=1.30&r2=1.31
http://cvs.savannah.gnu.org/viewcvs/qemacs/parser.c?cvsroot=qemacs&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/qemacs/TODO.org?cvsroot=qemacs&r1=1.42&r2=1.43
http://cvs.savannah.gnu.org/viewcvs/qemacs/VERSION?cvsroot=qemacs&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/qemacs/fractal.c?cvsroot=qemacs&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/qemacs/x11.c?cvsroot=qemacs&r1=1.56&r2=1.57
http://cvs.savannah.gnu.org/viewcvs/qemacs/clang.c?cvsroot=qemacs&r1=1.136&r2=1.137
http://cvs.savannah.gnu.org/viewcvs/qemacs/extras.c?cvsroot=qemacs&r1=1.73&r2=1.74
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.c?cvsroot=qemacs&r1=1.291&r2=1.292
http://cvs.savannah.gnu.org/viewcvs/qemacs/.filelist?cvsroot=qemacs&r1=1.1&r2=1.2

Patches:
Index: qe.h
===================================================================
RCS file: /sources/qemacs/qemacs/qe.h,v
retrieving revision 1.270
retrieving revision 1.271
diff -u -b -r1.270 -r1.271
--- qe.h        22 Jun 2017 22:02:25 -0000      1.270
+++ qe.h        19 Dec 2018 11:45:39 -0000      1.271
@@ -991,7 +991,7 @@
 /* buffer.c */
 
 /* begin to mmap files from this size */
-#define MIN_MMAP_SIZE  (1024*1024)
+#define MIN_MMAP_SIZE  (2*1024*1024)
 #define MAX_LOAD_SIZE  (512*1024*1024)
 
 #define MAX_PAGE_SIZE  4096
@@ -1462,6 +1462,7 @@
 #define WF_FILELIST   0x1000 /* window is interactive file list */
 
     OWNED char *prompt;  /* optional window prompt, utf8 */
+    OWNED char *caption;  /* optional window caption or title, utf8 */
     //const char *mode_line;
     //const char *title;
     struct QEmacsState *qe_state;
@@ -2001,7 +2002,7 @@
 void put_status(EditState *s, const char *fmt, ...) qe__attr_printf(2,3);
 void put_error(EditState *s, const char *fmt, ...) qe__attr_printf(2,3);
 void minibuffer_edit(EditState *e, const char *input, const char *prompt,
-                     StringArray *hist, CompletionFunc completion_func,
+                     StringArray *hist, const char *completion_name,
                      void (*cb)(void *opaque, char *buf), void *opaque);
 void command_completion(CompleteState *cp);
 void file_completion(CompleteState *cp);
@@ -2040,7 +2041,7 @@
 void do_add_resource_path(EditState *s, const char *path);
 
 /* popup / low level window handling */
-EditState *show_popup(EditState *s, EditBuffer *b);
+EditState *show_popup(EditState *s, EditBuffer *b, const char *caption);
 int check_read_only(EditState *s);
 EditState *insert_window_left(EditBuffer *b, int width, int flags);
 EditState *find_window(EditState *s, int key, EditState *def);

Index: bufed.c
===================================================================
RCS file: /sources/qemacs/qemacs/bufed.c,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -b -r1.46 -r1.47
--- bufed.c     8 May 2017 10:47:22 -0000       1.46
+++ bufed.c     19 Dec 2018 11:45:39 -0000      1.47
@@ -286,7 +286,8 @@
     if (!b)
         return;
 
-    e = show_popup(s, b);
+    /* XXX: header should have column captions */
+    e = show_popup(s, b, "Buffer list");
     if (!e)
         return;
 

Index: htmlsrc.c
===================================================================
RCS file: /sources/qemacs/qemacs/htmlsrc.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -b -r1.30 -r1.31
--- htmlsrc.c   11 Apr 2018 13:46:03 -0000      1.30
+++ htmlsrc.c   19 Dec 2018 11:45:39 -0000      1.31
@@ -368,10 +368,12 @@
 static int htmlsrc_mode_probe(ModeDef *mode, ModeProbeData *p)
 {
     const char *buf = cs8(p->buf);
+    static const unsigned char scores[3] = { 1, 80, 85 };
+    const unsigned char *pscore = scores;
 
     /* first check file extension */
     if (match_extension(p->filename, mode->extensions))
-        return 85;
+        pscore++;
 
     /* then try buffer contents */
     if (buf[0] == '<'
@@ -380,10 +382,10 @@
          !html_tagcmp(buf, "<?XML") ||
          !html_tagcmp(buf, "<PLIST") ||
          !html_tagcmp(buf, "<!DOCTYPE"))) {
-        return 85;
+         pscore++;
     }
 
-    return 1;
+    return *pscore;
 }
 
 /* specific htmlsrc commands */

Index: parser.c
===================================================================
RCS file: /sources/qemacs/qemacs/parser.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- parser.c    26 Mar 2017 15:57:24 -0000      1.8
+++ parser.c    19 Dec 2018 11:45:39 -0000      1.9
@@ -418,8 +418,7 @@
         b->offset = 0;
         b->flags |= BF_READONLY;
 
-        /* Should show window caption "qemacs session" */
-        show_popup(s, b);
+        show_popup(s, b, "QEmacs session");
     } else {
         eb_write_buffer(b, 0, b->total_size, ".qesession");
         eb_free(&b);

Index: TODO.org
===================================================================
RCS file: /sources/qemacs/qemacs/TODO.org,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -b -r1.42 -r1.43
--- TODO.org    11 Feb 2018 11:44:18 -0000      1.42
+++ TODO.org    19 Dec 2018 11:45:39 -0000      1.43
@@ -5,6 +5,7 @@
 
 * Recent bugs and ideas
 
+** basic: add property lists in buffer and window for default directory and 
similar properties (override)
 ** shell: C-c C-c should abort make process
 ** basic: backspace delete hacking tabs
 ** charset: use unichar typedef
@@ -23,6 +24,7 @@
 ** display: colorize extra ^M and ^Z as preproc at end of line prior to 
calling the syntax highlighter (same as BOM)
 ** display: display bug on 
~/comp/projects/fractal/fractint/ORGFORM/BAILOUT.FRM (double ^M)
 ** display: colorizer bug on 
/comp/projects/fractal/fractint/ORGFORM/NOEL-2.FRM (triple ^M)
+** display: use a prefix to explore file in a popup window
 ** files: actually load file in find-file-noselect
 ** files: ignore .DS_Store in completion
 ** files: fix SPC / TAB distinct behaviors on ~/comp/project/gnachman/
@@ -87,7 +89,8 @@
 ** extras: do_transpose should take argval and swap distant fragments
 ** completion: minibuffer completion: bad return on C-x C-f . SPC qe SPC RET
 ** config: reparse .qerc upon change
-** dired: display directory links as directories and links
+** dired: use window/buffer caption for directory and sizes description
+** dired: display directory links as directories and links, group with 
directories
 ** dired: fork process and use asynchronous function to:
    - list directory contents
    - track directory contents file stats
@@ -644,7 +647,6 @@
 charset: set-eol-type should take a string: auto/binary/dos/unix/mac/0/1/2...
 archive: use window/buffer caption for output description
 files: handle files with embedded spaces
-dired: group symbolic links to directories with directories
 images: filtered scaling
 images: zoom, pan, rotate, describe, peek-color, histogram...
 images: multiview, wallpaper...

Index: VERSION
===================================================================
RCS file: /sources/qemacs/qemacs/VERSION,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- VERSION     11 Apr 2018 13:46:03 -0000      1.6
+++ VERSION     19 Dec 2018 11:45:39 -0000      1.7
@@ -1 +1 @@
-5.0beta
+5.1beta

Index: fractal.c
===================================================================
RCS file: /sources/qemacs/qemacs/fractal.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- fractal.c   18 May 2017 14:10:51 -0000      1.7
+++ fractal.c   19 Dec 2018 11:45:39 -0000      1.8
@@ -1059,7 +1059,7 @@
     eb_printf(b, "%*s: %s\n", w, "c", "set default colors");
 
     b->flags |= BF_READONLY;
-    show_popup(s, b);
+    show_popup(s, b, "About Fractal");
 }
 
 static void fractal_display_hook(EditState *s) {

Index: x11.c
===================================================================
RCS file: /sources/qemacs/qemacs/x11.c,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -b -r1.56 -r1.57
--- x11.c       21 May 2017 08:10:37 -0000      1.56
+++ x11.c       19 Dec 2018 11:45:39 -0000      1.57
@@ -2010,7 +2010,7 @@
     }
     list = XListFonts(xs->display, buf, 20000, &count);
 
-    eb_printf(b, "X11 Font list: %d entries\n\n", count);
+    eb_printf(b, "\n%d entries\n\n", count);
 
     for (i = 0; i < count; i++) {
         eb_printf(b, "%d: %s\n", i, list[i]);
@@ -2018,7 +2018,7 @@
     XFreeFontNames(list);
 
     b->flags |= BF_READONLY;
-    show_popup(s, b);
+    show_popup(s, b, "X11 Font list");
 }
 
 static CmdDef x11_commands[] = {

Index: clang.c
===================================================================
RCS file: /sources/qemacs/qemacs/clang.c,v
retrieving revision 1.136
retrieving revision 1.137
diff -u -b -r1.136 -r1.137
--- clang.c     11 Apr 2018 13:46:03 -0000      1.136
+++ clang.c     19 Dec 2018 11:45:39 -0000      1.137
@@ -105,6 +105,7 @@
     "ecp|"              /* Informix embedded C */
     "pgc|"              /* Postgres embedded C */
     "pcc|"              /* Oracle C++ */
+    "h.in|c.in|"        /* preprocessed C input (should use more generic 
approach) */
 };
 
 /* grab a C identifier from a uint buf, stripping color.
@@ -1193,7 +1194,7 @@
         }
     }
     if (b->total_size > 0) {
-        show_popup(s, b);
+        show_popup(s, b, "Preprocessor conditionals");
     } else {
         eb_free(&b);
         put_status(s, "Not in a #if conditional");
@@ -1237,6 +1238,8 @@
         /* same for files starting with a preprocessor directive */
         if (strstart(cs8(p->buf), "#include", NULL)
         ||  strstart(cs8(p->buf), "#ifndef", NULL)
+        ||  strstart(cs8(p->buf), "#ifdef", NULL)
+        ||  strstart(cs8(p->buf), "#if ", NULL)
         ||  strstart(cs8(p->buf), "#define", NULL)
         ||  strstart(cs8(p->buf), "#pragma", NULL)) {
             return 50;
@@ -1748,6 +1751,7 @@
 
                 /* keywords used as object property tags are regular 
identifiers */
                 if (strfind(syn->keywords, kbuf) &&
+                    // XXX: this is incorrect for `default` inside a switch 
statement */
                     str[i] != ':' && (start == 0 || str[start - 1] != '.')) {
                     style = C_STYLE_KEYWORD;
                     break;

Index: extras.c
===================================================================
RCS file: /sources/qemacs/qemacs/extras.c,v
retrieving revision 1.73
retrieving revision 1.74
diff -u -b -r1.73 -r1.74
--- extras.c    11 Feb 2018 11:44:18 -0000      1.73
+++ extras.c    19 Dec 2018 11:45:39 -0000      1.74
@@ -909,8 +909,7 @@
     }
 }
 
-static void print_bindings(EditBuffer *b, const char *title,
-                           qe__unused__ int type, ModeDef *mode)
+static void print_bindings(EditBuffer *b, ModeDef *mode)
 {
     char buf[256];
     CmdDef *d;
@@ -922,10 +921,10 @@
         while (d->name != NULL) {
             if (qe_list_bindings(buf, sizeof(buf), d, mode, 0)) {
                 if (!gfound) {
-                    if (title) {
-                        eb_printf(b, "%s:\n\n", title);
-                    } else {
+                    if (mode) {
                         eb_printf(b, "\n%s mode bindings:\n\n", mode->name);
+                    } else {
+                        eb_printf(b, "\nGlobal bindings:\n\n");
                     }
                     gfound = 1;
                 }
@@ -945,11 +944,11 @@
     if (!b)
         return;
 
-    print_bindings(b, NULL, 0, s->mode);
-    print_bindings(b, "\nGlobal bindings", 0, NULL);
+    print_bindings(b, s->mode);
+    print_bindings(b, NULL);
 
     b->flags |= BF_READONLY;
-    show_popup(s, b);
+    show_popup(s, b, "Bindings");
 }
 
 void do_apropos(EditState *s, const char *str)
@@ -965,7 +964,7 @@
     if (!b)
         return;
 
-    eb_printf(b, "apropos '%s':\n\n", str);
+    eb_printf(b, "\n");
 
     found = 0;
     d = qs->first_cmd;
@@ -999,7 +998,8 @@
     }
     if (found) {
         b->flags |= BF_READONLY;
-        show_popup(s, b);
+        snprintf(buf, sizeof buf, "Apropos '%s'", str);
+        show_popup(s, b, buf);
     } else {
         eb_free(&b);
         put_status(s, "No apropos matches for `%s'", str);
@@ -1022,13 +1022,13 @@
     eb_printf(b, "\n  %s\n\n%s\n", str_version, str_credits);
 
     /* list commands */
-    print_bindings(b, NULL, 0, s->mode);
-    print_bindings(b, "\nGlobal bindings", 0, NULL);
+    print_bindings(b, s->mode);
+    print_bindings(b, NULL);
 
     /* other mode bindings */
     for (m = qs->first_mode; m; m = m->next) {
         if (m != s->mode)
-            print_bindings(b, NULL, 0, m);
+            print_bindings(b, m);
     }
 
     /* list commands */
@@ -1057,8 +1057,7 @@
     b->offset = 0;
     b->flags |= BF_READONLY;
 
-    /* Should show window caption "About QEmacs" */
-    show_popup(s, b);
+    show_popup(s, b, "About QEmacs");
 }
 
 /* extract the next word from the string. ignore spaces, stop on '/' */
@@ -1225,7 +1224,7 @@
     if (!b1)
         return;
 
-    eb_printf(b1, "Buffer Description\n\n");
+    eb_printf(b1, "\n");
 
     eb_printf(b1, "        name: %s\n", b->name);
     eb_printf(b1, "    filename: %s\n", b->filename);
@@ -1412,7 +1411,7 @@
     }
 
     b1->flags |= BF_READONLY;
-    show_popup(s, b1);
+    show_popup(s, b1, "Buffer Description");
 }
 
 static void do_describe_window(EditState *s, int argval)
@@ -1424,7 +1423,7 @@
     if (!b1)
         return;
 
-    eb_printf(b1, "Window Description\n\n");
+    eb_printf(b1, "\n");
 
     w = 28;
     eb_printf(b1, "%*s: %d, %d\n", w, "xleft, ytop", s->xleft, s->ytop);
@@ -1481,7 +1480,7 @@
     eb_printf(b1, "\n");
 
     b1->flags |= BF_READONLY;
-    show_popup(s, b1);
+    show_popup(s, b1, "Window Description");
 }
 
 static void do_describe_screen(EditState *e, int argval)
@@ -1494,7 +1493,7 @@
     if (!b1)
         return;
 
-    eb_printf(b1, "Screen Description\n\n");
+    eb_printf(b1, "\n");
 
     w = 16;
     eb_printf(b1, "%*s: %s\n", w, "dpy.name", s->dpy.name);
@@ -1511,7 +1510,7 @@
     dpy_describe(s, b1);
 
     b1->flags |= BF_READONLY;
-    show_popup(e, b1);
+    show_popup(e, b1, "Screen Description");
 }
 
 /*---------------- buffer contents sorting ----------------*/
@@ -1714,6 +1713,7 @@
 /* XXX: should have next-tag and previous-tag */
 
 static void do_list_tags(EditState *s) {
+    char buf[256];
     EditBuffer *b;
     QEProperty *p;
 
@@ -1723,7 +1723,7 @@
 
     tag_buffer(s);
 
-    eb_printf(b, "\nTags in file %s:\n\n", s->b->filename);
+    snprintf(buf, sizeof buf, "Tags in file %s", s->b->filename);
     for (p = s->b->property_list; p; p = p->next) {
         if (p->type == QE_PROP_TAG) {
             eb_printf(b, "%12d  %s\n", p->offset, (char*)p->data);
@@ -1731,7 +1731,7 @@
     }
 
     b->flags |= BF_READONLY;
-    show_popup(s, b);
+    show_popup(s, b, buf);
 }
 
 static CmdDef extra_commands[] = {

Index: qe.c
===================================================================
RCS file: /sources/qemacs/qemacs/qe.c,v
retrieving revision 1.291
retrieving revision 1.292
diff -u -b -r1.291 -r1.292
--- qe.c        11 Apr 2018 13:46:03 -0000      1.291
+++ qe.c        19 Dec 2018 11:45:39 -0000      1.292
@@ -2846,23 +2846,49 @@
             int y = e->y1;
             int width = e->x2 - e->x1;
             int height = e->y2 - e->y1;
-            int bw = qs->border_width;
-            int bh = qs->border_width;
 
             rect.x1 = 0;
             rect.y1 = 0;
             rect.x2 = qs->width;
             rect.y2 = qs->height;
+            /* XXX: should use popup size? */
             set_clip_rectangle(qs->screen, &rect);
             color = qe_styles[QE_STYLE_WINDOW_BORDER].bg_color;
             if (e->flags & WF_POPUP) {
-                fill_rectangle(qs->screen, x, y, width, bh, color);
-                fill_rectangle(qs->screen,
-                               x, y + bh, bw, height - bh - bh, color);
-                fill_rectangle(qs->screen,
-                               x + width - bw, y + bh, bw, height - bh - bh, 
color);
-                fill_rectangle(qs->screen,
-                               x, y + height - bh, width, bh, color);
+                /* XXX: should use client area instead of recomputing it */
+                int top_h = e->caption ? qs->mode_line_height : 
qs->border_width;
+                int bottom_h = qs->border_width;
+                int left_w = qs->border_width;
+                int right_w = qs->border_width;
+
+                fill_rectangle(qs->screen, x, y, width, top_h, color);
+                fill_rectangle(qs->screen, x, y + bottom_h,
+                               left_w, height - top_h - bottom_h, color);
+                fill_rectangle(qs->screen, x + width - right_w, y + top_h,
+                               right_w, height - top_h - bottom_h, color);
+                fill_rectangle(qs->screen, x, y + height - bottom_h,
+                               width, bottom_h, color);
+                /* display caption */
+                if (e->caption) {
+                    QEStyleDef styledef;
+                    QECharMetrics metrics;
+                    QEFont *font;
+                    unsigned int buf[256];
+                    int len;
+
+                    /* XXX: Should convert from UTF-8? */
+                    for (len = 0; len < 256 && e->caption[len]; len++) {
+                        buf[len] = e->caption[len];
+                    }
+                    get_style(e, &styledef, QE_STYLE_WINDOW_BORDER);
+                    font = select_font(qs->screen,
+                                       styledef.font_style, 
styledef.font_size);
+                    text_metrics(qs->screen, font, &metrics, buf, len);
+                    draw_text(qs->screen, font,
+                              x + width / 2 - metrics.width / 2, y + 
metrics.font_ascent,
+                              buf, len, styledef.fg_color);
+                    release_font(qs->screen, font);
+                }
             }
             if (e->flags & WF_RSEPARATOR) {
                 fill_rectangle(qs->screen,
@@ -4864,10 +4890,8 @@
                 pstrcat(prompt, sizeof(prompt), es->default_input);
                 pstrcat(prompt, sizeof(prompt), ") ");
             }
-            minibuffer_edit(s, def_input, prompt,
-                            get_history(history),
-                            find_completion(completion_name),
-                            arg_edit_cb, es);
+            minibuffer_edit(s, def_input, prompt, get_history(history),
+                            completion_name, arg_edit_cb, es);
             return;
         }
     }
@@ -5796,7 +5820,7 @@
     if (s->flags & WF_POPUP) {
         x1 += qs->border_width;
         x2 -= qs->border_width;
-        y1 += qs->border_width;
+        y1 += s->caption ? qs->mode_line_height : qs->border_width;
         y2 -= qs->border_width;
     }
     if (s->flags & WF_RSEPARATOR)
@@ -5869,6 +5893,7 @@
         /* closing the window mode should have freed it already */
         qe_free_mode_data(s->mode_data);
         qe_free(&s->prompt);
+        qe_free(&s->caption);
         qe_free(&s->line_shadow);
         s->shadow_nb_lines = 0;
         qe_free(sp);
@@ -6024,6 +6049,7 @@
     void *opaque;
 
     EditState *completion_popup_window;  /* XXX: should have a popup_window 
member */
+    OWNED char *completion_name;
     CompletionFunc completion_function;
 
     StringArray *history;
@@ -6118,6 +6144,8 @@
             /* if more than one match, then display them in a new popup
                buffer */
             if (!mb->completion_popup_window) {
+                char buf[60];
+
                 b = eb_new("*completion*", 
                            BF_SYSTEM | BF_UTF8 | BF_TRANSIENT | BF_STYLE1);
                 b->default_mode = &list_mode;
@@ -6126,6 +6154,8 @@
                 w = (w1 * 3) / 4;
                 h = (h1 * 3) / 4;
                 e = edit_new(b, (w1 - w) / 2, (h1 - h) / 2, w, h, WF_POPUP);
+                snprintf(buf, sizeof buf, "Select a %s:", mb->completion_name);
+                e->caption = qe_strdup(buf);
                 e->target_window = s;
                 mb->completion_popup_window = e;
                 do_refresh(e);
@@ -6371,6 +6401,7 @@
     target = s->target_window;
     mb->cb = NULL;
     mb->opaque = NULL;
+    qe_free(&mb->completion_name);
 
     /* Close the minibuffer window */
     s->b->flags |= BF_TRANSIENT;
@@ -6391,7 +6422,7 @@
    called with an allocated string. If the string is null, it means
    editing was aborted. */
 void minibuffer_edit(EditState *e, const char *input, const char *prompt,
-                     StringArray *hist, CompletionFunc completion_func,
+                     StringArray *hist, const char *completion_name,
                      void (*cb)(void *opaque, char *buf), void *opaque)
 {
     QEmacsState *qs = &qe_state;
@@ -6430,7 +6461,12 @@
     mb = minibuffer_get_state(s, 0);
     if (mb) {
         mb->completion_popup_window = NULL;
-        mb->completion_function = completion_func;
+        mb->completion_name = NULL;
+        mb->completion_function = NULL;
+        if (completion_name) {
+            mb->completion_name = qe_strdup(completion_name);
+            mb->completion_function = find_completion(completion_name);
+        }
         mb->history = hist;
         mb->history_saved_offset = 0;
         if (hist) {
@@ -6513,7 +6549,7 @@
 }
 
 /* show a popup on a readonly buffer */
-EditState *show_popup(EditState *s, EditBuffer *b)
+EditState *show_popup(EditState *s, EditBuffer *b, const char *caption)
 {
     QEmacsState *qs = s->qe_state;
     EditState *e;
@@ -6531,6 +6567,8 @@
 
     b->default_mode = &popup_mode;
     e = edit_new(b, (w1 - w) / 2, (h1 - h) / 2, w, h, WF_POPUP);
+    if (caption)
+        e->caption = qe_strdup(caption);
     /* XXX: should come from mode.default_wrap */
     e->wrap = WRAP_TRUNCATE;
     e->target_window = s;
@@ -7993,7 +8031,7 @@
               "C-h c     Describe key briefly\n"
               );
     b->flags |= BF_READONLY;
-    show_popup(s, b);
+    show_popup(s, b, "QEmacs help for help - Press q to quit:");
 }
 
 #ifdef CONFIG_WIN32
@@ -9089,7 +9127,7 @@
 
     b = eb_find("*errors*");
     if (b != NULL) {
-        show_popup(s, b);
+        show_popup(s, b, "Errors");
         edit_display(qs);
         dpy_flush(&global_screen);
     }

Index: .filelist
===================================================================
RCS file: /sources/qemacs/qemacs/.filelist,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- .filelist   11 Apr 2018 13:37:07 -0000      1.1
+++ .filelist   19 Dec 2018 11:45:39 -0000      1.2
@@ -1,4 +1,26 @@
+.cvsignore
 .filelist
+COPYING
+Changelog
+Makefile
+README
+TODO.org
+VERSION
+arabic.c
+archive.c
+arm.c
+bufed.c
+buffer.c
+cfb.c
+cfb.h
+charset.c
+charsetjis.c
+charsetjis.def
+charsetmore.c
+clang.c
+cobol.c
+config.eg
+configure
 cp/8859-1.TXT
 cp/8859-10.TXT
 cp/8859-11.TXT
@@ -15,6 +37,7 @@
 cp/8859-8.TXT
 cp/8859-9.TXT
 cp/APL-ISO-IR-68.TXT
+cp/ATARIST.TXT
 cp/CP037.TXT
 cp/CP1006.TXT
 cp/CP1026.TXT
@@ -65,116 +88,27 @@
 cp/SHIFTJIS.TXT
 cp/TCVN.TXT
 cp/VISCII.TXT
+cp/cpdata.txt
 cp/euc-jis-2004-std.txt
 cp/iso-2022-jp-2004-std.txt
 cp/jisx0213-2004-std.txt
+cp/kamen.cp
 cp/koi8_ru.cp
 cp/koi8_u.cp
 cp/sjis-0213-2004-std.txt
-cp/cpdata.txt
-cp/ATARIST.TXT
-cp/kamen.cp
-COPYING
-Changelog
-README
-cfb.h
-config.eg
-indic.c
-libfbf.h
-qe-doc.texi
-qe.tcc
-qemacs.spec
-qfribidi.c
-unifont.lig
-haiku-pe2qe.sh
-fbfrender.h
-unicode_join.c
-qe.1
-qfribidi.h
-qeend.c
-qe-doc.html
-libfbf.c
-tqe.c
-perl.c
-charsetjis.c
-unicode_width.h
-jistoqe.c
-charsetjis.def
-charsetmore.c
 cptoqe.c
-fbftoqe.c
-kmap.c
-kmaptoqe.c
-ligtoqe.c
-input.c
-rlang.c
-forth.c
-cobol.c
 cutils.c
 cutils.h
-variables.h
-.cvsignore
-parser.c
-qemacs.rdef
-arabic.c
-VERSION
-fbfrender.c
-kmaps
-ligatures
-virgil.c
-groovy.c
-rust.c
-swift.c
-unix.c
-search.c
-cfb.c
-xml.c
-lisp.c
-orgmode.c
-charset.c
-hex.c
-mpeg.c
-unihex.c
-image.c
-video.c
-buffer.c
-bufed.c
-docbook.c
-list.c
 dired.c
-qestyles.h
-qeconfig.h
 display.c
-haiku.cpp
-html2png.c
-win32.c
-fractal.c
-tty.c
-archive.c
-latex-mode.c
 display.h
-x11.c
-configure
-arm.c
+docbook.c
 ebnf.c
-icon.c
-makemode.c
-util.c
-html.c
-qe.h
-variables.c
-markdown.c
-script.c
 extra-modes.c
-TODO.org
 extras.c
-stb.c
-stb_image.h
-Makefile
-qe.c
-shell.c
-htmlsrc.c
-clang.c
+fbfrender.c
+fbfrender.h
+fbftoqe.c
 fonts/fixed10.fbf
 fonts/fixed12.fbf
 fonts/fixed13.fbf
@@ -192,6 +126,21 @@
 fonts/times24.fbf
 fonts/times8.fbf
 fonts/unifont.fbf
+forth.c
+fractal.c
+groovy.c
+haiku-pe2qe.sh
+haiku.cpp
+hex.c
+html.c
+html2png.c
+htmlsrc.c
+icon.c
+image.c
+indic.c
+input.c
+jistoqe.c
+kmap.c
 kmap/Arabic.kmap
 kmap/ArmenianEast.kmap
 kmap/ArmenianWest.kmap
@@ -241,43 +190,94 @@
 kmap/Welsh.kmap
 kmap/XKB_iso8859-4.kmap
 kmap/Yiddish.kmap
+kmaps
+kmaptoqe.c
+latex-mode.c
+libfbf.c
+libfbf.h
+libqhtml/.cvsignore
+libqhtml/Makefile
+libqhtml/css.c
+libqhtml/css.h
 libqhtml/cssid.h
+libqhtml/cssparse.c
+libqhtml/csstoqe.c
 libqhtml/docbook.css
 libqhtml/html.css
 libqhtml/htmlent.h
-libqhtml/.cvsignore
-libqhtml/cssparse.c
-libqhtml/css.h
-libqhtml/csstoqe.c
-libqhtml/css.c
 libqhtml/xmlparse.c
-libqhtml/Makefile
+ligatures
+ligtoqe.c
+lisp.c
+list.c
+makemode.c
+markdown.c
+mpeg.c
+orgmode.c
+parser.c
+perl.c
 plugins/Makefile
 plugins/my_plugin.c
+qe-doc.html
+qe-doc.texi
+qe.1
+qe.c
+qe.h
+qe.tcc
+qeconfig.h
+qeend.c
+qemacs.rdef
+qemacs.spec
+qestyles.h
+qfribidi.c
+qfribidi.h
+rlang.c
+rust.c
+script.c
+search.c
+shell.c
+stb.c
+stb_image.h
+swift.c
+tests/16colors.pl
+tests/24-bit-color.sh
+tests/256colors2.pl
+tests/7936-colors.sh
 tests/HELLO.txt
+tests/NonBMP1.utf8
+tests/TestPage.txt
+tests/TestPage.ucs2be.txt
+tests/TestPage.ucs2le.txt
+tests/TestPage.ucs4be.txt
+tests/TestPage.ucs4le.txt
+tests/boxes.txt
+tests/color-spaces.pl
 tests/colours.txt
 tests/lattrs.txt
+tests/mandelbrot.sh
 tests/scocols.txt
 tests/test-capital-rtl
 tests/test-capital-rtl.ref
 tests/test-hebrew
 tests/testbidi.html
+tests/truecolors.sh
 tests/utf8.txt
 tests/vt100.txt
-tests/TestPage.ucs2be.txt
-tests/NonBMP1.utf8
-tests/TestPage.ucs4le.txt
-tests/TestPage.ucs4be.txt
-tests/TestPage.txt
-tests/256colors2.pl
-tests/truecolors.sh
 tests/xterm-colortest.sh
 tests/xterm-colour-chart.py
-tests/TestPage.ucs2le.txt
-tests/16colors.pl
-tests/24-bit-color.sh
-tests/7936-colors.sh
 tests/xterm-palette.sh
-tests/color-spaces.pl
-tests/mandelbrot.sh
-tests/boxes.txt
+tqe.c
+tty.c
+unicode_join.c
+unicode_width.h
+unifont.lig
+unihex.c
+unix.c
+util.c
+variables.c
+variables.h
+video.c
+virgil.c
+win32.c
+x11.c
+xml.c



reply via email to

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