diff runtime/pack/dist/opt/termdebug/plugin/termdebug.vim @ 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 29d21591ad6b
children 3f16cf18386c
line wrap: on
line diff
--- 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