#compdef jrnl # ------------------------------------------------------------------------------ # Copyright (c) 2016 Github zsh-users - https://github.com/zsh-users # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of the zsh-users nor the # names of its contributors may be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL ZSH-USERS BE LIABLE FOR ANY # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # ------------------------------------------------------------------------------ # Description # ----------- # # Completion script for jrnl v4.2.1 (https://github.com/jrnl-org/jrnl). # # ------------------------------------------------------------------------------ # Authors # ------- # # * Jindřich Pilař (https://github.com/JindrichPilar) # # ------------------------------------------------------------------------------ _jrnl() { typeset -A opt_args local context state line local curcontext="$curcontext" local ret=1 _arguments -C \ '--debug[Print information useful for troubleshooting]' \ '(- *)--help[Show help message]' \ '(- *)--version[print version information]' \ '--list[List all configured journals]' \ '--encrypt[Encrypt selected journal with a password]' \ '--decrypt[Decrypt selected journal and store it in plain text]' \ '--import[Import entries from another journal]' \ '-on[Show entries on this date]:date' \ '-today-in-history[Show entries of today over the years]' \ '-month[Show entries on this month of any year]:date' \ '-day[Show entries on this day of any month]:date' \ '-year[Show entries of a specific year]:date' \ '-from[Show entries after, or on, this date]:date' \ '(-to -until)'{-to,-until}'[Show entries before, or on, this date]' \ '-contains[Show entries containing specific text]:text' \ '-and[Show only entries that match all conditions(default: OR)]' \ '-starred[Show only starred entries (marked with *)]' \ '-tagged[Show only entries that have at least one tag]' \ '-n[Show a maximum of NUMBER entries. And "-3" has the same effect]:number' \ '-not[exclude entries with that tag]:tag_or_flag' \ '--edit[Opens the selected entries in your configured editor]' \ '--delete[Interactively deletes selected entries]' \ '--change-time[Change timestamp for selected entries(default: now)]:date' \ '--format[Display selected entries in an alternate format]:format:_jrnl_formats' \ '--tags[Alias for "--format tags"]' \ '--short[Show only titles or line containing the search tags]' \ '--config-override[Override configured key-value pair]:key_value' \ '--config-file[Override default config file]:path:_files' \ '*:: :->args' \ && ret=0 case $state in (args) if [[ $PREFIX = @* ]]; then local -a tags=($(jrnl --tags 2>/dev/null | command grep -oE '@\S+')) _describe -t tags 'tags' tags && ret=0 fi ;; esac return ret } (( $+functions[_jrnl_formats] )) || _jrnl_formats() { local -a formats if (( $+opt_args[--list] )); then formats=(json yaml) elif (( $+opt_args[--import] )); then formats=(jrnl) else formats=(boxed calendar dates fancy heatmap json markdown md pretty short tags text txt xml yaml) fi _values 'format' $formats } _jrnl "$@" # Local Variables: # mode: Shell-Script # sh-indentation: 2 # indent-tabs-mode: nil # sh-basic-offset: 2 # End: # vim: ft=zsh sw=2 ts=2 et