note-store/completions/note.zsh-completion
2024-05-20 11:22:14 +07:00

64 lines
1.4 KiB
Plaintext

#compdef note
#
# Completion script for note
#
_note () {
local cmd
if (( CURRENT > 2)); then
cmd=${words[2]}
curcontext="${curcontext%:*:*}:note-$cmd"
(( CURRENT-- ))
shift words
case "${cmd}" in
init)
;;
find)
_note_complete_entries_with_subdirs
;;
show|ls|list|edit)
_note_complete_entries_with_subdirs
;;
cp|copy|mv|rename|rm)
_note_complete_entries_with_subdirs
;;
rm|delete|remove)
_note_complete_entries_with_subdirs
;;
esac
else
local -a subcommands
subcommands=(
"init:Initialize new note storage"
"ls:List note"
"find:Find note files or directories based on pattern"
"grep:Search note files for matching pattern"
"show:Print a note"
"edit:Edit a note with \$EDITOR"
"mv:Rename the note"
"cp:Copy the note"
"rm:Remove the note"
"version:Output version information"
"help:Output help message"
)
_describe -t commands 'note' subcommands
fi
}
_note_complete_entries_helper () {
local IFS=$'\n'
local notepath
zstyle -s ":completion:${curcontext}:" notepath notepath || notepath="${NOTE_STORE_DIR:-$HOME/.note-store}"
_values -C 'notes' ${$(find -L "$notepath" \( -name .git \) -prune -o $@ -print 2>/dev/null | sed -e "s#${notepath}/\{0,1\}##" -e 's#\.md##' -e 's#\\#\\\\#g' -e 's#:#\\:#g' | sort):-""}
}
_note_complete_entries_with_subdirs () {
_note_complete_entries_helper
}
_note_complete_entries () {
_note_complete_entries_helper -type f
}
_note