simplified edit_set_mode API, display mode in bufed
This commit is contained in:
parent
a3286d64ba
commit
7759a1467a
5 changed files with 39 additions and 24 deletions
25
bufed.c
25
bufed.c
|
|
@ -66,13 +66,28 @@ static void build_bufed_list(EditState *s)
|
|||
*flagp++ = '%';
|
||||
}
|
||||
*flagp = '\0';
|
||||
eb_printf(b, " %-2s%-20s", flags, hs->items.items[i]->str);
|
||||
eb_printf(b, " %-2s%-16s", flags, hs->items.items[i]->str);
|
||||
if (b1) {
|
||||
char path[MAX_FILENAME_SIZE];
|
||||
const char *mode;
|
||||
EditState *e;
|
||||
|
||||
/* CG: should also display mode */
|
||||
eb_printf(b, " %-10s %10d %s",
|
||||
b1->charset->name, b1->total_size,
|
||||
if (b1->saved_data) {
|
||||
mode = b1->saved_data->mode->name;
|
||||
} else {
|
||||
mode = "none";
|
||||
for (e = qs->first_window; e != NULL; e = e->next_window) {
|
||||
if (e->b == b1) {
|
||||
if (e->mode) {
|
||||
mode = e->mode->name;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
eb_printf(b, " %10d %-8s %-8s %s",
|
||||
b1->total_size, b1->charset->name, mode,
|
||||
make_user_path(path, sizeof(path), b1->filename));
|
||||
}
|
||||
eb_printf(b, "\n");
|
||||
|
|
@ -191,7 +206,7 @@ static void do_list_buffers(EditState *s, int argval)
|
|||
|
||||
width = qs->width / 5;
|
||||
e = insert_window_left(b, width, WF_MODELINE);
|
||||
edit_set_mode(e, &bufed_mode, NULL);
|
||||
edit_set_mode(e, &bufed_mode);
|
||||
|
||||
bs = e->mode_data;
|
||||
if (argval != NO_ARG) {
|
||||
|
|
|
|||
2
dired.c
2
dired.c
|
|
@ -557,7 +557,7 @@ void do_dired(EditState *s)
|
|||
|
||||
width = qs->width / 5;
|
||||
e = insert_window_left(b, width, WF_MODELINE);
|
||||
edit_set_mode(e, &dired_mode, NULL);
|
||||
edit_set_mode(e, &dired_mode);
|
||||
|
||||
index = dired_find_target(e, target);
|
||||
e->offset = eb_goto_pos(e->b, index + DIRED_HEADER, 0);
|
||||
|
|
|
|||
24
qe.c
24
qe.c
|
|
@ -1607,7 +1607,7 @@ static int reload_buffer(EditState *s, EditBuffer *b, FILE *f1)
|
|||
}
|
||||
}
|
||||
|
||||
static void edit_set_mode_file(EditState *s, ModeDef *m,
|
||||
static void edit_set_mode_full(EditState *s, ModeDef *m,
|
||||
ModeSavedData *saved_data, FILE *f1)
|
||||
{
|
||||
int size, data_count;
|
||||
|
|
@ -1698,9 +1698,9 @@ static void edit_set_mode_file(EditState *s, ModeDef *m,
|
|||
qe_free(&saved_data);
|
||||
}
|
||||
|
||||
void edit_set_mode(EditState *s, ModeDef *m, ModeSavedData *saved_data)
|
||||
void edit_set_mode(EditState *s, ModeDef *m)
|
||||
{
|
||||
edit_set_mode_file(s, m, saved_data, NULL);
|
||||
edit_set_mode_full(s, m, NULL, NULL);
|
||||
}
|
||||
|
||||
void do_set_mode(EditState *s, const char *name)
|
||||
|
|
@ -1709,7 +1709,7 @@ void do_set_mode(EditState *s, const char *name)
|
|||
|
||||
m = find_mode(name);
|
||||
if (m)
|
||||
edit_set_mode(s, m, NULL);
|
||||
edit_set_mode(s, m);
|
||||
else
|
||||
put_status(s, "No mode %s", name);
|
||||
}
|
||||
|
|
@ -1744,7 +1744,7 @@ void do_next_mode(EditState *s)
|
|||
break;
|
||||
if (!m->mode_probe
|
||||
|| m->mode_probe(&probe_data) > 0) {
|
||||
edit_set_mode(s, m, 0);
|
||||
edit_set_mode(s, m);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -4480,7 +4480,7 @@ void switch_to_buffer(EditState *s, EditBuffer *b)
|
|||
b1->saved_data = s->mode->mode_save_data(s);
|
||||
}
|
||||
/* now we can close the mode */
|
||||
edit_set_mode(s, NULL, NULL);
|
||||
edit_set_mode(s, NULL);
|
||||
}
|
||||
|
||||
/* now we can switch ! */
|
||||
|
|
@ -4508,7 +4508,7 @@ void switch_to_buffer(EditState *s, EditBuffer *b)
|
|||
mode = &text_mode; /* default mode */
|
||||
|
||||
/* open it ! */
|
||||
edit_set_mode(s, mode, saved_data);
|
||||
edit_set_mode_full(s, mode, saved_data, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -4829,7 +4829,7 @@ void do_completion(EditState *s)
|
|||
h = (h1 * 3) / 4;
|
||||
e = edit_new(b, (w1 - w) / 2, (h1 - h) / 2, w, h, WF_POPUP);
|
||||
/* set list mode */
|
||||
edit_set_mode(e, &list_mode, NULL);
|
||||
edit_set_mode(e, &list_mode);
|
||||
do_refresh(e);
|
||||
completion_popup_window = e;
|
||||
}
|
||||
|
|
@ -5058,7 +5058,7 @@ void minibuffer_edit(const char *input, const char *prompt,
|
|||
s = edit_new(b, 0, qs->screen->height - qs->status_height,
|
||||
qs->screen->width, qs->status_height, 0);
|
||||
/* Should insert at end of window list */
|
||||
edit_set_mode(s, &minibuffer_mode, NULL);
|
||||
edit_set_mode(s, &minibuffer_mode);
|
||||
s->prompt = qe_strdup(prompt);
|
||||
s->minibuf = 1;
|
||||
s->bidir = 0;
|
||||
|
|
@ -5133,7 +5133,7 @@ void show_popup(EditBuffer *b)
|
|||
h = (h1 * 3) / 4;
|
||||
|
||||
s = edit_new(b, (w1 - w) / 2, (h1 - h) / 2, w, h, WF_POPUP);
|
||||
edit_set_mode(s, &less_mode, NULL);
|
||||
edit_set_mode(s, &less_mode);
|
||||
s->wrap = WRAP_TRUNCATE;
|
||||
|
||||
popup_saved_active = qs->active_window;
|
||||
|
|
@ -5459,7 +5459,7 @@ static void do_load1(EditState *s, const char *filename1,
|
|||
selected_mode = probe_mode(s, S_IFREG, buf, 0, 0);
|
||||
/* XXX: avoid loading file */
|
||||
if (selected_mode)
|
||||
edit_set_mode(s, selected_mode, NULL);
|
||||
edit_set_mode(s, selected_mode);
|
||||
return;
|
||||
} else {
|
||||
mode = st.st_mode;
|
||||
|
|
@ -5490,7 +5490,7 @@ static void do_load1(EditState *s, const char *filename1,
|
|||
eb_set_charset(b, detect_charset(buf, buf_size));
|
||||
|
||||
/* now we can set the mode */
|
||||
edit_set_mode_file(s, selected_mode, NULL, f);
|
||||
edit_set_mode_full(s, selected_mode, NULL, f);
|
||||
do_load_qerc(s, s->b->filename);
|
||||
|
||||
if (access(b->filename, W_OK)) {
|
||||
|
|
|
|||
2
qe.h
2
qe.h
|
|
@ -1553,7 +1553,7 @@ void do_split_window(EditState *s, int horiz);
|
|||
void edit_display(QEmacsState *qs);
|
||||
void edit_invalidate(EditState *s);
|
||||
void display_mode_line(EditState *s);
|
||||
void edit_set_mode(EditState *s, ModeDef *m, ModeSavedData *saved_data);
|
||||
void edit_set_mode(EditState *s, ModeDef *m);
|
||||
|
||||
/* loading files */
|
||||
void do_exit_qemacs(EditState *s, int argval);
|
||||
|
|
|
|||
8
shell.c
8
shell.c
|
|
@ -1498,7 +1498,7 @@ static void do_shell(EditState *s, int force)
|
|||
return;
|
||||
|
||||
switch_to_buffer(s, b);
|
||||
edit_set_mode(s, &shell_mode, NULL);
|
||||
edit_set_mode(s, &shell_mode);
|
||||
|
||||
put_status(s, "Press C-o to toggle between shell/edit mode");
|
||||
}
|
||||
|
|
@ -1523,7 +1523,7 @@ static void do_man(EditState *s, const char *arg)
|
|||
|
||||
b->flags |= BF_READONLY;
|
||||
switch_to_buffer(s, b);
|
||||
edit_set_mode(s, &pager_mode, NULL);
|
||||
edit_set_mode(s, &pager_mode);
|
||||
}
|
||||
|
||||
static void do_ssh(EditState *s, const char *arg)
|
||||
|
|
@ -1543,7 +1543,7 @@ static void do_ssh(EditState *s, const char *arg)
|
|||
return;
|
||||
|
||||
switch_to_buffer(s, b);
|
||||
edit_set_mode(s, &shell_mode, NULL);
|
||||
edit_set_mode(s, &shell_mode);
|
||||
|
||||
put_status(s, "Press C-o to toggle between shell/edit mode");
|
||||
}
|
||||
|
|
@ -1707,7 +1707,7 @@ static void do_compile(EditState *e, const char *cmd)
|
|||
/* XXX: try to split window if necessary */
|
||||
switch_to_buffer(e, b);
|
||||
/* XXX: pager_mode for colorized output, text mode should support color buffer */
|
||||
edit_set_mode(e, &pager_mode, NULL);
|
||||
edit_set_mode(e, &pager_mode);
|
||||
set_error_offset(b, 0);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue