qemacs-commit
[Top][All Lists]
Advanced

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

[Qemacs-commit] qemacs archive.c buffer.c qe.h bufed.c qe.c she...


From: Charlie Gordon
Subject: [Qemacs-commit] qemacs archive.c buffer.c qe.h bufed.c qe.c she...
Date: Tue, 25 Aug 2015 16:19:43 +0000

CVSROOT:        /sources/qemacs
Module name:    qemacs
Changes by:     Charlie Gordon <chqrlie>        15/08/25 16:19:43

Modified files:
        .              : archive.c buffer.c qe.h bufed.c qe.c shell.c 

Log message:
        buffers: clean up, add data_type_name
        - rename raw_buffer_load1() to eb_raw_buffer_load1()
        - rename log_reset() to eb_free_log_buffer()
        - add buffer.data_type_name to display proper handler on modeline

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/archive.c?cvsroot=qemacs&r1=1.20&r2=1.21
http://cvs.savannah.gnu.org/viewcvs/qemacs/buffer.c?cvsroot=qemacs&r1=1.89&r2=1.90
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.h?cvsroot=qemacs&r1=1.202&r2=1.203
http://cvs.savannah.gnu.org/viewcvs/qemacs/bufed.c?cvsroot=qemacs&r1=1.36&r2=1.37
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.c?cvsroot=qemacs&r1=1.205&r2=1.206
http://cvs.savannah.gnu.org/viewcvs/qemacs/shell.c?cvsroot=qemacs&r1=1.97&r2=1.98

Patches:
Index: archive.c
===================================================================
RCS file: /sources/qemacs/qemacs/archive.c,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -b -r1.20 -r1.21
--- archive.c   30 Jul 2015 17:51:08 -0000      1.20
+++ archive.c   25 Aug 2015 16:19:42 -0000      1.21
@@ -166,6 +166,7 @@
     buf_size = file_read_block(b, f, buf, sizeof(buf));
     atp = find_archive_type(b->filename, buf, buf_size);
     if (atp) {
+        b->data_type_name = atp->name;
         eb_clear(b);
         eb_printf(b, "  Directory of %s archive %s\n",
                   atp->name, b->filename);
@@ -276,6 +277,7 @@
     buf_size = file_read_block(b, f, buf, sizeof(buf));
     ctp = find_compress_type(b->filename, buf, buf_size);
     if (ctp) {
+        b->data_type_name = ctp->name;
         eb_clear(b);
         qe_shell_subst(cmd, sizeof(cmd), ctp->load_cmd, b->filename, NULL);
         new_shell_buffer(b, get_basename(b->filename), NULL, cmd,

Index: buffer.c
===================================================================
RCS file: /sources/qemacs/qemacs/buffer.c,v
retrieving revision 1.89
retrieving revision 1.90
diff -u -b -r1.89 -r1.90
--- buffer.c    24 Aug 2015 12:59:25 -0000      1.89
+++ buffer.c    25 Aug 2015 16:19:42 -0000      1.90
@@ -558,13 +558,12 @@
 }
 
 /* flush the log */
-void log_reset(EditBuffer *b)
+void eb_free_log_buffer(EditBuffer *b)
 {
     eb_free(&b->log_buffer);
     b->log_new_index = 0;
     b->log_current = 0;
     b->nb_logs = 0;
-    b->modified = 0;    /* ??? */
 }
 
 /* rename a buffer and add characters so that the name is unique */
@@ -662,7 +661,7 @@
     b->save_log = 0;
     b->last_log = 0;
     eb_delete(b, 0, b->total_size);
-    log_reset(b);
+    eb_free_log_buffer(b);
 
     eb_munmap_buffer(b);
 
@@ -671,6 +670,7 @@
         close(b->map_handle);
     }
     b->map_handle = 0;
+    b->modified = 0;
 
     /* TODO: clear buffer structure */
     //memset(b, 0, offsetof(EditBuffer, remanent_area));
@@ -1738,7 +1738,7 @@
 #endif
 
 /* CG: returns number of bytes read, or -1 upon read error */
-int raw_buffer_load1(EditBuffer *b, FILE *f, int offset)
+int eb_raw_buffer_load1(EditBuffer *b, FILE *f, int offset)
 {
     unsigned char buf[IOBUF_SIZE];
     int len, size;
@@ -1837,7 +1837,7 @@
     }
 #endif
     if (st.st_size <= qs->max_load_size) {
-        return raw_buffer_load1(b, f, 0);
+        return eb_raw_buffer_load1(b, f, 0);
     }
     return -1;
 }
