" vimspector - A multi-language debugging system for Vim " Copyright 2018 Ben Jackson " " Licensed under the Apache License, Version 2.0 (the "License"); " you may not use this file except in compliance with the License. " You may obtain a copy of the License at " " http://www.apache.org/licenses/LICENSE-2.0 " " Unless required by applicable law or agreed to in writing, software " distributed under the License is distributed on an "AS IS" BASIS, " WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. " See the License for the specific language governing permissions and " limitations under the License. if !has( 'python3' ) echohl WarningMsg echom 'Vimspector unavailable: Requires Vim compiled with +python3' echohl None finish endif " Boilerplate {{{ let s:save_cpo = &cpoptions set cpoptions&vim function! s:restore_cpo() let &cpoptions=s:save_cpo unlet s:save_cpo endfunction if exists( 'g:loaded_vimpector' ) call s:restore_cpo() finish endif "}}} let g:loaded_vimpector = 1 let g:vimspector_home = expand( ':p:h:h' ) let s:mappings = get( g:, 'vimspector_enable_mappings', '' ) nnoremap VimspectorContinue \ :call vimspector#Continue() nnoremap VimspectorLaunch \ :call vimspector#Launch( v:true ) nnoremap VimspectorStop \ :call vimspector#Stop() nnoremap VimspectorRestart \ :call vimspector#Restart() nnoremap VimspectorPause \ :call vimspector#Pause() nnoremap VimspectorToggleBreakpoint \ :call vimspector#ToggleBreakpoint() nnoremap VimspectorToggleConditionalBreakpoint \ :call vimspector#ToggleBreakpoint( \ { 'condition': input( 'Enter condition expression: ' ), \ 'hitCondition': input( 'Enter hit count expression: ' ) } \ ) nnoremap VimspectorAddFunctionBreakpoint \ :call vimspector#AddFunctionBreakpoint( expand( '' ) ) nnoremap VimspectorStepOver \ :call vimspector#StepOver() nnoremap VimspectorStepInto \ :call vimspector#StepInto() nnoremap VimspectorStepOut \ :call vimspector#StepOut() nnoremap VimspectorRunToCursor \ :call vimspector#RunToCursor() " Eval for normal mode nnoremap VimspectorBalloonEval \ :call vimspector#ShowEvalBalloon( 0 ) " And for visual modes xnoremap VimspectorBalloonEval \ :call vimspector#ShowEvalBalloon( 1 ) nnoremap VimspectorUpFrame \ :call vimspector#UpFrame() nnoremap VimspectorDownFrame \ :call vimspector#DownFrame() if s:mappings ==# 'VISUAL_STUDIO' nmap VimspectorContinue nmap VimspectorStop nmap VimspectorRestart nmap VimspectorPause nmap VimspectorToggleBreakpoint nmap VimspectorAddFunctionBreakpoint nmap VimspectorStepOver nmap VimspectorStepInto nmap VimspectorStepOut elseif s:mappings ==# 'HUMAN' nmap VimspectorContinue nmap VimspectorLaunch nmap VimspectorStop nmap VimspectorRestart nmap VimspectorPause nmap VimspectorToggleBreakpoint nmap VimspectorToggleConditionalBreakpoint nmap VimspectorAddFunctionBreakpoint nmap VimspectorRunToCursor nmap VimspectorStepOver nmap VimspectorStepInto nmap VimspectorStepOut endif command! -bar -nargs=1 -complete=custom,vimspector#CompleteExpr \ VimspectorWatch \ call vimspector#AddWatch( ) command! -bar -nargs=? -complete=custom,vimspector#CompleteOutput \ VimspectorShowOutput \ call vimspector#ShowOutput( ) command! -bar \ VimspectorToggleLog \ call vimspector#ToggleLog() command! -nargs=1 -complete=custom,vimspector#CompleteExpr \ VimspectorEval \ call vimspector#Evaluate( ) command! -bar \ VimspectorReset \ call vimspector#Reset( { 'interactive': v:true } ) " Installer commands command! -bar -bang -nargs=* -complete=custom,vimspector#CompleteInstall \ VimspectorInstall \ call vimspector#Install( , ) command! -bar -bang -nargs=* \ VimspectorUpdate \ call vimspector#Update( , ) command! -bar -nargs=0 \ VimspectorAbortInstall \ call vimspector#AbortInstall() " Dummy autocommands so that we can call this whenever augroup VimspectorUserAutoCmds autocmd! autocmd User VimspectorUICreated silent autocmd User VimspectorTerminalOpened silent autocmd user VimspectorJumpedToFrame silent autocmd user VimspectorDebugEnded silent augroup END " FIXME: Only register this _while_ debugging is active let g:vimspector_resetting = 0 augroup Vimspector autocmd! autocmd BufNew * call vimspector#OnBufferCreated( expand( '' ) ) autocmd TabClosed * \ if !g:vimspector_resetting \ | call vimspector#internal#state#TabClosed() \ | endif augroup END " boilerplate {{{ call s:restore_cpo() " }}}