Permalink
Browse files

patch 8.0.1107: terminal debugger jumps to non-existing file

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 38baa3e63427112d389de5e5942243414d9b1336
Showing with 42 additions and 15 deletions.
  1. +15 −4 runtime/doc/terminal.txt
  2. +25 −11 runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
  3. +2 −0 src/version.c
View
@@ -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
@@ -85,9 +85,14 @@ Size and color ~
See option 'termsize' for controlling the size of the terminal window.
(TODO: scrolling when the terminal is larger than the window)
The terminal uses the 'background' option to decide whether the terminal
window will start with a white or black background. The job running in the
terminal can change the colors.
The job running in the terminal can change the colors. The default foreground
and background colors are taken from Vim, the Normal highlight group.
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 ~
@@ -403,6 +408,12 @@ When 'background' is "dark":
hi debugPC term=reverse ctermbg=darkblue guibg=darkblue
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:
@@ -24,16 +24,9 @@ if !exists('termdebugger')
let termdebugger = 'gdb'
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:break_id = 13
" Sign used to indicate a breakpoint.
" Can be used multiple times.
sign define debugBreakpoint text=>> texthl=debugBreakpoint
if &background == 'light'
hi default debugPC term=reverse ctermbg=lightblue guibg=lightblue
else
@@ -45,9 +38,19 @@ func s:StartDebug(cmd)
let s:startwin = win_getid(winnr())
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
let s:ptybuf = term_start('NONE', {
\ 'term_name': 'gdb program',
\ 'vertical': vertical,
\ })
if s:ptybuf == 0
echoerr 'Failed to open the program terminal window'
@@ -87,6 +90,14 @@ func s:StartDebug(cmd)
" Connect gdb to the communication pty, using the GDB/MI interface
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.
call win_gotoid(s:startwin)
call s:InstallCommands()
@@ -106,6 +117,9 @@ func s:EndDebug(job, status)
call s:DeleteCommands()
call win_gotoid(curwinid)
if s:save_columns > 0
let &columns = s:save_columns
endif
endfunc
" Handle a message received from gdb on the GDB/MI interface.
@@ -162,12 +176,12 @@ func s:DeleteCommands()
delcommand Program
nunmap K
sign undefine debugPC
sign undefine debugBreakpoint
exe 'sign unplace ' . s:pc_id
for key in keys(s:breakpoints)
exe 'sign unplace ' . (s:break_id + key)
endfor
sign undefine debugPC
sign undefine debugBreakpoint
unlet s:breakpoints
endfunc
@@ -232,8 +246,8 @@ func s:HandleCursor(msg)
let wid = win_getid(winnr())
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', '')
if lnum =~ '^[0-9]*$'
if expand('%:h') != fname
View
@@ -769,6 +769,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1107,
/**/
1106,
/**/

0 comments on commit 38baa3e

Please sign in to comment.