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.
This commit is contained in:
@ -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
|
||||||
@ -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 ~
|
||||||
@ -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:
|
||||||
|
|||||||
@ -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
|
||||||
@ -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'
|
||||||
@ -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()
|
||||||
@ -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.
|
||||||
@ -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
|
||||||
|
|
||||||
@ -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
|
||||||
|
|||||||
@ -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,
|
||||||
/**/
|
/**/
|
||||||
|
|||||||
Reference in New Issue
Block a user