comparison lisp/progmodes/gud.el @ 70248:4fc61ee2deb2

(gud-comint-buffer): Move forward to stop byte compiler warnings. (gud-basic-call, gud-find-expr): Let user select an expression for printing. Print expression as well as value in GUD buffer.
author Nick Roberts <nickrob@snap.net.nz>
date Wed, 26 Apr 2006 23:03:56 +0000
parents e6c80fdc0101
children da2f6762c09a
comparison
equal deleted inserted replaced
70247:039ae41bde1a 70248:4fc61ee2deb2
80 (defun gud-marker-filter (&rest args) 80 (defun gud-marker-filter (&rest args)
81 (apply gud-marker-filter args)) 81 (apply gud-marker-filter args))
82 82
83 (defvar gud-minor-mode nil) 83 (defvar gud-minor-mode nil)
84 (put 'gud-minor-mode 'permanent-local t) 84 (put 'gud-minor-mode 'permanent-local t)
85
86 (defvar gud-comint-buffer nil)
85 87
86 (defvar gud-keep-buffer nil) 88 (defvar gud-keep-buffer nil)
87 89
88 (defun gud-symbol (sym &optional soft minor-mode) 90 (defun gud-symbol (sym &optional soft minor-mode)
89 "Return the symbol used for SYM in MINOR-MODE. 91 "Return the symbol used for SYM in MINOR-MODE.
738 (defvar gud-gdb-fetch-lines-break) 740 (defvar gud-gdb-fetch-lines-break)
739 741
740 ;; The completion list is constructed by the process filter. 742 ;; The completion list is constructed by the process filter.
741 (defvar gud-gdb-fetched-lines) 743 (defvar gud-gdb-fetched-lines)
742 744
743 (defvar gud-comint-buffer nil)
744
745 (defun gud-gdb-complete-command (&optional command a b) 745 (defun gud-gdb-complete-command (&optional command a b)
746 "Perform completion on the GDB command preceding point. 746 "Perform completion on the GDB command preceding point.
747 This is implemented using the GDB `complete' command which isn't 747 This is implemented using the GDB `complete' command which isn't
748 available with older versions of GDB." 748 available with older versions of GDB."
749 (interactive) 749 (interactive)
2887 ;; Arrange for the current prompt to get deleted. 2887 ;; Arrange for the current prompt to get deleted.
2888 (save-excursion 2888 (save-excursion
2889 (set-buffer gud-comint-buffer) 2889 (set-buffer gud-comint-buffer)
2890 (save-restriction 2890 (save-restriction
2891 (widen) 2891 (widen)
2892 (goto-char (process-mark proc)) 2892 (if (marker-position gud-delete-prompt-marker)
2893 (forward-line 0) 2893 ;; We get here when printing an expression.
2894 (goto-char gud-delete-prompt-marker)
2895 (goto-char (process-mark proc))
2896 (forward-line 0))
2894 (if (looking-at comint-prompt-regexp) 2897 (if (looking-at comint-prompt-regexp)
2895 (set-marker gud-delete-prompt-marker (point))) 2898 (set-marker gud-delete-prompt-marker (point)))
2896 (if (memq gud-minor-mode '(gdbmi gdba)) 2899 (if (memq gud-minor-mode '(gdbmi gdba))
2897 (apply comint-input-sender (list proc command)) 2900 (apply comint-input-sender (list proc command))
2898 (process-send-string proc (concat command "\n"))))))) 2901 (process-send-string proc (concat command "\n")))))))
2909 ;; around point. 2912 ;; around point.
2910 2913
2911 (defvar gud-find-expr-function 'gud-find-c-expr) 2914 (defvar gud-find-expr-function 'gud-find-c-expr)
2912 2915
2913 (defun gud-find-expr (&rest args) 2916 (defun gud-find-expr (&rest args)
2914 (apply gud-find-expr-function args)) 2917 (let ((expr (if (and transient-mark-mode mark-active)
2918 (buffer-substring (region-beginning) (region-end))
2919 (apply gud-find-expr-function args))))
2920 (save-match-data
2921 (if (string-match "\n" expr)
2922 (error "Expression must not include a newline"))
2923 (with-current-buffer gud-comint-buffer
2924 (save-excursion
2925 (goto-char (process-mark (get-buffer-process gud-comint-buffer)))
2926 (forward-line 0)
2927 (when (looking-at comint-prompt-regexp)
2928 (set-marker gud-delete-prompt-marker (point))
2929 (set-marker-insertion-type gud-delete-prompt-marker t))
2930 (insert (concat expr " = ")))))
2931 expr))
2915 2932
2916 ;; The next eight functions are hacked from gdbsrc.el by 2933 ;; The next eight functions are hacked from gdbsrc.el by
2917 ;; Debby Ayers <ayers@asc.slb.com>, 2934 ;; Debby Ayers <ayers@asc.slb.com>,
2918 ;; Rich Schaefer <schaefer@asc.slb.com> Schlumberger, Austin, Tx. 2935 ;; Rich Schaefer <schaefer@asc.slb.com> Schlumberger, Austin, Tx.
2919 2936