diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-09-14 16:10:38 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-09-14 16:10:38 +0200 |
commit | 38baa3e63427112d389de5e5942243414d9b1336 (patch) | |
tree | 7593150b028869db073ff226c295a17cf77033c6 /runtime | |
parent | 69e8aa75112a0b12811a4f4d11061adceffbbabc (diff) |
patch 8.0.1107: terminal debugger jumps to non-existing filev8.0.1107
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.
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/doc/terminal.txt | 19 | ||||
-rw-r--r-- | runtime/pack/dist/opt/termdebug/plugin/termdebug.vim | 36 |
2 files changed, 40 insertions, 15 deletions
diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt index 62182f5d0f..2c2275cb2c 100644 --- a/runtime/doc/terminal.txt +++ b/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 @@ -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: diff --git a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim index c5e4ac8529..ffd53fa578 100644 --- a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim +++ b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim @@ -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 |