#zdep modules
### vim:ft=zsh:foldmethod=marker
###
### Frank Terbeck <ft@bewatermyfriend.org>
### Last-Modified: Mon Mar 10 21:48:58 2008
###
### URI: <http://ft.bewatermyfriend.org/comp/zsh.html>
###

### zsh options
###
### setopt      option                        comment

### initialization options {{{

setopt     no_all_export                    ### automagically export defined variables; not recommended
setopt        rcs                           ### after /etc/zshenv, all rc files are sourced as supposed.
if zis_316 "atleast" ; then
    setopt no_global_rcs                    ### i don't care if global RCs are run; my config is fairly complete.
fi
if zis_317 "atleast" ; then
    setopt no_global_export                 ### export will not be local to functions with this one; don't rely on it.
fi

### }}}
### {in,out}put options {{{

setopt        clobber                       ### allow '>' to truncate, and '>>' to create files
setopt        correct                       ### try to correct the spelling of commands
setopt     no_correct_all                   ### try to correct every word; this can be dangerous with some commands (e.g. mv)
setopt        flow_control                  ### flowcontrol (usually) ^S ^Q
setopt        hash_cmds                     ### hash executed commands
setopt        hash_dirs                     ### hash dirs of executed commands
setopt     no_ignoreeof                     ### ignore ^D
setopt     no_interactive_comments          ### allow comments in interactive shells
setopt     no_path_dirs                     ### eg. '/usr/bin/' is in your $path, and there is a command
                                            ###   '/usr/bin/X11/xinit' you can start it by 'X11/xinit'
setopt     no_print_exit_value              ### if a command returns non-zero, tell the user
                                            ###   i got a solution for this in my prompt, so i don't need it.
                                            ###   using the format $'...', where a backslashed single quote can be used.
setopt     no_rm_star_silent                ### do not query the user before execing 'rm *' or 'rm path/*'
setopt        short_loops                   ### allow short loop forms
setopt     no_sun_keyboard_hack             ### if a line ends with a backquote, and there are an odd number of
                                            ###   backquotes on the line, ignore the trailing backquote. this is useful
                                            ###   on some keyboards where the return key is too small, and the backquote
                                            ###   key lies annoyingly close to it. _hehe_
setopt     no_mail_warning                  ### print warning if a mail file has been accessed since the shell last checked.
if zis_314 "atleast" ; then
    setopt no_print_eight_bit               ### print eight bit characters literally in completion lists, etc.
                                            ###   not needed if your system returns correct values
    setopt no_rm_star_wait                  ### like 'rm_star_silent' but wait ten seconds instead of querying
fi
if zis_317 "atleast" ; then
    setopt no_dvorak                        ### 'correct{,_all}' expect errors that would happen on dvorak keyboards.
fi
if zis_40 "atleast" ; then
    setopt    aliases                       ### expand aliases; you probably want this
fi

### }}}
### expansion+globbing options {{{

setopt        bad_pattern                   ### if a pattern or glob is badly formed, print out an error
setopt        brace_ccl                     ### echo {abc.}file :: .file afile bfile cfile
setopt     no_csh_nullglob                  ### only report an error if _all_ globs for a command fail
setopt        equals                        ### the mighty =command expansion :)
setopt        extended_glob                 ### the force is strong with this one...
setopt        glob                          ### abso-freakin-lutely
setopt     no_glob_assign                   ### if set, allow 'name=*' and 'name=(*)';
                                            ###   since the latter is more clear, i'm unsetting this option
setopt     no_glob_dots                     ### don't require a leading dot for matching "hidden" files
setopt     no_glob_subst                    ### foo="*"; print $foo; will print all files; not for me, thanks
setopt     no_ignore_braces                 ### do not perform brace expansion;
setopt     no_magic_equal_subst             ### do expansions on everything the looks like an 'name=express' assignment.
setopt     no_mark_dirs                     ### append '/' to dirnames generated by globbing
setopt        nomatch                       ### print an error if a glob didn't return a result
setopt     no_nullglob                      ### is a glob does not return matches, remove the glob from the
                                            ###   argumentlist instead of reporting an error
