From 1229d05c19453a344d696f3fc95fad4115b075b5 Mon Sep 17 00:00:00 2001 From: Sven Wischnowsky Date: Tue, 20 Aug 2002 12:28:05 +0000 Subject: fix default completion module loading, use compctl if it hasn't been loaded already and no completion widgets have been defined (17567) --- ChangeLog | 7 +++++++ Src/Zle/zle_main.c | 1 + Src/Zle/zle_thingy.c | 2 ++ Src/Zle/zle_tricky.c | 11 ++++++++++- 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 2367f8826..e210690cf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2002-08-20 Sven Wischnowsky + + * 17567: Src/Zle/zle_main.c, Src/Zle/zle_thingy.c, + Src/Zle/zle_tricky.c: fix default completion module loading, + use compctl if it hasn't been loaded already and no completion + widgets have been defined + 2002-08-19 Oliver Kiddle * users/5260 (Bill Burton), users/5266: Completion/Unix/Command/_ant: diff --git a/Src/Zle/zle_main.c b/Src/Zle/zle_main.c index 1ec0171bb..e1429a0d0 100644 --- a/Src/Zle/zle_main.c +++ b/Src/Zle/zle_main.c @@ -1355,6 +1355,7 @@ setup_(Module m) varedarg = NULL; incompfunc = incompctlfunc = hascompmod = 0; + hascompwidgets = 0; clwords = (char **) zcalloc((clwsize = 16) * sizeof(char *)); diff --git a/Src/Zle/zle_thingy.c b/Src/Zle/zle_thingy.c index 2946ea209..7d6c5103e 100644 --- a/Src/Zle/zle_thingy.c +++ b/Src/Zle/zle_thingy.c @@ -601,6 +601,8 @@ bin_zle_complete(char *name, char **args, char *ops, char func) zwarnnam(name, "widget name `%s' is protected", args[0], 0); return 1; } + hascompwidgets++; + return 0; } diff --git a/Src/Zle/zle_tricky.c b/Src/Zle/zle_tricky.c index 5d7e4cdd2..60cbb8a71 100644 --- a/Src/Zle/zle_tricky.c +++ b/Src/Zle/zle_tricky.c @@ -146,6 +146,11 @@ mod_export int cfret; /**/ mod_export int comprecursive; +/* != 0 if there are any defined completion widgets. */ + +/**/ +int hascompwidgets; + /* Find out if we have to insert a tab (instead of trying to complete). */ /**/ @@ -557,7 +562,11 @@ docomplete(int lst) if (undoing) setlastline(); - if (!module_loaded("zsh/complete")) + /* We the C-code's point of view, we can only use compctl as a default + * type of completion. Load it if it hasn't been loaded already and + * no completion widgets are defined. */ + + if (!module_loaded("zsh/compctl") && !hascompwidgets) load_module("zsh/compctl"); if (runhookdef(BEFORECOMPLETEHOOK, (void *) &lst)) { -- cgit 1.4.1