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