summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Morris <rgm@gnu.org>2018-08-29 08:24:03 -0700
committerGlenn Morris <rgm@gnu.org>2018-08-29 08:24:03 -0700
commitd8bef4b519624de20baa1428dd103f61dfb220fa (patch)
treeed458e2d88b9a0a422fd46e50c1d2654d24b07a9
parentb28d5333e0144acc7385339578d907196c4b6f3e (diff)
parent2670cbf9a87eb498d73770c381ca51657d390a1e (diff)
downloademacs-d8bef4b519624de20baa1428dd103f61dfb220fa.tar.gz
Merge from origin/emacs-26
2670cbf (origin/emacs-26) ; * configure.ac: Remove outdated comment (... 3b71bef admin.el: respect environment settings for makeinfo etc 3764ab4 * etc/PROBLEMS: New entry about GTK+ 3 crash with some X serv... 9d61344 Index profiler commands in elisp manual f088817 Fix math-imaginary-i check fca935e ; Let pre-commit git hook check merged in changes (Bug#29197) fe06fcc Avoid infinite hscrolling loops when line numbers are displayed 63e59c8 Avoid crashes in malformed defvar 785682c * configure.ac (emacs_config_features): Add GLIB, XDBE, XIM. 2695b7e * configure.ac: Doc fixes related to --with-xim. d0d162c Small checkdoc quoting fix (bug#32546) Conflicts: configure.ac
-rw-r--r--admin/admin.el17
-rwxr-xr-xbuild-aux/git-hooks/pre-commit16
-rw-r--r--configure.ac17
-rw-r--r--doc/lispref/debugging.texi3
-rw-r--r--etc/PROBLEMS20
-rw-r--r--lisp/calc/calc-cplx.el4
-rw-r--r--lisp/emacs-lisp/checkdoc.el2
-rw-r--r--src/eval.c2
-rw-r--r--src/xdisp.c20
9 files changed, 68 insertions, 33 deletions
diff --git a/admin/admin.el b/admin/admin.el
index 3cb5dbc2d92..1cad7ae2776 100644
--- a/admin/admin.el
+++ b/admin/admin.el
@@ -352,13 +352,22 @@ Optional argument TYPE is type of output (nil means all)."
(manual-html-mono texi (expand-file-name (concat name ".html")
html-mono-dir))))
+(defvar manual-makeinfo (or (getenv "MAKEINFO") "makeinfo")
+ "The `makeinfo' program to use.")
+
+(defvar manual-texi2pdf (or (getenv "TEXI2PDF") "texi2pdf")
+ "The `texi2pdf' program to use.")
+
+(defvar manual-texi2dvi (or (getenv "TEXI2DVI") "texi2dvi")
+ "The `texi2dvi' program to use.")
+
(defun manual-html-mono (texi-file dest)
"Run Makeinfo on TEXI-FILE, emitting mono HTML output to DEST.
This function also edits the HTML files so that they validate as
HTML 4.01 Transitional, and pulls in the gnu.org stylesheet using
the @import directive."
(make-directory (or (file-name-directory dest) ".") t)
- (call-process "makeinfo" nil nil nil
+ (call-process manual-makeinfo nil nil nil
"-D" "WWW_GNU_ORG"
"-I" (expand-file-name "../emacs"
(file-name-directory texi-file))
@@ -386,7 +395,7 @@ the @import directive."
(unless (file-exists-p texi-file)
(user-error "Manual file %s not found" texi-file))
(make-directory dir t)
- (call-process "makeinfo" nil nil nil
+ (call-process manual-makeinfo nil nil nil
"-D" "WWW_GNU_ORG"
"-I" (expand-file-name "../emacs"
(file-name-directory texi-file))
@@ -425,7 +434,7 @@ the @import directive."
"Run texi2pdf on TEXI-FILE, emitting PDF output to DEST."
(make-directory (or (file-name-directory dest) ".") t)
(let ((default-directory (file-name-directory texi-file)))
- (call-process "texi2pdf" nil nil nil
+ (call-process manual-texi2pdf nil nil nil
"-I" "../emacs" "-I" "../misc"
texi-file "-o" dest)))
@@ -435,7 +444,7 @@ the @import directive."
(let ((dvi-dest (concat (file-name-sans-extension dest) ".dvi"))
(default-directory (file-name-directory texi-file)))
;; FIXME: Use `texi2dvi --ps'? --xfq
- (call-process "texi2dvi" nil nil nil
+ (call-process manual-texi2dvi nil nil nil
"-I" "../emacs" "-I" "../misc"
texi-file "-o" dvi-dest)
(call-process "dvips" nil nil nil dvi-dest "-o" dest)
diff --git a/build-aux/git-hooks/pre-commit b/build-aux/git-hooks/pre-commit
index 5e42dab233b..c0455fb2fa2 100755
--- a/build-aux/git-hooks/pre-commit
+++ b/build-aux/git-hooks/pre-commit
@@ -28,7 +28,7 @@ exec >&2
# When doing a two-way merge, ignore problems that came from the other
# side of the merge.
head=HEAD
-if test -r "$GIT_DIR"/MERGE_HEAD; then
+if test -r "$GIT_DIR"/MERGE_HEAD && test "$GIT_MERGE_CHECK_OTHER" != true; then
merge_heads=`cat "$GIT_DIR"/MERGE_HEAD` || exit
for merge_head in $merge_heads; do
case $head in
@@ -42,15 +42,10 @@ if test -r "$GIT_DIR"/MERGE_HEAD; then
fi
git_diff='git diff --cached --name-only --diff-filter=A'
-ok_chars='\0+[=-=]./0-9A-Z_a-z'
-nbadchars=`$git_diff -z $head | tr -d "$ok_chars" | wc -c`
-if test "$nbadchars" -ne 0; then
- echo "File name does not consist of -+./_ or ASCII letters or digits."
- exit 1
-fi
-
-for new_name in `$git_diff $head`; do
+# 'git diff' will backslash escape tabs and newlines, so we don't have
+# to worry about word splitting here.
+$git_diff $head | sane_egrep 'ChangeLog|^-|/-|[^-+./_0-9A-Z_a-z]' | while IFS= read -r new_name; do
case $new_name in
-* | */-*)
echo "$new_name: File name component begins with '-'."
@@ -58,6 +53,9 @@ for new_name in `$git_diff $head`; do
ChangeLog | */ChangeLog)
echo "$new_name: Please use git commit messages, not ChangeLog files."
exit 1;;
+ *)
+ echo "$new_name: File name does not consist of -+./_ or ASCII letters or digits."
+ exit 1;;
esac
done
diff --git a/configure.ac b/configure.ac
index 31750ef66a7..85ac932688c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -363,7 +363,7 @@ OPTION_DEFAULT_ON([m17n-flt],[don't use m17n-flt for text shaping])
OPTION_DEFAULT_ON([toolkit-scroll-bars],[don't use Motif or Xaw3d scroll bars])
OPTION_DEFAULT_ON([xaw3d],[don't use Xaw3d])
-OPTION_DEFAULT_ON([xim],[don't use X11 XIM])
+OPTION_DEFAULT_ON([xim],[at runtime, default X11 XIM to off])
AC_ARG_WITH([ns],[AS_HELP_STRING([--with-ns],
[use Nextstep (macOS Cocoa or GNUstep) windowing system.
On by default on macOS.])],[],[with_ns=maybe])
@@ -1557,7 +1557,6 @@ case $opsys in
LIB_MATH=
SYSTEM_TYPE=windows-nt
;;
- dnl NB this may be adjusted below.
netbsd | openbsd )
SYSTEM_TYPE=berkeley-unix
;;
@@ -3170,11 +3169,12 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
AC_DEFINE(HAVE_XIM, 1, [Define to 1 if XIM is available])],
HAVE_XIM=no)
-dnl '--with-xim' now controls only the initial value of use_xim at run time.
-
+dnl Note this is non-standard. --with-xim does not control whether
+dnl XIM support is compiled in, it only affects the runtime default of
+dnl use_xim in xterm.c.
if test "${with_xim}" != "no"; then
AC_DEFINE(USE_XIM, 1,
- [Define to 1 if we should use XIM, if it is available.])
+ [Define to 1 to default runtime use of XIM to on.])
fi
@@ -5429,12 +5429,13 @@ Configured for '${canonical}'.
optsep=
emacs_config_features=
for opt in XAW3D XPM JPEG TIFF GIF PNG RSVG CAIRO IMAGEMAGICK SOUND GPM DBUS \
- GCONF GSETTINGS NOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT \
- LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS X_TOOLKIT OLDXMENU X11 NS MODULES \
- THREADS XWIDGETS LIBSYSTEMD JSON CANNOT_DUMP LCMS2 GMP; do
+ GCONF GSETTINGS GLIB NOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT \
+ LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS X_TOOLKIT OLDXMENU X11 XDBE XIM \
+ NS MODULES THREADS XWIDGETS LIBSYSTEMD JSON CANNOT_DUMP LCMS2 GMP; do
case $opt in
CANNOT_DUMP) eval val=\${$opt} ;;
+ GLIB) val=${emacs_cv_links_glib} ;;
NOTIFY|ACL) eval val=\${${opt}_SUMMARY} ;;
TOOLKIT_SCROLL_BARS|X_TOOLKIT) eval val=\${USE_$opt} ;;
THREADS) val=${threads_enabled} ;;
diff --git a/doc/lispref/debugging.texi b/doc/lispref/debugging.texi
index 9b3ba6cf7ee..89927db21ec 100644
--- a/doc/lispref/debugging.texi
+++ b/doc/lispref/debugging.texi
@@ -983,6 +983,9 @@ the execution time. If you find that one particular function is
responsible for a significant portion of the execution time, you can
start looking for ways to optimize that piece.
+@findex profiler-start
+@findex profiler-report
+@findex profiler-stop
Emacs has built-in support for this. To begin profiling, type
@kbd{M-x profiler-start}. You can choose to profile by processor
usage, memory usage, or both. Then run the code you'd like to speed
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index a1fae225742..b863572e040 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -205,6 +205,26 @@ result in an endless loop.
If you need Emacs to be able to recover from closing displays, compile
it with the Lucid toolkit instead of GTK.
+** Emacs compiled with GTK+ 3 crashes when run under some X servers.
+This happens when the X server does not provide certain display
+features that the underlying GTK+ 3 toolkit assumes. For example, this
+issue has been seen with remote X servers like X2Go. The symptoms
+are an Emacs crash, possibly triggered by the mouse entering the Emacs
+window, or an attempt to resize the Emacs window. The crash backtrace
+contains a call to XQueryPointer.
+
+This issue was fixed in the GTK+ 3 toolkit in commit 4b1c0256 in February 2018.
+
+If your GTK+ 3 is still affected, you can avoid the issue by recompiling
+Emacs with a different X toolkit, eg --with-toolkit=gtk2.
+
+References:
+https://gitlab.gnome.org/GNOME/gtk/commit/4b1c02560f0d8097bf5a11932e52fb72f3e9e94b
+https://debbugs.gnu.org/24280
+https://bugs.debian.org/901038
+https://bugzilla.redhat.com/1483942
+https://access.redhat.com/solutions/3410101
+
** Emacs compiled with GTK crashes at startup due to X protocol error.
This is known to happen on elementary OS GNU/Linux systems.
diff --git a/lisp/calc/calc-cplx.el b/lisp/calc/calc-cplx.el
index 4a453a73d72..35cd31dfb4f 100644
--- a/lisp/calc/calc-cplx.el
+++ b/lisp/calc/calc-cplx.el
@@ -273,8 +273,8 @@
(or (eq (car-safe val) 'special-const)
(equal val '(cplx 0 1))
(and (eq (car-safe val) 'polar)
- (eq (nth 1 val) 0)
- (Math-equal (nth 1 val) (math-quarter-circle nil))))))
+ (eq (nth 1 val) 1)
+ (Math-equal (nth 2 val) (math-quarter-circle nil))))))
;;; Extract the real or complex part of a complex number. [R N] [Public]
;;; Also extracts the real part of a modulo form.
diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el
index 1b3b23d8871..83929beb1e0 100644
--- a/lisp/emacs-lisp/checkdoc.el
+++ b/lisp/emacs-lisp/checkdoc.el
@@ -1837,7 +1837,7 @@ Replace with \"%s\"? " original replace)
(if (checkdoc-autofix-ask-replace
(match-beginning 1) (+ (match-beginning 1)
(length ms))
- msg (format-message "`%s'" ms) t)
+ msg (format "`%s'" ms) t)
(setq msg nil)
(setq msg
(format-message
diff --git a/src/eval.c b/src/eval.c
index 8745ba9ef99..50de60c936c 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -787,7 +787,7 @@ usage: (defvar SYMBOL &optional INITVALUE DOCSTRING) */)
LOADHIST_ATTACH (sym);
}
else if (!NILP (Vinternal_interpreter_environment)
- && !XSYMBOL (sym)->u.s.declared_special)
+ && (SYMBOLP (sym) && !XSYMBOL (sym)->u.s.declared_special))
/* A simple (defvar foo) with lexical scoping does "nothing" except
declare that var to be dynamically scoped *locally* (i.e. within
the current file or let-block). */
diff --git a/src/xdisp.c b/src/xdisp.c
index 11b14e2cf95..04033665d76 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -21185,8 +21185,12 @@ maybe_produce_line_number (struct it *it)
an L2R paragraph. */
tem_it.bidi_it.resolved_level = 2;
+ /* We must leave space for 2 glyphs for continuation and truncation,
+ and at least one glyph for buffer text. */
+ int width_limit =
+ tem_it.last_visible_x - tem_it.first_visible_x
+ - 3 * FRAME_COLUMN_WIDTH (it->f);
/* Produce glyphs for the line number in a scratch glyph_row. */
- int n_glyphs_before;
for (const char *p = lnum_buf; *p; p++)
{
/* For continuation lines and lines after ZV, instead of a line
@@ -21210,18 +21214,18 @@ maybe_produce_line_number (struct it *it)
else
tem_it.c = tem_it.char_to_display = *p;
tem_it.len = 1;
- n_glyphs_before = scratch_glyph_row.used[TEXT_AREA];
/* Make sure these glyphs will have a "position" of -1. */
SET_TEXT_POS (tem_it.position, -1, -1);
PRODUCE_GLYPHS (&tem_it);
- /* Stop producing glyphs if we don't have enough space on
- this line. FIXME: should we refrain from producing the
- line number at all in that case? */
- if (tem_it.current_x > tem_it.last_visible_x)
+ /* Stop producing glyphs, and refrain from producing the line
+ number, if we don't have enough space on this line. */
+ if (tem_it.current_x >= width_limit)
{
- scratch_glyph_row.used[TEXT_AREA] = n_glyphs_before;
- break;
+ it->lnum_width = 0;
+ it->lnum_pixel_width = 0;
+ bidi_unshelve_cache (itdata, false);
+ return;
}
}