about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog10
-rw-r--r--Doc/Zsh/contrib.yo17
-rw-r--r--Doc/Zsh/expn.yo24
-rw-r--r--Functions/Zle/.distfiles2
-rw-r--r--Functions/Zle/bash-backward-kill-word5
-rw-r--r--Functions/Zle/bash-backward-word9
-rw-r--r--Functions/Zle/bash-forward-word9
-rw-r--r--Functions/Zle/bash-kill-word9
8 files changed, 79 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 5dad2875c..b0f7566c3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2001-07-06  Peter Stephenson  <pws@csr.com>
+
+	* 15288: Doc/Zsh/contrib.yo,
+	Functions/Zle/bash-forward-word, Functions/Zle/bash-bacward-word,
+	Functions/Zle/bash-kill-word, Functions/Zle/bash-backward-kill-word:
+	complete set of bash-compatible word functions with documentation.
+
+	* 15279: Doc/Zsh/expn.yo: describe those ${(S)...%%...} things
+	so that even I understand what the code does.
+
 2001-07-06  Oliver Kiddle  <opk@zsh.org>
 
 	* 15252 (and Akinori Musha: 15245): Completion/BSD/Command/_kld,
diff --git a/Doc/Zsh/contrib.yo b/Doc/Zsh/contrib.yo
index cff9f2d39..9919117e5 100644
--- a/Doc/Zsh/contrib.yo
+++ b/Doc/Zsh/contrib.yo
@@ -362,6 +362,23 @@ followed by an appropriate tt(bindkey) command to associate the function
 with a key sequence.  Suggested bindings are described below.
 
 startitem()
+tindex(bash-forward-word)
+tindex(bash-backward-word)
+tindex(bash-kill-word)
+tindex(bash-backward-kill-word)
+xitem(tt(bash-forward-word), tt(bash-backward-word))
+item(tt(bash-kill-word), tt(bash-backward-kill-word))(
+These work similarly to the corresponding builtin zle functions without the
+`tt(bash-)' prefix, but a word is considered to consist of alphanumeric
+characters only.  If you wish to replace your existing bindings with these
+four widgets, the following is sufficient:
+
+example(for widget in kill-word backward-kill-word \ 
+forward-word backward-word; do 
+  autoload bash-$widget 
+  zle -N $widget bash-$widget
+done)
+)
 tindex(cycle-completion-positions)
 item(tt(cycle-completion-positions))(
 After inserting an unambiguous string into the command line, the new
diff --git a/Doc/Zsh/expn.yo b/Doc/Zsh/expn.yo
index 562e9bef2..a4631f37b 100644
--- a/Doc/Zsh/expn.yo
+++ b/Doc/Zsh/expn.yo
@@ -791,10 +791,26 @@ Search the var(expr)th match (where var(expr) evaluates to a number).
 This only applies when searching for substrings, either with the tt(S)
 flag, or with tt(${)...tt(/)...tt(}) (only the var(expr)th match is
 substituted) or tt(${)...tt(//)...tt(}) (all matches from the
-var(expr)th on are substituted).  The var(expr)th match is counted
-such that there is either one or zero matches from each starting
-position in the string, although for global substitution matches
-overlapping previous replacements are ignored.
+var(expr)th on are substituted).  The default is to take the first match.
+
+The var(expr)th match is counted such that there is either one or zero
+matches from each starting position in the string, although for global
+substitution matches overlapping previous replacements are ignored.  With
+the tt(${)...tt(%)...tt(}) and tt(${)...tt(%%)...tt(}) forms, the starting
+position for the match moves backwards from the end as the index increases,
+while with the other forms it moves forward from the start.
+
+Hence with the string
+example(which switch is the right switch for Ipswich?)
+substitutions of the form
+tt(${)LPAR()tt(SI:)var(N)tt(:)RPAR()tt(string#w*ch}) as var(N) increases
+from 1 will match and remove `tt(which)', `tt(witch)', `tt(witch)' and
+`tt(wich)'; the form using `tt(##)' will match and remove `tt(which switch
+is the right switch for Ipswich)', `tt(witch is the right switch for
+Ipswich)', `tt(witch for Ipswich)' and `tt(wich)'. The form using `tt(%)'
+will remove the same matches as for `tt(#)', but in reverse order, and the
+form using `tt(%%)' will remove the same matches as for `tt(##)' in reverse
+order.
 )
 item(tt(M))(
 Include the matched portion in the result.
diff --git a/Functions/Zle/.distfiles b/Functions/Zle/.distfiles
index b17029a7e..7de26ec71 100644
--- a/Functions/Zle/.distfiles
+++ b/Functions/Zle/.distfiles
@@ -1,5 +1,7 @@
 DISTFILES_SRC='
 .distfiles
+bash-backward-kill-word     bash-backward-word
+bash-kill-word              bash-forward-word
 cycle-completion-positions  incarg                      predict-on
 edit-command-line           incremental-complete-word   smart-insert-last-word
 history-search-end          insert-files
diff --git a/Functions/Zle/bash-backward-kill-word b/Functions/Zle/bash-backward-kill-word
index a85c9ba3e..6c4f3ba18 100644
--- a/Functions/Zle/bash-backward-kill-word
+++ b/Functions/Zle/bash-backward-kill-word
@@ -1,8 +1,9 @@
-# function bash-backward-kill-word {
 # This implements a bash-style backward-kill-word.
 # To use,
 #   zle -N bash-backward-kill-word
 #   bindkey '...' bash-backward-kill-word
+# or if you wish to replace existing backward-kill-word bindings,
+#   zle -N backward-kill-word bash-backward-kill-word
+
 local WORDCHARS=''
 zle .backward-kill-word
-# }
diff --git a/Functions/Zle/bash-backward-word b/Functions/Zle/bash-backward-word
new file mode 100644
index 000000000..23da8b3fe
--- /dev/null
+++ b/Functions/Zle/bash-backward-word
@@ -0,0 +1,9 @@
+# This implements a bash-style backward-word.
+# To use,
+#   zle -N bash-backward-word
+#   bindkey '...' bash-backward-word
+# or if you wish to replace existing backward-word bindings,
+#   zle -N backward-word bash-backward-word
+
+local WORDCHARS=''
+zle .backward-word
diff --git a/Functions/Zle/bash-forward-word b/Functions/Zle/bash-forward-word
new file mode 100644
index 000000000..963ea012a
--- /dev/null
+++ b/Functions/Zle/bash-forward-word
@@ -0,0 +1,9 @@
+# This implements a bash-style forward-word.
+# To use,
+#   zle -N bash-forward-word
+#   bindkey '...' bash-forward-word
+# or if you wish to replace existing forward-word bindings,
+#   zle -N forward-word bash-forward-word
+
+local WORDCHARS=''
+zle .forward-word
diff --git a/Functions/Zle/bash-kill-word b/Functions/Zle/bash-kill-word
new file mode 100644
index 000000000..ba638a3c7
--- /dev/null
+++ b/Functions/Zle/bash-kill-word
@@ -0,0 +1,9 @@
+# This implements a bash-style kill-word.
+# To use,
+#   zle -N bash-kill-word
+#   bindkey '...' bash-kill-word
+# or if you wish to replace existing kill-word bindings,
+#   zle -N kill-word bash-kill-word
+
+local WORDCHARS=''
+zle .kill-word