[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;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemacs-commit] qemacs bufed.c,
Charlie Gordon <=