diff options
| author | Stefan Monnier | 2019-02-15 18:34:38 -0500 |
|---|---|---|
| committer | Stefan Monnier | 2019-02-15 18:34:38 -0500 |
| commit | fd0ab0b9bd5991c1a2c598a7c78ec3f491a783bd (patch) | |
| tree | 322ae17681cb608a95e867dbf905b832713cb774 | |
| parent | 3c80bc333750b62ed98d3064cf98b74b43121a5e (diff) | |
| parent | a298a1f6b2fc745163198825941dbe593dff331c (diff) | |
| download | emacs-fd0ab0b9bd5991c1a2c598a7c78ec3f491a783bd.tar.gz emacs-fd0ab0b9bd5991c1a2c598a7c78ec3f491a783bd.zip | |
Merge branch 'master' of git+ssh://git.sv.gnu.org/srv/git/emacs into trunk
| -rw-r--r-- | admin/notes/emba | 64 | ||||
| -rw-r--r-- | doc/lispref/syntax.texi | 11 | ||||
| -rw-r--r-- | lisp/erc/erc-dcc.el | 11 | ||||
| -rw-r--r-- | lisp/gnus/mm-decode.el | 2 | ||||
| -rw-r--r-- | lisp/gnus/mm-view.el | 10 | ||||
| -rw-r--r-- | lisp/gnus/mml.el | 6 | ||||
| -rw-r--r-- | lisp/progmodes/compile.el | 22 | ||||
| -rw-r--r-- | lisp/textmodes/ispell.el | 9 | ||||
| -rw-r--r-- | src/data.c | 10 | ||||
| -rw-r--r-- | test/lisp/textmodes/conf-mode-tests.el | 2 | ||||
| -rw-r--r-- | test/src/data-tests.el | 18 |
11 files changed, 135 insertions, 30 deletions
diff --git a/admin/notes/emba b/admin/notes/emba new file mode 100644 index 00000000000..cb0dbc48095 --- /dev/null +++ b/admin/notes/emba | |||
| @@ -0,0 +1,64 @@ | |||
| 1 | -*- mode: outline; coding: utf-8 -*- | ||
| 2 | |||
| 3 | Copyright (C) 2019 Free Software Foundation, Inc. | ||
| 4 | See the end of the file for license conditions. | ||
| 5 | |||
| 6 | NOTES FOR EMACS CONTINUOUS BUILD ON EMBA | ||
| 7 | |||
| 8 | A continuous build for Emacs can be found at | ||
| 9 | <https://emba.gnu.org/emacs/emacs>, a Gitlab instance. It watches the | ||
| 10 | Emacs git repository and starts a pipeline (jobset) if there are new | ||
| 11 | changes. This happens for all Emacs branches. | ||
| 12 | |||
| 13 | * Mail notifications | ||
| 14 | |||
| 15 | In addition to the web interface, emba can send notifications by email | ||
| 16 | when a job fails. It sends notifications about test status to | ||
| 17 | <emacs-buildstatus@gnu.org>. | ||
| 18 | |||
| 19 | If you want to receive these notifications, please subscribe at | ||
| 20 | <https://lists.gnu.org/mailman/listinfo/emacs-buildstatus>. | ||
| 21 | |||
| 22 | Alternatively, these notifications can be read via gmane at | ||
| 23 | <nntp+news.gmane.org:gmane.emacs.buildstatus>. | ||
| 24 | |||
| 25 | The messages contain a URL to the log file of the failed job, like | ||
| 26 | <https://emba.gnu.org/emacs/emacs/-/jobs/739/raw>. | ||
| 27 | |||
| 28 | * Emacs jobset | ||
| 29 | |||
| 30 | The Emacs jobset is defined in the Emacs source tree, file | ||
| 31 | '.gitlab-ci.yml'. It could be adapted for every Emacs branch, see | ||
| 32 | <https://emba.gnu.org/help/ci/yaml/README.md>. | ||
| 33 | |||
| 34 | Every job runs in a Debian docker container. It uses the local clone | ||
| 35 | of the Emacs git repository to perform a bootstrap and test of Emacs. | ||
| 36 | This could happen for several jobs with changed configuration, compile | ||
| 37 | and test parameters. | ||
| 38 | |||
| 39 | * Emba configuration | ||
| 40 | |||
| 41 | The emba configuration files are hosted on | ||
| 42 | <https://gitlab.com/emacs-ci/emba-ansible>. | ||
| 43 | |||
| 44 | * Identifying emba | ||
| 45 | |||
| 46 | Lisp packages, Makefiles, scripts, and other software could determine | ||
| 47 | whether they run on emba by checking for the environment variable | ||
| 48 | EMACS_EMBA_CI. | ||
| 49 | |||
| 50 | |||
| 51 | This file is part of GNU Emacs. | ||
| 52 | |||
| 53 | GNU Emacs is free software: you can redistribute it and/or modify | ||
| 54 | it under the terms of the GNU General Public License as published by | ||
| 55 | the Free Software Foundation, either version 3 of the License, or | ||
| 56 | (at your option) any later version. | ||
| 57 | |||
| 58 | GNU Emacs is distributed in the hope that it will be useful, | ||
| 59 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 60 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 61 | GNU General Public License for more details. | ||
| 62 | |||
| 63 | You should have received a copy of the GNU General Public License | ||
| 64 | along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. | ||
diff --git a/doc/lispref/syntax.texi b/doc/lispref/syntax.texi index a960eeac7e8..25b9b35250f 100644 --- a/doc/lispref/syntax.texi +++ b/doc/lispref/syntax.texi | |||
| @@ -556,8 +556,8 @@ the current syntax table in the usual way. | |||
| 556 | 556 | ||
| 557 | @defvar parse-sexp-lookup-properties | 557 | @defvar parse-sexp-lookup-properties |
| 558 | If this is non-@code{nil}, the syntax scanning functions, like | 558 | If this is non-@code{nil}, the syntax scanning functions, like |
| 559 | @code{forward-sexp}, pay attention to syntax text properties. | 559 | @code{forward-sexp}, pay attention to @code{syntax-table} text |
| 560 | Otherwise they use only the current syntax table. | 560 | properties. Otherwise they use only the current syntax table. |
| 561 | @end defvar | 561 | @end defvar |
| 562 | 562 | ||
| 563 | @defvar syntax-propertize-function | 563 | @defvar syntax-propertize-function |
| @@ -927,9 +927,9 @@ nicely. | |||
| 927 | 927 | ||
| 928 | @defvar multibyte-syntax-as-symbol | 928 | @defvar multibyte-syntax-as-symbol |
| 929 | If this variable is non-@code{nil}, @code{scan-sexps} treats all | 929 | If this variable is non-@code{nil}, @code{scan-sexps} treats all |
| 930 | non-@acronym{ASCII} characters as symbol constituents regardless | 930 | non-@acronym{ASCII} characters as symbol constituents regardless of |
| 931 | of what the syntax table says about them. (However, text properties | 931 | what the syntax table says about them. (However, @code{syntax-table |
| 932 | can still override the syntax.) | 932 | }text properties can still override the syntax.) |
| 933 | @end defvar | 933 | @end defvar |
| 934 | 934 | ||
| 935 | @defopt parse-sexp-ignore-comments | 935 | @defopt parse-sexp-ignore-comments |
| @@ -939,7 +939,6 @@ whitespace by the functions in this section and by @code{forward-sexp}, | |||
| 939 | @code{scan-lists} and @code{scan-sexps}. | 939 | @code{scan-lists} and @code{scan-sexps}. |
| 940 | @end defopt | 940 | @end defopt |
| 941 | 941 | ||
| 942 | @vindex parse-sexp-lookup-properties | ||
| 943 | The behavior of @code{parse-partial-sexp} is also affected by | 942 | The behavior of @code{parse-partial-sexp} is also affected by |
| 944 | @code{parse-sexp-lookup-properties} (@pxref{Syntax Properties}). | 943 | @code{parse-sexp-lookup-properties} (@pxref{Syntax Properties}). |
| 945 | 944 | ||
diff --git a/lisp/erc/erc-dcc.el b/lisp/erc/erc-dcc.el index 8a40b1454b4..2849e25bf77 100644 --- a/lisp/erc/erc-dcc.el +++ b/lisp/erc/erc-dcc.el | |||
| @@ -979,17 +979,20 @@ rather than every 1024 byte block, but nobody seems to care." | |||
| 979 | (let ((inhibit-read-only t) | 979 | (let ((inhibit-read-only t) |
| 980 | received-bytes) | 980 | received-bytes) |
| 981 | (goto-char (point-max)) | 981 | (goto-char (point-max)) |
| 982 | (insert (string-make-unibyte str)) | 982 | (if str |
| 983 | (insert (string-make-unibyte str))) | ||
| 983 | 984 | ||
| 984 | (when (> (point-max) erc-dcc-receive-cache) | 985 | (when (> (point-max) erc-dcc-receive-cache) |
| 985 | (erc-dcc-append-contents (current-buffer) erc-dcc-file-name)) | 986 | (erc-dcc-append-contents (current-buffer) erc-dcc-file-name)) |
| 986 | (setq received-bytes (+ (buffer-size) erc-dcc-byte-count)) | 987 | (setq received-bytes (buffer-size)) |
| 988 | (if erc-dcc-byte-count | ||
| 989 | (setq received-bytes (+ received-bytes erc-dcc-byte-count))) | ||
| 987 | 990 | ||
| 988 | (and erc-dcc-verbose | 991 | (and erc-dcc-verbose |
| 989 | (erc-display-message | 992 | (erc-display-message |
| 990 | nil 'notice erc-server-process | 993 | nil 'notice erc-server-process |
| 991 | 'dcc-get-bytes-received | 994 | 'dcc-get-bytes-received |
| 992 | ?f (file-name-nondirectory buffer-file-name) | 995 | ?f (file-name-nondirectory (buffer-name)) |
| 993 | ?b (number-to-string received-bytes))) | 996 | ?b (number-to-string received-bytes))) |
| 994 | (cond | 997 | (cond |
| 995 | ((and (> (plist-get erc-dcc-entry-data :size) 0) | 998 | ((and (> (plist-get erc-dcc-entry-data :size) 0) |
| @@ -997,7 +1000,7 @@ rather than every 1024 byte block, but nobody seems to care." | |||
| 997 | (erc-display-message | 1000 | (erc-display-message |
| 998 | nil '(notice error) 'active | 1001 | nil '(notice error) 'active |
| 999 | 'dcc-get-file-too-long | 1002 | 'dcc-get-file-too-long |
| 1000 | ?f (file-name-nondirectory buffer-file-name)) | 1003 | ?f (file-name-nondirectory (buffer-name))) |
| 1001 | (delete-process proc)) | 1004 | (delete-process proc)) |
| 1002 | (t | 1005 | (t |
| 1003 | (process-send-string | 1006 | (process-send-string |
diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el index 80a2e50c498..2a769fccf54 100644 --- a/lisp/gnus/mm-decode.el +++ b/lisp/gnus/mm-decode.el | |||
| @@ -763,7 +763,7 @@ MIME-Version header before proceeding." | |||
| 763 | (mb enable-multibyte-characters) | 763 | (mb enable-multibyte-characters) |
| 764 | beg) | 764 | beg) |
| 765 | (goto-char (point-min)) | 765 | (goto-char (point-min)) |
| 766 | (search-forward-regexp "^\n" nil t) | 766 | (search-forward-regexp "^\n" nil 'move) ;; There might be no body. |
| 767 | (setq beg (point)) | 767 | (setq beg (point)) |
| 768 | (with-current-buffer | 768 | (with-current-buffer |
| 769 | (generate-new-buffer " *mm*") | 769 | (generate-new-buffer " *mm*") |
diff --git a/lisp/gnus/mm-view.el b/lisp/gnus/mm-view.el index cf41c4595cb..b0d88d89843 100644 --- a/lisp/gnus/mm-view.el +++ b/lisp/gnus/mm-view.el | |||
| @@ -370,10 +370,12 @@ | |||
| 370 | (enriched-decode (point-min) (point-max)))) | 370 | (enriched-decode (point-min) (point-max)))) |
| 371 | (mm-handle-set-undisplayer | 371 | (mm-handle-set-undisplayer |
| 372 | handle | 372 | handle |
| 373 | `(lambda () | 373 | (if (= (point-min) (point-max)) |
| 374 | (let ((inhibit-read-only t)) | 374 | #'ignore |
| 375 | (delete-region ,(copy-marker (point-min) t) | 375 | `(lambda () |
| 376 | ,(point-max-marker)))))))) | 376 | (let ((inhibit-read-only t)) |
| 377 | (delete-region ,(copy-marker (point-min) t) | ||
| 378 | ,(point-max-marker))))))))) | ||
| 377 | 379 | ||
| 378 | (defun mm-insert-inline (handle text) | 380 | (defun mm-insert-inline (handle text) |
| 379 | "Insert TEXT inline from HANDLE." | 381 | "Insert TEXT inline from HANDLE." |
diff --git a/lisp/gnus/mml.el b/lisp/gnus/mml.el index cf79ca1ded6..be626858358 100644 --- a/lisp/gnus/mml.el +++ b/lisp/gnus/mml.el | |||
| @@ -982,8 +982,10 @@ If HANDLES is non-nil, use it instead reparsing the buffer." | |||
| 982 | (unless handles | 982 | (unless handles |
| 983 | (setq handles (mm-dissect-buffer t))) | 983 | (setq handles (mm-dissect-buffer t))) |
| 984 | (goto-char (point-min)) | 984 | (goto-char (point-min)) |
| 985 | (search-forward "\n\n" nil t) | 985 | (if (search-forward "\n\n" nil 'move) |
| 986 | (delete-region (point) (point-max)) | 986 | (delete-region (point) (point-max)) |
| 987 | ;; No content in the part that is the sole part of this message. | ||
| 988 | (insert (if (bolp) "\n" "\n\n"))) | ||
| 987 | (if (stringp (car handles)) | 989 | (if (stringp (car handles)) |
| 988 | (mml-insert-mime handles) | 990 | (mml-insert-mime handles) |
| 989 | (mml-insert-mime handles t)) | 991 | (mml-insert-mime handles t)) |
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el index 9fbe3614fd1..c3ff57633a3 100644 --- a/lisp/progmodes/compile.el +++ b/lisp/progmodes/compile.el | |||
| @@ -1401,17 +1401,17 @@ to `compilation-error-regexp-alist' if RULES is nil." | |||
| 1401 | file line end-line col end-col (or type 2) fmt)) | 1401 | file line end-line col end-col (or type 2) fmt)) |
| 1402 | 1402 | ||
| 1403 | (when (integerp file) | 1403 | (when (integerp file) |
| 1404 | (setq type (if (consp type) | 1404 | (let ((this-type (if (consp type) |
| 1405 | (compilation-type type) | 1405 | (compilation-type type) |
| 1406 | (or type 2))) | 1406 | (or type 2)))) |
| 1407 | (compilation--note-type type) | 1407 | (compilation--note-type type) |
| 1408 | 1408 | ||
| 1409 | (compilation--put-prop | 1409 | (compilation--put-prop |
| 1410 | file 'font-lock-face | 1410 | file 'font-lock-face |
| 1411 | (symbol-value (aref [compilation-info-face | 1411 | (symbol-value (aref [compilation-info-face |
| 1412 | compilation-warning-face | 1412 | compilation-warning-face |
| 1413 | compilation-error-face] | 1413 | compilation-error-face] |
| 1414 | type)))) | 1414 | this-type))))) |
| 1415 | 1415 | ||
| 1416 | (compilation--put-prop | 1416 | (compilation--put-prop |
| 1417 | line 'font-lock-face compilation-line-face) | 1417 | line 'font-lock-face compilation-line-face) |
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el index f3436c6c6c4..cc8ec2652f7 100644 --- a/lisp/textmodes/ispell.el +++ b/lisp/textmodes/ispell.el | |||
| @@ -1107,12 +1107,19 @@ dictionary from that list was found." | |||
| 1107 | null-device | 1107 | null-device |
| 1108 | t | 1108 | t |
| 1109 | nil | 1109 | nil |
| 1110 | "-D" | ||
| 1111 | ;; Use -a to prevent Hunspell from | ||
| 1112 | ;; trying to initialize its | ||
| 1113 | ;; curses/termcap UI, which causes it | ||
| 1114 | ;; to crash or fail to start in some | ||
| 1115 | ;; MS-Windows ports. | ||
| 1116 | "-a" | ||
| 1110 | ;; Hunspell 1.7.0 (and later?) won't | 1117 | ;; Hunspell 1.7.0 (and later?) won't |
| 1111 | ;; show LOADED DICTIONARY unless | 1118 | ;; show LOADED DICTIONARY unless |
| 1112 | ;; there's at least one file argument | 1119 | ;; there's at least one file argument |
| 1113 | ;; on the command line. So we feed | 1120 | ;; on the command line. So we feed |
| 1114 | ;; it with the null device. | 1121 | ;; it with the null device. |
| 1115 | "-D" null-device) | 1122 | null-device) |
| 1116 | (buffer-string)) | 1123 | (buffer-string)) |
| 1117 | "[\n\r]+" | 1124 | "[\n\r]+" |
| 1118 | t)) | 1125 | t)) |
diff --git a/src/data.c b/src/data.c index 92a1062280e..65f2b0f2f1b 100644 --- a/src/data.c +++ b/src/data.c | |||
| @@ -1958,6 +1958,16 @@ Instead, use `add-hook' and specify t for the LOCAL argument. */) | |||
| 1958 | (current_buffer, | 1958 | (current_buffer, |
| 1959 | Fcons (Fcons (variable, XCDR (blv->defcell)), | 1959 | Fcons (Fcons (variable, XCDR (blv->defcell)), |
| 1960 | BVAR (current_buffer, local_var_alist))); | 1960 | BVAR (current_buffer, local_var_alist))); |
| 1961 | |||
| 1962 | /* If the symbol forwards into a C variable, then load the binding | ||
| 1963 | for this buffer now, to preserve the invariant that forwarded | ||
| 1964 | variables must always hold the value corresponding to the | ||
| 1965 | current buffer (they are swapped eagerly). | ||
| 1966 | Otherwise, if C code modifies the variable before we load the | ||
| 1967 | binding in, then that new value would clobber the default binding | ||
| 1968 | the next time we unload it. See bug#34318. */ | ||
| 1969 | if (blv->fwd) | ||
| 1970 | swap_in_symval_forwarding (sym, blv); | ||
| 1961 | } | 1971 | } |
| 1962 | 1972 | ||
| 1963 | return variable; | 1973 | return variable; |
diff --git a/test/lisp/textmodes/conf-mode-tests.el b/test/lisp/textmodes/conf-mode-tests.el index 5d79ceec967..3eefc8f84f9 100644 --- a/test/lisp/textmodes/conf-mode-tests.el +++ b/test/lisp/textmodes/conf-mode-tests.el | |||
| @@ -33,7 +33,7 @@ | |||
| 33 | (conf-colon-mode) | 33 | (conf-colon-mode) |
| 34 | (conf-align-assignments) | 34 | (conf-align-assignments) |
| 35 | (should (equal (buffer-string) | 35 | (should (equal (buffer-string) |
| 36 | "foo: bar\nbar: baz")))) | 36 | "foo: bar\nbar: baz")))) |
| 37 | 37 | ||
| 38 | (ert-deftest conf-test-font-lock () | 38 | (ert-deftest conf-test-font-lock () |
| 39 | (with-temp-buffer | 39 | (with-temp-buffer |
diff --git a/test/src/data-tests.el b/test/src/data-tests.el index bc77a7be94e..a9d48e29a8a 100644 --- a/test/src/data-tests.el +++ b/test/src/data-tests.el | |||
| @@ -669,4 +669,22 @@ comparing the subr with a much slower lisp implementation." | |||
| 669 | (should (= (lsh -1 -1) most-positive-fixnum)) | 669 | (should (= (lsh -1 -1) most-positive-fixnum)) |
| 670 | (should-error (lsh (1- most-negative-fixnum) -1))) | 670 | (should-error (lsh (1- most-negative-fixnum) -1))) |
| 671 | 671 | ||
| 672 | (ert-deftest data-tests-make-local-forwarded-var () ;bug#34318 | ||
| 673 | ;; Boy, this bug is tricky to trigger. You need to: | ||
| 674 | ;; - call make-local-variable on a forwarded var (i.e. one that | ||
| 675 | ;; has a corresponding C var linked via DEFVAR_(LISP|INT|BOOL)) | ||
| 676 | ;; - cause the C code to modify this variable from the C side of the | ||
| 677 | ;; forwarding, but this needs to happen before the var is accessed | ||
| 678 | ;; from the Lisp side and before we switch to another buffer. | ||
| 679 | ;; The trigger in bug#34318 doesn't exist any more because the C code has | ||
| 680 | ;; changes. Instead I found the trigger below. | ||
| 681 | (with-temp-buffer | ||
| 682 | (setq last-coding-system-used 'bug34318) | ||
| 683 | (make-local-variable 'last-coding-system-used) | ||
| 684 | ;; This should set last-coding-system-used to `no-conversion'. | ||
| 685 | (decode-coding-string "hello" nil) | ||
| 686 | (should (equal (list last-coding-system-used | ||
| 687 | (default-value 'last-coding-system-used)) | ||
| 688 | '(no-conversion bug34318))))) | ||
| 689 | |||
| 672 | ;;; data-tests.el ends here | 690 | ;;; data-tests.el ends here |