diff --git a/bufed.c b/bufed.c index 4627c7b..e11776c 100644 --- a/bufed.c +++ b/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) { diff --git a/dired.c b/dired.c index 4b44a80..2ce44a5 100644 --- a/dired.c +++ b/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); diff --git a/qe.c b/qe.c index d5959f4..c9cdac2 100644 --- a/qe.c +++ b/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)) { diff --git a/qe.h b/qe.h index 1434524..2b13707 100644 --- a/qe.h +++ b/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); diff --git a/shell.c b/shell.c index 4058c97..56cdb94 100644 --- a/shell.c +++ b/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); }