@@ -2407,7 +2407,7 @@
 #endif
     /* reset log */
     /* CG: should not do this! */
-    //log_reset(b);
+    //eb_free_log_buffer(b);
     b->modified = 0;
     return ret;
 }
@@ -2417,7 +2417,8 @@
 {
     b->save_log = 0;
     eb_delete(b, 0, b->total_size);
-    log_reset(b);
+    eb_free_log_buffer(b);
+    b->modified = 0;
 }
 
 EditBufferDataType raw_data_type = {

Index: qe.h
===================================================================
RCS file: /sources/qemacs/qemacs/qe.h,v
retrieving revision 1.202
retrieving revision 1.203
diff -u -b -r1.202 -r1.203
--- qe.h        19 Aug 2015 20:33:01 -0000      1.202
+++ qe.h        25 Aug 2015 16:19:43 -0000      1.203
@@ -881,6 +881,7 @@
 
     /* buffer data type (default is raw) */
     ModeDef *data_mode;
+    const char *data_type_name;
     EditBufferDataType *data_type;
     void *data_data;    /* associated buffer data, used if data_type != 
raw_data */
     void *priv_data;    /* buffer polling & private data */
@@ -925,11 +926,12 @@
     int probed;
 #endif
 
-    /* saved data from the last opened mode, needed to restore mode */
-    /* CG: should instead keep a pointer to last window using this
-     * buffer, even if no longer on screen
-     */
     ModeDef *default_mode;
+
+    /* Saved window data from the last closed window attached to this buffer.
+     * Used to restore mode and position when buffer gets re-attached
+     * to the same window.
+     */
     ModeDef *saved_mode;
     OWNED ModeSavedData *saved_data;
 
@@ -974,7 +976,7 @@
 int eb_delete(EditBuffer *b, int offset, int size);
 void eb_replace(EditBuffer *b, int offset, int size,
                 const void *buf, int size1);
-void log_reset(EditBuffer *b);
+void eb_free_log_buffer(EditBuffer *b);
 EditBuffer *eb_new(const char *name, int flags);
 EditBuffer *eb_scratch(const char *name, int flags);
 void eb_clear(EditBuffer *b);
@@ -1003,7 +1005,7 @@
 void do_undo(EditState *s);
 void do_redo(EditState *s);
 
-int raw_buffer_load1(EditBuffer *b, FILE *f, int offset);
+int eb_raw_buffer_load1(EditBuffer *b, FILE *f, int offset);
 int eb_mmap_buffer(EditBuffer *b, const char *filename);
 void eb_munmap_buffer(EditBuffer *b);
 int eb_write_buffer(EditBuffer *b, int start, int end, const char *filename);
@@ -1178,9 +1180,10 @@
 
     /* mode specific info */
     ModeDef *mode;
-    void *mode_data; /* mode private data */
+    OWNED void *mode_data; /* mode private window based data */
 
     /* state before line n, one short per line */
+    /* XXX: move this to buffer based mode_data */
     unsigned short *colorize_states;
     int colorize_nb_lines;
     int colorize_nb_valid_lines;

Index: bufed.c
===================================================================
RCS file: /sources/qemacs/qemacs/bufed.c,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -b -r1.36 -r1.37
--- bufed.c     19 Aug 2015 19:20:57 -0000      1.36
+++ bufed.c     25 Aug 2015 16:19:43 -0000      1.37
@@ -89,7 +89,9 @@
         eb_printf(b, " %-2s%-16s", flags, bs->items.items[i]->str);
         if (b1) {
             char path[MAX_FILENAME_SIZE];
+            char mode_buf[64];
             const char *mode_name;
+            buf_t outbuf, *out;
 
             if (b1->flags & BF_IS_LOG) {
                 mode_name = "log";
@@ -108,10 +110,15 @@
             } else {
                 mode_name = "none";
             }
+            out = buf_init(&outbuf, mode_buf, sizeof(mode_buf));
+            if (b1->data_type_name) {
+                buf_printf(out, "%s+", b1->data_type_name);
+            }
+            buf_puts(out, mode_name);
 
             eb_printf(b, " %10d %1.0d %-8s %-8s %s",
                       b1->total_size, b1->style_bytes & 7,
-                      b1->charset->name, mode_name,
+                      b1->charset->name, mode_buf,
                       make_user_path(path, sizeof(path), b1->filename));
         }
         eb_printf(b, "\n");

Index: qe.c
===================================================================
RCS file: /sources/qemacs/qemacs/qe.c,v
retrieving revision 1.205
retrieving revision 1.206
diff -u -b -r1.205 -r1.206
--- qe.c        19 Aug 2015 20:33:01 -0000      1.205
+++ qe.c        25 Aug 2015 16:19:43 -0000      1.206
@@ -1939,10 +1939,12 @@
                 /* non raw data type: we must call a mode specific
                    load method */
                 b->data_type = m->data_type;
+                b->data_type_name = m->data_type->name;
                 if (reload_buffer(s, b, f1) < 0) {
                     /* error: reset to text mode */
                     m = &text_mode;
                     b->data_type = &raw_data_type;
+                    b->data_type_name = NULL;
                 }
             } else
             if (b->data_type != m->data_type) {
@@ -2351,9 +2353,12 @@
     else
         state = '-';
 
-    buf_printf(out, "%c%c:%c%c  %-20s  (%s",
+    buf_printf(out, "%c%c:%c%c  %-20s  (",
                c1, state, s->b->flags & BF_READONLY ? '%' : mod,
-               mod, s->b->name, s->mode ? s->mode->name : "raw");
+               mod, s->b->name);
+    if (s->b->data_type_name)
+        buf_printf(out, "%s+", s->b->data_type_name);
+    buf_puts(out, s->mode ? s->mode->name : "raw");
     if (!s->insert)
         buf_puts(out, " Ovwrt");
     if (s->interactive)
@@ -4368,6 +4373,7 @@
     CSSRect rect;
 
     /* set the clipping rectangle to the whole window */
+    /* XXX: should clip out popup windows */
     rect.x1 = s->xleft;
     rect.y1 = s->ytop;
     rect.x2 = rect.x1 + s->width;
@@ -6256,7 +6262,7 @@
     /* CG: should load in a separate buffer, auto-detect charset and
      * copy buffer contents with charset translation
      */
-    size = raw_buffer_load1(s->b, f, s->offset);
+    size = eb_raw_buffer_load1(s->b, f, s->offset);
     fclose(f);
 
     /* mark the insert chunk */

Index: shell.c
===================================================================
RCS file: /sources/qemacs/qemacs/shell.c,v
retrieving revision 1.97
retrieving revision 1.98
diff -u -b -r1.97 -r1.98
--- shell.c     19 Aug 2015 19:20:58 -0000      1.97
+++ shell.c     25 Aug 2015 16:19:43 -0000      1.98
@@ -1548,6 +1548,7 @@
     if (!b)
         return;
 
+    b->data_type_name = "man";
     b->flags |= BF_READONLY;
     switch_to_buffer(s, b);
     edit_set_mode(s, &pager_mode);
@@ -1569,6 +1570,7 @@
     if (!b)
         return;
 
+    b->data_type_name = "ssh";
     b->default_mode = &shell_mode;
     switch_to_buffer(s, b);
     //edit_set_mode(s, &shell_mode);
@@ -1789,6 +1791,7 @@
     if (!b)
         return;
 
+    b->data_type_name = "compile";
     /* XXX: try to split window if necessary */
     switch_to_buffer(e, b);
     edit_set_mode(e, &pager_mode);



reply via email to

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