Mam kilka mapowania dla tego zadania w lh-cpp. W takim przypadku będzie to ,,sc
lub ,,rc
lub ,,dc
. (tutaj, ,
jest w rzeczywistości moim <localleader>
).
to faktycznie realizowane jako:
function! s:ConvertToCPPCast(cast_type)
" Extract text to convert
let save_a = @a
normal! gv"ay
" Strip the possible brackets around the expression
let expr = matchstr(@a, '^(.\{-})\zs.*$')
let expr = substitute(expr, '^(\(.*\))$', '\1', '')
"
" Build the C++-casting from the C casting
let new_cast = substitute(@a, '(\(.\{-}\)).*',
\ a:cast_type.'<\1>('.escape(expr, '\&').')', '')
" Do the replacement
exe "normal! gvs".new_cast."\<esc>"
let @a = save_a
endfunction
vnoremap <buffer> <LocalLeader><LocalLeader>dc
\ <c-\><c-n>:'<,'>call <sid>ConvertToCPPCast('dynamic_cast')<cr>
nmap <buffer> <LocalLeader><LocalLeader>dc viw<LocalLeader><LocalLeader>dc
...
chciałbym przekonwertować wskaźnik rzuca do nazwanych C++ odlewów, poprawności, ale te rozważania nie mają zastosowania do rodzaju numeru odlewy, które ja po prostu zostawić w miejscu lub ewentualnie konwertować na notację C++ 'int (a)' (co oznacza to samo). Np. Nie wprowadzaj * niepotrzebnej nowej gadatliwości *. –
Prawdopodobnie uzyskasz lepsze wyniki, używając czegoś w stylu [clang-tidy] (http://clang.llvm.org/extra/clang-tidy/checks/google-readability-casting.html). – Jason