Relocate some vimrc template functions to an autocmd group

This commit is contained in:
Michael Campagnaro 2021-12-15 21:48:35 -05:00
parent e5580826b9
commit 54a8774f19

217
vimrc
View File

@ -358,115 +358,6 @@ let &colorcolumn=g:campo_max_line_length
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" CUSTOM AUTOCMDS " CUSTOM AUTOCMDS
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" C/C++ template.
function! s:CFileTemplate()
let s:env = {
\ 'filename': expand('%:t'),
\ 'creation_date': strftime('%Y-%m-%d'),
\ 'year': strftime('%Y'),
\ 'copyright_owner': 'Jelly Pixel, Inc. All Rights Reserved.'
\}
let l:template =<< trim EOS
/*==================================================================================================
File: ${filename}
Creation Date: ${creation_date}
Creator: Michael Campagnaro
Notice!: (C) Copyright ${year} by ${copyright_owner}
================================================================================================*/
////////////////////////////////////////////////////////////////////////////////////////////////////
// # Defines
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// # Globals
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// # Structs
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// # Macros
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// # Private API
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// # Public API
////////////////////////////////////////////////////////////////////////////////////////////////////
EOS
return map(l:template, { _, line -> substitute(line, '${\(.\{-}\)}', '\=get(s:env, submatch(1), submatch(1))', 'g') } )
endfunction
function! s:InsertCHeaderGates()
let l:gatename = substitute(toupper(expand("%:t")), "\\.", "_", "g")
call append(0, '#ifndef '. l:gatename)
call append(line('$'), '#define '. l:gatename)
call append(line('$'), '#endif')
endfunction
" sh template
function! s:ShellScriptTemplate()
let l:template =<< trim EOS
#!/usr/bin/env bash
if which tput >/dev/null 2>&1; then
ncolors=$(tput colors)
fi
if [ -t 1 ] && [ -n "$ncolors" ] && [ "$ncolors" -ge 8 ]; then
RED="$(tput setaf 1)"
GREEN="$(tput setaf 2)"
YELLOW="$(tput setaf 3)"
BLUE="$(tput setaf 4)"
MAGENTA="$(tput setaf 5)"
CYAN="$(tput setaf 6)"
BOLD="$(tput bold)"
DIM="\e[2m"
NORMAL="$(tput sgr0)"
else
RED=""
GREEN=""
YELLOW=""
BLUE=""
MAGENTA=""
CYAN=""
BOLD=""
NORMAL=""
fi
error() {
printf "${BOLD}${RED}$1${NORMAL}\n"
}
abort() {
error "\nAborting..."
exit 1
}
set -e
cwd=$PWD
uname_s="$(uname -s)"
case "${uname_s}" in
Linux*) machine=Linux;;
Darwin*) machine=MacOS;;
CYGWIN*) machine=Cygwin;;
MINGW*) machine=MinGw;;
*) machine="UNKNOWN:${uname_s}"
esac
printf "${YELLOW}Platform: $machine${NORMAL}\n"
EOS
return l:template
endfunction
augroup campoCmds augroup campoCmds
" Clear all autocmds in the group. " Clear all autocmds in the group.
autocmd! autocmd!
@ -593,6 +484,114 @@ augroup campoCmds
" FILE TEMPLATES " FILE TEMPLATES
"//////////////////////////////////////////////////////////////// "////////////////////////////////////////////////////////////////
" C/C++ template.
function! s:CFileTemplate()
let s:env = {
\ 'filename': expand('%:t'),
\ 'creation_date': strftime('%Y-%m-%d'),
\ 'year': strftime('%Y'),
\ 'copyright_owner': 'Jelly Pixel, Inc. All Rights Reserved.'
\}
let l:template =<< trim EOS
/*==================================================================================================
File: ${filename}
Creation Date: ${creation_date}
Creator: Michael Campagnaro
Notice!: (C) Copyright ${year} by ${copyright_owner}
================================================================================================*/
////////////////////////////////////////////////////////////////////////////////////////////////////
// # Defines
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// # Globals
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// # Structs
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// # Macros
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// # Private API
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// # Public API
////////////////////////////////////////////////////////////////////////////////////////////////////
EOS
return map(l:template, { _, line -> substitute(line, '${\(.\{-}\)}', '\=get(s:env, submatch(1), submatch(1))', 'g') } )
endfunction
function! s:InsertCHeaderGates()
let l:gatename = substitute(toupper(expand("%:t")), "\\.", "_", "g")
call append(0, '#ifndef '. l:gatename)
call append(line('$'), '#define '. l:gatename)
call append(line('$'), '#endif')
endfunction
" sh template
function! s:ShellScriptTemplate()
let l:template =<< trim EOS
#!/usr/bin/env bash
if which tput >/dev/null 2>&1; then
ncolors=$(tput colors)
fi
if [ -t 1 ] && [ -n "$ncolors" ] && [ "$ncolors" -ge 8 ]; then
RED="$(tput setaf 1)"
GREEN="$(tput setaf 2)"
YELLOW="$(tput setaf 3)"
BLUE="$(tput setaf 4)"
MAGENTA="$(tput setaf 5)"
CYAN="$(tput setaf 6)"
BOLD="$(tput bold)"
DIM="\e[2m"
NORMAL="$(tput sgr0)"
else
RED=""
GREEN=""
YELLOW=""
BLUE=""
MAGENTA=""
CYAN=""
BOLD=""
NORMAL=""
fi
error() {
printf "${BOLD}${RED}$1${NORMAL}\n"
}
abort() {
error "\nAborting..."
exit 1
}
set -e
cwd=$PWD
uname_s="$(uname -s)"
case "${uname_s}" in
Linux*) machine=Linux;;
Darwin*) machine=MacOS;;
CYGWIN*) machine=Cygwin;;
MINGW*) machine=MinGw;;
*) machine="UNKNOWN:${uname_s}"
esac
printf "${YELLOW}Platform: $machine${NORMAL}\n"
EOS
return l:template
endfunction
" Shell script template. " Shell script template.
autocmd BufNewFile *.sh call append(0, s:ShellScriptTemplate()) autocmd BufNewFile *.sh call append(0, s:ShellScriptTemplate())