From e7a6d6ef762945d979044e924cd12452acb50459 Mon Sep 17 00:00:00 2001 From: Byron Torres Date: Tue, 14 Jun 2022 23:48:57 +0100 Subject: add plugin/haredoc.vim, make :Haredoc global --- plugin/haredoc.vim | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 plugin/haredoc.vim (limited to 'plugin/haredoc.vim') diff --git a/plugin/haredoc.vim b/plugin/haredoc.vim new file mode 100644 index 0000000..65171fa --- /dev/null +++ b/plugin/haredoc.vim @@ -0,0 +1,47 @@ +" Haredoc plugin -- Hare documentation in vim +" Maintainer: Byron Torres +" Last Updated: 2022-06-15 +" License: Vim License + +command -nargs=? Haredoc :call Haredoc() + +function Haredoc(symbol) + let symbol = a:symbol + let popup = 0 + if symbol == '.' + let popup = 1 + let oldiskeyword = &iskeyword + setlocal iskeyword+=: + let symbol = expand('') + let &iskeyword = oldiskeyword + endif + if has('terminal') && has('popupwin') && popup == 1 + let minheight = 1 + system( + \ "haredoc -Ftty '"..symbol.."' 2>&1 | wc -l" + \ ) + let buf = term_start( + \ [ + \ 'sh', '-c', + \ "haredoc -Ftty '"..symbol.."' 2>&1 | less -RK", + \ ], + \ #{hidden: 1, term_finish: 'close'}, + \ ) + let winid = popup_atcursor( + \ buf, + \ #{ + \ col: 'cursor-'..virtcol('.'), + \ minwidth: 84, + \ minheight: minheight, + \ fixed: v:false, + \ wrap: v:false, + \ border: [1, 1, 1, 1], + \ }, + \ ) + elseif has('terminal') + execute 'terminal ++noclose haredoc '..symbol + set nonumber + nnoremap q :close + else + execute '!haredoc '..symbol + endif +endfunction -- cgit v1.2.3