Skip to content

Commit

Permalink
patch 8.0.1107: terminal debugger jumps to non-existing file
Browse files Browse the repository at this point in the history
Problem:    Terminal debugger jumps to non-existing file.
Solution:   Check that the file exists.  Add an option to make the Vim wide
            wide. Fix removing highlight groups.
  • Loading branch information
brammool committed Sep 14, 2017
1 parent 69e8aa7 commit 38baa3e
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 15 deletions.
19 changes: 15 additions & 4 deletions runtime/doc/terminal.txt
@@ -1,4 +1,4 @@
*terminal.txt* For Vim version 8.0. Last change: 2017 Sep 10 *terminal.txt* For Vim version 8.0. Last change: 2017 Sep 13




VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
Expand Down Expand Up @@ -85,9 +85,14 @@ Size and color ~
See option 'termsize' for controlling the size of the terminal window. See option 'termsize' for controlling the size of the terminal window.
(TODO: scrolling when the terminal is larger than the window) (TODO: scrolling when the terminal is larger than the window)


The terminal uses the 'background' option to decide whether the terminal The job running in the terminal can change the colors. The default foreground
window will start with a white or black background. The job running in the and background colors are taken from Vim, the Normal highlight group.
terminal can change the colors.
For a color terminal the 'background' option is used to decide whether the
terminal window will start with a white or black background.

To use a different color the Terminal highlight group can be used: >
hi Terminal ctermbg=lightgrey ctermfg=blue guibg=lightgrey guifg=blue
Syntax ~ Syntax ~
Expand Down Expand Up @@ -403,6 +408,12 @@ When 'background' is "dark":
hi debugPC term=reverse ctermbg=darkblue guibg=darkblue hi debugPC term=reverse ctermbg=darkblue guibg=darkblue
hi debugBreakpoint term=reverse ctermbg=red guibg=red hi debugBreakpoint term=reverse ctermbg=red guibg=red


To change the width of the Vim window when debugging starts, and use a
vertical split: >
let g:termdebug_wide = 163
This will set &columns to 163 when :Termdebug is used. The value is restored
when quitting the debugger.





vim:tw=78:ts=8:ft=help:norl: vim:tw=78:ts=8:ft=help:norl:
36 changes: 25 additions & 11 deletions runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
Expand Up @@ -24,16 +24,9 @@ if !exists('termdebugger')
let termdebugger = 'gdb' let termdebugger = 'gdb'
endif endif


" Sign used to highlight the line where the program has stopped.
" There can be only one.
sign define debugPC linehl=debugPC
let s:pc_id = 12 let s:pc_id = 12
let s:break_id = 13 let s:break_id = 13


" Sign used to indicate a breakpoint.
" Can be used multiple times.
sign define debugBreakpoint text=>> texthl=debugBreakpoint

if &background == 'light' if &background == 'light'
hi default debugPC term=reverse ctermbg=lightblue guibg=lightblue hi default debugPC term=reverse ctermbg=lightblue guibg=lightblue
else else
Expand All @@ -45,9 +38,19 @@ func s:StartDebug(cmd)
let s:startwin = win_getid(winnr()) let s:startwin = win_getid(winnr())
let s:startsigncolumn = &signcolumn let s:startsigncolumn = &signcolumn


if exists('g:termdebug_wide') && &columns < g:termdebug_wide
let s:save_columns = &columns
let &columns = g:termdebug_wide
let vertical = 1
else
let s:save_columns = 0
let vertical = 0
endif

" Open a terminal window without a job, to run the debugged program " Open a terminal window without a job, to run the debugged program
let s:ptybuf = term_start('NONE', { let s:ptybuf = term_start('NONE', {
\ 'term_name': 'gdb program', \ 'term_name': 'gdb program',
\ 'vertical': vertical,
\ }) \ })
if s:ptybuf == 0 if s:ptybuf == 0
echoerr 'Failed to open the program terminal window' echoerr 'Failed to open the program terminal window'
Expand Down Expand Up @@ -87,6 +90,14 @@ func s:StartDebug(cmd)
" Connect gdb to the communication pty, using the GDB/MI interface " Connect gdb to the communication pty, using the GDB/MI interface
call term_sendkeys(gdbbuf, 'new-ui mi ' . commpty . "\r") call term_sendkeys(gdbbuf, 'new-ui mi ' . commpty . "\r")


" Sign used to highlight the line where the program has stopped.
" There can be only one.
sign define debugPC linehl=debugPC

" Sign used to indicate a breakpoint.
" Can be used multiple times.
sign define debugBreakpoint text=>> texthl=debugBreakpoint

" Install debugger commands in the text window. " Install debugger commands in the text window.
call win_gotoid(s:startwin) call win_gotoid(s:startwin)
call s:InstallCommands() call s:InstallCommands()
Expand All @@ -106,6 +117,9 @@ func s:EndDebug(job, status)
call s:DeleteCommands() call s:DeleteCommands()


call win_gotoid(curwinid) call win_gotoid(curwinid)
if s:save_columns > 0
let &columns = s:save_columns
endif
endfunc endfunc


" Handle a message received from gdb on the GDB/MI interface. " Handle a message received from gdb on the GDB/MI interface.
Expand Down Expand Up @@ -162,12 +176,12 @@ func s:DeleteCommands()
delcommand Program delcommand Program


nunmap K nunmap K
sign undefine debugPC
sign undefine debugBreakpoint
exe 'sign unplace ' . s:pc_id exe 'sign unplace ' . s:pc_id
for key in keys(s:breakpoints) for key in keys(s:breakpoints)
exe 'sign unplace ' . (s:break_id + key) exe 'sign unplace ' . (s:break_id + key)
endfor endfor
sign undefine debugPC
sign undefine debugBreakpoint
unlet s:breakpoints unlet s:breakpoints
endfunc endfunc


Expand Down Expand Up @@ -232,8 +246,8 @@ func s:HandleCursor(msg)
let wid = win_getid(winnr()) let wid = win_getid(winnr())


if win_gotoid(s:startwin) if win_gotoid(s:startwin)
if a:msg =~ '^\*stopped' let fname = substitute(a:msg, '.*fullname="\([^"]*\)".*', '\1', '')
let fname = substitute(a:msg, '.*fullname="\([^"]*\)".*', '\1', '') if a:msg =~ '^\*stopped' && filereadable(fname)
let lnum = substitute(a:msg, '.*line="\([^"]*\)".*', '\1', '') let lnum = substitute(a:msg, '.*line="\([^"]*\)".*', '\1', '')
if lnum =~ '^[0-9]*$' if lnum =~ '^[0-9]*$'
if expand('%:h') != fname if expand('%:h') != fname
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -769,6 +769,8 @@ static char *(features[]) =


static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1107,
/**/ /**/
1106, 1106,
/**/ /**/
Expand Down

0 comments on commit 38baa3e

Please sign in to comment.