changeset 12455:85ddf8e00595 v8.0.1107

patch 8.0.1107: terminal debugger jumps to non-existing file commit https://github.com/vim/vim/commit/38baa3e63427112d389de5e5942243414d9b1336 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Sep 14 16:10:38 2017 +0200 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.
author Christian Brabandt <cb@256bit.org>
date Thu, 14 Sep 2017 16:15:05 +0200
parents c7bdd7c9f255
children bc590831aac5
files runtime/doc/terminal.txt runtime/pack/dist/opt/termdebug/plugin/termdebug.vim src/version.c
diffstat 3 files changed, 42 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- 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:
--- 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
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1107,
+/**/
     1106,
 /**/
     1105,