From 54a8774f1937c198126254bc4ffdb4c558a05e59 Mon Sep 17 00:00:00 2001 From: Michael Campagnaro Date: Wed, 15 Dec 2021 21:48:35 -0500 Subject: [PATCH] Relocate some vimrc template functions to an autocmd group --- vimrc | 217 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 108 insertions(+), 109 deletions(-) diff --git a/vimrc b/vimrc index 447ec5b..c892fd2 100644 --- a/vimrc +++ b/vimrc @@ -358,115 +358,6 @@ let &colorcolumn=g:campo_max_line_length """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 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 " Clear all autocmds in the group. autocmd! @@ -593,6 +484,114 @@ augroup campoCmds " 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. autocmd BufNewFile *.sh call append(0, s:ShellScriptTemplate())