Subject: [patch] Add toolbars for Edebug and debugger-mode
From: Xue Fuqiao <[email-masked]>
To: [email-masked]
Date: Thu, 21 Feb 2013 18:49:13 +0800
List-Id: <debbugs-submit.debbugs.gnu.org>

The following patch adds toolbars for Edebug and debugger-mode:

*** trunk/etc/TODO.orig	2013-02-10 19:50:32.740492000 +0800
--- trunk/etc/TODO	2013-02-21 18:37:30.696132043 +0800
*************** not have one at the moment and probably
*** 52,60 ****
  
  ** Check if all items on the mode-line have a suitable tooltip for
all modes. 
- ** edebug and debugger-mode should have a toolbar.
- It can use the same icons as gud.
- 
  ** Check what minor modes don't use define-minor-mode and convert them
  to use it.
  
--- 52,57 ----

*** trunk/lisp/emacs-lisp/edebug.el.orig	2013-02-03
09:46:50.383143000 +0800
--- trunk/lisp/emacs-lisp/edebug.el	2013-02-21
18:10:30.220096536 +0800 *************** be installed in
`emacs-lisp-mode-map'.") *** 3727,3732 ****
--- 3727,3745 ----
      (define-key map "\C-c\C-l" 'edebug-where)
      map))
  
+ (defvar edebug-tool-bar-map
+   (let ((map (make-sparse-keymap)))
+     (dolist (x '((edebug-set-breakpoint . "gud/break")
+ 		 (edebug-unset-breakpoint . "gud/remove")
+ 		 (edebug-go-mode . "gud/go")
+ 		 (edebug-stop . "gud/stop")
+ 		 (edebug-continue-mode . "gud/cont")
+ 		 (edebug-next-mode . "gud/next")
+ 		 (edebug-step-mode . "gud/step"))
+ 	       map)
+       (tool-bar-local-item-from-menu
+        (car x) (cdr x) map edebug-mode-map))))
+ 
  ;; Autoloading these global bindings doesn't make sense because
  ;; they cannot be used anyway unless Edebug is already loaded and
active. 
*************** Options:
*** 3811,3817 ****
    ;; exit to top level, because the edebug command loop can't usefully
    ;; continue running in such a case.
    (add-hook 'kill-buffer-hook 'edebug-kill-buffer nil t)
!   (use-local-map edebug-mode-map))
  
  (defun edebug-kill-buffer ()
    "Used on `kill-buffer-hook' when Edebug is operating in a buffer of
Lisp code."
--- 3824,3831 ----
    ;; exit to top level, because the edebug command loop can't usefully
    ;; continue running in such a case.
    (add-hook 'kill-buffer-hook 'edebug-kill-buffer nil t)
!   (use-local-map edebug-mode-map)
!   (set (make-local-variable 'tool-bar-map) edebug-tool-bar-map))
  
  (defun edebug-kill-buffer ()
    "Used on `kill-buffer-hook' when Edebug is operating in a buffer of
Lisp code."

*** trunk/lisp/emacs-lisp/debug.el.orig	2013-02-21
18:46:46.462887964 +0800
--- trunk/lisp/emacs-lisp/debug.el	2013-02-21 18:32:39.786689513
+0800 *************** Applies to the frame whose line point is
*** 702,707 ****
--- 702,715 ----
  	:help "Proceed, stepping through subexpressions of this
expression")) map))
  
+ (defvar debugger-tool-bar-map
+   (let ((map (make-sparse-keymap)))
+     (dolist (x '((debugger-continue . "gud/cont")
+ 		 (debugger-step-through . "gud/step"))
+ 	       map)
+       (tool-bar-local-item-from-menu
+        (car x) (cdr x) map debugger-mode-map))))
+ 
  (put 'debugger-mode 'mode-class 'special)
  
  (defun debugger-mode ()
*************** Complete list of commands:
*** 725,730 ****
--- 733,739 ----
    (setq truncate-lines t)
    (set-syntax-table emacs-lisp-mode-syntax-table)
    (use-local-map debugger-mode-map)
+   (set (make-local-variable 'tool-bar-map) debugger-tool-bar-map)
    (run-mode-hooks 'debugger-mode-hook))
  
  (defcustom debugger-record-buffer "*Debugger-record*"

*** trunk/lisp/ChangeLog.orig	2013-02-17 22:42:17.309803000 +0800
--- trunk/lisp/ChangeLog	2013-02-21 18:36:47.851919598 +0800
***************
*** 1,3 ****
--- 1,9 ----
+ 2013-02-21  Xue Fuqiao  <[email-masked]>
+ 
+ 	* emacs-lisp/debug.el: Add a toolbar for debugger-mode.
+ 
+ 	* emacs-lisp/edebug.el (edebug-mode): Add a toolbar.
+ 
  2013-02-17  Glenn Morris  <[email-masked]>
  
  	* menu-bar.el (menu-bar-tools-menu): Fix case of EDE entry.

-- 
Best regards, Xue Fuqiao.
http://www.emacswiki.org/emacs/XueFuqiao