setopt     no_numeric_glob_sort             ### sort filenames numerically rather than lexicographically, if possible.
setopt        rc_expand_param               ### array  expansions of the form `foo${xx}bar', where the parameter
                                            ###   'xx' is set to (a b c), are substituted with `fooabar foobbar foocbar'
                                            ###   instead of the default `fooa b cbar'.
setopt     no_sh_glob                       ### make globbing more 'sh-like'; please, no!
setopt        unset                         ### treat unset parameters as if they were empty when substituting.
if zis_314 "atleast" ; then
    setopt    bare_glob_qual                ### treat trailing set of parentheses as a qualifier list
    setopt no_ksh_glob                      ### a [\+\*@\?\!] that precedes a pair of parentheses affects globbing.
fi
if zis_42 "atleast" ; then
    setopt    case_glob                     ### make globbing case sensitive
fi

### }}}
### history options {{{

setopt       append_history                 ### when exiting, append history entries to $HISTFILE, rather
                                            ###   than replacing the old file; this is the default
setopt        bang_hist                     ### enable '!' history expansion
setopt     no_extended_history              ### additional info in $HISTFILE
setopt     no_hist_allow_clobber            ### add '|' to output redirections in the history.
setopt     no_hist_beep                     ### beep? beep yourself!eleven!!
setopt        hist_ignore_dups              ### don't add entered command to history, if it's a dup of the previous event.
setopt     no_hist_ignore_space             ### if the commandline starts with a whitespace, don't add it to history
setopt     no_hist_no_store                 ### dont add 'history' command (fc -l) to the history
if zis_306 "atleast" ; then
    setopt no_hist_reduce_blanks            ### remove unneeded blanks from commands in history
    setopt no_hist_verify                   ### bullet-proof history-expansion
fi
if zis_314 "atleast" ; then
    setopt no_hist_no_functions             ### don't add functions to history
fi
if zis_316 "atleast" ; then
    setopt no_hist_expire_dups_first        ### if the internal history needs to be trimmed, throw away dups first
    setopt    hist_find_no_dups             ### when using history don't find dups, even if they are not contiguous.
    setopt    hist_ignore_all_dups          ### if the entered command is a dup, remove the old one from history.
    setopt    hist_save_no_dups             ### don't write dups to $HISTFILE
    setopt no_inc_append_history            ### append every single command to $HISTFILE immediately after hitting ENTER.
    setopt no_share_history                 ### always import new commands from $HISTFILE (see 'inc_append_history')
fi
if zis_43 "atleast" ; then
    setopt    hist_save_by_copy             ### when saving history: DATA => $HISTFILE.new; mv $HISTFILE.new $HISTFILE
                                            ###   you normally don't unset this one.
fi

### }}}
### completion options {{{

setopt        always_last_prompt            ### if zsh prints out a list (eg. on an ambiguous completion), it reuses
                                            ###   the old prompt instead of printing a new one underneath the list;
                                            ###   this breaks menucompletion if turned off
setopt     no_always_to_end                 ### if a completion is performed with the cursor within a word, and a full
                                            ###   completion is inserted, the cursor is moved to the end of the word;
                                            ###   that is, the cursor is moved to the end of the word if either a
                                            ###   single match is inserted or menu completion is performed;
                                            ###   worthless if 'complete_in_word' is off
setopt        auto_list                     ### autom. list choices on ambiguous completion
setopt        auto_menu                     ### use menucompletion after the 2nd consecutive completion request;
                                            ###   overwritten by 'menu_complete'
setopt     no_auto_name_dirs                ### any parameter that is set to the absolute name of a directory
                                            ###   immediately becomes a name for that directory; otherwise the
                                            ###   parameter must be used is the ~parameter form.
setopt     no_auto_param_keys               ### intelligently remove automatically inserted characters when completing
setopt        auto_param_slash              ### when completing a directory name add a slash instead of a space
setopt        auto_remove_slash             ### intelligently remove the trailing slash from a completed directory
setopt        complete_aliases              ### don't expand aliases _before_ completion has finished
setopt        complete_in_word              ### if unset the cursor is set to the end of the word if completion is started
setopt        list_ambiguous                ### complete as much of a completion until it gets ambiguous.
setopt     no_list_beep                     ### how about --- NO!
setopt        list_types                    ### identify filetype by a trailing marker in completion lists
setopt     no_menu_complete                 ### always use menu completion
setopt     no_glob_complete                 ### enable globbing in completions;
                                            ###   cycle through globbing matches in a menu (do not insert them right away).
setopt        hash_list_all                 ### force entire path of a completion to be hashed
setopt     no_rec_exact                     ### in completion, recognize exact matches even if they are ambiguous.
if zis_316 "atleast" ; then
    setopt no_bashautolist                  ### automatically list choices when a completion function is
                                            ###   called twice in succession
fi
if zis_317 "atleast" ; then
    setopt no_list_packed                   ### try to make completion lists smaller (but ugly)
    setopt no_list_rows_first               ### lay out matches in completion lists horizontally
fi

### }}}
### shell emulation options {{{

setopt     no_bsd_echo                      ### make builtin 'echo' compatible to BSD's 'echo'
setopt     no_csh_junkie_history            ### i don't get this one :-/
setopt     no_csh_junkie_loops              ### this enables some history shortcuts, that csh users might be used to
setopt     no_csh_junkie_quotes             ### change the way "" and '' work to match csh
setopt     no_ksh_arrays                    ### emulate ksh array handling
setopt     no_ksh_option_print              ### changes the output of setopt without arguments
setopt     no_posix_builtins                ### when set, the command 'builtin' can be used to execute shell builtins
setopt     no_sh_file_expansion             ### perform filename expansion (e.g., ~ expansion) before parameter expansion,
                                            ###   command substitution, arithmetic expansion and brace expansion. if this
                                            ###   option is unset, it is performed after brace expansion, so things
                                            ###   like `~$USERNAME' and `~{pfalstad,rc}' will work.
setopt     no_sh_option_letters             ### try to interpret single-letter options to set{,opt} like ksh would.
setopt     no_sh_word_split                 ### sh-style wordsplitting; not for me.
if zis_31 "atleast" ; then
    setopt no_ksh_autoload                  ### emulate ksh function autoloading
fi
if zis_317 "atleast" ; then
    setopt no_sh_nullcmd                    ### use ':' instead of $NULLCMD and $READNULLCMD
    setopt no_csh_nullcmd                   ### ignore $NULLCMD and $READNULLCMD; redirection without command will fail.
fi
if zis_402 "atleast" ; then
    setopt no_ksh_typeset                   ### alters the typeset commands to match ksh's behaviour
fi
if zis_421 "atleast" ; then
    setopt no_traps_async                   ### handle signals and run traps immediately
fi

### }}}
### script+function options {{{

setopt     no_err_exit                      ### if set, execute ZERR trap and exit if a command returns non-zero
setopt        exec                          ### yes, _do_ run the commands i enter.
setopt        function_arg_zero             ### set ${0} to the function/script name
setopt        local_options                 ### shell options are to be restored after returning from a shell function
setopt        multios                       ### enable multiple redirections
setopt     no_verbose                       ### print shell input lines as they are read.
setopt     no_xtrace                        ### same as 'set -x'
if zis_316 "atleast" ; then
    setopt no_local_traps                   ### similar to 'local_options', but works on traps
fi
if zis_317 "atleast" ; then
    setopt    octal_zeroes                  ### print octal values the '0741' way
fi
if zis_40 "atleast" ; then
    setopt    c_bases                       ### output hex-numbers in '0x1F' format (see 'octal_zeroes')
fi
if zis_422 "atleast" ; then
    setopt    eval_lineno                   ### linenumbers of expressions in 'eval' are tracked seperately
fi
if zis_41 "atleast" ; then
    setopt no_err_return                    ### similar to 'err_exit' but a 'return' would be executed rather than an 'exit'
    setopt no_typeset_silent                ### if this is unset, executing any of the 'typeset' family of commands
                                            ###   with no options and a list of parameters that have no values to be
                                            ###   assigned but already exist will display the value of the parameter.
                                            ###   if the option is set, they will only be shown when parameters are
                                            ###   selected with the '-m' option. the option '-p' is available whether
                                            ###   or not the option is set.
fi
if zis_43 "atleast" ; then
    setopt    warn_create_global            ### print a warning when creating a global parameter by an assignment
                                            ###   in a function
fi

### }}}
### chdir options {{{

setopt     no_autocd                        ### if a directoryname is entered like a command, and there is no command
                                            ###   of that name; the 'cd' command is executed for that directory
