diff options
| author | Stefan Monnier | 2014-10-02 11:13:05 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2014-10-02 11:13:05 -0400 |
| commit | d7f413b893012eb5c9c93cd724008c2c1faae56f (patch) | |
| tree | 4db7c6d5c96996c1f144165e03edb8c06fe0b7be | |
| parent | 8eb61e5261cebf6a566b1138562953350080156b (diff) | |
| parent | ef9bcf3b409648f36c5745e22d147f50a144524f (diff) | |
| download | emacs-d7f413b893012eb5c9c93cd724008c2c1faae56f.tar.gz emacs-d7f413b893012eb5c9c93cd724008c2c1faae56f.zip | |
Merge from emacs-24
| -rw-r--r-- | doc/emacs/ChangeLog | 4 | ||||
| -rw-r--r-- | doc/emacs/package.texi | 3 | ||||
| -rw-r--r-- | lisp/ChangeLog | 12 | ||||
| -rw-r--r-- | lisp/emacs-lisp/package.el | 5 | ||||
| -rw-r--r-- | lisp/gnus/ChangeLog | 5 | ||||
| -rw-r--r-- | lisp/progmodes/python.el | 45 | ||||
| -rw-r--r-- | src/ChangeLog | 10 | ||||
| -rw-r--r-- | src/xfaces.c | 29 | ||||
| -rw-r--r-- | test/ChangeLog | 7 | ||||
| -rw-r--r-- | test/automated/package-test.el | 14 |
10 files changed, 91 insertions, 43 deletions
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog index 44e8e5871fa..c384eeb8425 100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog | |||
| @@ -1,3 +1,7 @@ | |||
| 1 | 2014-10-02 Glenn Morris <rgm@gnu.org> | ||
| 2 | |||
| 3 | * package.texi (Package Installation): Mention etc/package-keyring.gpg. | ||
| 4 | |||
| 1 | 2014-09-29 Eli Zaretskii <eliz@gnu.org> | 5 | 2014-09-29 Eli Zaretskii <eliz@gnu.org> |
| 2 | 6 | ||
| 3 | * emacsver.texi (EMACSVER): Bump to 20.0.50. | 7 | * emacsver.texi (EMACSVER): Bump to 20.0.50. |
diff --git a/doc/emacs/package.texi b/doc/emacs/package.texi index 90bdafe456a..1af90edd953 100644 --- a/doc/emacs/package.texi +++ b/doc/emacs/package.texi | |||
| @@ -184,11 +184,8 @@ key from a server such as @url{http://pgp.mit.edu/}. | |||
| 184 | Use @kbd{M-x package-import-keyring} to import the key into Emacs. | 184 | Use @kbd{M-x package-import-keyring} to import the key into Emacs. |
| 185 | Emacs stores package keys in the @file{gnupg} subdirectory | 185 | Emacs stores package keys in the @file{gnupg} subdirectory |
| 186 | of @code{package-user-dir}. | 186 | of @code{package-user-dir}. |
| 187 | @c Uncomment this if it becomes true. | ||
| 188 | @ignore | ||
| 189 | The public key for the GNU package archive is distributed with Emacs, | 187 | The public key for the GNU package archive is distributed with Emacs, |
| 190 | in the @file{etc/package-keyring.gpg}. Emacs uses it automatically. | 188 | in the @file{etc/package-keyring.gpg}. Emacs uses it automatically. |
| 191 | @end ignore | ||
| 192 | 189 | ||
| 193 | @vindex package-check-signature | 190 | @vindex package-check-signature |
| 194 | @vindex package-unsigned-archives | 191 | @vindex package-unsigned-archives |
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 0d1ec7033b0..aa8ce36325d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,15 @@ | |||
| 1 | 2014-10-02 Glenn Morris <rgm@gnu.org> | ||
| 2 | |||
| 3 | * emacs-lisp/package.el (package-import-keyring): | ||
| 4 | Create gnupg directory private. (Bug#17625#155) | ||
| 5 | |||
| 6 | 2014-10-02 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 7 | |||
| 8 | * progmodes/python.el (python-shell-completion-get-completions): | ||
| 9 | Use python-shell--prompt-calculated-input-regexp from the | ||
| 10 | process buffer (bug#18582). | ||
| 11 | Don't assume that `line' comes from the process buffer. | ||
| 12 | |||
| 1 | 2014-10-02 Stefan Monnier <monnier@iro.umontreal.ca> | 13 | 2014-10-02 Stefan Monnier <monnier@iro.umontreal.ca> |
| 2 | 14 | ||
| 3 | * frame.el: Use lexical-binding (bug#18598). | 15 | * frame.el: Use lexical-binding (bug#18598). |
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 4832673b95c..10944f81534 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el | |||
| @@ -289,6 +289,8 @@ contrast, `package-user-dir' contains packages for personal use." | |||
| 289 | :group 'package | 289 | :group 'package |
| 290 | :version "24.1") | 290 | :version "24.1") |
| 291 | 291 | ||
| 292 | (defvar epg-gpg-program) | ||
| 293 | |||
| 292 | (defcustom package-check-signature | 294 | (defcustom package-check-signature |
| 293 | (if (progn (require 'epg-config) (executable-find epg-gpg-program)) | 295 | (if (progn (require 'epg-config) (executable-find epg-gpg-program)) |
| 294 | 'allow-unsigned) | 296 | 'allow-unsigned) |
| @@ -1299,7 +1301,8 @@ similar to an entry in `package-alist'. Save the cached copy to | |||
| 1299 | (setq file (expand-file-name file)) | 1301 | (setq file (expand-file-name file)) |
| 1300 | (let ((context (epg-make-context 'OpenPGP)) | 1302 | (let ((context (epg-make-context 'OpenPGP)) |
| 1301 | (homedir (expand-file-name "gnupg" package-user-dir))) | 1303 | (homedir (expand-file-name "gnupg" package-user-dir))) |
| 1302 | (make-directory homedir t) | 1304 | (with-file-modes 448 |
| 1305 | (make-directory homedir t)) | ||
| 1303 | (epg-context-set-home-directory context homedir) | 1306 | (epg-context-set-home-directory context homedir) |
| 1304 | (message "Importing %s..." (file-name-nondirectory file)) | 1307 | (message "Importing %s..." (file-name-nondirectory file)) |
| 1305 | (epg-import-keys-from-file context file) | 1308 | (epg-import-keys-from-file context file) |
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 7e6137226b5..be60d7777c4 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2014-10-02 Daiki Ueno <ueno@gnu.org> | ||
| 2 | |||
| 3 | * mml.el (mml-parse-1): Error out if unknown mode is specified in | ||
| 4 | <#secure> tag (bug#18513). | ||
| 5 | |||
| 1 | 2014-09-29 Daiki Ueno <ueno@gnu.org> | 6 | 2014-09-29 Daiki Ueno <ueno@gnu.org> |
| 2 | 7 | ||
| 3 | * mml.el (mml-parse-1): Error out if unknown mode is specified in | 8 | * mml.el (mml-parse-1): Error out if unknown mode is specified in |
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 6c11a478942..f6e1021c86a 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el | |||
| @@ -2888,31 +2888,30 @@ the full statement in the case of imports." | |||
| 2888 | "Do completion at point using PROCESS for IMPORT or INPUT. | 2888 | "Do completion at point using PROCESS for IMPORT or INPUT. |
| 2889 | When IMPORT is non-nil takes precedence over INPUT for | 2889 | When IMPORT is non-nil takes precedence over INPUT for |
| 2890 | completion." | 2890 | completion." |
| 2891 | (let* ((prompt | 2891 | (with-current-buffer (process-buffer process) |
| 2892 | (with-current-buffer (process-buffer process) | 2892 | (let* ((prompt |
| 2893 | (let ((prompt-boundaries (python-util-comint-last-prompt))) | 2893 | (let ((prompt-boundaries (python-util-comint-last-prompt))) |
| 2894 | (buffer-substring-no-properties | 2894 | (buffer-substring-no-properties |
| 2895 | (car prompt-boundaries) (cdr prompt-boundaries))))) | 2895 | (car prompt-boundaries) (cdr prompt-boundaries)))) |
| 2896 | (completion-code | 2896 | (completion-code |
| 2897 | ;; Check whether a prompt matches a pdb string, an import | 2897 | ;; Check whether a prompt matches a pdb string, an import |
| 2898 | ;; statement or just the standard prompt and use the | 2898 | ;; statement or just the standard prompt and use the |
| 2899 | ;; correct python-shell-completion-*-code string | 2899 | ;; correct python-shell-completion-*-code string |
| 2900 | (cond ((and (string-match | 2900 | (cond ((and (string-match |
| 2901 | (concat "^" python-shell-prompt-pdb-regexp) prompt)) | 2901 | (concat "^" python-shell-prompt-pdb-regexp) prompt)) |
| 2902 | ;; Since there are no guarantees the user will remain | 2902 | ;; Since there are no guarantees the user will remain |
| 2903 | ;; in the same context where completion code was sent | 2903 | ;; in the same context where completion code was sent |
| 2904 | ;; (e.g. user steps into a function), safeguard | 2904 | ;; (e.g. user steps into a function), safeguard |
| 2905 | ;; resending completion setup continuously. | 2905 | ;; resending completion setup continuously. |
| 2906 | (concat python-shell-completion-setup-code | 2906 | (concat python-shell-completion-setup-code |
| 2907 | "\nprint (" python-shell-completion-string-code ")")) | 2907 | "\nprint (" python-shell-completion-string-code ")")) |
| 2908 | ((string-match | 2908 | ((string-match |
| 2909 | python-shell--prompt-calculated-input-regexp prompt) | 2909 | python-shell--prompt-calculated-input-regexp prompt) |
| 2910 | python-shell-completion-string-code) | 2910 | python-shell-completion-string-code) |
| 2911 | (t nil))) | 2911 | (t nil))) |
| 2912 | (subject (or import input))) | 2912 | (subject (or import input))) |
| 2913 | (and completion-code | 2913 | (and completion-code |
| 2914 | (> (length input) 0) | 2914 | (> (length input) 0) |
| 2915 | (with-current-buffer (process-buffer process) | ||
| 2916 | (let ((completions | 2915 | (let ((completions |
| 2917 | (python-util-strip-string | 2916 | (python-util-strip-string |
| 2918 | (python-shell-send-string-no-output | 2917 | (python-shell-send-string-no-output |
diff --git a/src/ChangeLog b/src/ChangeLog index 2a4ce099021..eb578278bea 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,9 @@ | |||
| 1 | 2014-10-02 Jan Djärv <jan.h.d@swipnet.se> | ||
| 2 | |||
| 3 | * xfaces.c (Finternal_set_lisp_face_attribute): Don't try to | ||
| 4 | make a font_object from a tty frame (Bug#18573). | ||
| 5 | (Finternal_set_lisp_face_attribute): Add FIXME comment. | ||
| 6 | |||
| 1 | 2014-10-02 Dmitry Antipov <dmantipov@yandex.ru> | 7 | 2014-10-02 Dmitry Antipov <dmantipov@yandex.ru> |
| 2 | 8 | ||
| 3 | * alloc.c (mark_overlay): Assume that overlay boundaries are | 9 | * alloc.c (mark_overlay): Assume that overlay boundaries are |
| @@ -398,7 +404,7 @@ | |||
| 398 | * macfont.m (macfont_close): Release and free font-specific data | 404 | * macfont.m (macfont_close): Release and free font-specific data |
| 399 | only if it wasn't previously freed. | 405 | only if it wasn't previously freed. |
| 400 | 406 | ||
| 401 | 2014-09-22 David Caldwell <david@porkrind.org> (tiny change) | 407 | 2014-09-22 David Caldwell <david@porkrind.org> (tiny change) |
| 402 | 408 | ||
| 403 | * unexmacosx.c (dump_it): Improve error message. | 409 | * unexmacosx.c (dump_it): Improve error message. |
| 404 | 410 | ||
| @@ -9808,7 +9814,7 @@ | |||
| 9808 | * eval.c (Ffuncall): Fix handling of ((lambda ..) ..) in lexically | 9814 | * eval.c (Ffuncall): Fix handling of ((lambda ..) ..) in lexically |
| 9809 | scoped code (bug#11258). | 9815 | scoped code (bug#11258). |
| 9810 | 9816 | ||
| 9811 | 2013-08-28 Davor Cubranic <cubranic@stat.ubc.ca> (tiny change) | 9817 | 2013-08-28 Davor Cubranic <cubranic@stat.ubc.ca> (tiny change) |
| 9812 | 9818 | ||
| 9813 | * nsterm.m (last_window): New variable. | 9819 | * nsterm.m (last_window): New variable. |
| 9814 | (EV_TRAILER2): New macro. | 9820 | (EV_TRAILER2): New macro. |
diff --git a/src/xfaces.c b/src/xfaces.c index 73704bbba8e..6afa0a2953d 100644 --- a/src/xfaces.c +++ b/src/xfaces.c | |||
| @@ -3112,17 +3112,26 @@ FRAME 0 means change the face on all frames, and change the default | |||
| 3112 | f = XFRAME (selected_frame); | 3112 | f = XFRAME (selected_frame); |
| 3113 | else | 3113 | else |
| 3114 | f = XFRAME (frame); | 3114 | f = XFRAME (frame); |
| 3115 | if (! FONT_OBJECT_P (value)) | ||
| 3116 | { | ||
| 3117 | Lisp_Object *attrs = XVECTOR (lface)->contents; | ||
| 3118 | Lisp_Object font_object; | ||
| 3119 | 3115 | ||
| 3120 | font_object = font_load_for_lface (f, attrs, value); | 3116 | /* FIXME: |
| 3121 | if (NILP (font_object)) | 3117 | If frame is t, and selected frame is a tty frame, the font |
| 3122 | signal_error ("Font not available", value); | 3118 | can't be realized. An improvement would be to loop over frames |
| 3123 | value = font_object; | 3119 | for a non-tty frame and use that. See discussion in |
| 3124 | } | 3120 | bug#18573. */ |
| 3125 | set_lface_from_font (f, lface, value, 1); | 3121 | if (f->terminal->type != output_termcap) |
| 3122 | { | ||
| 3123 | if (! FONT_OBJECT_P (value)) | ||
| 3124 | { | ||
| 3125 | Lisp_Object *attrs = XVECTOR (lface)->contents; | ||
| 3126 | Lisp_Object font_object; | ||
| 3127 | |||
| 3128 | font_object = font_load_for_lface (f, attrs, value); | ||
| 3129 | if (NILP (font_object)) | ||
| 3130 | signal_error ("Font not available", value); | ||
| 3131 | value = font_object; | ||
| 3132 | } | ||
| 3133 | set_lface_from_font (f, lface, value, 1); | ||
| 3134 | } | ||
| 3126 | } | 3135 | } |
| 3127 | else | 3136 | else |
| 3128 | ASET (lface, LFACE_FONT_INDEX, value); | 3137 | ASET (lface, LFACE_FONT_INDEX, value); |
diff --git a/test/ChangeLog b/test/ChangeLog index 041ed7c1754..fb3bd746a73 100644 --- a/test/ChangeLog +++ b/test/ChangeLog | |||
| @@ -1,3 +1,10 @@ | |||
| 1 | 2014-10-02 Glenn Morris <rgm@gnu.org> | ||
| 2 | |||
| 3 | * automated/package-test.el (with-package-test, package-test-signed): | ||
| 4 | Also set HOME to a temp value, in case the real one is absent (e.g. | ||
| 5 | hydra) or read-only. (Bug#18575) | ||
| 6 | (package-test-signed): Use skip-unless rather than expected-result. | ||
| 7 | |||
| 1 | 2014-09-26 Leo Liu <sdl.web@gmail.com> | 8 | 2014-09-26 Leo Liu <sdl.web@gmail.com> |
| 2 | 9 | ||
| 3 | * automated/cl-lib.el (cl-digit-char-p, cl-parse-integer): New | 10 | * automated/cl-lib.el (cl-digit-char-p, cl-parse-integer): New |
diff --git a/test/automated/package-test.el b/test/automated/package-test.el index b970cd7c9f8..a0c1359b132 100644 --- a/test/automated/package-test.el +++ b/test/automated/package-test.el | |||
| @@ -89,6 +89,8 @@ | |||
| 89 | "Set up temporary locations and variables for testing." | 89 | "Set up temporary locations and variables for testing." |
| 90 | (declare (indent 1)) | 90 | (declare (indent 1)) |
| 91 | `(let* ((package-test-user-dir (make-temp-file "pkg-test-user-dir-" t)) | 91 | `(let* ((package-test-user-dir (make-temp-file "pkg-test-user-dir-" t)) |
| 92 | (process-environment (cons (format "HOME=%s" package-test-user-dir) | ||
| 93 | process-environment)) | ||
| 92 | (package-user-dir package-test-user-dir) | 94 | (package-user-dir package-test-user-dir) |
| 93 | (package-archives `(("gnu" . ,package-test-data-dir))) | 95 | (package-archives `(("gnu" . ,package-test-data-dir))) |
| 94 | (old-yes-no-defn (symbol-function 'yes-or-no-p)) | 96 | (old-yes-no-defn (symbol-function 'yes-or-no-p)) |
| @@ -361,11 +363,15 @@ Must called from within a `tar-mode' buffer." | |||
| 361 | 363 | ||
| 362 | (ert-deftest package-test-signed () | 364 | (ert-deftest package-test-signed () |
| 363 | "Test verifying package signature." | 365 | "Test verifying package signature." |
| 364 | :expected-result (condition-case nil | 366 | (skip-unless (ignore-errors |
| 365 | (progn | 367 | (let ((homedir (make-temp-file "package-test" t))) |
| 368 | (unwind-protect | ||
| 369 | (let ((process-environment | ||
| 370 | (cons (format "HOME=%s" homedir) | ||
| 371 | process-environment))) | ||
| 366 | (epg-check-configuration (epg-configuration)) | 372 | (epg-check-configuration (epg-configuration)) |
| 367 | :passed) | 373 | t) |
| 368 | (error :failed)) | 374 | (delete-directory homedir t))))) |
| 369 | (let* ((keyring (expand-file-name "key.pub" package-test-data-dir)) | 375 | (let* ((keyring (expand-file-name "key.pub" package-test-data-dir)) |
| 370 | (package-test-data-dir | 376 | (package-test-data-dir |
| 371 | (expand-file-name "data/package/signed" package-test-file-dir))) | 377 | (expand-file-name "data/package/signed" package-test-file-dir))) |