From 95aea6b533e71e478d61d18fac71cca116c56a4d Mon Sep 17 00:00:00 2001 From: Michael Smith Date: Sun, 22 May 2022 22:47:23 +0100 Subject: Add all the plugins I currently use --- start/signify/autoload/sy/util.vim | 109 +++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 start/signify/autoload/sy/util.vim (limited to 'start/signify/autoload/sy/util.vim') diff --git a/start/signify/autoload/sy/util.vim b/start/signify/autoload/sy/util.vim new file mode 100644 index 0000000..43a9cc6 --- /dev/null +++ b/start/signify/autoload/sy/util.vim @@ -0,0 +1,109 @@ +" vim: et sw=2 sts=2 + +scriptencoding utf-8 + +" Function: #escape {{{1 +function! sy#util#escape(path) abort + if exists('+shellslash') + let old_ssl = &shellslash + if fnamemodify(&shell, ':t') == 'cmd.exe' + set noshellslash + else + set shellslash + endif + endif + + let path = shellescape(a:path) + + if exists('old_ssl') + let &shellslash = old_ssl + endif + + return path +endfunction + +" Function: #refresh_windows {{{1 +function! sy#util#refresh_windows() abort + if exists('*win_getid') + let winid = win_getid() + else + let winnr = winnr() + endif + + if !get(g:, 'signify_cmdwin_active') + keepjumps windo if exists('b:sy') | call sy#start() | endif + endif + + if exists('winid') + call win_gotoid(winid) + else + execute winnr .'wincmd w' + endif +endfunction + +" Function: #hunk_text_object {{{1 +function! sy#util#hunk_text_object(emptylines) abort + execute sy#util#return_if_no_changes() + + let lnum = line('.') + let hunks = filter(copy(b:sy.hunks), 'v:val.start <= lnum && v:val.end >= lnum') + + if empty(hunks) + echomsg 'signify: Here is no hunk.' + return + endif + + execute hunks[0].start + normal! V + + if a:emptylines + let lnum = hunks[0].end + while getline(lnum+1) =~ '^$' + let lnum += 1 + endwhile + execute lnum + else + execute hunks[0].end + endif +endfunction + +" Function: #shell_redirect {{{1 +function! sy#util#shell_redirect(path) abort + " if shellredir contains a %s it is replaced with the path + " otherwise, just append it (from :help shellredir: + " The name of the temporary file can be represented by '%s' if necessary + " (the file name is appended automatically if no %s appears in the value + " of this option) + if &shellredir =~# '%s' + return substitute(&shellredir, '\C%s', a:path, 'g') + else + return &shellredir .' '. a:path + endif +endfunction + +" Function: #chdir {{{1 +function! sy#util#chdir() abort + let chdir = haslocaldir() + \ ? 'lcd' + \ : (exists(':tcd') && haslocaldir(-1, 0)) ? 'tcd' : 'cd' + return [getcwd(), chdir] +endfunction + +" Function: #has_changes {{{1 +function! sy#util#return_if_no_changes() abort + if !exists('b:sy') || empty(b:sy.hunks) + echomsg 'signify: There are no changes.' + return 'return' + endif + return '' +endfunction + +" Function: #execute {{{1 +function! sy#util#execute(cmd) abort + let lang = v:lang + redir => output + silent! execute a:cmd + redir END + silent! execute 'language message' lang + return output +endfunction -- cgit v1.2.3