qemacs-commit
[Top][All Lists]
Advanced

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

[Qemacs-commit] qemacs bufed.c


From: Charlie Gordon
Subject: [Qemacs-commit] qemacs bufed.c
Date: Mon, 03 Mar 2014 23:21:07 +0000

CVSROOT:        /sources/qemacs
Module name:    qemacs
Changes by:     Charlie Gordon <chqrlie>        14/03/03 23:21:07

Modified files:
        .              : bufed.c 

Log message:
        Fix inconsistencies in buffer mode handling

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/bufed.c?cvsroot=qemacs&r1=1.25&r2=1.26

Patches:
Index: bufed.c
===================================================================
RCS file: /sources/qemacs/qemacs/bufed.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -b -r1.25 -r1.26
--- bufed.c     10 Feb 2014 21:21:39 -0000      1.25
+++ bufed.c     3 Mar 2014 23:21:07 -0000       1.26
@@ -36,14 +36,16 @@
 
 static ModeDef bufed_mode;
 
-static BufedState *bufed_get_state(EditState *s)
+static BufedState *bufed_get_state(EditState *s, int status)
 {
     BufedState *bs = s->b->priv_data;
 
     if (bs && bs->signature == &bufed_signature)
         return bs;
 
+    if (status)
     put_status(s, "Not a bufed buffer");
+
     return NULL;
 }
 
@@ -55,7 +57,7 @@
     int last_index = list_get_pos(s);
     int i;
 
-    if (!(bs = bufed_get_state(s)))
+    if (!(bs = bufed_get_state(s, 1)))
         return;
 
     free_strings(&bs->items);
@@ -66,8 +68,7 @@
 
     /* build buffer */
     b = s->b;
-    b->flags &= ~BF_READONLY;
-    eb_delete(b, 0, b->total_size);
+    eb_clear(b);
 
     for (i = 0; i < bs->items.nb_items; i++) {
         EditBuffer *b1 = eb_find(bs->items.items[i]->str);
@@ -126,7 +127,7 @@
     BufedState *bs;
     int index;
 
-    if (!(bs = bufed_get_state(s)))
+    if (!(bs = bufed_get_state(s, 1)))
         return NULL;
 
     index = list_get_pos(s);
@@ -144,7 +145,7 @@
     EditState *e;
     int index;
 
-    if (!(bs = bufed_get_state(s)))
+    if (!(bs = bufed_get_state(s, 1)))
         return;
 
     index = list_get_pos(s);
@@ -215,7 +216,7 @@
 {
     BufedState *bs;
 
-    if (!(bs = bufed_get_state(s)))
+    if (!(bs = bufed_get_state(s, 1)))
         return;
 
     string_selection_iterate(&bs->items, list_get_pos(s),
@@ -236,23 +237,27 @@
      * s may be destroyed by insert_window_left
      * CG: remove this kludge once we have delayed EditState free
      */
-    b0 = s->b;
+    b = b0 = s->b;
 
+    if ((bs = bufed_get_state(s, 0)) == NULL) {
     /* XXX: must close this buffer when destroying window: add a
        special buffer flag to tell this */
     b = eb_scratch("*bufed*", BF_READONLY | BF_SYSTEM | BF_UTF8);
+    }
 
     width = qs->width / 5;
     e = insert_window_left(b, width, WF_MODELINE);
     edit_set_mode(e, &bufed_mode);
 
-    if (!(bs = bufed_get_state(e)))
+    if (!(bs = bufed_get_state(e, 1)))
         return;
 
-    if (argval != NO_ARG) {
+    if (argval == NO_ARG) {
+        bs->flags &= ~BUFED_ALL_VISIBLE;
+    } else {
         bs->flags |= BUFED_ALL_VISIBLE;
-        build_bufed_list(e);
     }
+    build_bufed_list(e);
 
     e1 = find_window(e, KEY_RIGHT);
     if (e1)
@@ -298,7 +303,7 @@
 {
     BufedState *bs;
 
-    if (!(bs = bufed_get_state(s)))
+    if (!(bs = bufed_get_state(s, 1)))
         return;
 
     if (toggle)
@@ -332,11 +337,13 @@
 {
     BufedState *bs = b->priv_data;
 
-    if (bs) {
+    if (bs && bs->signature == &bufed_signature) {
         free_strings(&bs->items);
     }
 
     qe_free(&b->priv_data);
+    if (b->close == bufed_close)
+        b->close = NULL;
 }
 
 static int bufed_mode_init(EditState *s, ModeSavedData *saved_data)
@@ -358,18 +365,10 @@
         bs->signature = &bufed_signature;
         s->b->priv_data = bs;
         s->b->close = bufed_close;
-
-        /* XXX: should be built by buffer_load API */
-        build_bufed_list(s);
     }
     return 0;
 }
 
-static void bufed_mode_close(EditState *s)
-{
-    list_mode.mode_close(s);
-}
-
 /* specific bufed commands */
 static CmdDef bufed_commands[] = {
     CMD1( KEY_RET, KEY_RIGHT,
@@ -412,7 +411,6 @@
     bufed_mode.name = "bufed";
     bufed_mode.mode_probe = bufed_mode_probe;
     bufed_mode.mode_init = bufed_mode_init;
-    bufed_mode.mode_close = bufed_mode_close;
     /* CG: not a good idea, display hook has side effect on layout */
     bufed_mode.display_hook = bufed_display_hook;
 



reply via email to

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