about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--Completion/compaudit8
-rw-r--r--Completion/compinstall14
-rw-r--r--Doc/Zsh/compsys.yo7
4 files changed, 23 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index bbb19d4d4..4889ec742 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2001-04-26  Sven Wischnowsky  <wischnow@zsh.org>
 
+	* 14107: Completion/compaudit, Completion/compinstall,
+	Doc/Zsh/compsys.yo: handle sub-sub-directories of $_compdir as
+	in the CVS-layout
+
 	* 14105: Completion/Base/Utility/_arguments,
 	Completion/Base/Utility/_guard,
 	Completion/X/Utility/_x_arguments,
diff --git a/Completion/compaudit b/Completion/compaudit
index 9cab88bbf..f03949822 100644
--- a/Completion/compaudit
+++ b/Completion/compaudit
@@ -55,11 +55,11 @@ if [[ -n $_compdir ]]; then
     # Too few files: we need some more directories, or we need to check
     # that all directories (not just Base) are present.
     _i_addfiles=()
-    if [[ $_compdir = */Base ]]; then
-      # Add all the Completion subdirectories
-      _i_addfiles=(${_compdir:h}/*(/))
+    if [[ -d $_compdir/Base/Core ]]; then
+      # Add all the Completion subdirectories (CVS-layout)
+      _i_addfiles=(${_compdir}/*/*(/))
     elif [[ -d $_compdir/Base ]]; then
-      # Likewise
+      # Likewise (installation-layout)
       _i_addfiles=(${_compdir}/*(/))
     fi
     for _i_line in {1..$#i_addfiles}; do
diff --git a/Completion/compinstall b/Completion/compinstall
index 971816ea8..b7b4a8412 100644
--- a/Completion/compinstall
+++ b/Completion/compinstall
@@ -190,7 +190,9 @@ __ci_set_compdir() {
 
 __ci_set_compdir $fpath
 
-if [[ -d $compdir/Base ]]; then
+if [[ -d $compdir/Base/Core ]]; then
+  subdirs=2
+elif [[ -d $compdir/Base ]]; then
   subdirs=1
   ### compdir=${compdir:h}
 fi
@@ -229,12 +231,18 @@ initialised completion in this shell, you should do so, then run
 compinstall again."
     fi
   fi
-  if [[ -n $subdirs ]]; then
+  if [[ $subdirs = 2 ]]; then
+    fpath_line=($compdir/[A-Z]*/[A-Z]*)
+    fpath_line="fpath=($fpath ${(F)fpath_line})"
+  elif [[ -n $subdirs ]]; then
     fpath_line=($compdir/[A-Z]*)
     fpath_line="fpath=($fpath ${(F)fpath_line})"
   fi
 else
-  if [[ -n $subdirs ]]; then
+  if [[ $subdirs = 2 ]]; then
+    print "Completion directories $compdir/*/*
+are already in your \$fpath, good."
+  elif [[ -n $subdirs ]]; then
     print "Completion directories $compdir/*
 are already in your \$fpath, good."
   else
diff --git a/Doc/Zsh/compsys.yo b/Doc/Zsh/compsys.yo
index 96d0d010d..e89ac7cd2 100644
--- a/Doc/Zsh/compsys.yo
+++ b/Doc/Zsh/compsys.yo
@@ -142,9 +142,10 @@ contains the required directories for the standard functions.
 For incomplete installations, if tt(compinit) does not find enough files
 beginning with an underscore (fewer than twenty) in the search path, it
 will try to find more by adding the directory tt(_compdir) to the search
-path.  Furthermore, if the directory in question ends in the path segment
-tt(Base), or has a subdirectory named tt(Base), tt(compinit) will add all
-subdirectories of the directory where tt(Base) is to the path: this allows
+path.  If that directory has a subdirectory named tt(Base), all
+subdirectories will be added to the path.  Furthermore, if the subdirectory
+tt(Base) has a subdirectory named tt(Core), tt(compinit) will add all
+subdirectories of the subdirectories is to the path: this allows
 the functions to be in the same format as in the tt(zsh) source
 distribution.