setopt        auto_pushd                    ### make cd push the old directory to the dirstack
setopt     no_cdable_vars                   ### if cd would fail, because the arg is not a dir, try to expand the
                                            ###   argument as if it was called the ~expression way
setopt        chase_links                   ### _just_don't_lie_to_me_
setopt        pushd_ignore_dups             ### don't push dups on the dirstack
setopt        pushd_minus                   ### Exchanges the meanings of `+' and `-' when used with a number to
                                            ###   specify a directory in the stack.
setopt     no_pushd_silent                  ### do not print the dirstack after popd/pushd
setopt     no_pushd_to_home                 ### make 'pushd' with no argument, act like 'pushd ${HOME}'
if zis_316 "atleast" ; then
    setopt    chase_dots                    ### _just_don't_lie_to_me_
fi

### }}}
### job control options {{{

setopt     no_auto_resume                   ### if you've got a simple command suspened, say 'mutt',
                                            ###   and you forgot that you have already got a mutt running and try
                                            ###   to start another mutt, the old running mutt is resumed, rather
                                            ###   than starting a new process
setopt     no_bg_nice                       ### run background jobs at lower priority
setopt     no_hup                           ### send SIGHUP to background processes on exit.
setopt        long_list_jobs                ### list jobs in the long format by default
setopt        monitor                       ### allow job control; _absolutely_yes_
setopt        notify                        ### report status of background jobs immediately
if zis_317 "atleast" ; then
    setopt    check_jobs                    ### report status of bg-jobs if exiting a shell with job control enabled
fi
if zis_41 "atleast" ; then
    setopt no_auto_continue                 ### if set, stopped jobs are disowned and restarted immediately;
                                            ###   i don't see, why you would want this.
fi

### }}}
### prompt options {{{

setopt     no_prompt_cr                     ### print '\r' before printing the prompt.
setopt        prompt_subst                  ### turn on various expansions in prompts
if zis_314 "atleast" ; then
    setopt no_prompt_bang                   ### if set, '!' is treated specially in prompt expansion.
    setopt    prompt_percent                ### if set, '%' is treated specially in prompt expansion.
fi
if zis_41 "atleast" ; then
    setopt    transient_rprompt             ### remove any right prompt from display when accepting a command line.
                                            ###   this may be useful with terminals with other cut/paste methods.
fi
if zis_43 "atleast" ; then
    setopt no_prompt_sp                     ### attempt to preserve partial lines (no effect if 'prompt_cr' is unset).
fi

### }}}
### line editor options {{{

setopt     no_beep                          ### beep on error in zle; hell _no_!
setopt     no_overstrike                    ### start zle in overstrike mode
setopt     no_single_line_zle               ### switch of multiline editing; who would want this?
setopt        zle                           ### use the zsh-line-editor
if zis_41 "atleast" ; then
    setopt no_vi                            ### bindkey -v equivalent
    setopt    emacs                         ### bindkey -e equivalent
fi

### }}}
### state options {{{

setopt     no_privileged                    ### turn on privileged mode.
setopt     no_rc_quotes                     ### allow the character sequence _''_ to signify a single quote
                                            ###   within singly quoted strings. note this does not apply in quoted strings
if zis_31 "atleast" ; then
    setopt no_restricted                    ### turn on restricted mode.
fi
if zis_316 "atleast" ; then
    setopt no_single_command                ### make the shell exit after the first command from stdin
fi

### the following options are just included for completeness
### you don't have to set these, they are normally set
### to the right value automatically.
#setopt     no_login                         ### set state to "login shell"
#setopt     shin_stdin                       ### commands are being read from the standard input. commands are read
#                                            ###   from standard input if no command is specified with '-c' and no
#                                            ###   file of commands is specified. if SHIN_STDIN is set explicitly on
#                                            ###   the command line, any argument that would otherwise have been
#                                            ###   taken as a file to run will instead be treated as a normal
#                                            ###   positional parameter. note that setting or unsetting this option
#                                            ###   on the command line does not necessarily affect the state the option
#                                            ###   will have while the shell is running - that is purely an indicator
#                                            ###   of whether on not commands are actually being read from standard
#                                            ###   input. the value of this option cannot be changed anywhere other
#                                            ###   than the command line.
#setopt     interactive                      ### this is an interactive shell.

### }}}