1*c572da5fSBram Moolenaar" Debugger commands.
2*c572da5fSBram Moolenaar"
3*c572da5fSBram Moolenaar" WORK IN PROGRESS - much doesn't work yet
4*c572da5fSBram Moolenaar"
5*c572da5fSBram Moolenaar" Open two terminal windows:
6*c572da5fSBram Moolenaar" 1. run a pty, as with ":term NONE"
7*c572da5fSBram Moolenaar" 2. run gdb, passing the pty
8*c572da5fSBram Moolenaar" The current window is used to edit source code and follows gdb.
9*c572da5fSBram Moolenaar"
10*c572da5fSBram Moolenaar" Author: Bram Moolenaar
11*c572da5fSBram Moolenaar" Copyright: Vim license applies
12*c572da5fSBram Moolenaar
13*c572da5fSBram Moolenaarcommand -nargs=* -complete=file Termdebug call s:StartDebug(<q-args>)
14*c572da5fSBram Moolenaar
15*c572da5fSBram Moolenaarif !exists('debugger')
16*c572da5fSBram Moolenaar  let debugger = 'gdb'
17*c572da5fSBram Moolenaarendif
18*c572da5fSBram Moolenaar
19*c572da5fSBram Moolenaarfunc s:StartDebug(cmd)
20*c572da5fSBram Moolenaar  " Open a terminal window without a job, to run the debugged program
21*c572da5fSBram Moolenaar  let s:ptybuf = term_start('NONE', {})
22*c572da5fSBram Moolenaar  let pty = job_info(term_getjob(s:ptybuf))['tty']
23*c572da5fSBram Moolenaar
24*c572da5fSBram Moolenaar  " Open a terminal window to run the debugger.
25*c572da5fSBram Moolenaar  let cmd = [g:debugger, '-tty', pty, a:cmd]
26*c572da5fSBram Moolenaar  echomsg 'executing "' . join(cmd) . '"'
27*c572da5fSBram Moolenaar  let gdbbuf = term_start(cmd, {
28*c572da5fSBram Moolenaar	\ 'exit_cb': function('s:EndDebug'),
29*c572da5fSBram Moolenaar	\ 'term_finish': 'close'
30*c572da5fSBram Moolenaar	\ })
31*c572da5fSBram Moolenaarendfunc
32*c572da5fSBram Moolenaar
33*c572da5fSBram Moolenaarfunc s:EndDebug(job, status)
34*c572da5fSBram Moolenaar   exe 'bwipe! ' . s:ptybuf
35*c572da5fSBram Moolenaarendfunc
36