about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog2
-rw-r--r--Completion/compinstall24
2 files changed, 25 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 9fdae7a82..cfacc0231 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2003-03-07  Peter Stephenson  <pws@csr.com>
 
+	* 18327: Completion/compinstall: add handling for preserve-prefix.
+
 	* 18325: Src/Modules/parameter.c: options on by default weren't
 	handled correctly.
 
diff --git a/Completion/compinstall b/Completion/compinstall
index b8dec7724..c53d12e34 100644
--- a/Completion/compinstall
+++ b/Completion/compinstall
@@ -1529,7 +1529,7 @@ completions?
 #       squeeze-slashes,
 __ci_do_file_styles() {
   local key files cursor expand speciald ignorep squeezes select
-  local prefon suffon lssuffixes
+  local prefon suffon lssuffixes preserve
 
   __ci_get_this_style file-sort files
   __ci_get_this_style ignore-parents ignorep
@@ -1537,6 +1537,8 @@ __ci_do_file_styles() {
   __ci_get_this_style squeeze-slashes squeezes
   __ci_get_this_style expand expand
   __ci_get_this_style list-suffixes lssuffixes
+  __ci_get_this_style preserve-prefix preserve
+  [[ -n $preserve ]] && preserve=${(Q)preserve}
 
   while true; do
     clear
@@ -1554,6 +1556,8 @@ __ci_do_file_styles() {
 5.  Configure how multiple paths are expanded and displayed, 
     e.g. /f/b -> /foo/bar
 
+6.  Keep certain prefixes unchanged, such as \`//resource/'.
+
 q.  Return without saving.
 0.  Done setting options for filename completion.
 "
@@ -1729,6 +1733,21 @@ Do you want this behaviour ([y]es, [n]o, [k]eep current setting)?
 	    ([nN]) lssuffixes=;;
 	  esac
 	  ;;
+      (6) print "\
+On some systems, there are special forms for the start of a filename
+which should be left alone by the completion system.  For example, Cygwin
+uses a double slash to indicate a network resource, hence a prefix of
+the form \`//resource/' should be left alone.  This style gives a pattern
+to match any such prefixes; alternatives separated by \`|' are therefore
+possible.  Edit the pattern as you like.  If this is empty, the shell will not
+handle any prefixes specially."
+          if [[ -z $preserve ]]; then
+	      preserve="//[^/]##/"
+	      print "
+Accept the default to handle network resources as just described."
+	  fi
+	  vared -eh -p "pattern> " preserve
+	  ;;
       (q) return 1
 	 ;;
     esac
@@ -1741,6 +1760,9 @@ Do you want this behaviour ([y]es, [n]o, [k]eep current setting)?
   __ci_set_this_style squeeze-slashes squeezes
   __ci_set_this_style expand expand
   __ci_set_this_style list-suffixes lssuffixes
+  # pattern, always quote
+  [[ -n $preserve ]] && preserve=${(qq)preserve}
+  __ci_set_this_style preserve-prefix preserve
 
   return 0
 }