Dear Kevin, On 25.05.2010, at 08:23, Kevin Rodgers wrote: > Stefan Vollmar wrote: >> Hallo, >> I want to re-define what happends when an exising toolbar icon is >> pressed. In the Emacs documentation I found an example similar to >> this: >> (define-key global-map [tool-bar new-file] >> '(menu-item "New Buffer" my-new-buffer >> :image (image :type xpm :file "new.xpm"))) > > Executing this code in Emacs 23.2 this will indeed show the desired > > effect - but only for about 2 seconds: the tool-bar is then > > automatically redrawn and behaves as before. How can I modify an > > existing toolbar so that the change is persistent? > > -- Variable: tool-bar-map > By default, the global map binds `[tool-bar]' as follows: > (global-set-key [tool-bar] > '(menu-item "tool bar" ignore > :filter (lambda (ignore) tool-bar-map))) > Thus the tool bar map is derived dynamically from the value of > variable `tool-bar-map' and you should normally adjust the default > (global) tool bar by changing that map. Major modes may replace > the global bar completely by making `tool-bar-map' buffer-local > and set to a keymap containing only the desired items. Info mode > provides an example. I looked up how changing the toolbar is done in info.el and was able to solve my problem with this code: (defvar my-tool-bar-map tool-bar-map) (define-key my-tool-bar-map [new-file] '(menu-item "New Document (Org)" my-new-buffer :image (image :type xpm :file "new.xpm"))) (set (make-local-variable 'tool-bar-map) my-tool-bar-map) The "New File" icon (left-most in Emacs 23.2) will now use my own function (a wrapper for Kevin Rodger's switch-to-new-untitled-buffer code, thanks!), which is (defun my-new-buffer () "creates an empty new 'untitled' buffer" (interactive) (put 'buffer-offer-save 'permanent-local t) (let ((default-major-mode 'org-mode)) (switch-to-new-untitled-buffer))) Thanks again, Kevin! Warm regards, Stefan -- Dr. Stefan Vollmar, Dipl.-Phys. Head of IT group Max-Planck-Institut für neurologische Forschung Gleuelerstr. 50, 50931 Köln, Germany Tel.: +49-221-4726-213 FAX +49-221-4726-298 Tel.: +49-221-478-5713 Mobile: 0160-93874279 Email: vollmar@nf.mpg.de http://www.nf.mpg.de