# Treat these characters as part of a word.
WORDCHARS='_-*?@~&.;!#$%^'

setopt INTERACTIVE_COMMENTS  # Allow comments on interactive shells
unsetopt BRACE_CCL           # Allow brace character class list expansion.
setopt COMBINING_CHARS       # Combine zero-length punc chars (accents) with base char
setopt RC_QUOTES             # Allow 'Henry''s Garage' instead of 'Henry'\''s Garage'
setopt HASH_LIST_ALL         # Make shell slower but more accurate on spell checking
unsetopt CORRECT_ALL
unsetopt NOMATCH
# setopt CORRECT               # Try to fix spelling error
unsetopt MAIL_WARNING        # Don't print a warning message if a mail file has been accessed.
unsetopt BEEP                # Silent
# setopt IGNOREEOF             # Use ^D for something else
# unsetopt TRANSIENT_RPROMPT   # No right prompt

# History
HISTSIZE=1000
SAVEHIST=1000
HISTFILE=$HOME/.local/share/zsh/zsh_history
HIST_STAMPS="mm/dd/yyyy"
setopt BANG_HIST                 # Don't treat '!' specially during expansion.
setopt EXTENDED_HISTORY          # Write the history file in the ':start:elapsed;command' format.
setopt APPEND_HISTORY            # Appends history to history file on exit
setopt INC_APPEND_HISTORY        # Write to the history file immediately, not when the shell exits.
setopt SHARE_HISTORY             # Share history between all sessions.
setopt HIST_EXPIRE_DUPS_FIRST    # Expire a duplicate event first when trimming history.
setopt HIST_IGNORE_DUPS          # Do not record an event that was just recorded again.
setopt HIST_IGNORE_ALL_DUPS      # Delete an old recorded event if a new event is a duplicate.
setopt HIST_FIND_NO_DUPS         # Do not display a previously found event.
setopt HIST_IGNORE_SPACE         # Do not record an event starting with a space.
setopt HIST_REDUCE_BLANKS
setopt HIST_SAVE_NO_DUPS         # Do not write a duplicate event to the history file.
setopt HIST_VERIFY               # Do not execute immediately upon history expansion.
setopt HIST_BEEP                 # Beep when accessing non-existent history.

# Jobs
setopt LONG_LIST_JOBS     # List jobs in the long format by default.
setopt AUTO_RESUME        # Attempt to resume existing job before creating a new process.
setopt NOTIFY             # Report status of background jobs immediately.
unsetopt BG_NICE          # Don't run all background jobs at a lower priority.
unsetopt HUP              # Don't kill jobs on shell exit.
unsetopt CHECK_JOBS       # Don't report on jobs when shell exit.

## Directories
DIRSTACKSIZE=10
setopt AUTO_CD              # Auto changes to a directory without typing cd.
setopt AUTO_PUSHD           # Push the old directory onto the stack on cd.
setopt PUSHD_IGNORE_DUPS    # Do not store duplicates in the stack.
setopt PUSHD_SILENT         # Do not print the directory stack after pushd or popd.
setopt PUSHD_TO_HOME        # Push to home directory when no argument is given.
setopt CDABLE_VARS          # Change directory to a path stored in a variable.
setopt MULTIOS              # Write to multiple descriptors.
setopt EXTENDED_GLOB        # Use extended globbing syntax.
setopt GLOB_DOTS            # Include hidden files without '.'
setopt NUMERIC_GLOB_SORT    # Sort alphabetically
setopt MARK_DIRS            # Append '\' to directories' names
unsetopt AUTO_NAME_DIRS     # Don't add variable-stored paths to ~ list
