GDB completion in the GUD buffer. Requires assistance from
GDB in the form of the `complete' command.
(gud-gdb-complete-in-progress, gud-gdb-complete-string,
gud-gdb-complete-break, gud-gdb-complete-list,
gud-gdb-complete-filter): New.
(gdb): Bind TAB to gud-gdb-complete-command.
(gud-format-command): Use gud-last-last-frame if
gud-last-frame is nil.
(gud-mipsdbx-massage-args, gud-mipsdbx-marker-filter):
New functions for dbx support on Mips under Ultrix.
(gud-dbx-mips-p, gud-mipsdbx-marker-acc): New variables.
(dbx) If gud-dbx-mips-p is non-nil, overload above two functions
and initialize appropriate command strings for dbx.
(gud-common-init): Call substitute-in-file-name.
(dbx): Let `comint-prompt-regexp' not match more than one line.
the filter's execution.
* gud.el (gud-gdb-marker-filter): If we received some text after
the position marker, append it to any text before the marker,
instead of throwing away the text before the marker.
markers from GDB will always be received in one chunk of input;
gud-gdb-marker-filter may be called several times, each time
providing a little more of the position marker.
(gud-gdb-marker-acc): New variable.
(gud-gdb-marker-filter): If we have received what could be the
beginning of a position marker, hold that text in
gud-gdb-marker-acc for the next time we get called, until we have
enough information to decide for sure.
* gud.el (gud-gdb-marker-filter): Only recognize GDB position
markers if they occur at the beginning of the line. They always
do, and this reduces the likelihood that the above change will
hold back output that isn't really a position marker.
(gud-{gdb,sdb,xdb}-debugger-startup): Replaced with gud-*-massage-args.
(gdb, sdb, xdb): Argument is command line, not args for it. Remove
debugger name from prompt and put it in the default input instead.
Overload gud-massage-args instead of gud-debugger-startup.
(gud-chop-words): New function; subr for gud-common-init.
(gud-common-init): Argument is command line, not args for it.
Rewritten to use gud-chop-words instead of temp buffer and kludge involving
read. Find the program name as the first word of the command line.
Use make-comint and gud-massage-args in place of gud-debugger-startup.
Expand the file name before passing it to gud-massage-args.
have to retype the filename every invocation.
(gud-gdb-history, gud-sdb-history, gud-dbx-history,
gud-xdb-history): New variables.
(gdb, sdb, dbx, xdb): Use them when reading the argument string.
(gud-display-frame): Save the frame we displayed in
gud-last-last-frame.
(gud-refresh): Force gud-display-frame to jump to the last frame
displayed, even if it has already done so once.
(gdb, sdb, dbx): Change bindings from letters to control chars.
(gud-common-init): Add save-excursion.
(gud-display-line): Don't mess with buffer-read-only.
(gud-filter): Set output-after-point *after* deleting old prompt.
include auto-configuring support for SVr4, more commands, and a full minor-mode
implementation that binds all GUD commands not just in the GUD interaction
mode, but in C buffers visited by GUD. The common prefix of GUD commands is
now C-x X, like electric-debug mode.
breakpoint.
(gud-apply-from-source): New argument ARGS, to pass to FUNC. Now
it's really like `apply'.
(gud-set-break): Add another argument to this method.
Document it in the section describing how the methods are supposed
to be used.
(gud-gdb-set-break): New argument TEMP; if non-nil, set a
temporary breakpoint.
(gud-sdb-set-break, gud-dbx-set-break): New argument TEMP. Ignore
it, since I don't know how to set a temporary breakpoint in these
debuggers.
* gud.el (gud-break): With a prefix argument, set a temporary
breakpoint.
(gud-apply-from-source): New argument ARGS, to pass to FUNC. Now
it's really like `apply'.
(gud-set-break): Add another argument to this method.
Document it in the section describing how the methods are supposed
to be used.
(gud-gdb-set-break): New argument TEMP; if non-nil, set a
temporary breakpoint.
(gud-sdb-set-break, gud-dbx-set-break): New argument TEMP. Ignore
it, since I don't know how to set a temporary breakpoint in these
debuggers.
it's annoying to see the command and the new prompt in the
debugger interaction buffer; nuke the command and the old prompt.
(gud-delete-prompt-marker): New variable, with extensive documentation.
(gud-mode): Make gud-delete-prompt-marker buffer-local, and
initialize it.
(gud-filter-insert): If gud-delete-prompt-marker is set, delete
the prompt, and clear gud-delete-prompt-marker.
(gud-call): Arrange for the last prompt printed to get deleted, by
setting gud-delete-prompt-char.
(gud-gdb-marker-filter, gud-sdb-marker-filter,
gud-dbx-marker-filter): Rename the argument `s' or `str' to
`string', and change all uses; these definitions were referring to
`string', which is unbound in the lexical context, but which
happens to end up being bound to the right thing by the caller,
gud-filter.
(sdb): Set comint-prompt-regexp, not comint-prompt-pattern; the
latter doesn't exist.
(gud-dbx-debugger-setup): Use the argument `f', not the variable
`file', which happens to be bound in the caller.
(gud-filter-insert): The variable `start' is never used. The
variable `moving' is unnecessary. The variable `old-buffer' and
the unwind-protect form are unneeded, since save-excursion can do
their work. The binding of output-after-point should be done after
switching to the process's buffer, not in whatever random buffer
happens to be current when the process filter is called. There's
no need to set the process mark if we've just inserted at its
location using insert-before-markers.
(gud-read-address): Don't bother setting the variable `result'; it
is never used.
* gud.el (gud-mode-map): Bind gud-refresh to C-c C-l, not C-c l;
the latter is reserved for the user's purposes.
* gud.el (gdb, sdb, dbx): Use C-c C-r ("resume") for continuing,
instead of C-c C-c. C-c C-c should be comint-interrupt-subjob;
it's important to have that available, and the C-c C-c binding is
consistent with all the other comint-derived modes.