mirror of
https://github.com/profanity-im/profanity.git
synced 2024-12-04 14:46:46 -05:00
Merge pull request #1690 from paulfertser/symbol-for-embedded-newlines
Show return symbol for embedded newlines
This commit is contained in:
commit
7bba72764a
@ -9511,13 +9511,6 @@ cmd_change_password(ProfWin* window, const char* const command, gchar** args)
|
|||||||
gboolean
|
gboolean
|
||||||
cmd_editor(ProfWin* window, const char* const command, gchar** args)
|
cmd_editor(ProfWin* window, const char* const command, gchar** args)
|
||||||
{
|
{
|
||||||
jabber_conn_status_t conn_status = connection_get_status();
|
|
||||||
|
|
||||||
if (conn_status != JABBER_CONNECTED) {
|
|
||||||
cons_show("You are currently not connected.");
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
gchar* message = NULL;
|
gchar* message = NULL;
|
||||||
|
|
||||||
if (get_message_from_editor(NULL, &message)) {
|
if (get_message_from_editor(NULL, &message)) {
|
||||||
|
@ -95,6 +95,7 @@ static int _inp_edited(const wint_t ch);
|
|||||||
static void _inp_win_handle_scroll(void);
|
static void _inp_win_handle_scroll(void);
|
||||||
static int _inp_offset_to_col(char* str, int offset);
|
static int _inp_offset_to_col(char* str, int offset);
|
||||||
static void _inp_write(char* line, int offset);
|
static void _inp_write(char* line, int offset);
|
||||||
|
static void _inp_redisplay(void);
|
||||||
|
|
||||||
static void _inp_rl_addfuncs(void);
|
static void _inp_rl_addfuncs(void);
|
||||||
static int _inp_rl_getc(FILE* stream);
|
static int _inp_rl_getc(FILE* stream);
|
||||||
@ -149,6 +150,7 @@ create_input_window(void)
|
|||||||
rl_readline_name = "profanity";
|
rl_readline_name = "profanity";
|
||||||
_inp_rl_addfuncs();
|
_inp_rl_addfuncs();
|
||||||
rl_getc_function = _inp_rl_getc;
|
rl_getc_function = _inp_rl_getc;
|
||||||
|
rl_redisplay_function = _inp_redisplay;
|
||||||
rl_startup_hook = _inp_rl_startup_hook;
|
rl_startup_hook = _inp_rl_startup_hook;
|
||||||
rl_callback_handler_install(NULL, _inp_rl_linehandler);
|
rl_callback_handler_install(NULL, _inp_rl_linehandler);
|
||||||
|
|
||||||
@ -190,9 +192,6 @@ inp_readline(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ui_reset_idle_time();
|
ui_reset_idle_time();
|
||||||
if (!get_password) {
|
|
||||||
_inp_write(rl_line_buffer, rl_point);
|
|
||||||
}
|
|
||||||
inp_nonblocking(TRUE);
|
inp_nonblocking(TRUE);
|
||||||
} else {
|
} else {
|
||||||
inp_nonblocking(FALSE);
|
inp_nonblocking(FALSE);
|
||||||
@ -320,9 +319,39 @@ _inp_win_update_virtual(void)
|
|||||||
static void
|
static void
|
||||||
_inp_write(char* line, int offset)
|
_inp_write(char* line, int offset)
|
||||||
{
|
{
|
||||||
|
int x;
|
||||||
|
int y __attribute__((unused));
|
||||||
int col = _inp_offset_to_col(line, offset);
|
int col = _inp_offset_to_col(line, offset);
|
||||||
werase(inp_win);
|
werase(inp_win);
|
||||||
waddstr(inp_win, line);
|
|
||||||
|
waddstr(inp_win, rl_display_prompt);
|
||||||
|
getyx(inp_win, y, x);
|
||||||
|
col += x;
|
||||||
|
|
||||||
|
for (size_t i = 0; line[i] != '\0'; i++) {
|
||||||
|
char* c = &line[i];
|
||||||
|
char retc[MB_CUR_MAX];
|
||||||
|
|
||||||
|
size_t ch_len = mbrlen(c, MB_CUR_MAX, NULL);
|
||||||
|
if ((ch_len == (size_t)-2) || (ch_len == (size_t)-1)) {
|
||||||
|
waddch(inp_win, ' ');
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (line[i] == '\n') {
|
||||||
|
c = retc;
|
||||||
|
ch_len = wctomb(retc, L'\u23ce'); /* return symbol */
|
||||||
|
if (ch_len == -1) { /* not representable */
|
||||||
|
retc[0] = '\\';
|
||||||
|
ch_len = 1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
i += ch_len - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
waddnstr(inp_win, c, ch_len);
|
||||||
|
}
|
||||||
|
|
||||||
wmove(inp_win, 0, col);
|
wmove(inp_win, 0, col);
|
||||||
_inp_win_handle_scroll();
|
_inp_win_handle_scroll();
|
||||||
|
|
||||||
@ -578,6 +607,14 @@ _inp_rl_getc(FILE* stream)
|
|||||||
return ch;
|
return ch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_inp_redisplay(void)
|
||||||
|
{
|
||||||
|
if (!get_password) {
|
||||||
|
_inp_write(rl_line_buffer, rl_point);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
_inp_rl_win_clear_handler(int count, int key)
|
_inp_rl_win_clear_handler(int count, int key)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user