annotate lisp/tool-bar.el @ 110410:f2e111723c3a

Merge changes made in Gnus trunk. Reimplement nnimap, and do tweaks to the rest of the code to support that. * gnus-int.el (gnus-finish-retrieve-group-infos) (gnus-retrieve-group-data-early): New functions. * gnus-range.el (gnus-range-nconcat): New function. * gnus-start.el (gnus-get-unread-articles): Support early retrieval of data. (gnus-read-active-for-groups): Support finishing the early retrieval of data. * gnus-sum.el (gnus-summary-move-article): Pass the move-to group name if the move is internal, so that nnimap can do fast internal moves. * gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for nnimap usage. * nnimap.el: Rewritten. * nnmail.el (nnmail-inhibit-default-split-group): New internal variable to allow the mail splitting to not return a default group. This is useful for nnimap, which will leave unmatched mail in the inbox. * utf7.el (utf7-encode): Autoload. Implement shell connection. * nnimap.el (nnimap-open-shell-stream): New function. (nnimap-open-connection): Use it. Get the number of lines by using BODYSTRUCTURE. (nnimap-transform-headers): Get the number of lines in each message. (nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the number of lines. Not all servers return UIDNEXT. Work past this problem. Remove junk from end of file. Fix typo in "bogus" section. Make capabilties be case-insensitive. Require cl when compiling. Don't bug out if the LIST command doesn't have any parameters. 2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change) * nnimap.el (nnimap-get-groups): Don't bug out if the LIST command doesn't have any parameters. (mm-text-html-renderer): Document gnus-article-html. 2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix) * mm-decode.el (mm-text-html-renderer): Document gnus-article-html. * dgnushack.el: Define netrc-credentials. If the user doesn't have a /etc/services, supply some sensible port defaults. Have `unseen-or-unread' select an unread unseen article first. (nntp-open-server): Return whether the open was successful or not. Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ). Save result so that it doesn't say "failed" all the time. Add ~/.authinfo to the default, since that's probably most useful for users. Don't use the "finish" method when we're reading from the agent. Add some more nnimap-relevant agent stuff to nnagent.el. * nnimap.el (nnimap-with-process-buffer): Removed. Revert one line that was changed by mistake in the last checkin. (nnimap-open-connection): Don't error out when we can't make a connection nnimap-related changes to avoid bugging out if we can't contact a server. * gnus-start.el (gnus-get-unread-articles): Don't try to scan groups from methods that are denied. * nnimap.el (nnimap-possibly-change-group): Return nil if we can't log in. (nnimap-finish-retrieve-group-infos): Make sure we're not waiting for nothing. * gnus-sum.el (gnus-select-newsgroup): Indent.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Sat, 18 Sep 2010 10:02:19 +0000
parents 280c8ae2476d
children c82718dcce89
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
1 ;;; tool-bar.el --- setting up the tool bar
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
2 ;;
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
3 ;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 105870
diff changeset
4 ;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
5 ;;
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
6 ;; Author: Dave Love <fx@gnu.org>
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
7 ;; Keywords: mouse frames
110015
280c8ae2476d Add "Package:" file headers to denote built-in packages.
Chong Yidong <cyd@stupidchicken.com>
parents: 109147
diff changeset
8 ;; Package: emacs
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
9
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
11
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
12 ;; GNU Emacs is free software: you can redistribute it and/or modify
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
14 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
15 ;; (at your option) any later version.
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
16
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
20 ;; GNU General Public License for more details.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
21
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
23 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
24
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
25 ;;; Commentary:
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
26
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
27 ;; Provides `tool-bar-mode' to control display of the tool-bar and
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
28 ;; bindings for the global tool bar with convenience functions
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
29 ;; `tool-bar-add-item' and `tool-bar-add-item-from-menu'.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
30
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
31 ;; The normal global binding for [tool-bar] (below) uses the value of
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
32 ;; `tool-bar-map' as the actual keymap to define the tool bar. Modes
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
33 ;; may either bind items under the [tool-bar] prefix key of the local
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
34 ;; map to add to the global bar or may set `tool-bar-map'
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
35 ;; buffer-locally to override it. (Some items are removed from the
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
36 ;; global bar in modes which have `special' as their `mode-class'
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
37 ;; property.)
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
38
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
39 ;; Todo: Somehow make tool bars easily customizable by the naive?
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
40
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
41 ;;; Code:
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
42
66494
b9971215f644 (tool-bar-mode): Delete autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 66168
diff changeset
43 ;; The autoload cookie doesn't work when preloading.
b9971215f644 (tool-bar-mode): Delete autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 66168
diff changeset
44 ;; Deleting it means invoking this command won't work
b9971215f644 (tool-bar-mode): Delete autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 66168
diff changeset
45 ;; when you are on a tty. I hope that won't cause too much trouble -- rms.
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
46 (define-minor-mode tool-bar-mode
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
47 "Toggle use of the tool bar.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
48 With numeric ARG, display the tool bar if and only if ARG is positive.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
49
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
50 See `tool-bar-add-item' and `tool-bar-add-item-from-menu' for
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
51 conveniently adding tool bar items."
109058
2f0720afc474 Change default-frame-alist and menu/tool-bar-mode interaction (Bug#2249).
Chong Yidong <cyd@stupidchicken.com>
parents: 108110
diff changeset
52 :init-value t
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
53 :global t
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
54 :group 'mouse
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
55 :group 'frames
109058
2f0720afc474 Change default-frame-alist and menu/tool-bar-mode interaction (Bug#2249).
Chong Yidong <cyd@stupidchicken.com>
parents: 108110
diff changeset
56 (let ((val (if tool-bar-mode 1 0)))
2f0720afc474 Change default-frame-alist and menu/tool-bar-mode interaction (Bug#2249).
Chong Yidong <cyd@stupidchicken.com>
parents: 108110
diff changeset
57 (dolist (frame (frame-list))
109147
783986775ee8 Set default-frame-alist, if necessary, in menu/tool-bar-mode.
Chong Yidong <cyd@stupidchicken.com>
parents: 109058
diff changeset
58 (set-frame-parameter frame 'tool-bar-lines val))
783986775ee8 Set default-frame-alist, if necessary, in menu/tool-bar-mode.
Chong Yidong <cyd@stupidchicken.com>
parents: 109058
diff changeset
59 ;; If the user has given `default-frame-alist' a `tool-bar-lines'
783986775ee8 Set default-frame-alist, if necessary, in menu/tool-bar-mode.
Chong Yidong <cyd@stupidchicken.com>
parents: 109058
diff changeset
60 ;; parameter, replace it.
783986775ee8 Set default-frame-alist, if necessary, in menu/tool-bar-mode.
Chong Yidong <cyd@stupidchicken.com>
parents: 109058
diff changeset
61 (if (assq 'tool-bar-lines default-frame-alist)
783986775ee8 Set default-frame-alist, if necessary, in menu/tool-bar-mode.
Chong Yidong <cyd@stupidchicken.com>
parents: 109058
diff changeset
62 (setq default-frame-alist
783986775ee8 Set default-frame-alist, if necessary, in menu/tool-bar-mode.
Chong Yidong <cyd@stupidchicken.com>
parents: 109058
diff changeset
63 (cons (cons 'tool-bar-lines val)
783986775ee8 Set default-frame-alist, if necessary, in menu/tool-bar-mode.
Chong Yidong <cyd@stupidchicken.com>
parents: 109058
diff changeset
64 (assq-delete-all 'tool-bar-lines
783986775ee8 Set default-frame-alist, if necessary, in menu/tool-bar-mode.
Chong Yidong <cyd@stupidchicken.com>
parents: 109058
diff changeset
65 default-frame-alist)))))
783986775ee8 Set default-frame-alist, if necessary, in menu/tool-bar-mode.
Chong Yidong <cyd@stupidchicken.com>
parents: 109058
diff changeset
66 (and tool-bar-mode
783986775ee8 Set default-frame-alist, if necessary, in menu/tool-bar-mode.
Chong Yidong <cyd@stupidchicken.com>
parents: 109058
diff changeset
67 (= 1 (length (default-value 'tool-bar-map))) ; not yet setup
783986775ee8 Set default-frame-alist, if necessary, in menu/tool-bar-mode.
Chong Yidong <cyd@stupidchicken.com>
parents: 109058
diff changeset
68 (tool-bar-setup)))
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
69
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
70 ;;;###autoload
83497
a25bb5ef27bf Fix tool-bar and menu-bar toggles in Show/Hide menu to reflect the state of the current frame.
Karoly Lorentey <lorentey@elte.hu>
parents: 83496
diff changeset
71 ;; Used in the Show/Hide menu, to have the toggle reflect the current frame.
a25bb5ef27bf Fix tool-bar and menu-bar toggles in Show/Hide menu to reflect the state of the current frame.
Karoly Lorentey <lorentey@elte.hu>
parents: 83496
diff changeset
72 (defun toggle-tool-bar-mode-from-frame (&optional arg)
a25bb5ef27bf Fix tool-bar and menu-bar toggles in Show/Hide menu to reflect the state of the current frame.
Karoly Lorentey <lorentey@elte.hu>
parents: 83496
diff changeset
73 "Toggle tool bar on or off, based on the status of the current frame.
a25bb5ef27bf Fix tool-bar and menu-bar toggles in Show/Hide menu to reflect the state of the current frame.
Karoly Lorentey <lorentey@elte.hu>
parents: 83496
diff changeset
74 See `tool-bar-mode' for more information."
a25bb5ef27bf Fix tool-bar and menu-bar toggles in Show/Hide menu to reflect the state of the current frame.
Karoly Lorentey <lorentey@elte.hu>
parents: 83496
diff changeset
75 (interactive (list (or current-prefix-arg 'toggle)))
a25bb5ef27bf Fix tool-bar and menu-bar toggles in Show/Hide menu to reflect the state of the current frame.
Karoly Lorentey <lorentey@elte.hu>
parents: 83496
diff changeset
76 (if (eq arg 'toggle)
a25bb5ef27bf Fix tool-bar and menu-bar toggles in Show/Hide menu to reflect the state of the current frame.
Karoly Lorentey <lorentey@elte.hu>
parents: 83496
diff changeset
77 (tool-bar-mode (if (> (frame-parameter nil 'tool-bar-lines) 0) 0 1))
a25bb5ef27bf Fix tool-bar and menu-bar toggles in Show/Hide menu to reflect the state of the current frame.
Karoly Lorentey <lorentey@elte.hu>
parents: 83496
diff changeset
78 (tool-bar-mode arg)))
a25bb5ef27bf Fix tool-bar and menu-bar toggles in Show/Hide menu to reflect the state of the current frame.
Karoly Lorentey <lorentey@elte.hu>
parents: 83496
diff changeset
79
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
80 (defvar tool-bar-map (make-sparse-keymap)
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
81 "Keymap for the tool bar.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
82 Define this locally to override the global tool bar.")
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
83
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
84 (global-set-key [tool-bar]
105870
26baacb565b0 * textmodes/tex-mode.el (tex-alt-dvi-print-command)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 101039
diff changeset
85 `(menu-item ,(purecopy "tool bar") ignore
94727
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
86 :filter tool-bar-make-keymap))
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
87
95841
b4e36ff621b3 Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents: 94899
diff changeset
88 (declare-function image-mask-p "image.c" (spec &optional frame))
b4e36ff621b3 Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents: 94899
diff changeset
89
99971
1b6dc3613e69 (tool-bar-find-image-cache): Var deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98658
diff changeset
90 (defconst tool-bar-keymap-cache (make-hash-table :weakness t :test 'equal))
1b6dc3613e69 (tool-bar-find-image-cache): Var deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98658
diff changeset
91
94727
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
92 (defun tool-bar-make-keymap (&optional ignore)
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
93 "Generate an actual keymap from `tool-bar-map'.
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
94 Its main job is to figure out which images to use based on the display's
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
95 color capability and based on the available image libraries."
99971
1b6dc3613e69 (tool-bar-find-image-cache): Var deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98658
diff changeset
96 (let ((key (cons (frame-terminal) tool-bar-map)))
1b6dc3613e69 (tool-bar-find-image-cache): Var deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98658
diff changeset
97 (or (gethash key tool-bar-keymap-cache)
1b6dc3613e69 (tool-bar-find-image-cache): Var deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98658
diff changeset
98 (puthash key (tool-bar-make-keymap-1) tool-bar-keymap-cache))))
1b6dc3613e69 (tool-bar-find-image-cache): Var deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98658
diff changeset
99
1b6dc3613e69 (tool-bar-find-image-cache): Var deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98658
diff changeset
100 (defun tool-bar-make-keymap-1 ()
1b6dc3613e69 (tool-bar-find-image-cache): Var deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98658
diff changeset
101 "Generate an actual keymap from `tool-bar-map', without caching."
94727
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
102 (mapcar (lambda (bind)
94897
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
103 (let (image-exp plist)
94727
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
104 (when (and (eq (car-safe (cdr-safe bind)) 'menu-item)
94897
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
105 ;; For the format of menu-items, see node
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
106 ;; `Extended Menu Items' in the Elisp manual.
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
107 (setq plist (nthcdr (if (consp (nth 4 bind)) 5 4)
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
108 bind))
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
109 (setq image-exp (plist-get plist :image))
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
110 (consp image-exp)
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
111 (not (eq (car image-exp) 'image))
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
112 (fboundp (car image-exp)))
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
113 (if (not (display-images-p))
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
114 (setq bind nil)
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
115 (let ((image (eval image-exp)))
94899
29fb4d52c079 (tool-bar-make-keymap): Additional minor fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 94897
diff changeset
116 (unless (and image (image-mask-p image))
94897
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
117 (setq image (append image '(:mask heuristic))))
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
118 (setq bind (copy-sequence bind)
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
119 plist (nthcdr (if (consp (nth 4 bind)) 5 4)
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
120 bind))
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
121 (plist-put plist :image image))))
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
122 bind))
94727
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
123 tool-bar-map))
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
124
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
125 ;;;###autoload
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
126 (defun tool-bar-add-item (icon def key &rest props)
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
127 "Add an item to the tool bar.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
128 ICON names the image, DEF is the key definition and KEY is a symbol
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
129 for the fake function key in the menu keymap. Remaining arguments
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
130 PROPS are additional items to add to the menu item specification. See
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
131 Info node `(elisp)Tool Bar'. Items are added from left to right.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
132
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
133 ICON is the base name of a file containing the image to use. The
80756
76e75acf7e4e Fix typos (sync from the trunk).
Juanma Barranquero <lekktu@gmail.com>
parents: 79721
diff changeset
134 function will first try to use low-color/ICON.xpm if `display-color-cells'
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
135 is less or equal to 256, then ICON.xpm, then ICON.pbm, and finally
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
136 ICON.xbm, using `find-image'.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
137
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
138 Use this function only to make bindings in the global value of `tool-bar-map'.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
139 To define items in any other map, use `tool-bar-local-item'."
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
140 (apply 'tool-bar-local-item icon def key tool-bar-map props))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
141
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
142 ;;;###autoload
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
143 (defun tool-bar-local-item (icon def key map &rest props)
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
144 "Add an item to the tool bar in map MAP.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
145 ICON names the image, DEF is the key definition and KEY is a symbol
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
146 for the fake function key in the menu keymap. Remaining arguments
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
147 PROPS are additional items to add to the menu item specification. See
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
148 Info node `(elisp)Tool Bar'. Items are added from left to right.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
149
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
150 ICON is the base name of a file containing the image to use. The
94727
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
151 function will first try to use low-color/ICON.xpm if `display-color-cells'
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
152 is less or equal to 256, then ICON.xpm, then ICON.pbm, and finally
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
153 ICON.xbm, using `find-image'."
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
154 (let* ((fg (face-attribute 'tool-bar :foreground))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
155 (bg (face-attribute 'tool-bar :background))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
156 (colors (nconc (if (eq fg 'unspecified) nil (list :foreground fg))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
157 (if (eq bg 'unspecified) nil (list :background bg))))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
158 (xpm-spec (list :type 'xpm :file (concat icon ".xpm")))
98624
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
159 (xpm-lo-spec (list :type 'xpm :file
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
160 (concat "low-color/" icon ".xpm")))
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
161 (pbm-spec (append (list :type 'pbm :file
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
162 (concat icon ".pbm")) colors))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
163 (xbm-spec (append (list :type 'xbm :file
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
164 (concat icon ".xbm")) colors))
99971
1b6dc3613e69 (tool-bar-find-image-cache): Var deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98658
diff changeset
165 (image-exp `(find-image
98624
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
166 (cond ((not (display-color-p))
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
167 ',(list pbm-spec xbm-spec xpm-lo-spec xpm-spec))
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
168 ((< (display-color-cells) 256)
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
169 ',(list xpm-lo-spec xpm-spec pbm-spec xbm-spec))
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
170 (t
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
171 ',(list xpm-spec pbm-spec xbm-spec))))))
94727
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
172 (define-key-after map (vector key)
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
173 `(menu-item ,(symbol-name key) ,def :image ,image-exp ,@props))))
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
174
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
175 ;;;###autoload
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
176 (defun tool-bar-add-item-from-menu (command icon &optional map &rest props)
66512
759df5a9dc3e (tool-bar-add-item-from-menu)
Nick Roberts <nickrob@snap.net.nz>
parents: 66494
diff changeset
177 "Define tool bar binding for COMMAND in keymap MAP using the given ICON.
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
178 This makes a binding for COMMAND in `tool-bar-map', copying its
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
179 binding from the menu bar in MAP (which defaults to `global-map'), but
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
180 modifies the binding by adding an image specification for ICON. It
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
181 finds ICON just like `tool-bar-add-item'. PROPS are additional
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
182 properties to add to the binding.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
183
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
184 MAP must contain appropriate binding for `[menu-bar]' which holds a keymap.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
185
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
186 Use this function only to make bindings in the global value of `tool-bar-map'.
66512
759df5a9dc3e (tool-bar-add-item-from-menu)
Nick Roberts <nickrob@snap.net.nz>
parents: 66494
diff changeset
187 To define items in any other map, use `tool-bar-local-item-from-menu'."
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
188 (apply 'tool-bar-local-item-from-menu command icon
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
189 (default-value 'tool-bar-map) map props))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
190
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
191 ;;;###autoload
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
192 (defun tool-bar-local-item-from-menu (command icon in-map &optional from-map &rest props)
66512
759df5a9dc3e (tool-bar-add-item-from-menu)
Nick Roberts <nickrob@snap.net.nz>
parents: 66494
diff changeset
193 "Define local tool bar binding for COMMAND using the given ICON.
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
194 This makes a binding for COMMAND in IN-MAP, copying its binding from
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
195 the menu bar in FROM-MAP (which defaults to `global-map'), but
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
196 modifies the binding by adding an image specification for ICON. It
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
197 finds ICON just like `tool-bar-add-item'. PROPS are additional
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
198 properties to add to the binding.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
199
66512
759df5a9dc3e (tool-bar-add-item-from-menu)
Nick Roberts <nickrob@snap.net.nz>
parents: 66494
diff changeset
200 FROM-MAP must contain appropriate binding for `[menu-bar]' which
759df5a9dc3e (tool-bar-add-item-from-menu)
Nick Roberts <nickrob@snap.net.nz>
parents: 66494
diff changeset
201 holds a keymap."
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
202 (unless from-map
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
203 (setq from-map global-map))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
204 (let* ((menu-bar-map (lookup-key from-map [menu-bar]))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
205 (keys (where-is-internal command menu-bar-map))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
206 (fg (face-attribute 'tool-bar :foreground))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
207 (bg (face-attribute 'tool-bar :background))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
208 (colors (nconc (if (eq fg 'unspecified) nil (list :foreground fg))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
209 (if (eq bg 'unspecified) nil (list :background bg))))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
210 (xpm-spec (list :type 'xpm :file (concat icon ".xpm")))
98624
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
211 (xpm-lo-spec (list :type 'xpm :file
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
212 (concat "low-color/" icon ".xpm")))
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
213 (pbm-spec (append (list :type 'pbm :file
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
214 (concat icon ".pbm")) colors))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
215 (xbm-spec (append (list :type 'xbm :file
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
216 (concat icon ".xbm")) colors))
99971
1b6dc3613e69 (tool-bar-find-image-cache): Var deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98658
diff changeset
217 (image-exp `(find-image
98624
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
218 (cond ((not (display-color-p))
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
219 ',(list pbm-spec xbm-spec xpm-lo-spec xpm-spec))
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
220 ((< (display-color-cells) 256)
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
221 ',(list xpm-lo-spec xpm-spec pbm-spec xbm-spec))
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
222 (t
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
223 ',(list xpm-spec pbm-spec xbm-spec)))))
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
224 submap key)
94727
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
225 ;; We'll pick up the last valid entry in the list of keys if
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
226 ;; there's more than one.
108085
34eca4ecfbe6 Provide byte-compiler warnings when set-default a read-only var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 108024
diff changeset
227 ;; FIXME: Aren't they *all* "valid"?? --Stef
94727
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
228 (dolist (k keys)
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
229 ;; We're looking for a binding of the command in a submap of
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
230 ;; the menu bar map, so the key sequence must be two or more
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
231 ;; long.
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
232 (if (and (vectorp k)
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
233 (> (length k) 1))
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
234 (let ((m (lookup-key menu-bar-map (substring k 0 -1)))
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
235 ;; Last element in the bound key sequence:
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
236 (kk (aref k (1- (length k)))))
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
237 (if (and (keymapp m)
108110
21b1df34bc55 tool-bar.el: Revert unintended checkin in rev 100010.
Jan D <jan.h.d@swipnet.se>
parents: 108085
diff changeset
238 (symbolp kk))
94727
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
239 (setq submap m
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
240 key kk)))))
108110
21b1df34bc55 tool-bar.el: Revert unintended checkin in rev 100010.
Jan D <jan.h.d@swipnet.se>
parents: 108085
diff changeset
241 (when (and (symbolp submap) (boundp submap))
21b1df34bc55 tool-bar.el: Revert unintended checkin in rev 100010.
Jan D <jan.h.d@swipnet.se>
parents: 108085
diff changeset
242 (setq submap (eval submap)))
21b1df34bc55 tool-bar.el: Revert unintended checkin in rev 100010.
Jan D <jan.h.d@swipnet.se>
parents: 108085
diff changeset
243 (let ((defn (assq key (cdr submap))))
21b1df34bc55 tool-bar.el: Revert unintended checkin in rev 100010.
Jan D <jan.h.d@swipnet.se>
parents: 108085
diff changeset
244 (if (eq (cadr defn) 'menu-item)
21b1df34bc55 tool-bar.el: Revert unintended checkin in rev 100010.
Jan D <jan.h.d@swipnet.se>
parents: 108085
diff changeset
245 (define-key-after in-map (vector key)
21b1df34bc55 tool-bar.el: Revert unintended checkin in rev 100010.
Jan D <jan.h.d@swipnet.se>
parents: 108085
diff changeset
246 (append (cdr defn) (list :image image-exp) props))
21b1df34bc55 tool-bar.el: Revert unintended checkin in rev 100010.
Jan D <jan.h.d@swipnet.se>
parents: 108085
diff changeset
247 (setq defn (cdr defn))
94727
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
248 (define-key-after in-map (vector key)
108110
21b1df34bc55 tool-bar.el: Revert unintended checkin in rev 100010.
Jan D <jan.h.d@swipnet.se>
parents: 108085
diff changeset
249 (let ((rest (cdr defn)))
21b1df34bc55 tool-bar.el: Revert unintended checkin in rev 100010.
Jan D <jan.h.d@swipnet.se>
parents: 108085
diff changeset
250 ;; If the rest of the definition starts
21b1df34bc55 tool-bar.el: Revert unintended checkin in rev 100010.
Jan D <jan.h.d@swipnet.se>
parents: 108085
diff changeset
251 ;; with a list of menu cache info, get rid of that.
21b1df34bc55 tool-bar.el: Revert unintended checkin in rev 100010.
Jan D <jan.h.d@swipnet.se>
parents: 108085
diff changeset
252 (if (and (consp rest) (consp (car rest)))
21b1df34bc55 tool-bar.el: Revert unintended checkin in rev 100010.
Jan D <jan.h.d@swipnet.se>
parents: 108085
diff changeset
253 (setq rest (cdr rest)))
21b1df34bc55 tool-bar.el: Revert unintended checkin in rev 100010.
Jan D <jan.h.d@swipnet.se>
parents: 108085
diff changeset
254 (append `(menu-item ,(car defn) ,rest)
21b1df34bc55 tool-bar.el: Revert unintended checkin in rev 100010.
Jan D <jan.h.d@swipnet.se>
parents: 108085
diff changeset
255 (list :image image-exp) props)))))))
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
256
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
257 ;;; Set up some global items. Additions/deletions up for grabs.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
258
98658
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
259 (defun tool-bar-setup ()
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
260 ;; People say it's bad to have EXIT on the tool bar, since users
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
261 ;; might inadvertently click that button.
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
262 ;;(tool-bar-add-item-from-menu 'save-buffers-kill-emacs "exit")
108024
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 106815
diff changeset
263 (tool-bar-add-item-from-menu 'find-file "new" nil :label "New File")
98658
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
264 (tool-bar-add-item-from-menu 'menu-find-file-existing "open")
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
265 (tool-bar-add-item-from-menu 'dired "diropen")
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
266 (tool-bar-add-item-from-menu 'kill-this-buffer "close")
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
267 (tool-bar-add-item-from-menu 'save-buffer "save" nil
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
268 :visible '(or buffer-file-name
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
269 (not (eq 'special
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
270 (get major-mode
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
271 'mode-class)))))
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
272 (tool-bar-add-item-from-menu 'write-file "saveas" nil
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
273 :visible '(or buffer-file-name
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
274 (not (eq 'special
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
275 (get major-mode
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
276 'mode-class)))))
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
277 (tool-bar-add-item-from-menu 'undo "undo" nil
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
278 :visible '(not (eq 'special (get major-mode
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
279 'mode-class))))
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
280 (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [cut])
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
281 "cut" nil
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
282 :visible '(not (eq 'special (get major-mode
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
283 'mode-class))))
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
284 (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [copy])
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
285 "copy")
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
286 (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [paste])
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
287 "paste" nil
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
288 :visible '(not (eq 'special (get major-mode
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
289 'mode-class))))
108024
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 106815
diff changeset
290 (tool-bar-add-item-from-menu 'nonincremental-search-forward "search"
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 106815
diff changeset
291 nil :label "Search")
98658
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
292 ;;(tool-bar-add-item-from-menu 'ispell-buffer "spell")
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
293
98658
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
294 ;; There's no icon appropriate for News and we need a command rather
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
295 ;; than a lambda for Read Mail.
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
296 ;;(tool-bar-add-item-from-menu 'compose-mail "mail/compose")
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
297
108024
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 106815
diff changeset
298 (tool-bar-add-item-from-menu 'print-buffer "print" nil :label "Print")
98658
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
299
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
300 ;; tool-bar-add-item-from-menu itself operates on
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
301 ;; (default-value 'tool-bar-map), but when we don't use that function,
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
302 ;; we must explicitly operate on the default value.
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
303
98658
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
304 (let ((tool-bar-map (default-value 'tool-bar-map)))
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
305 (tool-bar-add-item "preferences" 'customize 'customize
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
306 :help "Edit preferences (customize)")
70323
810cd69c168f (tool-bar-setup): Put Help and Preferences items in the default tool-bar-map.
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
307
98658
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
308 (tool-bar-add-item "help" (lambda ()
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
309 (interactive)
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
310 (popup-menu menu-bar-help-menu))
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
311 'help
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
312 :help "Pop up the Help menu")))
83514
d9f8d2a65d18 Merged from emacs@sv.gnu.org
Karoly Lorentey <lorentey@elte.hu>
parents: 83497 70323
diff changeset
313
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
314
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
315 (provide 'tool-bar)
93975
1e3a407766b9 Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92262
diff changeset
316 ;; arch-tag: 15f30f0a-d0d7-4d50-bbb7-f48fd0c8582f
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
317 ;;; tool-bar.el ends here