Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Compsys and KSH_AUTOLOAD



Bart wrote:
> I've been having an off-list discussion with Matthias Kopfermann about
> trouble he's had using the completion system with KSH_AUTOLOAD set.  He
> tried the "zcompile -z" stuff (actually the zrecompile loop) suggested
> in the manual, but it didn't work for him (I haven't investigated that

It is only for compinit itself that I can get problems with that to
occur. It seems to be a little sensitive about the contents of $fpath
but the following works for me: 

  zcompile -z -U comp /usr/local/share/zsh/4.2.0/functions/Completion/**/*(.)
  zsh -f
  fpath=( ~/comp.zwc $fpath )
  setopt kshautoload
  autoload compinit
  compinit

compinit ought to be able to look inside the .zwc file so you don't
even need the functions to be there.

> So I tried this:
> 
> #--- 8< --- snip ---
> autoload +X -z compinit _main_complete _complete_help _complete_debug \
> 	_expand_alias _bash_completions _history_complete_word _next_tags
> compinit				# Append your usual options
> _comp_options+=(NO_kshautoload)		# Need 4.2.x for += to work
> #--- 8< --- snip ---

> (1) Does this deserve a FAQ entry, or perhaps even a change to the
> compsys documentation?  I guess ksh_autoload isn't a very "frequently"

It'd be better if we can get it to just work.

> (2) Should we change _comp_options to always include NO_kshautoload?

I'd prefer if we can avoid adding to _comp_options.

> (3) Should we change compinit to run the autoload +X -z of the entry
> points iff kshautoload is set?

This is one option and if we took it, we'd want to go with (4) so
user's can add their own entry point functions. It is just adding more
complexity though. Also, looking at the list of entry points, there are
functions I never use, making autoload +X a waste of time and memory.

Is there any reason why the -z and -k options to autoload can only be
used with +X. It would seem to me that the best would be if compinit
could use `autoload -U -z' with functions being setup to look like this:

  _autoload () {
          # undefined
          builtin autoload -XUz
  }

Would that be a possibilty?

Oliver



Messages sorted by: Reverse Date, Date, Thread, Author