Now that a UTF-8-capable puts function exists, use it for printing strings in

choice/more modes - lines with UTF-8 now display properly in find-window
results.
pull/1/head
Nicholas Marriott 2009-06-25 16:05:00 +00:00
parent 3ec8efc803
commit a03ae97fbf
2 changed files with 10 additions and 7 deletions

View File

@ -1,4 +1,4 @@
/* $Id: window-choose.c,v 1.14 2009-05-04 17:58:27 nicm Exp $ */
/* $OpenBSD: window-choose.c,v 1.2 2009/06/24 23:00:31 nicm Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
@ -285,10 +285,12 @@ window_choose_write_line(
struct window_choose_mode_item *item;
struct screen *s = &data->screen;
struct grid_cell gc;
int utf8flag;
if (data->callback == NULL)
fatalx("called before callback assigned");
utf8flag = options_get_number(&wp->window->options, "utf8");
memcpy(&gc, &grid_default_cell, sizeof gc);
if (data->selected == data->top + py) {
gc.fg = options_get_number(&wp->window->options, "mode-bg");
@ -299,12 +301,11 @@ window_choose_write_line(
screen_write_cursormove(ctx, 0, py);
if (data->top + py < ARRAY_LENGTH(&data->list)) {
item = &ARRAY_ITEM(&data->list, data->top + py);
screen_write_puts(
ctx, &gc, "%.*s", (int) screen_size_x(s), item->name);
screen_write_nputs(
ctx, screen_size_x(s) - 1, &gc, utf8flag, "%s", item->name);
}
while (s->cx < screen_size_x(s))
screen_write_putc(ctx, &gc, ' ');
}
void

View File

@ -1,4 +1,4 @@
/* $Id: window-more.c,v 1.29 2009-02-13 21:39:45 nicm Exp $ */
/* $OpenBSD: window-more.c,v 1.2 2009/06/24 23:00:31 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@ -175,7 +175,9 @@ window_more_write_line(
struct grid_cell gc;
char *msg, hdr[32];
size_t size;
int utf8flag;
utf8flag = options_get_number(&wp->window->options, "utf8");
memcpy(&gc, &grid_default_cell, sizeof gc);
if (py == 0) {
@ -193,8 +195,8 @@ window_more_write_line(
screen_write_cursormove(ctx, 0, py);
if (data->top + py < ARRAY_LENGTH(&data->list)) {
msg = ARRAY_ITEM(&data->list, data->top + py);
screen_write_puts(
ctx, &gc, "%.*s", (int) (screen_size_x(s) - size), msg);
screen_write_nputs(
ctx, screen_size_x(s) - 1 - size, &gc, utf8flag, "%s", msg);
}
while (s->cx < screen_size_x(s) - size)
screen_write_putc(ctx, &gc, ' ');