provide-module zona %~ # utility commands for writing blog posts with zona ## begin public options declare-option -docstring %{ URL of the zona server. } \ str zona_url "http://localhost:8000" declare-option -docstring %{ Full path to the zona project. } \ str zona_path "/home/fic/dev/ficd.sh" declare-option -docstring %{ Command to call zona. } \ str zona_cmd "zona" declare-option -docstring %{ Command to open URL. } \ str zona_url_cmd "firefox" ## end public options declare-option -hidden int zona_pid 0 define-command -docstring %{ Open the current page in browser. -delay switch waits for 1 second before opening. } \ -params 0..1 zona-open %{ nop %sh{ { if [ "$1" = '-delay' ]; then sleep 1 fi url="$kak_opt_zona_url" case "$kak_buffile" in */content/*.md | */content/*.html) rel="${kak_buffile#*/content/}" rel="${rel%.md}" rel="${rel%.html}" case "$rel" in */index) rel="${rel%/index}" ;; index) rel="" ;; esac url="${url}/${rel}" ;; esac "$kak_opt_zona_url_cmd" "$url" } >/dev/null 2>&1 /dev/null 2>&1 /dev/null; then kill "$kak_opt_zona_pid" printf 'set-option global zona_pid 0\n' else printf 'fail Process %s does not exist' "$kak_opt_zona_pid" fi } } ~