Bug #1281 ยป sh-tabcomplete.diff
| bin/sh/histedit.c | ||
|---|---|---|
|
EditLine *el; /* editline cookie */
|
||
|
int displayhist;
|
||
|
static FILE *el_in, *el_out, *el_err;
|
||
|
unsigned char _el_fn_complete(EditLine *, int);
|
||
|
STATIC char *fc_replace(const char *, char *, char *);
|
||
| ... | ... | |
|
if (hist)
|
||
|
el_set(el, EL_HIST, history, hist);
|
||
|
el_set(el, EL_PROMPT, getprompt);
|
||
|
el_set(el, EL_ADDFN, "rl-complete",
|
||
|
"ReadLine compatible completion function",
|
||
|
_el_fn_complete);
|
||
|
} else {
|
||
|
bad:
|
||
|
out2str("sh: can't initialize editing\n");
|
||
| ... | ... | |
|
el_set(el, EL_EDITOR, "vi");
|
||
|
else if (Eflag)
|
||
|
el_set(el, EL_EDITOR, "emacs");
|
||
|
el_set(el, EL_BIND, "^I",
|
||
|
tabcomplete ? "rl-complete" : "ed-insert", NULL);
|
||
|
el_source(el, NULL);
|
||
|
}
|
||
|
} else {
|
||
| bin/sh/options.c | ||
|---|---|---|
|
iflag = 1;
|
||
|
if (mflag == 2)
|
||
|
mflag = iflag;
|
||
|
/* turn on tabcomplete in an interactive shell by default */
|
||
|
tabcomplete = iflag;
|
||
|
for (i = 0; i < NOPTS; i++)
|
||
|
if (optlist[i].val == 2)
|
||
|
optlist[i].val = 0;
|
||
| bin/sh/options.h | ||
|---|---|---|
|
#define privileged optlist[15].val
|
||
|
#define Tflag optlist[16].val
|
||
|
#define Pflag optlist[17].val
|
||
|
#define tabcomplete optlist[18].val
|
||
|
#define NOPTS 18
|
||
|
#define NOPTS 19
|
||
|
struct optent {
|
||
|
const char *name;
|
||
| ... | ... | |
|
{ "privileged", 'p', 0 },
|
||
|
{ "trapsasync", 'T', 0 },
|
||
|
{ "physical", 'P', 0 },
|
||
|
{ "tabcomplete", '\0', 0 },
|
||
|
};
|
||
|
#else
|
||
|
extern struct optent optlist[NOPTS];
|
||
| bin/sh/sh.1 | ||
|---|---|---|
|
variable)
|
||
|
to standard error before it is executed.
|
||
|
Useful for debugging.
|
||
|
.It "\ \ " Em tabcomplete
|
||
|
Enables filename completion in the command line editor.
|
||
|
Typing a tab character will extend the current input word to match a
|
||
|
filename.
|
||
|
If more than one filename matches it is only extended to be the common prefix.
|
||
|
Typing a second tab character will list all the matching names.
|
||
|
Turned on by default in an interactive shell.
|
||
|
.El
|
||
|
.Pp
|
||
|
The
|
||
| ... | ... | |
|
The
|
||
|
.Nm
|
||
|
utility does not recognize multibyte characters.
|
||
|
.Pp
|
||
|
The characters generated by filename completion should probably be quoted
|
||
|
to ensure that the filename is still valid after the input line has been
|
||
|
processed.
|
||