zsh-workers
 help / color / mirror / code / Atom feed
* PATCH: functions completion missed -s and -x
@ 2018-05-16  9:55 ` Oliver Kiddle
  2018-05-16 10:15   ` Peter Stephenson
  0 siblings, 1 reply; 2+ messages in thread
From: Oliver Kiddle @ 2018-05-16  9:55 UTC (permalink / raw)
  To: Zsh workers

Two relatively new options to functions were missing from the completion
function: -x which allows the indentation to be changed and -s which is
for defining math functions with a string parameter.

On the subject of math functions, is it not inconsistent with everything
else that redefining a math function results in a "function already
exists" error rather than being silent. If I re-source my .zshrc, it is
silent apart from these errors.

Oliver

diff --git a/Completion/Zsh/Command/_typeset b/Completion/Zsh/Command/_typeset
index 14d5d371b..fb7189c77 100644
--- a/Completion/Zsh/Command/_typeset
+++ b/Completion/Zsh/Command/_typeset
@@ -55,9 +55,13 @@ case ${service} in
   ;;
   float) use="EFHghlprtux";;
   functions)
-    use="UkmTtuzMW"
+    use="UkmTtuzW"
     func=f
-    allargs[M]='(-k -t -T -u -U -z -M +M +k +t +z)-+M[define mathematical function]'
+    args=(
+      '(-k -t -T -u -U -W -x -z -M +M +k +t +W +z)-+M[define mathematical function]'
+      '(-k -m -t -T -u -U -W -x -z +M +k +t +W +z)-s[define mathematical function that takes a string argument]'
+      '(-M)-x+[specify spaces to use for indentation]:spaces'
+    )
   ;;
   integer)
     use="Hghilprtux"
@@ -89,8 +93,10 @@ if [[ "$state" = vars_eq ]]; then
       _wanted functions expl 'math function' compadd -F line - \
           ${${${(f)"$(functions -M)"}##*-M }%% *}
     elif (( $+opt_args[-M] )); then
-      _arguments ':new math function:_functions' ':minimum arguments' \
-      ':maximum arguments' ':shell function:_functions'
+      _arguments ':new math function:_functions' \
+	":minimum arguments${(k)opt_args[-s]:+:(1)}" \
+	":maximum arguments${(k)opt_args[-s]:+:(1)}" \
+	':shell function:_functions'
     elif (( $+opt_args[-w] )); then
       _wanted files expl 'zwc file' _files -g '*.zwc(-.)'
     elif [[ $service = autoload || -n $opt_args[(i)-[uU]] ]]; then


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: PATCH: functions completion missed -s and -x
  2018-05-16  9:55 ` PATCH: functions completion missed -s and -x Oliver Kiddle
@ 2018-05-16 10:15   ` Peter Stephenson
  0 siblings, 0 replies; 2+ messages in thread
From: Peter Stephenson @ 2018-05-16 10:15 UTC (permalink / raw)
  To: Zsh workers

On Wed, 16 May 2018 11:55:39 +0200
Oliver Kiddle <okiddle@yahoo.co.uk> wrote:
> On the subject of math functions, is it not inconsistent with
> everything else that redefining a math function results in a
> "function already exists" error rather than being silent. If I
> re-source my .zshrc, it is silent apart from these errors.

Yes, and this unusual interface doesn't appear to be documented, either.

pws

diff --git a/Src/builtin.c b/Src/builtin.c
index 931605c..1cba97d 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -3199,7 +3199,7 @@ bin_functions(char *name, char **argv, Options ops, int func)
 	pflags |= PRINT_NAMEONLY;
 
     if (OPT_MINUS(ops,'M') || OPT_PLUS(ops,'M')) {
-	MathFunc p, q;
+	MathFunc p, q, prev;
 	/*
 	 * Add/remove/list function as mathematical.
 	 */
@@ -3331,15 +3331,10 @@ bin_functions(char *name, char **argv, Options ops, int func)
 	    p->maxargs = maxargs;
 
 	    queue_signals();
-	    for (q = mathfuncs; q; q = q->next) {
+	    for (q = mathfuncs, prev = NULL; q; prev = q, q = q->next) {
 		if (!strcmp(q->name, funcname)) {
-		    unqueue_signals();
-		    zwarnnam(name, "-M %s: function already exists",
-			     funcname);
-		    zsfree(p->name);
-		    zsfree(p->module);
-		    zfree(p, sizeof(struct mathfunc));
-		    return 1;
+		    removemathfunc(prev, q);
+		    break;
 		}
 	    }
 


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2018-05-16 10:15 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <CGME20180516095641epcas4p240d76877aedbddfc42d29ce1b3945ee5@epcas4p2.samsung.com>
2018-05-16  9:55 ` PATCH: functions completion missed -s and -x Oliver Kiddle
2018-05-16 10:15   ` Peter Stephenson

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).