diff options
author | Johannes Schlüter <johannes@php.net> | 2010-05-20 20:55:33 +0000 |
---|---|---|
committer | Johannes Schlüter <johannes@php.net> | 2010-05-20 20:55:33 +0000 |
commit | 61db5cf98a91916c23ae4adf3754b2ef94a4fbb2 (patch) | |
tree | 1e0527691b9773d5edf32340d653810dd1d276a4 /sapi/cli/php_cli_readline.h | |
parent | 31f62dbc72f5d2c2670a1e3646a4bf2e62f0321d (diff) | |
download | php-git-61db5cf98a91916c23ae4adf3754b2ef94a4fbb2.tar.gz |
- Improved CLI Interactive readline shell (Johannes)
. Added cli.pager ini setting to set a pager for output.
. Added cli.prompt ini settingto configure the shell prompt.
. Added shortcut #inisetting=value to change ini settings at run-time.
. Don't terminate shell on fatal errors.
A pager can be a an shell command which will receive the command output on its
STDIN channel
php > #cli.pager=less
php > phpinfo();
(output will appear in the pager)
php > #cli.pager=grep -i readline
php > phpcredits();
Readline => Thies C. Arntzen
php > #cli.pager=
(output appears again direct on the terminal)
A prompt can contain a few escape sequences like
php > #cli.prompt=\e[032m\v \e[031m\b \e[34m\> \e[0m
5.3.99-dev php > //Colorful prompt with version number
A prompt can also contaian PHP code in backticks
php > #cli.prompt=`echo gethostname();` \b \>
guybrush php >
Diffstat (limited to 'sapi/cli/php_cli_readline.h')
-rw-r--r-- | sapi/cli/php_cli_readline.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/sapi/cli/php_cli_readline.h b/sapi/cli/php_cli_readline.h index 4e4a6233bf..1b9321a15b 100644 --- a/sapi/cli/php_cli_readline.h +++ b/sapi/cli/php_cli_readline.h @@ -13,13 +13,32 @@ | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Author: Marcus Boerger <helly@php.net> | + | Johannes Schlueter <johannes@php.net> | +----------------------------------------------------------------------+ */ /* $Id$ */ #include "php.h" +#include "ext/standard/php_smart_str.h" +ZEND_BEGIN_MODULE_GLOBALS(cli_readline) + char *pager; + char *prompt; + smart_str *prompt_str; +ZEND_END_MODULE_GLOBALS(cli_readline) + +#ifdef ZTS +# define CLIR_G(v) TSRMG(cli_readline_globals_id, zend_cli_readline_globals *, v) +#else +# define CLIR_G(v) (cli_readline_globals.v) +#endif + +ZEND_EXTERN_MODULE_GLOBALS(cli_readline) + +extern zend_module_entry cli_readline_module_entry; + +char *cli_get_prompt(char *block, char prompt TSRMLS_DC); int cli_is_valid_code(char *code, int len, char **prompt TSRMLS_DC); char **cli_code_completion(const char *text, int start, int end); |