Merge from origin/emacs-26

3f4b8e9 * src/data.c (Fmake_local_variable): Fix bug#34318
b384996 Minor fixes in ELisp manual wrt syntax-table properties
71fc6d2 * admin/notes/emba: New file.
3aaa2d2 Fix Hunspell invocation for discovering its dictionaries

# Conflicts:
#	test/src/data-tests.el
This commit is contained in:
Glenn Morris 2019-02-15 13:25:30 -08:00
commit a29c70d29b
5 changed files with 105 additions and 7 deletions

64
admin/notes/emba Normal file
View file

@ -0,0 +1,64 @@
-*- mode: outline; coding: utf-8 -*-
Copyright (C) 2019 Free Software Foundation, Inc.
See the end of the file for license conditions.
NOTES FOR EMACS CONTINUOUS BUILD ON EMBA
A continuous build for Emacs can be found at
<https://emba.gnu.org/emacs/emacs>, a Gitlab instance. It watches the
Emacs git repository and starts a pipeline (jobset) if there are new
changes. This happens for all Emacs branches.
* Mail notifications
In addition to the web interface, emba can send notifications by email
when a job fails. It sends notifications about test status to
<emacs-buildstatus@gnu.org>.
If you want to receive these notifications, please subscribe at
<https://lists.gnu.org/mailman/listinfo/emacs-buildstatus>.
Alternatively, these notifications can be read via gmane at
<nntp+news.gmane.org:gmane.emacs.buildstatus>.
The messages contain a URL to the log file of the failed job, like
<https://emba.gnu.org/emacs/emacs/-/jobs/739/raw>.
* Emacs jobset
The Emacs jobset is defined in the Emacs source tree, file
'.gitlab-ci.yml'. It could be adapted for every Emacs branch, see
<https://emba.gnu.org/help/ci/yaml/README.md>.
Every job runs in a Debian docker container. It uses the local clone
of the Emacs git repository to perform a bootstrap and test of Emacs.
This could happen for several jobs with changed configuration, compile
and test parameters.
* Emba configuration
The emba configuration files are hosted on
<https://gitlab.com/emacs-ci/emba-ansible>.
* Identifying emba
Lisp packages, Makefiles, scripts, and other software could determine
whether they run on emba by checking for the environment variable
EMACS_EMBA_CI.
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 <https://www.gnu.org/licenses/>.

View file

@ -556,8 +556,8 @@ the current syntax table in the usual way.
@defvar parse-sexp-lookup-properties
If this is non-@code{nil}, the syntax scanning functions, like
@code{forward-sexp}, pay attention to syntax text properties.
Otherwise they use only the current syntax table.
@code{forward-sexp}, pay attention to @code{syntax-table} text
properties. Otherwise they use only the current syntax table.
@end defvar
@defvar syntax-propertize-function
@ -927,9 +927,9 @@ nicely.
@defvar multibyte-syntax-as-symbol
If this variable is non-@code{nil}, @code{scan-sexps} treats all
non-@acronym{ASCII} characters as symbol constituents regardless
of what the syntax table says about them. (However, text properties
can still override the syntax.)
non-@acronym{ASCII} characters as symbol constituents regardless of
what the syntax table says about them. (However, @code{syntax-table
}text properties can still override the syntax.)
@end defvar
@defopt parse-sexp-ignore-comments
@ -939,7 +939,6 @@ whitespace by the functions in this section and by @code{forward-sexp},
@code{scan-lists} and @code{scan-sexps}.
@end defopt
@vindex parse-sexp-lookup-properties
The behavior of @code{parse-partial-sexp} is also affected by
@code{parse-sexp-lookup-properties} (@pxref{Syntax Properties}).

View file

@ -1107,12 +1107,19 @@ dictionary from that list was found."
null-device
t
nil
"-D"
;; Use -a to prevent Hunspell from
;; trying to initialize its
;; curses/termcap UI, which causes it
;; to crash or fail to start in some
;; MS-Windows ports.
"-a"
;; Hunspell 1.7.0 (and later?) won't
;; show LOADED DICTIONARY unless
;; there's at least one file argument
;; on the command line. So we feed
;; it with the null device.
"-D" null-device)
null-device)
(buffer-string))
"[\n\r]+"
t))

View file

@ -1958,6 +1958,16 @@ Instead, use `add-hook' and specify t for the LOCAL argument. */)
(current_buffer,
Fcons (Fcons (variable, XCDR (blv->defcell)),
BVAR (current_buffer, local_var_alist)));
/* If the symbol forwards into a C variable, then load the binding
for this buffer now, to preserve the invariant that forwarded
variables must always hold the value corresponding to the
current buffer (they are swapped eagerly).
Otherwise, if C code modifies the variable before we load the
binding in, then that new value would clobber the default binding
the next time we unload it. See bug#34318. */
if (blv->fwd)
swap_in_symval_forwarding (sym, blv);
}
return variable;

View file

@ -669,4 +669,22 @@ comparing the subr with a much slower lisp implementation."
(should (= (lsh -1 -1) most-positive-fixnum))
(should-error (lsh (1- most-negative-fixnum) -1)))
(ert-deftest data-tests-make-local-forwarded-var () ;bug#34318
;; Boy, this bug is tricky to trigger. You need to:
;; - call make-local-variable on a forwarded var (i.e. one that
;; has a corresponding C var linked via DEFVAR_(LISP|INT|BOOL))
;; - cause the C code to modify this variable from the C side of the
;; forwarding, but this needs to happen before the var is accessed
;; from the Lisp side and before we switch to another buffer.
;; The trigger in bug#34318 doesn't exist any more because the C code has
;; changes. Instead I found the trigger below.
(with-temp-buffer
(setq last-coding-system-used 'bug34318)
(make-local-variable 'last-coding-system-used)
;; This should set last-coding-system-used to `no-conversion'.
(decode-coding-string "hello" nil)
(should (equal (list last-coding-system-used
(default-value 'last-coding-system-used))
'(no-conversion bug34318)))))
;;; data-tests.el ends here