summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/wee-input.c7
-rw-r--r--src/core/wee-upgrade.c3
-rw-r--r--src/gui/gui-buffer.c36
-rw-r--r--src/gui/gui-buffer.h2
-rw-r--r--src/gui/gui-input.c3
5 files changed, 42 insertions, 9 deletions
diff --git a/src/core/wee-input.c b/src/core/wee-input.c
index e90e31650..efbea6766 100644
--- a/src/core/wee-input.c
+++ b/src/core/wee-input.c
@@ -194,8 +194,7 @@ input_data (struct t_gui_buffer *buffer, const char *data)
rc = WEECHAT_RC_OK;
- if (!buffer || !gui_buffer_valid (buffer)
- || !data || !data[0] || (data[0] == '\r') || (data[0] == '\n'))
+ if (!buffer || !gui_buffer_valid (buffer) || !data)
{
return WEECHAT_RC_ERROR;
}
@@ -213,12 +212,12 @@ input_data (struct t_gui_buffer *buffer, const char *data)
data);
/* data was dropped? */
- if (new_data && !new_data[0])
+ if (data[0] && new_data && !new_data[0])
goto end;
first_command = 1;
ptr_data = (new_data) ? new_data : data;
- while (ptr_data && ptr_data[0])
+ while (ptr_data)
{
/*
* if the buffer pointer is not valid any more (or if it's another
diff --git a/src/core/wee-upgrade.c b/src/core/wee-upgrade.c
index 3dbf05272..5da9074a8 100644
--- a/src/core/wee-upgrade.c
+++ b/src/core/wee-upgrade.c
@@ -509,6 +509,9 @@ upgrade_weechat_read_buffer (struct t_infolist *infolist)
ptr_buffer->input = infolist_integer (infolist, "input");
ptr_buffer->input_get_unknown_commands =
infolist_integer (infolist, "input_get_unknown_commands");
+ ptr_buffer->input_get_empty =
+ infolist_integer (infolist, "input_get_empty");
+
if (infolist_integer (infolist, "input_buffer_alloc") > 0)
{
ptr_buffer->input_buffer =
diff --git a/src/gui/gui-buffer.c b/src/gui/gui-buffer.c
index f30a78db7..f2dbb5d30 100644
--- a/src/gui/gui-buffer.c
+++ b/src/gui/gui-buffer.c
@@ -84,9 +84,9 @@ char *gui_buffer_properties_get_integer[] =
"nicklist_case_sensitive", "nicklist_max_length", "nicklist_display_groups",
"nicklist_count", "nicklist_groups_count", "nicklist_nicks_count",
"nicklist_visible_count", "input", "input_get_unknown_commands",
- "input_size", "input_length", "input_pos", "input_1st_display",
- "num_history", "text_search", "text_search_exact", "text_search_regex",
- "text_search_where", "text_search_found",
+ "input_get_empty", "input_size", "input_length", "input_pos",
+ "input_1st_display", "num_history", "text_search", "text_search_exact",
+ "text_search_regex", "text_search_where", "text_search_found",
NULL
};
char *gui_buffer_properties_get_string[] =
@@ -107,7 +107,7 @@ char *gui_buffer_properties_set[] =
"highlight_words_del", "highlight_regex", "highlight_tags_restrict",
"highlight_tags", "hotlist_max_level_nicks", "hotlist_max_level_nicks_add",
"hotlist_max_level_nicks_del", "input", "input_pos",
- "input_get_unknown_commands",
+ "input_get_unknown_commands", "input_get_empty",
NULL
};
@@ -661,6 +661,7 @@ gui_buffer_new (struct t_weechat_plugin *plugin,
new_buffer->input_callback_pointer = input_callback_pointer;
new_buffer->input_callback_data = input_callback_data;
new_buffer->input_get_unknown_commands = 0;
+ new_buffer->input_get_empty = 0;
gui_buffer_input_buffer_init (new_buffer);
/* undo for input */
@@ -1063,6 +1064,8 @@ gui_buffer_get_integer (struct t_gui_buffer *buffer, const char *property)
return buffer->input;
else if (string_strcasecmp (property, "input_get_unknown_commands") == 0)
return buffer->input_get_unknown_commands;
+ else if (string_strcasecmp (property, "input_get_empty") == 0)
+ return buffer->input_get_empty;
else if (string_strcasecmp (property, "input_size") == 0)
return buffer->input_buffer_size;
else if (string_strcasecmp (property, "input_length") == 0)
@@ -1761,6 +1764,20 @@ gui_buffer_set_input_get_unknown_commands (struct t_gui_buffer *buffer,
}
/*
+ * Sets flag "input_get_empty" for a buffer.
+ */
+
+void
+gui_buffer_set_input_get_empty (struct t_gui_buffer *buffer,
+ int input_get_empty)
+{
+ if (!buffer)
+ return;
+
+ buffer->input_get_empty = (input_get_empty) ? 1 : 0;
+}
+
+/*
* Sets unread marker for a buffer.
*/
@@ -2025,6 +2042,13 @@ gui_buffer_set (struct t_gui_buffer *buffer, const char *property,
if (error && !error[0])
gui_buffer_set_input_get_unknown_commands (buffer, number);
}
+ else if (string_strcasecmp (property, "input_get_empty") == 0)
+ {
+ error = NULL;
+ number = strtol (value, &error, 10);
+ if (error && !error[0])
+ gui_buffer_set_input_get_empty (buffer, number);
+ }
else if (string_strncasecmp (property, "localvar_set_", 13) == 0)
{
if (value)
@@ -4125,6 +4149,7 @@ gui_buffer_hdata_buffer_cb (const void *pointer, void *data,
HDATA_VAR(struct t_gui_buffer, input_callback_pointer, POINTER, 0, NULL, NULL);
HDATA_VAR(struct t_gui_buffer, input_callback_data, POINTER, 0, NULL, NULL);
HDATA_VAR(struct t_gui_buffer, input_get_unknown_commands, INTEGER, 0, NULL, NULL);
+ HDATA_VAR(struct t_gui_buffer, input_get_empty, INTEGER, 0, NULL, NULL);
HDATA_VAR(struct t_gui_buffer, input_buffer, STRING, 0, NULL, NULL);
HDATA_VAR(struct t_gui_buffer, input_buffer_alloc, INTEGER, 0, NULL, NULL);
HDATA_VAR(struct t_gui_buffer, input_buffer_size, INTEGER, 0, NULL, NULL);
@@ -4321,6 +4346,8 @@ gui_buffer_add_to_infolist (struct t_infolist *infolist,
return 0;
if (!infolist_new_var_integer (ptr_item, "input_get_unknown_commands", buffer->input_get_unknown_commands))
return 0;
+ if (!infolist_new_var_integer (ptr_item, "input_get_empty", buffer->input_get_empty))
+ return 0;
if (!infolist_new_var_string (ptr_item, "input_buffer", buffer->input_buffer))
return 0;
if (!infolist_new_var_integer (ptr_item, "input_buffer_alloc", buffer->input_buffer_alloc))
@@ -4532,6 +4559,7 @@ gui_buffer_print_log ()
log_printf (" input_callback_pointer. : 0x%lx", ptr_buffer->input_callback_pointer);
log_printf (" input_callback_data . . : 0x%lx", ptr_buffer->input_callback_data);
log_printf (" input_get_unknown_cmd . : %d", ptr_buffer->input_get_unknown_commands);
+ log_printf (" input_get_empty . . . . : %d", ptr_buffer->input_get_empty);
log_printf (" input_buffer. . . . . . : '%s'", ptr_buffer->input_buffer);
log_printf (" input_buffer_alloc. . . : %d", ptr_buffer->input_buffer_alloc);
log_printf (" input_buffer_size . . . : %d", ptr_buffer->input_buffer_size);
diff --git a/src/gui/gui-buffer.h b/src/gui/gui-buffer.h
index 99aabcb6e..fe7cc9e9d 100644
--- a/src/gui/gui-buffer.h
+++ b/src/gui/gui-buffer.h
@@ -154,6 +154,8 @@ struct t_gui_buffer
/* to this buffer */
int input_get_unknown_commands; /* 1 if unknown commands are sent to */
/* input_callback */
+ int input_get_empty; /* 1 if empty input is sent to */
+ /* input_callback */
char *input_buffer; /* input buffer */
int input_buffer_alloc; /* input buffer: allocated size */
int input_buffer_size; /* buffer size in bytes */
diff --git a/src/gui/gui-input.c b/src/gui/gui-input.c
index 2c284677d..4efd1737d 100644
--- a/src/gui/gui-input.c
+++ b/src/gui/gui-input.c
@@ -412,7 +412,8 @@ gui_input_return (struct t_gui_buffer *buffer)
gui_window_bare_display_toggle (NULL);
}
- if (buffer->input && (buffer->input_buffer_size > 0))
+ if (buffer->input
+ && (buffer->input_get_empty || (buffer->input_buffer_size > 0)))
{
buffer->input_buffer[buffer->input_buffer_size] = '\0';
command = strdup (buffer->input_buffer);