From 13522cb4cd1e954ae1523c309c778137a2ce98bd Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Wed, 9 Mar 2011 00:43:27 -0800 Subject: [PATCH] gdb-mi addition for bug#7889. * lisp/progmodes/gdb-mi.el (gdb): Improve 2010-12-08 change. Check for GDBHISTFILE, HISTSIZE, etc. --- lisp/ChangeLog | 5 +++++ lisp/progmodes/gdb-mi.el | 43 ++++++++++++++++++++++++++-------------- 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 7963e3432cb..253d47364f8 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2011-03-09 Glenn Morris + + * progmodes/gdb-mi.el (gdb): Improve 2010-12-08 change. + Check for GDBHISTFILE, HISTSIZE, etc. (Bug#7889) + 2011-03-08 Chong Yidong * emacs-lisp/package.el (package-refresh-contents) diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el index 25d1410621a..ac76caf8d61 100644 --- a/lisp/progmodes/gdb-mi.el +++ b/lisp/progmodes/gdb-mi.el @@ -648,21 +648,34 @@ detailed description of this mode. (set (make-local-variable 'gud-minor-mode) 'gdbmi) (setq comint-input-sender 'gdb-send) (when (ring-empty-p comint-input-ring) ; cf shell-mode - (let (hfile) - (when (catch 'done - (dolist (file '(".gdbinit" "~/.gdbinit")) - (if (file-readable-p (setq file (expand-file-name file))) - (with-temp-buffer - (insert-file-contents file) - (and (re-search-forward - "^ *set history filename *\\(.*\\)" nil t) - (file-readable-p - (setq hfile (expand-file-name - (match-string 1) - (file-name-directory file)))) - (throw 'done t)))))) - (set (make-local-variable 'comint-input-ring-file-name) hfile) - (comint-read-input-ring t)))) + (let ((hfile (expand-file-name (or (getenv "GBDHISTFILE") + (if (eq system-type 'ms-dos) + "_gdb_history" + ".gdb_history")))) + ;; gdb defaults to 256, but we'll default to comint-input-ring-size. + (hsize (getenv "HISTSIZE"))) + (dolist (file (append '("~/.gdbinit") + (unless (string-equal (expand-file-name ".") + (expand-file-name "~")) + '(".gdbinit")))) + (if (file-readable-p (setq file (expand-file-name file))) + (with-temp-buffer + (insert-file-contents file) + ;; TODO? check for "set history save\\( *on\\)?" and do + ;; not use history otherwise? + (while (re-search-forward + "^ *set history \\(filename\\|size\\) *\\(.*\\)" nil t) + (cond ((string-equal (match-string 1) "filename") + (setq hfile (expand-file-name + (match-string 2) + (file-name-directory file)))) + ((string-equal (match-string 1) "size") + (setq hsize (match-string 2)))))))) + (if (integerp hsize) + (set (make-local-variable 'comint-input-ring-size) hsize)) + (if (stringp hfile) + (set (make-local-variable 'comint-input-ring-file-name) hfile)) + (comint-read-input-ring t))) (gud-def gud-tbreak "tbreak %f:%l" "\C-t" "Set temporary breakpoint at current line.") (gud-def gud-jump -- 2.39.5