aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorKaroly Lorentey2005-12-26 03:16:59 +0000
committerKaroly Lorentey2005-12-26 03:16:59 +0000
commitfeba0cd6405ebb80af743e2f978442d9c837bcd2 (patch)
tree1cb964aa641bee514d9cda2eafe27a0a97e65ad1 /lisp
parent30663b475e57197c9896a252e1d4ca31c579fa2b (diff)
parent7a32e81fb608282314e27db21a00138aaa91f29a (diff)
downloademacs-feba0cd6405ebb80af743e2f978442d9c837bcd2.tar.gz
emacs-feba0cd6405ebb80af743e2f978442d9c837bcd2.zip
Merged from miles@gnu.org--gnu-2005 (patch 677)
Patches applied: * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-677 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-463
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog98
-rw-r--r--lisp/align.el2
-rw-r--r--lisp/composite.el5
-rw-r--r--lisp/cus-edit.el13
-rw-r--r--lisp/cus-start.el29
-rw-r--r--lisp/emacs-lisp/cl-extra.el5
-rw-r--r--lisp/font-lock.el4
-rw-r--r--lisp/help-mode.el4
-rw-r--r--lisp/language/ethio-util.el4
-rw-r--r--lisp/log-view.el55
-rw-r--r--lisp/longlines.el25
-rw-r--r--lisp/menu-bar.el6
-rw-r--r--lisp/mh-e/ChangeLog65
-rw-r--r--lisp/mh-e/mh-acros.el12
-rw-r--r--lisp/mh-e/mh-alias.el16
-rw-r--r--lisp/mh-e/mh-comp.el32
-rw-r--r--lisp/mh-e/mh-customize.el214
-rw-r--r--lisp/mh-e/mh-e.el93
-rw-r--r--lisp/mh-e/mh-funcs.el14
-rw-r--r--lisp/mh-e/mh-gnus.el24
-rw-r--r--lisp/mh-e/mh-identity.el10
-rw-r--r--lisp/mh-e/mh-inc.el10
-rw-r--r--lisp/mh-e/mh-index.el59
-rw-r--r--lisp/mh-e/mh-init.el22
-rw-r--r--lisp/mh-e/mh-junk.el10
-rw-r--r--lisp/mh-e/mh-mime.el22
-rw-r--r--lisp/mh-e/mh-pick.el24
-rw-r--r--lisp/mh-e/mh-print.el10
-rw-r--r--lisp/mh-e/mh-seq.el37
-rw-r--r--lisp/mh-e/mh-speed.el10
-rw-r--r--lisp/mh-e/mh-utils.el61
-rw-r--r--lisp/progmodes/sh-script.el2
-rw-r--r--lisp/ps-bdf.el6
-rw-r--r--lisp/subr.el2
-rw-r--r--lisp/term/mac-win.el63
-rw-r--r--lisp/textmodes/org.el248
-rw-r--r--lisp/textmodes/picture.el99
-rw-r--r--lisp/tooltip.el34
38 files changed, 935 insertions, 514 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 6e9c40d2cca..b3b1757b2e4 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,85 @@
12005-12-20 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * log-view.el (log-view-file-re, log-view-message-re): Use shy groups.
4 (log-view-font-lock-keywords): Ajust subgroup numbers.
5 (log-view-current-tag): Don't hard code the number of subgroups.
6
72005-12-20 Juri Linkov <juri@jurta.org>
8
9 * tooltip.el (tooltip): Move defgroup before define-minor-mode.
10 (tooltip-x-offset, tooltip-y-offset): Doc fix.
11
12 * menu-bar.el (menu-bar-menu-frame-live-and-visible-p)
13 (menu-bar-non-minibuffer-window-p): Instead of checking
14 display-multi-frame-p, use selected-frame when menu-updating-frame
15 is nil.
16
172005-12-20 Davis Herring <herring@lanl.gov> (tiny change)
18
19 * align.el (align-rules-list): Use [ \t] instead of \s-
20 for column separators in text mode.
21
222005-12-20 Nick Roberts <nickrob@snap.net.nz>
23
24 * help-mode.el (help-customize-variable, help-customize-face):
25 Don't pop help-xref-stack as help-follow no longer pushes
26 anything on to it.
27
282005-12-20 Carsten Dominik <dominik@science.uva.nl>
29
30 * textmodes/org.el: (org-agenda-custom-commands): New option.
31 (org-agenda): Offer custom commands on splash screen.
32 (org-make-tags-matcher): Parser for Boolean logic added.
33 (org-agenda-set-tags): New command.
34 (org-agenda-menu, org-agenda-mode-map): Add `org-agenda-set-tags'.
35 (org-set-tags): Efficiency improvements.
36 (org-auto-align-tags): New option.
37 (org-todo, org-demote, org-promote): Realign tags.
38 (org-tags-completion-function): Use also "&" and "|" as separators.
39 (org-org-menu): Agenda commands simplified.
40
412005-12-19 Luc Teirlinck <teirllm@auburn.edu>
42
43 * cus-edit.el (customize-apropos, customize-apropos-options):
44 Docstring changes.
45
46 * font-lock.el (font-lock): Add tags to the links in the defgroup.
47
482005-12-19 Chong Yidong <cyd@stupidchicken.com>
49
50 * longlines.el (longlines-mode): Wrap while widened.
51 (longlines-decode-region, longlines-encode-region): Compute max
52 just once.
53
542005-12-19 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
55
56 * cus-edit.el (mac): New group.
57
58 * cus-start.el (all): Add user options in macterm.c. Add test for
59 Mac-related built-ins. Fix test for GTK-related built-ins.
60
61 * term/mac-win.el (mac-handle-language-change)
62 (mac-ae-open-documents, mac-ae-get-url, mac-services-open-file)
63 (mac-services-open-selection, mac-services-mail-selection)
64 (mac-services-mail-to, mac-services-insert-text)
65 (mac-dispatch-apple-event): Add docstrings.
66 (x-get-selection, mac-select-convert-to-string): Select coding
67 system from `utf-16be' and `utf-16le' using `byteorder'.
68
692005-12-18 Stefan Monnier <monnier@iro.umontreal.ca>
70
71 * subr.el (lazy-completion-table): Don't be fooled if the var holds
72 a "list" (lambda ...) rather than a real completion list.
73
74 * emacs-lisp/cl-extra.el (cl-macroexpand-all): Fix code-walk for
75 lexical-let when encountering ((lambda (...) ...) ...).
76
772005-12-17 Chong Yidong <cyd@stupidchicken.com>
78
79 * progmodes/sh-script.el (sh-mode):
80 * language/ethio-util.el (ethio-fidel-to-sera-mail-or-marker):
81 * textmodes/picture.el (picture-mode): Update docstrings.
82
12005-12-17 Eli Zaretskii <eliz@gnu.org> 832005-12-17 Eli Zaretskii <eliz@gnu.org>
2 84
3 * makefile.w32-in (autoloads, custom-deps): Warn that parts of 85 * makefile.w32-in (autoloads, custom-deps): Warn that parts of
@@ -9,8 +91,8 @@
9 91
102005-12-17 Chong Yidong <cyd@stupidchicken.com> 922005-12-17 Chong Yidong <cyd@stupidchicken.com>
11 93
12 * emacs-lisp/edebug.el (edebug-safe-prin1-to-string): Capture 94 * emacs-lisp/edebug.el (edebug-safe-prin1-to-string):
13 error from printing circular structures. 95 Capture error from printing circular structures.
14 96
152005-12-17 Martin Rudalics <rudalics@gmx.at> (tiny change) 972005-12-17 Martin Rudalics <rudalics@gmx.at> (tiny change)
16 98
@@ -7215,7 +7297,7 @@
72152005-08-26 Kim F. Storm <storm@cua.dk> 72972005-08-26 Kim F. Storm <storm@cua.dk>
7216 7298
7217 * subr.el (version-list-<, version-list-<=, version-list-=): 7299 * subr.el (version-list-<, version-list-<=, version-list-=):
7218 Renamed from integer-list-*. 7300 Rename from integer-list-*.
7219 (version-list-not-zero): Likewise. Fix while loop. 7301 (version-list-not-zero): Likewise. Fix while loop.
7220 (version=): Use version-list-= instead of string-equal. 7302 (version=): Use version-list-= instead of string-equal.
7221 7303
@@ -12362,8 +12444,7 @@
12362 (multiple-value-bind, multiple-value-setq, shiftf): 12444 (multiple-value-bind, multiple-value-setq, shiftf):
12363 Improve argument/docstring consistency. 12445 Improve argument/docstring consistency.
12364 12446
12365 * subr.el (focus-frame, unfocus-frame): 12447 * subr.el (focus-frame, unfocus-frame): Revert deletion on 2005-05-01.
12366 Revert deletion on 2005-05-01.
12367 12448
123682005-05-22 Andre Spiegel <spiegel@gnu.org> 124492005-05-22 Andre Spiegel <spiegel@gnu.org>
12369 12450
@@ -12496,8 +12577,7 @@
12496 (subst-if-not, nsubst, nsubst-if, nsubst-if-not, sublis) 12577 (subst-if-not, nsubst, nsubst-if, nsubst-if-not, sublis)
12497 (nsublis, tree-equal): Improve argument/docstring consistency. 12578 (nsublis, tree-equal): Improve argument/docstring consistency.
12498 12579
12499 * subr.el (send-string, send-region): 12580 * subr.el (send-string, send-region): Remove obsolescence declaration.
12500 Remove obsolescence declaration.
12501 (window-dot, set-window-dot, read-input, show-buffer) 12581 (window-dot, set-window-dot, read-input, show-buffer)
12502 (eval-current-buffer, string-to-int): 12582 (eval-current-buffer, string-to-int):
12503 Add release number to obsolescence declarations. 12583 Add release number to obsolescence declarations.
@@ -12574,8 +12654,8 @@
12574 * emacs-lisp/byte-run.el (eval-when-compile): Doc fix. 12654 * emacs-lisp/byte-run.el (eval-when-compile): Doc fix.
12575 12655
12576 * emacs-lisp/bytecomp.el 12656 * emacs-lisp/bytecomp.el
12577 (byte-compile-file-form-custom-declare-variable): Call 12657 (byte-compile-file-form-custom-declare-variable):
12578 byte-compile-nogroup-warn if appropriate. 12658 Call byte-compile-nogroup-warn if appropriate.
12579 12659
12580 * progmodes/compile.el (compilation-finish-function): Mark obsolete. 12660 * progmodes/compile.el (compilation-finish-function): Mark obsolete.
12581 (compilation-set-window): Don't call left-fringe-p; do it directly. 12661 (compilation-set-window): Don't call left-fringe-p; do it directly.
diff --git a/lisp/align.el b/lisp/align.el
index 122ce2f0f88..f63085011b7 100644
--- a/lisp/align.el
+++ b/lisp/align.el
@@ -559,7 +559,7 @@ The possible settings for `align-region-separate' are:
559 ;; With a numeric prefix argument, or C-u, space delimited text 559 ;; With a numeric prefix argument, or C-u, space delimited text
560 ;; tables will be aligned. 560 ;; tables will be aligned.
561 (text-column 561 (text-column
562 (regexp . "\\(^\\|\\S-\\)\\(\\s-+\\)\\(\\S-\\|$\\)") 562 (regexp . "\\(^\\|\\S-\\)\\([ \t]+\\)\\(\\S-\\|$\\)")
563 (group . 2) 563 (group . 2)
564 (modes . align-text-modes) 564 (modes . align-text-modes)
565 (repeat . t) 565 (repeat . t)
diff --git a/lisp/composite.el b/lisp/composite.el
index 452a9cebca9..a1c84e7b22a 100644
--- a/lisp/composite.el
+++ b/lisp/composite.el
@@ -1,7 +1,8 @@
1;;; composite.el --- support character composition 1;;; composite.el --- support character composition
2 2
3;; Copyright (C) 1999 Electrotechnical Laboratory, JAPAN. 3;; Copyright (C) 1999, 2000
4;; Licensed to the Free Software Foundation. 4;; National Institute of Advanced Industrial Science and Technology (AIST)
5;; Registration Number H14PRO021
5 6
6;; Keywords: mule, multilingual, character composition 7;; Keywords: mule, multilingual, character composition
7 8
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index 20a023dee75..43c38e172b5 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -459,6 +459,13 @@
459 :link '(custom-manual "(emacs)Windows") 459 :link '(custom-manual "(emacs)Windows")
460 :group 'environment) 460 :group 'environment)
461 461
462(defgroup mac nil
463 "Mac specific features."
464 :link '(custom-manual "(emacs)Mac OS")
465 :group 'environment
466 :version "22.1"
467 :prefix "mac-")
468
462;;; Utilities. 469;;; Utilities.
463 470
464(defun custom-quote (sexp) 471(defun custom-quote (sexp)
@@ -1258,7 +1265,8 @@ If ALL is `options', include only options.
1258If ALL is `faces', include only faces. 1265If ALL is `faces', include only faces.
1259If ALL is `groups', include only groups. 1266If ALL is `groups', include only groups.
1260If ALL is t (interactively, with prefix arg), include variables 1267If ALL is t (interactively, with prefix arg), include variables
1261that are not customizable options, as well as faces and groups." 1268that are not customizable options, as well as faces and groups
1269\(but we recommend using `apropos-variable' instead)."
1262 (interactive "sCustomize regexp: \nP") 1270 (interactive "sCustomize regexp: \nP")
1263 (let ((found nil)) 1271 (let ((found nil))
1264 (mapatoms (lambda (symbol) 1272 (mapatoms (lambda (symbol)
@@ -1286,7 +1294,8 @@ that are not customizable options, as well as faces and groups."
1286;;;###autoload 1294;;;###autoload
1287(defun customize-apropos-options (regexp &optional arg) 1295(defun customize-apropos-options (regexp &optional arg)
1288 "Customize all loaded customizable options matching REGEXP. 1296 "Customize all loaded customizable options matching REGEXP.
1289With prefix arg, include variables that are not customizable options." 1297With prefix arg, include variables that are not customizable options
1298\(but we recommend using `apropos-variable' instead)."
1290 (interactive "sCustomize regexp: \nP") 1299 (interactive "sCustomize regexp: \nP")
1291 (customize-apropos regexp (or arg 'options))) 1300 (customize-apropos regexp (or arg 'options)))
1292 1301
diff --git a/lisp/cus-start.el b/lisp/cus-start.el
index 73e1dff5a44..65f9c0812fd 100644
--- a/lisp/cus-start.el
+++ b/lisp/cus-start.el
@@ -194,6 +194,33 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of
194 (suggest-key-bindings keyboard (choice (const :tag "off" nil) 194 (suggest-key-bindings keyboard (choice (const :tag "off" nil)
195 (integer :tag "time" 2) 195 (integer :tag "time" 2)
196 (other :tag "on"))) 196 (other :tag "on")))
197 ;; macterm.c
198 (mac-control-modifier mac (choice (const :tag "No modifier" nil)
199 (const control) (const meta)
200 (const alt) (const hyper)
201 (const super)) "22.1")
202 (mac-command-modifier mac (choice (const :tag "No modifier" nil)
203 (const control) (const meta)
204 (const alt) (const hyper)
205 (const super)) "22.1")
206 (mac-option-modifier mac (choice (const :tag "No modifier (work as option)" nil)
207 (const control) (const meta)
208 (const alt) (const hyper)
209 (const super)) "22.1")
210 (mac-function-modifier mac
211 (choice (const :tag "No modifier (work as function)" nil)
212 (const control) (const meta)
213 (const alt) (const hyper)
214 (const super)) "22.1")
215 (mac-emulate-three-button-mouse mac
216 (choice (const :tag "No emulation" nil)
217 (const :tag "Option->2, Command->3" t)
218 (const :tag "Command->2, Option->3" reverse))
219 "22.1")
220 (mac-wheel-button-is-mouse-2 mac boolean "22.1")
221 (mac-pass-command-to-system mac boolean "22.1")
222 (mac-pass-control-to-system mac boolean "22.1")
223 (mac-allow-anti-aliasing mac boolean "22.1")
197 224
198;; This is not good news because it will use the wrong 225;; This is not good news because it will use the wrong
199;; version-specific directories when you upgrade. We need 226;; version-specific directories when you upgrade. We need
@@ -366,6 +393,8 @@ since it could result in memory overflow and make Emacs crash."
366 (eq system-type 'ms-dos)) 393 (eq system-type 'ms-dos))
367 ((string-match "\\`w32-" (symbol-name symbol)) 394 ((string-match "\\`w32-" (symbol-name symbol))
368 (eq system-type 'windows-nt)) 395 (eq system-type 'windows-nt))
396 ((string-match "\\`mac-" (symbol-name symbol))
397 (eq window-system 'mac))
369 ((string-match "\\`x-.*gtk" (symbol-name symbol)) 398 ((string-match "\\`x-.*gtk" (symbol-name symbol))
370 (featurep 'gtk)) 399 (featurep 'gtk))
371 ((string-match "\\`x-" (symbol-name symbol)) 400 ((string-match "\\`x-" (symbol-name symbol))
diff --git a/lisp/emacs-lisp/cl-extra.el b/lisp/emacs-lisp/cl-extra.el
index 4ac1a72b0d7..c5a006912df 100644
--- a/lisp/emacs-lisp/cl-extra.el
+++ b/lisp/emacs-lisp/cl-extra.el
@@ -743,6 +743,11 @@ This also does some trivial optimizations to make the form prettier."
743 (let* ((args (cl-macroexpand-body (cdr form) env)) (p args)) 743 (let* ((args (cl-macroexpand-body (cdr form) env)) (p args))
744 (while (and p (symbolp (car p))) (setq p (cddr p))) 744 (while (and p (symbolp (car p))) (setq p (cddr p)))
745 (if p (cl-macroexpand-all (cons 'setf args)) (cons 'setq args)))) 745 (if p (cl-macroexpand-all (cons 'setf args)) (cons 'setq args))))
746 ((consp (car form))
747 (cl-macroexpand-all (list* 'funcall
748 (list 'function (car form))
749 (cdr form))
750 env))
746 (t (cons (car form) (cl-macroexpand-body (cdr form) env))))) 751 (t (cons (car form) (cl-macroexpand-body (cdr form) env)))))
747 752
748(defun cl-macroexpand-body (body &optional env) 753(defun cl-macroexpand-body (body &optional env)
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index 58fdf6dd809..45feee19744 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -212,8 +212,8 @@
212;; Define core `font-lock' group. 212;; Define core `font-lock' group.
213(defgroup font-lock '((jit-lock custom-group)) 213(defgroup font-lock '((jit-lock custom-group))
214 "Font Lock mode text highlighting package." 214 "Font Lock mode text highlighting package."
215 :link '(custom-manual "(emacs)Font Lock") 215 :link '(custom-manual :tag "Emacs Manual" "(emacs)Font Lock")
216 :link '(custom-manual "(elisp)Font Lock Mode") 216 :link '(custom-manual :tag "Elisp Manual" "(elisp)Font Lock Mode")
217 :group 'faces) 217 :group 'faces)
218 218
219(defgroup font-lock-faces nil 219(defgroup font-lock-faces nil
diff --git a/lisp/help-mode.el b/lisp/help-mode.el
index b7cea179aea..9941f0604bd 100644
--- a/lisp/help-mode.el
+++ b/lisp/help-mode.el
@@ -136,16 +136,12 @@ The format is (FUNCTION ARGS...).")
136(define-button-type 'help-customize-variable 136(define-button-type 'help-customize-variable
137 :supertype 'help-xref 137 :supertype 'help-xref
138 'help-function (lambda (v) 138 'help-function (lambda (v)
139 (if help-xref-stack
140 (pop help-xref-stack))
141 (customize-variable v)) 139 (customize-variable v))
142 'help-echo (purecopy "mouse-2, RET: customize variable")) 140 'help-echo (purecopy "mouse-2, RET: customize variable"))
143 141
144(define-button-type 'help-customize-face 142(define-button-type 'help-customize-face
145 :supertype 'help-xref 143 :supertype 'help-xref
146 'help-function (lambda (v) 144 'help-function (lambda (v)
147 (if help-xref-stack
148 (pop help-xref-stack))
149 (customize-face v)) 145 (customize-face v))
150 'help-echo (purecopy "mouse-2, RET: customize face")) 146 'help-echo (purecopy "mouse-2, RET: customize face"))
151 147
diff --git a/lisp/language/ethio-util.el b/lisp/language/ethio-util.el
index fb70b2641d0..413ad3c3183 100644
--- a/lisp/language/ethio-util.el
+++ b/lisp/language/ethio-util.el
@@ -824,7 +824,7 @@ Delete the escape even it is not recognized."
824 824
825;;;###autoload 825;;;###autoload
826(defun ethio-sera-to-fidel-mail-or-marker (&optional arg) 826(defun ethio-sera-to-fidel-mail-or-marker (&optional arg)
827 "Execute ethio-sera-to-fidel-mail or ethio-sera-to-fidel-marker depending on the current major mode. 827 "Execute `ethio-sera-to-fidel-mail' or `ethio-sera-to-fidel-marker' depending on the current major mode.
828If in rmail-mode or in mail-mode, execute the former; otherwise latter." 828If in rmail-mode or in mail-mode, execute the former; otherwise latter."
829 829
830 (interactive "P") 830 (interactive "P")
@@ -1214,7 +1214,7 @@ See also the descriptions of the variables
1214 1214
1215;;;###autoload 1215;;;###autoload
1216(defun ethio-fidel-to-sera-mail-or-marker (&optional arg) 1216(defun ethio-fidel-to-sera-mail-or-marker (&optional arg)
1217 "Execute ethio-fidel-to-sera-mail or ethio-fidel-to-sera-marker depending on the current major mode. 1217 "Execute `ethio-fidel-to-sera-mail' or `ethio-fidel-to-sera-marker' depending on the current major mode.
1218If in rmail-mode or in mail-mode, execute the former; otherwise latter." 1218If in rmail-mode or in mail-mode, execute the former; otherwise latter."
1219 1219
1220 (interactive "P") 1220 (interactive "P")
diff --git a/lisp/log-view.el b/lisp/log-view.el
index 6a9464005fb..9249531129b 100644
--- a/lisp/log-view.el
+++ b/lisp/log-view.el
@@ -25,11 +25,36 @@
25 25
26;;; Commentary: 26;;; Commentary:
27 27
28;; Todo: 28;; Major mode to browse revision log histories.
29;; Currently supports the format output by:
30;; RCS, SCCS, CVS, Subversion.
31
32;; Examples of log output:
33
34;;;; RCS/CVS:
35
36;; ----------------------------
37;; revision 1.35 locked by: turlutut
38;; date: 2005-03-22 18:48:38 +0000; author: monnier; state: Exp; lines: +6 -8
39;; (gnus-display-time-event-handler):
40;; Check display-time-timer at runtime rather than only at load time
41;; in case display-time-mode is turned off in the mean time.
42;; ----------------------------
43;; revision 1.34
44;; date: 2005-02-09 15:50:38 +0000; author: kfstorm; state: Exp; lines: +7 -7
45;; branches: 1.34.2;
46;; Change release version from 21.4 to 22.1 throughout.
47;; Change development version from 21.3.50 to 22.0.50.
48
49;;;; SCCS:
50
51;;;; Subversion:
52
53;;; Todo:
29 54
30;; - add compatibility with cvs-log.el
31;; - add ability to modify a log-entry (via cvs-mode-admin ;-) 55;; - add ability to modify a log-entry (via cvs-mode-admin ;-)
32;; - remove references to cvs-* 56;; - remove references to cvs-*
57;; - make it easier to add support for new backends without changing the code.
33 58
34;;; Code: 59;;; Code:
35 60
@@ -87,17 +112,20 @@
87(defvar log-view-message-face 'log-view-message) 112(defvar log-view-message-face 'log-view-message)
88 113
89(defconst log-view-file-re 114(defconst log-view-file-re
90 (concat "^\\(" 115 (concat "^\\(?:Working file: \\(.+\\)" ;RCS and CVS.
91 "Working file: \\(.+\\)" 116 "\\|SCCS/s\\.\\(.+\\):" ;SCCS.
92 "\\|SCCS/s\\.\\(.+\\):" 117 "\\)\n")) ;Include the \n for font-lock reasons.
93 "\\)\n")) 118
94;; In RCS, a locked revision will look like "revision N.M\tlocked by: FOO". 119(defconst log-view-message-re
95(defconst log-view-message-re "^\\(revision \\([.0-9]+\\)\\(?:\t.*\\)?\\|r\\([0-9]+\\) | .* | .*\\|D \\([.0-9]+\\) .*\\)$") 120 (concat "^\\(?:revision \\([.0-9]+\\)\\(?:\t.*\\)?" ; RCS and CVS.
121 "\\|r\\([0-9]+\\) | .* | .*" ; Subversion.
122 "\\|D \\([.0-9]+\\) .*" ; SCCS.
123 "\\)$"))
96 124
97(defconst log-view-font-lock-keywords 125(defconst log-view-font-lock-keywords
98 `((,log-view-file-re 126 `((,log-view-file-re
127 (1 (if (boundp 'cvs-filename-face) cvs-filename-face) nil t)
99 (2 (if (boundp 'cvs-filename-face) cvs-filename-face) nil t) 128 (2 (if (boundp 'cvs-filename-face) cvs-filename-face) nil t)
100 (3 (if (boundp 'cvs-filename-face) cvs-filename-face) nil t)
101 (0 log-view-file-face append)) 129 (0 log-view-file-face append))
102 (,log-view-message-re . log-view-message-face))) 130 (,log-view-message-re . log-view-message-face)))
103(defconst log-view-font-lock-defaults 131(defconst log-view-font-lock-defaults
@@ -158,10 +186,17 @@
158 (forward-line 1) 186 (forward-line 1)
159 (let ((pt (point))) 187 (let ((pt (point)))
160 (when (re-search-backward log-view-message-re nil t) 188 (when (re-search-backward log-view-message-re nil t)
161 (let ((rev (or (match-string 2) (match-string 3) (match-string 4)))) 189 (let (rev)
190 ;; Find the subgroup that matched.
191 (dotimes (i (/ (match-data 'integers) 2))
192 (setq rev (or rev (match-string (1+ i)))))
162 (unless (re-search-forward log-view-file-re pt t) 193 (unless (re-search-forward log-view-file-re pt t)
163 rev)))))) 194 rev))))))
164 195
196(defvar cvs-minor-current-files)
197(defvar cvs-branch-prefix)
198(defvar cvs-secondary-branch-prefix)
199
165(defun log-view-minor-wrap (buf f) 200(defun log-view-minor-wrap (buf f)
166 (let ((data (with-current-buffer buf 201 (let ((data (with-current-buffer buf
167 (cons 202 (cons
diff --git a/lisp/longlines.el b/lisp/longlines.el
index a3912a26ca7..dadd8a5d58f 100644
--- a/lisp/longlines.el
+++ b/lisp/longlines.el
@@ -1,6 +1,6 @@
1;;; longlines.el --- automatically wrap long lines 1;;; longlines.el --- automatically wrap long lines
2 2
3;; Copyright (C) 2000, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 2000, 2001, 2004, 2005 Free Software Foundation, Inc.
4 4
5;; Authors: Kai Grossjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 5;; Authors: Kai Grossjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
6;; Alex Schroeder <alex@gnu.org> 6;; Alex Schroeder <alex@gnu.org>
@@ -111,7 +111,7 @@ are indicated with a symbol."
111 (add-hook 'before-revert-hook 'longlines-before-revert-hook nil t) 111 (add-hook 'before-revert-hook 'longlines-before-revert-hook nil t)
112 (make-local-variable 'buffer-substring-filters) 112 (make-local-variable 'buffer-substring-filters)
113 (set (make-local-variable 'isearch-search-fun-function) 113 (set (make-local-variable 'isearch-search-fun-function)
114 'longlinges-search-function) 114 'longlines-search-function)
115 (add-to-list 'buffer-substring-filters 'longlines-encode-string) 115 (add-to-list 'buffer-substring-filters 'longlines-encode-string)
116 (when longlines-wrap-follows-window-size 116 (when longlines-wrap-follows-window-size
117 (set (make-local-variable 'fill-column) 117 (set (make-local-variable 'fill-column)
@@ -127,8 +127,8 @@ are indicated with a symbol."
127 ;; longlines-wrap-lines that we'll never encounter from here 127 ;; longlines-wrap-lines that we'll never encounter from here
128 (save-restriction 128 (save-restriction
129 (widen) 129 (widen)
130 (longlines-decode-buffer)) 130 (longlines-decode-buffer)
131 (longlines-wrap-region (point-min) (point-max)) 131 (longlines-wrap-region (point-min) (point-max)))
132 (set-buffer-modified-p mod)) 132 (set-buffer-modified-p mod))
133 (when (and longlines-show-hard-newlines 133 (when (and longlines-show-hard-newlines
134 (not longlines-showing)) 134 (not longlines-showing))
@@ -166,7 +166,6 @@ are indicated with a symbol."
166 (widen) 166 (widen)
167 (longlines-encode-region (point-min) (point-max)))) 167 (longlines-encode-region (point-min) (point-max))))
168 (remove-hook 'change-major-mode-hook 'longlines-mode-off t) 168 (remove-hook 'change-major-mode-hook 'longlines-mode-off t)
169 (remove-hook 'before-kill-functions 'longlines-encode-region t)
170 (remove-hook 'after-change-functions 'longlines-after-change-function t) 169 (remove-hook 'after-change-functions 'longlines-after-change-function t)
171 (remove-hook 'post-command-hook 'longlines-post-command-function t) 170 (remove-hook 'post-command-hook 'longlines-post-command-function t)
172 (remove-hook 'before-revert-hook 'longlines-before-revert-hook t) 171 (remove-hook 'before-revert-hook 'longlines-before-revert-hook t)
@@ -327,10 +326,11 @@ If BEG and END are nil, the point and mark are used."
327 (if (null beg) (setq beg (point))) 326 (if (null beg) (setq beg (point)))
328 (if (null end) (setq end (mark t))) 327 (if (null end) (setq end (mark t)))
329 (save-excursion 328 (save-excursion
330 (goto-char (min beg end)) 329 (let ((reg-max (max beg end)))
331 (while (search-forward "\n" (max beg end) t) 330 (goto-char (min beg end))
332 (set-hard-newline-properties 331 (while (search-forward "\n" reg-max t)
333 (match-beginning 0) (match-end 0))))) 332 (set-hard-newline-properties
333 (match-beginning 0) (match-end 0))))))
334 334
335(defun longlines-decode-buffer () 335(defun longlines-decode-buffer ()
336 "Turn all newlines in the buffer into hard newlines." 336 "Turn all newlines in the buffer into hard newlines."
@@ -341,9 +341,10 @@ If BEG and END are nil, the point and mark are used."
341Hard newlines are left intact. The optional argument BUFFER exists for 341Hard newlines are left intact. The optional argument BUFFER exists for
342compatibility with `format-alist', and is ignored." 342compatibility with `format-alist', and is ignored."
343 (save-excursion 343 (save-excursion
344 (let ((mod (buffer-modified-p))) 344 (let ((reg-max (max beg end))
345 (mod (buffer-modified-p)))
345 (goto-char (min beg end)) 346 (goto-char (min beg end))
346 (while (search-forward "\n" (max (max beg end)) t) 347 (while (search-forward "\n" reg-max t)
347 (unless (get-text-property (match-beginning 0) 'hard) 348 (unless (get-text-property (match-beginning 0) 'hard)
348 (replace-match " "))) 349 (replace-match " ")))
349 (set-buffer-modified-p mod) 350 (set-buffer-modified-p mod)
@@ -422,7 +423,7 @@ This is called by `window-size-change-functions'."
422 423
423;; Isearch 424;; Isearch
424 425
425(defun longlinges-search-function () 426(defun longlines-search-function ()
426 (cond 427 (cond
427 (isearch-word 428 (isearch-word
428 (if isearch-forward 'word-search-forward 'word-search-backward)) 429 (if isearch-forward 'word-search-forward 'word-search-backward))
diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el
index 6fa8c8b0f03..afc207bc9f0 100644
--- a/lisp/menu-bar.el
+++ b/lisp/menu-bar.el
@@ -1418,8 +1418,7 @@ key, a click, or a menu-item"))
1418(defun menu-bar-menu-frame-live-and-visible-p () 1418(defun menu-bar-menu-frame-live-and-visible-p ()
1419 "Return non-nil if the menu frame is alive and visible. 1419 "Return non-nil if the menu frame is alive and visible.
1420The menu frame is the frame for which we are updating the menu." 1420The menu frame is the frame for which we are updating the menu."
1421 (let ((menu-frame (if (display-multi-frame-p) menu-updating-frame 1421 (let ((menu-frame (or menu-updating-frame (selected-frame))))
1422 (selected-frame))))
1423 (and (frame-live-p menu-frame) 1422 (and (frame-live-p menu-frame)
1424 (frame-visible-p menu-frame)))) 1423 (frame-visible-p menu-frame))))
1425 1424
@@ -1428,8 +1427,7 @@ The menu frame is the frame for which we are updating the menu."
1428 1427
1429See the documentation of `menu-bar-menu-frame-live-and-visible-p' 1428See the documentation of `menu-bar-menu-frame-live-and-visible-p'
1430for the definition of the menu frame." 1429for the definition of the menu frame."
1431 (let ((menu-frame (if (display-multi-frame-p) menu-updating-frame 1430 (let ((menu-frame (or menu-updating-frame (selected-frame))))
1432 (selected-frame))))
1433 (not (window-minibuffer-p (frame-selected-window menu-frame))))) 1431 (not (window-minibuffer-p (frame-selected-window menu-frame)))))
1434 1432
1435(defun kill-this-buffer () ; for the menu bar 1433(defun kill-this-buffer () ; for the menu bar
diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog
index 33f016bb2f9..dce4b1def32 100644
--- a/lisp/mh-e/ChangeLog
+++ b/lisp/mh-e/ChangeLog
@@ -1,3 +1,68 @@
12005-12-19 Stephen Gildea
2
3 * mh-customize.el (mh-after-commands-processed-hook): New variable.
4 (mh-before-commands-processed-hook): mh-folder-updated-hook, renamed.
5
6 * mh-e.el (mh-process-commands): Rename mh-folder-updated-hook
7 to mh-before-commands-processed-hook, call new
8 mh-after-commands-processed-hook.
9 (mh-folders-changed): New variable (for use in
10 mh-after-commands-processed-hook).
11
122005-12-19 Bill Wohler <wohler@newt.com>
13
14 * mh-acros.el:
15 * mh-alias.el:
16 * mh-comp.el:
17 * mh-customize.el:
18 * mh-e.el:
19 * mh-funcs.el:
20 * mh-gnus.el:
21 * mh-identity.el:
22 * mh-inc.el:
23 * mh-index.el:
24 * mh-init.el:
25 * mh-junk.el:
26 * mh-mime.el:
27 * mh-pick.el:
28 * mh-print.el:
29 * mh-seq.el:
30 * mh-speed.el:
31 * mh-utils.el:
32 Follow commenting conventions. Don't use ;;; form so much, except
33 for headings. Precede headings with page feed. This was mostly
34 already done, so I made it a convention. Did not update copyright
35 on a couple of files since this was an insignificant change.
36
372005-12-18 Bill Wohler <wohler@newt.com>
38
39 * mh-customize.el (mh-toolbar): Rename to mh-tool-bar.
40 (mh-tool-bar-search-function): Sync docstrings with manual.
41 (mh-tool-bar-customize): Replace toolbar with tool bar in
42 docstring.
43 (mh-tool-bar-letter-help): Fix manual reference.
44 (mh-xemacs-use-toolbar-flag): Rename to
45 mh-xemacs-use-tool-bar-flag. Initialize to
46 mh-xemacs-has-tool-bar-flag. Sync docstrings with manual.
47 (mh-xemacs-toolbar-position): Rename to
48 mh-xemacs-tool-bar-position. Initialize to nil. Drop "no tool bar"
49 option (redundant) and change "Same As Default Tool Bar" setting
50 to nil. Sync docstrings with manual.
51 (mh-tool-bar-define): Replace toolbar with tool-bar or tool bar
52 depending on context.
53 (mh-toolbar-init): Rename to mh-tool-bar-init. Simplified
54 condition for calling set-specifier. Only look at the value of
55 mh-xemacs-use-tool-bar-flag.
56 (mh-tool-bar-folder-buttons, mh-tool-bar-letter-buttons): Sync
57 docstrings with manual.
58
59 * mh-comp.el (mh-letter-mode): Use mh-tool-bar-init instead of
60 mh-toolbar-init.
61
62 * mh-e.el (mh-folder-mode): Ditto.
63
64 * mh-utils.el (mh-show-mode): Ditto.
65
12005-12-15 Bill Wohler <wohler@newt.com> 662005-12-15 Bill Wohler <wohler@newt.com>
2 67
3 * mh-e.el (mh-delete-msg): Sync docstrings with manual. 68 * mh-e.el (mh-delete-msg): Sync docstrings with manual.
diff --git a/lisp/mh-e/mh-acros.el b/lisp/mh-e/mh-acros.el
index 8136c56ca90..5523f1cf46b 100644
--- a/lisp/mh-e/mh-acros.el
+++ b/lisp/mh-e/mh-acros.el
@@ -55,7 +55,7 @@ recognizes that and loads `cl' where appropriate."
55 `(require 'cl) 55 `(require 'cl)
56 `(eval-when-compile (require 'cl)))) 56 `(eval-when-compile (require 'cl))))
57 57
58;;; Macros to generate correct code for different emacs variants 58;; Macros to generate correct code for different emacs variants
59 59
60(defmacro mh-do-in-gnu-emacs (&rest body) 60(defmacro mh-do-in-gnu-emacs (&rest body)
61 "Execute BODY if in GNU Emacs." 61 "Execute BODY if in GNU Emacs."
@@ -144,11 +144,11 @@ Emacs 22."
144 144
145(provide 'mh-acros) 145(provide 'mh-acros)
146 146
147;;; Local Variables: 147;; Local Variables:
148;;; no-byte-compile: t 148;; no-byte-compile: t
149;;; indent-tabs-mode: nil 149;; indent-tabs-mode: nil
150;;; sentence-end-double-space: nil 150;; sentence-end-double-space: nil
151;;; End: 151;; End:
152 152
153;; arch-tag: b383b49a-494f-4ed0-a30a-cb6d5d2da4ff 153;; arch-tag: b383b49a-494f-4ed0-a30a-cb6d5d2da4ff
154;;; mh-acros.el ends here 154;;; mh-acros.el ends here
diff --git a/lisp/mh-e/mh-alias.el b/lisp/mh-e/mh-alias.el
index 5367d2cbc18..f82a0ea24dc 100644
--- a/lisp/mh-e/mh-alias.el
+++ b/lisp/mh-e/mh-alias.el
@@ -38,7 +38,10 @@
38 ; completing-read-multiple. 38 ; completing-read-multiple.
39(eval-when-compile (defvar mail-abbrev-syntax-table)) 39(eval-when-compile (defvar mail-abbrev-syntax-table))
40 40
41
42
41;;; Autoloads 43;;; Autoloads
44
42(eval-when (compile load eval) 45(eval-when (compile load eval)
43 (ignore-errors 46 (ignore-errors
44 (require 'mailabbrev) 47 (require 'mailabbrev)
@@ -71,6 +74,7 @@ listed in your `Aliasfile:' MH profile component are automatically included.
71You can update the alias list manually using \\[mh-alias-reload].") 74You can update the alias list manually using \\[mh-alias-reload].")
72 75
73 76
77
74;;; Alias Loading 78;;; Alias Loading
75 79
76(defun mh-alias-tstamp (arg) 80(defun mh-alias-tstamp (arg)
@@ -228,6 +232,7 @@ with no arguments, after the aliases have been loaded."
228 (mh-alias-reload))) 232 (mh-alias-reload)))
229 233
230 234
235
231;;; Alias Expansion 236;;; Alias Expansion
232 237
233(defun mh-alias-ali (alias &optional user) 238(defun mh-alias-ali (alias &optional user)
@@ -312,6 +317,7 @@ Blind aliases or users from /etc/passwd are not expanded."
312 (delete-region begin end) 317 (delete-region begin end)
313 (insert expansion))))) 318 (insert expansion)))))
314 319
320
315;;; Adding addresses to alias file. 321;;; Adding addresses to alias file.
316 322
317(defun mh-alias-suggest-alias (string &optional no-comma-swap) 323(defun mh-alias-suggest-alias (string &optional no-comma-swap)
@@ -653,10 +659,10 @@ name hint when filing messages."
653 659
654(provide 'mh-alias) 660(provide 'mh-alias)
655 661
656;;; Local Variables: 662;; Local Variables:
657;;; indent-tabs-mode: nil 663;; indent-tabs-mode: nil
658;;; sentence-end-double-space: nil 664;; sentence-end-double-space: nil
659;;; End: 665;; End:
660 666
661;;; arch-tag: 49879e46-5aa3-4569-bece-e5a58731d690 667;; arch-tag: 49879e46-5aa3-4569-bece-e5a58731d690
662;;; mh-alias.el ends here 668;;; mh-alias.el ends here
diff --git a/lisp/mh-e/mh-comp.el b/lisp/mh-e/mh-comp.el
index 5cac13d265b..47999fbbeff 100644
--- a/lisp/mh-e/mh-comp.el
+++ b/lisp/mh-e/mh-comp.el
@@ -52,7 +52,9 @@
52(defvar mh-mml-mode-default) 52(defvar mh-mml-mode-default)
53(defvar mh-identity-menu) 53(defvar mh-identity-menu)
54 54
55
55;;; Autoloads 56;;; Autoloads
57
56(autoload 'mail-mode-fill-paragraph "sendmail") 58(autoload 'mail-mode-fill-paragraph "sendmail")
57(autoload 'mm-handle-displayed-p "mm-decode") 59(autoload 'mm-handle-displayed-p "mm-decode")
58 60
@@ -80,6 +82,8 @@ For Emacs 19's, the region need not be active (and typically isn't
80when this function is called. Also, the hook `sc-pre-hook' is run 82when this function is called. Also, the hook `sc-pre-hook' is run
81before, and `sc-post-hook' is run after the guts of this function.") 83before, and `sc-post-hook' is run after the guts of this function.")
82 84
85
86
83;;; Site customization (see also mh-utils.el): 87;;; Site customization (see also mh-utils.el):
84 88
85(defvar mh-send-prog "send" 89(defvar mh-send-prog "send"
@@ -91,6 +95,8 @@ Some sites need to change this because of a name conflict.")
91This allows transaction log to be visible if -watch, -verbose or -snoop are 95This allows transaction log to be visible if -watch, -verbose or -snoop are
92used.") 96used.")
93 97
98
99
94;;; Scan Line Formats 100;;; Scan Line Formats
95 101
96(defvar mh-note-repl ?- 102(defvar mh-note-repl ?-
@@ -824,7 +830,7 @@ Returns t if found, nil if not."
824 830
825(put 'mh-letter-mode 'mode-class 'special) 831(put 'mh-letter-mode 'mode-class 'special)
826 832
827;;; Menu extracted from mh-menubar.el V1.1 (31 July 2001) 833;; Menu extracted from mh-menubar.el V1.1 (31 July 2001)
828(eval-when-compile (defvar mh-letter-menu nil)) 834(eval-when-compile (defvar mh-letter-menu nil))
829(easy-menu-define 835(easy-menu-define
830 mh-letter-menu mh-letter-mode-map "Menu for MH-E letter mode." 836 mh-letter-menu mh-letter-mode-map "Menu for MH-E letter mode."
@@ -874,8 +880,11 @@ Returns t if found, nil if not."
874 mh-mh-to-mime-undo (equal mh-compose-insertion 'mh)] 880 mh-mh-to-mime-undo (equal mh-compose-insertion 'mh)]
875 ["Kill This Draft" mh-fully-kill-draft t])) 881 ["Kill This Draft" mh-fully-kill-draft t]))
876 882
883
884
877;;; Help Messages 885;;; Help Messages
878;;; Group messages logically, more or less. 886
887;; Group messages logically, more or less.
879(defvar mh-letter-mode-help-messages 888(defvar mh-letter-mode-help-messages
880 '((nil 889 '((nil
881 "Send letter: \\[mh-send-letter]" 890 "Send letter: \\[mh-send-letter]"
@@ -994,7 +1003,7 @@ When a message is composed, the hooks `text-mode-hook' and
994 ;; Enable undo since a show-mode buffer might have been reused. 1003 ;; Enable undo since a show-mode buffer might have been reused.
995 (buffer-enable-undo) 1004 (buffer-enable-undo)
996 (set (make-local-variable 'tool-bar-map) mh-letter-tool-bar-map) 1005 (set (make-local-variable 'tool-bar-map) mh-letter-tool-bar-map)
997 (mh-funcall-if-exists mh-toolbar-init :letter) 1006 (mh-funcall-if-exists mh-tool-bar-init :letter)
998 (make-local-variable 'font-lock-defaults) 1007 (make-local-variable 'font-lock-defaults)
999 (cond 1008 (cond
1000 ((or (equal mh-highlight-citation-style 'font-lock) 1009 ((or (equal mh-highlight-citation-style 'font-lock)
@@ -2026,8 +2035,11 @@ Otherwise return the empty string."
2026 (goto-char (point-max)) 2035 (goto-char (point-max))
2027 (mh-letter-next-header-field))) 2036 (mh-letter-next-header-field)))
2028 2037
2029;;; Build the letter-mode keymap: 2038
2030;;; If this changes, modify mh-letter-mode-help-messages accordingly, above. 2039
2040;;; Build mh-letter-mode keymap
2041
2042;; If this changes, modify mh-letter-mode-help-messages accordingly, above.
2031(gnus-define-keys mh-letter-mode-map 2043(gnus-define-keys mh-letter-mode-map
2032 " " mh-letter-complete-or-space 2044 " " mh-letter-complete-or-space
2033 "," mh-letter-confirm-address 2045 "," mh-letter-confirm-address
@@ -2089,10 +2101,10 @@ Otherwise return the empty string."
2089 2101
2090(provide 'mh-comp) 2102(provide 'mh-comp)
2091 2103
2092;;; Local Variables: 2104;; Local Variables:
2093;;; indent-tabs-mode: nil 2105;; indent-tabs-mode: nil
2094;;; sentence-end-double-space: nil 2106;; sentence-end-double-space: nil
2095;;; End: 2107;; End:
2096 2108
2097;;; arch-tag: 62865511-e610-4923-b0b5-f45a8ab70a34 2109;; arch-tag: 62865511-e610-4923-b0b5-f45a8ab70a34
2098;;; mh-comp.el ends here 2110;;; mh-comp.el ends here
diff --git a/lisp/mh-e/mh-customize.el b/lisp/mh-e/mh-customize.el
index e07603f69ba..0e22e38a742 100644
--- a/lisp/mh-e/mh-customize.el
+++ b/lisp/mh-e/mh-customize.el
@@ -83,6 +83,11 @@
83 (require 'mh-init) 83 (require 'mh-init)
84 (require 'mh-identity)) 84 (require 'mh-identity))
85 85
86;; For compiler warnings...
87(eval-when-compile
88 (defvar mh-show-buffer)
89 (defvar mh-show-folder-buffer))
90
86(defun mh-customize (&optional delete-other-windows-flag) 91(defun mh-customize (&optional delete-other-windows-flag)
87 "Customize MH-E variables. 92 "Customize MH-E variables.
88If optional argument DELETE-OTHER-WINDOWS-FLAG is non-nil, other windows in 93If optional argument DELETE-OTHER-WINDOWS-FLAG is non-nil, other windows in
@@ -94,11 +99,6 @@ the frame are removed."
94 99
95 100
96 101
97;;; For compiler warnings...
98(eval-when-compile
99 (defvar mh-show-buffer)
100 (defvar mh-show-folder-buffer))
101
102;;; MH-E Customization Groups 102;;; MH-E Customization Groups
103 103
104(defgroup mh-e nil 104(defgroup mh-e nil
@@ -198,9 +198,9 @@ mailutils."
198 :link '(custom-manual "(mh-e)Threading") 198 :link '(custom-manual "(mh-e)Threading")
199 :group 'mh-e) 199 :group 'mh-e)
200 200
201(defgroup mh-toolbar nil 201(defgroup mh-tool-bar nil
202 "The toolbar" 202 "The tool bar"
203 :link '(custom-manual "(mh-e)Toolbar") 203 :link '(custom-manual "(mh-e)Tool Bar")
204 :prefix "mh-" 204 :prefix "mh-"
205 :group 'mh-e) 205 :group 'mh-e)
206 206
@@ -217,6 +217,8 @@ mailutils."
217 :prefix "mh-" 217 :prefix "mh-"
218 :group 'mh-e) 218 :group 'mh-e)
219 219
220
221
220;;; Faces 222;;; Faces
221 223
222(defgroup mh-folder-faces nil 224(defgroup mh-folder-faces nil
@@ -998,7 +1000,7 @@ default). If you need to scan just the message 200, then use the range
998 1000
999;;; Scan Line Formats (:group 'mh-scan-line-formats) 1001;;; Scan Line Formats (:group 'mh-scan-line-formats)
1000 1002
1001;;; Forward definition to avoid compiler and runtime error. 1003;; Forward definition to avoid compiler and runtime error.
1002(defvar mh-scan-format-file t) 1004(defvar mh-scan-format-file t)
1003 1005
1004(defun mh-adaptive-cmd-note-flag-check (symbol value) 1006(defun mh-adaptive-cmd-note-flag-check (symbol value)
@@ -1163,9 +1165,9 @@ See also `mh-reply'."
1163 1165
1164;;; Sequences (:group 'mh-sequences) 1166;;; Sequences (:group 'mh-sequences)
1165 1167
1166;;; If `mh-unpropagated-sequences' becomes a defcustom, add the following to 1168;; If `mh-unpropagated-sequences' becomes a defcustom, add the following to
1167;;; the docstring: "Additional sequences that should not to be preserved can be 1169;; the docstring: "Additional sequences that should not to be preserved can be
1168;;; specified by setting `mh-unpropagated-sequences' appropriately." XXX 1170;; specified by setting `mh-unpropagated-sequences' appropriately." XXX
1169 1171
1170(defcustom mh-refile-preserves-sequences-flag t 1172(defcustom mh-refile-preserves-sequences-flag t
1171 "*Non-nil means that sequences are preserved when messages are refiled. 1173 "*Non-nil means that sequences are preserved when messages are refiled.
@@ -1801,15 +1803,18 @@ only if the number of messages being threaded is less than `mh-large-folder'."
1801 1803
1802 1804
1803 1805
1804;;; The Toolbar (:group 'mh-toolbar) 1806;;; The Tool Bar (:group 'mh-tool-bar)
1805 1807
1806(defcustom mh-tool-bar-search-function 'mh-search-folder 1808(defcustom mh-tool-bar-search-function 'mh-search-folder
1807 "*Function called by the tool-bar search button. 1809 "*Function called by the tool bar search button.
1808See `mh-search-folder' and `mh-index-search' for details." 1810
1811Available functions include `mh-search-folder', the default, and
1812`mh-index-search'. You can also choose \"Other Function\" from the \"Value
1813Menu\" and enter a function of your own choosing."
1809 :type '(choice (const mh-search-folder) 1814 :type '(choice (const mh-search-folder)
1810 (const mh-index-search) 1815 (const mh-index-search)
1811 (function :tag "Other function")) 1816 (function :tag "Other Function"))
1812 :group 'mh-toolbar) 1817 :group 'mh-tool-bar)
1813 1818
1814;; Functions called from the tool bar 1819;; Functions called from the tool bar
1815(defun mh-tool-bar-search (&optional arg) 1820(defun mh-tool-bar-search (&optional arg)
@@ -1819,7 +1824,7 @@ Optional argument ARG is not used."
1819 (call-interactively mh-tool-bar-search-function)) 1824 (call-interactively mh-tool-bar-search-function))
1820 1825
1821(defun mh-tool-bar-customize () 1826(defun mh-tool-bar-customize ()
1822 "Call `mh-customize' from the toolbar." 1827 "Call `mh-customize' from the tool bar."
1823 (interactive) 1828 (interactive)
1824 (mh-customize t)) 1829 (mh-customize t))
1825 1830
@@ -1830,9 +1835,9 @@ Optional argument ARG is not used."
1830 (delete-other-windows)) 1835 (delete-other-windows))
1831 1836
1832(defun mh-tool-bar-letter-help () 1837(defun mh-tool-bar-letter-help ()
1833 "Visit \"(mh-e)Draft Editing\"." 1838 "Visit \"(mh-e)Editing Drafts\"."
1834 (interactive) 1839 (interactive)
1835 (info "(mh-e)Draft Editing") 1840 (info "(mh-e)Editing Drafts")
1836 (delete-other-windows)) 1841 (delete-other-windows))
1837 1842
1838(defmacro mh-tool-bar-reply-generator (function recipient folder-buffer-flag) 1843(defmacro mh-tool-bar-reply-generator (function recipient folder-buffer-flag)
@@ -1855,45 +1860,35 @@ When INCLUDE-FLAG is non-nil, include message body being replied to."
1855 1860
1856;; XEmacs has a couple of extra customizations... 1861;; XEmacs has a couple of extra customizations...
1857(mh-do-in-xemacs 1862(mh-do-in-xemacs
1858 (defcustom mh-xemacs-use-toolbar-flag (if (and (featurep 'toolbar) 1863 (defcustom mh-xemacs-use-tool-bar-flag mh-xemacs-has-tool-bar-flag
1859 (featurep 'xpm) 1864 "*If non-nil, use tool bar.
1860 (device-on-window-system-p)) 1865
1861 t 1866This option controls whether to show the MH-E icons at all. By default, this
1862 nil) 1867option is turned on if the window system supports tool bars. If your system
1863 "*If non-nil, use toolbar. 1868doesn't support tool bars, then you won't be able to turn on this option."
1864
1865This will default to t if you are in an environment that supports
1866toolbars and xpm."
1867 :type 'boolean 1869 :type 'boolean
1868 :group 'mh-toolbar) 1870 :group 'mh-tool-bar
1869 1871 :set (lambda (symbol value)
1870 (defcustom mh-xemacs-toolbar-position (if mh-xemacs-use-toolbar-flag 1872 (if (and (eq value t)
1871 'default 1873 (not mh-xemacs-has-tool-bar-flag))
1872 nil) 1874 (error "Tool bar not supported"))
1873 "*Where to put the toolbar. 1875 (set-default symbol value)))
1874 1876
1875Valid non-nil values are \"default\", \"top\", \"bottom\", \"left\", 1877 (defcustom mh-xemacs-tool-bar-position nil
1876\"right\". These match the four edges of the frame, with \"default\" 1878 "*Tool bar location.
1877meaning \"use the same position as the default-toolbar\". 1879
1878 1880This option controls the placement of the tool bar along the four edges of the
1879A nil value means do not use a toolbar. 1881frame. You can choose from one of \"Same As Default Tool Bar\", \"Top\",
1880 1882\"Bottom\", \"Left\", or \"Right\". If this variable is set to anything other
1881If this variable is set to anything other than \"default\" and the 1883than \"Same As Default Tool Bar\" and the default tool bar is in a different
1882default-toolbar has a different positional setting from the value of 1884location, then two tool bars will be displayed: the MH-E tool bar and the
1883this variable, then two toolbars will be displayed. The MH-E toolbar 1885default tool bar."
1884and the default-toolbar." 1886 :type '(radio (const :tag "Same As Default Tool Bar" :value nil)
1885 :type '(radio (const :tag "Same position as the \"default-toolbar\"" 1887 (const :tag "Top" :value top)
1886 :value default) 1888 (const :tag "Bottom" :value bottom)
1887 (const :tag "Along the top edge of the frame" 1889 (const :tag "Left" :value left)
1888 :value top) 1890 (const :tag "Right" :value right))
1889 (const :tag "Along the bottom edge of the frame" 1891 :group 'mh-tool-bar))
1890 :value bottom)
1891 (const :tag "Along the left edge of the frame"
1892 :value left)
1893 (const :tag "Along the right edge of the frame"
1894 :value right)
1895 (const :tag "Don't use a toolbar" nil))
1896 :group 'mh-toolbar))
1897 1892
1898(defun mh-buffer-exists-p (mode) 1893(defun mh-buffer-exists-p (mode)
1899 "Test whether a buffer with major mode MODE is present." 1894 "Test whether a buffer with major mode MODE is present."
@@ -1996,7 +1991,7 @@ where,
1996 (t 'folder-vectors))) 1991 (t 'folder-vectors)))
1997 (list (cond ((eq type :letter) 'mh-tool-bar-letter-buttons) 1992 (list (cond ((eq type :letter) 'mh-tool-bar-letter-buttons)
1998 (t 'mh-tool-bar-folder-buttons))) 1993 (t 'mh-tool-bar-folder-buttons)))
1999 (key (intern (concat "mh-" type1 "toolbar-" name-str))) 1994 (key (intern (concat "mh-" type1 "tool-bar-" name-str)))
2000 (setter (intern (concat type1 "-button-setter"))) 1995 (setter (intern (concat type1 "-button-setter")))
2001 (mbuttons (cond ((eq type :letter) 'letter-buttons) 1996 (mbuttons (cond ((eq type :letter) 'letter-buttons)
2002 ((eq type :show) 'show-buttons) 1997 ((eq type :show) 'show-buttons)
@@ -2063,89 +2058,87 @@ where,
2063 tool-bar-map)))) 2058 tool-bar-map))))
2064 ;; Custom setter functions 2059 ;; Custom setter functions
2065 (defun mh-tool-bar-folder-buttons-set (symbol value) 2060 (defun mh-tool-bar-folder-buttons-set (symbol value)
2066 "Construct toolbar for `mh-folder-mode' and `mh-show-mode'." 2061 "Construct tool bar for `mh-folder-mode' and `mh-show-mode'."
2067 (set-default symbol value) 2062 (set-default symbol value)
2068 (mh-tool-bar-folder-buttons-init)) 2063 (mh-tool-bar-folder-buttons-init))
2069 (defun mh-tool-bar-letter-buttons-set (symbol value) 2064 (defun mh-tool-bar-letter-buttons-set (symbol value)
2070 "Construct toolbar for `mh-letter-mode'." 2065 "Construct tool bar for `mh-letter-mode'."
2071 (set-default symbol value) 2066 (set-default symbol value)
2072 (mh-tool-bar-letter-buttons-init))) 2067 (mh-tool-bar-letter-buttons-init)))
2073 ;; XEmacs specific code 2068 ;; XEmacs specific code
2074 (mh-do-in-xemacs 2069 (mh-do-in-xemacs
2075 (defvar mh-toolbar-folder-vector-map 2070 (defvar mh-tool-bar-folder-vector-map
2076 ',(loop for button in folder-buttons 2071 ',(loop for button in folder-buttons
2077 for vector in folder-vectors 2072 for vector in folder-vectors
2078 collect (cons button vector))) 2073 collect (cons button vector)))
2079 (defvar mh-toolbar-show-vector-map 2074 (defvar mh-tool-bar-show-vector-map
2080 ',(loop for button in show-buttons 2075 ',(loop for button in show-buttons
2081 for vector in show-vectors 2076 for vector in show-vectors
2082 collect (cons button vector))) 2077 collect (cons button vector)))
2083 (defvar mh-toolbar-letter-vector-map 2078 (defvar mh-tool-bar-letter-vector-map
2084 ',(loop for button in letter-buttons 2079 ',(loop for button in letter-buttons
2085 for vector in letter-vectors 2080 for vector in letter-vectors
2086 collect (cons button vector))) 2081 collect (cons button vector)))
2087 (defvar mh-toolbar-folder-buttons nil) 2082 (defvar mh-tool-bar-folder-buttons nil)
2088 (defvar mh-toolbar-show-buttons nil) 2083 (defvar mh-tool-bar-show-buttons nil)
2089 (defvar mh-toolbar-letter-buttons nil) 2084 (defvar mh-tool-bar-letter-buttons nil)
2090 ;; Custom setter functions 2085 ;; Custom setter functions
2091 (defun mh-tool-bar-letter-buttons-set (symbol value) 2086 (defun mh-tool-bar-letter-buttons-set (symbol value)
2092 (set-default symbol value) 2087 (set-default symbol value)
2093 (when mh-xemacs-has-toolbar-flag 2088 (when mh-xemacs-has-tool-bar-flag
2094 (setq mh-toolbar-letter-buttons 2089 (setq mh-tool-bar-letter-buttons
2095 (loop for b in value 2090 (loop for b in value
2096 collect (cdr (assoc b mh-toolbar-letter-vector-map)))))) 2091 collect (cdr (assoc b mh-tool-bar-letter-vector-map))))))
2097 (defun mh-tool-bar-folder-buttons-set (symbol value) 2092 (defun mh-tool-bar-folder-buttons-set (symbol value)
2098 (set-default symbol value) 2093 (set-default symbol value)
2099 (when mh-xemacs-has-toolbar-flag 2094 (when mh-xemacs-has-tool-bar-flag
2100 (setq mh-toolbar-folder-buttons 2095 (setq mh-tool-bar-folder-buttons
2101 (loop for b in value 2096 (loop for b in value
2102 collect (cdr (assoc b mh-toolbar-folder-vector-map)))) 2097 collect (cdr (assoc b mh-tool-bar-folder-vector-map))))
2103 (setq mh-toolbar-show-buttons 2098 (setq mh-tool-bar-show-buttons
2104 (loop for b in value 2099 (loop for b in value
2105 collect (cdr (assoc b mh-toolbar-show-vector-map)))))) 2100 collect (cdr (assoc b mh-tool-bar-show-vector-map))))))
2106 ;; Initialize toolbar 2101 (defun mh-tool-bar-init (mode)
2107 (defun mh-toolbar-init (mode) 2102 "Install tool bar in MODE."
2108 "Install toolbar in MODE." 2103 (let ((tool-bar (cond ((eq mode :folder) mh-tool-bar-folder-buttons)
2109 (let ((toolbar (cond ((eq mode :folder) mh-toolbar-folder-buttons) 2104 ((eq mode :letter) mh-tool-bar-letter-buttons)
2110 ((eq mode :letter) mh-toolbar-letter-buttons) 2105 ((eq mode :show) mh-tool-bar-show-buttons)))
2111 ((eq mode :show) mh-toolbar-show-buttons)))
2112 (height 37) 2106 (height 37)
2113 (width 40) 2107 (width 40)
2114 (buffer (current-buffer))) 2108 (buffer (current-buffer)))
2115 (when (and mh-xemacs-toolbar-position mh-xemacs-use-toolbar-flag 2109 (when mh-xemacs-use-tool-bar-flag
2116 mh-xemacs-has-toolbar-flag)
2117 (cond 2110 (cond
2118 ((eq mh-xemacs-toolbar-position 'top) 2111 ((eq mh-xemacs-tool-bar-position 'top)
2119 (set-specifier top-toolbar toolbar buffer) 2112 (set-specifier top-toolbar tool-bar buffer)
2120 (set-specifier top-toolbar-visible-p t) 2113 (set-specifier top-toolbar-visible-p t)
2121 (set-specifier top-toolbar-height height)) 2114 (set-specifier top-toolbar-height height))
2122 ((eq mh-xemacs-toolbar-position 'bottom) 2115 ((eq mh-xemacs-tool-bar-position 'bottom)
2123 (set-specifier bottom-toolbar toolbar buffer) 2116 (set-specifier bottom-toolbar tool-bar buffer)
2124 (set-specifier bottom-toolbar-visible-p t) 2117 (set-specifier bottom-toolbar-visible-p t)
2125 (set-specifier bottom-toolbar-height height)) 2118 (set-specifier bottom-toolbar-height height))
2126 ((eq mh-xemacs-toolbar-position 'left) 2119 ((eq mh-xemacs-tool-bar-position 'left)
2127 (set-specifier left-toolbar toolbar buffer) 2120 (set-specifier left-toolbar tool-bar buffer)
2128 (set-specifier left-toolbar-visible-p t) 2121 (set-specifier left-toolbar-visible-p t)
2129 (set-specifier left-toolbar-width width)) 2122 (set-specifier left-toolbar-width width))
2130 ((eq mh-xemacs-toolbar-position 'right) 2123 ((eq mh-xemacs-tool-bar-position 'right)
2131 (set-specifier right-toolbar toolbar buffer) 2124 (set-specifier right-toolbar tool-bar buffer)
2132 (set-specifier right-toolbar-visible-p t) 2125 (set-specifier right-toolbar-visible-p t)
2133 (set-specifier right-toolbar-width width)) 2126 (set-specifier right-toolbar-width width))
2134 (t (set-specifier default-toolbar toolbar buffer))))))) 2127 (t (set-specifier default-toolbar tool-bar buffer)))))))
2135 ;; Declare customizable toolbars 2128 ;; Declare customizable tool bars
2136 (custom-declare-variable 2129 (custom-declare-variable
2137 'mh-tool-bar-folder-buttons 2130 'mh-tool-bar-folder-buttons
2138 '(list ,@(mapcar (lambda (x) `(quote ,x)) folder-defaults)) 2131 '(list ,@(mapcar (lambda (x) `(quote ,x)) folder-defaults))
2139 "Choose buttons to include in MH-E folder/show toolbar." 2132 "List of buttons to include in MH-Folder tool bar."
2140 :group 'mh-toolbar :set 'mh-tool-bar-folder-buttons-set 2133 :group 'mh-tool-bar :set 'mh-tool-bar-folder-buttons-set
2141 :type '(set ,@(loop for x in folder-buttons 2134 :type '(set ,@(loop for x in folder-buttons
2142 for y in folder-docs 2135 for y in folder-docs
2143 collect `(const :tag ,y ,x)))) 2136 collect `(const :tag ,y ,x))))
2144 (custom-declare-variable 2137 (custom-declare-variable
2145 'mh-tool-bar-letter-buttons 2138 'mh-tool-bar-letter-buttons
2146 '(list ,@(mapcar (lambda (x) `(quote ,x)) letter-defaults)) 2139 '(list ,@(mapcar (lambda (x) `(quote ,x)) letter-defaults))
2147 "Choose buttons to include in MH-E letter toolbar." 2140 "List of buttons to include in MH-Letter tool bar."
2148 :group 'mh-toolbar :set 'mh-tool-bar-letter-buttons-set 2141 :group 'mh-tool-bar :set 'mh-tool-bar-letter-buttons-set
2149 :type '(set ,@(loop for x in letter-buttons 2142 :type '(set ,@(loop for x in letter-buttons
2150 for y in letter-docs 2143 for y in letter-docs
2151 collect `(const :tag ,y ,x))))))) 2144 collect `(const :tag ,y ,x)))))))
@@ -2301,15 +2294,24 @@ on his mail usage."
2301 :group 'mh-hooks 2294 :group 'mh-hooks
2302 :group 'mh-folder) 2295 :group 'mh-folder)
2303 2296
2304(defcustom mh-folder-updated-hook nil 2297(defcustom mh-before-commands-processed-hook nil
2305 "Invoked when the folder actions (such as moves and deletes) are performed. 2298 "Invoked before the folder actions (such as moves and deletes) are performed.
2306Variables that are useful in this hook include `mh-delete-list' and 2299Variables that are useful in this hook include `mh-delete-list' and
2307`mh-refile-list' which can be used to see which changes are being made to 2300`mh-refile-list' which can be used to see which changes will be made to
2308current folder, `mh-current-folder'." 2301current folder, `mh-current-folder'."
2309 :type 'hook 2302 :type 'hook
2310 :group 'mh-hooks 2303 :group 'mh-hooks
2311 :group 'mh-folder) 2304 :group 'mh-folder)
2312 2305
2306(defcustom mh-after-commands-processed-hook nil
2307 "Invoked after the folder actions (such as moves and deletes) are performed.
2308Variables that are useful in this hook include `mh-folders-changed',
2309which lists which folders were affected by deletes and refiles. This
2310list will always include the current folder, which is also available
2311in `mh-current-folder'."
2312 :type 'hook
2313 :group 'mh-hooks)
2314
2313(defcustom mh-forward-hook nil 2315(defcustom mh-forward-hook nil
2314 "Invoked on the forwarded letter by \\<mh-folder-mode-map>\\[mh-forward]." 2316 "Invoked on the forwarded letter by \\<mh-folder-mode-map>\\[mh-forward]."
2315 :type 'hook 2317 :type 'hook
@@ -2403,6 +2405,8 @@ will be removed from the unseen sequence."
2403 2405
2404;;; Faces (:group 'mh-*-faces + group where faces described) 2406;;; Faces (:group 'mh-*-faces + group where faces described)
2405 2407
2408
2409
2406;;; Faces Used in Scan Listing (:group 'mh-folder-faces) 2410;;; Faces Used in Scan Listing (:group 'mh-folder-faces)
2407 2411
2408(defvar mh-folder-body-face 'mh-folder-body 2412(defvar mh-folder-body-face 'mh-folder-body
@@ -2767,10 +2771,10 @@ The background and foreground is used in the image."
2767 "Face used for the current folder when it has unread messages." 2771 "Face used for the current folder when it has unread messages."
2768 :group 'mh-speed-faces) 2772 :group 'mh-speed-faces)
2769 2773
2770;;; Local Variables: 2774;; Local Variables:
2771;;; indent-tabs-mode: nil 2775;; indent-tabs-mode: nil
2772;;; sentence-end-double-space: nil 2776;; sentence-end-double-space: nil
2773;;; End: 2777;; End:
2774 2778
2775;;; arch-tag: 778d2a20-82e2-4276-be9d-309386776a68 2779;; arch-tag: 778d2a20-82e2-4276-be9d-309386776a68
2776;;; mh-customize.el ends here 2780;;; mh-customize.el ends here
diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el
index b87fa4c2e3d..0c8c3346ecb 100644
--- a/lisp/mh-e/mh-e.el
+++ b/lisp/mh-e/mh-e.el
@@ -105,11 +105,12 @@
105The string is displayed after the folder's name. nil for no annotation.") 105The string is displayed after the folder's name. nil for no annotation.")
106 106
107 107
108
108;;; Scan Line Formats 109;;; Scan Line Formats
109 110
110;;; Parameterize MH-E to work with different scan formats. The defaults work 111;; Parameterize MH-E to work with different scan formats. The defaults work
111;;; with the standard MH scan listings, in which the first 4 characters on 112;; with the standard MH scan listings, in which the first 4 characters on
112;;; the line are the message number, followed by two places for notations. 113;; the line are the message number, followed by two places for notations.
113 114
114;; The following scan formats are passed to the scan program if the setting of 115;; The following scan formats are passed to the scan program if the setting of
115;; `mh-scan-format-file' is t. They are identical except the later one makes 116;; `mh-scan-format-file' is t. They are identical except the later one makes
@@ -459,6 +460,8 @@ is done highlighting.")
459 460
460(defvar mh-refile-list nil) ;List of folder names in mh-seq-list. 461(defvar mh-refile-list nil) ;List of folder names in mh-seq-list.
461 462
463(defvar mh-folders-changed nil) ;For mh-after-commands-processed-hook.
464
462(defvar mh-next-direction 'forward) ;Direction to move to next message. 465(defvar mh-next-direction 'forward) ;Direction to move to next message.
463 466
464(defvar mh-view-ops ()) ;Stack of ops that change the folder 467(defvar mh-view-ops ()) ;Stack of ops that change the folder
@@ -483,6 +486,8 @@ is done highlighting.")
483 486
484(defvar mh-colors-available-flag nil) ;Are colors available? 487(defvar mh-colors-available-flag nil) ;Are colors available?
485 488
489
490
486;;; Macros and generic functions: 491;;; Macros and generic functions:
487 492
488(defun mh-mapc (function list) 493(defun mh-mapc (function list)
@@ -1507,14 +1512,16 @@ Make it the current folder."
1507 (mh-index-read-data)) 1512 (mh-index-read-data))
1508 (mh-make-folder-mode-line)) 1513 (mh-make-folder-mode-line))
1509 1514
1510;;; Ensure new buffers won't get this mode if default-major-mode is nil. 1515;; Ensure new buffers won't get this mode if default-major-mode is nil.
1511(put 'mh-folder-mode 'mode-class 'special) 1516(put 'mh-folder-mode 'mode-class 'special)
1512 1517
1513 1518
1514 1519
1515;;; Menu extracted from mh-menubar.el V1.1 (31 July 2001) 1520;;; Build mh-folder-mode menu
1516;;; Menus for folder mode: folder, message, sequence (in that order) 1521
1517;;; folder-mode "Sequence" menu 1522;; Menu extracted from mh-menubar.el V1.1 (31 July 2001)
1523;; Menus for folder mode: folder, message, sequence (in that order)
1524;; folder-mode "Sequence" menu
1518(easy-menu-define 1525(easy-menu-define
1519 mh-folder-sequence-menu mh-folder-mode-map "Menu for MH-E folder-sequence." 1526 mh-folder-sequence-menu mh-folder-mode-map "Menu for MH-E folder-sequence."
1520 '("Sequence" 1527 '("Sequence"
@@ -1535,7 +1542,7 @@ Make it the current folder."
1535 "--" 1542 "--"
1536 ["Push State Out to MH" mh-update-sequences t])) 1543 ["Push State Out to MH" mh-update-sequences t]))
1537 1544
1538;;; folder-mode "Message" menu 1545;; folder-mode "Message" menu
1539(easy-menu-define 1546(easy-menu-define
1540 mh-folder-message-menu mh-folder-mode-map "Menu for MH-E folder-message." 1547 mh-folder-message-menu mh-folder-mode-map "Menu for MH-E folder-message."
1541 '("Message" 1548 '("Message"
@@ -1568,7 +1575,7 @@ Make it the current folder."
1568 ["Unpack Uuencoded Message..." mh-store-msg (mh-get-msg-num nil)] 1575 ["Unpack Uuencoded Message..." mh-store-msg (mh-get-msg-num nil)]
1569 ["Burst Digest Message" mh-burst-digest (mh-get-msg-num nil)])) 1576 ["Burst Digest Message" mh-burst-digest (mh-get-msg-num nil)]))
1570 1577
1571;;; folder-mode "Folder" menu 1578;; folder-mode "Folder" menu
1572(easy-menu-define 1579(easy-menu-define
1573 mh-folder-folder-menu mh-folder-mode-map "Menu for MH-E folder." 1580 mh-folder-folder-menu mh-folder-mode-map "Menu for MH-E folder."
1574 '("Folder" 1581 '("Folder"
@@ -1742,7 +1749,7 @@ messages in that region.
1742 (easy-menu-add mh-folder-message-menu) 1749 (easy-menu-add mh-folder-message-menu)
1743 (easy-menu-add mh-folder-folder-menu) 1750 (easy-menu-add mh-folder-folder-menu)
1744 (set (make-local-variable 'tool-bar-map) mh-folder-tool-bar-map) 1751 (set (make-local-variable 'tool-bar-map) mh-folder-tool-bar-map)
1745 (mh-funcall-if-exists mh-toolbar-init :folder) 1752 (mh-funcall-if-exists mh-tool-bar-init :folder)
1746 (if (and mh-xemacs-flag 1753 (if (and mh-xemacs-flag
1747 font-lock-auto-fontify) 1754 font-lock-auto-fontify)
1748 (turn-on-font-lock))) ; Force font-lock in XEmacs. 1755 (turn-on-font-lock))) ; Force font-lock in XEmacs.
@@ -1786,7 +1793,7 @@ DESKTOP-BUFFER-MISC holds a list of miscellaneous info used by the
1786 (mh-visit-folder desktop-buffer-name) 1793 (mh-visit-folder desktop-buffer-name)
1787 (current-buffer)) 1794 (current-buffer))
1788 1795
1789;;; desktop-buffer-mode-handlers appeared in Emacs 22. 1796;; desktop-buffer-mode-handlers appeared in Emacs 22.
1790(if (fboundp 'desktop-buffer-mode-handlers) 1797(if (fboundp 'desktop-buffer-mode-handlers)
1791 (add-to-list 'desktop-buffer-mode-handlers 1798 (add-to-list 'desktop-buffer-mode-handlers
1792 '(mh-folder-mode . mh-restore-desktop-buffer))) 1799 '(mh-folder-mode . mh-restore-desktop-buffer)))
@@ -2144,13 +2151,15 @@ Called by functions like `mh-sort-folder', so also invalidate show buffer."
2144 2151
2145(defun mh-process-commands (folder) 2152(defun mh-process-commands (folder)
2146 "Process outstanding commands for FOLDER. 2153 "Process outstanding commands for FOLDER.
2147The value of `mh-folder-updated-hook' is a list of functions to be called, 2154The value of `mh-before-commands-processed-hook' is a list of functions
2148with no arguments, before the commands are processed." 2155to be called, with no arguments, before the commands are processed.
2156After all cammands are processed, the functions in
2157`mh-after-commands-processed-hook' are called with no arguments."
2149 (message "Processing deletes and refiles for %s..." folder) 2158 (message "Processing deletes and refiles for %s..." folder)
2150 (set-buffer folder) 2159 (set-buffer folder)
2151 (with-mh-folder-updating (nil) 2160 (with-mh-folder-updating (nil)
2152 ;; Run the hook while the lists are still valid 2161 ;; Run the before hook -- the refile and delete lists are still valid
2153 (run-hooks 'mh-folder-updated-hook) 2162 (run-hooks 'mh-before-commands-processed-hook)
2154 2163
2155 ;; Update the unseen sequence if it exists 2164 ;; Update the unseen sequence if it exists
2156 (mh-update-unseen) 2165 (mh-update-unseen)
@@ -2217,17 +2226,23 @@ with no arguments, before the commands are processed."
2217 (when (mh-speed-flists-active-p) 2226 (when (mh-speed-flists-active-p)
2218 (apply #'mh-speed-flists t folders-changed)) 2227 (apply #'mh-speed-flists t folders-changed))
2219 (cond ((memq 'unthread mh-view-ops) (mh-thread-inc folder (point-max))) 2228 (cond ((memq 'unthread mh-view-ops) (mh-thread-inc folder (point-max)))
2220 (mh-index-data (mh-index-insert-folder-headers))))) 2229 (mh-index-data (mh-index-insert-folder-headers))))
2221 2230
2222 (and (buffer-file-name (get-buffer mh-show-buffer)) 2231 (and (buffer-file-name (get-buffer mh-show-buffer))
2223 (not (file-exists-p (buffer-file-name (get-buffer mh-show-buffer)))) 2232 (not (file-exists-p (buffer-file-name (get-buffer mh-show-buffer))))
2224 ;; If "inc" were to put a new msg in this file, 2233 ;; If "inc" were to put a new msg in this file,
2225 ;; we would not notice, so mark it invalid now. 2234 ;; we would not notice, so mark it invalid now.
2226 (mh-invalidate-show-buffer)) 2235 (mh-invalidate-show-buffer))
2236
2237 (setq mh-seq-list (mh-read-folder-sequences mh-current-folder nil))
2238 (mh-remove-all-notation)
2239 (mh-notate-user-sequences)
2240
2241 ;; Run the after hook -- now folders-changed is valid,
2242 ;; but not the lists of specific messages.
2243 (let ((mh-folders-changed folders-changed))
2244 (run-hooks 'mh-after-commands-processed-hook)))
2227 2245
2228 (setq mh-seq-list (mh-read-folder-sequences mh-current-folder nil))
2229 (mh-remove-all-notation)
2230 (mh-notate-user-sequences)
2231 (message "Processing deletes and refiles for %s...done" folder))) 2246 (message "Processing deletes and refiles for %s...done" folder)))
2232 2247
2233(defun mh-update-unseen () 2248(defun mh-update-unseen ()
@@ -2478,7 +2493,7 @@ If INCLUDE-INTERNAL-FLAG non-nil, include MH-E internal sequences in list."
2478 2493
2479 2494
2480 2495
2481;;; Build the folder-mode keymap: 2496;;; Build mh-folder-mode keymap:
2482 2497
2483(suppress-keymap mh-folder-mode-map) 2498(suppress-keymap mh-folder-mode-map)
2484 2499
@@ -2631,15 +2646,15 @@ If INCLUDE-INTERNAL-FLAG non-nil, include MH-E internal sequences in list."
2631 2646
2632;;; Help Messages 2647;;; Help Messages
2633 2648
2634;;; If you add a new prefix, add appropriate text to the nil key. 2649;; If you add a new prefix, add appropriate text to the nil key.
2635;;; 2650;;
2636;;; In general, messages are grouped logically. Taking the main commands for 2651;; In general, messages are grouped logically. Taking the main commands for
2637;;; example, the first line is "ways to view messages," the second line is 2652;; example, the first line is "ways to view messages," the second line is
2638;;; "things you can do with messages", and the third is "composing" messages. 2653;; "things you can do with messages", and the third is "composing" messages.
2639;;; 2654;;
2640;;; When adding a new prefix, ensure that the help message contains "what" the 2655;; When adding a new prefix, ensure that the help message contains "what" the
2641;;; prefix is for. For example, if the word "folder" were not present in the 2656;; prefix is for. For example, if the word "folder" were not present in the
2642;;; `F' entry, it would not be clear what these commands operated upon. 2657;; `F' entry, it would not be clear what these commands operated upon.
2643(defvar mh-help-messages 2658(defvar mh-help-messages
2644 '((nil "[i]nc, [.]show, [,]show all, [n]ext, [p]revious,\n" 2659 '((nil "[i]nc, [.]show, [,]show all, [n]ext, [p]revious,\n"
2645 "[d]elete, [o]refile, e[x]ecute,\n" 2660 "[d]elete, [o]refile, e[x]ecute,\n"
@@ -2682,10 +2697,10 @@ well.")
2682 2697
2683(provide 'mh-e) 2698(provide 'mh-e)
2684 2699
2685;;; Local Variables: 2700;; Local Variables:
2686;;; indent-tabs-mode: nil 2701;; indent-tabs-mode: nil
2687;;; sentence-end-double-space: nil 2702;; sentence-end-double-space: nil
2688;;; End: 2703;; End:
2689 2704
2690;;; arch-tag: cce884de-bd37-4104-9963-e4439d5ed22b 2705;; arch-tag: cce884de-bd37-4104-9963-e4439d5ed22b
2691;;; mh-e.el ends here 2706;;; mh-e.el ends here
diff --git a/lisp/mh-e/mh-funcs.el b/lisp/mh-e/mh-funcs.el
index ca2f7333eb8..813d8a07b6c 100644
--- a/lisp/mh-e/mh-funcs.el
+++ b/lisp/mh-e/mh-funcs.el
@@ -39,6 +39,8 @@
39(mh-require-cl) 39(mh-require-cl)
40(require 'mh-e) 40(require 'mh-e)
41 41
42
43
42;;; Scan Line Formats 44;;; Scan Line Formats
43 45
44(defvar mh-note-copied "C" 46(defvar mh-note-copied "C"
@@ -47,6 +49,8 @@
47(defvar mh-note-printed "P" 49(defvar mh-note-printed "P"
48 "Messages that have been printed are marked by this character.") 50 "Messages that have been printed are marked by this character.")
49 51
52
53
50;;; Functions 54;;; Functions
51 55
52;;;###mh-autoload 56;;;###mh-autoload
@@ -411,10 +415,10 @@ Default directory is the last directory used, or initially the value of
411 415
412(provide 'mh-funcs) 416(provide 'mh-funcs)
413 417
414;;; Local Variables: 418;; Local Variables:
415;;; indent-tabs-mode: nil 419;; indent-tabs-mode: nil
416;;; sentence-end-double-space: nil 420;; sentence-end-double-space: nil
417;;; End: 421;; End:
418 422
419;;; arch-tag: 1936c4f1-4843-438e-bc4b-a63bb75a7762 423;; arch-tag: 1936c4f1-4843-438e-bc4b-a63bb75a7762
420;;; mh-funcs.el ends here 424;;; mh-funcs.el ends here
diff --git a/lisp/mh-e/mh-gnus.el b/lisp/mh-e/mh-gnus.el
index 23209275d12..71220e2dd3d 100644
--- a/lisp/mh-e/mh-gnus.el
+++ b/lisp/mh-e/mh-gnus.el
@@ -30,8 +30,8 @@
30 30
31;;; Code: 31;;; Code:
32 32
33;;; Load libraries in a non-fatal way in order to see if certain functions are 33;; Load libraries in a non-fatal way in order to see if certain functions are
34;;; pre-defined. 34;; pre-defined.
35(load "mailabbrev" t t) 35(load "mailabbrev" t t)
36(load "mailcap" t t) 36(load "mailcap" t t)
37(load "mm-decode" t t) 37(load "mm-decode" t t)
@@ -147,10 +147,10 @@ BODY."
147 disposition 147 disposition
148 default))) 148 default)))
149 149
150;;; This is mm-save-part from Gnus 5.10 since that function in emacs21.2 is 150;; This is mm-save-part from Gnus 5.10 since that function in emacs21.2 is
151;;; buggy (the args to read-file-name are incorrect). When all supported 151;; buggy (the args to read-file-name are incorrect). When all supported
152;;; versions of Emacs come with at least Gnus 5.10, we can delete this 152;; versions of Emacs come with at least Gnus 5.10, we can delete this
153;;; function and rename calls to mh-mm-save-part to mm-save-part. 153;; function and rename calls to mh-mm-save-part to mm-save-part.
154(defun mh-mm-save-part (handle) 154(defun mh-mm-save-part (handle)
155 "Write HANDLE to a file." 155 "Write HANDLE to a file."
156 (let ((name (mail-content-type-get (mm-handle-type handle) 'name)) 156 (let ((name (mail-content-type-get (mm-handle-type handle) 'name))
@@ -181,12 +181,12 @@ BODY."
181 181
182(provide 'mh-gnus) 182(provide 'mh-gnus)
183 183
184;;; Local Variables: 184;; Local Variables:
185;;; no-byte-compile: t 185;; no-byte-compile: t
186;;; no-update-autoloads: t 186;; no-update-autoloads: t
187;;; indent-tabs-mode: nil 187;; indent-tabs-mode: nil
188;;; sentence-end-double-space: nil 188;; sentence-end-double-space: nil
189;;; End: 189;; End:
190 190
191;; arch-tag: 1e3638af-cad3-4c69-8427-bc8eb6e5e4fa 191;; arch-tag: 1e3638af-cad3-4c69-8427-bc8eb6e5e4fa
192;;; mh-gnus.el ends here 192;;; mh-gnus.el ends here
diff --git a/lisp/mh-e/mh-identity.el b/lisp/mh-e/mh-identity.el
index 9d81a2acbe2..1e621af7df9 100644
--- a/lisp/mh-e/mh-identity.el
+++ b/lisp/mh-e/mh-identity.el
@@ -282,10 +282,10 @@ If the field wasn't present, it is added to the bottom of the header."
282 282
283(provide 'mh-identity) 283(provide 'mh-identity)
284 284
285;;; Local Variables: 285;; Local Variables:
286;;; indent-tabs-mode: nil 286;; indent-tabs-mode: nil
287;;; sentence-end-double-space: nil 287;; sentence-end-double-space: nil
288;;; End: 288;; End:
289 289
290;;; arch-tag: 07d66ef6-8726-4ac6-9ecf-e566cd5bfb45 290;; arch-tag: 07d66ef6-8726-4ac6-9ecf-e566cd5bfb45
291;;; mh-identity.el ends here 291;;; mh-identity.el ends here
diff --git a/lisp/mh-e/mh-inc.el b/lisp/mh-e/mh-inc.el
index 9ccec70e969..d5becd26ce4 100644
--- a/lisp/mh-e/mh-inc.el
+++ b/lisp/mh-e/mh-inc.el
@@ -98,10 +98,10 @@ This is called after 'customize is used to alter `mh-inc-spool-list'."
98 98
99(provide 'mh-inc) 99(provide 'mh-inc)
100 100
101;;; Local Variables: 101;; Local Variables:
102;;; indent-tabs-mode: nil 102;; indent-tabs-mode: nil
103;;; sentence-end-double-space: nil 103;; sentence-end-double-space: nil
104;;; End: 104;; End:
105 105
106;;; arch-tag: 3713cf2a-6082-4cb4-8ce2-99d9acaba835 106;; arch-tag: 3713cf2a-6082-4cb4-8ce2-99d9acaba835
107;;; mh-inc.el ends here 107;;; mh-inc.el ends here
diff --git a/lisp/mh-e/mh-index.el b/lisp/mh-e/mh-index.el
index 6b429773945..e261b47b753 100644
--- a/lisp/mh-e/mh-index.el
+++ b/lisp/mh-e/mh-index.el
@@ -26,18 +26,18 @@
26 26
27;;; Commentary: 27;;; Commentary:
28 28
29;;; (1) The following search engines are supported: 29;; (1) The following search engines are supported:
30;;; swish++ 30;; swish++
31;;; swish-e 31;; swish-e
32;;; mairix 32;; mairix
33;;; namazu 33;; namazu
34;;; pick 34;; pick
35;;; grep 35;; grep
36;;; 36;;
37;;; (2) To use this package, you first have to build an index. Please read 37;; (2) To use this package, you first have to build an index. Please read
38;;; the documentation for `mh-index-search' to get started. That 38;; the documentation for `mh-index-search' to get started. That
39;;; documentation will direct you to the specific instructions for your 39;; documentation will direct you to the specific instructions for your
40;;; particular indexer. 40;; particular indexer.
41 41
42;;; Change Log: 42;;; Change Log:
43 43
@@ -91,17 +91,17 @@
91 91
92 92
93 93
94;;; A few different checksum programs are supported. The supported programs 94;; A few different checksum programs are supported. The supported programs
95;;; are: 95;; are:
96;;; 1. md5sum 96;; 1. md5sum
97;;; 2. md5 97;; 2. md5
98;;; 3. openssl 98;; 3. openssl
99;;; 99;;
100;;; To add support for your favorite checksum program add a clause to the cond 100;; To add support for your favorite checksum program add a clause to the cond
101;;; statement in mh-checksum-choose. This should set the variable 101;; statement in mh-checksum-choose. This should set the variable
102;;; mh-checksum-cmd to the command line needed to run the checsum program and 102;; mh-checksum-cmd to the command line needed to run the checsum program and
103;;; should set mh-checksum-parser to a function which returns a cons cell 103;; should set mh-checksum-parser to a function which returns a cons cell
104;;; containing the message number and checksum string. 104;; containing the message number and checksum string.
105 105
106(defvar mh-checksum-cmd) 106(defvar mh-checksum-cmd)
107(defvar mh-checksum-parser) 107(defvar mh-checksum-parser)
@@ -152,8 +152,7 @@
152 152
153 153
154 154
155;;; Make sure that we don't produce too long a command line. 155;; Make sure that we don't produce too long a command line.
156
157(defvar mh-index-max-cmdline-args 500 156(defvar mh-index-max-cmdline-args 500
158 "Maximum number of command line args.") 157 "Maximum number of command line args.")
159 158
@@ -1653,10 +1652,10 @@ system."
1653 1652
1654(provide 'mh-index) 1653(provide 'mh-index)
1655 1654
1656;;; Local Variables: 1655;; Local Variables:
1657;;; indent-tabs-mode: nil 1656;; indent-tabs-mode: nil
1658;;; sentence-end-double-space: nil 1657;; sentence-end-double-space: nil
1659;;; End: 1658;; End:
1660 1659
1661;;; arch-tag: 607762ad-0dff-4fe1-a27e-6c0dde0dcc47 1660;; arch-tag: 607762ad-0dff-4fe1-a27e-6c0dde0dcc47
1662;;; mh-index ends here 1661;;; mh-index ends here
diff --git a/lisp/mh-e/mh-init.el b/lisp/mh-e/mh-init.el
index 79f779810e2..1bafe960eff 100644
--- a/lisp/mh-e/mh-init.el
+++ b/lisp/mh-e/mh-init.el
@@ -1,4 +1,4 @@
1;;; mh-init.el --- MH-E initialization. 1;;; mh-init.el --- MH-E initialization
2 2
3;; Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
4 4
@@ -43,14 +43,14 @@
43(mh-require-cl) 43(mh-require-cl)
44(require 'mh-utils) 44(require 'mh-utils)
45 45
46;;; Avoid compiler warnings. 46;; Avoid compiler warnings.
47(eval-when-compile (defvar image-load-path)) 47(eval-when-compile (defvar image-load-path))
48 48
49;;; Set for local environment: 49;; Set for local environment:
50;;; mh-progs and mh-lib used to be set in paths.el, which tried to 50;; mh-progs and mh-lib used to be set in paths.el, which tried to
51;;; figure out at build time which of several possible directories MH 51;; figure out at build time which of several possible directories MH
52;;; was installed into. But if you installed MH after building Emacs, 52;; was installed into. But if you installed MH after building Emacs,
53;;; this would almost certainly be wrong, so now we do it at run time. 53;; this would almost certainly be wrong, so now we do it at run time.
54 54
55(defvar mh-progs nil 55(defvar mh-progs nil
56 "Directory containing MH commands, such as inc, repl, and rmm.") 56 "Directory containing MH commands, such as inc, repl, and rmm.")
@@ -350,10 +350,10 @@ single \"class\" requirement with a \"color\" item, renames the requirement to
350 350
351(provide 'mh-init) 351(provide 'mh-init)
352 352
353;;; Local Variables: 353;; Local Variables:
354;;; indent-tabs-mode: nil 354;; indent-tabs-mode: nil
355;;; sentence-end-double-space: nil 355;; sentence-end-double-space: nil
356;;; End: 356;; End:
357 357
358;; arch-tag: e8372aeb-d803-42b1-9c95-3c93ad22f63c 358;; arch-tag: e8372aeb-d803-42b1-9c95-3c93ad22f63c
359;;; mh-init.el ends here 359;;; mh-init.el ends here
diff --git a/lisp/mh-e/mh-junk.el b/lisp/mh-e/mh-junk.el
index 5cbc7b77b47..29caef6cae7 100644
--- a/lisp/mh-e/mh-junk.el
+++ b/lisp/mh-e/mh-junk.el
@@ -420,10 +420,10 @@ See `mh-spamprobe-blacklist' for more information."
420 420
421(provide 'mh-junk) 421(provide 'mh-junk)
422 422
423;;; Local Variables: 423;; Local Variables:
424;;; indent-tabs-mode: nil 424;; indent-tabs-mode: nil
425;;; sentence-end-double-space: nil 425;; sentence-end-double-space: nil
426;;; End: 426;; End:
427 427
428;;; arch-tag: 603335f1-77ff-4306-8828-5d3dad51abe1 428;; arch-tag: 603335f1-77ff-4306-8828-5d3dad51abe1
429;;; mh-junk.el ends here 429;;; mh-junk.el ends here
diff --git a/lisp/mh-e/mh-mime.el b/lisp/mh-e/mh-mime.el
index 3d55c5cded1..bb2fc2b8f50 100644
--- a/lisp/mh-e/mh-mime.el
+++ b/lisp/mh-e/mh-mime.el
@@ -219,9 +219,9 @@ Obsolete; use `mailcap-mime-types'.
219 219
220See also \\[mh-mh-to-mime].") 220See also \\[mh-mh-to-mime].")
221 221
222;;; Delete mh-minibuffer-read-type and mh-mime-content-types and use 222;; Delete mh-minibuffer-read-type and mh-mime-content-types and use
223;;; mml-minibuffer-read-type when Emacs20 is no longer supported unless we 223;; mml-minibuffer-read-type when Emacs20 is no longer supported unless we
224;;; think (mh-file-mime-type) is better than (mm-default-file-encoding). 224;; think (mh-file-mime-type) is better than (mm-default-file-encoding).
225 225
226(defun mh-minibuffer-read-type (filename &optional default) 226(defun mh-minibuffer-read-type (filename &optional default)
227 "Return the content type associated with the given FILENAME. 227 "Return the content type associated with the given FILENAME.
@@ -1347,9 +1347,9 @@ Parameter EL is unused."
1347 (mm-set-handle-multipart-parameter 1347 (mm-set-handle-multipart-parameter
1348 handle 'mh-region (cons (point-min-marker) (point-max-marker))))) 1348 handle 'mh-region (cons (point-min-marker) (point-max-marker)))))
1349 1349
1350;;; I rewrote the security part because Gnus doesn't seem to ever minimize 1350;; I rewrote the security part because Gnus doesn't seem to ever minimize
1351;;; the button. That is once the mime-security button is pressed there seems 1351;; the button. That is once the mime-security button is pressed there seems
1352;;; to be no way of getting rid of the inserted text. 1352;; to be no way of getting rid of the inserted text.
1353(defun mh-mime-security-show-details (handle) 1353(defun mh-mime-security-show-details (handle)
1354 "Toggle display of detailed security info for HANDLE." 1354 "Toggle display of detailed security info for HANDLE."
1355 (let ((details (mm-handle-multipart-ctl-parameter handle 'gnus-details))) 1355 (let ((details (mm-handle-multipart-ctl-parameter handle 'gnus-details)))
@@ -1509,10 +1509,10 @@ message multiple times."
1509 1509
1510(provide 'mh-mime) 1510(provide 'mh-mime)
1511 1511
1512;;; Local Variables: 1512;; Local Variables:
1513;;; indent-tabs-mode: nil 1513;; indent-tabs-mode: nil
1514;;; sentence-end-double-space: nil 1514;; sentence-end-double-space: nil
1515;;; End: 1515;; End:
1516 1516
1517;;; arch-tag: 0dd36518-1b64-4a84-8f4e-59f422d3f002 1517;; arch-tag: 0dd36518-1b64-4a84-8f4e-59f422d3f002
1518;;; mh-mime.el ends here 1518;;; mh-mime.el ends here
diff --git a/lisp/mh-e/mh-pick.el b/lisp/mh-e/mh-pick.el
index eb825fe462f..a20172ba6f3 100644
--- a/lisp/mh-e/mh-pick.el
+++ b/lisp/mh-e/mh-pick.el
@@ -158,15 +158,22 @@ is used when the search folder is dismissed."
158 (add-text-properties (point) (1- (line-end-position)) '(read-only t)) 158 (add-text-properties (point) (1- (line-end-position)) '(read-only t))
159 (goto-char (point-max))) 159 (goto-char (point-max)))
160 160
161;;; Menu extracted from mh-menubar.el V1.1 (31 July 2001) 161
162
163;;; Build mh-pick-mode menu
164
165;; Menu extracted from mh-menubar.el V1.1 (31 July 2001)
162(easy-menu-define 166(easy-menu-define
163 mh-pick-menu mh-pick-mode-map "Menu for MH-E pick-mode" 167 mh-pick-menu mh-pick-mode-map "Menu for MH-E pick-mode"
164 '("Pick" 168 '("Pick"
165 ["Execute the Search" mh-pick-do-search t])) 169 ["Execute the Search" mh-pick-do-search t]))
166 170
167 171
172
173
168;;; Help Messages 174;;; Help Messages
169;;; Group messages logically, more or less. 175
176;; Group messages logically, more or less.
170(defvar mh-pick-mode-help-messages 177(defvar mh-pick-mode-help-messages
171 '((nil 178 '((nil
172 "Search messages using pick: \\[mh-pick-do-search]\n" 179 "Search messages using pick: \\[mh-pick-do-search]\n"
@@ -351,7 +358,8 @@ COMPONENT is the component to search."
351 358
352 359
353;;; Build the pick-mode keymap: 360;;; Build the pick-mode keymap:
354;;; If this changes, modify mh-pick-mode-help-messages accordingly, above. 361
362;; If this changes, modify mh-pick-mode-help-messages accordingly, above.
355(gnus-define-keys mh-pick-mode-map 363(gnus-define-keys mh-pick-mode-map
356 "\C-c?" mh-help 364 "\C-c?" mh-help
357 "\C-c\C-i" mh-index-do-search 365 "\C-c\C-i" mh-index-do-search
@@ -374,10 +382,10 @@ COMPONENT is the component to search."
374 382
375(provide 'mh-pick) 383(provide 'mh-pick)
376 384
377;;; Local Variables: 385;; Local Variables:
378;;; indent-tabs-mode: nil 386;; indent-tabs-mode: nil
379;;; sentence-end-double-space: nil 387;; sentence-end-double-space: nil
380;;; End: 388;; End:
381 389
382;;; arch-tag: aef2b271-7768-42bd-a782-9a14ba9f83f7 390;; arch-tag: aef2b271-7768-42bd-a782-9a14ba9f83f7
383;;; mh-pick.el ends here 391;;; mh-pick.el ends here
diff --git a/lisp/mh-e/mh-print.el b/lisp/mh-e/mh-print.el
index cc35926aecc..acca58c494f 100644
--- a/lisp/mh-e/mh-print.el
+++ b/lisp/mh-e/mh-print.el
@@ -183,7 +183,7 @@ best. You change this setting permanently by customizing the option
183 (setq mh-ps-print-color-option nil) 183 (setq mh-ps-print-color-option nil)
184 (message "Colors will not be printed")))) 184 (message "Colors will not be printed"))))
185 185
186;;; Old non-PS based printing 186;; Old non-PS based printing
187;;;###mh-autoload 187;;;###mh-autoload
188(defun mh-print-msg (range) 188(defun mh-print-msg (range)
189 "Print RANGE the old fashioned way\\<mh-folder-mode-map>. 189 "Print RANGE the old fashioned way\\<mh-folder-mode-map>.
@@ -242,10 +242,10 @@ Consider using \\[mh-ps-print-msg] instead."
242 242
243(provide 'mh-print) 243(provide 'mh-print)
244 244
245;;; Local Variables: 245;; Local Variables:
246;;; indent-tabs-mode: nil 246;; indent-tabs-mode: nil
247;;; sentence-end-double-space: nil 247;; sentence-end-double-space: nil
248;;; End: 248;; End:
249 249
250;; arch-tag: 8d84d50b-2a49-4d0d-b51e-ba9c9b6fc679 250;; arch-tag: 8d84d50b-2a49-4d0d-b51e-ba9c9b6fc679
251;;; mh-print.el ends here 251;;; mh-print.el ends here
diff --git a/lisp/mh-e/mh-seq.el b/lisp/mh-e/mh-seq.el
index 795970d3739..4942df58f71 100644
--- a/lisp/mh-e/mh-seq.el
+++ b/lisp/mh-e/mh-seq.el
@@ -78,7 +78,10 @@
78;; Shush the byte-compiler 78;; Shush the byte-compiler
79(defvar tool-bar-mode) 79(defvar tool-bar-mode)
80 80
81
82
81;;; Data structures (used in message threading)... 83;;; Data structures (used in message threading)...
84
82(mh-defstruct (mh-thread-message (:conc-name mh-message-) 85(mh-defstruct (mh-thread-message (:conc-name mh-message-)
83 (:constructor mh-thread-make-message)) 86 (:constructor mh-thread-make-message))
84 (id nil) 87 (id nil)
@@ -91,15 +94,20 @@
91 message parent children 94 message parent children
92 (real-child-p t)) 95 (real-child-p t))
93 96
97
94 98
95;;; Internal variables: 99;;; Internal variables:
100
96(defvar mh-last-seq-used nil 101(defvar mh-last-seq-used nil
97 "Name of seq to which a msg was last added.") 102 "Name of seq to which a msg was last added.")
98 103
99(defvar mh-non-seq-mode-line-annotation nil 104(defvar mh-non-seq-mode-line-annotation nil
100 "Saved value of `mh-mode-line-annotation' when narrowed to a seq.") 105 "Saved value of `mh-mode-line-annotation' when narrowed to a seq.")
101 106
107
108
102;;; Maps and hashes... 109;;; Maps and hashes...
110
103(defvar mh-thread-id-hash nil 111(defvar mh-thread-id-hash nil
104 "Hashtable used to canonicalize message identifiers.") 112 "Hashtable used to canonicalize message identifiers.")
105(defvar mh-thread-subject-hash nil 113(defvar mh-thread-subject-hash nil
@@ -377,9 +385,10 @@ refiled are present in `mh-refile-list'."
377 385
378 386
379 387
380;;; Commands to manipulate sequences. Sequences are stored in an alist 388;;; Commands to manipulate sequences.
381;;; of the form: 389
382;;; ((seq-name msgs ...) (seq-name msgs ...) ...) 390;; Sequences are stored in an alist of the form:
391;; ((seq-name msgs ...) (seq-name msgs ...) ...)
383 392
384(defvar mh-sequence-history ()) 393(defvar mh-sequence-history ())
385 394
@@ -412,7 +421,10 @@ defaults to the first sequence containing the current message."
412 (error "No messages in sequence `%s'" seq)) 421 (error "No messages in sequence `%s'" seq))
413 seq)) 422 seq))
414 423
424
425
415;;; Functions to read ranges with completion... 426;;; Functions to read ranges with completion...
427
416(defvar mh-range-seq-names) 428(defvar mh-range-seq-names)
417(defvar mh-range-history ()) 429(defvar mh-range-history ())
418(defvar mh-range-completion-map (copy-keymap minibuffer-local-completion-map)) 430(defvar mh-range-completion-map (copy-keymap minibuffer-local-completion-map))
@@ -702,11 +714,10 @@ a uniform interface to MH-E functions."
702 714
703 715
704 716
705;;; Commands to handle new 'subject sequence. 717;;; Commands to handle new 'subject sequence ("Poor man's threading" by psg)
706;;; Or "Poor man's threading" by psg.
707 718
708;;; XXX: The function mh-subject-to-sequence-unthreaded uses the magic number 719;; XXX: The function mh-subject-to-sequence-unthreaded uses the magic number
709;;; 41 for the max size of the subject part. Avoiding this would be desirable. 720;; 41 for the max size of the subject part. Avoiding this would be desirable.
710(defun mh-subject-to-sequence (all) 721(defun mh-subject-to-sequence (all)
711 "Put all following messages with same subject in sequence 'subject. 722 "Put all following messages with same subject in sequence 'subject.
712If arg ALL is t, move to beginning of folder buffer to collect all messages. 723If arg ALL is t, move to beginning of folder buffer to collect all messages.
@@ -970,6 +981,8 @@ command behaves like \\[mh-thread-delete]."
970 (mh-thread-delete) 981 (mh-thread-delete)
971 (mh-delete-subject))) 982 (mh-delete-subject)))
972 983
984
985
973;;; Message threading: 986;;; Message threading:
974 987
975(defmacro mh-thread-initialize-hash (var test) 988(defmacro mh-thread-initialize-hash (var test)
@@ -1745,10 +1758,10 @@ messages. When you want to widen the view to all your messages again, use
1745 1758
1746(provide 'mh-seq) 1759(provide 'mh-seq)
1747 1760
1748;;; Local Variables: 1761;; Local Variables:
1749;;; indent-tabs-mode: nil 1762;; indent-tabs-mode: nil
1750;;; sentence-end-double-space: nil 1763;; sentence-end-double-space: nil
1751;;; End: 1764;; End:
1752 1765
1753;;; arch-tag: 8e952711-01a2-485b-bf21-c9e3ad4de942 1766;; arch-tag: 8e952711-01a2-485b-bf21-c9e3ad4de942
1754;;; mh-seq.el ends here 1767;;; mh-seq.el ends here
diff --git a/lisp/mh-e/mh-speed.el b/lisp/mh-e/mh-speed.el
index 4b33a81a7e9..64aa84fa8d8 100644
--- a/lisp/mh-e/mh-speed.el
+++ b/lisp/mh-e/mh-speed.el
@@ -558,10 +558,10 @@ The function invalidates the latest ancestor that is present."
558 558
559(provide 'mh-speed) 559(provide 'mh-speed)
560 560
561;;; Local Variables: 561;; Local Variables:
562;;; indent-tabs-mode: nil 562;; indent-tabs-mode: nil
563;;; sentence-end-double-space: nil 563;; sentence-end-double-space: nil
564;;; End: 564;; End:
565 565
566;;; arch-tag: d38ddcd4-3c00-4e37-99bf-8b89dda7b32c 566;; arch-tag: d38ddcd4-3c00-4e37-99bf-8b89dda7b32c
567;;; mh-speed.el ends here 567;;; mh-speed.el ends here
diff --git a/lisp/mh-e/mh-utils.el b/lisp/mh-e/mh-utils.el
index cc48b1248d4..e39d141b70b 100644
--- a/lisp/mh-e/mh-utils.el
+++ b/lisp/mh-e/mh-utils.el
@@ -62,7 +62,10 @@
62(defvar font-lock-defaults) 62(defvar font-lock-defaults)
63(defvar mark-active) 63(defvar mark-active)
64 64
65
66
65;;; Autoloads 67;;; Autoloads
68
66(autoload 'gnus-article-highlight-citation "gnus-cite") 69(autoload 'gnus-article-highlight-citation "gnus-cite")
67(autoload 'message-fetch-field "message") 70(autoload 'message-fetch-field "message")
68(autoload 'message-tokenize-header "message") 71(autoload 'message-tokenize-header "message")
@@ -70,7 +73,10 @@
70(unless (fboundp 'make-hash-table) 73(unless (fboundp 'make-hash-table)
71 (autoload 'make-hash-table "cl")) 74 (autoload 'make-hash-table "cl"))
72 75
76
77
73;;; CL Replacements 78;;; CL Replacements
79
74(defun mh-search-from-end (char string) 80(defun mh-search-from-end (char string)
75 "Return the position of last occurrence of CHAR in STRING. 81 "Return the position of last occurrence of CHAR in STRING.
76If CHAR is not present in STRING then return nil. The function is used in lieu 82If CHAR is not present in STRING then return nil. The function is used in lieu
@@ -79,10 +85,11 @@ of `search' in the CL package."
79 when (equal (aref string index) char) return index 85 when (equal (aref string index) char) return index
80 finally return nil)) 86 finally return nil))
81 87
82;;; Additional header fields that might someday be added: 88;; Additional header fields that might someday be added:
83;;; "Sender: " "Reply-to: " 89;; "Sender: " "Reply-to: "
84 90
85 91
92
86;;; Scan Line Formats 93;;; Scan Line Formats
87 94
88(defvar mh-scan-msg-number-regexp "^ *\\([0-9]+\\)" 95(defvar mh-scan-msg-number-regexp "^ *\\([0-9]+\\)"
@@ -171,7 +178,8 @@ Use `mh-signature-separator-regexp' when searching for a separator.")
171 ; this number 178 ; this number
172 (part-index-hash (make-hash-table))) ; Avoid incrementing the part number 179 (part-index-hash (make-hash-table))) ; Avoid incrementing the part number
173 ; for nested messages 180 ; for nested messages
174;;; This has to be a macro, since we do: (setf (mh-buffer-data) ...) 181
182;; This has to be a macro, since we do: (setf (mh-buffer-data) ...)
175(defmacro mh-buffer-data () 183(defmacro mh-buffer-data ()
176 "Convenience macro to get the MIME data structures of the current buffer." 184 "Convenience macro to get the MIME data structures of the current buffer."
177 `(gethash (current-buffer) mh-globals-hash)) 185 `(gethash (current-buffer) mh-globals-hash))
@@ -457,6 +465,8 @@ about the fontification operation."
457 (gnus-article-highlight-citation t) 465 (gnus-article-highlight-citation t)
458 (set-buffer-modified-p modified)))) 466 (set-buffer-modified-p modified))))
459 467
468
469
460;;; Internal bookkeeping variables: 470;;; Internal bookkeeping variables:
461 471
462;; Cached value of the `Path:' component in the user's MH profile. 472;; Cached value of the `Path:' component in the user's MH profile.
@@ -510,6 +520,8 @@ about the fontification operation."
510;;Non-nil means next SPC or whatever goes to next undeleted message. 520;;Non-nil means next SPC or whatever goes to next undeleted message.
511(defvar mh-page-to-next-msg-flag nil) 521(defvar mh-page-to-next-msg-flag nil)
512 522
523
524
513;;; Internal variables local to a folder. 525;;; Internal variables local to a folder.
514 526
515;; Name of current folder, a string. 527;; Name of current folder, a string.
@@ -554,7 +566,7 @@ about the fontification operation."
554 (cons modeline-buffer-id-left-extent "XEmacs%N:")) 566 (cons modeline-buffer-id-left-extent "XEmacs%N:"))
555 (cons modeline-buffer-id-right-extent " %17b"))))) 567 (cons modeline-buffer-id-right-extent " %17b")))))
556 568
557;;; This holds a documentation string used by describe-mode. 569;; This holds a documentation string used by describe-mode.
558(defun mh-showing-mode (&optional arg) 570(defun mh-showing-mode (&optional arg)
559 "Change whether messages should be displayed. 571 "Change whether messages should be displayed.
560With arg, display messages iff ARG is positive." 572With arg, display messages iff ARG is positive."
@@ -574,6 +586,8 @@ With arg, display messages iff ARG is positive."
574;; Showing message with headers or normally. 586;; Showing message with headers or normally.
575(defvar mh-showing-with-headers nil) 587(defvar mh-showing-with-headers nil)
576 588
589
590
577;;; MH-E macros 591;;; MH-E macros
578 592
579(defmacro with-mh-folder-updating (save-modification-flag &rest body) 593(defmacro with-mh-folder-updating (save-modification-flag &rest body)
@@ -740,10 +754,10 @@ See `expand-file-name' for description of DEFAULT."
740 (mh-expand-file-name folder) 754 (mh-expand-file-name folder)
741 mh-folder-filename))) 755 mh-folder-filename)))
742 756
743;;; Infrastructure to generate show-buffer functions from folder functions 757;; Infrastructure to generate show-buffer functions from folder functions
744;;; XEmacs does not have deactivate-mark? What is the equivalent of 758;; XEmacs does not have deactivate-mark? What is the equivalent of
745;;; transient-mark-mode for XEmacs? Should we be restoring the mark in the 759;; transient-mark-mode for XEmacs? Should we be restoring the mark in the
746;;; folder buffer after the operation has been carried out. 760;; folder buffer after the operation has been carried out.
747(defmacro mh-defun-show-buffer (function original-function 761(defmacro mh-defun-show-buffer (function original-function
748 &optional dont-return) 762 &optional dont-return)
749 "Define FUNCTION to run ORIGINAL-FUNCTION in folder buffer. 763 "Define FUNCTION to run ORIGINAL-FUNCTION in folder buffer.
@@ -784,8 +798,8 @@ still visible.\n")
784 (get-buffer cur-buffer-name)))) 798 (get-buffer cur-buffer-name))))
785 (pop-to-buffer (get-buffer cur-buffer-name) nil))))))))) 799 (pop-to-buffer (get-buffer cur-buffer-name) nil)))))))))
786 800
787;;; Generate interactive functions for the show buffer from the corresponding 801;; Generate interactive functions for the show buffer from the corresponding
788;;; folder functions. 802;; folder functions.
789(mh-defun-show-buffer mh-show-previous-undeleted-msg 803(mh-defun-show-buffer mh-show-previous-undeleted-msg
790 mh-previous-undeleted-msg) 804 mh-previous-undeleted-msg)
791(mh-defun-show-buffer mh-show-next-undeleted-msg 805(mh-defun-show-buffer mh-show-next-undeleted-msg
@@ -883,7 +897,10 @@ still visible.\n")
883(mh-defun-show-buffer mh-show-display-with-external-viewer 897(mh-defun-show-buffer mh-show-display-with-external-viewer
884 mh-display-with-external-viewer) 898 mh-display-with-external-viewer)
885 899
886;;; Populate mh-show-mode-map 900
901
902;;; Build mh-show-mode keymaps
903
887(gnus-define-keys mh-show-mode-map 904(gnus-define-keys mh-show-mode-map
888 " " mh-show-page-msg 905 " " mh-show-page-msg
889 "!" mh-show-refile-or-write-again 906 "!" mh-show-refile-or-write-again
@@ -1081,7 +1098,7 @@ still visible.\n")
1081 ["Quit MH-E" mh-quit t])) 1098 ["Quit MH-E" mh-quit t]))
1082 1099
1083 1100
1084;;; Ensure new buffers won't get this mode if default-major-mode is nil. 1101;; Ensure new buffers won't get this mode if default-major-mode is nil.
1085(put 'mh-show-mode 'mode-class 'special) 1102(put 'mh-show-mode 'mode-class 'special)
1086 1103
1087;; Avoid compiler warnings in XEmacs and Emacs 20 1104;; Avoid compiler warnings in XEmacs and Emacs 20
@@ -1120,7 +1137,7 @@ See also `mh-folder-mode'.
1120 font-lock-auto-fontify) 1137 font-lock-auto-fontify)
1121 (turn-on-font-lock)) 1138 (turn-on-font-lock))
1122 (set (make-local-variable 'tool-bar-map) mh-show-tool-bar-map) 1139 (set (make-local-variable 'tool-bar-map) mh-show-tool-bar-map)
1123 (mh-funcall-if-exists mh-toolbar-init :show) 1140 (mh-funcall-if-exists mh-tool-bar-init :show)
1124 (when mh-decode-mime-flag 1141 (when mh-decode-mime-flag
1125 (mh-make-local-hook 'kill-buffer-hook) 1142 (mh-make-local-hook 'kill-buffer-hook)
1126 (add-hook 'kill-buffer-hook 'mh-mime-cleanup nil t)) 1143 (add-hook 'kill-buffer-hook 'mh-mime-cleanup nil t))
@@ -1260,10 +1277,10 @@ is used."
1260 1277
1261 1278
1262 1279
1263;; Picon display 1280;;; Picon display
1264 1281
1265;;; XXX: This should be customizable. As a side-effect of setting this 1282;; XXX: This should be customizable. As a side-effect of setting this
1266;;; variable, arrange to reset mh-picon-existing-directory-list to 'unset. 1283;; variable, arrange to reset mh-picon-existing-directory-list to 'unset.
1267(defvar mh-picon-directory-list 1284(defvar mh-picon-directory-list
1268 '("~/.picons" "~/.picons/users" "~/.picons/usenix" "~/.picons/news" 1285 '("~/.picons" "~/.picons/users" "~/.picons/usenix" "~/.picons/news"
1269 "~/.picons/domains" "~/.picons/misc" 1286 "~/.picons/domains" "~/.picons/misc"
@@ -2388,6 +2405,8 @@ The function returns the size of the final size of the log buffer."
2388 (insert "\n \n")) 2405 (insert "\n \n"))
2389 (buffer-size))) 2406 (buffer-size)))
2390 2407
2408
2409
2391;;; Issue commands to MH. 2410;;; Issue commands to MH.
2392 2411
2393(defun mh-exec-cmd (command &rest args) 2412(defun mh-exec-cmd (command &rest args)
@@ -2593,10 +2612,10 @@ older versions of Gnus."
2593 2612
2594(provide 'mh-utils) 2613(provide 'mh-utils)
2595 2614
2596;;; Local Variables: 2615;; Local Variables:
2597;;; indent-tabs-mode: nil 2616;; indent-tabs-mode: nil
2598;;; sentence-end-double-space: nil 2617;; sentence-end-double-space: nil
2599;;; End: 2618;; End:
2600 2619
2601;;; arch-tag: 1af39fdf-f66f-4b06-9b48-18a7656c8e36 2620;; arch-tag: 1af39fdf-f66f-4b06-9b48-18a7656c8e36
2602;;; mh-utils.el ends here 2621;;; mh-utils.el ends here
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index 5728499db43..51291d717b6 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -1336,7 +1336,7 @@ shell-specific features.
1336The default style of this mode is that of Rosenblatt's Korn shell book. 1336The default style of this mode is that of Rosenblatt's Korn shell book.
1337The syntax of the statements varies with the shell being used. The 1337The syntax of the statements varies with the shell being used. The
1338following commands are available, based on the current shell's syntax: 1338following commands are available, based on the current shell's syntax:
1339 1339\\<sh-mode-map>
1340\\[sh-case] case statement 1340\\[sh-case] case statement
1341\\[sh-for] for loop 1341\\[sh-for] for loop
1342\\[sh-function] function definition 1342\\[sh-function] function definition
diff --git a/lisp/ps-bdf.el b/lisp/ps-bdf.el
index 6cc23f7bf6b..090f0431218 100644
--- a/lisp/ps-bdf.el
+++ b/lisp/ps-bdf.el
@@ -1,7 +1,9 @@
1;;; ps-bdf.el --- BDF font file handler for ps-print 1;;; ps-bdf.el --- BDF font file handler for ps-print
2 2
3;; Copyright (C) 1998, 1999, 2001, 2003 Electrotechnical Laboratory, JAPAN. 3;; Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc.
4;; Licensed to the Free Software Foundation. 4;; Copyright (C) 1998, 1999, 2001, 2003
5;; National Institute of Advanced Industrial Science and Technology (AIST)
6;; Registration Number H14PRO021
5 7
6;; Keywords: wp, BDF, font, PostScript 8;; Keywords: wp, BDF, font, PostScript
7;; Maintainer: Kenichi Handa <handa@etl.go.jp> 9;; Maintainer: Kenichi Handa <handa@etl.go.jp>
diff --git a/lisp/subr.el b/lisp/subr.el
index e55858e42d8..01444481b22 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -2280,7 +2280,7 @@ from which the minibuffer was entered. The return value of
2280 (let ((str (make-symbol "string"))) 2280 (let ((str (make-symbol "string")))
2281 `(dynamic-completion-table 2281 `(dynamic-completion-table
2282 (lambda (,str) 2282 (lambda (,str)
2283 (unless (listp ,var) 2283 (when (functionp ,var)
2284 (setq ,var (,fun ,@args))) 2284 (setq ,var (,fun ,@args)))
2285 ,var)))) 2285 ,var))))
2286 2286
diff --git a/lisp/term/mac-win.el b/lisp/term/mac-win.el
index c4ccc9588ed..6feaa347c8b 100644
--- a/lisp/term/mac-win.el
+++ b/lisp/term/mac-win.el
@@ -1140,6 +1140,7 @@ correspoinding TextEncodingBase value."
1140 1140
1141;;;; Keyboard layout/language change events 1141;;;; Keyboard layout/language change events
1142(defun mac-handle-language-change (event) 1142(defun mac-handle-language-change (event)
1143 "Set keyboard coding system to what is specified in EVENT."
1143 (interactive "e") 1144 (interactive "e")
1144 (let ((coding-system 1145 (let ((coding-system
1145 (cdr (assq (car (cadr event)) mac-script-code-coding-systems)))) 1146 (cdr (assq (car (cadr event)) mac-script-code-coding-systems))))
@@ -1201,21 +1202,14 @@ in `selection-converter-alist', which see."
1201 (when (and (stringp data) 1202 (when (and (stringp data)
1202 (setq data-type (get-text-property 0 'foreign-selection data))) 1203 (setq data-type (get-text-property 0 'foreign-selection data)))
1203 (cond ((eq data-type 'public.utf16-plain-text) 1204 (cond ((eq data-type 'public.utf16-plain-text)
1204 (if (fboundp 'mac-code-convert-string) 1205 (let ((encoded (and (fboundp 'mac-code-convert-string)
1205 (let ((s (mac-code-convert-string data nil coding))) 1206 (mac-code-convert-string data nil coding))))
1206 (if s 1207 (if encoded
1207 (setq data (decode-coding-string s coding)) 1208 (setq data (decode-coding-string encoded coding))
1208 (setq data 1209 (setq data
1209 ;; (decode-coding-string data 'utf-16) is 1210 (decode-coding-string data
1210 ;; not correct because 1211 (if (eq (byteorder) ?B)
1211 ;; public.utf16-plain-text is defined as 1212 'utf-16be 'utf-16le))))))
1212 ;; native byte order, no BOM.
1213 (decode-coding-string
1214 (mac-code-convert-string data nil 'utf-8)
1215 'utf-8))))
1216 ;; No `mac-code-convert-string' means non-Carbon, which
1217 ;; implies big endian.
1218 (setq data (decode-coding-string data 'utf-16be))))
1219 ((eq data-type 'com.apple.traditional-mac-plain-text) 1213 ((eq data-type 'com.apple.traditional-mac-plain-text)
1220 (setq data (decode-coding-string data coding))) 1214 (setq data (decode-coding-string data coding)))
1221 ((eq data-type 'public.file-url) 1215 ((eq data-type 'public.file-url)
@@ -1332,25 +1326,17 @@ in `selection-converter-alist', which see."
1332 (remove-text-properties 0 (length str) '(composition nil) str) 1326 (remove-text-properties 0 (length str) '(composition nil) str)
1333 (cond 1327 (cond
1334 ((eq type 'public.utf16-plain-text) 1328 ((eq type 'public.utf16-plain-text)
1335 (if (fboundp 'mac-code-convert-string) 1329 (let (s)
1336 (let (s) 1330 (when (and (fboundp 'mac-code-convert-string)
1337 (when (memq coding (find-coding-systems-string str)) 1331 (memq coding (find-coding-systems-string str)))
1338 (setq coding 1332 (setq coding (coding-system-change-eol-conversion coding 'mac))
1339 (coding-system-change-eol-conversion coding 'mac)) 1333 (setq s (mac-code-convert-string
1340 (setq s (mac-code-convert-string 1334 (encode-coding-string str coding)
1341 (encode-coding-string str coding) 1335 coding nil)))
1342 coding nil))) 1336 (setq str (or s
1343 (setq str (or s 1337 (encode-coding-string str
1344 ;; (encode-coding-string str 1338 (if (eq (byteorder) ?B)
1345 ;; 'utf-16-mac) is not correct because 1339 'utf-16be 'utf-16le))))))
1346 ;; public.utf16-plain-text is defined
1347 ;; as native byte order, no BOM.
1348 (mac-code-convert-string
1349 (encode-coding-string str 'utf-8-mac)
1350 'utf-8 nil))))
1351 ;; No `mac-code-convert-string' means non-Carbon, which
1352 ;; implies big endian.
1353 (setq str (encode-coding-string str 'utf-16be-mac))))
1354 ((eq type 'com.apple.traditional-mac-plain-text) 1340 ((eq type 'com.apple.traditional-mac-plain-text)
1355 (let ((encodables (find-coding-systems-string str)) 1341 (let ((encodables (find-coding-systems-string str))
1356 (rest mac-script-code-coding-systems)) 1342 (rest mac-script-code-coding-systems))
@@ -1484,6 +1470,7 @@ in `selection-converter-alist', which see."
1484 (decode-coding-string utf8-text 'utf-8)))) 1470 (decode-coding-string utf8-text 'utf-8))))
1485 1471
1486(defun mac-ae-open-documents (event) 1472(defun mac-ae-open-documents (event)
1473 "Open the documents specified by the Apple event EVENT."
1487 (interactive "e") 1474 (interactive "e")
1488 (let ((ae (mac-event-ae event))) 1475 (let ((ae (mac-event-ae event)))
1489 (dolist (file-name (mac-ae-list ae nil 'undecoded-file-name)) 1476 (dolist (file-name (mac-ae-list ae nil 'undecoded-file-name))
@@ -1511,6 +1498,8 @@ in `selection-converter-alist', which see."
1511 (error "No text in Apple event."))) 1498 (error "No text in Apple event.")))
1512 1499
1513(defun mac-ae-get-url (event) 1500(defun mac-ae-get-url (event)
1501 "Open the URL specified by the Apple event EVENT.
1502Currently the `mailto' scheme is supported."
1514 (interactive "e") 1503 (interactive "e")
1515 (let* ((ae (mac-event-ae event)) 1504 (let* ((ae (mac-event-ae event))
1516 (parsed-url (url-generic-parse-url (mac-ae-text ae)))) 1505 (parsed-url (url-generic-parse-url (mac-ae-text ae))))
@@ -1541,10 +1530,12 @@ in `selection-converter-alist', which see."
1541(define-key mac-apple-event-map [hicommand about] 'display-splash-screen) 1530(define-key mac-apple-event-map [hicommand about] 'display-splash-screen)
1542 1531
1543(defun mac-services-open-file () 1532(defun mac-services-open-file ()
1533 "Open the file specified by the selection value for Services."
1544 (interactive) 1534 (interactive)
1545 (find-file-existing (x-selection-value mac-services-selection))) 1535 (find-file-existing (x-selection-value mac-services-selection)))
1546 1536
1547(defun mac-services-open-selection () 1537(defun mac-services-open-selection ()
1538 "Create a new buffer containing the selection value for Services."
1548 (interactive) 1539 (interactive)
1549 (switch-to-buffer (generate-new-buffer "*untitled*")) 1540 (switch-to-buffer (generate-new-buffer "*untitled*"))
1550 (insert (x-selection-value mac-services-selection)) 1541 (insert (x-selection-value mac-services-selection))
@@ -1553,6 +1544,7 @@ in `selection-converter-alist', which see."
1553 ) 1544 )
1554 1545
1555(defun mac-services-mail-selection () 1546(defun mac-services-mail-selection ()
1547 "Prepare a mail buffer containing the selection value for Services."
1556 (interactive) 1548 (interactive)
1557 (compose-mail) 1549 (compose-mail)
1558 (rfc822-goto-eoh) 1550 (rfc822-goto-eoh)
@@ -1560,10 +1552,12 @@ in `selection-converter-alist', which see."
1560 (insert (x-selection-value mac-services-selection) "\n")) 1552 (insert (x-selection-value mac-services-selection) "\n"))
1561 1553
1562(defun mac-services-mail-to () 1554(defun mac-services-mail-to ()
1555 "Prepare a mail buffer to be sent to the selection value for Services."
1563 (interactive) 1556 (interactive)
1564 (compose-mail (x-selection-value mac-services-selection))) 1557 (compose-mail (x-selection-value mac-services-selection)))
1565 1558
1566(defun mac-services-insert-text () 1559(defun mac-services-insert-text ()
1560 "Insert the selection value for Services."
1567 (interactive) 1561 (interactive)
1568 (let ((text (x-selection-value mac-services-selection))) 1562 (let ((text (x-selection-value mac-services-selection)))
1569 (if (not buffer-read-only) 1563 (if (not buffer-read-only)
@@ -1584,6 +1578,7 @@ in `selection-converter-alist', which see."
1584 'mac-services-mail-to) 1578 'mac-services-mail-to)
1585 1579
1586(defun mac-dispatch-apple-event (event) 1580(defun mac-dispatch-apple-event (event)
1581 "Dispatch EVENT according to the keymap `mac-apple-event-map'."
1587 (interactive "e") 1582 (interactive "e")
1588 (let* ((binding (lookup-key mac-apple-event-map (mac-event-spec event))) 1583 (let* ((binding (lookup-key mac-apple-event-map (mac-event-spec event)))
1589 (service-message 1584 (service-message
diff --git a/lisp/textmodes/org.el b/lisp/textmodes/org.el
index 2e79be9e4cc..3cdc40b9f32 100644
--- a/lisp/textmodes/org.el
+++ b/lisp/textmodes/org.el
@@ -5,7 +5,7 @@
5;; Author: Carsten Dominik <dominik at science dot uva dot nl> 5;; Author: Carsten Dominik <dominik at science dot uva dot nl>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/ 7;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
8;; Version: 4.00 8;; Version: 4.01
9;; 9;;
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11;; 11;;
@@ -81,6 +81,13 @@
81;; 81;;
82;; Changes: 82;; Changes:
83;; ------- 83;; -------
84;; Version 4.01
85;; - Tags can also be set remotely from agenda buffer.
86;; - Boolean logic for tag searches.
87;; - Additional agenda commands can be configured through the variable
88;; `org-agenda-custom-commands'.
89;; - Minor bug fixes.
90;;
84;; Version 4.00 91;; Version 4.00
85;; - Headlines can contain TAGS, and Org-mode can produced a list 92;; - Headlines can contain TAGS, and Org-mode can produced a list
86;; of matching headlines based on a TAG search expression. 93;; of matching headlines based on a TAG search expression.
@@ -199,7 +206,7 @@
199;; - Cleanup. 206;; - Cleanup.
200;; 207;;
201;; Version 3.07 208;; Version 3.07
202;; - Some folding incinsistencies removed. 209;; - Some folding inconsistencies removed.
203;; - BBDB links to company-only entries. 210;; - BBDB links to company-only entries.
204;; - Bug fixes and global cleanup. 211;; - Bug fixes and global cleanup.
205;; 212;;
@@ -266,7 +273,7 @@
266 273
267;;; Customization variables 274;;; Customization variables
268 275
269(defvar org-version "4.00" 276(defvar org-version "4.01"
270 "The version number of the file org.el.") 277 "The version number of the file org.el.")
271(defun org-version () 278(defun org-version ()
272 (interactive) 279 (interactive)
@@ -594,6 +601,23 @@ Entries are added to this list with \\[org-agenda-file-to-front] and removed wit
594 :group 'org-agenda 601 :group 'org-agenda
595 :type '(repeat file)) 602 :type '(repeat file))
596 603
604(defcustom org-agenda-custom-commands
605 '(("w" todo "WAITING")
606 ("u" tags "+WORK+URGENT-BOSS"))
607 "Custom commands for the agenda.
608These commands will be offered on the splash screen displayed by the
609agenda dispatcher \\[org-agenda]. Each entry is a list of 3 items:
610
611key The key (as a string) to be associated with the command.
612type The command type, either `todo' for a todo list with a specific
613 todo keyword, or `tags' for a tags search.
614match What to search for. Either a TODO keyword, or a tags match query."
615 :group 'org-agenda
616 :type '(repeat
617 (list (string :tag "Key")
618 (choice :tag "Type" (const tags) (const todo))
619 (string :tag "Match"))))
620
597(defcustom org-select-timeline-window t 621(defcustom org-select-timeline-window t
598 "Non-nil means, after creating a timeline, move cursor into Timeline window. 622 "Non-nil means, after creating a timeline, move cursor into Timeline window.
599When nil, cursor will remain in the current window." 623When nil, cursor will remain in the current window."
@@ -981,7 +1005,7 @@ first line, so it is probably best to use this in combinations with
981 :tag "Org Tags" 1005 :tag "Org Tags"
982 :group 'org) 1006 :group 'org)
983 1007
984(defcustom org-tags-column 40 1008(defcustom org-tags-column 48
985 "The column to which tags should be indented in a headline. 1009 "The column to which tags should be indented in a headline.
986If this number is positive, it specified the column. If it is negative, 1010If this number is positive, it specified the column. If it is negative,
987it means that the tags should be flushright to that column. For example, 1011it means that the tags should be flushright to that column. For example,
@@ -989,9 +1013,19 @@ it means that the tags should be flushright to that column. For example,
989 :group 'org-tags 1013 :group 'org-tags
990 :type 'integer) 1014 :type 'integer)
991 1015
1016(defcustom org-auto-align-tags t
1017 "Non-nil means, realign tags after pro/demotion of TODO state change.
1018These operations change the length of a headline and therefore shift
1019the tags around. With this options turned on, after each such operation
1020the tags are again aligned to `org-tags-column'."
1021 :group 'org-tags
1022 :type 'boolean)
1023
992(defcustom org-use-tag-inheritance t 1024(defcustom org-use-tag-inheritance t
993 "Non-nil means, tags in levels apply also for sublevels. 1025 "Non-nil means, tags in levels apply also for sublevels.
994When nil, only the tags directly give in a specific line apply there." 1026When nil, only the tags directly give in a specific line apply there.
1027If you turn off this option, you very likely want to turn on the
1028companion option `org-tags-match-list-sublevels'."
995 :group 'org-tags 1029 :group 'org-tags
996 :type 'boolean) 1030 :type 'boolean)
997 1031
@@ -1000,7 +1034,9 @@ When nil, only the tags directly give in a specific line apply there."
1000Because of tag inheritance (see variable `org-use-tag-inheritance'), 1034Because of tag inheritance (see variable `org-use-tag-inheritance'),
1001the sublevels of a headline matching a tag search often also match 1035the sublevels of a headline matching a tag search often also match
1002the same search. Listing all of them can create very long lists. 1036the same search. Listing all of them can create very long lists.
1003Setting this variable to nil causes subtrees to be skipped." 1037Setting this variable to nil causes subtrees to be skipped.
1038This option is off by default, because inheritance in on. If you turn
1039inheritance off, you very likely want to turn this option on."
1004 :group 'org-tags 1040 :group 'org-tags
1005 :type 'boolean) 1041 :type 'boolean)
1006 1042
@@ -2721,6 +2757,8 @@ in the region."
2721 (up-head (make-string (1- level) ?*))) 2757 (up-head (make-string (1- level) ?*)))
2722 (if (= level 1) (error "Cannot promote to level 0. UNDO to recover")) 2758 (if (= level 1) (error "Cannot promote to level 0. UNDO to recover"))
2723 (replace-match up-head nil t) 2759 (replace-match up-head nil t)
2760 ;; Fixup tag positioning
2761 (and org-auto-align-tags (org-set-tags nil t))
2724 (if org-adapt-indentation 2762 (if org-adapt-indentation
2725 (org-fixup-indentation "^ " "" "^ ?\\S-")))) 2763 (org-fixup-indentation "^ " "" "^ ?\\S-"))))
2726 2764
@@ -2732,6 +2770,8 @@ in the region."
2732 (let* ((level (save-match-data (funcall outline-level))) 2770 (let* ((level (save-match-data (funcall outline-level)))
2733 (down-head (make-string (1+ level) ?*))) 2771 (down-head (make-string (1+ level) ?*)))
2734 (replace-match down-head nil t) 2772 (replace-match down-head nil t)
2773 ;; Fixup tag positioning
2774 (and org-auto-align-tags (org-set-tags nil t))
2735 (if org-adapt-indentation 2775 (if org-adapt-indentation
2736 (org-fixup-indentation "^ " " " "^\\S-")))) 2776 (org-fixup-indentation "^ " " " "^\\S-"))))
2737 2777
@@ -3467,6 +3507,8 @@ prefix arg, switch to that state."
3467 (org-log-done) 3507 (org-log-done)
3468 (if (not this) 3508 (if (not this)
3469 (org-log-done t)))) 3509 (org-log-done t))))
3510 ;; Fixup tag positioning
3511 (and org-auto-align-tags (org-set-tags nil t))
3470 (run-hooks 'org-after-todo-state-change-hook))) 3512 (run-hooks 'org-after-todo-state-change-hook)))
3471 ;; Fixup cursor location if close to the keyword 3513 ;; Fixup cursor location if close to the keyword
3472 (if (and (outline-on-heading-p) 3514 (if (and (outline-on-heading-p)
@@ -4226,6 +4268,7 @@ The following commands are available:
4226(define-key org-agenda-mode-map "o" 'delete-other-windows) 4268(define-key org-agenda-mode-map "o" 'delete-other-windows)
4227(define-key org-agenda-mode-map "L" 'org-agenda-recenter) 4269(define-key org-agenda-mode-map "L" 'org-agenda-recenter)
4228(define-key org-agenda-mode-map "t" 'org-agenda-todo) 4270(define-key org-agenda-mode-map "t" 'org-agenda-todo)
4271(define-key org-agenda-mode-map ":" 'org-agenda-set-tags)
4229(define-key org-agenda-mode-map "." 'org-agenda-goto-today) 4272(define-key org-agenda-mode-map "." 'org-agenda-goto-today)
4230(define-key org-agenda-mode-map "d" 'org-agenda-day-view) 4273(define-key org-agenda-mode-map "d" 'org-agenda-day-view)
4231(define-key org-agenda-mode-map "w" 'org-agenda-week-view) 4274(define-key org-agenda-mode-map "w" 'org-agenda-week-view)
@@ -4293,6 +4336,7 @@ The following commands are available:
4293 :style toggle :selected org-agenda-follow-mode :active t] 4336 :style toggle :selected org-agenda-follow-mode :active t]
4294 "--" 4337 "--"
4295 ["Cycle TODO" org-agenda-todo t] 4338 ["Cycle TODO" org-agenda-todo t]
4339 ["Set Tags" org-agenda-set-tags t]
4296 ("Reschedule" 4340 ("Reschedule"
4297 ["Reschedule +1 day" org-agenda-date-later t] 4341 ["Reschedule +1 day" org-agenda-date-later t]
4298 ["Reschedule -1 day" org-agenda-date-earlier t] 4342 ["Reschedule -1 day" org-agenda-date-earlier t]
@@ -4338,7 +4382,7 @@ The following commands are available:
4338(defun org-agenda (arg) 4382(defun org-agenda (arg)
4339 "Dispatch agenda commands to collect entries to the agenda buffer. 4383 "Dispatch agenda commands to collect entries to the agenda buffer.
4340Prompts for a character to select a command. Any prefix arg will be passed 4384Prompts for a character to select a command. Any prefix arg will be passed
4341on to the selected command. Possible selections are: 4385on to the selected command. The default selections are:
4342 4386
4343a Call `org-agenda' to display the agenda for the current day or week. 4387a Call `org-agenda' to display the agenda for the current day or week.
4344t Call `org-todo-list' to display the global todo list. 4388t Call `org-todo-list' to display the global todo list.
@@ -4349,35 +4393,70 @@ m Call `org-tags-view' to display headlines with tags matching
4349 selections, like `+WORK+URGENT-WITHBOSS'. 4393 selections, like `+WORK+URGENT-WITHBOSS'.
4350M like `m', but select only TODO entries, no ordinary headlines. 4394M like `m', but select only TODO entries, no ordinary headlines.
4351 4395
4396More commands can be added by configuring the variable
4397`org-agenda-custom-commands'.
4398
4352If the current buffer is in Org-mode and visiting a file, you can also 4399If the current buffer is in Org-mode and visiting a file, you can also
4353first press `1' to indicate that the agenda should be temporarily 4400first press `1' to indicate that the agenda should be temporarily
4354restricted to the current file." 4401restricted to the current file."
4355 (interactive "P") 4402 (interactive "P")
4356 (let ((restrict-ok (and (buffer-file-name) (eq major-mode 'org-mode))) 4403 (catch 'exit
4357 c) 4404 (let ((restrict-ok (and (buffer-file-name) (eq major-mode 'org-mode)))
4358 (put 'org-agenda-files 'org-restrict nil) 4405 (custom org-agenda-custom-commands)
4359 (message"[a]genda [t]odoList [T]odoKwd [m]atchTags [M]atchTagsTodo%s" 4406 c entry key type string)
4360 (if restrict-ok " [1]JustThisFile" "")) 4407 (put 'org-agenda-files 'org-restrict nil)
4361 (setq c (read-char-exclusive)) 4408 (save-window-excursion
4362 (message "") 4409 (delete-other-windows)
4363 (when (equal c ?1) 4410 (switch-to-buffer-other-window " *Agenda Commands*")
4364 (if restrict-ok 4411 (erase-buffer)
4365 (put 'org-agenda-files 'org-restrict (list (buffer-file-name))) 4412 (insert
4366 (error "Cannot restrict agenda to current buffer")) 4413 "Press key for an agenda command:
4367 (message "Single file: [a]genda [t]odoList [T]odoKwd [m]atchTags [M]atchTagsTodo") 4414--------------------------------
4368 (setq c (read-char-exclusive)) 4415a Agenda for current week or day
4369 (message "")) 4416t List of all TODO entries T Entries with special TODO kwd
4370 (cond 4417m Match a TAGS query M Like m, but only TODO entries.
4371 ((equal c ?a) (call-interactively 'org-agenda-list)) 4418C Configure your own agenda commands")
4372 ((equal c ?t) (call-interactively 'org-todo-list)) 4419 (while (setq entry (pop custom))
4373 ((equal c ?T) 4420 (setq key (car entry) type (nth 1 entry) string (nth 2 entry))
4374 (setq current-prefix-arg (or arg '(4))) 4421 (insert (format "\n%-4s%-12s: %s"
4375 (call-interactively 'org-todo-list)) 4422 key
4376 ((equal c ?m) (call-interactively 'org-tags-view)) 4423 (if (eq type 'tags) "Tags query" "TODO keyword")
4377 ((equal c ?M) 4424 string)))
4378 (setq current-prefix-arg (or arg '(4))) 4425 (goto-char (point-min))
4379 (call-interactively 'org-tags-view)) 4426 (fit-window-to-buffer)
4380 (t (error "Invalid key"))))) 4427 (message "Press key for agenda command%s"
4428 (if restrict-ok ", or [1] to restrict to current file" ""))
4429 (setq c (read-char-exclusive))
4430 (message "")
4431 (when (equal c ?1)
4432 (if restrict-ok
4433 (put 'org-agenda-files 'org-restrict (list (buffer-file-name)))
4434 (error "Cannot restrict agenda to current buffer"))
4435 (message "Press key for agenda command%s"
4436 (if restrict-ok " (restricted to current file)" ""))
4437 (setq c (read-char-exclusive))
4438 (message "")))
4439 (require 'calendar) ; FIXME: can we avoid this for some commands?
4440 (cond
4441 ((equal c ?C) (customize-variable 'org-agenda-custom-commands))
4442 ((equal c ?a) (call-interactively 'org-agenda-list))
4443 ((equal c ?t) (call-interactively 'org-todo-list))
4444 ((equal c ?T)
4445 (setq current-prefix-arg (or arg '(4)))
4446 (call-interactively 'org-todo-list))
4447 ((equal c ?m) (call-interactively 'org-tags-view))
4448 ((equal c ?M)
4449 (setq current-prefix-arg (or arg '(4)))
4450 (call-interactively 'org-tags-view))
4451 ((setq entry (assoc (char-to-string c) org-agenda-custom-commands))
4452 (setq type (nth 1 entry) string (nth 2 entry))
4453 (cond
4454 ((eq type 'tags)
4455 (org-tags-view current-prefix-arg string))
4456 ((eq type 'todo)
4457 (org-todo-list string))
4458 (t (error "Invalid custom agenda command type %s" type))))
4459 (t (error "Invalid key"))))))
4381 4460
4382(defun org-fit-agenda-window () 4461(defun org-fit-agenda-window ()
4383 "Fit the window to the buffer size." 4462 "Fit the window to the buffer size."
@@ -4667,7 +4746,8 @@ for a keyword. A numeric prefix directly selects the Nth keyword in
4667 (kwds org-todo-keywords) 4746 (kwds org-todo-keywords)
4668 (completion-ignore-case t) 4747 (completion-ignore-case t)
4669 (org-select-this-todo-keyword 4748 (org-select-this-todo-keyword
4670 (and arg (integerp arg) (nth (1- arg) org-todo-keywords))) 4749 (if (stringp arg) arg
4750 (and arg (integerp arg) (nth (1- arg) org-todo-keywords))))
4671 rtn rtnall files file pos) 4751 rtn rtnall files file pos)
4672 (when (equal arg '(4)) 4752 (when (equal arg '(4))
4673 (setq org-select-this-todo-keyword 4753 (setq org-select-this-todo-keyword
@@ -6005,6 +6085,30 @@ the same tree node, and the headline of the tree node in the Org-mode file."
6005 (org-agenda-change-all-lines newhead hdmarker) 6085 (org-agenda-change-all-lines newhead hdmarker)
6006 (beginning-of-line 1))) 6086 (beginning-of-line 1)))
6007 6087
6088(defun org-agenda-set-tags ()
6089 "Set tags for the current headline."
6090 (interactive)
6091 (org-agenda-check-no-diary)
6092 (let* ((marker (or (get-text-property (point) 'org-marker)
6093 (org-agenda-error)))
6094 (hdmarker (get-text-property (point) 'org-hd-marker))
6095 (buffer (marker-buffer hdmarker))
6096 (pos (marker-position hdmarker))
6097 (buffer-read-only nil)
6098 newhead)
6099 (with-current-buffer buffer
6100 (widen)
6101 (goto-char pos)
6102 (org-show-hidden-entry)
6103 (save-excursion
6104 (and (outline-next-heading)
6105 (org-flag-heading nil))) ; show the next heading
6106 (call-interactively 'org-set-tags)
6107 (end-of-line 1)
6108 (setq newhead (org-get-heading)))
6109 (org-agenda-change-all-lines newhead hdmarker)
6110 (beginning-of-line 1)))
6111
6008(defun org-agenda-date-later (arg &optional what) 6112(defun org-agenda-date-later (arg &optional what)
6009 "Change the date of this item to one day later." 6113 "Change the date of this item to one day later."
6010 (interactive "p") 6114 (interactive "p")
@@ -6269,21 +6373,34 @@ MATCH can contain positive and negative selection of tags, like
6269(defun org-make-tags-matcher (match) 6373(defun org-make-tags-matcher (match)
6270 "Create the TAGS matcher form for the tags-selecting string MATCH." 6374 "Create the TAGS matcher form for the tags-selecting string MATCH."
6271 (unless match 6375 (unless match
6376 ;; Get a new match request, with completion
6272 (setq org-last-tags-completion-table 6377 (setq org-last-tags-completion-table
6273 (or (org-get-buffer-tags) 6378 (or (org-get-buffer-tags)
6274 org-last-tags-completion-table)) 6379 org-last-tags-completion-table))
6275 (setq match (completing-read 6380 (setq match (completing-read
6276 "Tags: " 'org-tags-completion-function nil nil nil 6381 "Tags: " 'org-tags-completion-function nil nil nil
6277 'org-tags-history))) 6382 'org-tags-history)))
6278 (let ((match0 match) minus tag mm matcher) 6383 ;; parse the string and create a lisp form
6279 (while (string-match "^\\([-+:]\\)?\\([A-Za-z_]+\\)" match) 6384 (let ((match0 match) minus tag mm matcher orterms term orlist)
6280 (setq minus (and (match-end 1) (equal (string-to-char match) ?-)) 6385 (setq orterms (org-split-string match "|"))
6281 tag (match-string 2 match) 6386 (while (setq term (pop orterms))
6282 match (substring match (match-end 0)) 6387 (while (string-match "^&?\\([-+:]\\)?\\([A-Za-z_]+\\)" term)
6283 mm (list 'member (downcase tag) 'tags-list) 6388 (setq minus (and (match-end 1)
6284 mm (if minus (list 'not mm) mm)) 6389 (equal (match-string 1 term) "-"))
6285 (push mm matcher)) 6390 tag (match-string 2 term)
6286 (cons match0 (cons 'and matcher)))) 6391 term (substring term (match-end 0))
6392 mm (list 'member (downcase tag) 'tags-list)
6393 mm (if minus (list 'not mm) mm))
6394 (push mm matcher))
6395 (push (if (> (length matcher) 1) (cons 'and matcher) (car matcher))
6396 orlist)
6397 (setq matcher nil))
6398 (setq matcher (if (> (length orlist) 1) (cons 'or orlist) (car orlist)))
6399 ;; Return the string and lisp forms of the matcher
6400 (cons match0 matcher)))
6401
6402;;(org-make-tags-matcher "&hello&-you")
6403
6287 6404
6288;;;###autoload 6405;;;###autoload
6289(defun org-tags-view (&optional todo-only match keep-modes) 6406(defun org-tags-view (&optional todo-only match keep-modes)
@@ -6368,32 +6485,35 @@ With prefix ARG, realign all tags in headings in the current buffer."
6368 (if just-align 6485 (if just-align
6369 (setq tags current) 6486 (setq tags current)
6370 (setq org-last-tags-completion-table 6487 (setq org-last-tags-completion-table
6371 (or (org-get-buffer-tags);; FIXME: replace +- with :, so that we can use history stuff??? 6488 (or (org-get-buffer-tags)
6372 org-last-tags-completion-table)) 6489 org-last-tags-completion-table))
6373 (setq tags 6490 (setq tags
6374 (let ((org-add-colon-after-tag-completion t)) 6491 (let ((org-add-colon-after-tag-completion t))
6375 (completing-read "Tags: " 'org-tags-completion-function 6492 (completing-read "Tags: " 'org-tags-completion-function
6376 nil nil current 'org-tags-history))) 6493 nil nil current 'org-tags-history)))
6377 (while (string-match "[-+]" tags) 6494 (while (string-match "[-+&]+" tags)
6378 (setq tags (replace-match ":" t t tags))) 6495 (setq tags (replace-match ":" t t tags)))
6379 (unless (string-match ":$" tags) (setq tags (concat tags ":"))) 6496 (unless (string-match ":$" tags) (setq tags (concat tags ":")))
6380 (unless (string-match "^:" tags) (setq tags (concat ":" tags)))) 6497 (unless (string-match "^:" tags) (setq tags (concat ":" tags))))
6381 (beginning-of-line 1) 6498 (if (equal current "")
6382 (looking-at (concat "\\(.*\\)\\(" (regexp-quote current) "\\)[ \t]*")) 6499 (end-of-line 1)
6383 (setq hd (save-match-data (org-trim (match-string 1)))) 6500 (beginning-of-line 1)
6384 (delete-region (match-beginning 0) (match-end 0)) 6501 (looking-at (concat "\\(.*\\)\\(" (regexp-quote current) "\\)[ \t]*"))
6385 (insert hd " ") 6502 (setq hd (match-string 1))
6386 (move-to-column (max (current-column) 6503 (delete-region (match-beginning 0) (match-end 0))
6387 (if (> org-tags-column 0) 6504 (insert (org-trim hd) " "))
6388 org-tags-column 6505 (unless (equal tags "")
6389 (- org-tags-column (length tags)))) 6506 (move-to-column (max (current-column)
6390 t) 6507 (if (> org-tags-column 0)
6391 (insert tags) 6508 org-tags-column
6509 (- (- org-tags-column) (length tags))))
6510 t)
6511 (insert tags))
6392 (move-to-column col)))) 6512 (move-to-column col))))
6393 6513
6394(defun org-tags-completion-function (string predicate &optional flag) 6514(defun org-tags-completion-function (string predicate &optional flag)
6395 (let (s1 s2 rtn (ctable org-last-tags-completion-table)) 6515 (let (s1 s2 rtn (ctable org-last-tags-completion-table))
6396 (if (string-match "^\\(.*[-+:]\\)\\([^-+:]*\\)$" string) 6516 (if (string-match "^\\(.*[-+:&|]\\)\\([^-+:&|]*\\)$" string)
6397 (setq s1 (match-string 1 string) 6517 (setq s1 (match-string 1 string)
6398 s2 (match-string 2 string)) 6518 s2 (match-string 2 string))
6399 (setq s1 "" s2 string)) 6519 (setq s1 "" s2 string))
@@ -11610,19 +11730,13 @@ See the individual commands for more information."
11610 ["Goto Calendar" org-goto-calendar t] 11730 ["Goto Calendar" org-goto-calendar t]
11611 ["Date from Calendar" org-date-from-calendar t]) 11731 ["Date from Calendar" org-date-from-calendar t])
11612 "--" 11732 "--"
11613 ("Agenda/Summary Views" 11733 ["Agenda Command" org-agenda t]
11614 "Current File" 11734 ("File List for Agenda")
11735 ("Special views current file"
11615 ["TODO Tree" org-show-todo-tree t] 11736 ["TODO Tree" org-show-todo-tree t]
11616 ["Check Deadlines" org-check-deadlines t] 11737 ["Check Deadlines" org-check-deadlines t]
11617 ["Timeline" org-timeline t] 11738 ["Timeline" org-timeline t]
11618 ["Tags Tree" org-tags-sparse-tree t] 11739 ["Tags Tree" org-tags-sparse-tree t])
11619 "--"
11620 "All Agenda Files"
11621 ["Command Dispatcher" org-agenda t]
11622 ["TODO list" org-todo-list t]
11623 ["Agenda" org-agenda-list t]
11624 ["Tags View" org-tags-view t])
11625 ("File List for Agenda")
11626 "--" 11740 "--"
11627 ("Hyperlinks" 11741 ("Hyperlinks"
11628 ["Store Link (Global)" org-store-link t] 11742 ["Store Link (Global)" org-store-link t]
@@ -12011,5 +12125,3 @@ Show the heading too, if it is currently invisible."
12011 12125
12012;; arch-tag: e77da1a7-acc7-4336-b19e-efa25af3f9fd 12126;; arch-tag: e77da1a7-acc7-4336-b19e-efa25af3f9fd
12013;;; org.el ends here 12127;;; org.el ends here
12014
12015
diff --git a/lisp/textmodes/picture.el b/lisp/textmodes/picture.el
index 5d528dec109..78741065100 100644
--- a/lisp/textmodes/picture.el
+++ b/lisp/textmodes/picture.el
@@ -661,60 +661,69 @@ Picture mode is invoked by the command \\[picture-mode]."
661;;;###autoload 661;;;###autoload
662(defun picture-mode () 662(defun picture-mode ()
663 "Switch to Picture mode, in which a quarter-plane screen model is used. 663 "Switch to Picture mode, in which a quarter-plane screen model is used.
664\\<picture-mode-map>
664Printing characters replace instead of inserting themselves with motion 665Printing characters replace instead of inserting themselves with motion
665afterwards settable by these commands: 666afterwards settable by these commands:
666 C-c < Move left after insertion. 667
667 C-c > Move right after insertion. 668 Move left after insertion: \\[picture-movement-left]
668 C-c ^ Move up after insertion. 669 Move right after insertion: \\[picture-movement-right]
669 C-c . Move down after insertion. 670 Move up after insertion: \\[picture-movement-up]
670 C-c ` Move northwest (nw) after insertion. 671 Move down after insertion: \\[picture-movement-down]
671 C-c ' Move northeast (ne) after insertion. 672
672 C-c / Move southwest (sw) after insertion. 673 Move northwest (nw) after insertion: \\[picture-movement-nw]
673 C-c \\ Move southeast (se) after insertion. 674 Move northeast (ne) after insertion: \\[picture-movement-ne]
674 C-u C-c ` Move westnorthwest (wnw) after insertion. 675 Move southwest (sw) after insertion: \\[picture-movement-sw]
675 C-u C-c ' Move eastnortheast (ene) after insertion. 676 Move southeast (se) after insertion: \\[picture-movement-se]
676 C-u C-c / Move westsouthwest (wsw) after insertion. 677
677 C-u C-c \\ Move eastsoutheast (ese) after insertion. 678 Move westnorthwest (wnw) after insertion: C-u \\[picture-movement-nw]
679 Move eastnortheast (ene) after insertion: C-u \\[picture-movement-ne]
680 Move westsouthwest (wsw) after insertion: C-u \\[picture-movement-sw]
681 Move eastsoutheast (ese) after insertion: C-u \\[picture-movement-se]
682
678The current direction is displayed in the mode line. The initial 683The current direction is displayed in the mode line. The initial
679direction is right. Whitespace is inserted and tabs are changed to 684direction is right. Whitespace is inserted and tabs are changed to
680spaces when required by movement. You can move around in the buffer 685spaces when required by movement. You can move around in the buffer
681with these commands: 686with these commands:
682 \\[picture-move-down] Move vertically to SAME column in previous line. 687
683 \\[picture-move-up] Move vertically to SAME column in next line. 688 Move vertically to SAME column in previous line: \\[picture-move-down]
684 \\[picture-end-of-line] Move to column following last non-whitespace character. 689 Move vertically to SAME column in next line: \\[picture-move-up]
685 \\[picture-forward-column] Move right inserting spaces if required. 690 Move to column following last
686 \\[picture-backward-column] Move left changing tabs to spaces if required. 691 non-whitespace character: \\[picture-end-of-line]
687 C-c C-f Move in direction of current picture motion. 692 Move right, inserting spaces if required: \\[picture-forward-column]
688 C-c C-b Move in opposite direction of current picture motion. 693 Move left changing tabs to spaces if required: \\[picture-backward-column]
689 Return Move to beginning of next line. 694 Move in direction of current picture motion: \\[picture-motion]
695 Move opposite to current picture motion: \\[picture-motion-reverse]
696 Move to beginning of next line: \\[next-line]
697
690You can edit tabular text with these commands: 698You can edit tabular text with these commands:
691 M-Tab Move to column beneath (or at) next interesting character. 699
692 `Indents' relative to a previous line. 700 Move to column beneath (or at) next interesting
693 Tab Move to next stop in tab stop list. 701 character (see variable `picture-tab-chars'): \\[picture-tab-search]
694 C-c Tab Set tab stops according to context of this line. 702 Move to next stop in tab stop list: \\[picture-tab]
695 With ARG resets tab stops to default (global) value. 703 Set tab stops according to context of this line: \\[picture-set-tab-stops]
696 See also documentation of variable picture-tab-chars 704 (With ARG, resets tab stops to default value.)
697 which defines \"interesting character\". You can manually 705 Change the tab stop list: \\[edit-tab-stops]
698 change the tab stop list with command \\[edit-tab-stops]. 706
699You can manipulate text with these commands: 707You can manipulate text with these commands:
700 C-d Clear (replace) ARG columns after point without moving. 708 Clear ARG columns after point without moving: \\[picture-clear-column]
701 C-c C-d Delete char at point - the command normally assigned to C-d. 709 Delete char at point: \\[delete-char]
702 \\[picture-backward-clear-column] Clear (replace) ARG columns before point, moving back over them. 710 Clear ARG columns backward: \\[picture-backward-clear-column]
703 \\[picture-clear-line] Clear ARG lines, advancing over them. The cleared 711 Clear ARG lines, advancing over them: \\[picture-clear-line]
704 text is saved in the kill ring. 712 (the cleared text is saved in the kill ring)
705 \\[picture-open-line] Open blank line(s) beneath current line. 713 Open blank line(s) beneath current line: \\[picture-open-line]
714
706You can manipulate rectangles with these commands: 715You can manipulate rectangles with these commands:
707 C-c C-k Clear (or kill) a rectangle and save it. 716 Clear a rectangle and save it: \\[picture-clear-rectangle]
708 C-c C-w Like C-c C-k except rectangle is saved in named register. 717 Clear a rectangle, saving in a named register: \\[picture-clear-rectangle-to-register]
709 C-c C-y Overlay (or insert) currently saved rectangle at point. 718 Insert currently saved rectangle at point: \\[picture-yank-rectangle]
710 C-c C-x Like C-c C-y except rectangle is taken from named register. 719 Insert rectangle from named register: \\[picture-yank-rectangle-from-register]
711 C-c C-r Draw a rectangular box around mark and point. 720 Draw a rectangular box around mark and point: \\[picture-draw-rectangle]
712 \\[copy-rectangle-to-register] Copies a rectangle to a register. 721 Copies a rectangle to a register: \\[copy-rectangle-to-register]
713 \\[advertised-undo] Can undo effects of rectangle overlay commands 722 Undo effects of rectangle overlay commands: \\[advertised-undo]
714 if invoked soon enough. 723
715You can return to the previous mode with: 724You can return to the previous mode with \\[picture-mode-exit], which
716 C-c C-c Which also strips trailing whitespace from every line. 725also strips trailing whitespace from every line. Stripping is suppressed
717 Stripping is suppressed by supplying an argument. 726by supplying an argument.
718 727
719Entry to this mode calls the value of `picture-mode-hook' if non-nil. 728Entry to this mode calls the value of `picture-mode-hook' if non-nil.
720 729
diff --git a/lisp/tooltip.el b/lisp/tooltip.el
index 8f609601822..e88bc6017ce 100644
--- a/lisp/tooltip.el
+++ b/lisp/tooltip.el
@@ -29,7 +29,15 @@
29 29
30(defvar comint-prompt-regexp) 30(defvar comint-prompt-regexp)
31 31
32;;; Customizable settings 32(defgroup tooltip nil
33 "Customization group for the `tooltip' package."
34 :group 'help
35 :group 'gud
36 :group 'mouse
37 :group 'tools
38 :version "21.1"
39 :tag "Tool Tips")
40
33;;; Switching tooltips on/off 41;;; Switching tooltips on/off
34 42
35;; We don't set track-mouse globally because this is a big redisplay 43;; We don't set track-mouse globally because this is a big redisplay
@@ -60,14 +68,8 @@ With ARG, turn tooltip mode on if and only if ARG is positive."
60 (setq show-help-function 68 (setq show-help-function
61 (if tooltip-mode 'tooltip-show-help nil))) 69 (if tooltip-mode 'tooltip-show-help nil)))
62 70
63(defgroup tooltip nil 71
64 "Customization group for the `tooltip' package." 72;;; Customizable settings
65 :group 'help
66 :group 'gud
67 :group 'mouse
68 :group 'tools
69 :version "21.1"
70 :tag "Tool Tips")
71 73
72(defcustom tooltip-delay 0.7 74(defcustom tooltip-delay 0.7
73 "Seconds to wait before displaying a tooltip the first time." 75 "Seconds to wait before displaying a tooltip the first time."
@@ -92,9 +94,10 @@ Do so after `tooltip-short-delay'."
92 94
93(defcustom tooltip-x-offset 5 95(defcustom tooltip-x-offset 5
94 "X offset, in pixels, for the display of tooltips. 96 "X offset, in pixels, for the display of tooltips.
95The offset is relative to the position of the mouse. It must 97The offset is the distance between the X position of the mouse and
96be chosen so that the tooltip window doesn't contain the mouse 98the left border of the tooltip window. It must be chosen so that the
97when it pops up. 99tooltip window doesn't contain the mouse when it pops up, or it may
100interfere with clicking where you wish.
98 101
99If `tooltip-frame-parameters' includes the `left' parameter, 102If `tooltip-frame-parameters' includes the `left' parameter,
100the value of `tooltip-x-offset' is ignored." 103the value of `tooltip-x-offset' is ignored."
@@ -103,9 +106,10 @@ the value of `tooltip-x-offset' is ignored."
103 106
104(defcustom tooltip-y-offset +20 107(defcustom tooltip-y-offset +20
105 "Y offset, in pixels, for the display of tooltips. 108 "Y offset, in pixels, for the display of tooltips.
106The offset is relative to the position of the mouse. It must 109The offset is the distance between the Y position of the mouse and
107be chosen so that the tooltip window doesn't contain the mouse 110the top border of the tooltip window. It must be chosen so that the
108when it pops up. 111tooltip window doesn't contain the mouse when it pops up, or it may
112interfere with clicking where you wish.
109 113
110If `tooltip-frame-parameters' includes the `top' parameter, 114If `tooltip-frame-parameters' includes the `top' parameter,
111the value of `tooltip-y-offset' is ignored." 115the value of `tooltip-y-offset' is ignored."