From 913db834d284c32a1b843e01a11ed06b780d347e Mon Sep 17 00:00:00 2001 From: David Lawrence Ramsey Date: Wed, 5 Jan 2005 05:08:14 +0000 Subject: [PATCH] add DB's (modified) UTF-8 support tweaks to do_replace_highlight() git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2230 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 3 ++- src/winio.c | 13 ++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7cf25beb..f54e2538 100644 --- a/ChangeLog +++ b/ChangeLog @@ -58,7 +58,8 @@ CVS code - do_delete(), breakable(), break_line(), do_output(), get_buffer(), unget_input(), actual_x(), strnlenpt(), display_string(), titlebar(), statusbar(), onekey(), - edit_add(), and do_credits(). (David Benbennick and DLR) + edit_add(), do_replace_highlight(), and do_credits(). (David + Benbennick and DLR) - Overhaul the high-level input routines for the statusbar to make them read the shortcut lists for functions instead of manually running them, to make nanogetstr() less complex, and diff --git a/src/winio.c b/src/winio.c index d32403a2..2f1962b4 100644 --- a/src/winio.c +++ b/src/winio.c @@ -4063,12 +4063,17 @@ void do_help(void) void do_replace_highlight(bool highlight_flag, const char *word) { size_t y = xplustabs(); - size_t word_len = strlen(word); + size_t word_len = strlenpt(word); y = get_page_start(y) + COLS - y; - /* Now y is the number of characters we can display on this + /* Now y is the number of columns that we can display on this * line. */ + assert(y > 0); + + if (word_len > y) + y--; + reset_cursor(); if (highlight_flag) @@ -4080,12 +4085,10 @@ void do_replace_highlight(bool highlight_flag, const char *word) waddstr(edit, " "); else #endif - waddnstr(edit, word, y - 1); + waddnstr(edit, word, actual_x(word, y)); if (word_len > y) waddch(edit, '$'); - else if (word_len == y) - waddch(edit, word[word_len - 1]); if (highlight_flag) wattroff(edit, A_REVERSE);