Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Announce of Zsh Navigation Tools
On Sep 12, 4:03pm, Ray Andrews wrote:
}
} immediately makes me want do something like this:
}
} for aa in /aWorking/Zsh/Source/*; do autoload $aa; done
}
} ... remembering of course that things need to be rewritten to look like
} scripts.
As long as there is only one function per file, you don't need to rewrite
them, just use
...; do autoload -k $aa; done
The "ksh-style" of autoloading is to have one complete function definition
in each file, including the "() { ... }" or "function { ... }" or whatever
wrapping syntax.
(Ksh does it this way because the syntax used to declare the function has
an effect on its semantics.)
} BTW, looking at $fpath, it sure is laborious. Do we, could we have some
} sort of automatic subdirectory inclusion?
I'm not sure what you mean by this, that is, are you trying to build up
the value of $fpath or are you trying to find all the files in $fpath
to autoload them?
If you're running an installed zsh, of course, then $fpath should have
all the necessary directories already (except e.g. personal ones in your
home dir).
If you're asking about constructing $fpath for a zsh build tree, then it
should suffice to do:
fpath=( $build_dir/Completion/**/*(/) $build_dir/Functions/**/*(/)
$fpath )
where you will need to define $build_dir appropriately, maybe it is $PWD.
Just be careful that you get the order right with respect to the default
$fpath -- the default should come FIRST if you are running an installed
shell.
If you're asking about autoloading everything after $fpath has been
defined, then this should work for the default paths:
autoload $^fpath/*(N-.:t)
However, as I said you may want to add -k for your personal files, which
would need a second autoload command.
Some people also prefer to throw a (*) into the glob flags so as to only
autoload files that have been marked executable.
Putting this together, something like:
build_fpath=( $build_dir/Completion/**/*(/) $build_dir/Functions/**/*(/) )
my_fpath=( ~/zsh_functions/**/*(/) and so on )
autoload $^fpath/*(N-.:t)
autoload $^build_fpath/*(N-.:t)
autoload $^my_fpath/*(N-.:t)
fpath=( $my_fpath $build_fpath $fpath )
--
Barton E. Schaefer
Messages sorted by:
Reverse Date,
Date,
Thread,
Author