X-Git-Url: https://git.sthu.org/?a=blobdiff_plain;f=dotfiles%2Fvim%2F.vimrc;h=5da54996af79d7730b9e6dfb1fec05781fb8b839;hb=68e246948776c9bca12913cd3cf648fc783191f9;hp=8c716d410c85344ece65201c3fee7c818bb2d6e4;hpb=7b03120cdd459ce0e9b32d237c98b7badf02621d;p=shutils.git diff --git a/dotfiles/vim/.vimrc b/dotfiles/vim/.vimrc index 8c716d4..5da5499 100644 --- a/dotfiles/vim/.vimrc +++ b/dotfiles/vim/.vimrc @@ -136,9 +136,9 @@ function PrependCppNamespaceToIdent(ns, id) " in the middle begin with a star. " If #include and // and /* and ^* and :: is not prepend: - execute ':%s_\(\(#include\|\/\/\|\/\*\|^\s*\*[^/]\).*\|::\)\@_' . a:ns . '::' . a:id . '_ge' + execute ':%s@\(\(#include\|\/\/\|\/\*\|^\s*\*[^/]\).*\|::\)\@@' . a:ns . '::' . a:id . '@ge' " If #include and // and :: is not prepend, but */ is, and no further /* or // are found - execute ':%s_\(\(#include\|\/\/\).*\)\@_' . a:ns . '::' . a:id . '_ge' + execute ':%s@\(\(#include\|\/\/\).*\)\@@' . a:ns . '::' . a:id . '@ge' endfunction @@ -155,7 +155,6 @@ function PrependSTLNamespace() let id = id +['queue', 'stack', 'priority_queue'] let id = id +['ostream', 'istream', 'sstream'] let id = id +['pair', 'string'] - let id = ['map'] for i in id call PrependCppNamespaceToIdent("std", i) @@ -169,6 +168,19 @@ function EscapeHexToChar() execute '%s/^\(.*\)$/"\1"/' endfunction +function InsertIncludeGuardsWithoutEndif() + let gatename = substitute(expand("%:t"), "\\.", "_", "g") . '_' . strpart(system('pwgen -c 16 1'), 0, 16) + execute "normal! i#ifndef " . gatename + execute "normal! o#define " . gatename +endfunction + +function AddIncludeGuards() + execute "normal! Go#endif" + execute "normal! gg" + call InsertIncludeGuardsWithoutEndif() +endfunction + +autocmd BufNewFile *.{h,hpp} call AddIncludeGuards() """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""