Now on revision 111334. ------------------------------------------------------------ revno: 111334 committer: Paul Eggert branch nick: trunk timestamp: Tue 2012-12-25 21:41:42 -0800 message: Revert static checking of stack smashing. * configure.ac (WARN_CFLAGS): Omit -Wstack-protector when configured with --enable-gcc-warnings. -Wstack-protector causes diagnostics to be issued on Ubuntu 12.10 x86-64. diff: === modified file 'ChangeLog' --- ChangeLog 2012-12-24 06:24:08 +0000 +++ ChangeLog 2012-12-26 05:41:42 +0000 @@ -1,3 +1,10 @@ +2012-12-26 Paul Eggert + + Revert static checking of stack smashing. + * configure.ac (WARN_CFLAGS): Omit -Wstack-protector when + configured with --enable-gcc-warnings. -Wstack-protector causes + diagnostics to be issued on Ubuntu 12.10 x86-64. + 2012-12-24 Paul Eggert Merge from gnulib, incorporating: === modified file 'configure.ac' --- configure.ac 2012-12-21 19:32:43 +0000 +++ configure.ac 2012-12-26 05:41:42 +0000 @@ -727,23 +727,12 @@ # . nw="$nw -Wshadow" + # Emacs's use of alloca inhibits protecting the stack. + nw="$nw -Wstack-protector" + # The following line should be removable at some point. nw="$nw -Wsuggest-attribute=pure" - AC_MSG_CHECKING([whether to use -Wstack-protector]) - AC_PREPROC_IFELSE( - [AC_LANG_PROGRAM( - [[#if (1 <= __LONG_MAX__ >> 31 >> 31 \ - && 4 < __GNUC__ + (7 < __GNUC_MINOR__ + (2 <= __GNUC_PATCHLEVEL__))) - /* OK */ - #else - #error "Not GCC, or GCC before 4.7.2, or 'long int' has < 64 bits." - #endif - ]])], - [AC_MSG_RESULT(yes)], - [AC_MSG_RESULT(no) - nw="$nw -Wstack-protector"]) - gl_MANYWARN_ALL_GCC([ws]) gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw]) for w in $ws; do ------------------------------------------------------------ revno: 111333 committer: Daiki Ueno branch nick: trunk timestamp: Wed 2012-12-26 13:20:21 +0900 message: Move photo ID display code from epg.el to gnus/mml2015.el. 2012-12-26 Daiki Ueno * mml2015.el (mml2015-epg-signature-to-string): New function. (mml2015-epg-verify-result-to-string): New function. (mml2015-epg-decrypt, mml2015-epg-clear-decrypt, mml2015-epg-verify) (mml2015-epg-clear-verify): Use mml2015-epg-verify-result-to-string instead of epg-verify-result-to-string. (epg-signature-key-id, epg-signature-to-string): Autoload. (epg-verify-result-to-string): Remove autoload. 2012-12-25 Adam Sjøgren * mml2015.el (mml2015-epg-key-image): New function, to retrieve photo ID image from GPG public key. (mml2015-epg-key-image-to-string): New function. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-12-25 22:49:35 +0000 +++ lisp/ChangeLog 2012-12-26 04:20:21 +0000 @@ -1,9 +1,3 @@ -2012-12-25 Adam Sjøgren - - * epg.el (epg-signature-to-string): Use new functions - epg-key-image, epg-key-image-to-string to find and display image - from key. - 2012-12-24 Constantin Kulikov (tiny change) * startup.el (initial-buffer-choice): Allow function as value === modified file 'lisp/epg.el' --- lisp/epg.el 2012-12-25 22:49:35 +0000 +++ lisp/epg.el 2012-12-26 04:20:21 +0000 @@ -967,34 +967,12 @@ (setcdr entry value) (epg-context-set-result context (cons (cons name value) result))))) -(defun epg-key-image (key-id) - "Return the image of a key, if any" - (let ((filename - (replace-regexp-in-string - "\n" "" - (shell-command-to-string - (concat "/usr/bin/gpg --photo-viewer 'echo %I >&2' --list-keys " - key-id " > /dev/null"))))) - (when (and (not (string-equal filename "")) - (file-exists-p filename)) - (create-image filename)))) - -(defun epg-key-image-to-string (key-id) - "Return a string with the image of a key, if any" - (let* ((result "") - (key-image (epg-key-image key-id))) - (when key-image - (setq result " ") - (put-text-property 1 2 'display key-image result)) - result)) - (defun epg-signature-to-string (signature) "Convert SIGNATURE to a human readable string." (let* ((user-id (cdr (assoc (epg-signature-key-id signature) epg-user-id-alist))) (pubkey-algorithm (epg-signature-pubkey-algorithm signature)) - (key-id (epg-signature-key-id signature)) - (key-image (epg-key-image-to-string key-id))) + (key-id (epg-signature-key-id signature))) (concat (cond ((eq (epg-signature-status signature) 'good) "Good signature from ") @@ -1009,7 +987,6 @@ ((eq (epg-signature-status signature) 'no-pubkey) "No public key for ")) key-id - key-image (if user-id (concat " " (if (stringp user-id) === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2012-12-25 23:38:16 +0000 +++ lisp/gnus/ChangeLog 2012-12-26 04:20:21 +0000 @@ -1,3 +1,19 @@ +2012-12-26 Daiki Ueno + + * mml2015.el (mml2015-epg-signature-to-string): New function. + (mml2015-epg-verify-result-to-string): New function. + (mml2015-epg-decrypt, mml2015-epg-clear-decrypt, mml2015-epg-verify) + (mml2015-epg-clear-verify): Use mml2015-epg-verify-result-to-string + instead of epg-verify-result-to-string. + (epg-signature-key-id, epg-signature-to-string): Autoload. + (epg-verify-result-to-string): Remove autoload. + +2012-12-25 Adam Sjøgren + + * mml2015.el (mml2015-epg-key-image): New function, to retrieve photo + ID image from GPG public key. + (mml2015-epg-key-image-to-string): New function. + 2012-12-25 Leo Liu * plstore.el (plstore-passphrase-callback-function): Fix error when === modified file 'lisp/gnus/mml2015.el' --- lisp/gnus/mml2015.el 2012-01-19 07:21:25 +0000 +++ lisp/gnus/mml2015.el 2012-12-26 04:20:21 +0000 @@ -735,6 +735,7 @@ (defvar epg-user-id-alist) (defvar epg-digest-algorithm-alist) +(defvar epg-gpg-program) (defvar inhibit-redisplay) (autoload 'epg-make-context "epg") @@ -743,7 +744,6 @@ (autoload 'epg-context-set-signers "epg") (autoload 'epg-context-result-for "epg") (autoload 'epg-new-signature-digest-algorithm "epg") -(autoload 'epg-verify-result-to-string "epg") (autoload 'epg-list-keys "epg") (autoload 'epg-decrypt-string "epg") (autoload 'epg-verify-string "epg") @@ -755,6 +755,8 @@ (autoload 'epg-sub-key-capability "epg") (autoload 'epg-sub-key-validity "epg") (autoload 'epg-sub-key-fingerprint "epg") +(autoload 'epg-signature-key-id "epg") +(autoload 'epg-signature-to-string "epg") (autoload 'epg-configuration "epg-config") (autoload 'epg-expand-group "epg-config") (autoload 'epa-select-keys "epa") @@ -818,6 +820,34 @@ (setq secret-keys (cdr secret-keys)))) secret-key)) +(defun mml2015-epg-key-image (key-id) + "Return the image of a key, if any" + (let ((filename + (replace-regexp-in-string + "\n" "" + (shell-command-to-string + (format "%s --photo-viewer 'echo %%I >&2' --list-keys %s > /dev/null" + epg-gpg-program key-id))))) + (when (and (not (string-equal filename "")) + (file-exists-p filename)) + (create-image filename)))) + +(defun mml2015-epg-key-image-to-string (key-id) + "Return a string with the image of a key, if any" + (let* ((result "") + (key-image (mml2015-epg-key-image key-id))) + (when key-image + (setq result " ") + (put-text-property 1 2 'display key-image result)) + result)) + +(defun mml2015-epg-signature-to-string (signature) + (concat (epg-signature-to-string signature) + (mml2015-epg-key-image-to-string (epg-signature-key-id signature)))) + +(defun mml2015-epg-verify-result-to-string (verify-result) + (mapconcat #'mml2015-epg-signature-to-string verify-result "\n")) + (defun mml2015-epg-decrypt (handle ctl) (catch 'error (let ((inhibit-redisplay t) @@ -860,7 +890,7 @@ (mm-set-handle-multipart-parameter mm-security-handle 'gnus-info (concat "OK\n" - (epg-verify-result-to-string + (mml2015-epg-verify-result-to-string (epg-context-result-for context 'verify)))) (mm-set-handle-multipart-parameter mm-security-handle 'gnus-info "OK")) @@ -908,7 +938,7 @@ (if (epg-context-result-for context 'verify) (mm-set-handle-multipart-parameter mm-security-handle 'gnus-details - (epg-verify-result-to-string + (mml2015-epg-verify-result-to-string (epg-context-result-for context 'verify))))))) (defun mml2015-epg-verify (handle ctl) @@ -942,7 +972,8 @@ (throw 'error handle))) (mm-set-handle-multipart-parameter mm-security-handle 'gnus-info - (epg-verify-result-to-string (epg-context-result-for context 'verify))) + (mml2015-epg-verify-result-to-string + (epg-context-result-for context 'verify))) handle))) (defun mml2015-epg-clear-verify () @@ -965,7 +996,7 @@ (progn (mm-set-handle-multipart-parameter mm-security-handle 'gnus-info - (epg-verify-result-to-string + (mml2015-epg-verify-result-to-string (epg-context-result-for context 'verify))) (delete-region (point-min) (point-max)) (insert (mm-decode-coding-string plain coding-system-for-read))) ------------------------------------------------------------ revno: 111332 committer: Paul Eggert branch nick: trunk timestamp: Tue 2012-12-25 18:45:43 -0800 message: * window.c (select_window_1): Now static. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-12-25 17:37:29 +0000 +++ src/ChangeLog 2012-12-26 02:45:43 +0000 @@ -1,3 +1,7 @@ +2012-12-26 Paul Eggert + + * window.c (select_window_1): Now static, since it's used only here. + 2012-12-25 Eli Zaretskii * window.c (window_body_cols): Subtract display margins from the === modified file 'src/window.c' --- src/window.c 2012-12-25 17:37:29 +0000 +++ src/window.c 2012-12-26 02:45:43 +0000 @@ -87,6 +87,7 @@ static int window_resize_check (struct window *, int); static void window_resize_apply (struct window *, int); static Lisp_Object select_window (Lisp_Object, Lisp_Object, int); +static void select_window_1 (Lisp_Object, bool); /* This is the window in which the terminal's cursor should be left when nothing is being done with it. This must @@ -532,7 +533,7 @@ /* Select window with a minimum of fuss, i.e. don't record the change anywhere (not even for redisplay's benefit), and assume that the window's frame is already selected. */ -void +static void select_window_1 (Lisp_Object window, bool inhibit_point_swap) { /* Store the old selected window's buffer's point in pointm of the old === modified file 'src/window.h' --- src/window.h 2012-12-17 19:17:06 +0000 +++ src/window.h 2012-12-26 02:45:43 +0000 @@ -978,7 +978,6 @@ extern Lisp_Object Qwindowp, Qwindow_live_p; extern Lisp_Object Vwindow_list; -extern void select_window_1 (Lisp_Object window, bool inhibit_point_swap); extern struct window *decode_live_window (Lisp_Object); extern struct window *decode_any_window (Lisp_Object); extern bool compare_window_configurations (Lisp_Object, Lisp_Object, bool); ------------------------------------------------------------ revno: 111331 committer: Katsumi Yamaoka branch nick: trunk timestamp: Tue 2012-12-25 23:38:16 +0000 message: lisp/gnus/ChangeLog: Fix wrongly adjusted dates diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2012-12-25 22:23:10 +0000 +++ lisp/gnus/ChangeLog 2012-12-25 23:38:16 +0000 @@ -56,7 +56,7 @@ mark state when moving articles. Otherwise unticked articles will get their ticks back after moving. -2012-12-25 Lars Ingebrigtsen +2012-12-24 Lars Ingebrigtsen * gnus-srvr.el (gnus-browse-delete-group): Fix syntax error. @@ -74,11 +74,11 @@ to nil to allow re-selecting groups that gain articles. (gnus-bug-group-download-format-alist): Update the URL. -2012-12-25 Andreas Schwab +2012-12-23 Andreas Schwab * shr.el (shr-tag-em): Render em as italic, not bold. -2012-12-25 Lars Ingebrigtsen +2012-12-23 Lars Ingebrigtsen * gnus-int.el (gnus-backend-trace): Factor out into its own function for reuse. @@ -86,7 +86,7 @@ (gnus-finish-retrieve-group-infos): Add backend tracing. (gnus-backend-trace): Also note the elapsed seconds. -2012-12-25 Philipp Haselwarter +2012-12-22 Philipp Haselwarter * gnus-sync.el (gnus-sync-file-encrypt-to, gnus-sync-save): Set epa-file-encrypt-to from variable to avoid querying. ------------------------------------------------------------ revno: 111330 author: Adam Sjogren committer: Lars Ingebrigtsen branch nick: trunk timestamp: Tue 2012-12-25 23:49:35 +0100 message: Display images from gpg signatures * epg.el (epg-signature-to-string): Use new functions epg-key-image, epg-key-image-to-string to find and display image from key. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-12-24 17:49:19 +0000 +++ lisp/ChangeLog 2012-12-25 22:49:35 +0000 @@ -1,3 +1,9 @@ +2012-12-25 Adam Sjøgren + + * epg.el (epg-signature-to-string): Use new functions + epg-key-image, epg-key-image-to-string to find and display image + from key. + 2012-12-24 Constantin Kulikov (tiny change) * startup.el (initial-buffer-choice): Allow function as value === modified file 'lisp/epg.el' --- lisp/epg.el 2012-12-21 07:35:02 +0000 +++ lisp/epg.el 2012-12-25 22:49:35 +0000 @@ -967,11 +967,34 @@ (setcdr entry value) (epg-context-set-result context (cons (cons name value) result))))) +(defun epg-key-image (key-id) + "Return the image of a key, if any" + (let ((filename + (replace-regexp-in-string + "\n" "" + (shell-command-to-string + (concat "/usr/bin/gpg --photo-viewer 'echo %I >&2' --list-keys " + key-id " > /dev/null"))))) + (when (and (not (string-equal filename "")) + (file-exists-p filename)) + (create-image filename)))) + +(defun epg-key-image-to-string (key-id) + "Return a string with the image of a key, if any" + (let* ((result "") + (key-image (epg-key-image key-id))) + (when key-image + (setq result " ") + (put-text-property 1 2 'display key-image result)) + result)) + (defun epg-signature-to-string (signature) "Convert SIGNATURE to a human readable string." (let* ((user-id (cdr (assoc (epg-signature-key-id signature) epg-user-id-alist))) - (pubkey-algorithm (epg-signature-pubkey-algorithm signature))) + (pubkey-algorithm (epg-signature-pubkey-algorithm signature)) + (key-id (epg-signature-key-id signature)) + (key-image (epg-key-image-to-string key-id))) (concat (cond ((eq (epg-signature-status signature) 'good) "Good signature from ") @@ -985,7 +1008,8 @@ "Signature made by revoked key ") ((eq (epg-signature-status signature) 'no-pubkey) "No public key for ")) - (epg-signature-key-id signature) + key-id + key-image (if user-id (concat " " (if (stringp user-id) ------------------------------------------------------------ revno: 111329 author: Leo Liu committer: Katsumi Yamaoka branch nick: trunk timestamp: Tue 2012-12-25 22:23:10 +0000 message: lisp/gnus/plstore.el (plstore-passphrase-callback-function): Fix error when error when plstore-cache-passphrase-for-symmetric-encryption is set (bug#13264). diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2012-12-25 22:12:59 +0000 +++ lisp/gnus/ChangeLog 2012-12-25 22:23:10 +0000 @@ -1,3 +1,9 @@ +2012-12-25 Leo Liu + + * plstore.el (plstore-passphrase-callback-function): Fix error when + error when plstore-cache-passphrase-for-symmetric-encryption is set + (bug#13264). + 2012-12-25 Lars Ingebrigtsen * gnus-sum.el (gnus-set-global-variables): Don't copy over the summary === modified file 'lisp/gnus/plstore.el' --- lisp/gnus/plstore.el 2012-04-26 22:07:59 +0000 +++ lisp/gnus/plstore.el 2012-12-25 22:23:10 +0000 @@ -126,7 +126,8 @@ (defun plstore-passphrase-callback-function (_context _key-id plstore) (if plstore-cache-passphrase-for-symmetric-encryption - (let* ((file (file-truename (plstore--get-buffer plstore))) + (let* ((file (file-truename (buffer-file-name + (plstore--get-buffer plstore)))) (entry (assoc file plstore-passphrase-alist)) passphrase) (or (copy-sequence (cdr entry)) ------------------------------------------------------------ revno: 111328 author: Gnus developers committer: Katsumi Yamaoka branch nick: trunk timestamp: Tue 2012-12-25 22:12:59 +0000 message: Merge changes made in Gnus master 2012-12-25 Lars Ingebrigtsen * gnus-sum.el (gnus-set-global-variables): Don't copy over the summary buffer to the article buffer here, because that clobbers multiple article buffers. * gnus-art.el (gnus-article-setup-buffer): Make sure that the article buffer always points to the right summary buffer. 2012-12-25 John Wiegley * auth-source.el (auth-source-netrc-parse): Allow using "password" as the password (bug#12097). 2012-12-25 Lars Ingebrigtsen * shr.el (shr-tag-a): Don't tagify elements that don't have HREFs (bug#13263). * gnus-salt.el (gnus-highlight-selected-tree): Check whether the Tree buffer exists before using it (bug#12475). * gnus-agent.el (gnus-agent-fetch-articles): Don't fetch articles from offline groups (bug#11937). * message.el (message-yank-original): When using customize to set the value of `message-cite-style', the variable it set to a symbol that's the name of the variable, which must then be dereferenced (bug#12616). 2012-09-13 Wolfgang Jenkner * lisp/gnus-spec.el (gnus-face-face-function): Initialize the value of the `face' property with a list whose car is the face specified in the format string and whose cdr is (nil). * lisp/gnus-util.el (gnus-put-text-property-excluding-characters-with-faces): Change accordingly. (gnus-get-text-property-excluding-characters-with-faces): New function. * lisp/gnus-sum.el (gnus-summary-highlight-line): * lisp/gnus-salt.el (gnus-tree-highlight-node): * lisp/gnus-group.el (gnus-group-highlight-line): Use it. diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2012-12-25 12:00:26 +0000 +++ lisp/gnus/ChangeLog 2012-12-25 22:12:59 +0000 @@ -1,5 +1,47 @@ 2012-12-25 Lars Ingebrigtsen + * gnus-sum.el (gnus-set-global-variables): Don't copy over the summary + buffer to the article buffer here, because that clobbers multiple + article buffers. + + * gnus-art.el (gnus-article-setup-buffer): Make sure that the article + buffer always points to the right summary buffer. + +2012-12-25 John Wiegley + + * auth-source.el (auth-source-netrc-parse): Allow using "password" as + the password (bug#12097). + +2012-12-25 Lars Ingebrigtsen + + * shr.el (shr-tag-a): Don't tagify elements that don't have HREFs + (bug#13263). + + * gnus-salt.el (gnus-highlight-selected-tree): Check whether the Tree + buffer exists before using it (bug#12475). + + * gnus-agent.el (gnus-agent-fetch-articles): Don't fetch articles from + offline groups (bug#11937). + + * message.el (message-yank-original): When using customize to set the + value of `message-cite-style', the variable it set to a symbol that's + the name of the variable, which must then be dereferenced (bug#12616). + +2012-12-25 Wolfgang Jenkner + + * lisp/gnus-spec.el (gnus-face-face-function): Initialize the value of + the `face' property with a list whose car is the face specified in the + format string and whose cdr is (nil). + * lisp/gnus-util.el + (gnus-put-text-property-excluding-characters-with-faces): Change + accordingly. + (gnus-get-text-property-excluding-characters-with-faces): New function. + * lisp/gnus-sum.el (gnus-summary-highlight-line): + * lisp/gnus-salt.el (gnus-tree-highlight-node): + * lisp/gnus-group.el (gnus-group-highlight-line): Use it. + +2012-12-25 Lars Ingebrigtsen + * nnimap.el (nnimap-authenticator): Expand to allow specifying the login methods. (nnimap-login): Respect the `nnimap-authenticator' variable. @@ -8,7 +50,7 @@ mark state when moving articles. Otherwise unticked articles will get their ticks back after moving. -2012-12-24 Lars Ingebrigtsen +2012-12-25 Lars Ingebrigtsen * gnus-srvr.el (gnus-browse-delete-group): Fix syntax error. @@ -26,11 +68,11 @@ to nil to allow re-selecting groups that gain articles. (gnus-bug-group-download-format-alist): Update the URL. -2012-12-23 Andreas Schwab +2012-12-25 Andreas Schwab * shr.el (shr-tag-em): Render em as italic, not bold. -2012-12-23 Lars Ingebrigtsen +2012-12-25 Lars Ingebrigtsen * gnus-int.el (gnus-backend-trace): Factor out into its own function for reuse. @@ -38,7 +80,7 @@ (gnus-finish-retrieve-group-infos): Add backend tracing. (gnus-backend-trace): Also note the elapsed seconds. -2012-12-22 Philipp Haselwarter +2012-12-25 Philipp Haselwarter * gnus-sync.el (gnus-sync-file-encrypt-to, gnus-sync-save): Set epa-file-encrypt-to from variable to avoid querying. === modified file 'lisp/gnus/auth-source.el' --- lisp/gnus/auth-source.el 2012-08-31 04:39:30 +0000 +++ lisp/gnus/auth-source.el 2012-12-25 22:12:59 +0000 @@ -1008,7 +1008,7 @@ (while (and (zerop (forward-line 1)) (looking-at "$"))) (narrow-to-region (point) (point))) - ((member elem tokens) + ((and (member elem tokens) (null pair)) ;; Tokens that don't have a following value are ignored, ;; except "default". (when (and pair (or (cdr pair) === modified file 'lisp/gnus/gnus-agent.el' --- lisp/gnus/gnus-agent.el 2012-08-10 21:20:24 +0000 +++ lisp/gnus/gnus-agent.el 2012-12-25 22:12:59 +0000 @@ -1489,7 +1489,8 @@ (defun gnus-agent-fetch-articles (group articles) "Fetch ARTICLES from GROUP and put them into the Agent." - (when articles + (when (and articles + (gnus-online (gnus-group-method group))) (gnus-agent-load-alist group) (let* ((alist gnus-agent-article-alist) (headers (if (< (length articles) 2) nil gnus-newsgroup-headers)) === modified file 'lisp/gnus/gnus-art.el' --- lisp/gnus/gnus-art.el 2012-12-12 22:22:31 +0000 +++ lisp/gnus/gnus-art.el 2012-12-25 22:12:59 +0000 @@ -4539,18 +4539,17 @@ (gnus-article-mode)) (setq truncate-lines gnus-article-truncate-lines) (current-buffer)) - (with-current-buffer (gnus-get-buffer-create name) - (gnus-article-mode) - (setq truncate-lines gnus-article-truncate-lines) - (make-local-variable 'gnus-summary-buffer) - (setq gnus-summary-buffer - (gnus-summary-buffer-name gnus-newsgroup-name)) - (gnus-summary-set-local-parameters gnus-newsgroup-name) - (when article-lapsed-timer - (gnus-stop-date-timer)) - (when gnus-article-update-date-headers - (gnus-start-date-timer gnus-article-update-date-headers)) - (current-buffer))))) + (let ((summary gnus-summary-buffer)) + (with-current-buffer (gnus-get-buffer-create name) + (gnus-article-mode) + (setq truncate-lines gnus-article-truncate-lines) + (set (make-local-variable 'gnus-summary-buffer) summary) + (gnus-summary-set-local-parameters gnus-newsgroup-name) + (when article-lapsed-timer + (gnus-stop-date-timer)) + (when gnus-article-update-date-headers + (gnus-start-date-timer gnus-article-update-date-headers)) + (current-buffer)))))) (defun gnus-article-stop-animations () (dolist (timer (and (boundp 'timer-list) === modified file 'lisp/gnus/gnus-group.el' --- lisp/gnus/gnus-group.el 2012-12-24 22:56:47 +0000 +++ lisp/gnus/gnus-group.el 2012-12-25 22:12:59 +0000 @@ -1667,7 +1667,7 @@ (let ((face (cdar (gnus-group-update-eval-form group gnus-group-highlight)))) - (unless (eq face (get-text-property beg 'face)) + (unless (eq face (gnus-get-text-property-excluding-characters-with-faces beg 'face)) (let ((inhibit-read-only t)) (gnus-put-text-property-excluding-characters-with-faces beg end 'face === modified file 'lisp/gnus/gnus-salt.el' --- lisp/gnus/gnus-salt.el 2012-09-07 04:07:00 +0000 +++ lisp/gnus/gnus-salt.el 2012-12-25 22:12:59 +0000 @@ -659,7 +659,7 @@ (while (and list (not (eval (caar list)))) (setq list (cdr list))))) - (unless (eq (setq face (cdar list)) (get-text-property beg 'face)) + (unless (eq (setq face (cdar list)) (gnus-get-text-property-excluding-characters-with-faces beg 'face)) (gnus-put-text-property-excluding-characters-with-faces beg end 'face (if (boundp face) (symbol-value face) face))))) @@ -828,31 +828,33 @@ (defun gnus-highlight-selected-tree (article) "Highlight the selected article in the tree." - (let ((buf (current-buffer)) - region) - (set-buffer gnus-tree-buffer) - (when (setq region (gnus-tree-article-region article)) - (when (or (not gnus-selected-tree-overlay) - (gnus-extent-detached-p gnus-selected-tree-overlay)) - ;; Create a new overlay. - (gnus-overlay-put - (setq gnus-selected-tree-overlay - (gnus-make-overlay (point-min) (1+ (point-min)))) - 'face gnus-selected-tree-face)) - ;; Move the overlay to the article. - (gnus-move-overlay - gnus-selected-tree-overlay (goto-char (car region)) (cdr region)) - (gnus-tree-minimize) - (gnus-tree-recenter) - (let ((selected (selected-window))) - (when (gnus-get-buffer-window (set-buffer gnus-tree-buffer) t) - (select-window (gnus-get-buffer-window (set-buffer gnus-tree-buffer) t)) - (gnus-horizontal-recenter) - (select-window selected)))) -;; If we remove this save-excursion, it updates the wrong mode lines?!? - (with-current-buffer gnus-tree-buffer - (gnus-set-mode-line 'tree)) - (set-buffer buf))) + (when (buffer-live-p gnus-tree-buffer) + (let ((buf (current-buffer)) + region) + (set-buffer gnus-tree-buffer) + (when (setq region (gnus-tree-article-region article)) + (when (or (not gnus-selected-tree-overlay) + (gnus-extent-detached-p gnus-selected-tree-overlay)) + ;; Create a new overlay. + (gnus-overlay-put + (setq gnus-selected-tree-overlay + (gnus-make-overlay (point-min) (1+ (point-min)))) + 'face gnus-selected-tree-face)) + ;; Move the overlay to the article. + (gnus-move-overlay + gnus-selected-tree-overlay (goto-char (car region)) (cdr region)) + (gnus-tree-minimize) + (gnus-tree-recenter) + (let ((selected (selected-window))) + (when (gnus-get-buffer-window (set-buffer gnus-tree-buffer) t) + (select-window + (gnus-get-buffer-window (set-buffer gnus-tree-buffer) t)) + (gnus-horizontal-recenter) + (select-window selected)))) + ;; If we remove this save-excursion, it updates the wrong mode lines?!? + (with-current-buffer gnus-tree-buffer + (gnus-set-mode-line 'tree)) + (set-buffer buf)))) (defun gnus-tree-highlight-article (article face) (with-current-buffer (gnus-get-tree-buffer) === modified file 'lisp/gnus/gnus-spec.el' --- lisp/gnus/gnus-spec.el 2012-06-26 22:52:31 +0000 +++ lisp/gnus/gnus-spec.el 2012-12-25 22:12:59 +0000 @@ -265,7 +265,14 @@ (defun gnus-face-face-function (form type) `(gnus-add-text-properties (point) (progn ,@form (point)) - '(gnus-face t face ,(symbol-value (intern (format "gnus-face-%d" type)))))) + (cons 'face + (cons + ;; Delay consing the value of the `face' property until + ;; `gnus-add-text-properties' runs, since it will be modified + ;; by `gnus-put-text-property-excluding-characters-with-faces'. + (list ',(symbol-value (intern (format "gnus-face-%d" type))) nil) + ;; Redundant now, but still convenient. + '(gnus-face t))))) (defun gnus-balloon-face-function (form type) `(gnus-put-text-property === modified file 'lisp/gnus/gnus-sum.el' --- lisp/gnus/gnus-sum.el 2012-12-25 12:00:26 +0000 +++ lisp/gnus/gnus-sum.el 2012-12-25 22:12:59 +0000 @@ -3493,8 +3493,8 @@ (set-buffer buffer) (setq gnus-summary-buffer (current-buffer)) (not gnus-newsgroup-prepared)) - ;; Fix by Sudish Joseph - (setq gnus-summary-buffer (set-buffer (gnus-get-buffer-create buffer))) + (set-buffer (gnus-get-buffer-create buffer)) + (setq gnus-summary-buffer (current-buffer)) (gnus-summary-mode group) (when (gnus-group-quit-config group) (set (make-local-variable 'gnus-single-article-buffer) nil)) @@ -3552,11 +3552,7 @@ (if (consp (car locals)) (set (caar locals) (pop vlist)) (set (car locals) (pop vlist))) - (setq locals (cdr locals)))) - ;; The article buffer also has local variables. - (when (gnus-buffer-live-p gnus-article-buffer) - (set-buffer gnus-article-buffer) - (setq gnus-summary-buffer summary)))))) + (setq locals (cdr locals)))))))) (defun gnus-summary-article-unread-p (article) "Say whether ARTICLE is unread or not." @@ -7874,7 +7870,6 @@ Also see the variable `gnus-article-skip-boring'." (interactive "P") - (setq gnus-summary-buffer (current-buffer)) (gnus-set-global-variables) (let ((article (gnus-summary-article-number)) (article-window (get-buffer-window gnus-article-buffer t)) @@ -12524,7 +12519,7 @@ (memq article gnus-newsgroup-undownloaded) (not (memq article gnus-newsgroup-cached))))) (let ((face (funcall (gnus-summary-highlight-line-0)))) - (unless (eq face (get-text-property beg 'face)) + (unless (eq face (gnus-get-text-property-excluding-characters-with-faces beg 'face)) (gnus-put-text-property-excluding-characters-with-faces beg (point-at-eol) 'face (setq face (if (boundp face) (symbol-value face) face))) === modified file 'lisp/gnus/gnus-util.el' --- lisp/gnus/gnus-util.el 2012-12-04 08:22:12 +0000 +++ lisp/gnus/gnus-util.el 2012-12-25 22:12:59 +0000 @@ -866,18 +866,29 @@ (setq beg (point))) (gnus-overlay-put (gnus-make-overlay beg (point)) prop val))))) -(defun gnus-put-text-property-excluding-characters-with-faces (beg end - prop val) - "The same as `put-text-property', but don't put props on characters with the `gnus-face' property." - (let ((b beg)) - (while (/= b end) - (when (get-text-property b 'gnus-face) - (setq b (next-single-property-change b 'gnus-face nil end))) - (when (/= b end) +(defun gnus-put-text-property-excluding-characters-with-faces (beg end prop val) + "The same as `put-text-property', except where `gnus-face' is set. +If so, and PROP is `face', set the second element of its value to VAL. +Otherwise, do nothing." + (while (< beg end) + ;; Property values are compared with `eq'. + (let ((stop (next-single-property-change beg 'face nil end))) + (if (get-text-property beg 'gnus-face) + (when (eq prop 'face) + (setcar (cdr (get-text-property beg 'face)) val)) (inline - (gnus-put-text-property - b (setq b (next-single-property-change b 'gnus-face nil end)) - prop val)))))) + (gnus-put-text-property beg stop prop val))) + (setq beg stop)))) + +(defun gnus-get-text-property-excluding-characters-with-faces (pos prop) + "The same as `get-text-property', except where `gnus-face' is set. +If so, and PROP is `face', return the second element of its value. +Otherwise, return the value." + (let ((val (get-text-property pos prop))) + (if (and (get-text-property pos 'gnus-face) + (eq prop 'face)) + (cadr val) + (get-text-property pos prop)))) (defmacro gnus-faces-at (position) "Return a list of faces at POSITION." === modified file 'lisp/gnus/message.el' --- lisp/gnus/message.el 2012-12-24 22:56:47 +0000 +++ lisp/gnus/message.el 2012-12-25 22:12:59 +0000 @@ -3814,7 +3814,9 @@ (interactive "P") ;; eval the let forms contained in message-cite-style (eval - `(let ,message-cite-style + `(let ,(if (symbolp message-cite-style) + (symbol-value message-cite-style) + message-cite-style) (message--yank-original-internal ',arg)))) (defun message-yank-buffer (buffer) === modified file 'lisp/gnus/shr.el' --- lisp/gnus/shr.el 2012-12-24 04:21:58 +0000 +++ lisp/gnus/shr.el 2012-12-25 22:12:59 +0000 @@ -931,7 +931,8 @@ (start (point)) shr-start) (shr-generic cont) - (shr-urlify (or shr-start start) (shr-expand-url url) title))) + (when url + (shr-urlify (or shr-start start) (shr-expand-url url) title)))) (defun shr-tag-object (cont) (let ((start (point)) ------------------------------------------------------------ revno: 111327 committer: Eli Zaretskii branch nick: trunk timestamp: Tue 2012-12-25 19:37:29 +0200 message: Fix window-body-width on text terminals. src/window.c (window_body_cols): Subtract display margins from the window body width on TTYs as well. See http://lists.gnu.org/archive/html/help-gnu-emacs/2012-12/msg00317.html for the original report. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-12-25 15:07:59 +0000 +++ src/ChangeLog 2012-12-25 17:37:29 +0000 @@ -1,3 +1,10 @@ +2012-12-25 Eli Zaretskii + + * window.c (window_body_cols): Subtract display margins from the + window body width on TTYs as well. See + http://lists.gnu.org/archive/html/help-gnu-emacs/2012-12/msg00317.html + for the original report. + 2012-12-25 Dmitry Antipov * xdisp.c (redisplay_window): Remove inner local variable === modified file 'src/window.c' --- src/window.c 2012-12-22 19:09:52 +0000 +++ src/window.c 2012-12-25 17:37:29 +0000 @@ -801,12 +801,12 @@ occupies one column only. */ width -= 1; + /* Display margins cannot be used for normal text. */ + width -= WINDOW_LEFT_MARGIN_COLS (w) + WINDOW_RIGHT_MARGIN_COLS (w); + if (FRAME_WINDOW_P (f)) - /* On window-systems, fringes and display margins cannot be - used for normal text. */ - width -= (WINDOW_FRINGE_COLS (w) - + WINDOW_LEFT_MARGIN_COLS (w) - + WINDOW_RIGHT_MARGIN_COLS (w)); + /* On window-systems, fringes cannot be used for normal text. */ + width -= WINDOW_FRINGE_COLS (w); return width; } ------------------------------------------------------------ revno: 111326 committer: Eli Zaretskii branch nick: trunk timestamp: Tue 2012-12-25 19:14:23 +0200 message: Avoid compiler warnings in w32.c:acl_to_text. diff: === modified file 'src/w32.c' --- src/w32.c 2012-12-23 17:16:33 +0000 +++ src/w32.c 2012-12-25 17:14:23 +0000 @@ -4693,7 +4693,7 @@ GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION; char *retval = NULL; - ssize_t local_size; + ULONG local_size; int e = errno; errno = 0; ------------------------------------------------------------ revno: 111325 committer: Dmitry Antipov branch nick: trunk timestamp: Tue 2012-12-25 19:07:59 +0400 message: * xterm.h (struct x_output): Remove toolbar_detached member since it's set but never used. * gtkutil.c (xg_tool_bar_detach_callback, xg_tool_bar_attach_callback) (xg_create_tool_bar): Adjust users. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-12-25 11:37:21 +0000 +++ src/ChangeLog 2012-12-25 15:07:59 +0000 @@ -2,6 +2,10 @@ * xdisp.c (redisplay_window): Remove inner local variable because the outer shadowed one has the same meaning. + * xterm.h (struct x_output): Remove toolbar_detached member since it's + set but never used. + * gtkutil.c (xg_tool_bar_detach_callback, xg_tool_bar_attach_callback) + (xg_create_tool_bar): Adjust users. 2012-12-24 Dmitry Antipov === modified file 'src/gtkutil.c' --- src/gtkutil.c 2012-12-12 15:33:30 +0000 +++ src/gtkutil.c 2012-12-25 15:07:59 +0000 @@ -4138,7 +4138,7 @@ if (f) { GtkRequisition req, req2; - FRAME_X_OUTPUT (f)->toolbar_detached = 1; + gtk_widget_get_preferred_size (GTK_WIDGET (wbox), NULL, &req); gtk_widget_get_preferred_size (w, NULL, &req2); req.width -= req2.width; @@ -4173,7 +4173,7 @@ if (f) { GtkRequisition req, req2; - FRAME_X_OUTPUT (f)->toolbar_detached = 0; + gtk_widget_get_preferred_size (GTK_WIDGET (wbox), NULL, &req); gtk_widget_get_preferred_size (w, NULL, &req2); req.width += req2.width; @@ -4347,7 +4347,6 @@ } x->toolbar_widget = gtk_toolbar_new (); - x->toolbar_detached = 0; gtk_widget_set_name (x->toolbar_widget, "emacs-toolbar"); === modified file 'src/xterm.h' --- src/xterm.h 2012-11-23 15:39:48 +0000 +++ src/xterm.h 2012-12-25 15:07:59 +0000 @@ -475,8 +475,6 @@ GtkWidget *toolbar_widget; /* The handle box that makes the tool bar detachable. */ GtkWidget *handlebox_widget; - /* Non-zero if the tool bar is detached. */ - int toolbar_detached; /* Non-zero if tool bar is packed into the hbox widget (i.e. vertical). */ int toolbar_in_hbox; ------------------------------------------------------------ revno: 111324 author: Lars Ingebrigtsen committer: Katsumi Yamaoka branch nick: trunk timestamp: Tue 2012-12-25 12:00:26 +0000 message: Merge changes made in Gnus master nnimap.el (nnimap-authenticator): Expand to allow specifying the login methods. (nnimap-login): Respect the `nnimap-authenticator' variable. gnus-sum.el (gnus-summary-push-marks-to-backend): Push the complete mark state when moving articles. Otherwise unticked articles will get their ticks back after moving. gnus.texi (Customizing the IMAP Connection): Mention the other authenticators. diff: === modified file 'doc/misc/ChangeLog' --- doc/misc/ChangeLog 2012-12-24 22:56:47 +0000 +++ doc/misc/ChangeLog 2012-12-25 12:00:26 +0000 @@ -1,3 +1,8 @@ +2012-12-25 Lars Ingebrigtsen + + * gnus.texi (Customizing the IMAP Connection): Mention the other + authenticators. + 2012-12-24 Lars Ingebrigtsen * gnus.texi (Browse Foreign Server): Document === modified file 'doc/misc/gnus.texi' --- doc/misc/gnus.texi 2012-12-24 22:56:47 +0000 +++ doc/misc/gnus.texi 2012-12-25 12:00:26 +0000 @@ -14208,7 +14208,11 @@ @item nnimap-authenticator Some @acronym{IMAP} servers allow anonymous logins. In that case, -this should be set to @code{anonymous}. +this should be set to @code{anonymous}. If this variable isn't set, +the normal login methods will be used. If you wish to specify a +specific login method to be used, you can set this variable to either +@code{login} (the traditional @acronym{IMAP} login method), +@code{plain} or @code{cram-md5}. @item nnimap-expunge If non-@code{nil}, expunge articles after deleting them. This is always done === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2012-12-24 22:56:47 +0000 +++ lisp/gnus/ChangeLog 2012-12-25 12:00:26 +0000 @@ -1,3 +1,13 @@ +2012-12-25 Lars Ingebrigtsen + + * nnimap.el (nnimap-authenticator): Expand to allow specifying the + login methods. + (nnimap-login): Respect the `nnimap-authenticator' variable. + + * gnus-sum.el (gnus-summary-push-marks-to-backend): Push the complete + mark state when moving articles. Otherwise unticked articles will get + their ticks back after moving. + 2012-12-24 Lars Ingebrigtsen * gnus-srvr.el (gnus-browse-delete-group): Fix syntax error. === modified file 'lisp/gnus/gnus-sum.el' --- lisp/gnus/gnus-sum.el 2012-12-24 22:56:47 +0000 +++ lisp/gnus/gnus-sum.el 2012-12-25 12:00:26 +0000 @@ -10127,17 +10127,20 @@ (defun gnus-summary-push-marks-to-backend (article) (let ((set nil) + (del nil) (marks gnus-article-mark-lists)) (unless (memq article gnus-newsgroup-unreads) (push 'read set)) (while marks - (when (and (eq (gnus-article-mark-to-type (cdar marks)) 'list) - (memq article (symbol-value - (intern (format "gnus-newsgroup-%s" - (caar marks)))))) - (push (cdar marks) set)) + (if (and (eq (gnus-article-mark-to-type (cdar marks)) 'list) + (memq article (symbol-value + (intern (format "gnus-newsgroup-%s" + (caar marks)))))) + (push (cdar marks) set) + (push (cdar marks) del)) (pop marks)) - (gnus-request-set-mark gnus-newsgroup-name `(((,article) set ,set))))) + (gnus-request-set-mark gnus-newsgroup-name `(((,article) set ,set) + ((,article) del ,del))))) (defun gnus-summary-copy-article (&optional n to-newsgroup select-method) "Copy the current article to some other group. === modified file 'lisp/gnus/nnimap.el' --- lisp/gnus/nnimap.el 2012-07-25 03:22:25 +0000 +++ lisp/gnus/nnimap.el 2012-12-25 12:00:26 +0000 @@ -99,7 +99,8 @@ (defvoo nnimap-authenticator nil "How nnimap authenticate itself to the server. -Possible choices are nil (use default methods) or `anonymous'.") +Possible choices are nil (use default methods), `anonymous', +`login', `plain' and `cram-md5'.") (defvoo nnimap-expunge t "If non-nil, expunge articles after deleting them. @@ -487,9 +488,13 @@ ;; round trips than CRAM-MD5, and it's less likely to be buggy), ;; and we're using an encrypted connection. ((and (not (nnimap-capability "LOGINDISABLED")) - (eq (nnimap-stream-type nnimap-object) 'tls)) + (eq (nnimap-stream-type nnimap-object) 'tls) + (or (null nnimap-authenticator) + (eq nnimap-authenticator 'login))) (nnimap-command "LOGIN %S %S" user password)) - ((nnimap-capability "AUTH=CRAM-MD5") + ((and (nnimap-capability "AUTH=CRAM-MD5") + (or (null nnimap-authenticator) + (eq nnimap-authenticator 'cram-md5))) (erase-buffer) (let ((sequence (nnimap-send-command "AUTHENTICATE CRAM-MD5")) (challenge (nnimap-wait-for-line "^\\+\\(.*\\)\n"))) @@ -502,9 +507,13 @@ (base64-decode-string challenge)))) "\r\n")) (nnimap-wait-for-response sequence))) - ((not (nnimap-capability "LOGINDISABLED")) + ((and (not (nnimap-capability "LOGINDISABLED")) + (or (null nnimap-authenticator) + (eq nnimap-authenticator 'login))) (nnimap-command "LOGIN %S %S" user password)) - ((nnimap-capability "AUTH=PLAIN") + ((and (nnimap-capability "AUTH=PLAIN") + (or (null nnimap-authenticator) + (eq nnimap-authenticator 'plain))) (nnimap-command "AUTHENTICATE PLAIN %s" (base64-encode-string ------------------------------------------------------------ revno: 111323 committer: Dmitry Antipov branch nick: trunk timestamp: Tue 2012-12-25 15:37:21 +0400 message: * xdisp.c (redisplay_window): Remove inner local variable because the outer shadowed one has the same meaning. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-12-24 12:21:42 +0000 +++ src/ChangeLog 2012-12-25 11:37:21 +0000 @@ -1,3 +1,8 @@ +2012-12-25 Dmitry Antipov + + * xdisp.c (redisplay_window): Remove inner local variable + because the outer shadowed one has the same meaning. + 2012-12-24 Dmitry Antipov * buffer.h (BUF_COMPACT): New macro to follow the common style. @@ -94,7 +99,7 @@ (charpos_to_bytepos): Remove. * fileio.c (Finsert_file_contents): Use move_gap_both. * search.c (Freplace_match): Likewise. - * process.c (process_send_region): Likewise. Use convenient + * process.c (process_send_region): Likewise. Use convenient names for byte positions. * lisp.h (charpos_to_bytepos): Remove prototype. * indent.c (scan_for_column): Use CHAR_TO_BYTE. === modified file 'src/xdisp.c' --- src/xdisp.c 2012-12-24 12:21:42 +0000 +++ src/xdisp.c 2012-12-25 11:37:21 +0000 @@ -15649,7 +15649,6 @@ /* Some people insist on not letting point enter the scroll margin, even though this part handles windows that didn't scroll at all. */ - struct frame *f = XFRAME (w->frame); int margin = min (scroll_margin, WINDOW_TOTAL_LINES (w) / 4); int pixel_margin = margin * FRAME_LINE_HEIGHT (f); bool header_line = WINDOW_WANTS_HEADER_LINE_P (w); ------------------------------------------------------------ revno: 111322 author: Lars Ingebrigtsen committer: Katsumi Yamaoka branch nick: trunk timestamp: Mon 2012-12-24 22:56:47 +0000 message: Merge changes made in Gnus master gnus-srvr.el (gnus-browse-delete-group): Fix syntax error. message.el (message-ignored-news-headers): Always remove X-Message-SMTP-Method to avoid information leakage if the user mistakenly inserts the header into news messages. gnus-srvr.el (gnus-browse-delete-group): New command and keystroke. gnus-sum.el (gnus-summary-hide-thread): If point were further to the right than four characters, this command would move point to `point-max'. Don't do that. gnus-group.el (gnus-group-read-ephemeral-group): Set the active data to nil to allow re-selecting groups that gain articles. (gnus-bug-group-download-format-alist): Update the URL. gnus.texi (Browse Foreign Server): Document `gnus-browse-delete-group'. diff: === modified file 'doc/misc/ChangeLog' --- doc/misc/ChangeLog 2012-12-22 20:29:16 +0000 +++ doc/misc/ChangeLog 2012-12-24 22:56:47 +0000 @@ -1,3 +1,8 @@ +2012-12-24 Lars Ingebrigtsen + + * gnus.texi (Browse Foreign Server): Document + `gnus-browse-delete-group'. + 2012-12-22 Glenn Morris * ada-mode.texi, ebrowse.texi, ediff.texi, ert.texi, eshell.texi: === modified file 'doc/misc/gnus.texi' --- doc/misc/gnus.texi 2012-12-22 19:09:52 +0000 +++ doc/misc/gnus.texi 2012-12-24 22:56:47 +0000 @@ -3645,6 +3645,15 @@ @findex gnus-browse-describe-briefly Describe browse mode briefly (well, there's not much to describe, is there) (@code{gnus-browse-describe-briefly}). + +@item DEL +@kindex DEL (Browse) +@findex gnus-browse-delete-group +This function will delete the current group +(@code{gnus-browse-delete-group}). If given a prefix, this function +will actually delete all the articles in the group, and forcibly +remove the group itself from the face of the Earth. Use a prefix only +if you are absolutely sure of what you are doing. @end table === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2012-12-24 13:28:39 +0000 +++ lisp/gnus/ChangeLog 2012-12-24 22:56:47 +0000 @@ -1,3 +1,21 @@ +2012-12-24 Lars Ingebrigtsen + + * gnus-srvr.el (gnus-browse-delete-group): Fix syntax error. + + * message.el (message-ignored-news-headers): Always remove + X-Message-SMTP-Method to avoid information leakage if the user + mistakenly inserts the header into news messages. + + * gnus-srvr.el (gnus-browse-delete-group): New command and keystroke. + + * gnus-sum.el (gnus-summary-hide-thread): If point were further to the + right than four characters, this command would move point to + `point-max'. Don't do that. + + * gnus-group.el (gnus-group-read-ephemeral-group): Set the active data + to nil to allow re-selecting groups that gain articles. + (gnus-bug-group-download-format-alist): Update the URL. + 2012-12-23 Andreas Schwab * shr.el (shr-tag-em): Render em as italic, not bold. === modified file 'lisp/gnus/gnus-group.el' --- lisp/gnus/gnus-group.el 2012-09-07 04:07:00 +0000 +++ lisp/gnus/gnus-group.el 2012-12-24 22:56:47 +0000 @@ -2310,6 +2310,7 @@ (let ((group (if (gnus-group-foreign-p group) group (gnus-group-prefixed-name (gnus-group-real-name group) method)))) + (gnus-set-active group nil) (gnus-sethash group `(-1 nil (,group @@ -2441,7 +2442,7 @@ (gnus-read-ephemeral-gmane-group group start range))) (defcustom gnus-bug-group-download-format-alist - '((emacs . "http://debbugs.gnu.org/%s;mboxmaint=yes;mboxstat=yes") + '((emacs . "http://debbugs.gnu.org/cgi/bugreport.cgi?bug=%s;mboxmaint=yes;mboxstat=yes") (debian . "http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=%s&mbox=yes;mboxmaint=yes")) "Alist of symbols for bug trackers and the corresponding URL format string. === modified file 'lisp/gnus/gnus-srvr.el' --- lisp/gnus/gnus-srvr.el 2012-09-05 22:35:32 +0000 +++ lisp/gnus/gnus-srvr.el 2012-12-24 22:56:47 +0000 @@ -713,6 +713,7 @@ "q" gnus-browse-exit "Q" gnus-browse-exit "d" gnus-browse-describe-group + [delete] gnus-browse-delete-group "\C-c\C-c" gnus-browse-exit "?" gnus-browse-describe-briefly @@ -964,6 +965,16 @@ (interactive (list (gnus-browse-group-name))) (gnus-group-describe-group nil group)) +(defun gnus-browse-delete-group (group force) + "Delete the current group. Only meaningful with editable groups. +If FORCE (the prefix) is non-nil, all the articles in the group will +be deleted. This is \"deleted\" as in \"removed forever from the face +of the Earth\". There is no undo. The user will be prompted before +doing the deletion." + (interactive (list (gnus-browse-group-name) + current-prefix-arg)) + (gnus-group-delete-group group force)) + (defun gnus-browse-unsubscribe-group () "Toggle subscription of the current group in the browse buffer." (let ((sub nil) === modified file 'lisp/gnus/gnus-sum.el' --- lisp/gnus/gnus-sum.el 2012-12-02 11:45:36 +0000 +++ lisp/gnus/gnus-sum.el 2012-12-24 22:56:47 +0000 @@ -11647,10 +11647,10 @@ will not be hidden. Returns nil if no threads were there to be hidden." (interactive) + (beginning-of-line) (let ((start (point)) (starteol (line-end-position)) (article (gnus-summary-article-number))) - (goto-char start) ;; Go forward until either the buffer ends or the subthread ends. (when (and (not (eobp)) (or (zerop (gnus-summary-next-thread 1 t)) === modified file 'lisp/gnus/message.el' --- lisp/gnus/message.el 2012-12-06 04:28:00 +0000 +++ lisp/gnus/message.el 2012-12-24 22:56:47 +0000 @@ -264,7 +264,7 @@ :type 'sexp) (defcustom message-ignored-news-headers - "^NNTP-Posting-Host:\\|^Xref:\\|^[BGF]cc:\\|^Resent-Fcc:\\|^X-Draft-From:\\|^X-Gnus-Agent-Meta-Information:" + "^NNTP-Posting-Host:\\|^Xref:\\|^[BGF]cc:\\|^Resent-Fcc:\\|^X-Draft-From:\\|^X-Gnus-Agent-Meta-Information:\\|^X-Message-SMTP-Method:" "*Regexp of headers to be removed unconditionally before posting." :group 'message-news :group 'message-headers ------------------------------------------------------------ revno: 111321 author: =Constantin Kulikov committer: martin rudalics branch nick: trunk timestamp: Mon 2012-12-24 18:49:19 +0100 message: Allow function as value of initial-buffer-choice (Bug#13251). * startup.el (initial-buffer-choice): Allow function as value (Bug#13251). (command-line-1): Handle case where initial-buffer-choice specifies a function. * server.el (server-execute): Handle case where initial-buffer-choice specifies a function. diff: === modified file 'etc/NEWS' --- etc/NEWS 2012-12-20 14:03:34 +0000 +++ etc/NEWS 2012-12-24 17:49:19 +0000 @@ -39,6 +39,9 @@ This unfinished feature was introduced by accident in Emacs 23.1; simply disabling Transient Mark mode does the same thing. +** `initial-buffer-choice' can now specify a function to set up the +initial buffer. + ** ACL support has been added. +++ *** Emacs preserves the ACL entries of files when backing up. === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-12-24 12:14:04 +0000 +++ lisp/ChangeLog 2012-12-24 17:49:19 +0000 @@ -1,3 +1,12 @@ +2012-12-24 Constantin Kulikov (tiny change) + + * startup.el (initial-buffer-choice): Allow function as value + (Bug#13251). + (command-line-1): Handle case where initial-buffer-choice + specifies a function. + * server.el (server-execute): Handle case where + initial-buffer-choice specifies a function. + 2012-12-24 Lars Ingebrigtsen * mail/smtpmail.el (smtpmail-try-auth-method): Refactored out into === modified file 'lisp/server.el' --- lisp/server.el 2012-11-09 06:28:27 +0000 +++ lisp/server.el 2012-12-24 17:49:19 +0000 @@ -1256,12 +1256,17 @@ (mapc 'funcall (nreverse commands)) ;; If we were told only to open a new client, obey - ;; `initial-buffer-choice' if it specifies a file. - (unless (or files commands) - (if (stringp initial-buffer-choice) - (find-file initial-buffer-choice) - (switch-to-buffer (get-buffer-create "*scratch*") - 'norecord))) + ;; `initial-buffer-choice' if it specifies a file + ;; or a function. + (unless (or files commands) + (let ((buf + (cond ((stringp initial-buffer-choice) + (find-file-noselect initial-buffer-choice)) + ((functionp initial-buffer-choice) + (funcall initial-buffer-choice))))) + (switch-to-buffer + (if (buffer-live-p buf) buf (get-buffer-create "*scratch*")) + 'norecord))) ;; Delete the client if necessary. (cond === modified file 'lisp/startup.el' --- lisp/startup.el 2012-12-01 02:08:30 +0000 +++ lisp/startup.el 2012-12-24 17:49:19 +0000 @@ -41,9 +41,10 @@ (defcustom initial-buffer-choice nil "Buffer to show after starting Emacs. If the value is nil and `inhibit-startup-screen' is nil, show the -startup screen. If the value is a string, visit the specified file -or directory using `find-file'. If t, open the `*scratch*' -buffer. +startup screen. If the value is a string, switch to a buffer +visiting the file or directory specified by that string. If the +value is a function, switch to the buffer returned by that +function. If t, open the `*scratch*' buffer. A string value also causes emacsclient to open the specified file or directory when no target file is specified." @@ -51,8 +52,9 @@ (const :tag "Startup screen" nil) (directory :tag "Directory" :value "~/") (file :tag "File" :value "~/.emacs") + (function :tag "Function") (const :tag "Lisp scratch buffer" t)) - :version "23.1" + :version "24.4" :group 'initialization) (defcustom inhibit-startup-screen nil @@ -2323,10 +2325,14 @@ (set-buffer-modified-p nil)))) (when initial-buffer-choice - (cond ((eq initial-buffer-choice t) - (switch-to-buffer (get-buffer-create "*scratch*"))) - ((stringp initial-buffer-choice) - (find-file initial-buffer-choice)))) + (let ((buf + (cond ((stringp initial-buffer-choice) + (find-file-noselect initial-buffer-choice)) + ((functionp initial-buffer-choice) + (funcall initial-buffer-choice))))) + (switch-to-buffer + (if (buffer-live-p buf) buf (get-buffer-create "*scratch*")) + 'norecord))) (if (or inhibit-startup-screen initial-buffer-choice ------------------------------------------------------------ revno: 111320 committer: Eli Zaretskii branch nick: trunk timestamp: Mon 2012-12-24 17:56:17 +0200 message: Fix the MS-Windows build. nt/inc/sys/stat.h (S_ISMPX): Define to zero, to accommodate changes in lib/filemode.c that broke the MS-Windows build. Suggested by Andy Moreton . diff: === modified file 'nt/ChangeLog' --- nt/ChangeLog 2012-12-17 20:58:12 +0000 +++ nt/ChangeLog 2012-12-24 15:56:17 +0000 @@ -1,3 +1,9 @@ +2012-12-24 Eli Zaretskii + + * inc/sys/stat.h (S_ISMPX): Define to zero, to accommodate changes + in lib/filemode.c that broke the MS-Windows build. + Suggested by Andy Moreton . + 2012-12-17 Juanma Barranquero * config.nt: Sync with autogen/config.in. === modified file 'nt/inc/sys/stat.h' --- nt/inc/sys/stat.h 2012-12-14 14:05:01 +0000 +++ nt/inc/sys/stat.h 2012-12-24 15:56:17 +0000 @@ -74,6 +74,7 @@ #define S_ISDOOR(m) 0 #define S_ISMPB(m) 0 #define S_ISMPC(m) 0 +#define S_ISMPX(m) 0 #define S_ISNWK(m) 0 #define S_ISPORT(m) 0 #define S_ISWHT(m) 0 ------------------------------------------------------------ revno: 111319 author: Lars Ingebrigtsen committer: Katsumi Yamaoka branch nick: trunk timestamp: Mon 2012-12-24 13:28:39 +0000 message: lisp/gnus/gnus-int.el (gnus-backend-trace): Also note the elapsed seconds diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2012-12-24 04:21:58 +0000 +++ lisp/gnus/ChangeLog 2012-12-24 13:28:39 +0000 @@ -8,6 +8,7 @@ for reuse. (gnus-open-server): Use it to add more tracing. (gnus-finish-retrieve-group-infos): Add backend tracing. + (gnus-backend-trace): Also note the elapsed seconds. 2012-12-22 Philipp Haselwarter === modified file 'lisp/gnus/gnus-int.el' --- lisp/gnus/gnus-int.el 2012-12-23 12:45:01 +0000 +++ lisp/gnus/gnus-int.el 2012-12-24 13:28:39 +0000 @@ -252,9 +252,14 @@ (defun gnus-backend-trace (type form) (with-current-buffer (get-buffer-create "*gnus trace*") (buffer-disable-undo) - (goto-char (point-max)) - (insert (format-time-string "%H:%M:%S") - (format " %s %S\n" type form)))) + (goto-char (point-max)) + (insert (format-time-string "%H:%M:%S") + (format " %.2fs %s %S\n" + (if (numberp gnus-backend-trace) + (- (float-time) gnus-backend-trace) + 0) + type form)) + (setq gnus-backend-trace (float-time)))) (defun gnus-open-server (gnus-command-method) "Open a connection to GNUS-COMMAND-METHOD." ------------------------------------------------------------ revno: 111318 committer: Dmitry Antipov branch nick: trunk timestamp: Mon 2012-12-24 16:21:42 +0400 message: * buffer.c (Fset_buffer_modified_p): Use buffer_window_count to check whether the buffer is displayed in some window. * xdisp.c (message_dolog): Likewise. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-12-24 11:41:28 +0000 +++ src/ChangeLog 2012-12-24 12:21:42 +0000 @@ -5,6 +5,9 @@ struct buffer_text to avoid accessing an uninitialized value when compact_buffer is called for the first time. (compact_buffer): Use convenient BUF_COMPACT and BUF_MODIFF. + (Fset_buffer_modified_p): Use buffer_window_count to check + whether the buffer is displayed in some window. + * xdisp.c (message_dolog): Likewise. 2012-12-23 Eli Zaretskii === modified file 'src/buffer.c' --- src/buffer.c 2012-12-24 11:41:28 +0000 +++ src/buffer.c 2012-12-24 12:21:42 +0000 @@ -1341,7 +1341,7 @@ A non-nil FLAG means mark the buffer modified. */) (Lisp_Object flag) { - Lisp_Object fn, buffer, window; + Lisp_Object fn; #ifdef CLASH_DETECTION /* If buffer becoming modified, lock the file. @@ -1394,9 +1394,7 @@ Ideally, I think there should be another mechanism for fontifying buffers without "modifying" buffers, or redisplay should be smarter about updating the `*' in mode lines. --gerd */ - XSETBUFFER (buffer, current_buffer); - window = Fget_buffer_window (buffer, Qt); - if (WINDOWP (window)) + if (buffer_window_count (current_buffer)) { ++update_mode_lines; current_buffer->prevent_redisplay_optimizations_p = 1; === modified file 'src/xdisp.c' --- src/xdisp.c 2012-12-20 14:57:40 +0000 +++ src/xdisp.c 2012-12-24 12:21:42 +0000 @@ -9397,7 +9397,8 @@ int old_windows_or_buffers_changed = windows_or_buffers_changed; ptrdiff_t point_at_end = 0; ptrdiff_t zv_at_end = 0; - Lisp_Object old_deactivate_mark, tem; + Lisp_Object old_deactivate_mark; + bool shown; struct gcpro gcpro1; old_deactivate_mark = Vdeactivate_mark; @@ -9539,9 +9540,9 @@ unchain_marker (XMARKER (oldbegv)); unchain_marker (XMARKER (oldzv)); - tem = Fget_buffer_window (Fcurrent_buffer (), Qt); + shown = buffer_window_count (current_buffer) > 0; set_buffer_internal (oldbuf); - if (NILP (tem)) + if (!shown) windows_or_buffers_changed = old_windows_or_buffers_changed; message_log_need_newline = !nlflag; Vdeactivate_mark = old_deactivate_mark; ------------------------------------------------------------ revno: 111317 fixes bug: http://debbugs.gnu.org/12424 committer: Lars Ingebrigtsen branch nick: trunk timestamp: Mon 2012-12-24 13:14:04 +0100 message: Make smtpmail forget the password if the server says it's invalid * mail/smtpmail.el (smtpmail-try-auth-method): Refactored out into its own function. (smtpmail-try-auth-methods): Forget the user name/password if the login is unsuccessful. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-12-22 22:03:18 +0000 +++ lisp/ChangeLog 2012-12-24 12:14:04 +0000 @@ -1,3 +1,10 @@ +2012-12-24 Lars Ingebrigtsen + + * mail/smtpmail.el (smtpmail-try-auth-method): Refactored out into + its own function. + (smtpmail-try-auth-methods): Forget the user name/password if the + login is unsuccessful (bug#12424). + 2012-12-22 Michael Albinus * notifications.el (notifications-notify): Protect body with === modified file 'lisp/mail/smtpmail.el' --- lisp/mail/smtpmail.el 2012-09-04 16:00:10 +0000 +++ lisp/mail/smtpmail.el 2012-12-24 12:14:04 +0000 @@ -529,6 +529,18 @@ password (plist-get auth-info :secret))) (when (functionp password) (setq password (funcall password))) + (let ((result (catch 'done + (smtpmail-try-auth-method process mech user password)))) + (if (stringp result) + (progn + (auth-source-forget+ :host host :port port) + (throw 'done result)) + (when save-function + (funcall save-function)) + result)))) + +(defun smtpmail-try-auth-method (process mech user password) + (let (ret) (cond ((or (not mech) (not user) @@ -554,16 +566,11 @@ ;; are taken as a response to the server, and the ;; authentication fails. (encoded (base64-encode-string response t))) - (smtpmail-command-or-throw process encoded) - (when save-function - (funcall save-function))))) + (smtpmail-command-or-throw process encoded)))) ((eq mech 'login) (smtpmail-command-or-throw process "AUTH LOGIN") - (smtpmail-command-or-throw - process (base64-encode-string user t)) - (smtpmail-command-or-throw process (base64-encode-string password t)) - (when save-function - (funcall save-function))) + (smtpmail-command-or-throw process (base64-encode-string user t)) + (smtpmail-command-or-throw process (base64-encode-string password t))) ((eq mech 'plain) ;; We used to send an empty initial request, and wait for an ;; empty response, and then send the password, but this @@ -574,9 +581,7 @@ process (concat "AUTH PLAIN " (base64-encode-string (concat "\0" user "\0" password) t)) - 235) - (when save-function - (funcall save-function))) + 235)) (t (error "Mechanism %s not implemented" mech))))) ------------------------------------------------------------ revno: 111316 committer: Dmitry Antipov branch nick: trunk timestamp: Mon 2012-12-24 15:41:28 +0400 message: * buffer.h (BUF_COMPACT): New macro to follow the common style. * buffer.c (Fget_buffer_create): Use it to set compact field of struct buffer_text to avoid accessing an uninitialized value when compact_buffer is called for the first time. (compact_buffer): Use convenient BUF_COMPACT and BUF_MODIFF. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-12-23 17:16:33 +0000 +++ src/ChangeLog 2012-12-24 11:41:28 +0000 @@ -1,3 +1,11 @@ +2012-12-24 Dmitry Antipov + + * buffer.h (BUF_COMPACT): New macro to follow the common style. + * buffer.c (Fget_buffer_create): Use it to set compact field of + struct buffer_text to avoid accessing an uninitialized value + when compact_buffer is called for the first time. + (compact_buffer): Use convenient BUF_COMPACT and BUF_MODIFF. + 2012-12-23 Eli Zaretskii * w32.c (acl_set_file): If setting the file security descriptor === modified file 'src/buffer.c' --- src/buffer.c 2012-12-21 19:32:43 +0000 +++ src/buffer.c 2012-12-24 11:41:28 +0000 @@ -575,6 +575,7 @@ BUF_CHARS_MODIFF (b) = 1; BUF_OVERLAY_MODIFF (b) = 1; BUF_SAVE_MODIFF (b) = 1; + BUF_COMPACT (b) = 1; set_buffer_intervals (b, NULL); BUF_UNCHANGED_MODIFIED (b) = 1; BUF_OVERLAY_UNCHANGED_MODIFIED (b) = 1; @@ -1669,7 +1670,7 @@ which aren't changed since last compaction. */ if (BUFFER_LIVE_P (buffer) && (buffer->base_buffer == NULL) - && (buffer->text->compact != buffer->text->modiff)) + && (BUF_COMPACT (buffer) != BUF_MODIFF (buffer))) { /* If a buffer's undo list is Qt, that means that undo is turned off in that buffer. Calling truncate_undo_list on @@ -1694,7 +1695,7 @@ current_buffer = save_current; } } - buffer->text->compact = buffer->text->modiff; + BUF_COMPACT (buffer) = BUF_MODIFF (buffer); } } === modified file 'src/buffer.h' --- src/buffer.h 2012-12-10 17:34:47 +0000 +++ src/buffer.h 2012-12-24 11:41:28 +0000 @@ -193,6 +193,9 @@ /* FIXME: should we move this into ->text->auto_save_modiff? */ #define BUF_AUTOSAVE_MODIFF(buf) ((buf)->auto_save_modified) +/* Compaction count. */ +#define BUF_COMPACT(buf) ((buf)->text->compact) + /* Marker chain of buffer. */ #define BUF_MARKERS(buf) ((buf)->text->markers) ------------------------------------------------------------ revno: 111315 committer: Glenn Morris branch nick: trunk timestamp: Mon 2012-12-24 06:17:34 -0500 message: Auto-commit of generated files. diff: === modified file 'autogen/configure' --- autogen/configure 2012-12-21 19:32:43 +0000 +++ autogen/configure 2012-12-24 11:17:34 +0000 @@ -3684,7 +3684,6 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } - mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; ------------------------------------------------------------ revno: 111314 committer: Paul Eggert branch nick: trunk timestamp: Sun 2012-12-23 22:24:08 -0800 message: Merge from gnulib. diff: === modified file 'ChangeLog' --- ChangeLog 2012-12-21 19:32:43 +0000 +++ ChangeLog 2012-12-24 06:24:08 +0000 @@ -1,3 +1,10 @@ +2012-12-24 Paul Eggert + + Merge from gnulib, incorporating: + 2012-12-21 AC_PROG_MKDIR_P: port workaround to pre-2.62 Autoconf + 2012-12-20 AC_PROG_MKDIR_P: don't workaround if not buggy + 2012-12-17 filemode, sys_stat: Handle MPX files a la AIX. + 2012-12-21 Akinori MUSHA (tiny change) * Makefile.in (install-arch-dep): Ignore chmod errors. (Bug#13233) === modified file 'lib/filemode.c' --- lib/filemode.c 2012-05-26 23:14:36 +0000 +++ lib/filemode.c 2012-12-24 06:24:08 +0000 @@ -78,7 +78,7 @@ return 'C'; if (S_ISDOOR (bits)) return 'D'; - if (S_ISMPB (bits) || S_ISMPC (bits)) + if (S_ISMPB (bits) || S_ISMPC (bits) || S_ISMPX (bits)) return 'm'; if (S_ISNWK (bits)) return 'n'; === modified file 'lib/sys_stat.in.h' --- lib/sys_stat.in.h 2012-11-30 18:25:59 +0000 +++ lib/sys_stat.in.h 2012-12-24 06:24:08 +0000 @@ -150,6 +150,10 @@ # endif #endif +#ifndef S_ISMPX /* AIX */ +# define S_ISMPX(m) 0 +#endif + #ifndef S_ISNAM /* Xenix */ # ifdef S_IFNAM # define S_ISNAM(m) (((m) & S_IFMT) == S_IFNAM) === modified file 'm4/gnulib-common.m4' --- m4/gnulib-common.m4 2012-06-22 17:20:00 +0000 +++ m4/gnulib-common.m4 2012-12-24 06:24:08 +0000 @@ -294,6 +294,8 @@ # for interoperability with automake-1.9.6 from autoconf-2.62. # Remove this macro when we can assume autoconf >= 2.62 or # autoconf >= 2.60 && automake >= 1.10. +# AC_AUTOCONF_VERSION was introduced in 2.62, so use that as the witness. +m4_ifndef([AC_AUTOCONF_VERSION],[ m4_ifdef([AC_PROG_MKDIR_P], [ dnl For automake-1.9.6 && autoconf < 2.62: Ensure MKDIR_P is AC_SUBSTed. m4_define([AC_PROG_MKDIR_P], @@ -304,13 +306,15 @@ [AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake MKDIR_P='$(mkdir_p)' AC_SUBST([MKDIR_P])])]) +]) # AC_C_RESTRICT # This definition overrides the AC_C_RESTRICT macro from autoconf 2.60..2.61, # so that mixed use of GNU C and GNU C++ and mixed use of Sun C and Sun C++ # works. # This definition can be removed once autoconf >= 2.62 can be assumed. -m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.62]),[-1],[ +# AC_AUTOCONF_VERSION was introduced in 2.62, so use that as the witness. +m4_ifndef([AC_AUTOCONF_VERSION],[ AC_DEFUN([AC_C_RESTRICT], [AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict], [ac_cv_c_restrict=no