mirror of
https://github.com/irssi/irssi.git
synced 2026-08-14 06:02:16 +02:00
Merge remote-tracking branch 'origin/master' into bracketed-paste
This commit is contained in:
commit
8c98e07eab
23 changed files with 159 additions and 75 deletions
|
|
@ -35,21 +35,21 @@ static unichar i_toupper(unichar c)
|
|||
{
|
||||
if (term_type == TERM_TYPE_UTF8)
|
||||
return g_unichar_toupper(c);
|
||||
return (c >= 0 && c <= 255) ? toupper(c) : c;
|
||||
return c <= 255 ? toupper(c) : c;
|
||||
}
|
||||
|
||||
static unichar i_tolower(unichar c)
|
||||
{
|
||||
if (term_type == TERM_TYPE_UTF8)
|
||||
return g_unichar_tolower(c);
|
||||
return (c >= 0 && c <= 255) ? tolower(c) : c;
|
||||
return c <= 255 ? tolower(c) : c;
|
||||
}
|
||||
|
||||
static int i_isalnum(unichar c)
|
||||
{
|
||||
if (term_type == TERM_TYPE_UTF8)
|
||||
return (g_unichar_isalnum(c) || mk_wcwidth(c) == 0);
|
||||
return (c >= 0 && c <= 255) ? isalnum(c) : 0;
|
||||
return c <= 255 ? isalnum(c) : 0;
|
||||
}
|
||||
|
||||
GUI_ENTRY_REC *active_entry;
|
||||
|
|
|
|||
|
|
@ -220,16 +220,15 @@ static void sig_gui_print_text(WINDOW_REC *window, void *fgcolor,
|
|||
get_colors(flags, &fg, &bg, &attr);
|
||||
|
||||
if (window == NULL) {
|
||||
g_return_if_fail(next_xpos != -1);
|
||||
g_return_if_fail(next_xpos != -1);
|
||||
|
||||
term_set_color2(root_window, attr, fg, bg);
|
||||
|
||||
term_move(root_window, next_xpos, next_ypos);
|
||||
if (flags & GUI_PRINT_FLAG_CLRTOEOL)
|
||||
term_clrtoeol(root_window);
|
||||
term_addstr(root_window, str);
|
||||
next_xpos += strlen(str); /* FIXME utf8 or big5 */
|
||||
return;
|
||||
next_xpos += term_addstr(root_window, str);
|
||||
return;
|
||||
}
|
||||
|
||||
lineinfo.level = dest == NULL ? 0 : dest->level;
|
||||
|
|
|
|||
|
|
@ -1126,6 +1126,8 @@ void gui_readline_init(void)
|
|||
key_bind("key", NULL, "meta2-5F", "cend", (SIGNAL_FUNC) key_combo);
|
||||
key_bind("key", NULL, "meta2-1;5F", "cend", (SIGNAL_FUNC) key_combo);
|
||||
|
||||
key_bind("key", NULL, "meta-O-M", "return", (SIGNAL_FUNC) key_combo);
|
||||
|
||||
key_bind("paste_start", "Bracketed paste start", "meta2-200~", "paste_start", (SIGNAL_FUNC) key_paste_start);
|
||||
|
||||
/* cursor movement */
|
||||
|
|
|
|||
|
|
@ -522,15 +522,36 @@ void term_add_unichar(TERM_WINDOW *window, unichar chr)
|
|||
}
|
||||
}
|
||||
|
||||
void term_addstr(TERM_WINDOW *window, const char *str)
|
||||
int term_addstr(TERM_WINDOW *window, const char *str)
|
||||
{
|
||||
int len;
|
||||
int len, raw_len;
|
||||
unichar tmp;
|
||||
const char *ptr;
|
||||
|
||||
if (vcmove) term_move_real();
|
||||
len = strlen(str); /* FIXME utf8 or big5 */
|
||||
|
||||
len = 0;
|
||||
raw_len = strlen(str);
|
||||
|
||||
/* The string length depends on the terminal encoding */
|
||||
|
||||
ptr = str;
|
||||
|
||||
if (term_type == TERM_TYPE_UTF8) {
|
||||
while (*ptr != '\0') {
|
||||
tmp = g_utf8_get_char(ptr);
|
||||
len += unichar_isprint(tmp) ? mk_wcwidth(tmp) : 1;
|
||||
ptr = g_utf8_next_char(ptr);
|
||||
}
|
||||
} else
|
||||
len = raw_len;
|
||||
|
||||
term_printed_text(len);
|
||||
|
||||
fwrite(str, 1, len, window->term->out);
|
||||
/* Use strlen() here since we need the number of raw bytes */
|
||||
fwrite(str, 1, raw_len, window->term->out);
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
void term_clrtoeol(TERM_WINDOW *window)
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ void term_set_color(TERM_WINDOW *window, int col);
|
|||
void term_move(TERM_WINDOW *window, int x, int y);
|
||||
void term_addch(TERM_WINDOW *window, char chr);
|
||||
void term_add_unichar(TERM_WINDOW *window, unichar chr);
|
||||
void term_addstr(TERM_WINDOW *window, const char *str);
|
||||
int term_addstr(TERM_WINDOW *window, const char *str);
|
||||
void term_clrtoeol(TERM_WINDOW *window);
|
||||
|
||||
void term_move_cursor(int x, int y);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue