Now on revision 113165. ------------------------------------------------------------ revno: 113165 committer: Glenn Morris branch nick: trunk timestamp: Mon 2013-06-24 19:31:09 -0700 message: Shameful typo diff: === modified file 'admin/notes/www' --- admin/notes/www 2013-06-25 02:15:00 +0000 +++ admin/notes/www 2013-06-25 02:31:09 +0000 @@ -42,7 +42,7 @@ the mod_rewrite rule does not use the [R] flag.) Sometimes this is what you want, sometimes not. -ii) it doesn't work write if the new page is in a different directory +ii) it doesn't work right if the new page is in a different directory to the old page: relative links from the visited page will break. ** Use a .htaccess file ------------------------------------------------------------ revno: 113164 committer: Glenn Morris branch nick: trunk timestamp: Mon 2013-06-24 19:24:32 -0700 message: * test/automated/occur-tests.el (occur-test-create): New function. Use it to create separate tests for each element, so we run them all rather than stopping at the first error. diff: === modified file 'test/ChangeLog' --- test/ChangeLog 2013-06-24 23:52:33 +0000 +++ test/ChangeLog 2013-06-25 02:24:32 +0000 @@ -1,3 +1,9 @@ +2013-06-25 Glenn Morris + + * automated/occur-tests.el (occur-test-create): New function. + Use it to create separate tests for each element, so we run them + all rather than stopping at the first error. + 2013-06-24 Glenn Morris * automated/occur-tests.el (occur-tests): === modified file 'test/automated/occur-tests.el' --- test/automated/occur-tests.el 2013-06-24 23:52:33 +0000 +++ test/automated/occur-tests.el 2013-06-25 02:24:32 +0000 @@ -335,12 +335,18 @@ (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))) -(ert-deftest occur-tests () - "Test the functionality of `occur'. -The test data is in the `occur-tests' constant." - (let ((occur-hook nil)) - (dolist (test occur-tests) - (should (occur-test-case test))))) +(defun occur-test-create (n) + "Create a test for element N of the `occur-tests' constant." + (let ((testname (intern (format "occur-test-%.2d" n))) + (testdoc (format "Test element %d of `occur-tests'." n))) + (eval + `(ert-deftest ,testname () + ,testdoc + (let (occur-hook) + (should (occur-test-case (nth ,n occur-tests)))))))) + +(dotimes (i (length occur-tests)) + (occur-test-create i)) (provide 'occur-tests) ------------------------------------------------------------ revno: 113163 committer: Glenn Morris branch nick: trunk timestamp: Mon 2013-06-24 19:15:00 -0700 message: Add some notes related to the Emacs www pages diff: === modified file 'admin/FOR-RELEASE' --- admin/FOR-RELEASE 2012-05-08 06:44:18 +0000 +++ admin/FOR-RELEASE 2013-06-25 02:15:00 +0000 @@ -10,6 +10,14 @@ emacs -Q --eval "(progn (require 'info) (setq Info-directory-list '(\".\")))" \ -f info-xref-check-all +Setting Info-directory-list avoids having system info pages confuse +things. References to external manuals will be flagged as +uncheckable. You should still check these, and also that each +external manual has an appropriate redirect in the file manual/.htaccess +in the web pages repository. E.g.: +Redirect /software/emacs/manual/html_mono/automake.html /software/automake/manual/automake.html +Redirect /software/emacs/manual/html_node/automake/ /software/automake/manual/html_node/ + make emacs.dvi, elisp.dvi, and deal with any errors (undefined references etc) in the output. Break any overfull lines. Underfull hboxes are not serious, but it can be nice to get rid of === added file 'admin/notes/www' --- admin/notes/www 1970-01-01 00:00:00 +0000 +++ admin/notes/www 2013-06-25 02:15:00 +0000 @@ -0,0 +1,82 @@ +-*- outline -*- + +Copyright (C) 2013 Free Software Foundation, Inc. +See the end of the file for license conditions. + +NOTES FOR EMACS WWW PAGES + +* Renaming pages, redirects + +Sometimes you want to move a page to a new location. +If the old location might be referenced somewhere else, you should add +some form of redirect to the new location. There are several ways to +do this: + +** Use a refresh directive in the old file +https://www.gnu.org/server/standards/README.webmastering.html#htaccess + +Change the entire contents of the old file to be something like: + + + +I can't think of any reason to use this method. + +** Use a .symlinks file +https://www.gnu.org/server/standards/README.webmastering.html#symlinks + +This is really an interface to mod_rewrite rules, but it acts like +symlinks. Remove old-page.html altogether, and create a ".symlinks" +file in the relevant directory, with contents of the form: + + # This is a comment line. + old-page.html new-page.html + +Anyone visiting old-page.html will be shown the contents of new-page.html. +Note that changes to .symlinks file are only updated periodically on +the server via cron (twice an hour?). So there will be a delay (of up +to 30 minutes?) before you see your changes take effect. + +This method is ok, but: +i) a person visiting old-page.html has no idea that the page has moved. +They still see old-page.html in their address bar. (In other words, +the mod_rewrite rule does not use the [R] flag.) Sometimes this is +what you want, sometimes not. + +ii) it doesn't work write if the new page is in a different directory +to the old page: relative links from the visited page will break. + +** Use a .htaccess file + +Remove old-page.html altogether, and create a ".htaccess" file in the +relevant directory, with contents of the form: + + # This is a comment line. + Redirect 301 /software/emacs/old-page.html /software/emacs/dir/new-page.html + +Use "301" for a permanent redirection, otherwise you can omit the number. +Note that paths must (?) be relative to the top-level www.gnu.org. + +I think this is the best method. You can specify temporary or +permanent redirects, and changes go live more-or-less straight away. + +This method is useful for making cross-references to non-Emacs manuals +work; see manual/.htaccess in the repository. You only have to add a +single redirect for every given external manual, you can redirect +html_node to hmtl_node and html_mono to html_mono. + + + +This file is part of GNU Emacs. + +GNU Emacs is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +GNU Emacs is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Emacs. If not, see . ------------------------------------------------------------ revno: 113162 committer: Leo Liu branch nick: trunk timestamp: Tue 2013-06-25 09:04:06 +0800 message: * ido.el (ido-read-internal): Allow forward slash on windows. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-06-24 17:42:22 +0000 +++ lisp/ChangeLog 2013-06-25 01:04:06 +0000 @@ -1,3 +1,7 @@ +2013-06-25 Leo Liu + + * ido.el (ido-read-internal): Allow forward slash on windows. + 2013-06-24 Lars Magne Ingebrigtsen * net/eww.el (eww): Start of strings is \\`, not ^. === modified file 'lisp/ido.el' --- lisp/ido.el 2013-06-24 04:08:10 +0000 +++ lisp/ido.el 2013-06-25 01:04:06 +0000 @@ -2142,8 +2142,9 @@ (setq ido-set-default-item t))) ((string-match (if (memq system-type '(windows-nt ms-dos)) - "\\`[a-zA-Z]:\\|[\\][^\\]" - "/[^/]") ido-selected) + "\\`[a-zA-Z]:\\|[/\\][^/\\]" + "/[^/]") + ido-selected) (ido-set-current-directory (file-name-directory ido-selected)) (setq ido-set-default-item t)) ------------------------------------------------------------ revno: 113161 committer: Glenn Morris branch nick: trunk timestamp: Mon 2013-06-24 19:52:33 -0400 message: * test/automated/occur-tests.el (occur-tests): Update for 2013-05-29 change to occur header line. diff: === modified file 'test/ChangeLog' --- test/ChangeLog 2013-06-21 14:36:13 +0000 +++ test/ChangeLog 2013-06-24 23:52:33 +0000 @@ -1,3 +1,8 @@ +2013-06-24 Glenn Morris + + * automated/occur-tests.el (occur-tests): + Update for 2013-05-29 change to occur header line. + 2013-06-21 Eduard Wiebe Test suite for flymake. === modified file 'test/automated/occur-tests.el' --- test/automated/occur-tests.el 2013-01-01 09:11:05 +0000 +++ test/automated/occur-tests.el 2013-06-24 23:52:33 +0000 @@ -35,7 +35,7 @@ xex fx " "\ -5 matches for \"x\" in buffer: *test-occur* +6 matches in 5 lines for \"x\" in buffer: *test-occur* 1:xa 3:cx 4:xd ------------------------------------------------------------ revno: 113160 committer: Lars Magne Ingebrigtsen branch nick: trunk timestamp: Mon 2013-06-24 19:42:22 +0200 message: * net/eww.el (eww): Start of strings is \\`, not ^. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-06-24 17:41:26 +0000 +++ lisp/ChangeLog 2013-06-24 17:42:22 +0000 @@ -1,3 +1,7 @@ +2013-06-24 Lars Magne Ingebrigtsen + + * net/eww.el (eww): Start of strings is \\`, not ^. + 2013-06-24 Ivan Kanis * net/shr.el (shr-browse-url): Fix interactive spec. === modified file 'lisp/net/eww.el' --- lisp/net/eww.el 2013-06-24 17:38:51 +0000 +++ lisp/net/eww.el 2013-06-24 17:42:22 +0000 @@ -108,7 +108,7 @@ ;; some site don't redirect final / (when (string= (url-filename (url-generic-parse-url url)) "") (setq url (concat url "/")))) - (unless (string-match-p "^file:" url) + (unless (string-match-p "\\'file:" url) (setq url (concat eww-search-prefix (replace-regexp-in-string " " "+" url))))) (url-retrieve url 'eww-render (list url))) ------------------------------------------------------------ revno: 113159 author: Ivan Kanis committer: Lars Magne Ingebrigtsen branch nick: trunk timestamp: Mon 2013-06-24 19:41:26 +0200 message: * net/shr.el (shr-browse-url): Fix interactive spec. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-06-24 17:38:51 +0000 +++ lisp/ChangeLog 2013-06-24 17:41:26 +0000 @@ -1,5 +1,7 @@ 2013-06-24 Ivan Kanis + * net/shr.el (shr-browse-url): Fix interactive spec. + * net/eww.el (eww): Add a trailing slash to domain names. 2013-06-24 Juanma Barranquero === modified file 'lisp/net/shr.el' --- lisp/net/shr.el 2013-06-24 14:03:26 +0000 +++ lisp/net/shr.el 2013-06-24 17:41:26 +0000 @@ -648,7 +648,7 @@ (defun shr-browse-url (&optional external) "Browse the URL under point. If EXTERNAL, browse the URL using `shr-external-browser'." - (interactive "p") + (interactive "P") (let ((url (get-text-property (point) 'shr-url))) (cond ((not url) ------------------------------------------------------------ revno: 113158 author: Ivan Kanis committer: Lars Magne Ingebrigtsen branch nick: trunk timestamp: Mon 2013-06-24 19:38:51 +0200 message: * net/eww.el (eww): Add a trailing slash to domain names. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-06-24 16:06:47 +0000 +++ lisp/ChangeLog 2013-06-24 17:38:51 +0000 @@ -1,3 +1,7 @@ +2013-06-24 Ivan Kanis + + * net/eww.el (eww): Add a trailing slash to domain names. + 2013-06-24 Juanma Barranquero * faces.el (face-spec-recalc): Revert part of revno:113147 (bug#14705). === modified file 'lisp/net/eww.el' --- lisp/net/eww.el 2013-06-24 13:57:35 +0000 +++ lisp/net/eww.el 2013-06-24 17:38:51 +0000 @@ -102,8 +102,12 @@ (interactive "sEnter URL or keywords: ") (if (and (= (length (split-string url)) 1) (> (length (split-string url "\\.")) 1)) - (unless (string-match-p "\\`[a-zA-Z][-a-zA-Z0-9+.]*://" url) - (setq url (concat "http://" url))) + (progn + (unless (string-match-p "\\`[a-zA-Z][-a-zA-Z0-9+.]*://" url) + (setq url (concat "http://" url))) + ;; some site don't redirect final / + (when (string= (url-filename (url-generic-parse-url url)) "") + (setq url (concat url "/")))) (unless (string-match-p "^file:" url) (setq url (concat eww-search-prefix (replace-regexp-in-string " " "+" url))))) ------------------------------------------------------------ revno: 113157 fixes bug: http://debbugs.gnu.org/14705 committer: Juanma Barranquero branch nick: trunk timestamp: Mon 2013-06-24 18:06:47 +0200 message: lisp/faces.el (face-spec-recalc): Revert part of revno:113147. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-06-24 14:03:26 +0000 +++ lisp/ChangeLog 2013-06-24 16:06:47 +0000 @@ -1,3 +1,7 @@ +2013-06-24 Juanma Barranquero + + * faces.el (face-spec-recalc): Revert part of revno:113147 (bug#14705). + 2013-06-24 Lars Magne Ingebrigtsen * net/shr.el (shr-browse-url): Use an external browser if given a === modified file 'lisp/faces.el' --- lisp/faces.el 2013-06-23 20:29:18 +0000 +++ lisp/faces.el 2013-06-24 16:06:47 +0000 @@ -1627,7 +1627,6 @@ "Reset the face attributes of FACE on FRAME according to its specs. This applies the defface/custom spec first, then the custom theme specs, then the override spec." - (check-face face) (while (get face 'face-alias) (setq face (get face 'face-alias))) (face-spec-reset-face face frame) ------------------------------------------------------------ revno: 113156 committer: Lars Magne Ingebrigtsen branch nick: trunk timestamp: Mon 2013-06-24 16:03:26 +0200 message: * net/shr.el (shr-browse-url): Use an external browser if given a prefix. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-06-24 13:57:35 +0000 +++ lisp/ChangeLog 2013-06-24 14:03:26 +0000 @@ -1,5 +1,8 @@ 2013-06-24 Lars Magne Ingebrigtsen + * net/shr.el (shr-browse-url): Use an external browser if given a + prefix. + * net/eww.el (eww-external-browser): Moved to shr. 2013-06-24 Ivan Kanis === modified file 'lisp/net/shr.el' --- lisp/net/shr.el 2013-06-24 13:57:35 +0000 +++ lisp/net/shr.el 2013-06-24 14:03:26 +0000 @@ -645,9 +645,10 @@ (forward-line 1) (goto-char end)))))) -(defun shr-browse-url () - "Browse the URL under point." - (interactive) +(defun shr-browse-url (&optional external) + "Browse the URL under point. +If EXTERNAL, browse the URL using `shr-external-browser'." + (interactive "p") (let ((url (get-text-property (point) 'shr-url))) (cond ((not url) @@ -655,7 +656,9 @@ ((string-match "^mailto:" url) (browse-url-mail url)) (t - (browse-url url))))) + (if external + (funcall shr-external-browser url) + (browse-url url)))))) (defun shr-save-contents (directory) "Save the contents from URL in a file." ------------------------------------------------------------ revno: 113155 committer: Lars Magne Ingebrigtsen branch nick: trunk timestamp: Mon 2013-06-24 15:57:35 +0200 message: * net/eww.el (eww-external-browser): Moved to shr. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-06-24 13:42:07 +0000 +++ lisp/ChangeLog 2013-06-24 13:57:35 +0000 @@ -1,3 +1,7 @@ +2013-06-24 Lars Magne Ingebrigtsen + + * net/eww.el (eww-external-browser): Moved to shr. + 2013-06-24 Ivan Kanis * net/eww.el (eww): Work more correctly for file: URLs. === modified file 'lisp/net/eww.el' --- lisp/net/eww.el 2013-06-24 13:42:07 +0000 +++ lisp/net/eww.el 2013-06-24 13:57:35 +0000 @@ -50,18 +50,6 @@ :group 'eww :type 'string) -(defcustom eww-external-browser - (cond ((eq system-type 'windows-nt) - 'browse-url-default-windows-browser) - ((eq system-type 'darwin) - 'browse-url-default-macosx-browser) - (t - 'browse-url-netscape)) - "Function used to launch an external browser." - :version "24.4" - :group 'eww - :type 'function) - (defface eww-form-submit '((((type x w32 ns) (class color)) ; Like default mode line :box (:line-width 2 :style released-button) @@ -845,9 +833,9 @@ (defun eww-browse-with-external-browser () "Browse the current URL with an external browser. -The browser to used is specified by the `eww-external-browser' variable." +The browser to used is specified by the `shr-external-browser' variable." (interactive) - (funcall eww-external-browser eww-current-url)) + (funcall shr-external-browser eww-current-url)) (defun eww-yank-page-url () (interactive) === modified file 'lisp/net/shr.el' --- lisp/net/shr.el 2013-06-23 19:24:27 +0000 +++ lisp/net/shr.el 2013-06-24 13:57:35 +0000 @@ -37,7 +37,7 @@ (defgroup shr nil "Simple HTML Renderer" :version "24.1" - :group 'mail) + :group 'hypermedia) (defcustom shr-max-image-proportion 0.9 "How big pictures displayed are in relation to the window they're in. @@ -93,6 +93,12 @@ :type 'string :group 'shr) +(defcustom shr-external-browser 'browse-url-default-browser + "Function used to launch an external browser." + :version "24.4" + :group 'shr + :type 'function) + (defvar shr-content-function nil "If bound, this should be a function that will return the content. This is used for cid: URLs, and the function is called with the ------------------------------------------------------------ revno: 113154 author: Ivan Kanis committer: Lars Magne Ingebrigtsen branch nick: trunk timestamp: Mon 2013-06-24 15:42:07 +0200 message: eww improvements * net/eww.el (eww): Work more correctly for file: URLs. (eww-detect-charset): Allow quoted charsets. (eww-yank-page-url): New command and keystroke. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-06-24 07:07:08 +0000 +++ lisp/ChangeLog 2013-06-24 13:42:07 +0000 @@ -1,3 +1,9 @@ +2013-06-24 Ivan Kanis + + * net/eww.el (eww): Work more correctly for file: URLs. + (eww-detect-charset): Allow quoted charsets. + (eww-yank-page-url): New command and keystroke. + 2013-06-24 Daiki Ueno * epg.el (epg-make-context): Check if PROTOCOL is valid; embed the === modified file 'lisp/net/eww.el' --- lisp/net/eww.el 2013-06-23 18:29:30 +0000 +++ lisp/net/eww.el 2013-06-24 13:42:07 +0000 @@ -116,8 +116,9 @@ (> (length (split-string url "\\.")) 1)) (unless (string-match-p "\\`[a-zA-Z][-a-zA-Z0-9+.]*://" url) (setq url (concat "http://" url))) - (setq url (concat eww-search-prefix - (replace-regexp-in-string " " "+" url)))) + (unless (string-match-p "^file:" url) + (setq url (concat eww-search-prefix + (replace-regexp-in-string " " "+" url))))) (url-retrieve url 'eww-render (list url))) ;;;###autoload @@ -189,7 +190,7 @@ (pt (point))) (or (and html-p (re-search-forward - "]*charset=\"?\\([^\t\n\r \"/>]+\\)" nil t) + "]*charset=\"?\\([^\t\n\r \"/>]+\\)[\\\"'.*]" nil t) (goto-char pt) (match-string 1)) (and (looking-at @@ -330,6 +331,7 @@ (define-key map "u" 'eww-up-url) (define-key map "t" 'eww-top-url) (define-key map "w" 'eww-browse-with-external-browser) + (define-key map "y" 'eww-yank-page-url) map)) (define-derived-mode eww-mode nil "eww" @@ -847,6 +849,10 @@ (interactive) (funcall eww-external-browser eww-current-url)) +(defun eww-yank-page-url () + (interactive) + (message eww-current-url) + (kill-new eww-current-url)) (provide 'eww) ;;; eww.el ends here ------------------------------------------------------------ revno: 113153 committer: Glenn Morris branch nick: trunk timestamp: Mon 2013-06-24 06:17:44 -0400 message: Auto-commit of generated files. diff: === modified file 'autogen/configure' --- autogen/configure 2013-06-24 06:58:52 +0000 +++ autogen/configure 2013-06-24 10:17:44 +0000 @@ -12862,7 +12862,8 @@ CFLAGS="$CFLAGS $XFT_CFLAGS" XFT_LIBS="-lXrender $XFT_LIBS" LIBS="$XFT_LIBS $LIBS" - ac_fn_c_check_header_mongrel "$LINENO" "X11/Xft/Xft.h" "ac_cv_header_X11_Xft_Xft_h" "$ac_includes_default" + ac_fn_c_check_header_compile "$LINENO" "X11/Xft/Xft.h" "ac_cv_header_X11_Xft_Xft_h" "#include +" if test "x$ac_cv_header_X11_Xft_Xft_h" = x""yes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XftFontOpen in -lXft" >&5 $as_echo_n "checking for XftFontOpen in -lXft... " >&6; } ------------------------------------------------------------ revno: 113152 committer: Daiki Ueno branch nick: trunk timestamp: Mon 2013-06-24 16:07:08 +0900 message: epg.el: Add context option `home-directory' and `program'. * epg.el (epg-make-context): Check if PROTOCOL is valid; embed the file name of gpg executable. (epg-context-program): New function. (epg-context-home-directory): New function. (epg-context-set-program): New function. (epg-context-set-home-directory): New function. (epg--start): Use `epg-context-program' instead of 'epg-gpg-program'. (epg--list-keys-1): Likewise. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-06-24 02:15:56 +0000 +++ lisp/ChangeLog 2013-06-24 07:07:08 +0000 @@ -1,3 +1,15 @@ +2013-06-24 Daiki Ueno + + * epg.el (epg-make-context): Check if PROTOCOL is valid; embed the + file name of gpg executable. + (epg-context-program): New function. + (epg-context-home-directory): New function. + (epg-context-set-program): New function. + (epg-context-set-home-directory): New function. + (epg--start): Use `epg-context-program' instead of + 'epg-gpg-program'. + (epg--list-keys-1): Likewise. + 2013-06-24 Leo Liu * ido.el (ido-read-internal): Fix bug#14620. === modified file 'lisp/epg.el' --- lisp/epg.el 2013-04-22 04:53:05 +0000 +++ lisp/epg.el 2013-06-24 07:07:08 +0000 @@ -190,8 +190,17 @@ cipher-algorithm digest-algorithm compress-algorithm) "Return a context object." + (unless protocol + (setq protocol 'OpenPGP)) + (unless (memq protocol '(OpenPGP CMS)) + (signal 'epg-error (list "unknown protocol" protocol))) (cons 'epg-context - (vector (or protocol 'OpenPGP) armor textmode include-certs + (vector protocol + (if (eq protocol 'OpenPGP) + epg-gpg-program + epg-gpgsm-program) + epg-gpg-home-directory + armor textmode include-certs cipher-algorithm digest-algorithm compress-algorithm (list #'epg-passphrase-callback-function) nil @@ -203,97 +212,109 @@ (signal 'wrong-type-argument (list 'epg-context-p context))) (aref (cdr context) 0)) +(defun epg-context-program (context) + "Return the gpg or gpgsm executable used within CONTEXT." + (unless (eq (car-safe context) 'epg-context) + (signal 'wrong-type-argument (list 'epg-context-p context))) + (aref (cdr context) 1)) + +(defun epg-context-home-directory (context) + "Return the GnuPG home directory used in CONTEXT." + (unless (eq (car-safe context) 'epg-context) + (signal 'wrong-type-argument (list 'epg-context-p context))) + (aref (cdr context) 2)) + (defun epg-context-armor (context) "Return t if the output should be ASCII armored in CONTEXT." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aref (cdr context) 1)) + (aref (cdr context) 3)) (defun epg-context-textmode (context) "Return t if canonical text mode should be used in CONTEXT." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aref (cdr context) 2)) + (aref (cdr context) 4)) (defun epg-context-include-certs (context) "Return how many certificates should be included in an S/MIME signed message." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aref (cdr context) 3)) + (aref (cdr context) 5)) (defun epg-context-cipher-algorithm (context) "Return the cipher algorithm in CONTEXT." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aref (cdr context) 4)) + (aref (cdr context) 6)) (defun epg-context-digest-algorithm (context) "Return the digest algorithm in CONTEXT." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aref (cdr context) 5)) + (aref (cdr context) 7)) (defun epg-context-compress-algorithm (context) "Return the compress algorithm in CONTEXT." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aref (cdr context) 6)) + (aref (cdr context) 8)) (defun epg-context-passphrase-callback (context) "Return the function used to query passphrase." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aref (cdr context) 7)) + (aref (cdr context) 9)) (defun epg-context-progress-callback (context) "Return the function which handles progress update." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aref (cdr context) 8)) + (aref (cdr context) 10)) (defun epg-context-signers (context) "Return the list of key-id for signing." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aref (cdr context) 9)) + (aref (cdr context) 11)) (defun epg-context-sig-notations (context) "Return the list of notations for signing." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aref (cdr context) 10)) + (aref (cdr context) 12)) (defun epg-context-process (context) "Return the process object of `epg-gpg-program'. This function is for internal use only." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aref (cdr context) 11)) + (aref (cdr context) 13)) (defun epg-context-output-file (context) "Return the output file of `epg-gpg-program'. This function is for internal use only." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aref (cdr context) 12)) + (aref (cdr context) 14)) (defun epg-context-result (context) "Return the result of the previous cryptographic operation." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aref (cdr context) 13)) + (aref (cdr context) 15)) (defun epg-context-operation (context) "Return the name of the current cryptographic operation." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aref (cdr context) 14)) + (aref (cdr context) 16)) (defun epg-context-pinentry-mode (context) "Return the mode of pinentry invocation." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aref (cdr context) 15)) + (aref (cdr context) 17)) (defun epg-context-set-protocol (context protocol) "Set the protocol used within CONTEXT." @@ -301,41 +322,53 @@ (signal 'wrong-type-argument (list 'epg-context-p context))) (aset (cdr context) 0 protocol)) +(defun epg-context-set-program (context protocol) + "Set the gpg or gpgsm executable used within CONTEXT." + (unless (eq (car-safe context) 'epg-context) + (signal 'wrong-type-argument (list 'epg-context-p context))) + (aset (cdr context) 1 protocol)) + +(defun epg-context-set-home-directory (context directory) + "Set the GnuPG home directory." + (unless (eq (car-safe context) 'epg-context) + (signal 'wrong-type-argument (list 'epg-context-p context))) + (aset (cdr context) 2 directory)) + (defun epg-context-set-armor (context armor) "Specify if the output should be ASCII armored in CONTEXT." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aset (cdr context) 1 armor)) + (aset (cdr context) 3 armor)) (defun epg-context-set-textmode (context textmode) "Specify if canonical text mode should be used in CONTEXT." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aset (cdr context) 2 textmode)) + (aset (cdr context) 4 textmode)) (defun epg-context-set-include-certs (context include-certs) "Set how many certificates should be included in an S/MIME signed message." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aset (cdr context) 3 include-certs)) + (aset (cdr context) 5 include-certs)) (defun epg-context-set-cipher-algorithm (context cipher-algorithm) "Set the cipher algorithm in CONTEXT." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aset (cdr context) 4 cipher-algorithm)) + (aset (cdr context) 6 cipher-algorithm)) (defun epg-context-set-digest-algorithm (context digest-algorithm) "Set the digest algorithm in CONTEXT." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aset (cdr context) 5 digest-algorithm)) + (aset (cdr context) 7 digest-algorithm)) (defun epg-context-set-compress-algorithm (context compress-algorithm) "Set the compress algorithm in CONTEXT." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aset (cdr context) 6 compress-algorithm)) + (aset (cdr context) 8 compress-algorithm)) (defun epg-context-set-passphrase-callback (context passphrase-callback) @@ -354,7 +387,7 @@ query by itself and Emacs can intercept them." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aset (cdr context) 7 (if (consp passphrase-callback) + (aset (cdr context) 9 (if (consp passphrase-callback) passphrase-callback (list passphrase-callback)))) @@ -371,7 +404,7 @@ callback data (if any)." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aset (cdr context) 8 (if (consp progress-callback) + (aset (cdr context) 10 (if (consp progress-callback) progress-callback (list progress-callback)))) @@ -379,39 +412,39 @@ "Set the list of key-id for signing." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aset (cdr context) 9 signers)) + (aset (cdr context) 11 signers)) (defun epg-context-set-sig-notations (context notations) "Set the list of notations for signing." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aset (cdr context) 10 notations)) + (aset (cdr context) 12 notations)) (defun epg-context-set-process (context process) "Set the process object of `epg-gpg-program'. This function is for internal use only." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aset (cdr context) 11 process)) + (aset (cdr context) 13 process)) (defun epg-context-set-output-file (context output-file) "Set the output file of `epg-gpg-program'. This function is for internal use only." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aset (cdr context) 12 output-file)) + (aset (cdr context) 14 output-file)) (defun epg-context-set-result (context result) "Set the result of the previous cryptographic operation." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aset (cdr context) 13 result)) + (aset (cdr context) 15 result)) (defun epg-context-set-operation (context operation) "Set the name of the current cryptographic operation." (unless (eq (car-safe context) 'epg-context) (signal 'wrong-type-argument (list 'epg-context-p context))) - (aset (cdr context) 14 operation)) + (aset (cdr context) 16 operation)) (defun epg-context-set-pinentry-mode (context mode) "Set the mode of pinentry invocation." @@ -419,7 +452,7 @@ (signal 'wrong-type-argument (list 'epg-context-p context))) (unless (memq mode '(nil ask cancel error loopback)) (signal 'epg-error (list "Unknown pinentry mode" mode))) - (aset (cdr context) 15 mode)) + (aset (cdr context) 17 mode)) (defun epg-make-signature (status &optional key-id) "Return a signature object." @@ -1145,9 +1178,7 @@ (if (and (epg-context-process context) (eq (process-status (epg-context-process context)) 'run)) (error "%s is already running in this context" - (if (eq (epg-context-protocol context) 'CMS) - epg-gpgsm-program - epg-gpg-program))) + (epg-context-program context))) (let* ((agent-info (getenv "GPG_AGENT_INFO")) (args (append (list "--no-tty" "--status-fd" "1" @@ -1158,8 +1189,9 @@ (if (and (not (eq (epg-context-protocol context) 'CMS)) (epg-context-progress-callback context)) '("--enable-progress-filter")) - (if epg-gpg-home-directory - (list "--homedir" epg-gpg-home-directory)) + (if (epg-context-home-directory context) + (list "--homedir" + (epg-context-home-directory context))) (unless (eq (epg-context-protocol context) 'CMS) '("--command-fd" "0")) (if (epg-context-armor context) '("--armor")) @@ -1213,9 +1245,7 @@ (format "GPG_AGENT_INFO=%s\n" agent-info) "GPG_AGENT_INFO is not set\n") (format "%s %s\n" - (if (eq (epg-context-protocol context) 'CMS) - epg-gpgsm-program - epg-gpg-program) + (epg-context-program context) (mapconcat #'identity args " "))))) (with-current-buffer buffer (if (fboundp 'set-buffer-multibyte) @@ -1241,9 +1271,7 @@ (set-default-file-modes 448) (setq process (apply #'start-process "epg" buffer - (if (eq (epg-context-protocol context) 'CMS) - epg-gpgsm-program - epg-gpg-program) + (epg-context-program context) args))) (set-default-file-modes orig-mode)) (set-process-filter process #'epg--process-filter) @@ -1854,8 +1882,9 @@ (format "Passphrase for %s: " key-id))))))) (defun epg--list-keys-1 (context name mode) - (let ((args (append (if epg-gpg-home-directory - (list "--homedir" epg-gpg-home-directory)) + (let ((args (append (if (epg-context-home-directory context) + (list "--homedir" + (epg-context-home-directory context))) '("--with-colons" "--no-greeting" "--batch" "--with-fingerprint" "--with-fingerprint") (unless (eq (epg-context-protocol context) 'CMS) @@ -1877,9 +1906,7 @@ (setq args (append args (list list-keys-option)))) (with-temp-buffer (apply #'call-process - (if (eq (epg-context-protocol context) 'CMS) - epg-gpgsm-program - epg-gpg-program) + (epg-context-program context) nil (list t nil) nil args) (goto-char (point-min)) (while (re-search-forward "^[a-z][a-z][a-z]:.*" nil t) ------------------------------------------------------------ revno: 113151 [merge] committer: Glenn Morris branch nick: trunk timestamp: Sun 2013-06-23 23:58:52 -0700 message: Merge from emacs-24; up to r111363 diff: === modified file 'ChangeLog' --- ChangeLog 2013-06-22 02:41:14 +0000 +++ ChangeLog 2013-06-24 06:58:52 +0000 @@ -1,3 +1,7 @@ +2013-06-24 Glenn Morris + + * configure.ac: Include X11/X.h when testing for Xft.h. (Bug#14684) + 2013-06-22 Juanma Barranquero * .bzrignore: Add GNU idutils ID database file. === modified file 'configure.ac' --- configure.ac 2013-06-21 01:03:23 +0000 +++ configure.ac 2013-06-24 06:58:52 +0000 @@ -2644,7 +2644,8 @@ XFT_LIBS="-lXrender $XFT_LIBS" LIBS="$XFT_LIBS $LIBS" AC_CHECK_HEADER(X11/Xft/Xft.h, - AC_CHECK_LIB(Xft, XftFontOpen, HAVE_XFT=yes, , $XFT_LIBS)) + AC_CHECK_LIB(Xft, XftFontOpen, HAVE_XFT=yes, , $XFT_LIBS) , , + [[#include ]]) if test "${HAVE_XFT}" = "yes"; then AC_DEFINE(HAVE_XFT, 1, [Define to 1 if you have the Xft library.]) === modified file 'doc/emacs/files.texi' --- doc/emacs/files.texi 2013-05-05 00:51:49 +0000 +++ doc/emacs/files.texi 2013-06-24 06:58:52 +0000 @@ -1267,9 +1267,12 @@ buffer named @file{*diff*}. This works by running the @command{diff} program, using options taken from the variable @code{diff-switches}. The value of @code{diff-switches} should be a string; the default is -@code{"-c"} to specify a context diff. @xref{Top,, Diff, diff, -Comparing and Merging Files}, for more information about the -@command{diff} program. +@code{"-c"} to specify a context diff. +@c Note that the actual name of the info file is diffutils.info, +@c but it adds a dir entry for diff too. +@c On older systems, only "info diff" works, not "info diffutils". +@xref{Top,, Diff, diff, Comparing and Merging Files}, for more +information about the @command{diff} program. The output of the @code{diff} command is shown using a major mode called Diff mode. @xref{Diff Mode}. === modified file 'doc/emacs/rmail.texi' --- doc/emacs/rmail.texi 2013-01-01 09:11:05 +0000 +++ doc/emacs/rmail.texi 2013-06-24 06:52:33 +0000 @@ -1370,6 +1370,7 @@ or IMAP4 protocol, and can retrieve mail from them using a TLS encrypted channel. It also accepts mailbox arguments in @acronym{URL} form. The detailed description of mailbox @acronym{URL}s can be found +@c Note this node seems to be missing in some versions of mailutils.info? in @ref{URL,,,mailutils,Mailbox URL Formats}. In short, a @acronym{URL} is: === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2013-06-23 19:24:27 +0000 +++ doc/lispref/ChangeLog 2013-06-24 06:58:52 +0000 @@ -1,3 +1,11 @@ +2013-06-24 Glenn Morris + + * loading.texi (Autoload): Fix typo. + + * variables.texi (Lexical Binding): Fix typo. + + * functions.texi (Anonymous Functions): Put back ' removed 2012-10-23. + 2013-06-23 Lars Magne Ingebrigtsen * display.texi (ImageMagick Images): Mention :max-width and === modified file 'doc/lispref/functions.texi' --- doc/lispref/functions.texi 2013-05-29 00:24:50 +0000 +++ doc/lispref/functions.texi 2013-06-24 06:58:52 +0000 @@ -974,10 +974,11 @@ compiled. This would not happen if, say, you had constructed the anonymous function by quoting it as a list: +@c Do not unquote this lambda! @example @group (defun double-property (symbol prop) - (change-property symbol prop (lambda (x) (* 2 x)))) + (change-property symbol prop '(lambda (x) (* 2 x)))) @end group @end example === modified file 'doc/lispref/loading.texi' --- doc/lispref/loading.texi 2013-06-13 22:24:52 +0000 +++ doc/lispref/loading.texi 2013-06-24 06:58:52 +0000 @@ -461,7 +461,7 @@ symbol @var{function}. @cindex function cell in autoload -if @var{function} already has non-void function definition that is not +If @var{function} already has a non-void function definition that is not an autoload object, this function does nothing and returns @code{nil}. Otherwise, it constructs an autoload object (@pxref{Autoload Type}), and stores it as the function definition for @var{function}. The === modified file 'doc/lispref/variables.texi' --- doc/lispref/variables.texi 2013-02-27 12:12:20 +0000 +++ doc/lispref/variables.texi 2013-06-12 01:25:53 +0000 @@ -988,7 +988,7 @@ (setq my-ticker (lambda () (setq x (1+ x))))) @result{} (closure ((x . 0) t) () - (1+ x)) + (setq x (1+ x))) (funcall my-ticker) @result{} 1 === modified file 'doc/misc/ChangeLog' --- doc/misc/ChangeLog 2013-06-23 01:48:23 +0000 +++ doc/misc/ChangeLog 2013-06-24 06:58:52 +0000 @@ -1,3 +1,7 @@ +2013-06-24 Glenn Morris + + * eshell.texi: Fix cross-references to other manuals. + 2013-06-23 Glenn Morris * Makefile.in (HTML_TARGETS, html, emacs-faq.html, emacs-faq): === modified file 'doc/misc/eshell.texi' --- doc/misc/eshell.texi 2013-06-10 02:41:49 +0000 +++ doc/misc/eshell.texi 2013-06-24 06:58:52 +0000 @@ -378,12 +378,13 @@ @item define @cmindex define -Define a varalias. @xref{Variable Aliases, , , elisp}. +Define a varalias. +@xref{Variable Aliases, , , elisp, The Emacs Lisp Reference Manual}. @item diff @cmindex diff Use Emacs's internal @code{diff} (not to be confused with -@code{ediff}). @xref{Comparing Files, , , elisp}. +@code{ediff}). @xref{Comparing Files, , , emacs, The GNU Emacs Manual}. @item grep @cmindex grep @@ -422,15 +423,18 @@ @item locate @cmindex locate Alias to Emacs's @code{locate} function, which simply runs the external -@command{locate} command and parses the results. @xref{Dired and `find', , , elisp}. +@command{locate} command and parses the results. +@xref{Dired and Find, , , emacs, The GNU Emacs Manual}. @item make @cmindex make -Run @command{make} through @code{compile}. @xref{Running Compilations under Emacs, , , elisp}. +Run @command{make} through @code{compile}. +@xref{Compilation, , , emacs, The GNU Emacs Manual}. @item occur @cmindex occur -Alias to Emacs's @code{occur}. @xref{Other Search-and-Loop Commands, , , elisp}. +Alias to Emacs's @code{occur}. +@xref{Other Repeating Search, , , emacs, The GNU Emacs Manual}. @item printnl @cmindex printnl @@ -648,7 +652,8 @@ @item $#var Expands to the length of the value bound to @code{var}. Raises an error -if the value is not a sequence (@pxref{Sequences Arrays and Vectors, Sequences, , elisp}). +if the value is not a sequence +(@pxref{Sequences Arrays Vectors, Sequences, , elisp, The Emacs Lisp Reference Manual}). @item $(lisp) Expands to the result of evaluating the S-expression @code{(lisp)}. On @@ -680,7 +685,8 @@ @item $var[hello] Calls @code{assoc} on @code{var} with @code{"hello"}, expecting it to be -an alist (@pxref{Association List Type, Association Lists, , elisp}). +an alist (@pxref{Association List Type, Association Lists, , elisp, +The Emacs Lisp Reference Manual}). @item $#var[hello] Returns the length of the cdr of the element of @code{var} who car is equal @@ -693,9 +699,11 @@ Eshell's globbing syntax is very similar to that of Zsh. Users coming from Bash can still use Bash-style globbing, as there are no incompatibilities. Most globbing is pattern-based expansion, but there -is also predicate-based expansion. See @ref{Filename Generation, , , zsh} +is also predicate-based expansion. See +@ref{Filename Generation, , , zsh, The Z Shell Manual} for full syntax. To customize the syntax and behaviour of globbing in -Eshell see the Customize@footnote{@xref{Customization Settings, Customize, , elisp}.} +Eshell see the Customize@footnote{@xref{Easy Customization, , , emacs, +The GNU Emacs Manual}.} groups ``eshell-glob'' and ``eshell-pred''. @node Input/Output @@ -757,7 +765,8 @@ and to provide a common parent Customize group for the modules.@footnote{ERC provides a similar module facility.} An Eshell module is defined the same as any other library but one requirement: the -module must define a Customize@footnote{@xref{Customization Settings, Customize, , elisp}.} +module must define a Customize@footnote{@xref{Customization, , , +elisp, The Emacs Lisp Reference Manual}.} group using @code{eshell-defgroup} (in place of @code{defgroup}) with @code{eshell-module} as the parent group.@footnote{If the module has no user-customizable options, then there is no need to define it as an ------------------------------------------------------------ Use --include-merged or -n0 to see merged revisions.