comparison lisp/progmodes/gdb-ui.el @ 74924:83f9cf569b3f

(gud-watch): Allow duplicate names for watch expressions. (gdb-var-delete): Handle duplicate names. Print message for non root expressions. (gdb-partial-output-name): Start buffer name with a space. (gdb-info-breakpoints-custom, gdb-reset): Handle space in above buffer name.
author Nick Roberts <nickrob@snap.net.nz>
date Tue, 26 Dec 2006 22:02:17 +0000
parents 3cedab34a4b6
children 5b3d80ea3c0e 17e0dd217877 bc10a33dd40b
comparison
equal deleted inserted replaced
74923:a7e6b6159240 74924:83f9cf569b3f
708 'gud-gdb-complete-command) 708 'gud-gdb-complete-command)
709 (if (and transient-mark-mode mark-active) 709 (if (and transient-mark-mode mark-active)
710 (buffer-substring (region-beginning) (region-end)) 710 (buffer-substring (region-beginning) (region-end))
711 (tooltip-identifier-from-point (point)))))) 711 (tooltip-identifier-from-point (point))))))
712 (speedbar 1) 712 (speedbar 1)
713 (catch 'already-watched
714 (dolist (var gdb-var-list)
715 (unless (string-match "\\." (car var))
716 (if (string-equal expr (nth 1 var))
717 (throw 'already-watched nil))))
718 (set-text-properties 0 (length expr) nil expr) 713 (set-text-properties 0 (length expr) nil expr)
719 (gdb-enqueue-input 714 (gdb-enqueue-input
720 (list 715 (list
721 (if (eq minor-mode 'gdba) 716 (if (eq minor-mode 'gdba)
722 (concat 717 (concat
723 "server interpreter mi \"-var-create - * " expr "\"\n") 718 "server interpreter mi \"-var-create - * " expr "\"\n")
724 (concat"-var-create - * " expr "\n")) 719 (concat"-var-create - * " expr "\n"))
725 `(lambda () (gdb-var-create-handler ,expr)))))))) 720 `(lambda () (gdb-var-create-handler ,expr)))))))
726 (message "gud-watch is a no-op in this mode.")))) 721 (message "gud-watch is a no-op in this mode."))))
727 722
728 (defconst gdb-var-create-regexp 723 (defconst gdb-var-create-regexp
729 "name=\"\\(.*?\\)\",.*numchild=\"\\(.*?\\)\",.*type=\"\\(.*?\\)\"") 724 "name=\"\\(.*?\\)\",.*numchild=\"\\(.*?\\)\",.*type=\"\\(.*?\\)\"")
730 725
849 (defun gdb-var-delete () 844 (defun gdb-var-delete ()
850 "Delete watch expression at point from the speedbar." 845 "Delete watch expression at point from the speedbar."
851 (interactive) 846 (interactive)
852 (if (memq (buffer-local-value 'gud-minor-mode gud-comint-buffer) 847 (if (memq (buffer-local-value 'gud-minor-mode gud-comint-buffer)
853 '(gdbmi gdba)) 848 '(gdbmi gdba))
854 (let ((text (speedbar-line-text))) 849 (let* ((var (nth (- (count-lines (point-min) (point)) 2) gdb-var-list))
855 ;; Can't use \\S-+ for whitespace because 850 (varnum (car var)))
856 ;; speedbar has a whacky syntax table. 851 (if (string-match "\\." (car var))
857 (string-match "\\([^ \t]+\\)" text) 852 (message-box "Can only delete a root expression")
858 (let ((expr (match-string 1 text)) var varnum) 853 (gdb-enqueue-input
859 (catch 'expr-found 854 (list
860 (dolist (var1 gdb-var-list) 855 (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer)
861 (when (string-equal expr (nth 1 var1)) 856 'gdba)
862 (setq var var1) 857 (concat "server interpreter mi \"-var-delete " varnum "\"\n")
863 (setq varnum (car var1)) 858 (concat "-var-delete " varnum "\n"))
864 (throw 'expr-found nil)))) 859 'ignore))
865 (unless (string-match "\\." (car var)) 860 (setq gdb-var-list (delq var gdb-var-list))
866 (gdb-enqueue-input 861 (dolist (varchild gdb-var-list)
867 (list 862 (if (string-match (concat (car var) "\\.") (car varchild))
868 (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer) 863 (setq gdb-var-list (delq varchild gdb-var-list))))))))
869 'gdba)
870 (concat "server interpreter mi \"-var-delete " varnum "\"\n")
871 (concat "-var-delete " varnum "\n"))
872 'ignore))
873 (setq gdb-var-list (delq var gdb-var-list))
874 (dolist (varchild gdb-var-list)
875 (if (string-match (concat (car var) "\\.") (car varchild))
876 (setq gdb-var-list (delq varchild gdb-var-list)))))))))
877 864
878 (defun gdb-var-delete-children (varnum) 865 (defun gdb-var-delete-children (varnum)
879 "Delete children of variable object at point from the speedbar." 866 "Delete children of variable object at point from the speedbar."
880 (gdb-enqueue-input 867 (gdb-enqueue-input
881 (list 868 (list
1015 ;; 1002 ;;
1016 (gdb-set-buffer-rules 'gdb-partial-output-buffer 1003 (gdb-set-buffer-rules 'gdb-partial-output-buffer
1017 'gdb-partial-output-name) 1004 'gdb-partial-output-name)
1018 1005
1019 (defun gdb-partial-output-name () 1006 (defun gdb-partial-output-name ()
1020 (concat "*partial-output-" 1007 (concat " *partial-output-"
1021 (gdb-get-target-string) 1008 (gdb-get-target-string)
1022 "*")) 1009 "*"))
1023 1010
1024 1011
1025 (gdb-set-buffer-rules 'gdb-inferior-io 1012 (gdb-set-buffer-rules 'gdb-inferior-io
1786 (let ((flag) (bptno)) 1773 (let ((flag) (bptno))
1787 ;; Remove all breakpoint-icons in source buffers but not assembler buffer. 1774 ;; Remove all breakpoint-icons in source buffers but not assembler buffer.
1788 (dolist (buffer (buffer-list)) 1775 (dolist (buffer (buffer-list))
1789 (with-current-buffer buffer 1776 (with-current-buffer buffer
1790 (if (and (memq gud-minor-mode '(gdba gdbmi)) 1777 (if (and (memq gud-minor-mode '(gdba gdbmi))
1791 (not (string-match "\\`\\*.+\\*\\'" (buffer-name)))) 1778 (not (string-match "\\` ?\\*.+\\*\\'" (buffer-name))))
1792 (gdb-remove-breakpoint-icons (point-min) (point-max))))) 1779 (gdb-remove-breakpoint-icons (point-min) (point-max)))))
1793 (with-current-buffer (gdb-get-buffer 'gdb-breakpoints-buffer) 1780 (with-current-buffer (gdb-get-buffer 'gdb-breakpoints-buffer)
1794 (save-excursion 1781 (save-excursion
1795 (let ((buffer-read-only nil)) 1782 (let ((buffer-read-only nil))
1796 (goto-char (point-min)) 1783 (goto-char (point-min))
2935 Kills the gdb buffers, and resets variables and the source buffers." 2922 Kills the gdb buffers, and resets variables and the source buffers."
2936 (dolist (buffer (buffer-list)) 2923 (dolist (buffer (buffer-list))
2937 (unless (eq buffer gud-comint-buffer) 2924 (unless (eq buffer gud-comint-buffer)
2938 (with-current-buffer buffer 2925 (with-current-buffer buffer
2939 (if (memq gud-minor-mode '(gdbmi gdba)) 2926 (if (memq gud-minor-mode '(gdbmi gdba))
2940 (if (string-match "\\`\\*.+\\*\\'" (buffer-name)) 2927 (if (string-match "\\` ?\\*.+\\*\\'" (buffer-name))
2941 (kill-buffer nil) 2928 (kill-buffer nil)
2942 (gdb-remove-breakpoint-icons (point-min) (point-max) t) 2929 (gdb-remove-breakpoint-icons (point-min) (point-max) t)
2943 (setq gud-minor-mode nil) 2930 (setq gud-minor-mode nil)
2944 (kill-local-variable 'tool-bar-map) 2931 (kill-local-variable 'tool-bar-map)
2945 (kill-local-variable 'gdb-define-alist)))))) 2932 (kill-local-variable 'gdb-define-alist))))))