aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Verona2011-08-08 17:08:48 +0200
committerJoakim Verona2011-08-08 17:08:48 +0200
commit1e3f7bd2cdb85abfbf572cc1a13e615e5c4299de (patch)
treecf8b108fccada9dca76dc616e5333739d8825728
parent23e9910c1fc51657f08b4ab125c0c44e5860d942 (diff)
parentd56176114c8c9226a43db4bf68df562486e454ed (diff)
downloademacs-1e3f7bd2cdb85abfbf572cc1a13e615e5c4299de.tar.gz
emacs-1e3f7bd2cdb85abfbf572cc1a13e615e5c4299de.zip
merge upstream
-rw-r--r--doc/emacs/ChangeLog5
-rw-r--r--doc/emacs/dired.texi4
-rw-r--r--lisp/ChangeLog25
-rw-r--r--lisp/ChangeLog.152
-rw-r--r--lisp/epg.el227
-rw-r--r--lisp/faces.el2
-rw-r--r--lisp/info.el2
-rw-r--r--lisp/longlines.el4
-rw-r--r--lisp/url/ChangeLog5
-rw-r--r--lisp/url/url-http.el12
-rw-r--r--src/ChangeLog15
-rw-r--r--src/composite.c2
-rw-r--r--src/editfns.c4
-rw-r--r--src/ftfont.c4
14 files changed, 220 insertions, 93 deletions
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index 8e5efc4f87d..6874ef75ef8 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,3 +1,8 @@
12011-08-07 Juri Linkov <juri@jurta.org>
2
3 * dired.texi (Operating on Files): Rewrite according to the fact
4 that `dired-do-chmod' doesn't use the `chmod' program anymore.
5
12011-07-30 Michael Albinus <michael.albinus@gmx.de> 62011-07-30 Michael Albinus <michael.albinus@gmx.de>
2 7
3 * mini.texi (Minibuffer File): Insert a reference to Tramp for 8 * mini.texi (Minibuffer File): Insert a reference to Tramp for
diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi
index 501c4152e6a..80ccd1d10f9 100644
--- a/doc/emacs/dired.texi
+++ b/doc/emacs/dired.texi
@@ -645,8 +645,8 @@ link.
645@cindex changing file permissions (in Dired) 645@cindex changing file permissions (in Dired)
646@item M @var{modespec} @key{RET} 646@item M @var{modespec} @key{RET}
647Change the mode (also called ``permission bits'') of the specified files 647Change the mode (also called ``permission bits'') of the specified files
648(@code{dired-do-chmod}). This uses the @code{chmod} program, so 648(@code{dired-do-chmod}). @var{modespec} can be in octal or symbolic
649@var{modespec} can be any argument that @code{chmod} can handle. 649notation like arguments handled by the @code{chmod} program.
650 650
651@findex dired-do-chgrp 651@findex dired-do-chgrp
652@kindex G @r{(Dired)} 652@kindex G @r{(Dired)}
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 7c1fa3a656b..d2ea294d2d0 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,25 @@
12011-08-08 Daiki Ueno <ueno@unixuser.org>
2
3 * epg.el (epg--status-KEYEXPIRED, epg--status-KEYREVOKED): Fix typo.
4 (epg-error-to-string, epg-errors-to-string): New function.
5 (epg-wait-for-completion): Reverse errors list.
6 (epg--check-error-for-decrypt, epg-sign-file, epg-sign-string)
7 (epg-encrypt-file, epg-encrypt-string, epg-export-keys-to-file)
8 (epg--import-keys-1, epg-receive-keys, epg-delete-keys)
9 (epg-sign-keys, epg-generate-key-from-file)
10 (epg-generate-key-from-string): Format errors by using
11 epg-errors-to-string (bug#9255).
12 (epg--status-INV_SGNR, epg--status-NO_SGNR): New status handler.
13
142011-08-07 Juri Linkov <juri@jurta.org>
15
16 * faces.el (list-faces-display): Remove extra angle bracket
17 from `help-mode-map'.
18
19 * info.el (Info-history-toc-nodes): Doc fix.
20
21 * longlines.el (longlines-mode): Doc fix.
22
12011-08-05 Stefan Monnier <monnier@iro.umontreal.ca> 232011-08-05 Stefan Monnier <monnier@iro.umontreal.ca>
2 24
3 * progmodes/js.el (js--regexp-literal): Accept regexps at the beginning 25 * progmodes/js.el (js--regexp-literal): Accept regexps at the beginning
@@ -346,9 +368,6 @@
346 (string-rectangle): Go to the point after the last operation 368 (string-rectangle): Go to the point after the last operation
347 (bug#7522). 369 (bug#7522).
348 370
349 * simple.el (current-kill): Clarify what
350 `interprogram-paste-function' does (bug#7500).
351
352 * printing.el (pr-toggle-region): Clarify the documentation 371 * printing.el (pr-toggle-region): Clarify the documentation
353 slightly (bug#7493). 372 slightly (bug#7493).
354 373
diff --git a/lisp/ChangeLog.15 b/lisp/ChangeLog.15
index 190be56dd09..2acf847cddc 100644
--- a/lisp/ChangeLog.15
+++ b/lisp/ChangeLog.15
@@ -3573,7 +3573,7 @@
3573 * locate.el (locate-default-make-command-line): Don't consider 3573 * locate.el (locate-default-make-command-line): Don't consider
3574 drive letter and root directory part of 3574 drive letter and root directory part of
3575 `directory-listing-before-filename-regexp'. (Bug#7308) 3575 `directory-listing-before-filename-regexp'. (Bug#7308)
3576 (locate-post-command-hook, locate-post-command-hook): New defcustoms. 3576 (locate-post-command-hook, locate-mode-hook): New defcustoms.
3577 3577
35782010-11-27 Stefan Monnier <monnier@iro.umontreal.ca> 35782010-11-27 Stefan Monnier <monnier@iro.umontreal.ca>
3579 3579
diff --git a/lisp/epg.el b/lisp/epg.el
index 348ad970b14..9ca07e213b4 100644
--- a/lisp/epg.el
+++ b/lisp/epg.el
@@ -1069,6 +1069,59 @@ This function is for internal use only."
1069 (format " secret keys unchanged: %d\n" 1069 (format " secret keys unchanged: %d\n"
1070 (epg-import-result-secret-unchanged import-result))))) 1070 (epg-import-result-secret-unchanged import-result)))))
1071 1071
1072(defun epg-error-to-string (error)
1073 (cond
1074 ((eq (car error) 'exit)
1075 "Exit")
1076 ((eq (car error) 'quit)
1077 "Cancelled")
1078 ((eq (car error) 'no-data)
1079 (let ((entry (assq (cdr error) epg-no-data-reason-alist)))
1080 (if entry
1081 (format "No data (%s)" (downcase (cdr entry)))
1082 "No data")))
1083 ((eq (car error) 'unexpected)
1084 (let ((entry (assq (cdr error) epg-unexpected-reason-alist)))
1085 (if entry
1086 (format "Unexpected (%s)" (downcase (cdr entry)))
1087 "Unexpected")))
1088 ((eq (car error) 'bad-armor)
1089 "Bad armor")
1090 ((memq (car error) '(invalid-recipient invalid-signer))
1091 (concat
1092 (if (eq (car error) 'invalid-recipient)
1093 "Unusable public key"
1094 "Unusable secret key")
1095 (let ((entry (assq 'requested (cdr error))))
1096 (if entry
1097 (format ": %s" (cdr entry))
1098 ": <unknown>"))
1099 (let ((entry (assq 'reason (cdr error))))
1100 (if (and entry
1101 (> (cdr entry) 0) ;no specific reason given
1102 (setq entry (assq (cdr entry)
1103 epg-invalid-recipients-reason-alist)))
1104 (format " (%s)" (downcase (cdr entry)))
1105 ""))))
1106 ((eq (car error) 'no-pubkey)
1107 (format "No public key: %s" (cdr error)))
1108 ((eq (car error) 'no-seckey)
1109 (format "No secret key: %s" (cdr error)))
1110 ((eq (car error) 'no-recipients)
1111 "No recipients")
1112 ((eq (car error) 'no-signers)
1113 "No signers")
1114 ((eq (car error) 'delete-problem)
1115 (let ((entry (assq (cdr error) epg-delete-problem-reason-alist)))
1116 (if entry
1117 (format "Delete problem (%s)" (downcase (cdr entry)))
1118 "Delete problem")))
1119 ((eq (car error) 'key-not-created)
1120 "Key not created")))
1121
1122(defun epg-errors-to-string (errors)
1123 (mapconcat #'epg-error-to-string errors "; "))
1124
1072(defun epg--start (context args) 1125(defun epg--start (context args)
1073 "Start `epg-gpg-program' in a subprocess with given ARGS." 1126 "Start `epg-gpg-program' in a subprocess with given ARGS."
1074 (if (and (epg-context-process context) 1127 (if (and (epg-context-process context)
@@ -1195,7 +1248,7 @@ This function is for internal use only."
1195 (if epg-pending-status-list 1248 (if epg-pending-status-list
1196 (epg-context-set-result-for 1249 (epg-context-set-result-for
1197 context 'error 1250 context 'error
1198 (cons (list 'exit) 1251 (cons '(exit)
1199 (epg-context-result-for context 'error)))))) 1252 (epg-context-result-for context 'error))))))
1200 1253
1201(defun epg-wait-for-completion (context) 1254(defun epg-wait-for-completion (context)
@@ -1203,7 +1256,10 @@ This function is for internal use only."
1203 (while (eq (process-status (epg-context-process context)) 'run) 1256 (while (eq (process-status (epg-context-process context)) 'run)
1204 (accept-process-output (epg-context-process context) 1)) 1257 (accept-process-output (epg-context-process context) 1))
1205 ;; This line is needed to run the process-filter right now. 1258 ;; This line is needed to run the process-filter right now.
1206 (sleep-for 0.1)) 1259 (sleep-for 0.1)
1260 (epg-context-set-result-for
1261 context 'error
1262 (nreverse (epg-context-result-for context 'error))))
1207 1263
1208(defun epg-reset (context) 1264(defun epg-reset (context)
1209 "Reset the CONTEXT." 1265 "Reset the CONTEXT."
@@ -1399,11 +1455,22 @@ This function is for internal use only."
1399 (epg--status-*SIG context 'bad string)) 1455 (epg--status-*SIG context 'bad string))
1400 1456
1401(defun epg--status-NO_PUBKEY (context string) 1457(defun epg--status-NO_PUBKEY (context string)
1402 (let ((signature (car (epg-context-result-for context 'verify)))) 1458 (if (eq (epg-context-operation context) 'verify)
1403 (if (and signature 1459 (let ((signature (car (epg-context-result-for context 'verify))))
1404 (eq (epg-signature-status signature) 'error) 1460 (if (and signature
1405 (equal (epg-signature-key-id signature) string)) 1461 (eq (epg-signature-status signature) 'error)
1406 (epg-signature-set-status signature 'no-pubkey)))) 1462 (equal (epg-signature-key-id signature) string))
1463 (epg-signature-set-status signature 'no-pubkey)))
1464 (epg-context-set-result-for
1465 context 'error
1466 (cons (cons 'no-pubkey string)
1467 (epg-context-result-for context 'error)))))
1468
1469(defun epg--status-NO_SECKEY (context string)
1470 (epg-context-set-result-for
1471 context 'error
1472 (cons (cons 'no-seckey string)
1473 (epg-context-result-for context 'error))))
1407 1474
1408(defun epg--time-from-seconds (seconds) 1475(defun epg--time-from-seconds (seconds)
1409 (let ((number-seconds (string-to-number (concat seconds ".0")))) 1476 (let ((number-seconds (string-to-number (concat seconds ".0"))))
@@ -1564,13 +1631,13 @@ This function is for internal use only."
1564 context 'key 1631 context 'key
1565 (cons (list 'key-expired (cons 'expiration-time 1632 (cons (list 'key-expired (cons 'expiration-time
1566 (epg--time-from-seconds string))) 1633 (epg--time-from-seconds string)))
1567 (epg-context-result-for context 'error)))) 1634 (epg-context-result-for context 'key))))
1568 1635
1569(defun epg--status-KEYREVOKED (context _string) 1636(defun epg--status-KEYREVOKED (context _string)
1570 (epg-context-set-result-for 1637 (epg-context-set-result-for
1571 context 'key 1638 context 'key
1572 (cons '(key-revoked) 1639 (cons '(key-revoked)
1573 (epg-context-result-for context 'error)))) 1640 (epg-context-result-for context 'key))))
1574 1641
1575(defun epg--status-BADARMOR (context _string) 1642(defun epg--status-BADARMOR (context _string)
1576 (epg-context-set-result-for 1643 (epg-context-set-result-for
@@ -1585,7 +1652,18 @@ This function is for internal use only."
1585 (cons (list 'invalid-recipient 1652 (cons (list 'invalid-recipient
1586 (cons 'reason 1653 (cons 'reason
1587 (string-to-number (match-string 1 string))) 1654 (string-to-number (match-string 1 string)))
1588 (cons 'requested-recipient 1655 (cons 'requested
1656 (match-string 2 string)))
1657 (epg-context-result-for context 'error)))))
1658
1659(defun epg--status-INV_SGNR (context string)
1660 (if (string-match "\\`\\([0-9]+\\) \\(.*\\)" string)
1661 (epg-context-set-result-for
1662 context 'error
1663 (cons (list 'invalid-signer
1664 (cons 'reason
1665 (string-to-number (match-string 1 string)))
1666 (cons 'requested
1589 (match-string 2 string))) 1667 (match-string 2 string)))
1590 (epg-context-result-for context 'error))))) 1668 (epg-context-result-for context 'error)))))
1591 1669
@@ -1595,6 +1673,12 @@ This function is for internal use only."
1595 (cons '(no-recipients) 1673 (cons '(no-recipients)
1596 (epg-context-result-for context 'error)))) 1674 (epg-context-result-for context 'error))))
1597 1675
1676(defun epg--status-NO_SGNR (context _string)
1677 (epg-context-set-result-for
1678 context 'error
1679 (cons '(no-signers)
1680 (epg-context-result-for context 'error))))
1681
1598(defun epg--status-DELETE_PROBLEM (context string) 1682(defun epg--status-DELETE_PROBLEM (context string)
1599 (if (string-match "\\`\\([0-9]+\\)" string) 1683 (if (string-match "\\`\\([0-9]+\\)" string)
1600 (epg-context-set-result-for 1684 (epg-context-set-result-for
@@ -1960,17 +2044,13 @@ If you are unsure, use synchronous version of this function
1960 (epg-wait-for-status context '("BEGIN_DECRYPTION")))) 2044 (epg-wait-for-status context '("BEGIN_DECRYPTION"))))
1961 2045
1962(defun epg--check-error-for-decrypt (context) 2046(defun epg--check-error-for-decrypt (context)
1963 (if (epg-context-result-for context 'decryption-failed) 2047 (let ((errors (epg-context-result-for context 'error)))
1964 (signal 'epg-error (list "Decryption failed"))) 2048 (if (epg-context-result-for context 'decryption-failed)
1965 (if (epg-context-result-for context 'no-secret-key) 2049 (signal 'epg-error
1966 (signal 'epg-error 2050 (list "Decryption failed" (epg-errors-to-string errors))))
1967 (list "No secret key"
1968 (epg-context-result-for context 'no-secret-key))))
1969 (unless (epg-context-result-for context 'decryption-okay) 2051 (unless (epg-context-result-for context 'decryption-okay)
1970 (let* ((error (epg-context-result-for context 'error))) 2052 (signal 'epg-error
1971 (if (assq 'no-data error) 2053 (list "Can't decrypt" (epg-errors-to-string errors))))))
1972 (signal 'epg-error (list "No data")))
1973 (signal 'epg-error (list "Can't decrypt" error)))))
1974 2054
1975(defun epg-decrypt-file (context cipher plain) 2055(defun epg-decrypt-file (context cipher plain)
1976 "Decrypt a file CIPHER and store the result to a file PLAIN. 2056 "Decrypt a file CIPHER and store the result to a file PLAIN.
@@ -2165,10 +2245,9 @@ Otherwise, it makes a cleartext signature."
2165 (epg-start-sign context (epg-make-data-from-file plain) mode) 2245 (epg-start-sign context (epg-make-data-from-file plain) mode)
2166 (epg-wait-for-completion context) 2246 (epg-wait-for-completion context)
2167 (unless (epg-context-result-for context 'sign) 2247 (unless (epg-context-result-for context 'sign)
2168 (if (epg-context-result-for context 'error) 2248 (let ((errors (epg-context-result-for context 'error)))
2169 (error "Sign failed: %S" 2249 (signal 'epg-error
2170 (epg-context-result-for context 'error)) 2250 (list "Sign failed" (epg-errors-to-string errors)))))
2171 (error "Sign failed")))
2172 (unless signature 2251 (unless signature
2173 (epg-read-output context))) 2252 (epg-read-output context)))
2174 (unless signature 2253 (unless signature
@@ -2203,9 +2282,9 @@ Otherwise, it makes a cleartext signature."
2203 (epg-wait-for-completion context) 2282 (epg-wait-for-completion context)
2204 (unless (epg-context-result-for context 'sign) 2283 (unless (epg-context-result-for context 'sign)
2205 (if (epg-context-result-for context 'error) 2284 (if (epg-context-result-for context 'error)
2206 (error "Sign failed: %S" 2285 (let ((errors (epg-context-result-for context 'error)))
2207 (epg-context-result-for context 'error)) 2286 (signal 'epg-error
2208 (error "Sign failed"))) 2287 (list "Sign failed" (epg-errors-to-string errors))))))
2209 (epg-read-output context)) 2288 (epg-read-output context))
2210 (epg-delete-output-file context) 2289 (epg-delete-output-file context)
2211 (if input-file 2290 (if input-file
@@ -2276,15 +2355,14 @@ If RECIPIENTS is nil, it performs symmetric encryption."
2276 (epg-start-encrypt context (epg-make-data-from-file plain) 2355 (epg-start-encrypt context (epg-make-data-from-file plain)
2277 recipients sign always-trust) 2356 recipients sign always-trust)
2278 (epg-wait-for-completion context) 2357 (epg-wait-for-completion context)
2279 (if (and sign 2358 (let ((errors (epg-context-result-for context 'error)))
2280 (not (epg-context-result-for context 'sign))) 2359 (if (and sign
2281 (if (epg-context-result-for context 'error) 2360 (not (epg-context-result-for context 'sign)))
2282 (error "Sign failed: %S" 2361 (signal 'epg-error
2283 (epg-context-result-for context 'error)) 2362 (list "Sign failed" (epg-errors-to-string errors))))
2284 (error "Sign failed"))) 2363 (if errors
2285 (if (epg-context-result-for context 'error) 2364 (signal 'epg-error
2286 (error "Encrypt failed: %S" 2365 (list "Encrypt failed" (epg-errors-to-string errors)))))
2287 (epg-context-result-for context 'error)))
2288 (unless cipher 2366 (unless cipher
2289 (epg-read-output context))) 2367 (epg-read-output context)))
2290 (unless cipher 2368 (unless cipher
@@ -2317,15 +2395,14 @@ If RECIPIENTS is nil, it performs symmetric encryption."
2317 (epg-make-data-from-string plain)) 2395 (epg-make-data-from-string plain))
2318 recipients sign always-trust) 2396 recipients sign always-trust)
2319 (epg-wait-for-completion context) 2397 (epg-wait-for-completion context)
2320 (if (and sign 2398 (let ((errors (epg-context-result-for context 'error)))
2321 (not (epg-context-result-for context 'sign))) 2399 (if (and sign
2322 (if (epg-context-result-for context 'error) 2400 (not (epg-context-result-for context 'sign)))
2323 (error "Sign failed: %S" 2401 (signal 'epg-error
2324 (epg-context-result-for context 'error)) 2402 (list "Sign failed" (epg-errors-to-string errors))))
2325 (error "Sign failed"))) 2403 (if errors
2326 (if (epg-context-result-for context 'error) 2404 (signal 'epg-error
2327 (error "Encrypt failed: %S" 2405 (list "Encrypt failed" (epg-errors-to-string errors)))))
2328 (epg-context-result-for context 'error)))
2329 (epg-read-output context)) 2406 (epg-read-output context))
2330 (epg-delete-output-file context) 2407 (epg-delete-output-file context)
2331 (if input-file 2408 (if input-file
@@ -2359,9 +2436,11 @@ If you are unsure, use synchronous version of this function
2359 (epg--make-temp-file "epg-output"))) 2436 (epg--make-temp-file "epg-output")))
2360 (epg-start-export-keys context keys) 2437 (epg-start-export-keys context keys)
2361 (epg-wait-for-completion context) 2438 (epg-wait-for-completion context)
2362 (if (epg-context-result-for context 'error) 2439 (let ((errors (epg-context-result-for context 'error)))
2363 (error "Export keys failed: %S" 2440 (if errors
2364 (epg-context-result-for context 'error))) 2441 (signal 'epg-error
2442 (list "Export keys failed"
2443 (epg-errors-to-string errors)))))
2365 (unless file 2444 (unless file
2366 (epg-read-output context))) 2445 (epg-read-output context)))
2367 (unless file 2446 (unless file
@@ -2398,9 +2477,11 @@ If you are unsure, use synchronous version of this function
2398 (progn 2477 (progn
2399 (epg-start-import-keys context keys) 2478 (epg-start-import-keys context keys)
2400 (epg-wait-for-completion context) 2479 (epg-wait-for-completion context)
2401 (if (epg-context-result-for context 'error) 2480 (let ((errors (epg-context-result-for context 'error)))
2402 (error "Import keys failed: %S" 2481 (if errors
2403 (epg-context-result-for context 'error)))) 2482 (signal 'epg-error
2483 (list "Import keys failed"
2484 (epg-errors-to-string errors))))))
2404 (epg-reset context))) 2485 (epg-reset context)))
2405 2486
2406(defun epg-import-keys-from-file (context keys) 2487(defun epg-import-keys-from-file (context keys)
@@ -2431,9 +2512,11 @@ KEYS is a list of key IDs"
2431 (progn 2512 (progn
2432 (epg-start-receive-keys context keys) 2513 (epg-start-receive-keys context keys)
2433 (epg-wait-for-completion context) 2514 (epg-wait-for-completion context)
2434 (if (epg-context-result-for context 'error) 2515 (let ((errors (epg-context-result-for context 'error)))
2435 (error "Receive keys failed: %S" 2516 (if errors
2436 (epg-context-result-for context 'error)))) 2517 (signal 'epg-error
2518 (list "Receive keys failed"
2519 (epg-errors-to-string errors))))))
2437 (epg-reset context))) 2520 (epg-reset context)))
2438 2521
2439(defalias 'epg-import-keys-from-server 'epg-receive-keys) 2522(defalias 'epg-import-keys-from-server 'epg-receive-keys)
@@ -2463,13 +2546,11 @@ If you are unsure, use synchronous version of this function
2463 (progn 2546 (progn
2464 (epg-start-delete-keys context keys allow-secret) 2547 (epg-start-delete-keys context keys allow-secret)
2465 (epg-wait-for-completion context) 2548 (epg-wait-for-completion context)
2466 (let ((entry (assq 'delete-problem 2549 (let ((errors (epg-context-result-for context 'error)))
2467 (epg-context-result-for context 'error)))) 2550 (if errors
2468 (if entry 2551 (signal 'epg-error
2469 (if (setq entry (assq (cdr entry) 2552 (list "Delete keys failed"
2470 epg-delete-problem-reason-alist)) 2553 (epg-errors-to-string errors))))))
2471 (error "Delete keys failed: %s" (cdr entry))
2472 (error "Delete keys failed")))))
2473 (epg-reset context))) 2554 (epg-reset context)))
2474 2555
2475(defun epg-start-sign-keys (context keys &optional local) 2556(defun epg-start-sign-keys (context keys &optional local)
@@ -2498,9 +2579,11 @@ If you are unsure, use synchronous version of this function
2498 (progn 2579 (progn
2499 (epg-start-sign-keys context keys local) 2580 (epg-start-sign-keys context keys local)
2500 (epg-wait-for-completion context) 2581 (epg-wait-for-completion context)
2501 (if (epg-context-result-for context 'error) 2582 (let ((errors (epg-context-result-for context 'error)))
2502 (error "Sign keys failed: %S" 2583 (if errors
2503 (epg-context-result-for context 'error)))) 2584 (signal 'epg-error
2585 (list "Sign keys failed"
2586 (epg-errors-to-string errors))))))
2504 (epg-reset context))) 2587 (epg-reset context)))
2505(make-obsolete 'epg-sign-keys "do not use." "23.1") 2588(make-obsolete 'epg-sign-keys "do not use." "23.1")
2506 2589
@@ -2532,9 +2615,11 @@ PARAMETERS is a file which tells how to create the key."
2532 (progn 2615 (progn
2533 (epg-start-generate-key context (epg-make-data-from-file parameters)) 2616 (epg-start-generate-key context (epg-make-data-from-file parameters))
2534 (epg-wait-for-completion context) 2617 (epg-wait-for-completion context)
2535 (if (epg-context-result-for context 'error) 2618 (let ((errors (epg-context-result-for context 'error)))
2536 (error "Generate key failed: %S" 2619 (if errors
2537 (epg-context-result-for context 'error)))) 2620 (signal 'epg-error
2621 (list "Generate key failed"
2622 (epg-errors-to-string errors))))))
2538 (epg-reset context))) 2623 (epg-reset context)))
2539 2624
2540(defun epg-generate-key-from-string (context parameters) 2625(defun epg-generate-key-from-string (context parameters)
@@ -2544,9 +2629,11 @@ PARAMETERS is a string which tells how to create the key."
2544 (progn 2629 (progn
2545 (epg-start-generate-key context (epg-make-data-from-string parameters)) 2630 (epg-start-generate-key context (epg-make-data-from-string parameters))
2546 (epg-wait-for-completion context) 2631 (epg-wait-for-completion context)
2547 (if (epg-context-result-for context 'error) 2632 (let ((errors (epg-context-result-for context 'error)))
2548 (error "Generate key failed: %S" 2633 (if errors
2549 (epg-context-result-for context 'error)))) 2634 (signal 'epg-error
2635 (list "Generate key failed"
2636 (epg-errors-to-string errors))))))
2550 (epg-reset context))) 2637 (epg-reset context)))
2551 2638
2552(defun epg--decode-percent-escape (string) 2639(defun epg--decode-percent-escape (string)
diff --git a/lisp/faces.el b/lisp/faces.el
index 302f8af35ac..9a78ab69caa 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -1255,7 +1255,7 @@ arg, prompt for a regular expression."
1255 (insert 1255 (insert
1256 (substitute-command-keys 1256 (substitute-command-keys
1257 (concat 1257 (concat
1258 "\\<help-mode-map>>Use " 1258 "\\<help-mode-map>Use "
1259 (if (display-mouse-p) "\\[help-follow-mouse] or ") 1259 (if (display-mouse-p) "\\[help-follow-mouse] or ")
1260 "\\[help-follow] on a face name to customize it\n" 1260 "\\[help-follow] on a face name to customize it\n"
1261 "or on its sample text for a description of the face.\n\n"))) 1261 "or on its sample text for a description of the face.\n\n")))
diff --git a/lisp/info.el b/lisp/info.el
index 447c86b3e9e..191e75f9750 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -2128,7 +2128,7 @@ If SAME-FILE is non-nil, do not move to a different Info file."
2128 )) 2128 ))
2129 2129
2130(defun Info-history-toc-nodes (filename) 2130(defun Info-history-toc-nodes (filename)
2131 "History-specific implementation of `Info-history-toc-nodes'." 2131 "History-specific implementation of `Info-toc-nodes'."
2132 `(,filename 2132 `(,filename
2133 ("Top" nil nil nil))) 2133 ("Top" nil nil nil)))
2134 2134
diff --git a/lisp/longlines.el b/lisp/longlines.el
index e81a235a17b..f625d8fcac7 100644
--- a/lisp/longlines.el
+++ b/lisp/longlines.el
@@ -100,8 +100,8 @@ In Long Lines mode, long lines are wrapped if they extend beyond
100`fill-column'. The soft newlines used for line wrapping will not 100`fill-column'. The soft newlines used for line wrapping will not
101show up when the text is yanked or saved to disk. 101show up when the text is yanked or saved to disk.
102 102
103With no argument, this command toggles Flyspell mode. 103With no argument, this command toggles Long Lines mode.
104With a prefix argument ARG, turn Flyspell minor mode on if ARG is positive, 104With a prefix argument ARG, turn Long Lines minor mode on if ARG is positive,
105otherwise turn it off. 105otherwise turn it off.
106 106
107If the variable `longlines-auto-wrap' is non-nil, lines are automatically 107If the variable `longlines-auto-wrap' is non-nil, lines are automatically
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index 6a3638c4232..5714179fcfe 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,3 +1,8 @@
12011-08-07 Chong Yidong <cyd@stupidchicken.com>
2
3 * url-http.el (url-http-parse-headers): For HTTP 301/302/307,
4 don't convert to a GET request (Bug#701).
5
12011-07-13 Chris Newton <redshodan@gmail.com> (tiny change) 62011-07-13 Chris Newton <redshodan@gmail.com> (tiny change)
2 7
3 * url-http.el (url-http): Copy over `url-show-status' to the async 8 * url-http.el (url-http): Copy over `url-show-status' to the async
diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el
index def35449397..a21aed21436 100644
--- a/lisp/url/url-http.el
+++ b/lisp/url/url-http.el
@@ -563,16 +563,8 @@ should be shown to the user."
563 ;; automatically redirect the request unless it can be 563 ;; automatically redirect the request unless it can be
564 ;; confirmed by the user, since this might change the 564 ;; confirmed by the user, since this might change the
565 ;; conditions under which the request was issued. 565 ;; conditions under which the request was issued.
566 (if (member url-http-method '("HEAD" "GET")) 566 (unless (member url-http-method '("HEAD" "GET"))
567 ;; Automatic redirection is ok 567 (setq redirect-uri nil)))
568 nil
569 ;; It is just too big of a pain in the ass to get this
570 ;; prompt all the time. We will just silently lose our
571 ;; data and convert to a GET method.
572 (url-http-debug "Converting `%s' request to `GET' because of REDIRECT(%d)"
573 url-http-method url-http-response-status)
574 (setq url-http-method "GET"
575 url-http-data nil)))
576 (see-other ; 303 568 (see-other ; 303
577 ;; The response to the request can be found under a different 569 ;; The response to the request can be found under a different
578 ;; URI and SHOULD be retrieved using a GET method on that 570 ;; URI and SHOULD be retrieved using a GET method on that
diff --git a/src/ChangeLog b/src/ChangeLog
index 039c225c1f6..4df4455e862 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,18 @@
12011-08-08 Chong Yidong <cyd@stupidchicken.com>
2
3 * ftfont.c (ftfont_pattern_entity): Copy the extras argument to
4 the font entity extracted from the cache (Bug#8109).
5
62011-08-07 Chong Yidong <cyd@stupidchicken.com>
7
8 * composite.c (autocmp_chars): Don't reset point. That is done by
9 restore_point_unwind (Bug#5984).
10
112011-08-07 Juri Linkov <juri@jurta.org>
12
13 * editfns.c (Fformat_time_string): Doc fix, add tag `usage:'
14 to show the arg `TIME' instead of `TIMEVAL'.
15
12011-08-06 Eli Zaretskii <eliz@gnu.org> 162011-08-06 Eli Zaretskii <eliz@gnu.org>
2 17
3 * xdisp.c (set_cursor_from_row): Fix cursor positioning when a 18 * xdisp.c (set_cursor_from_row): Fix cursor positioning when a
diff --git a/src/composite.c b/src/composite.c
index d402d5ad0c4..3308a028042 100644
--- a/src/composite.c
+++ b/src/composite.c
@@ -960,8 +960,6 @@ autocmp_chars (Lisp_Object rule, EMACS_INT charpos, EMACS_INT bytepos, EMACS_INT
960 args[4] = font_object; 960 args[4] = font_object;
961 args[5] = string; 961 args[5] = string;
962 lgstring = safe_call (6, args); 962 lgstring = safe_call (6, args);
963 if (NILP (string))
964 TEMP_SET_PT_BOTH (pt, pt_byte);
965 } 963 }
966 return unbind_to (count, lgstring); 964 return unbind_to (count, lgstring);
967} 965}
diff --git a/src/editfns.c b/src/editfns.c
index 577263c5aea..5eed386afb7 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -1695,7 +1695,9 @@ The modifiers are `E' and `O'. For certain characters X,
1695%EX is a locale's alternative version of %X; 1695%EX is a locale's alternative version of %X;
1696%OX is like %X, but uses the locale's number symbols. 1696%OX is like %X, but uses the locale's number symbols.
1697 1697
1698For example, to produce full ISO 8601 format, use "%Y-%m-%dT%T%z". */) 1698For example, to produce full ISO 8601 format, use "%Y-%m-%dT%T%z".
1699
1700usage: (format-time-string FORMAT-STRING &optional TIME UNIVERSAL) */)
1699 (Lisp_Object format_string, Lisp_Object timeval, Lisp_Object universal) 1701 (Lisp_Object format_string, Lisp_Object timeval, Lisp_Object universal)
1700{ 1702{
1701 time_t value; 1703 time_t value;
diff --git a/src/ftfont.c b/src/ftfont.c
index 4e313a89021..5c98073057c 100644
--- a/src/ftfont.c
+++ b/src/ftfont.c
@@ -214,6 +214,10 @@ ftfont_pattern_entity (FcPattern *p, Lisp_Object extra)
214 214
215 for (i = 0; i < FONT_OBJLIST_INDEX; i++) 215 for (i = 0; i < FONT_OBJLIST_INDEX; i++)
216 ASET (val, i, AREF (entity, i)); 216 ASET (val, i, AREF (entity, i));
217
218 ASET (val, FONT_EXTRA_INDEX, Fcopy_sequence (extra));
219 font_put_extra (val, QCfont_entity, key);
220
217 return val; 221 return val;
218 } 222 }
219 entity = font_make_entity (); 223 entity = font_make_entity ();