From 15a7ac4890dea48be140350c295d4d9ea05292ee Mon Sep 17 00:00:00 2001 From: Robert Günzler Date: Tue, 2 Nov 2021 17:30:24 +0100 Subject: vim: switch from ultisnips+snippets.nvim to snippy --- .vim/UltiSnips/all.snippets | 32 ------ .vim/UltiSnips/dockerfile.snippets | 31 ------ .vim/UltiSnips/ebuild.snippets | 25 ----- .vim/UltiSnips/go.snippets | 11 -- .vim/UltiSnips/mail.snippets | 18 ---- .vim/UltiSnips/markdown.snippets | 43 -------- .vim/UltiSnips/sh.snippets | 57 ---------- .vim/UltiSnips/tex.snippets | 81 --------------- .vim/UltiSnips/vimwiki.snippets | 1 - .vim/after/snippets/_.snippets | 22 ++++ .vim/after/snippets/dockerfile.snippets.todo | 31 ++++++ .vim/after/snippets/ebuild.snippets.todo | 25 +++++ .vim/after/snippets/go.snippets.todo | 11 ++ .vim/after/snippets/mail.snippets.todo | 18 ++++ .vim/after/snippets/markdown.snippets.todo | 43 ++++++++ .vim/after/snippets/sh.snippets | 48 +++++++++ .vim/after/snippets/tex.snippets.todo | 81 +++++++++++++++ .vim/autoload/snips.vim | 8 ++ .vim/lua/plugins.lua | 30 +++--- .vim/lua/snips.lua | 150 ++++++--------------------- 20 files changed, 332 insertions(+), 434 deletions(-) delete mode 100644 .vim/UltiSnips/all.snippets delete mode 100644 .vim/UltiSnips/dockerfile.snippets delete mode 100644 .vim/UltiSnips/ebuild.snippets delete mode 100644 .vim/UltiSnips/go.snippets delete mode 100644 .vim/UltiSnips/mail.snippets delete mode 100644 .vim/UltiSnips/markdown.snippets delete mode 100644 .vim/UltiSnips/sh.snippets delete mode 100644 .vim/UltiSnips/tex.snippets delete mode 120000 .vim/UltiSnips/vimwiki.snippets create mode 100644 .vim/after/snippets/_.snippets create mode 100644 .vim/after/snippets/dockerfile.snippets.todo create mode 100644 .vim/after/snippets/ebuild.snippets.todo create mode 100644 .vim/after/snippets/go.snippets.todo create mode 100644 .vim/after/snippets/mail.snippets.todo create mode 100644 .vim/after/snippets/markdown.snippets.todo create mode 100644 .vim/after/snippets/sh.snippets create mode 100644 .vim/after/snippets/tex.snippets.todo create mode 100644 .vim/autoload/snips.vim (limited to '.vim') diff --git a/.vim/UltiSnips/all.snippets b/.vim/UltiSnips/all.snippets deleted file mode 100644 index 0848883..0000000 --- a/.vim/UltiSnips/all.snippets +++ /dev/null @@ -1,32 +0,0 @@ -snippet sign "Robert Günzler " -Robert Günzler -endsnippet - -snippet now-utc "YYYY-MM-DDThh:mm:ssZ" -`now` -endsnippet - -snippet now-loca "YYYY-MM-DDThh:mm:ssZ" -`now -here` -endsnippet - -snippet today "YYYY-MM-DD" -`date +%Y-%m-%d` -endsnippet - -snippet todaytime "YYYY-MM-DDThh:mm" -`date +%Y-%m-%dT%H:%M` -endsnippet - -snippet ok "✔" -✔ -endsnippet -snippet bad "✘" -✘ -endsnippet -snippet arrow "→" -→ -endsnippet -snippet arrowb "⇒" -⇒ -endsnippet diff --git a/.vim/UltiSnips/dockerfile.snippets b/.vim/UltiSnips/dockerfile.snippets deleted file mode 100644 index c8d7502..0000000 --- a/.vim/UltiSnips/dockerfile.snippets +++ /dev/null @@ -1,31 +0,0 @@ -# vim: ft=snippets: - -snippet FROM:skel "skeleton" b -#syntax=docker/dockerfile:1.2 - -FROM docker.io/library/alpine:3${1} -$0 - -#vim: ft=Dockerfile: -endsnippet - -snippet FROM:alpine "FROM --platform=$BUILDPLATFORM" -FROM --platform=$BUILDPLATFORM docker.io/library/alpine:3${1} AS base -ARG TARGETPLATFORM -RUN apk -U add --no-cache $0 -endsnippet - -snippet FROM:final "FROM scratch AS final" -FROM scratch AS final -COPY --from=build /out/* / -endsnippet - -snippet RUN "RUN" b -RUN --mount=target=. \ - --mount=target=${1:/root/.cache},type=cache \ - ${0} -endsnippet - -snippet FROM:xx "tonistiigi/xx" b -FROM --platform=$BUILDPLATFORM docker.io/tonistiigi/xx:${1:golang} AS xx -endsnippet diff --git a/.vim/UltiSnips/ebuild.snippets b/.vim/UltiSnips/ebuild.snippets deleted file mode 100644 index 6856c61..0000000 --- a/.vim/UltiSnips/ebuild.snippets +++ /dev/null @@ -1,25 +0,0 @@ -snippet eapi7 "eapi7" -# Copyright `!v strftime('%Y')` Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -DESCRIPTION="$2" -HOMEPAGE="$3" - -if [[ ${PV} = *9999* ]]; then - inherit git-r3 - EGIT_REPO_URI="https://github.com/$1/${PN}.git" -else - SRC_URI="https://github.com/$1/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" -fi - -LICENSE="MIT" -SLOT="0" -IUSE="" -KEYWORDS="~amd64 ~arm64 ~x86" - -DEPEND="$0" -RDEPEND="${DEPEND}" -BDEPEND="" -endsnippet diff --git a/.vim/UltiSnips/go.snippets b/.vim/UltiSnips/go.snippets deleted file mode 100644 index 3152e3a..0000000 --- a/.vim/UltiSnips/go.snippets +++ /dev/null @@ -1,11 +0,0 @@ -snippet main "func main()" -func main() { - ${0} -} -endsnippet - -snippet hfn "http.HandlerFunc" -func $1(w http.ResponseWriter, r *http.Request) { - $0 -} -endsnippet diff --git a/.vim/UltiSnips/mail.snippets b/.vim/UltiSnips/mail.snippets deleted file mode 100644 index 1b49c9d..0000000 --- a/.vim/UltiSnips/mail.snippets +++ /dev/null @@ -1,18 +0,0 @@ - -snippet sehr "Sehr geehrte (...)" -Sehr geehrte Damen und Herren, - -$0 -endsnippet - -snippet mfg "Mit freundlichen Grüßen" -Mit freundlichen Grüßen, - -Robert Günzler -endsnippet - -snippet sign "Signature" -${1:Cheers}, - -Robert Günzler -endsnippet diff --git a/.vim/UltiSnips/markdown.snippets b/.vim/UltiSnips/markdown.snippets deleted file mode 100644 index 641e77c..0000000 --- a/.vim/UltiSnips/markdown.snippets +++ /dev/null @@ -1,43 +0,0 @@ -snippet new "new page" b ---- -date: "`now`" -title: "$0" ---- -endsnippet - -snippet link "Link" -[$1](${2:${VISUAL}}) -endsnippet - -snippet code "Code block" b -\`\`\`$1 -${2:${VISUAL}} -\`\`\` -$0 -endsnippet - -snippet detail "Detail block" b -
-$1 - -${2:${VISUAL}} - -
-$0 -endsnippet - -snippet todo "todo: generic" -* [ ] $0 -endsnippet - -snippet todoKV "todo: krankenversicherung" -* [ ] $0 - - [ ] überweisung - - [ ] beleg einreichen - - [ ] filings - - [ ] refund -endsnippet - -snippet furigana -$\stackrel{\text{$2}}{\text{$1}}$$0 -endsnippet diff --git a/.vim/UltiSnips/sh.snippets b/.vim/UltiSnips/sh.snippets deleted file mode 100644 index 76538aa..0000000 --- a/.vim/UltiSnips/sh.snippets +++ /dev/null @@ -1,57 +0,0 @@ -snippet skel "skeleton" -#!/bin/sh - -set -e -[ -n "$DEBUG" ] && set -x - -$0 -endsnippet - -snippet usage "usage" -usage() { - printf "usage: %s" "$(basename "\$0")\n" - printf "\n" - printf "$1\n" -} - -case "\$1" in --h) usage && exit 0 ;; -esac - -$0 -endsnippet - -snippet getopt "while getopts" -$2= -while getopts $1h 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)) -endsnippet - -snippet deps "for app in" -# 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 - -$0 -endsnippet - -snippet doc "script docs" -# -# DESCRIPTION: -# $1 -# -$0 -endsnippet diff --git a/.vim/UltiSnips/tex.snippets b/.vim/UltiSnips/tex.snippets deleted file mode 100644 index de9a974..0000000 --- a/.vim/UltiSnips/tex.snippets +++ /dev/null @@ -1,81 +0,0 @@ -snippet frac "\\frac" iA -\\frac{$1}{$2}$0 -endsnippet - -snippet fun "Function" wA -f: \R \to \R -endsnippet -snippet sum "\sum_" wA -\sum_{n=1}^{${1:\infty}} $0 -endsnippet -snippet !> "\mapsto" wA -\mapsto -endsnippet -snippet -> "\to" wA -\to -endsnippet - -snippet report "\documentclass{report}" -\documentclass{report} -\usepackage[a4paper,margin=30truemm]{geometry} -\usepackage{polyglossia} -% font -\usepackage{fontspec} -\setmainfont{IBM Plex Sans} -\setmonofont{IBM Plex Mono} - -\title{$1} -\author{Robert Günzler} -\date{\today} - -\begin{document} - -$0 - -\end{document} -endsnippet - -snippet brief "\documentclass{dinbrief}" -\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 \\\\ - STREET \\\\ - 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} -endsnippet diff --git a/.vim/UltiSnips/vimwiki.snippets b/.vim/UltiSnips/vimwiki.snippets deleted file mode 120000 index 80d79ae..0000000 --- a/.vim/UltiSnips/vimwiki.snippets +++ /dev/null @@ -1 +0,0 @@ -markdown.snippets \ No newline at end of file diff --git a/.vim/after/snippets/_.snippets b/.vim/after/snippets/_.snippets new file mode 100644 index 0000000..7c99bd0 --- /dev/null +++ b/.vim/after/snippets/_.snippets @@ -0,0 +1,22 @@ +snippet sign "Robert Günzler " + Robert Günzler +snippet me "git user id" + `snips#exec('git config --get user.name')` <`snips#exec('git config --get user.email')`> +snippet today "YYYY-MM-DD" + `luaeval("os.date('%Y-%m-%d')")` +snippet nowutc "YYYY-MM-DDThh:mm:ssZ" + `luaeval("os.date('!%Y-%m-%dT%H:%M:%SZ')")` +snippet nowloc "YYYY-MM-DDThh:mm:ssZ" + `luaeval("os.date('%Y-%m-%dT%H:%M:%SZ')")` +snippet ok "✔" + ✔ +snippet bad "✘" + ✘ +snippet arrow "→" + → +snippet arrowb "⇒" + ⇒ +snippet todo "TODO(): ..." + `snips#comment('TODO(' .. snips#exec('id -un') .. '):')` $0 +snippet note "NOTE(): ..." + `snips#comment('NOTE(' .. snips#exec('id -un') .. '):')` $0 diff --git a/.vim/after/snippets/dockerfile.snippets.todo b/.vim/after/snippets/dockerfile.snippets.todo new file mode 100644 index 0000000..c8d7502 --- /dev/null +++ b/.vim/after/snippets/dockerfile.snippets.todo @@ -0,0 +1,31 @@ +# vim: ft=snippets: + +snippet FROM:skel "skeleton" b +#syntax=docker/dockerfile:1.2 + +FROM docker.io/library/alpine:3${1} +$0 + +#vim: ft=Dockerfile: +endsnippet + +snippet FROM:alpine "FROM --platform=$BUILDPLATFORM" +FROM --platform=$BUILDPLATFORM docker.io/library/alpine:3${1} AS base +ARG TARGETPLATFORM +RUN apk -U add --no-cache $0 +endsnippet + +snippet FROM:final "FROM scratch AS final" +FROM scratch AS final +COPY --from=build /out/* / +endsnippet + +snippet RUN "RUN" b +RUN --mount=target=. \ + --mount=target=${1:/root/.cache},type=cache \ + ${0} +endsnippet + +snippet FROM:xx "tonistiigi/xx" b +FROM --platform=$BUILDPLATFORM docker.io/tonistiigi/xx:${1:golang} AS xx +endsnippet diff --git a/.vim/after/snippets/ebuild.snippets.todo b/.vim/after/snippets/ebuild.snippets.todo new file mode 100644 index 0000000..6856c61 --- /dev/null +++ b/.vim/after/snippets/ebuild.snippets.todo @@ -0,0 +1,25 @@ +snippet eapi7 "eapi7" +# Copyright `!v strftime('%Y')` Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +DESCRIPTION="$2" +HOMEPAGE="$3" + +if [[ ${PV} = *9999* ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/$1/${PN}.git" +else + SRC_URI="https://github.com/$1/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" +fi + +LICENSE="MIT" +SLOT="0" +IUSE="" +KEYWORDS="~amd64 ~arm64 ~x86" + +DEPEND="$0" +RDEPEND="${DEPEND}" +BDEPEND="" +endsnippet diff --git a/.vim/after/snippets/go.snippets.todo b/.vim/after/snippets/go.snippets.todo new file mode 100644 index 0000000..3152e3a --- /dev/null +++ b/.vim/after/snippets/go.snippets.todo @@ -0,0 +1,11 @@ +snippet main "func main()" +func main() { + ${0} +} +endsnippet + +snippet hfn "http.HandlerFunc" +func $1(w http.ResponseWriter, r *http.Request) { + $0 +} +endsnippet diff --git a/.vim/after/snippets/mail.snippets.todo b/.vim/after/snippets/mail.snippets.todo new file mode 100644 index 0000000..1b49c9d --- /dev/null +++ b/.vim/after/snippets/mail.snippets.todo @@ -0,0 +1,18 @@ + +snippet sehr "Sehr geehrte (...)" +Sehr geehrte Damen und Herren, + +$0 +endsnippet + +snippet mfg "Mit freundlichen Grüßen" +Mit freundlichen Grüßen, + +Robert Günzler +endsnippet + +snippet sign "Signature" +${1:Cheers}, + +Robert Günzler +endsnippet diff --git a/.vim/after/snippets/markdown.snippets.todo b/.vim/after/snippets/markdown.snippets.todo new file mode 100644 index 0000000..641e77c --- /dev/null +++ b/.vim/after/snippets/markdown.snippets.todo @@ -0,0 +1,43 @@ +snippet new "new page" b +--- +date: "`now`" +title: "$0" +--- +endsnippet + +snippet link "Link" +[$1](${2:${VISUAL}}) +endsnippet + +snippet code "Code block" b +\`\`\`$1 +${2:${VISUAL}} +\`\`\` +$0 +endsnippet + +snippet detail "Detail block" b +
+$1 + +${2:${VISUAL}} + +
+$0 +endsnippet + +snippet todo "todo: generic" +* [ ] $0 +endsnippet + +snippet todoKV "todo: krankenversicherung" +* [ ] $0 + - [ ] überweisung + - [ ] beleg einreichen + - [ ] filings + - [ ] refund +endsnippet + +snippet furigana +$\stackrel{\text{$2}}{\text{$1}}$$0 +endsnippet diff --git a/.vim/after/snippets/sh.snippets b/.vim/after/snippets/sh.snippets new file mode 100644 index 0000000..99b8cb7 --- /dev/null +++ b/.vim/after/snippets/sh.snippets @@ -0,0 +1,48 @@ +snippet skel "skeleton" + #!/bin/sh + + set -e + [ -n "$DEBUG" ] && set -x + + $0 +snippet usage "usage" + usage() { + printf "usage: %s" "$(basename "\$0")\n" + printf "\n" + printf "$1\n" + } + + case "\$1" in + -h) usage && exit 0 ;; + esac + + $0 +snippet getopt "while getopts" + $2= + while getopts $1h 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)) +snippet deps "for app in" + # 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 + + $0 +snippet doc "script docs" + # + # DESCRIPTION: + # $1 + # + $0 diff --git a/.vim/after/snippets/tex.snippets.todo b/.vim/after/snippets/tex.snippets.todo new file mode 100644 index 0000000..de9a974 --- /dev/null +++ b/.vim/after/snippets/tex.snippets.todo @@ -0,0 +1,81 @@ +snippet frac "\\frac" iA +\\frac{$1}{$2}$0 +endsnippet + +snippet fun "Function" wA +f: \R \to \R +endsnippet +snippet sum "\sum_" wA +\sum_{n=1}^{${1:\infty}} $0 +endsnippet +snippet !> "\mapsto" wA +\mapsto +endsnippet +snippet -> "\to" wA +\to +endsnippet + +snippet report "\documentclass{report}" +\documentclass{report} +\usepackage[a4paper,margin=30truemm]{geometry} +\usepackage{polyglossia} +% font +\usepackage{fontspec} +\setmainfont{IBM Plex Sans} +\setmonofont{IBM Plex Mono} + +\title{$1} +\author{Robert Günzler} +\date{\today} + +\begin{document} + +$0 + +\end{document} +endsnippet + +snippet brief "\documentclass{dinbrief}" +\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 \\\\ + STREET \\\\ + 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} +endsnippet diff --git a/.vim/autoload/snips.vim b/.vim/autoload/snips.vim new file mode 100644 index 0000000..3136c2a --- /dev/null +++ b/.vim/autoload/snips.vim @@ -0,0 +1,8 @@ + +function snips#exec(arg) + return luaeval("require('snips').exec")(a:arg) +endfunction + +function snips#comment(arg) + return luaeval("require('snips').comment")(a:arg) +endfunction diff --git a/.vim/lua/plugins.lua b/.vim/lua/plugins.lua index 7b15a7a..7d19781 100644 --- a/.vim/lua/plugins.lua +++ b/.vim/lua/plugins.lua @@ -1,4 +1,6 @@ --- vim: foldenable +-- vim: fen fdm=marker fdl=0 +---@diagnostic disable: undefined-global + -- load by calling `lua require('plugins')` from your init.vim local g = vim.g @@ -332,25 +334,19 @@ return require('packer').startup({function() use {'tjdevries/astronauta.nvim'} -- snippets - use {'SirVer/ultisnips', -- {{{ - disable = true, - requires = {'honza/vim-snippets'}, + use {'dcampos/nvim-snippy', -- {{{} + requires = { + 'honza/vim-snippets' + }, config = function() - vim.g.UltiSnipsJumpForwardTrigger = "" - vim.g.UltiSnipsJumpBackwardTrigger = "" + local S = require('snippy') + local K = require('astronauta.keymap') + K.inoremap { '', function() if S.can_jump(1) then S.next() else return '' end end } + K.inoremap { '', function() if S.can_jump(-1) then S.previous() else return '' end end } + K.snoremap { '', function() if S.can_jump(1) then S.next() else return '' end end } + K.snoremap { '', function() if S.can_jump(-1) then S.previous() else return '' end end } end} -- }}} - use {'norcalli/snippets.nvim', - config = function() - require('snippets').use_suggested_mappings() - -- NOTE(robert): write your own inserter using the plenary helpers - require('snips') - end} - - -- use {'L3MON4D3/LuaSnip', - -- config = "require('plugins._ultisnips')", - -- } - use {'junegunn/vim-easy-align'} use {'editorconfig/editorconfig-vim', -- {{{ diff --git a/.vim/lua/snips.lua b/.vim/lua/snips.lua index b15ffbf..b8c8b77 100644 --- a/.vim/lua/snips.lua +++ b/.vim/lua/snips.lua @@ -1,122 +1,36 @@ --- vim: foldenable +local M = {} -local system = function(cmd) - return function() - local args = vim.split(cmd, ' ') - local command = args[1] - table.remove(args, 1) - local output = require('plenary.job'):new({ - command = command, - args = args, - enable_recording = true, - }):sync() - if #output > 1 then - return table.concat(output, '\n') - else - return output[1] - end - end +M.exec = function(cmd) + return io.popen(cmd):read'*l' end -local U = require'snippets.utils' -require('snippets').snippets = { - _global = { - today = [[${=os.date("%Y-%m-%d")}]], - nowutc = [[${=os.date("!%Y-%m-%dT%H:%M:%SZ")}]], - nowloc = [[${=os.date("%Y-%m-%dT%H:%M:%S%z")}]], - - me = [[${=io.popen('git config --get user.name'):read"*l"} <${=io.popen('git config --get user.email'):read"*l"}>]], - - ok = "✔", - bad = "✘", - - todo = U.force_comment [[TODO(${=io.popen("id -un"):read"*l"}): ]], - note = U.force_comment [[NOTE(${=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} -]], - }, -- }}} +local function find_sub(s, replacement, pattern, start, special) + local x1, x2 = s:find(pattern, start, special) + if x1 then + return s:sub(1, x1-1) .. replacement .. s:sub(x2+1), x1, x2 + end + return s +end +-- Only works with prefix comments. +local function get_line_comment() + local cms = vim.bo.commentstring + -- This whole pesc dance is a bummer. + local pattern = '^(%s*)' .. + (find_sub(vim.pesc((find_sub(cms, '\0', '%s', 1, true))), '(%s*).*', '\0', 1, true)) + local pre_ws, inner_ws = vim.api.nvim_get_current_line():match(pattern) + if pre_ws then + return pre_ws .. cms:format('') .. inner_ws + end + return '' +end +M.comment = function(str) + -- add space + local prefix = vim.bo.commentstring:format(''):gsub('%S$', '%0 ') + local comment = get_line_comment() + if comment ~= '' then + prefix = '' + end + return prefix .. str +end - org = { - todo = [[* TODO ]], - note = [[* ]], - } -} +return M -- cgit 1.4.1