-- vim: foldenable local system = function(cmd) return function() local args = vim.split(cmd, ' ') local command = args[1] table.remove(args, 1) return table.concat(require('plenary.job'):new({ command = command, args = args, enable_recording = true, }):sync(), '\n') end end local U = require'snippets.utils' require('snippets').snippets = { _global = { nowutc = [[${=os.date("!%Y-%m-%dT%H:%M:%SZ")}]], nowloc = [[${=os.date("%Y-%m-%dT%H:%M:%S%z")}]], ok = "✔", bad = "✘", todo = U.force_comment [[NOTE(${=io.popen("id -un"):read"*l"}): ]], note = U.force_comment [[TODO(${=io.popen("id -un"):read"*l"}): ]], }, sh = { -- {{{ skel = U.match_indentation [[ #!/bin/sh set -e [ -n "\$DEBUG" ] && set -x ]], deps = U.match_indentation [[ # check requirements for tool in ${1}; do if ! command -v "\$tool" >/dev/null; then printf "%s: %s not installed but required\n" "\$(basename "\$0")" "\$tool" >&2 exit 1 fi done ]], getopt = U.match_indentation [[ ${2}= while getopts ${1}h opt; do case "\$opt" in ${1}) ${2}=1 ;; h|?) printf "usage: %s [-h]\n" "\$(basename "\$0")" printf "\n" printf " -${1} \t ${2}\n" printf "\n" exit 2 ;; esac done shift \$((OPTIND - 1)) ]], }, -- }}} tex = { -- {{{ brief = U.match_indentation [[ \documentclass{dinbrief} \usepackage{graphicx} \usepackage[a4paper,margin=30truemm]{geometry} % language \usepackage{polyglossia} \setdefaultlanguage[spelling=new]{german} % font \usepackage{fontspec} \setmainfont{IBM Plex Sans} \setmonofont{IBM Plex Mono} % dinbrief options \nowindowtics \nowindowrules % unterschrift \newcommand{\setsign}{\includegraphics[height=30truemm]{/home/robert/Pictures/sign.png}} \signature{Robert Günzler} \address{ % absender Robert Günzler \\\\ ${4:STREET} \\\\ ${5:PLZ} Berlin} \date{\today} \place{Berlin} % betreff % \subject{{\bf anliegen}} \begin{document} \begin{letter}{ % empfänger ${1} \opening{${2:Sehr geehrte Damen und Herren,}} ${0} \vspace{10truemm} \closing[\protect\setsign]{${3:Mit freundlichen Grüßen}} \end{letter} \end{document} ]], }, -- }}} }