Ejemplo n.º 1
0
/* show a list of buffers */
static void do_list_buffers(EditState *s)
{
    QEmacsState *qs = s->qe_state;
    BufedState *bs;
    EditBuffer *b;
    EditState *e;
    int width, i;

    /* XXX: must close this buffer when destroying window: add a
       special buffer flag to tell this */
    b = eb_new("*bufed*", BF_READONLY | BF_SYSTEM);

    width = qs->width / 4;
    e = insert_window_left(b, width, WF_MODELINE);
    do_set_mode(e, &bufed_mode, NULL);

    bs = e->mode_data;

    /* if active buffer is found, go directly on it */
    for(i=0;i<bs->items.nb_items;i++) {
        if (!strcmp(bs->items.items[i]->str, s->b->name)) {
            e->offset = eb_goto_pos(e->b, i, 0);
            break;
        }
    }

    /* modify active window */
    qs->active_window = e;
}
Ejemplo n.º 2
0
/* show a list of buffers */
static void do_list_buffers(EditState *s, int argval)
{
    QEmacsState *qs = s->qe_state;
    BufedState *bs;
    EditBuffer *b, *b0;
    EditState *e, *e1;
    int width, i;

    /* remember current buffer for target positioning, because
     * s may be destroyed by insert_window_left
     * CG: remove this kludge once we have delayed EditState free
     */
    b0 = s->b;

    /* 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, NULL);

    bs = e->mode_data;
    if (argval != NO_ARG) {
        bs->flags |= BUFED_ALL_VISIBLE;
        build_bufed_list(e);
    }

    e1 = find_window(e, KEY_RIGHT);
    if (e1)
        b0 = e1->b;

    /* if active buffer is found, go directly on it */
    for (i = 0; i < bs->items.nb_items; i++) {
        if (strequal(bs->items.items[i]->str, b0->name)) {
            e->offset = eb_goto_pos(e->b, i, 0);
            break;
        }
    }

    /* modify active window */
    qs->active_window = e;
}