mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-05 11:45:45 +00:00
* lisp/progmodes/gdb-mi.el: Warn the user when -i=mi is missing.
(gdb--check-interpreter): New function. (gdb): Use it.
This commit is contained in:
parent
44b0122fbb
commit
ee1f1da967
@ -1,3 +1,9 @@
|
||||
2011-10-28 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* progmodes/gdb-mi.el: Warn the user when -i=mi is missing.
|
||||
(gdb--check-interpreter): New function.
|
||||
(gdb): Use it.
|
||||
|
||||
2011-10-27 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* emacs-lisp/cl-extra.el (most-positive-float, most-negative-float)
|
||||
@ -21,8 +27,8 @@
|
||||
* subr.el (change-major-mode-after-body-hook): New hook.
|
||||
(run-mode-hooks): Run it.
|
||||
|
||||
* emacs-lisp/easy-mmode.el (define-globalized-minor-mode): Use
|
||||
change-major-mode-before-body-hook.
|
||||
* emacs-lisp/easy-mmode.el (define-globalized-minor-mode):
|
||||
Use change-major-mode-before-body-hook.
|
||||
|
||||
* simple.el (fundamental-mode):
|
||||
* emacs-lisp/derived.el (define-derived-mode): Revert 2010-04-28
|
||||
|
@ -43,21 +43,10 @@
|
||||
|
||||
;; M-x gdb will start the debugger.
|
||||
|
||||
;; This file uses GDB/MI as the primary interface to GDB. It is still under
|
||||
;; development and is part of a process to migrate Emacs from annotations (as
|
||||
;; used in gdb-ui.el) to GDB/MI. It runs gdb with GDB/MI (-interp=mi) and
|
||||
;; access CLI using "-interpreter-exec console cli-command". This code works
|
||||
;; without gdb-ui.el and uses MI tokens instead of queues. Eventually MI
|
||||
;; should be asynchronous.
|
||||
|
||||
;; This mode will PARTLY WORK WITH RECENT GDB RELEASES (status in modeline
|
||||
;; doesn't update properly when execution commands are issued from GUD buffer)
|
||||
;; and WORKS BEST when GDB runs asynchronously: maint set linux-async on.
|
||||
;;
|
||||
;; You need development version of GDB 7.0 for the thread buffer to work.
|
||||
|
||||
;; This file replaces gdb-ui.el and is for development with GDB. Use the
|
||||
;; release branch of Emacs 22 for the latest version of gdb-ui.el.
|
||||
;; This file uses GDB/MI as the primary interface to GDB. It runs gdb with
|
||||
;; GDB/MI (-interp=mi) and access CLI using "-interpreter-exec console
|
||||
;; cli-command". This code works without gdb-ui.el and uses MI tokens instead
|
||||
;; of queues. Eventually MI should be asynchronous.
|
||||
|
||||
;; Windows Platforms:
|
||||
|
||||
@ -599,6 +588,22 @@ NOARG must be t when this macro is used outside `gud-def'"
|
||||
(concat (gdb-gud-context-command ,cmd1 ,noall) " " ,cmd2)
|
||||
,(when (not noarg) 'arg)))
|
||||
|
||||
(defun gdb--check-interpreter (proc string)
|
||||
(unless (zerop (length string))
|
||||
(let ((filter (process-get proc 'gud-normal-filter)))
|
||||
(set-process-filter proc filter)
|
||||
(unless (memq (aref string 0) '(?^ ?~ ?@ ?& ?* ?=))
|
||||
;; Apparently we're not running with -i=mi.
|
||||
(let ((msg "Error: you did not specify -i=mi on GDB's command line!"))
|
||||
(message msg)
|
||||
(setq string (concat (propertize msg 'font-lock-face 'error)
|
||||
"\n" string)))
|
||||
;; Use the old gud-gbd filter, not because it works, but because it
|
||||
;; will properly display GDB's answers rather than hanging waiting for
|
||||
;; answers that aren't coming.
|
||||
(set (make-local-variable 'gud-marker-filter) #'gud-gdb-marker-filter))
|
||||
(funcall filter proc string))))
|
||||
|
||||
;;;###autoload
|
||||
(defun gdb (command-line)
|
||||
"Run gdb on program FILE in buffer *gud-FILE*.
|
||||
@ -665,6 +670,13 @@ detailed description of this mode.
|
||||
"Multiple debugging requires restarting in text command mode"))
|
||||
;;
|
||||
(gud-common-init command-line nil 'gud-gdbmi-marker-filter)
|
||||
|
||||
;; Setup a temporary process filter to warn when GDB was not started
|
||||
;; with -i=mi.
|
||||
(let ((proc (get-buffer-process gud-comint-buffer)))
|
||||
(process-put proc 'gud-normal-filter (process-filter proc))
|
||||
(set-process-filter proc #'gdb--check-interpreter))
|
||||
|
||||
(set (make-local-variable 'gud-minor-mode) 'gdbmi)
|
||||
(setq comint-input-sender 'gdb-send)
|
||||
(when (ring-empty-p comint-input-ring) ; cf shell-mode
|
||||
|
Loading…
Reference in New Issue
Block a user