Subject: Re: min() max() math functions (was: Re: Feature request (@M):# with context matches)
From: Bart Schaefer <[email-masked]>
To: [email-masked]
Date: Wed, 10 Feb 2016 09:41:34 -0800
List-Id: Zsh Workers List <zsh-workers.zsh.org>

On Feb 10,  9:23am, Daniel Shahaf wrote:
} Subject: Re: min() max() math functions (was: Re: Feature request (@M):# w
}
} Bart Schaefer wrote on Mon, Feb 08, 2016 at 21:22:22 -0800:
} > 
} >     emulate zsh -c 'autoload -U zmathfunc'
} 
} Shouldn't this form be used more often?  As in, wouldn't using this form
} be correct for the majority of autoloadable functions?

It has other side-effects which are desirable in the zmathfunc case but
may not be in other cases.  (Specifically, the stickyness is transitive
to functions defined when the autoloaded function runs.)

Whether "the majority" of autoloads would benefit, I don't know.  Some
functions perform a task in a very isolated way, others are intended
to preserve the behavior the user's setopts have defined, and it's not
possible to readily determine which have the latter intent.

} > Although it seems an oversight that you can't combine -u and -M for the
} > functions command.
} 
} Would this be easy to add?

I took a quick look and decided it wasn't straightforward enough to mess
with today.  The different interpretation of the argument list for -M
makes it complicated to untangle the current implementation.  And one
can get the same effect by doing 

    autoload mathfunc
    functions -M mf 0 0 mathfunc

in either order (that is, the shell function doesn't have to be defined
to link it to a math context name).

} (Just another flag in the stub function structure, maybe?)

Doesn't even need that.

} > Ehh, I'm not sure it's the job of any module's doc to explain what it
} > does NOT define, much less to cross-reference zshcontrib.
} 
} Why is it a problem for zshmodules to reference zshcontrib?  Should
} zmathfunc's documentation be located elsewhere?

It's not exactly a problem, more like a bad precedent.  E.g. I was careful
to have zshcontrib for the *-word-match functions refer to the vim text
objects, but I would not reference in the other direction.  It should IMO
be possible to throw away the zshcontrib manual and still have a complete
reference to the "bare" shell.

The most obvious counter-argument is that the entire completion system
depends on mutually cooperating options, builtins, and shell functions.
And the complist module already references the colors autoload, so I
should probably just shrug and ignore my sense of propriety.