Commit Vladimir's latest cmdedit. I modified it slightly to ensure

parse_prompt() would be called before cmdedit_init(), since cmdedit_init()
calls cmdedit_setwidth() which uses cmdedit_prmt_len, which is set by
parse_prompt().  Also, added a mod, so very narrow terminals should now wrap
properly...  This is working very nicely for me -- Vladimir has done some
very good work.
This commit is contained in:
Eric Andersen 2001-02-16 20:09:17 +00:00
parent 361ee514c6
commit 6faae7deb4
5 changed files with 17 additions and 18 deletions

View File

@ -30,7 +30,7 @@
*/
#define TEST
//#define TEST
#ifndef TEST
@ -555,6 +555,9 @@ static void clean_up_and_die(int sig)
static void cmdedit_setwidth(int w, int redraw_flg)
{
cmdedit_termw = cmdedit_prmt_len + 2;
if (w <= cmdedit_termw) {
cmdedit_termw = cmdedit_termw % w;
}
if (w > cmdedit_termw) {
cmdedit_termw = w;
@ -567,10 +570,7 @@ static void cmdedit_setwidth(int w, int redraw_flg)
redraw((new_y >= cmdedit_y ? new_y : cmdedit_y), len - cursor);
fflush(stdout);
}
} else {
error_msg("\n*** Error: minimum screen width is %d",
cmdedit_termw);
}
}
}
extern void cmdedit_init(void)
@ -1234,9 +1234,10 @@ extern void cmdedit_read_input(char *prompt, char command[BUFSIZ])
setTermSettings(inputFd, (void *) &new_settings);
handlers_sets |= SET_RESET_TERM;
cmdedit_init();
/* Print out the command prompt */
parse_prompt(prompt);
/* Now initialize things */
cmdedit_init();
while (1) {

3
lash.c
View File

@ -854,10 +854,9 @@ static int get_command(FILE * source, char *command)
** atexit() handlers and other unwanted stuff to our
** child processes (rob@sysgo.de)
*/
cmdedit_init();
cmdedit_read_input(prompt_str, command);
free(prompt_str);
cmdedit_terminate();
free(prompt_str);
return 0;
#else
fputs(prompt_str, stdout);

3
sh.c
View File

@ -854,10 +854,9 @@ static int get_command(FILE * source, char *command)
** atexit() handlers and other unwanted stuff to our
** child processes (rob@sysgo.de)
*/
cmdedit_init();
cmdedit_read_input(prompt_str, command);
free(prompt_str);
cmdedit_terminate();
free(prompt_str);
return 0;
#else
fputs(prompt_str, stdout);

View File

@ -30,7 +30,7 @@
*/
#define TEST
//#define TEST
#ifndef TEST
@ -555,6 +555,9 @@ static void clean_up_and_die(int sig)
static void cmdedit_setwidth(int w, int redraw_flg)
{
cmdedit_termw = cmdedit_prmt_len + 2;
if (w <= cmdedit_termw) {
cmdedit_termw = cmdedit_termw % w;
}
if (w > cmdedit_termw) {
cmdedit_termw = w;
@ -567,10 +570,7 @@ static void cmdedit_setwidth(int w, int redraw_flg)
redraw((new_y >= cmdedit_y ? new_y : cmdedit_y), len - cursor);
fflush(stdout);
}
} else {
error_msg("\n*** Error: minimum screen width is %d",
cmdedit_termw);
}
}
}
extern void cmdedit_init(void)
@ -1234,9 +1234,10 @@ extern void cmdedit_read_input(char *prompt, char command[BUFSIZ])
setTermSettings(inputFd, (void *) &new_settings);
handlers_sets |= SET_RESET_TERM;
cmdedit_init();
/* Print out the command prompt */
parse_prompt(prompt);
/* Now initialize things */
cmdedit_init();
while (1) {

View File

@ -854,10 +854,9 @@ static int get_command(FILE * source, char *command)
** atexit() handlers and other unwanted stuff to our
** child processes (rob@sysgo.de)
*/
cmdedit_init();
cmdedit_read_input(prompt_str, command);
free(prompt_str);
cmdedit_terminate();
free(prompt_str);
return 0;
#else
fputs(prompt_str, stdout);