aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Verona2013-02-18 00:04:31 +0100
committerJoakim Verona2013-02-18 00:04:31 +0100
commit37bce6bfacc0508a0c5016be3bfca92a81a59fe0 (patch)
treec0967967d0810670d1154c8a5b3a4a3521179660
parentbcd8c34aabe11e72a0ce35f654515e2bb9c2964b (diff)
parenta51e9ff76cc887e0e6df95ff2895d80e0c00e9b9 (diff)
downloademacs-37bce6bfacc0508a0c5016be3bfca92a81a59fe0.tar.gz
emacs-37bce6bfacc0508a0c5016be3bfca92a81a59fe0.zip
auto upstream
-rw-r--r--admin/notes/bzr49
-rw-r--r--etc/CONTRIBUTE3
-rw-r--r--etc/TODO26
-rw-r--r--lisp/ChangeLog29
-rw-r--r--lisp/emacs-lisp/lisp-mode.el12
-rw-r--r--lisp/font-lock.el30
-rw-r--r--lisp/gnus/ChangeLog15
-rw-r--r--lisp/gnus/mml2015.el76
-rw-r--r--lisp/gnus/shr.el8
-rw-r--r--lisp/image-dired.el2
-rw-r--r--lisp/image-mode.el10
-rw-r--r--lisp/menu-bar.el2
-rw-r--r--lisp/net/network-stream.el5
-rw-r--r--lisp/net/rcirc.el3
-rw-r--r--src/ChangeLog24
-rw-r--r--src/callint.c2
-rw-r--r--src/editfns.c4
-rw-r--r--src/fns.c2
-rw-r--r--src/frame.c10
-rw-r--r--src/keyboard.c6
-rw-r--r--src/macros.c10
-rw-r--r--src/msdos.c4
-rw-r--r--src/process.c2
-rw-r--r--src/sheap.c2
-rw-r--r--src/sound.c2
-rw-r--r--src/xdisp.c7
-rw-r--r--src/xml.c2
-rw-r--r--src/xterm.c10
28 files changed, 269 insertions, 88 deletions
diff --git a/admin/notes/bzr b/admin/notes/bzr
index cdcfa7e7e3d..f35ff95f9d6 100644
--- a/admin/notes/bzr
+++ b/admin/notes/bzr
@@ -267,3 +267,52 @@ For example, on RHEL6 I needed:
267 yum --enablerepo=epel install python-simpletal 267 yum --enablerepo=epel install python-simpletal
268 268
269Then point your web-browser to http://127.0.0.1:8080/ . 269Then point your web-browser to http://127.0.0.1:8080/ .
270
271* Bisecting
272
273This is a semi-automated way to find the revision that introduced a bug.
274
275First, get the bzr bisect plugin if you do not have it already:
276
277 cd ~/.bazaar/plugins
278 bzr branch lp:bzr-bisect bisect
279
280`bzr help bisect' should work now.
281
282It's probably simplest to make a new copy of the branch to work in
283from this point onwards.
284
285Identify the last known "good" revision where the relevant issue is
286NOT present (e.g. maybe Emacs 24.1). Let's say this is revision 1000.
287
288 bzr bisect start
289 bzr bisect no -r 1000
290
291At this point, bzr will switch to the mid-point of revision 1000 and
292the current revision. If you know that the issue was definitely
293present in some specific revision (say 2000), you can use:
294
295 bzr bisect yes -r 2000
296
297Now bzr switches to revision 1500.
298
299Now test whether the issue is present. You might need to rebuild
300Emacs to do this, or if you know the problem is in a specific Lisp
301file, you might be able to get away with just loading that one file in
302current Emacs.
303
304If the issue is present, use
305
306 bzr bisect yes
307
308If it is not, use
309
310 bzr bisect no
311
312Repeat until you zero-in on the specific revision.
313
314When finished, use
315
316 bzr bisect reset
317
318or simply delete the entire branch if you created it just for this.
diff --git a/etc/CONTRIBUTE b/etc/CONTRIBUTE
index ee51d5456cc..3ccd180aa0c 100644
--- a/etc/CONTRIBUTE
+++ b/etc/CONTRIBUTE
@@ -22,7 +22,8 @@ inclusion in a future version of Emacs (see below).
22 22
23If you don't feel up to hacking Emacs, there are many other ways to 23If you don't feel up to hacking Emacs, there are many other ways to
24help. You can answer questions on the mailing lists, write 24help. You can answer questions on the mailing lists, write
25documentation, find and report bugs, contribute to the Emacs web 25documentation, find and report bugs, check if existing bug reports
26are fixed in newer versions of Emacs, contribute to the Emacs web
26pages, or develop a package that works with Emacs. 27pages, or develop a package that works with Emacs.
27 28
28Here are some style and legal conventions for contributors to Emacs: 29Here are some style and legal conventions for contributors to Emacs:
diff --git a/etc/TODO b/etc/TODO
index 912d0746849..b28888b7484 100644
--- a/etc/TODO
+++ b/etc/TODO
@@ -7,9 +7,24 @@ See the end of the file for license conditions.
7If you are ready to start working on any of these TODO items, we 7If you are ready to start working on any of these TODO items, we
8appreciate your help; please write to emacs-devel@gnu.org so we can be 8appreciate your help; please write to emacs-devel@gnu.org so we can be
9aware that the problem is being addressed, and talk with you how to do 9aware that the problem is being addressed, and talk with you how to do
10it best. Since Emacs is an FSF-copyrighted package, please be 10it best. Also to check that it hasn't been done already, since we
11prepared to sign legal papers to transfer the copyright on your work 11don't always remember to update this file! It is best to consult
12to the FSF. 12the latest version of this file in the Emacs source code repository.
13
14Since Emacs is an FSF-copyrighted package, please be prepared to sign
15legal papers to transfer the copyright on your work to the FSF.
16For more details on this, see the section "Copyright Assignment"
17in etc/CONTRIBUTE. That file also contains some more practical
18details about getting involved.
19
20As well as the issues listed here, there are bug reports at
21<http://debbugs.gnu.org>. Bugs tagged "easy" ought to be suitable for
22beginners to work on, but unfortunately we are not very good at using
23this tag. Bugs tagged "help" are ones where assistance is required,
24but may be difficult to fix. Bugs with severity "important" or higher
25are the ones we consider more important, but these also may be
26difficult to fix. Bugs with severity "minor" may be simpler, but this
27is not always true.
13 28
14* Tentative plan for Emacs-24 29* Tentative plan for Emacs-24
15 30
@@ -61,7 +76,7 @@ to use it.
61** Convert all defvars with leading `*' in the doc-strings into defcustoms 76** Convert all defvars with leading `*' in the doc-strings into defcustoms
62of appropriate :type and :group. 77of appropriate :type and :group.
63 78
64** Remove any leading `*'s from defcustom doc-strings. 79** Remove any leading `*'s from defcustom doc-strings. [done?]
65 80
66** Remove unnecessary autoload cookies from defcustoms. 81** Remove unnecessary autoload cookies from defcustoms.
67This needs a bit of care, since often people have become used to 82This needs a bit of care, since often people have become used to
@@ -267,6 +282,9 @@ specified filters, specified timers, and specified hooks.
267** Remove the limitation that window and frame widths and heights can 282** Remove the limitation that window and frame widths and heights can
268 be only full columns/lines. 283 be only full columns/lines.
269 284
285** The GNUstep port needs some serious attention, ideally from someone
286familiar with GNUstep and Objective C.
287
270* Other features we would like: 288* Other features we would like:
271 289
272** Allow frames(terminals) created by emacsclient to inherit their environment 290** Allow frames(terminals) created by emacsclient to inherit their environment
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 66c18a25803..3d5308875de 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,28 @@
12013-02-17 Didier Verna <didier@didierverna.net>
2
3 * net/network-stream.el (network-stream-open-starttls):
4 Check that response to the starttls-command is non-nil. (Bug#13706)
5
62013-02-17 Stefan Monnier <monnier@iro.umontreal.ca>
7
8 * font-lock.el (lisp-font-lock-keywords-1, lisp-font-lock-keywords-2):
9 Don't assume all identifier chars have syntax word.
10 * emacs-lisp/lisp-mode.el (lisp-mode-variables):
11 Remove bar-not-symbol. Adjust callers.
12 (lisp-mode-variables): Don't set a font-lock-syntax-table.
13
142013-02-17 Leo Liu <sdl.web@gmail.com>
15
16 * net/rcirc.el (rcirc-keepalive): Fix invalid timer error.
17
182013-02-17 Glenn Morris <rgm@gnu.org>
19
20 * menu-bar.el (menu-bar-tools-menu): Fix case of EDE entry.
21
22 * image-mode.el (image-mode-map): Add image-dired menu entry.
23
24 * image-dired.el (tumme): Make this alias obsolete.
25
12013-02-16 Glenn Morris <rgm@gnu.org> 262013-02-16 Glenn Morris <rgm@gnu.org>
2 27
3 * image.el (image-animated-types): Remove. 28 * image.el (image-animated-types): Remove.
@@ -20,8 +45,8 @@
20 45
21 * net/tramp-compat.el (top): Require 'trampver. 46 * net/tramp-compat.el (top): Require 'trampver.
22 47
23 * net/tramp-sh.el (tramp-remote-process-environment): Set 48 * net/tramp-sh.el (tramp-remote-process-environment):
24 tramp-autoload cookie. 49 Set tramp-autoload cookie.
25 50
262013-02-16 Kevin Ryde <user42@zip.com.au> 512013-02-16 Kevin Ryde <user42@zip.com.au>
27 52
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index cd60d80b056..4ebaa0a49d5 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -187,14 +187,12 @@ It has `lisp-mode-abbrev-table' as its parent."
187 font-lock-string-face)))) 187 font-lock-string-face))))
188 font-lock-comment-face)) 188 font-lock-comment-face))
189 189
190(defun lisp-mode-variables (&optional lisp-syntax keywords-case-insensitive 190(defun lisp-mode-variables (&optional lisp-syntax keywords-case-insensitive)
191 bar-not-symbol)
192 "Common initialization routine for lisp modes. 191 "Common initialization routine for lisp modes.
193The LISP-SYNTAX argument is used by code in inf-lisp.el and is 192The LISP-SYNTAX argument is used by code in inf-lisp.el and is
194\(uselessly) passed from pp.el, chistory.el, gnus-kill.el and 193\(uselessly) passed from pp.el, chistory.el, gnus-kill.el and
195score-mode.el. KEYWORDS-CASE-INSENSITIVE non-nil means that for 194score-mode.el. KEYWORDS-CASE-INSENSITIVE non-nil means that for
196font-lock keywords will not be case sensitive. BAR-NOT-SYMBOL 195font-lock keywords will not be case sensitive."
197non-nil means that | is not a symbol character."
198 (when lisp-syntax 196 (when lisp-syntax
199 (set-syntax-table lisp-mode-syntax-table)) 197 (set-syntax-table lisp-mode-syntax-table))
200 (setq-local paragraph-ignore-fill-prefix t) 198 (setq-local paragraph-ignore-fill-prefix t)
@@ -228,9 +226,7 @@ non-nil means that | is not a symbol character."
228 (setq font-lock-defaults 226 (setq font-lock-defaults
229 `((lisp-font-lock-keywords 227 `((lisp-font-lock-keywords
230 lisp-font-lock-keywords-1 lisp-font-lock-keywords-2) 228 lisp-font-lock-keywords-1 lisp-font-lock-keywords-2)
231 nil ,keywords-case-insensitive 229 nil ,keywords-case-insensitive nil nil
232 ((,(concat "+-*/.<>=!?$%_&~^:@" (if bar-not-symbol "" "|")) . "w"))
233 nil
234 (font-lock-mark-block-function . mark-defun) 230 (font-lock-mark-block-function . mark-defun)
235 (font-lock-syntactic-face-function 231 (font-lock-syntactic-face-function
236 . lisp-font-lock-syntactic-face-function)))) 232 . lisp-font-lock-syntactic-face-function))))
@@ -553,7 +549,7 @@ or to switch back to an existing one.
553 549
554Entry to this mode calls the value of `lisp-mode-hook' 550Entry to this mode calls the value of `lisp-mode-hook'
555if that value is non-nil." 551if that value is non-nil."
556 (lisp-mode-variables nil t t) 552 (lisp-mode-variables nil t)
557 (setq-local find-tag-default-function 'lisp-find-tag-default) 553 (setq-local find-tag-default-function 'lisp-find-tag-default)
558 (setq-local comment-start-skip 554 (setq-local comment-start-skip
559 "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\)\\(;+\\|#|\\) *") 555 "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\)\\(;+\\|#|\\) *")
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index 6e3476ac9a5..e5ce4db171b 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -2259,10 +2259,10 @@ in which C preprocessor directives are used. e.g. `asm-mode' and
2259 "\\(const\\(ant\\)?\\|custom\\|varalias\\|face\\|parameter\\|var\\(?:-local\\)?\\)\\|" 2259 "\\(const\\(ant\\)?\\|custom\\|varalias\\|face\\|parameter\\|var\\(?:-local\\)?\\)\\|"
2260 ;; Structure declarations. 2260 ;; Structure declarations.
2261 "\\(class\\|group\\|theme\\|package\\|struct\\|type\\)" 2261 "\\(class\\|group\\|theme\\|package\\|struct\\|type\\)"
2262 "\\)\\)\\>" 2262 "\\)\\)\\_>"
2263 ;; Any whitespace and defined object. 2263 ;; Any whitespace and defined object.
2264 "[ \t'\(]*" 2264 "[ \t'\(]*"
2265 "\\(setf[ \t]+\\sw+\\|\\sw+\\)?") 2265 "\\(setf[ \t]+\\(?:\\sw\\|\\s_\\)+\\|\\(?:\\sw\\|\\s_\\)+\\)?")
2266 (1 font-lock-keyword-face) 2266 (1 font-lock-keyword-face)
2267 (9 (cond ((match-beginning 3) font-lock-function-name-face) 2267 (9 (cond ((match-beginning 3) font-lock-function-name-face)
2268 ((match-beginning 6) font-lock-variable-name-face) 2268 ((match-beginning 6) font-lock-variable-name-face)
@@ -2299,7 +2299,7 @@ in which C preprocessor directives are used. e.g. `asm-mode' and
2299 "with-silent-modifications" "with-syntax-table" 2299 "with-silent-modifications" "with-syntax-table"
2300 "with-temp-buffer" "with-temp-file" "with-temp-message" 2300 "with-temp-buffer" "with-temp-file" "with-temp-message"
2301 "with-timeout" "with-timeout-handler" "with-wrapper-hook") t) 2301 "with-timeout" "with-timeout-handler" "with-wrapper-hook") t)
2302 "\\>") 2302 "\\_>")
2303 . 1) 2303 . 1)
2304 ;; Control structures. Common Lisp forms. 2304 ;; Control structures. Common Lisp forms.
2305 (,(concat 2305 (,(concat
@@ -2320,23 +2320,25 @@ in which C preprocessor directives are used. e.g. `asm-mode' and
2320 "with-open-stream" "with-output-to-string" 2320 "with-open-stream" "with-output-to-string"
2321 "with-package-iterator" "with-simple-restart" 2321 "with-package-iterator" "with-simple-restart"
2322 "with-slots" "with-standard-io-syntax") t) 2322 "with-slots" "with-standard-io-syntax") t)
2323 "\\>") 2323 "\\_>")
2324 . 1) 2324 . 1)
2325 ;; Exit/Feature symbols as constants. 2325 ;; Exit/Feature symbols as constants.
2326 (,(concat "(\\(catch\\|throw\\|featurep\\|provide\\|require\\)\\>" 2326 (,(concat "(\\(catch\\|throw\\|featurep\\|provide\\|require\\)\\>"
2327 "[ \t']*\\(\\sw+\\)?") 2327 "[ \t']*\\(\\(?:\\sw\\|\\s_\\)+\\)?")
2328 (1 font-lock-keyword-face) 2328 (1 font-lock-keyword-face)
2329 (2 font-lock-constant-face nil t)) 2329 (2 font-lock-constant-face nil t))
2330 ;; Erroneous structures. 2330 ;; Erroneous structures.
2331 ("(\\(abort\\|assert\\|warn\\|check-type\\|cerror\\|error\\|signal\\)\\>" 1 font-lock-warning-face) 2331 ("(\\(abort\\|assert\\|warn\\|check-type\\|cerror\\|error\\|signal\\)\\>" 1 font-lock-warning-face)
2332 ;; Words inside \\[] tend to be for `substitute-command-keys'. 2332 ;; Words inside \\[] tend to be for `substitute-command-keys'.
2333 ("\\\\\\\\\\[\\(\\sw+\\)\\]" 1 font-lock-constant-face prepend) 2333 ("\\\\\\\\\\[\\(\\(?:\\sw\\|\\s_\\)+\\)\\]"
2334 (1 font-lock-constant-face prepend))
2334 ;; Words inside `' tend to be symbol names. 2335 ;; Words inside `' tend to be symbol names.
2335 ("`\\(\\sw\\sw+\\)'" 1 font-lock-constant-face prepend) 2336 ("`\\(\\(?:\\sw\\|\\s_\\)\\(?:\\sw\\|\\s_\\)+\\)'"
2337 (1 font-lock-constant-face prepend))
2336 ;; Constant values. 2338 ;; Constant values.
2337 ("\\<:\\sw+\\>" 0 font-lock-builtin-face) 2339 ("\\<:\\(?:\\sw\\|\\s_\\)+\\>" 0 font-lock-builtin-face)
2338 ;; ELisp and CLisp `&' keywords as types. 2340 ;; ELisp and CLisp `&' keywords as types.
2339 ("\\<\\&\\sw+\\>" . font-lock-type-face) 2341 ("\\<\\&\\(?:\\sw\\|\\s_\\)+\\>" . font-lock-type-face)
2340 ;; ELisp regexp grouping constructs 2342 ;; ELisp regexp grouping constructs
2341 ((lambda (bound) 2343 ((lambda (bound)
2342 (catch 'found 2344 (catch 'found
@@ -2353,11 +2355,11 @@ in which C preprocessor directives are used. e.g. `asm-mode' and
2353 (throw 'found t))))))) 2355 (throw 'found t)))))))
2354 (1 'font-lock-regexp-grouping-backslash prepend) 2356 (1 'font-lock-regexp-grouping-backslash prepend)
2355 (3 'font-lock-regexp-grouping-construct prepend)) 2357 (3 'font-lock-regexp-grouping-construct prepend))
2356;;; This is too general -- rms. 2358 ;; This is too general -- rms.
2357;;; A user complained that he has functions whose names start with `do' 2359 ;; A user complained that he has functions whose names start with `do'
2358;;; and that they get the wrong color. 2360 ;; and that they get the wrong color.
2359;;; ;; CL `with-' and `do-' constructs 2361 ;; ;; CL `with-' and `do-' constructs
2360;;; ("(\\(\\(do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)" 1 font-lock-keyword-face) 2362 ;;("(\\(\\(do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)" 1 font-lock-keyword-face)
2361 ))) 2363 )))
2362 "Gaudy level highlighting for Lisp modes.") 2364 "Gaudy level highlighting for Lisp modes.")
2363 2365
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 5030da87672..8de9e89a23d 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,18 @@
12013-02-17 Daiki Ueno <ueno@gnu.org>
2
3 * mml2015.el (epg-key-user-id-list, epg-user-id-string)
4 (epg-user-id-validity): Autoload.
5 (mml2015-epg-check-user-id): New function.
6 (mml2015-epg-check-sub-key): New function split from
7 mml2015-epg-find-usable-key.
8 (mml2015-epg-find-usable-key): Accept context, name, usage, and
9 optional name-is-key-id, to handle the case when user-id is unusable.
10 Reported by Łukasz Stelmach <stlman@poczta.fm>.
11
122013-02-17 Glenn Morris <rgm@gnu.org>
13
14 * shr.el (shr-put-image): Use image-multi-frame-p if available.
15
12013-02-16 Glenn Morris <rgm@gnu.org> 162013-02-16 Glenn Morris <rgm@gnu.org>
2 17
3 * shr.el (shr-put-image): Only animate images that specify a delay. 18 * shr.el (shr-put-image): Only animate images that specify a delay.
diff --git a/lisp/gnus/mml2015.el b/lisp/gnus/mml2015.el
index 275a4867e85..b20c02aa26f 100644
--- a/lisp/gnus/mml2015.el
+++ b/lisp/gnus/mml2015.el
@@ -757,6 +757,9 @@ If set, it overrides the setting of `mml2015-sign-with-sender'."
757(autoload 'epg-sub-key-fingerprint "epg") 757(autoload 'epg-sub-key-fingerprint "epg")
758(autoload 'epg-signature-key-id "epg") 758(autoload 'epg-signature-key-id "epg")
759(autoload 'epg-signature-to-string "epg") 759(autoload 'epg-signature-to-string "epg")
760(autoload 'epg-key-user-id-list "epg")
761(autoload 'epg-user-id-string "epg")
762(autoload 'epg-user-id-validity "epg")
760(autoload 'epg-configuration "epg-config") 763(autoload 'epg-configuration "epg-config")
761(autoload 'epg-expand-group "epg-config") 764(autoload 'epg-expand-group "epg-config")
762(autoload 'epa-select-keys "epa") 765(autoload 'epa-select-keys "epa")
@@ -786,21 +789,53 @@ If set, it overrides the setting of `mml2015-sign-with-sender'."
786 (cons password-cache-key-id mml2015-epg-secret-key-id-list)) 789 (cons password-cache-key-id mml2015-epg-secret-key-id-list))
787 (copy-sequence passphrase))))) 790 (copy-sequence passphrase)))))
788 791
789(defun mml2015-epg-find-usable-key (keys usage) 792(defun mml2015-epg-check-user-id (key recipient)
790 (catch 'found 793 (let ((pointer (epg-key-user-id-list key))
794 result)
795 (while pointer
796 (if (and (equal (car (mail-header-parse-address
797 (epg-user-id-string (car pointer))))
798 (car (mail-header-parse-address
799 recipient)))
800 (not (memq (epg-user-id-validity (car pointer))
801 '(revoked expired))))
802 (setq result t
803 pointer nil)
804 (setq pointer (cdr pointer))))
805 result))
806
807(defun mml2015-epg-check-sub-key (key usage)
808 (let ((pointer (epg-key-sub-key-list key))
809 result)
810 ;; The primary key will be marked as disabled, when the entire
811 ;; key is disabled (see 12 Field, Format of colon listings, in
812 ;; gnupg/doc/DETAILS)
813 (unless (memq 'disabled (epg-sub-key-capability (car pointer)))
814 (while pointer
815 (if (and (memq usage (epg-sub-key-capability (car pointer)))
816 (not (memq (epg-sub-key-validity (car pointer))
817 '(revoked expired))))
818 (setq result t
819 pointer nil)
820 (setq pointer (cdr pointer)))))
821 result))
822
823(defun mml2015-epg-find-usable-key (context name usage
824 &optional name-is-key-id)
825 (let ((keys (epg-list-keys context name))
826 key)
791 (while keys 827 (while keys
792 (let ((pointer (epg-key-sub-key-list (car keys)))) 828 (if (and (or name-is-key-id
793 ;; The primary key will be marked as disabled, when the entire 829 ;; Non email user-id can be supplied through
794 ;; key is disabled (see 12 Field, Format of colon listings, in 830 ;; mml2015-signers if mml2015-encrypt-to-self is set.
795 ;; gnupg/doc/DETAILS) 831 ;; Treat it as valid, as it is user's intention.
796 (unless (memq 'disabled (epg-sub-key-capability (car pointer))) 832 (not (string-match "\\`<" name))
797 (while pointer 833 (mml2015-epg-check-user-id (car keys) name))
798 (if (and (memq usage (epg-sub-key-capability (car pointer))) 834 (mml2015-epg-check-sub-key (car keys) usage))
799 (not (memq (epg-sub-key-validity (car pointer)) 835 (setq key (car keys)
800 '(revoked expired)))) 836 keys nil)
801 (throw 'found (car keys))) 837 (setq keys (cdr keys))))
802 (setq pointer (cdr pointer))))) 838 key))
803 (setq keys (cdr keys)))))
804 839
805;; XXX: since gpg --list-secret-keys does not return validity of each 840;; XXX: since gpg --list-secret-keys does not return validity of each
806;; key, `mml2015-epg-find-usable-key' defined above is not enough for 841;; key, `mml2015-epg-find-usable-key' defined above is not enough for
@@ -811,10 +846,12 @@ If set, it overrides the setting of `mml2015-sign-with-sender'."
811 secret-key) 846 secret-key)
812 (while (and (not secret-key) secret-keys) 847 (while (and (not secret-key) secret-keys)
813 (if (mml2015-epg-find-usable-key 848 (if (mml2015-epg-find-usable-key
814 (epg-list-keys context (epg-sub-key-fingerprint 849 context
815 (car (epg-key-sub-key-list 850 (epg-sub-key-fingerprint
816 (car secret-keys))))) 851 (car (epg-key-sub-key-list
817 usage) 852 (car secret-keys))))
853 usage
854 t)
818 (setq secret-key (car secret-keys) 855 (setq secret-key (car secret-keys)
819 secret-keys nil) 856 secret-keys nil)
820 (setq secret-keys (cdr secret-keys)))) 857 (setq secret-keys (cdr secret-keys))))
@@ -1115,8 +1152,7 @@ If no one is selected, symmetric encryption will be performed. "
1115 (mapcar 1152 (mapcar
1116 (lambda (recipient) 1153 (lambda (recipient)
1117 (setq recipient-key (mml2015-epg-find-usable-key 1154 (setq recipient-key (mml2015-epg-find-usable-key
1118 (epg-list-keys context recipient) 1155 context recipient 'encrypt))
1119 'encrypt))
1120 (unless (or recipient-key 1156 (unless (or recipient-key
1121 (y-or-n-p 1157 (y-or-n-p
1122 (format "No public key for %s; skip it? " 1158 (format "No public key for %s; skip it? "
diff --git a/lisp/gnus/shr.el b/lisp/gnus/shr.el
index 1294ca7cd69..886f4da53dc 100644
--- a/lisp/gnus/shr.el
+++ b/lisp/gnus/shr.el
@@ -615,8 +615,12 @@ size, and full-buffer size."
615 (overlay-put overlay 'face 'default))) 615 (overlay-put overlay 'face 'default)))
616 (insert-image image (or alt "*"))) 616 (insert-image image (or alt "*")))
617 (put-text-property start (point) 'image-size size) 617 (put-text-property start (point) 'image-size size)
618 ;; Only animate multi-frame things that specify a delay. FIXME? 618 (when (if (fboundp 'image-multi-frame-p)
619 (when (cdr (image-animated-p image)) 619 ;; Only animate multi-frame things that specify a
620 ;; delay; eg animated gifs as opposed to
621 ;; multi-page tiffs. FIXME?
622 (cdr (image-multi-frame-p image))
623 (image-animated-p image))
620 (image-animate image nil 60))) 624 (image-animate image nil 60)))
621 image) 625 image)
622 (insert alt))) 626 (insert alt)))
diff --git a/lisp/image-dired.el b/lisp/image-dired.el
index 354e16b0bfb..bbb41d49a1d 100644
--- a/lisp/image-dired.el
+++ b/lisp/image-dired.el
@@ -883,7 +883,7 @@ displayed."
883(defalias 'image-dired 'image-dired-show-all-from-dir) 883(defalias 'image-dired 'image-dired-show-all-from-dir)
884 884
885;;;###autoload 885;;;###autoload
886(defalias 'tumme 'image-dired-show-all-from-dir) 886(define-obsolete-function-alias 'tumme 'image-dired "24.4")
887 887
888(defun image-dired-sane-db-file () 888(defun image-dired-sane-db-file ()
889 "Check if `image-dired-db-file' exists. 889 "Check if `image-dired-db-file' exists.
diff --git a/lisp/image-mode.el b/lisp/image-mode.el
index 52367811341..7787a26cc08 100644
--- a/lisp/image-mode.el
+++ b/lisp/image-mode.el
@@ -376,9 +376,15 @@ call."
376 :visible (eq image-type 'imagemagick) 376 :visible (eq image-type 'imagemagick)
377 :help "Rotate the image"] 377 :help "Rotate the image"]
378 "--" 378 "--"
379 ["Next Image" image-next-file :active t 379 ["Show Thumbnails"
380 (lambda ()
381 (interactive)
382 (image-dired default-directory))
383 :active default-directory
384 :help "Show thumbnails for all images in this directory"]
385 ["Next Image" image-next-file :active buffer-file-name
380 :help "Move to next image in this directory"] 386 :help "Move to next image in this directory"]
381 ["Previous Image" image-previous-file :active t 387 ["Previous Image" image-previous-file :active buffer-file-name
382 :help "Move to previous image in this directory"] 388 :help "Move to previous image in this directory"]
383 "--" 389 "--"
384 ["Animate Image" image-toggle-animation :style toggle 390 ["Animate Image" image-toggle-animation :style toggle
diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el
index 60f2bc2999f..be459fe38d5 100644
--- a/lisp/menu-bar.el
+++ b/lisp/menu-bar.el
@@ -1518,7 +1518,7 @@ mail status in mode line"))
1518 :button (:toggle . (bound-and-true-p semantic-mode)))) 1518 :button (:toggle . (bound-and-true-p semantic-mode))))
1519 1519
1520 (bindings--define-key menu [ede] 1520 (bindings--define-key menu [ede]
1521 '(menu-item "Project support (EDE)" 1521 '(menu-item "Project Support (EDE)"
1522 global-ede-mode 1522 global-ede-mode
1523 :help "Toggle the Emacs Development Environment (Global EDE mode)" 1523 :help "Toggle the Emacs Development Environment (Global EDE mode)"
1524 :button (:toggle . (bound-and-true-p global-ede-mode)))) 1524 :button (:toggle . (bound-and-true-p global-ede-mode))))
diff --git a/lisp/net/network-stream.el b/lisp/net/network-stream.el
index 8cf9ec67e53..fd21997ba28 100644
--- a/lisp/net/network-stream.el
+++ b/lisp/net/network-stream.el
@@ -262,8 +262,9 @@ STARTTLS upgrades even if Emacs doesn't have built-in TLS functionality.
262 ;; EHLO for SMTP. 262 ;; EHLO for SMTP.
263 (when (plist-get parameters :always-query-capabilities) 263 (when (plist-get parameters :always-query-capabilities)
264 (network-stream-command stream capability-command eo-capa))) 264 (network-stream-command stream capability-command eo-capa)))
265 (when (string-match success-string 265 (when (let ((response
266 (network-stream-command stream starttls-command eoc)) 266 (network-stream-command stream starttls-command eoc)))
267 (and response (string-match success-string response)))
267 ;; The server said it was OK to begin STARTTLS negotiations. 268 ;; The server said it was OK to begin STARTTLS negotiations.
268 (if builtin-starttls 269 (if builtin-starttls
269 (let ((cert (network-stream-certificate host service parameters))) 270 (let ((cert (network-stream-certificate host service parameters)))
diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el
index 086043c2b4a..7c70ded3eaa 100644
--- a/lisp/net/rcirc.el
+++ b/lisp/net/rcirc.el
@@ -625,7 +625,8 @@ last ping."
625 (rcirc-float-time)))))) 625 (rcirc-float-time))))))
626 (rcirc-process-list)) 626 (rcirc-process-list))
627 ;; no processes, clean up timer 627 ;; no processes, clean up timer
628 (cancel-timer rcirc-keepalive-timer) 628 (when (timerp rcirc-keepalive-timer)
629 (cancel-timer rcirc-keepalive-timer))
629 (setq rcirc-keepalive-timer nil))) 630 (setq rcirc-keepalive-timer nil)))
630 631
631(defun rcirc-handler-ctcp-KEEPALIVE (process target sender message) 632(defun rcirc-handler-ctcp-KEEPALIVE (process target sender message)
diff --git a/src/ChangeLog b/src/ChangeLog
index 4d39a32e883..e945e221593 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,27 @@
12013-02-17 Eli Zaretskii <eliz@gnu.org>
2
3 * xdisp.c (x_draw_vertical_border): For a window that is neither
4 the leftmost nor the rightmost, redraw both the left and the right
5 vertical borders. (Bug#13723)
6
72013-02-17 Stefan Monnier <monnier@iro.umontreal.ca>
8
9 * xml.c (init_libxml2_functions):
10 * sound.c (sound_warning):
11 * sheap.c (report_sheap_usage):
12 * process.c (wait_reading_process_output):
13 * msdos.c (XMenuActivate):
14 * macros.c (Fstart_kbd_macro, Fend_kbd_macro):
15 * keyboard.c (top_level_1):
16 * editfns.c (Fmessage, Fmessage_box):
17 * callint.c (Fcall_interactively):
18 * fns.c (Fyes_or_no_p): Prefer `message1' over `message'.
19
202013-02-17 Jan Djärv <jan.h.d@swipnet.se>
21
22 * xterm.c (syms_of_xterm): Move scroll-bar-adjust-thumb-portion ...
23 * frame.c (syms_of_frame): ... to here.
24
12013-02-16 Eli Zaretskii <eliz@gnu.org> 252013-02-16 Eli Zaretskii <eliz@gnu.org>
2 26
3 * w32.c (sys_chown): Remove unused function. 27 * w32.c (sys_chown): Remove unused function.
diff --git a/src/callint.c b/src/callint.c
index 1a125d3e865..3e295a3b26b 100644
--- a/src/callint.c
+++ b/src/callint.c
@@ -690,7 +690,7 @@ invoke it. If KEYS is omitted or nil, the return value of
690 Lisp_Object str; 690 Lisp_Object str;
691 if (! first) 691 if (! first)
692 { 692 {
693 message ("Please enter a number."); 693 message1 ("Please enter a number.");
694 sit_for (make_number (1), 0, 0); 694 sit_for (make_number (1), 0, 0);
695 } 695 }
696 first = 0; 696 first = 0;
diff --git a/src/editfns.c b/src/editfns.c
index c5cd8b0b725..bee0bcc158d 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -3451,7 +3451,7 @@ usage: (message FORMAT-STRING &rest ARGS) */)
3451 || (STRINGP (args[0]) 3451 || (STRINGP (args[0])
3452 && SBYTES (args[0]) == 0)) 3452 && SBYTES (args[0]) == 0))
3453 { 3453 {
3454 message (0); 3454 message1 (0);
3455 return args[0]; 3455 return args[0];
3456 } 3456 }
3457 else 3457 else
@@ -3477,7 +3477,7 @@ usage: (message-box FORMAT-STRING &rest ARGS) */)
3477{ 3477{
3478 if (NILP (args[0])) 3478 if (NILP (args[0]))
3479 { 3479 {
3480 message (0); 3480 message1 (0);
3481 return Qnil; 3481 return Qnil;
3482 } 3482 }
3483 else 3483 else
diff --git a/src/fns.c b/src/fns.c
index 527976593da..44ddf340856 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -2485,7 +2485,7 @@ is nil, and `use-dialog-box' is non-nil. */)
2485 2485
2486 Fding (Qnil); 2486 Fding (Qnil);
2487 Fdiscard_input (); 2487 Fdiscard_input ();
2488 message ("Please answer yes or no."); 2488 message1 ("Please answer yes or no.");
2489 Fsleep_for (make_number (2), Qnil); 2489 Fsleep_for (make_number (2), Qnil);
2490 } 2490 }
2491} 2491}
diff --git a/src/frame.c b/src/frame.c
index 9c26af819bc..0fa821682f3 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -4233,6 +4233,16 @@ Setting this variable does not affect existing frames, only new ones. */);
4233 Vdefault_frame_scroll_bars = Qnil; 4233 Vdefault_frame_scroll_bars = Qnil;
4234#endif 4234#endif
4235 4235
4236 DEFVAR_BOOL ("scroll-bar-adjust-thumb-portion",
4237 scroll_bar_adjust_thumb_portion_p,
4238 doc: /* Adjust thumb for overscrolling for Gtk+ and MOTIF.
4239Non-nil means adjust the thumb in the scroll bar so it can be dragged downwards
4240even if the end of the buffer is shown (i.e. overscrolling).
4241Set to nil if you want the thumb to be at the bottom when the end of the buffer
4242is shown. Also, the thumb fills the whole scroll bar when the entire buffer
4243is visible. In this case you can not overscroll. */);
4244 scroll_bar_adjust_thumb_portion_p = 1;
4245
4236 DEFVAR_LISP ("terminal-frame", Vterminal_frame, 4246 DEFVAR_LISP ("terminal-frame", Vterminal_frame,
4237 doc: /* The initial frame-object, which represents Emacs's stdout. */); 4247 doc: /* The initial frame-object, which represents Emacs's stdout. */);
4238 4248
diff --git a/src/keyboard.c b/src/keyboard.c
index 0d60dc8929d..3c00e017498 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -1188,13 +1188,13 @@ top_level_2 (void)
1188static Lisp_Object 1188static Lisp_Object
1189top_level_1 (Lisp_Object ignore) 1189top_level_1 (Lisp_Object ignore)
1190{ 1190{
1191 /* On entry to the outer level, run the startup file */ 1191 /* On entry to the outer level, run the startup file. */
1192 if (!NILP (Vtop_level)) 1192 if (!NILP (Vtop_level))
1193 internal_condition_case (top_level_2, Qerror, cmd_error); 1193 internal_condition_case (top_level_2, Qerror, cmd_error);
1194 else if (!NILP (Vpurify_flag)) 1194 else if (!NILP (Vpurify_flag))
1195 message ("Bare impure Emacs (standard Lisp code not loaded)"); 1195 message1 ("Bare impure Emacs (standard Lisp code not loaded)");
1196 else 1196 else
1197 message ("Bare Emacs (standard Lisp code not loaded)"); 1197 message1 ("Bare Emacs (standard Lisp code not loaded)");
1198 return Qnil; 1198 return Qnil;
1199} 1199}
1200 1200
diff --git a/src/macros.c b/src/macros.c
index 1eef9b678f4..0dcfbe5532c 100644
--- a/src/macros.c
+++ b/src/macros.c
@@ -78,7 +78,7 @@ macro before appending to it. */)
78 } 78 }
79 current_kboard->kbd_macro_ptr = current_kboard->kbd_macro_buffer; 79 current_kboard->kbd_macro_ptr = current_kboard->kbd_macro_buffer;
80 current_kboard->kbd_macro_end = current_kboard->kbd_macro_buffer; 80 current_kboard->kbd_macro_end = current_kboard->kbd_macro_buffer;
81 message ("Defining kbd macro..."); 81 message1 ("Defining kbd macro...");
82 } 82 }
83 else 83 else
84 { 84 {
@@ -125,7 +125,7 @@ macro before appending to it. */)
125 Fexecute_kbd_macro (KVAR (current_kboard, Vlast_kbd_macro), 125 Fexecute_kbd_macro (KVAR (current_kboard, Vlast_kbd_macro),
126 make_number (1), Qnil); 126 make_number (1), Qnil);
127 127
128 message ("Appending to kbd macro..."); 128 message1 ("Appending to kbd macro...");
129 } 129 }
130 kset_defining_kbd_macro (current_kboard, Qt); 130 kset_defining_kbd_macro (current_kboard, Qt);
131 131
@@ -172,21 +172,21 @@ each iteration of the macro. Iteration stops if LOOPFUNC returns nil. */)
172 if (!NILP (KVAR (current_kboard, defining_kbd_macro))) 172 if (!NILP (KVAR (current_kboard, defining_kbd_macro)))
173 { 173 {
174 end_kbd_macro (); 174 end_kbd_macro ();
175 message ("Keyboard macro defined"); 175 message1 ("Keyboard macro defined");
176 } 176 }
177 177
178 if (XFASTINT (repeat) == 0) 178 if (XFASTINT (repeat) == 0)
179 Fexecute_kbd_macro (KVAR (current_kboard, Vlast_kbd_macro), repeat, loopfunc); 179 Fexecute_kbd_macro (KVAR (current_kboard, Vlast_kbd_macro), repeat, loopfunc);
180 else if (XINT (repeat) > 1) 180 else if (XINT (repeat) > 1)
181 { 181 {
182 XSETINT (repeat, XINT (repeat)-1); 182 XSETINT (repeat, XINT (repeat) - 1);
183 Fexecute_kbd_macro (KVAR (current_kboard, Vlast_kbd_macro), 183 Fexecute_kbd_macro (KVAR (current_kboard, Vlast_kbd_macro),
184 repeat, loopfunc); 184 repeat, loopfunc);
185 } 185 }
186 return Qnil; 186 return Qnil;
187} 187}
188 188
189/* Store character c into kbd macro being defined */ 189/* Store character c into kbd macro being defined. */
190 190
191void 191void
192store_kbd_macro_char (Lisp_Object c) 192store_kbd_macro_char (Lisp_Object c)
diff --git a/src/msdos.c b/src/msdos.c
index 527a75c8c2f..ac8c90455d7 100644
--- a/src/msdos.c
+++ b/src/msdos.c
@@ -3281,10 +3281,10 @@ XMenuActivate (Display *foo, XMenu *menu, int *pane, int *selidx,
3281 erasing it works correctly... */ 3281 erasing it works correctly... */
3282 if (! NILP (saved_echo_area_message)) 3282 if (! NILP (saved_echo_area_message))
3283 message_with_string ("%s", saved_echo_area_message, 0); 3283 message_with_string ("%s", saved_echo_area_message, 0);
3284 message (0); 3284 message1 (0);
3285 while (statecount--) 3285 while (statecount--)
3286 xfree (state[statecount].screen_behind); 3286 xfree (state[statecount].screen_behind);
3287 IT_display_cursor (1); /* turn cursor back on */ 3287 IT_display_cursor (1); /* Turn cursor back on. */
3288 /* Clean up any mouse events that are waiting inside Emacs event queue. 3288 /* Clean up any mouse events that are waiting inside Emacs event queue.
3289 These events are likely to be generated before the menu was even 3289 These events are likely to be generated before the menu was even
3290 displayed, probably because the user pressed and released the button 3290 displayed, probably because the user pressed and released the button
diff --git a/src/process.c b/src/process.c
index 9d6e8c097a1..5b15ade1122 100644
--- a/src/process.c
+++ b/src/process.c
@@ -4218,7 +4218,7 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd,
4218 if (time_limit == 0 && nsecs == 0 && wait_proc && !NILP (Vinhibit_quit) 4218 if (time_limit == 0 && nsecs == 0 && wait_proc && !NILP (Vinhibit_quit)
4219 && !(CONSP (wait_proc->status) 4219 && !(CONSP (wait_proc->status)
4220 && EQ (XCAR (wait_proc->status), Qexit))) 4220 && EQ (XCAR (wait_proc->status), Qexit)))
4221 message ("Blocking call to accept-process-output with quit inhibited!!"); 4221 message1 ("Blocking call to accept-process-output with quit inhibited!!");
4222 4222
4223 /* If wait_proc is a process to watch, set wait_channel accordingly. */ 4223 /* If wait_proc is a process to watch, set wait_channel accordingly. */
4224 if (wait_proc != NULL) 4224 if (wait_proc != NULL)
diff --git a/src/sheap.c b/src/sheap.c
index 972c04c9552..06e205bc0e5 100644
--- a/src/sheap.c
+++ b/src/sheap.c
@@ -91,5 +91,5 @@ report_sheap_usage (int die_if_pure_storage_exceeded)
91 char buf[200]; 91 char buf[200];
92 sprintf (buf, "Static heap usage: %d of %d bytes", 92 sprintf (buf, "Static heap usage: %d of %d bytes",
93 bss_sbrk_ptr - bss_sbrk_buffer, STATIC_HEAP_SIZE); 93 bss_sbrk_ptr - bss_sbrk_buffer, STATIC_HEAP_SIZE);
94 message ("%s", buf); 94 message1 (buf);
95} 95}
diff --git a/src/sound.c b/src/sound.c
index 802f1ce740d..9c472fb0263 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -334,7 +334,7 @@ sound_perror (const char *msg)
334static void 334static void
335sound_warning (const char *msg) 335sound_warning (const char *msg)
336{ 336{
337 message ("%s", msg); 337 message1 (msg);
338} 338}
339 339
340 340
diff --git a/src/xdisp.c b/src/xdisp.c
index 9da8679382e..68be426f807 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -28496,6 +28496,9 @@ x_draw_vertical_border (struct window *w)
28496 if (FRAME_HAS_VERTICAL_SCROLL_BARS (XFRAME (w->frame))) 28496 if (FRAME_HAS_VERTICAL_SCROLL_BARS (XFRAME (w->frame)))
28497 return; 28497 return;
28498 28498
28499 /* Note: It is necessary to redraw bot the left and the right
28500 borders, for when only this single window W is being
28501 redisplayed. */
28499 if (!WINDOW_RIGHTMOST_P (w) 28502 if (!WINDOW_RIGHTMOST_P (w)
28500 && !WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w)) 28503 && !WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w))
28501 { 28504 {
@@ -28509,8 +28512,8 @@ x_draw_vertical_border (struct window *w)
28509 28512
28510 FRAME_RIF (f)->draw_vertical_window_border (w, x1, y0, y1); 28513 FRAME_RIF (f)->draw_vertical_window_border (w, x1, y0, y1);
28511 } 28514 }
28512 else if (!WINDOW_LEFTMOST_P (w) 28515 if (!WINDOW_LEFTMOST_P (w)
28513 && !WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w)) 28516 && !WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w))
28514 { 28517 {
28515 int x0, x1, y0, y1; 28518 int x0, x1, y0, y1;
28516 28519
diff --git a/src/xml.c b/src/xml.c
index 5a52b0c2a1e..4b466dc1bca 100644
--- a/src/xml.c
+++ b/src/xml.c
@@ -93,7 +93,7 @@ init_libxml2_functions (void)
93 93
94 if (!(library = w32_delayed_load (Qlibxml2_dll))) 94 if (!(library = w32_delayed_load (Qlibxml2_dll)))
95 { 95 {
96 message ("%s", "libxml2 library not found"); 96 message1 ("libxml2 library not found");
97 return 0; 97 return 0;
98 } 98 }
99 99
diff --git a/src/xterm.c b/src/xterm.c
index e92123583b0..66381fde52f 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -10791,16 +10791,6 @@ With MS Windows or Nextstep, the value is t. */);
10791 Vx_toolkit_scroll_bars = Qnil; 10791 Vx_toolkit_scroll_bars = Qnil;
10792#endif 10792#endif
10793 10793
10794 DEFVAR_BOOL ("scroll-bar-adjust-thumb-portion",
10795 scroll_bar_adjust_thumb_portion_p,
10796 doc: /* Adjust thumb for overscrolling for Gtk+ and MOTIF.
10797Non-nil means adjust the thumb in the scroll bar so it can be dragged downwards
10798even if the end of the buffer is shown (i.e. overscrolling).
10799Set to nil if you want the thumb to be at the bottom when the end of the buffer
10800is shown. Also, the thumb fills the whole scroll bar when the entire buffer
10801is visible. In this case you can not overscroll. */);
10802 scroll_bar_adjust_thumb_portion_p = 1;
10803
10804 staticpro (&last_mouse_motion_frame); 10794 staticpro (&last_mouse_motion_frame);
10805 last_mouse_motion_frame = Qnil; 10795 last_mouse_motion_frame = Qnil;
10806 10796