summaryrefslogtreecommitdiff
path: root/ext/readline/readline.c
diff options
context:
space:
mode:
authorTim Bazuin <krageon@gmail.com>2017-08-29 10:43:04 +0200
committerNikita Popov <nikita.ppv@gmail.com>2018-03-25 18:21:35 +0200
commit033907b9a58f137443ab257a9f1f597df34dafc2 (patch)
tree9a40606e8df7a58f63e606cc8a97f4259c61eba3 /ext/readline/readline.c
parentf7f48643e779111b23b546689b9fbb4e3affe1e7 (diff)
downloadphp-git-033907b9a58f137443ab257a9f1f597df34dafc2.tar.gz
Add support for rl_completion_suppress_append and rl_completion_append_character
These options are only available with libreadline.
Diffstat (limited to 'ext/readline/readline.c')
-rw-r--r--ext/readline/readline.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/ext/readline/readline.c b/ext/readline/readline.c
index bd443ebcd6..7026b020f6 100644
--- a/ext/readline/readline.c
+++ b/ext/readline/readline.c
@@ -262,6 +262,11 @@ PHP_FUNCTION(readline_info)
add_assoc_long(return_value,"pending_input",rl_pending_input);
add_assoc_string(return_value,"prompt",SAFE_STRING(rl_prompt));
add_assoc_string(return_value,"terminal_name",(char *)SAFE_STRING(rl_terminal_name));
+ add_assoc_str(return_value, "completion_append_character",
+ rl_completion_append_character == 0
+ ? ZSTR_EMPTY_ALLOC()
+ : ZSTR_CHAR(rl_completion_append_character));
+ add_assoc_bool(return_value,"completion_suppress_append",rl_completion_suppress_append);
#endif
#if HAVE_ERASE_EMPTY_LINE
add_assoc_long(return_value,"erase_empty_line",rl_erase_empty_line);
@@ -307,6 +312,20 @@ PHP_FUNCTION(readline_info)
RETVAL_STRING(SAFE_STRING(rl_prompt));
} else if (!strcasecmp(what, "terminal_name")) {
RETVAL_STRING((char *)SAFE_STRING(rl_terminal_name));
+ } else if (!strcasecmp(what, "completion_suppress_append")) {
+ oldval = rl_completion_suppress_append;
+ if (value) {
+ rl_completion_suppress_append = zend_is_true(value);
+ }
+ RETVAL_BOOL(oldval);
+ } else if (!strcasecmp(what, "completion_append_character")) {
+ oldval = rl_completion_append_character;
+ if (value) {
+ convert_to_string_ex(value)
+ rl_completion_append_character = (int)Z_STRVAL_P(value)[0];
+ }
+ RETVAL_INTERNED_STR(
+ oldval == 0 ? ZSTR_EMPTY_ALLOC() : ZSTR_CHAR(oldval));
#endif
#if HAVE_ERASE_EMPTY_LINE
} else if (!strcasecmp(what, "erase_empty_line")) {