mirror of
				https://github.com/vim/vim.git
				synced 2025-10-30 09:47:20 -04:00 
			
		
		
		
	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 | ||||
| @@ -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: | ||||
|   | ||||
| @@ -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', '') | ||||
|     if a:msg =~ '^\*stopped' && filereadable(fname) | ||||
|       let lnum = substitute(a:msg, '.*line="\([^"]*\)".*', '\1', '') | ||||
|       if lnum =~ '^[0-9]*$' | ||||
| 	if expand('%:h') != fname | ||||
|   | ||||
| @@ -769,6 +769,8 @@ static char *(features[]) = | ||||
|  | ||||
| static int included_patches[] = | ||||
| {   /* Add new patch number below this line */ | ||||
| /**/ | ||||
|     1107, | ||||
| /**/ | ||||
|     1106, | ||||
| /**/ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user