summaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-09-14 16:10:38 +0200
committerBram Moolenaar <Bram@vim.org>2017-09-14 16:10:38 +0200
commit38baa3e63427112d389de5e5942243414d9b1336 (patch)
tree7593150b028869db073ff226c295a17cf77033c6 /runtime
parent69e8aa75112a0b12811a4f4d11061adceffbbabc (diff)
downloadvim-git-38baa3e63427112d389de5e5942243414d9b1336.tar.gz
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.txt19
-rw-r--r--runtime/pack/dist/opt/termdebug/plugin/termdebug.vim36
2 files changed, 40 insertions, 15 deletions
diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt
index 62182f5d0..2c2275cb2 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 c5e4ac852..ffd53fa57 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