aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Morris2018-07-02 19:19:26 -0700
committerGlenn Morris2018-07-02 19:19:26 -0700
commit02f2f336af7c4129ec79ab00881bba3e14ff9820 (patch)
tree3f279977bb231ea6ddab8680999bc1bffcb31071
parentbc0e36df8d33595d6411ec4c18e3f4b643c01306 (diff)
parentfc5cae731cede7e00f3f2d40d6577537f872d439 (diff)
downloademacs-02f2f336af7c4129ec79ab00881bba3e14ff9820.tar.gz
emacs-02f2f336af7c4129ec79ab00881bba3e14ff9820.zip
Merge from origin/emacs-26
fc5cae7 ; Fix ChangeLog typo. e17a5e5 ; make change-history-commit f205928 * etc/HISTORY: Cite Brinkoff on early history. 4e58ca8 Document internal use of 'above-suspended' z-group frame para... 4bd43b0 Increase max-lisp-eval-depth adjustment while in debugger (bu... ab98352 Improve on last change in replace-buffer-contents 2f149c0 Fix a factual error in Introduction to Emacs Lisp 8ad50a3 ; * lisp/files.el (buffer-offer-save): Doc fix. (Bug#32000) c80f31f Minor improvements in documentation of imenu.el 8ebb683 Avoid errors with recentering in 'skeleton-insert' e980a3c * src/lisp.h: Omit obsolete comment re bytecode stack. eec71eb Speed up replace-buffer-contents 93c41ce Remove extra process call from vc-git-find-file-hook 7ea0873 ; Update some commentary 4a7f423 Speed up vc-git-dir-status-files 9134c84 Avoid compiler warning using coding.h Conflicts: src/editfns.c
-rw-r--r--ChangeLog.31429
-rw-r--r--doc/lispintro/emacs-lisp-intro.texi4
-rw-r--r--etc/HISTORY7
-rw-r--r--lisp/emacs-lisp/debug.el1
-rw-r--r--lisp/files.el8
-rw-r--r--lisp/imenu.el6
-rw-r--r--lisp/skeleton.el3
-rw-r--r--lisp/vc/vc-git.el16
-rw-r--r--src/coding.h4
-rw-r--r--src/editfns.c99
-rw-r--r--src/eval.c8
-rw-r--r--src/lisp.h18
-rw-r--r--src/w32fns.c22
-rw-r--r--src/xterm.c4
14 files changed, 1566 insertions, 63 deletions
diff --git a/ChangeLog.3 b/ChangeLog.3
index 6704d0d7169..a0a4794b4e0 100644
--- a/ChangeLog.3
+++ b/ChangeLog.3
@@ -1,3 +1,1430 @@
12018-07-01 Paul Eggert <eggert@cs.ucla.edu>
2
3 * etc/HISTORY: Cite Brinkhoff on early history.
4
52018-07-01 Martin Rudalics <rudalics@gmx.at>
6
7 Document internal use of 'above-suspended' z-group frame parameter
8
9 * src/w32fns.c (w32_dialog_in_progress, x_set_z_group):
10 * src/xterm.c (x_set_z_group): Clarify the internal use of
11 'above-suspended' when setting a frame's 'z-group' parameter.
12
132018-06-30 Gemini Lasswell <gazally@runbox.com>
14
15 Increase max-lisp-eval-depth adjustment while in debugger (bug#31919)
16
17 * src/eval.c (call_debugger): Increase the amount of extra Lisp
18 evaluation depth given to the debugger to allow it to call cl-print.
19 * lisp/emacs-lisp/debug.el (debugger-setup-buffer): Add a comment
20 to suggest updating call_debugger when changing print-level.
21
222018-06-30 Eli Zaretskii <eliz@gnu.org>
23
24 Improve on last change in replace-buffer-contents
25
26 * src/editfns.c (Freplace_buffer_contents): Call modification
27 hooks only for the actual region where changes are made.
28 (Bug#31888)
29
302018-06-30 Eli Zaretskii <eliz@gnu.org>
31
32 Fix a factual error in Introduction to Emacs Lisp
33
34 * doc/lispintro/emacs-lisp-intro.texi (Buffer Names): Update the
35 key that exits the splash screen. (Bug#32019)
36
372018-06-30 Eli Zaretskii <eliz@gnu.org>
38
39 Minor improvements in documentation of imenu.el
40
41 * lisp/imenu.el (imenu-generic-skip-comments-and-strings)
42 (imenu--generic-function): Doc fixes. (Bug#31962)
43
442018-06-30 Eli Zaretskii <eliz@gnu.org>
45
46 Avoid errors with recentering in 'skeleton-insert'
47
48 * lisp/skeleton.el (skeleton-insert): Don't recenter if we are
49 running in a buffer other than the one displayed in the selected
50 window. (Bug#31950)
51
522018-06-29 Paul Eggert <eggert@cs.ucla.edu>
53
54 * src/lisp.h: Omit obsolete comment re bytecode stack.
55
562018-06-29 Eli Zaretskii <eliz@gnu.org>
57
58 Speed up replace-buffer-contents
59
60 * src/editfns.c (EXTRA_CONTEXT_FIELDS): Add a_unibyte and
61 b_unibyte members.
62 (rbc_quitcounter): New static variable.
63 (Freplace_buffer_contents): Initialize a_unibyte, b_unibyte, and
64 rbc_quitcounter. Inhibit modification hooks if they were not
65 already inhibited. Use rarely_quit to allow user to quit, to
66 avoid calling maybe_quit too frequently (which hurts performance).
67 Remove redundant assertions (which hurt performance too much).
68 Call signal_after_change and update_compositions after all the
69 changes are done.
70 (buffer_chars_equal): Remove redundant assertions (which hurt
71 performance). Avoid using BUF_FETCH_CHAR_AS_MULTIBYTE, which
72 hurts performance by referencing Lisp symbols; instead, use
73 lower-level macros with explicit tests to select which macro to
74 use. (Bug#31888)
75
762018-06-27 Dmitry Gutov <dgutov@yandex.ru>
77
78 Remove extra process call from vc-git-find-file-hook
79
80 * lisp/vc/vc-git.el (vc-git-find-file-hook): Resolve FIXMEs.
81
822018-06-27 Dmitry Gutov <dgutov@yandex.ru>
83
84 Speed up vc-git-dir-status-files
85
86 * lisp/vc/vc-git.el (vc-git-dir-status-goto-stage): Call 'git
87 ls-files -u' for the ls-files-conflict stage
88 (https://lists.gnu.org/archive/html/emacs-devel/2018-06/msg00885.html).
89
902018-06-27 Eli Zaretskii <eliz@gnu.org>
91
92 Avoid compiler warning using coding.h
93
94 * src/coding.h: Add INLINE_HEADER_BEGIN..INLINE_HEADER_END, since
95 this header now has an extern INLINE function.
96
972018-06-27 Michael Albinus <michael.albinus@gmx.de>
98
99 Sync with Tramp 2.3.4. Do not merge with master
100
101 * doc/misc/trampver.texi:
102 * lisp/net/trampver.el: Change version to "2.3.4".
103
104 * lisp/net/tramp-smb.el (tramp-smb-handle-delete-directory):
105 Check, that the directory has been removed indeed.
106
107 * test/lisp/net/tramp-tests.el (tramp-test21-file-links): Adapt test.
108 (tramp--test-emacs25-p): New defun.
109 (tramp-test34-vc-registered): Use it.
110
1112018-06-27 Martin Rudalics <rudalics@gmx.at>
112
113 * src/xdisp.c (Vmouse_autoselect_window): Clarify doc-string (Bug#31975)
114
1152018-06-26 Noam Postavsky <npostavs@gmail.com>
116
117 Detect a non-list package archive content properly (Bug#22311)
118
119 * lisp/emacs-lisp/package.el (package--download-one-archive): Use
120 `read' instead of `read-from-string'; the latter always returns a
121 cons, so the `listp' check on its return value doesn't make sense. It
122 was changed from `read' to `read-from-string' in 2015-04-01 "*
123 emacs-lisp/package.el: Implement asynchronous refreshing", but that
124 change was not needed because `read' works fine on strings as well as
125 buffers.
126
1272018-06-25 Christophe Junke <junke.christophe@gmail.com> (tiny change)
128
129 Add ido-fallback special variable (Bug#31707)
130
131 Before ido.el switch to lexical-binding, it was possible for other
132 packages to modify the 'fallback' variables declared inside
133 'ido-file-internal' and 'ido-buffer-internal'.
134 * lisp/ido.el (ido-fallback): New variable.
135 (ido-buffer-internal, ido-file-internal): Reset ido-fallback to nil
136 before prompting user. Use ido-fallback when ido-exit is 'fallback'.
137 (ido-fallback-command): Add optional FALLBACK-COMMAND argument.
138
1392018-06-25 Karl Fogel <kfogel@red-bean.com>
140
141 Tighten a cross-reference in documentation
142
143 * doc/lispref/internals.texi (Writing Emacs Primitives): Switch to
144 a simple parenthetical cross-reference, following up to my
145 commit 9a53b6d426 of 2018-06-24.
146
147 See discussion:
148
149 https://lists.gnu.org/archive/html/emacs-devel/2018-06/msg00826.html
150 From: Eli Zaretskii
151 Subject: Re: [Emacs-diffs] \
152 emacs-26 9a53b6d: Say how to override a primitive interactive spec
153 To: Karl Fogel
154 CC: Stefan Monnier, Emacs Devel
155 Date: Mon, 25 Jun 2018 17:41:53 +0300
156 Message-Id: <83r2kvrkr2.fsf@gnu.org>
157
1582018-06-25 Michael Albinus <michael.albinus@gmx.de>
159
160 Fix last change in tramp-sh.el
161
162 * lisp/net/tramp-sh.el (tramp-do-copy-or-rename-file-directly):
163 Use "-R" rather than "-r" for recursive copy of directories.
164
1652018-06-24 Paul Eggert <eggert@cs.ucla.edu>
166
167 Revert previous patch; comment was OK after all.
168
1692018-06-24 Paul Eggert <eggert@cs.ucla.edu>
170
171 Fix lead comment for count_trailing_zero_bits
172
173 * src/data.c (count_trailing_zero_bits): Fix comment to match code.
174
1752018-06-24 Noam Postavsky <npostavs@gmail.com>
176
177 * lisp/emacs-lisp/regexp-opt.el (regexp-opt): Fix docstring quotes.
178
1792018-06-24 Simen Heggestøyl <simenheg@gmail.com>
180
181 Make a minor update to the CSS mode docstring
182
183 * lisp/textmodes/css-mode.el (css-mode): Mention 'fill-paragraph'.
184
1852018-06-24 Karl Fogel <kfogel@red-bean.com>
186
187 Say how to override a primitive interactive spec
188
189 * doc/lispref/internals.texi (Writing Emacs Primitives): Mention that
190 the `interactive-form' property can be used to override a primitive
191 interactive specification, and refer to the detailed documentation
192 for setting that property.
193
194 From this thread on Emacs Devel:
195
196 https://lists.gnu.org/archive/html/emacs-devel/2018-03/msg00923.html
197 From: Eli Zaretskii
198 To: Karl Fogel
199 CC: Juri Linkov, Emacs Devel
200 Subject: Re: [Emacs-diffs] \
201 master b88e7c8: Make transpose-regions interactive (Bug#30343)
202 Date: Thu, 29 Mar 2018 14:38:15 +0300
203 Message-Id: <834lkzdsd4.fsf@gnu.org>
204
2052018-06-24 Michael Albinus <michael.albinus@gmx.de>
206
207 Fix Bug#31941
208
209 * lisp/net/tramp-sh.el (tramp-do-copy-or-rename-file): In case of
210 FILENAME being a directory, check whether `copy-directory' could
211 be avoided. Suggested by Stephen Nutt <stnutt@gmail.com>. (Bug#31941)
212 (tramp-do-copy-or-rename-file-directly): Call "cp" with "-r".
213
2142018-06-23 Leo Liu <sdl.web@gmail.com>
215
216 Fix previous change in minibuffer-default-add-dired-shell-commands
217
218 The mailcap minibuffer completion used dynamic binding. Locally set
219 a dynamic variable.
220 * lisp/dired-aux.el (minibuffer-default-add-dired-shell-commands):
221 Store list of files in 'minibuffer-completion-table'. (Bug#31794)
222
2232018-06-23 Eli Zaretskii <eliz@gnu.org>
224
225 * src/editfns.c (Fformat): Make %x easier to spot in doc string. (Bug#31945)
226
2272018-06-23 Eli Zaretskii <eliz@gnu.org>
228
229 Improve responsiveness while in 'replace-buffer-contents'
230
231 * src/editfns.c (buffer_chars_equal): Avoid calling
232 buf_charpos_to_bytepos when the buffer is plain-ASCII.
233 Suggested by Milan Stanojević <mstanojevic@janestreet.com>.
234 Call maybe_quit to improve responsiveness.
235 (Freplace_buffer_contents): Call maybe_quit. Warn in the doc
236 string that the function could be slow. (Bug#31888)
237
2382018-06-23 Eli Zaretskii <eliz@gnu.org>
239
240 Improve documentation of 'server-start' and friends
241
242 * lisp/server.el (server-start, server-running-p): Document how to
243 reliably check that the current Emacs process started the server.
244 (Bug#31859)
245
2462018-06-23 Eli Zaretskii <eliz@gnu.org>
247
248 Clarify wording about functions' argument lists
249
250 * doc/lispref/functions.texi (Argument List): Clarify the
251 wording. (Bug#31872)
252
2532018-06-23 Eli Zaretskii <eliz@gnu.org>
254
255 * lisp/doc-view.el: Fix typos in the commentary. (Bug#31937)
256
2572018-06-22 Eli Zaretskii <eliz@gnu.org>
258
259 Fix a typo in emacs-lisp-intro.texi
260
261 * doc/lispintro/emacs-lisp-intro.texi (kill-ring-yank-pointer):
262 Add a missing quote. Reported by Jean-Christophe Helary
263 <brandelune@gmail.com> in emacs-devel.
264
2652018-06-22 Paul Eggert <eggert@cs.ucla.edu>
266
267 Fix doc typo: missing double-quote
268
2692018-06-22 Eli Zaretskii <eliz@gnu.org>
270
271 Avoid segfaults in replace-buffer-contents with large buffers
272
273 * src/editfns.c (Freplace_buffer_contents): Don't release
274 malloc'ed memory as long as we are using it. (Bug#31888)
275
2762018-06-22 Robert Pluim <rpluim@gmail.com>
277
278 Adjust for scaling for mode-line popup menus (Bug#31880)
279
280 * src/xmenu.c (menu_position_func) [HAVE_GTK3]: Take scaling
281 into account when calculating screen size.
282
2832018-06-21 Simen Heggestøyl <simenheg@gmail.com>
284
285 Change name of `seqp' argument (Bug#26411)
286
287 * lisp/emacs-lisp/seq.el (seqp): Change argument name.
288
289 * doc/lispref/sequences.texi: Update the documentation for seqp.
290
2912018-06-20 Noam Postavsky <npostavs@gmail.com>
292
293 Change index of ";" to better reflect it's usage (Bug#31623)
294
295 * doc/lispref/objects.texi (Comments): "; for commenting" fits better
296 with the following text about how a semicolon begins a comment. Also
297 mention that only unescaped semicolons start a comment.
298
2992018-06-20 Tak Kunihiro <tkk@misasa.okayama-u.ac.jp>
300
301 Fix bug of 'mouse-drag-and-drop-region' to detect edges of region (Bug#31905)
302
303 * lisp/mouse.el (mouse-drag-and-drop-region): Detect both the
304 beginning and the end of character of region during dragging
305 text.
306
3072018-06-19 Noam Postavsky <npostavs@gmail.com>
308
309 Fix #'fun handling inside `labels' (Bug#31792)
310
311 * lisp/emacs-lisp/cl.el (labels): Apply the equivalent of the
312 cl-labels change from 2015-01-16 "* lisp/emacs-lisp/cl-macs.el: Fix
313 last change".
314 * test/lisp/emacs-lisp/cl-tests.el (labels-function-quoting): New
315 test.
316 * lisp/emacs-lisp/cl-macs.el (cl-flet, cl-labels): Improve docstring,
317 link to relevant manual page.
318 * doc/misc/cl.texi (Function Bindings): Don't imply that function
319 cells of symbols are modified by cl-flet. Don't claim that cl-flet or
320 cl-labels affect references of the form (quote FUNC).
321
3222018-06-18 Eli Zaretskii <eliz@gnu.org>
323
324 Fix vertical-motion with 'visual' line-number display
325
326 * src/indent.c (Fvertical_motion): Don't exempt 'visual' sty;e of
327 line-number display from X coordinate adjustments. (Bug#31875)
328
3292018-06-17 Alan Third <alan@idiocy.org>
330
331 Handle NSAttributedString inputs (bug#29837)
332
333
334 * src/nsterm.m (EmacsView::insertText): Handle NSAttributedString.
335
3362018-06-17 Philipp Stephani <phst@google.com>
337
338 Allow inserting non-BMP characters
339
340 * src/coding.h (UTF_16_HIGH_SURROGATE_P, UTF_16_LOW_SURROGATE_P): Move
341 from coding.c and document.
342 (surrogates_to_codepoint): New function.
343
344 * src/nsterm.m (insertText:): Properly handle surrogate pairs.
345
346 (cherry picked from commit 703ac3ea1c1ce381f385469a0e88bc29d3fe83c2)
347
3482018-06-17 Aaron Jensen <aaronjensen@gmail.com>
349
350 Prevent errant scroll on mouse click (Bug#31546)
351
352 * src/nsterm.m (ns_mouse_position): Use correct frame when determining
353 mouse position.
354 * lisp/mouse.el (mouse-drag-track): Only account for mode-line height
355 if `mode-line-format' is non-nil.
356
3572018-06-17 Eli Zaretskii <eliz@gnu.org>
358
359 Minor documentation fix
360
361 * doc/lispref/windows.texi (Window Start and End): Improve
362 documentation and indexing of window-end.
363
3642018-06-16 Eli Zaretskii <eliz@gnu.org>
365
366 * lisp/window.el (window-toggle-side-windows): Doc fix. (Bug#31858)
367
3682018-06-16 Paul Eggert <eggert@Penguin.CS.UCLA.EDU>
369
370 Fix byte compilation of (eq foo 'default)
371
372 Backport from master.
373 Do not use the symbol ‘default’ as a special marker.
374 Instead, use a value that cannot appear in the program,
375 improving on a patch proposed by Robert Cochran (Bug#31718#14).
376 * lisp/emacs-lisp/bytecomp.el (byte-compile--default-val):
377 New constant.
378 (byte-compile-cond-jump-table-info)
379 (byte-compile-cond-jump-table): Use it instead of 'default.
380 * test/lisp/emacs-lisp/bytecomp-tests.el:
381 (byte-opt-testsuite-arith-data): Add a test for the bug.
382
3832018-06-16 Michael Albinus <michael.albinus@gmx.de>
384
385 Fix Bug#31846. Do not merge with master
386
387 * lisp/net/secrets.el (secrets-search-items)
388 (secrets-create-item): Fix format of :dict-entry values. (Bug#31846)
389
3902018-06-16 Eli Zaretskii <eliz@gnu.org>
391
392 Fix documentation of ':propertize' in mode-line-format
393
394 * doc/lispref/modes.texi (Mode Line Data): Make the description of
395 ':propertize' more accurate. (Bug#26291)
396
3972018-06-15 Eli Zaretskii <eliz@gnu.org>
398
399 Reject invalid 5-byte sequences when detecting UTF-8 encoding
400
401 * src/coding.c (detect_coding_utf_8): Reject multibyte sequences
402 whose leading byte is greater than MAX_MULTIBYTE_LEADING_CODE.
403 (Bug#31829)
404 * src/character.h (MAX_MULTIBYTE_LEADING_CODE): Add commentary
405 about the connection between the value of this macro and MAX_CHAR.
406
4072018-06-15 Eli Zaretskii <eliz@gnu.org>
408
409 Fix 'replace-buffer-contents' in multibyte buffers
410
411 * src/editfns.c (buffer_chars_equal): Pass a byte position to
412 BUF_FETCH_CHAR_AS_MULTIBYTE, not a character position.
413 (Bug#31837)
414
415 * test/src/editfns-tests.el (replace-buffer-contents-bug31837):
416 New test.
417
4182018-06-15 Robert Pluim <rpluim@gmail.com>
419
420 Update etc/NEWS for mail-source-movemail-program change
421
422 * etc/NEWS: Describe change in how we search for
423 mail-source-movemail-program.
424
4252018-06-15 Robert Pluim <rpluim@gmail.com>
426
427 Improve movemail default
428
429 * lisp/gnus/mail-source.el (mail-source-movemail-program):
430 Change default to "movemail".
431 (mail-source-movemail): Pass just mail-source-movemail-program to
432 call-process instead of fully specifying it relative to
433 exec-directory. Ensures that we will find Mailutils movemail if
434 it is installed. (Bug#31737)
435
4362018-06-15 Eli Zaretskii <eliz@gnu.org>
437
438 Delete description of deleted Customize functions
439
440 * doc/lispref/customize.texi (Variable Definitions): Remove the
441 description of 'custom-initialize-safe-set' and
442 'custom-initialize-safe-default', which were deleted in Emacs
443 23.2, and replace with the description of
444 'custom-initialize-delay'.
445
4462018-06-14 Noam Postavsky <npostavs@gmail.com>
447
448 Keep vc-print-log from putting point at buffer end (Bug#31764)
449
450 * lisp/vc/vc.el (vc-print-log-internal): Use `save-excursion' around
451 `vc-print-log-setup-buttons'.
452
4532018-06-14 Paul Eggert <eggert@cs.ucla.edu>
454
455 Don’t set EMACS=t if Bash is 4.4 or newer
456
457 (Backport from master.)
458 (Thanks to Stefan Monnier for improvements to this patch.)
459 * lisp/term.el (term--bash-needs-EMACS-status): New var.
460 (term--bash-needs-EMACSp): New function.
461 (term-exec-1): Use it instead of always setting EMACS.
462
4632018-06-14 Eli Zaretskii <eliz@gnu.org>
464
465 Improve commentary in info.el
466
467 * lisp/info.el: Explain in commentary why some commands start with
468 "info-" and others with "Info-". See also
469 http://lists.gnu.org/archive/html/emacs-devel/2017-11/msg00482.html.
470
4712018-06-13 Michael Albinus <michael.albinus@gmx.de>
472
473 Fix wording in tramp.texi
474
475 * doc/misc/tramp.texi (Frequently Asked Questions):
476 Fix wording for abbreviations.
477
4782018-06-13 Michael Albinus <michael.albinus@gmx.de>
479
480 * doc/misc/tramp.texi (Remote shell setup): Fix typo.
481
4822018-06-12 Sam Steingold <sds@gnu.org>
483
484 Finish the Bug#11728 work: hg & git
485
486 * lisp/vc/vc-git.el (vc-git--pushpull): Make `extra-args' a list.
487 Do not set `compilation-error-regexp-alist', this is done in
488 `vc-compilation-mode'.
489 (vc-git-error-regexp-alist): Tweak the regexp.
490 * lisp/vc/vc-hg.el (vc-hg-error-regexp-alist): Make non-trivial.
491 (vc-hg--pushpull): Accept `post-processing' argument.
492 Call them after the `command'.
493 (vc-hg-pull): Pass the `post-processing' commands that show which
494 are to be modified by the `update', and then run `update'.
495
4962018-06-12 Sam Steingold <sds@gnu.org>
497
498 Fix Bug#11728: show files updated by git
499
500 * lisp/vc/vc-git.el (vc-git--pushpull): Accept extra-args and set
501 `compilation-error-regexp-alist' to `vc-git-error-regexp-alist'.
502 (vc-git-pull): Pass "--stat" as `extra-args' to `vc-git--pushpull'.
503 (vc-git-push): Pass "" as `extra-args' to `vc-git--pushpull'.
504
5052018-06-12 Noam Postavsky <npostavs@gmail.com>
506
507 Make 'tags' targets respect --with-silent-rules (Bug#31744)
508
509 * lwlib/Makefile.in (TAGS):
510 * lisp/Makefile.in (TAGS):
511 * src/Makefile.in (TAGS): Use AM_V_GEN and AM_V_at.
512 * src/Makefile.in: Note that TAGS are generated in build dir.
513
5142018-06-11 Thomas Fitzsimmons <fitzsim@fitzsim.org>
515 Noam Postavsky <npostavs@gmail.com>
516
517 soap-client: Add byte-code compatibility function (Bug#31742)
518
519 * lisp/net/soap-client.el: Bump version to 3.1.4.
520 (soap-type-of): New function.
521 (soap-resolve-references, soap-decode-type)
522 (soap-encode-attributes, soap-encode-value): Replace aref
523 calls with calls to soap-type-of.
524
525 * lisp/net/soap-inspect.el (soap-sample-value, soap-inspect):
526 Replace aref calls with calls to soap-type-of.
527
528
529 Backport: (cherry picked from commit
530 1feb2e221349f26ec26bc684e0cce2acecbed3ca)
531
5322018-06-11 Eli Zaretskii <eliz@gnu.org>
533
534 * doc/lispref/files.texi (Unique File Names): Fix a typo. (Bug#31784)
535
5362018-06-10 Noam Postavsky <npostavs@gmail.com>
537
538 Fix term.el cursor movement at bottom margin (Bug#31690)
539
540 * lisp/term.el (term-handle-ansi-escape) <\E[B cud>: Allow moving the
541 cursor to the bottom margin line, rather than stopping one line
542 before.
543
5442018-06-10 Reuben Thomas <rrt@sc3d.org>
545
546 Call enchant-lsmod correctly when Enchant is installed with a suffix
547
548 * lisp/textmodes/ispell.el (ispell--call-enchant-lsmod): Cope with a
549 version suffix on the binary name, so enchant-2 is converted to
550 enchant-lsmod-2, not enchant-2-lsmod. (Bug#31761)
551
552 (cherry picked from commit a402d9aacbecf4bf0b9afde592a3b90c71f96832)
553
5542018-06-09 Eli Zaretskii <eliz@gnu.org>
555
556 Enlarge DUMPED_HEAP_SIZE for 64-bit Windows builds
557
558 * src/w32heap.c (DUMPED_HEAP_SIZE): Bump to 23MB. Reported by
559 Andy Moreton <andrewjmoreton@gmail.com>.
560
5612018-06-09 Eli Zaretskii <eliz@gnu.org>
562
563 Update Unicode data files to version 11.0.0 of Unicode
564
565 * admin/unidata/UnicodeData.txt:
566 * admin/unidata/SpecialCasing.txt:
567 * admin/unidata/NormalizationTest.txt:
568 * admin/unidata/copyright.html:
569 * admin/unidata/BidiMirroring.txt:
570 * admin/unidata/BidiBrackets.txt: Import from Unicode 11.0.
571 * admin/notes/unicode: Update the URL for OTF script tags.
572
573 * lisp/international/mule-cmds.el (ucs-names): Update unused ranges.
574 * lisp/international/fontset.el (script-representative-chars): Add
575 hanifi-rohingya, old-sogdian, sogdian, dogra, gunjala-gondi,
576 makasar, and medefaidrin.
577 (otf-script-alist): Add old-hungarian.
578 * lisp/international/characters.el (tbl): Add syntax entries for
579 Supplemental Mathematical Operators, Miscellaneous Symbols and
580 Arrows, and Supplemental Punctuation.
581 Update the list of wide characters.
582
583 * test/lisp/international/ucs-normalize-tests.el
584 (ucs-normalize-tests--failing-lines-part2): Update to match
585 admin/unidata/NormalizationTest.txt.
586
587 * doc/lispref/nonascii.texi (Character Properties): Update the
588 reference to the Unicode Standard.
589 * doc/misc/efaq.texi (New in Emacs 26):
590 * etc/NEWS: Mention compatibility with Unicode 11.0.
591
5922018-06-09 Eli Zaretskii <eliz@gnu.org>
593
594 * etc/NEWS: Belatedly call out vc-hg changes in v26.1. (Bug#31759)
595
5962018-06-09 Eli Zaretskii <eliz@gnu.org>
597
598 Clarify the documentation of 'dired-recursive-deletes'
599
600 * doc/emacs/dired.texi (Dired Deletion): Clarify text regarding
601 recursive deletion of non-empty directories. (Bug#31529)
602
6032018-06-08 Eli Zaretskii <eliz@gnu.org>
604
605 Clarify doc string of 'update-glyphless-char-display'
606
607 * lisp/international/characters.el
608 (update-glyphless-char-display): Doc fix. (Bug#31730)
609
6102018-06-08 Eli Zaretskii <eliz@gnu.org>
611
612 Clarify subtle issues with 'eq' in byte-compiled code
613
614 * doc/lispref/objects.texi (Equality Predicates): Explain why
615 byte-compiled code might compare literal objects with identical
616 contents as 'eq'. (Bug#31688)
617
6182018-06-07 Gemini Lasswell <gazally@runbox.com>
619
620 Make cl-print respect print-quoted (bug#31649)
621
622 * lisp/emacs-lisp/cl-print.el (cl-print-object) <cons>: Observe
623 print-quoted when printing quote and its relatives. Add printing of
624 'function' as #'.
625
6262018-06-07 Martin Rudalics <rudalics@gmx.at>
627
628 Fix unexpected jumps of window-point in 'set-window-configuration' (Bug#31695)
629
630 * src/window.c (Fset_window_configuration): Prevent that the
631 fix for Bug#12208 affects restoration of window points when
632 using separate minibuffer frames (Bug#31695).
633
6342018-06-06 Nicolas Petton <nicolas@petton.fr>
635
636 * etc/emacs.appdata.xml: Update Emacs screenshot.
637
6382018-06-06 Eli Zaretskii <eliz@gnu.org>
639
640 Fix cursor movement by 'next-logical-line' after 'next-line'
641
642 * src/indent.c (Fvertical_motion): Adjust TO_X when line-numbers
643 are being displayed. Remove unneeded "correction" of TO_X at the
644 goal line.
645
646 * lisp/simple.el (last--line-number-width): Remove unneeded
647 variable.
648 (line-move-visual): Account for line-number display width by
649 adjusting the pixel X coordinate that gets converted into
650 canonical columns passed to vertical-motion, instead of adjusting
651 temporary-goal-column (which then affects next commands, including
652 next-logical-line). (Bug#31723)
653
6542018-06-05 Allen Li <darkfeline@felesatra.moe>
655
656 Fix prompt in bookmark.el (Bug#24726)
657
658 * lisp/bookmark.el (bookmark-set-internal): Conform to the standard
659 default prompt format (per `minibuffer-electric-default-mode') which
660 does not use a colon.
661
6622018-06-05 Basil L. Contovounesios <contovob@tcd.ie>
663
664 Improve documentation of 'empty' whitespace-style
665
666 * doc/emacs/display.texi (Useless Whitespace): Clarify that the
667 'empty' whitespace-style option highlights empty lines only at
668 BOB/EOB, as per the docstring of whitespace-style. (bug#31713)
669
6702018-06-05 Paul Eggert <eggert@cs.ucla.edu>
671
672 Port FC_COLOR change to older fontconfig
673
674 Problem reported by John ff in:
675 https://lists.gnu.org/r/emacs-devel/2018-04/msg00058.html
676 * src/ftfont.c (ftfont_spec_pattern) [!FC_COLOR]:
677 Don’t use FC_COLOR on older fontconfigs that don’t have it.
678
6792018-06-05 Robert Pluim <rpluim@gmail.com>
680
681 Ignore color fonts when using Xft
682
683 * src/font.c (syms_of_font): New configuration variable
684 xft-ignore-color-fonts, default t.
685 * src/ftfont.c (ftfont_spec_pattern): Tell fontconfig to ignore
686 color fonts if xft-ignore-color-fonts is t. (Bug#30874, Bug#30045)
687 * etc/NEWS: Document xft-ignore-color-fonts.
688
6892018-06-04 Noam Postavsky <npostavs@gmail.com>
690
691 Fix comint-get-old-input-default for output field case (Bug#25028)
692
693 * lisp/comint.el (comint-get-old-input-default): Don't return whole
694 field when point was on an output field.
695
6962018-06-04 Eli Zaretskii <eliz@gnu.org>
697
698 Prevent infloop in 'delete-trailing-whitespace'
699
700 * lisp/simple.el (delete-trailing-whitespace): Avoid inflooping
701 when some region of trailing whitespace is unmodifiable.
702 (Bug#31557)
703
7042018-06-04 Gemini Lasswell <gazally@runbox.com>
705
706 Make cl-print respect print-level and print-length (bug#31559)
707
708 * lisp/emacs-lisp/cl-print.el (cl-print--depth): New variable.
709 (cl-print-object) <cons>: Print ellipsis if printing depth greater
710 than 'print-level' or length of list greater than 'print-length'.
711 (cl-print-object) <vector>: Truncate printing with ellipsis if
712 vector is longer than 'print-length'.
713 (cl-print-object) <cl-structure-object>: Truncate printing with
714 ellipsis if structure has more slots than 'print-length'.
715 (cl-print-object) <:around>: Bind 'cl-print--depth'.
716 * test/lisp/emacs-lisp/cl-print-tests.el
717 (cl-print-tests-3, cl-print-tests-4): New tests.
718
719 (cherry picked from commit 0f48d18fd2a30f29cc3592a835d2a2254c9b0afb)
720
7212018-06-03 Phil Sainty <psainty@orcon.net.nz>
722
723 Fix remote-host directory tracking for shells in `term' buffers
724
725 * lisp/term.el (term-handle-ansi-terminal-messages): Use an explicit
726 tramp method when constructing the tramp path for a non-local host,
727 as this is now mandatory. "-" is a pseudo-method for the user's
728 `tramp-default-method'. (Bug#31355)
729
730 Specify the remote username explicitly in all cases, as
731 `tramp-default-user' and `tramp-default-user-alist' could cause the
732 previous logic to fail.
733
734 Minor related improvements to the commentary.
735
7362018-06-03 Eli Zaretskii <eliz@gnu.org>
737
738 Update doc string of 'rx'
739
740 * lisp/emacs-lisp/rx.el (rx): Update the description of some
741 character classes.
742
7432018-06-03 Stefan Monnier <monnier@iro.umontreal.ca>
744
745 Fix bug#30846, along with misc cleanups found along the way
746
747 * test/src/data-tests.el (data-tests-kill-all-local-variables): New test.
748
749 * src/buffer.c (swap_out_buffer_local_variables): Remove.
750 Fuse the body of its loop into that of reset_buffer_local_variables.
751 (Fkill_buffer, Fkill_all_local_variables): Don't call it any more.
752 (reset_buffer_local_variables): Make sure the buffer's local binding
753 is swapped out before removing it from the alist (bug#30846).
754 Call watchers before actually killing the var.
755
756 * src/data.c (Fmake_local_variable): Simplify.
757 Use swap_in_global_binding to swap out any local binding, instead of
758 a mix of find_symbol_value followed by messing with where&found.
759 Don't call swap_in_symval_forwarding since the currently swapped
760 binding is never one we've modified.
761 (Fkill_local_variable): Use swap_in_global_binding rather than messing
762 with where&found to try and trick find_symbol_value into doing the same.
763
764 * src/alloc.c (mark_localized_symbol): 'where' can't be a frame any more.
765
766 (cherry picked from commit 3ddff080341580eb6fc18d907181e9cc2301f62d)
767
7682018-06-03 Jay Kamat <jaygkamat@gmail.com>
769
770 esh-opt.el: Fix improper parsing of first argument (Bug#28323)
771
772 Examples of broken behavior:
773
774 sudo -u root whoami
775 Outputs: -u
776 ls -I '*.txt' /dev/null
777 Errors with: *.txt: No such file or directory
778
779 * lisp/eshell/esh-opt.el (eshell--process-args): Refactor usage of
780 args to eshell--args, as we rely on modifications from
781 eshell--process-option and vice versa. These modifications were not
782 being propogated in the (if (= ai 0)) case, since popping the first
783 element of a list doesn't destructively modify the underlying list
784 object.
785
786 (cherry picked from commit 92a8230e49a65be48442ee95cf50c90514e48f99)
787
7882018-06-03 Noam Postavsky <npostavs@gmail.com>
789
790 * lisp/epa.el (epa-decrypt-file): Apply epa-pinentry-mode (Bug#30363).
791
792 (cherry picked from commit 217202c084232f36d4fa0fead0f3aca21396d074)
793
7942018-06-03 Noam Postavsky <npostavs@gmail.com>
795
796 Fix cl-print for circular sublists (Bug#31146)
797
798 * lisp/emacs-lisp/cl-print.el (cl-print-object) <cons>: Push each
799 element of list being printed onto cl-print--currently-printing.
800 * test/lisp/emacs-lisp/cl-print-tests.el (cl-print-circle-2): New
801 test.
802
803 (cherry picked from commit b8aa7ecf54c9b164a59f1b0e9f9fe90531dadd20)
804
8052018-06-03 Lars Ingebrigtsen <larsi@gnus.org>
806
807 Revert "Make mail-extract-address-components return the user name more"
808
809 This reverts commit 8b50ae8b2284b5652c2843a9d0d076f4f657be28.
810
811 According to tests in bug#27656 by OGAWA Hirofumi, this patch
812 led to wrong results when binding
813
814 (dolist (addr '("Rasmus <rasmus@gmx.us>" "Rasmus <mbox@gmx.us>"))
815 (dolist (ignore-single '(t nil))
816 (dolist (ignore-same '(t nil))
817 (let ((mail-extr-ignore-single-names ignore-single)
818 (mail-extr-ignore-realname-equals-mailbox-name ignore-same))
819 (message "%s" (mail-extract-address-components addr))))))
820
821 in combination.
822
823 (cherry picked from commit a3a9d5434d56f8736cc47e379a1d011d4c779b7c)
824
8252018-06-03 Paul Eggert <eggert@cs.ucla.edu>
826
827 Centralize Bug#30931 fix
828
829 * src/marker.c (detach_marker): New function.
830 * src/editfns.c (save_restriction_restore):
831 * src/insdel.c (signal_before_change): Use it.
832
833 (cherry picked from commit 6f66a43d7ad6cada2b7dbb6d07efe36be1dc7ecb)
834
8352018-06-03 Noam Postavsky <npostavs@gmail.com>
836
837 Fix another case of freed markers in the undo-list (Bug#30931)
838
839 * src/alloc.c (free_marker): Remove.
840 * src/editfns.c (save_restriction_restore):
841 * src/insdel.c (signal_before_change): Detach the markers from the
842 buffer when we're done with them instead of calling free_marker on
843 them.
844 * test/src/editfns-tests.el (delete-region-undo-markers-1)
845 (delete-region-undo-markers-2): New tests.
846
847 (cherry picked from commit 96b8747d5c5d747af13fd84d8fe0308ef2a0ea7a)
848
8492018-06-03 Paul Eggert <eggert@cs.ucla.edu>
850
851 Fix CHECK_ALLOCATED_AND_LIVE abort during GC
852
853 * src/editfns.c (save_restriction_restore):
854 Wait for the GC to free the temporary markers (Bug#30931).
855
856 (cherry picked from commit 670f2ffae718046c0fb37313965a51c040ed096f)
857
8582018-06-03 Noam Postavsky <npostavs@gmail.com>
859
860 Don't wait for visible frames to become visible
861
862 For discussion, see thread starting at
863 https://lists.gnu.org/archive/html/emacs-devel/2018-03/msg00807.html.
864 * src/xterm.c (x_make_frame_visible): Check FRAME_VISIBLE_P before
865 calling x_wait_for_event.
866
867 (cherry picked from commits 2a192e21cf3b04b7f830b4971c1508c611e13a3c
868 and 00c1f771f2a51ffa675ec5a07ea330f2605cd302)
869
8702018-06-03 Tino Calancha <tino.calancha@gmail.com>
871
872 query-replace undo: Handle when user edits the replacement string
873
874 * lisp/replace.el (perform-replace): Update the replacement string
875 after the user edit it (Fix Bug#31538).
876
877 * test/lisp/replace-tests.el (query-replace-undo-bug31538): New test.
878
879 Backport: (cherry picked from commits
880 ea133e04f49afa7928e49a3ac4a85b47f6f13f01
881 and
882 7dcfdf5b14325ae7996f272f14c72810d7c84944)
883
8842018-06-03 Tino Calancha <tino.calancha@gmail.com>
885
886 Backport: Fix corner case in query-replace-regexp undo
887
888 This commit fixes Bug#31492.
889 * lisp/replace.el (replace-match-maybe-edit): Preserve match data.
890
891 * test/lisp/replace-tests.el (query-replace-undo-bug31492): Add test.
892
893 (cherry picked from commit bab73230d1be1fe394b7269c1365ef6fb1a5d9b3)
894
8952018-06-03 Tino Calancha <tino.calancha@gmail.com>
896
897 Backport: Preserve case in query-replace undo
898
899 If the user query and replaces 'foo' with 'BAR', then
900 undo must comeback to 'foo', not to 'FOO' (Bug#31073).
901 * lisp/replace.el (perform-replace): Bind nocasify to non-nil
902 value during undo/undo-all actions.
903 * test/lisp/replace-tests.el (query-replace-undo-bug31073): Add test.
904
905 (cherry picked from commit 32dc0cb1b5ae895d237c7118ccaeb084715934fd)
906
9072018-06-02 Alan Third <alan@idiocy.org>
908
909 Set accessibility subroles for child frame (bug#31324)
910
911
912 * src/nsterm.m (x_set_parent_frame): Set subrole depending on whether
913 frame is a child or not.
914
9152018-06-02 Alan Third <alan@idiocy.org>
916
917 Fix redefinition of child frames on NS
918
919 * src/nsterm.m (x_set_parent_frame): If the NSWindow has an existing
920 parent frame, remove it.
921
9222018-06-02 Eli Zaretskii <eliz@gnu.org>
923
924 Improve ELisp documentation of 'clone-indirect-buffer'
925
926 * doc/lispref/buffers.texi (Indirect Buffers): Be more explicit
927 about the value of DISPLAY-FLAG in interactive usage. (Bug#31648)
928
9292018-06-02 Eli Zaretskii <eliz@gnu.org>
930
931 Improve documentation of 'inhibit-message'
932
933 * src/xdisp.c (syms_of_xdisp) <inhibit-message>: Warn against
934 setting it non-nil globally. (Bug#31627)
935
9362018-06-02 Eli Zaretskii <eliz@gnu.org>
937
938 Improve documentation of comment styles
939
940 * doc/lispref/syntax.texi (Syntax Flags): Define the "a" style.
941 (Bug#31624)
942
9432018-06-02 Eli Zaretskii <eliz@gnu.org>
944
945 Documentation improvements in newcomment.el
946
947 * lisp/newcomment.el (uncomment-region)
948 (uncomment-region-default): Doc fixes. (Bug#31615)
949
9502018-06-02 Eli Zaretskii <eliz@gnu.org>
951
952 Imp[rove documentation of 'with-silent-modifications'
953
954 * doc/lispref/buffers.texi (Buffer Modification): Document
955 'with-silent-modifications'. (Bug#31613)
956 * doc/lispref/text.texi (Changing Properties): Add a
957 cross-reference to "Buffer Modification". Improve wording.
958
9592018-06-02 Eli Zaretskii <eliz@gnu.org>
960
961 Fix decoding of directories when "~" includes non-ASCII chars
962
963 * src/fileio.c (Fexpand_file_name): Don't build multibyte strings
964 from unibyte non-ASCII strings when NAME and DEFAULT_DIRECTORY
965 have different multibyteness, as this adds bytes to the byte
966 sequence, and in some situations, e.g., when the home directory
967 includes non-ASCII characters, can fail file APIs. (Bug#30755)
968
969 * lisp/startup.el (normal-top-level): Make sure default-directory
970 is set to a multibyte string when decoded on MS-Windows.
971
972 (cherry picked from commit 3aab8626ba5080bb04d0fdae52d99c850a842a52)
973
9742018-06-02 Eli Zaretskii <eliz@gnu.org>
975
976 Don't remove highlight of misspelled word on pdict save
977
978 * lisp/textmodes/ispell.el (ispell-pdict-save): Don't restart
979 flyspell-mode, as bug#11963, which this was supposed to fix, is
980 fixed better by ispell-command-loop, when the user types 'i' or
981 'a'. Restarting Flyspell mode when the personal dictionary is
982 saved caused bug#31372 as side effect.
983 (ispell-command-loop): Test 'flyspell-mode', not whether
984 flyspell-unhighlight-at is fboundp, to determine whether Flyspell
985 mode is turned on in the current buffer.
986 (flyspell-unhighlight-at): Add declare-function form for it.
987
988 (cherry picked from commit 91e582a31ada28fab5ae55bdbf959a9d30796587)
989
9902018-06-02 Ari Roponen <ari.roponen@gmail.com>
991
992 Fix some problems in the Cairo build
993
994 * src/xterm.c (x_begin_cr_clip): Create image surface.
995 (x_update_end) [USE_CAIRO]: Remove GTK3-specific code.
996 (x_scroll_run) [USE_CAIRO]: Implement scrolling.
997 * src/image.c (lookup_rgb_color) [USE_CAIRO]: Support Cairo.
998 (jpeg_load_body) [USE_CAIRO]: Support Cairo. Use USE_CAIRO
999 instead of CAIRO for #ifdef's.
1000 (imagemagick_load_image) [USE_CAIRO]: Support Cairo.
1001 (Bug#31288)
1002
1003 (cherry picked from commit 2d0eff42b8f1122e00f948759ed01a3be1a8c3fc)
1004
10052018-06-02 Eli Zaretskii <eliz@gnu.org>
1006
1007 Avoid infloops in font_open_entity
1008
1009 * src/font.c (font_open_entity): Fail after 15 iterations through
1010 the loop that looks for a font whose average_width and height are
1011 both positive. This avoids infinite loops for fonts that, e.g.,
1012 report average_width of zero for any possible size we try.
1013 (Bug#31316)
1014
1015 (cherry picked from commit e2879c1f837059335af89022b2a9ac9bc861e96d)
1016
10172018-06-02 Eli Zaretskii <eliz@gnu.org>
1018
1019 Fix encoding of characters when using GB18030 fonts
1020
1021 * lisp/international/fontset.el (font-encoding-alist): Fix the
1022 GB18030 entry to encode characters correctly when passing them to
1023 the xfont back-end. (Bug#31315) See also
1024 http://lists.gnu.org/archive/html/emacs-devel/2008-01/msg00754.html.
1025
1026 (cherry picked from commit bbe2cadc544e63e9378350621887f8fb9bbcc236)
1027
10282018-06-02 Eli Zaretskii <eliz@gnu.org>
1029
1030 Fix C-p and C-n when wrap-prefix is too wide
1031
1032 * src/xdisp.c (move_it_in_display_line_to): Avoid looping in
1033 previous/next-line when wrap-prefix is set to a too-wide
1034 stretch of whitespace. (Bug#30432)
1035
1036 (cherry picked from commit 842b3d7412eaed6b2c9f90c3361abb4932ec0b1d)
1037
10382018-06-02 Eli Zaretskii <eliz@gnu.org>
1039
1040 Avoid redisplay problems with too wide wrap-prefix
1041
1042 * src/xdisp.c (display_line): Avoid looping in redisplay when
1043 wrap-prefix is set to a too-wide stretch of whitespace.
1044 (Bug#30432)
1045
1046 (cherry picked from commit 2a1fe08307402d6217d073f8ab7737750d253dd4)
1047
10482018-06-02 Eli Zaretskii <eliz@gnu.org>
1049
1050 Fix 'posn-at-point' when line numbers are displayed
1051
1052 * src/xdisp.c (pos_visible_p): For the leftmost glyph, adjust the X
1053 coordinate due to line-number display. (Bug#30834)
1054
1055 (cherry picked from commit 4a20174d7949028f66b18a92a75d6b74194242a8)
1056
10572018-06-02 Eli Zaretskii <eliz@gnu.org>
1058
1059 Another followup to fixing 'window-text-pixel-width'
1060
1061 * src/xdisp.c (Fwindow_text_pixel_size): Adjust the return value
1062 when we stop one buffer position short of TO. (Bug#30746)
1063
1064 (cherry picked from commit 33cba5405c724566673cf023513bfb1faa963bea)
1065
10662018-06-02 Eli Zaretskii <eliz@gnu.org>
1067
1068 Fix mouse-set-point when line numbers are displayed
1069
1070 * src/xdisp.c (move_it_to): Initialize the line_number_produced_p
1071 flag before iterating on a new line. (Bug#30818)
1072
1073 (cherry picked from commit 5c585b8b994aad4e6844f8eed80bdfbb396e91bf)
1074
10752018-06-02 Eli Zaretskii <eliz@gnu.org>
1076
1077 * src/xdisp.c (Fwindow_text_pixel_size): Fix last change.
1078
1079 (cherry picked from commit 06911714ef66ea81380b1eda75a9f7cfbc9e0b65)
1080
10812018-06-02 Eli Zaretskii <eliz@gnu.org>
1082
1083 Fix 'window-text-pixel-size' when display properties are around
1084
1085 * src/xdisp.c (Fwindow_text_pixel_size): Correct the result when
1086 there's a display property at the TO position, and the call to
1087 move_it_to overshoots. (Bug#30746)
1088
1089 (cherry picked from commit 50e2c0fb5180a757d8d533518f68837ffe5909be)
1090
10912018-06-02 Eli Zaretskii <eliz@gnu.org>
1092
1093 Fix display of TABs in hscrolled windows with line numbers
1094
1095 * src/dispextern.h (struct it): New members tab_offset and
1096 line_number_produced_p.
1097 * src/xdisp.c (display_line): Don't set row->x to a negative value
1098 if line numbers are being displayed. (Bug#30582)
1099 Reset the line_number_produced_p flag before laying out the glyph
1100 row.
1101 (x_produce_glyphs): Use the line_number_produced_p flag to decide
1102 whether to offset the X coordinate due to line-number display.
1103 Use the tab_offset member to restore the original TAB width for
1104 alignment purposes.
1105 (move_it_in_display_line_to): Don't produce line numbers when moving
1106 in hscrolled window to the left of first_visible_x.
1107 (maybe_produce_line_number): Set the line_number_produced_p flag.
1108 (Bug#30584)
1109 * src/term.c (produce_glyphs): Correct TAB width only when
1110 line_number_produced_p flag is set.
1111
1112 (cherry picked from commit 1ac190553886ff20817d3dd218464e2fc6f9e42a)
1113
11142018-06-02 Matthias Dahl <matthias.dahl@binary-island.eu>
1115
1116 Fix wait_reading_process_output wait_proc hang
1117
1118 * src/process.c (read_process_output): Track bytes read from
1119 a process.
1120 (wait_reading_process_output): If called recursively through
1121 timers and/or process filters via accept-process-output, it is
1122 possible that the output of wait_proc has already been read by
1123 one of those recursive calls, leaving the original call hanging
1124 forever if no further output arrives through that fd and no
1125 timeout has been set. Fix that by using the process read
1126 accounting to keep track of how many bytes have been read and
1127 use that as a condition to break out of the infinite loop and
1128 return to the caller as well as to calculate the proper return
1129 value (if a wait_proc is given that is).
1130
1131 * src/process.h (struct Lisp_Process): Add nbytes_read to track
1132 bytes read from a process.
1133
1134 (cherry picked from commit 4ba32858d61eee16f17b51aca01c15211a0912f8)
1135
11362018-06-02 Eli Zaretskii <eliz@gnu.org>
1137
1138 Fix posn-at-point in Flycheck buffers
1139
1140 * src/dispnew.c (buffer_posn_from_coords): Improve commentary.
1141
1142 * src/xdisp.c (move_it_in_display_line_to): Don't exit the loop
1143 under truncate-lines if the glyph at TO_CHARPOS was not yet
1144 produced. This avoids bailing out too early when we are at
1145 TO_CHARPOS, but didn't yet produce glyphs for that buffer
1146 position, because the last call to PRODUCE_GLYPHS at this position
1147 was for an object other than the buffer. For further details, see
1148 http://lists.gnu.org/archive/html/emacs-devel/2018-01/msg00537.html.
1149
1150 (cherry picked from commit c0154ac7c3423f68d8f3a2e85a756c9759219039)
1151
11522018-06-02 Martin Rudalics <rudalics@gmx.at>
1153
1154 * etc/PROBLEMS: Document stickyness problem with FVWM (Bug#31650)
1155
11562018-06-01 Eli Zaretskii <eliz@gnu.org>
1157
1158 Update Emacs Lisp Intro to match current behavior
1159
1160 * doc/lispintro/emacs-lisp-intro.texi (Wrong Type of Argument)
1161 (debug, debug-on-entry, Void Function, Void Variable): Update the
1162 *Backtrace* buffer display to current Emacs. (Bug#31654)
1163
11642018-06-01 Robert Pluim <rpluim@gmail.com>
1165
1166 Fix previous commit
1167
1168 * doc/emacs/files.texi (Interlocking): Two spaces at end of sentence
1169
11702018-06-01 Ville Skyttä <ville.skytta@iki.fi> (tiny change)
1171
1172 Fix typos in several manuals (Bug#31610)
1173
11742018-06-01 Robert Pluim <rpluim@gmail.com>
1175
1176 Add detailed documentation about lock files
1177
1178 * doc/emacs/files.texi (Interlocking): Point user at detailed
1179 file locking description in lisp reference manual. Add index
1180 entry for '.#' to improve disoverability of information about locking.
1181
1182 * doc/lispref/files.texi (File Locks): Describe in detail what
1183 the form of the lock file is. Add index entry for '.#' to
1184 improve disoverability of information about locking.
1185
1186 * src/filelock.c (create-lockfiles): Add cross reference to
1187 file locking in user manual and to 'lock-buffer'. Add string
1188 '.#' to help users find the doc string.
1189
11902018-06-01 Eli Zaretskii <eliz@gnu.org>
1191
1192 Add commentary for subtle aspect of frame.el
1193
1194 * lisp/frame.el: Explain why we use symbol-function when adding
1195 watchers for certain variables that need to trigger redisplay.
1196
11972018-06-01 Eli Zaretskii <eliz@gnu.org>
1198
1199 Improve documentation of 'directory-files-and-attributes'
1200
1201 * doc/lispref/files.texi (Contents of Directories): Fix inaccurate
1202 description of the return value of directory-files-and-attributes.
1203
1204 * src/dired.c (Fdirectory_files_and_attributes): Describe the
1205 function's value in more detail.
1206
12072018-05-30 Katsumi Yamaoka <yamaoka@jpl.org>
1208
1209 * lisp/gnus/message.el (message-remove-header): Don't remove things
1210 not looking like header (bug#31651).
1211
12122018-05-30 Eli Zaretskii <eliz@gnu.org>
1213
1214 Adapt hexl-mode to native line-number display
1215
1216 * lisp/hexl.el (hexl-mode-ruler): When display-line-numbers is in
1217 effect, adjust offsets and columns to account for the line-number
1218 display. (Bug#31595)
1219
12202018-05-30 Michael Albinus <michael.albinus@gmx.de>
1221
1222 Fix example in Tramp manual
1223
1224 * doc/misc/tramp.texi (Frequently Asked Questions): Fix wording
1225 for the zsh example.
1226
12272018-05-29 Robert Pluim <rpluim@gmail.com>
1228
1229 Handle case where Xft is found but not XRender
1230
1231 * configure.ac (XFT_LIBS): Ensure that HAVE_XFT is no if
1232 XRender is not found. (Bug#31634)
1233
12342018-05-29 Michael Albinus <michael.albinus@gmx.de>
1235
1236 * doc/misc/tramp.texi (Frequently Asked Questions): Adapt zsh example.
1237
12382018-05-29 Damien Cassou <damien@cassou.me>
1239
1240 Improve read-multiple-choice docstring (Bug#31628)
1241
1242 * lisp/emacs-lisp/rmc.el (read-multiple-choice): Improve docstring.
1243
12442018-05-29 Michael Albinus <michael.albinus@gmx.de>
1245
1246 * doc/misc/tramp.texi (All): Use @code instead of @option for user options.
1247
12482018-05-29 Michael Albinus <michael.albinus@gmx.de>
1249
1250 Fix Bug#31605
1251
1252 * doc/misc/tramp.texi (All): Add @vindex entries for
1253 environment variables.
1254 (Remote shell setup): New items `tramp-terminal-type' and
1255 "Determining a Tramp session".
1256 (Frequently Asked Questions): Adapt zsh example. (Bug#31605)
1257
12582018-05-29 Michael Albinus <michael.albinus@gmx.de>
1259
1260 Sync with Tramp 2.3.4-pre
1261
1262 * doc/misc/trampver.texi: Change version to "2.3.4-pre
1263
1264 * lisp/net/tramp.el (tramp-mode, tramp-verbose)
1265 (tramp-backup-directory-alist, tramp-auto-save-directory)
1266 (tramp-encoding-shell, tramp-encoding-command-switch)
1267 (tramp-encoding-command-interactive, tramp-default-method)
1268 (tramp-default-method-alist, tramp-default-user)
1269 (tramp-default-user-alist, tramp-default-host)
1270 (tramp-default-host-alist, tramp-default-proxies-alist)
1271 (tramp-save-ad-hoc-proxies, tramp-restricted-shell-hosts-alist)
1272 (tramp-local-end-of-line, tramp-rsh-end-of-line)
1273 (tramp-login-prompt-regexp, tramp-shell-prompt-pattern)
1274 (tramp-password-prompt-regexp, tramp-wrong-passwd-regexp)
1275 (tramp-yesno-prompt-regexp, tramp-yn-prompt-regexp)
1276 (tramp-terminal-prompt-regexp)
1277 (tramp-operation-not-permitted-regexp, tramp-copy-failed-regexp)
1278 (tramp-process-alive-regexp, tramp-chunksize)
1279 (tramp-process-connection-type, tramp-connection-timeout)
1280 (tramp-connection-min-time-diff)
1281 (tramp-completion-reread-directory-timeout):
1282 * lisp/net/tramp-adb.el (tramp-adb-program)
1283 (tramp-adb-connect-if-not-connected, tramp-adb-prompt):
1284 * lisp/net/tramp-cache.el (tramp-connection-properties)
1285 (tramp-persistency-file-name):
1286 * lisp/net/tramp-gvfs.el (tramp-gvfs-methods)
1287 (tramp-gvfs-zeroconf-domain, tramp-bluez-discover-devices-timeout):
1288 * lisp/net/tramp-sh.el (tramp-inline-compress-start-size)
1289 (tramp-copy-size-limit, tramp-terminal-type)
1290 (tramp-histfile-override, tramp-use-ssh-controlmaster-options)
1291 (tramp-remote-path, tramp-remote-process-environment)
1292 (tramp-sh-extra-args):
1293 * lisp/net/tramp-smb.el (tramp-smb-program, tramp-smb-acl-program)
1294 (tramp-smb-conf, tramp-smb-winexe-program)
1295 (tramp-smb-winexe-shell-command)
1296 (tramp-smb-winexe-shell-command-switch):
1297 Dont't require 'tramp. (Bug#31558)
1298
1299 * lisp/net/tramp.el (tramp-accept-process-output):
1300 * lisp/net/tramp-adb.el (tramp-adb-handle-start-file-process):
1301 * lisp/net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band)
1302 (tramp-sh-handle-start-file-process):
1303 * lisp/net/tramp-smb.el (tramp-smb-handle-copy-directory)
1304 (tramp-smb-handle-file-acl, tramp-smb-handle-process-file)
1305 (tramp-smb-handle-set-file-acl)
1306 (tramp-smb-handle-start-file-process): Suppress timers.
1307
1308 * lisp/net/tramp-adb.el (tramp-adb-handle-write-region):
1309 * lisp/net/tramp-gvfs.el (tramp-gvfs-handle-write-region):
1310 * lisp/net/tramp-sh.el (tramp-sh-handle-write-region):
1311 * lisp/net/tramp-smb.el (tramp-smb-handle-write-region):
1312 Write proper message.
1313
1314 * lisp/net/tramp-cmds.el (tramp-change-syntax):
1315 Use `customize-set-variable'.
1316
1317 * lisp/net/tramp-sh.el (tramp-open-connection-setup-interactive-shell):
1318 Ensure proper EOL handling for Darwin.
1319 (tramp-find-inline-compress): Improve command quoting for w32.
1320 Reported by Chris Zheng <chriszheng99@gmail.com>.
1321 (tramp-open-connection-setup-interactive-shell): Wrap both echo
1322 calls in parentheses, in order to avoid double prompt.
1323
1324 * lisp/net/tramp-smb.el (tramp-smb-errors):
1325 Add "NT_STATUS_RESOURCE_NAME_NOT_FOUND".
1326
1327 * lisp/net/tramp.el (tramp-default-user-alist)
1328 (tramp-default-host-alist): Fix docstring.
1329 (tramp-dissect-file-name): Adapt docstring. (Bug#30904)
1330 (tramp-make-tramp-file-name): Check, that method is
1331 not empty. (Bug#30038)
1332 (tramp-message-show-message): Change default.
1333
1334 * lisp/net/trampver.el: Change version to "2.3.4-pre".
1335
1336 * test/lisp/net/tramp-tests.el (ert-x): Require it.
1337 (tramp-test10-write-region): Extend test.
1338 (tramp--test-emacs27-p, tramp--test-windows-nt): New defuns.
1339 (tramp-test11-copy-file, tramp-test12-rename-file)
1340 (tramp-test21-file-links, tramp-test24-file-acl)
1341 (tramp-test25-file-selinux, tramp--test-check-files): Use them.
1342 (tramp-test21-file-links): Do not call `make-symbolic-link' on w32.
1343 Fix file name quoting test.
1344 (tramp-test32-environment-variables-and-port-numbers):
1345 Adapt check for systems which do not support "echo -n". (Bug#29712)
1346 (tramp-test36-find-backup-file-name): Call also
1347 `convert-standard-filename' due to w32.
1348 (tramp-test41-asynchronous-requests):
1349 Use $REMOTE_PARALLEL_PROCESSES. Flush cache prior file operations.
1350 (tramp-test42-auto-load, tramp-test42-delay-load)
1351 (tramp-test42-recursive-load, tramp-test42-remote-load-path):
1352 Quote command due to w32.
1353
13542018-05-28 Eli Zaretskii <eliz@gnu.org>
1355
1356 Bump Emacs version to 26.1.50
1357
1358 * msdos/sed2v2.inp:
1359 * nt/README.W32:
1360 * configure.ac:
1361 * README: Bump Emacs version to 26.1.50.
1362
13632018-05-27 Thien-Thi Nguyen <ttn@gnu.org>
1364
1365 Mention pcase as a fifth conditional form
1366
1367 * doc/lispref/control.texi (Conditionals): ...here,
1368 in first para, w/ xref to "Pattern-Matching Conditional".
1369
13702018-05-27 Thien-Thi Nguyen <ttn@gnu.org>
1371
1372 Overhaul pcase documentation
1373
1374 Suggested by Drew Adams (Bug#31311).
1375
1376 * doc/lispref/control.texi (Control Structures):
1377 Add "Pattern-Matching Conditional" to menu, before "Iteration".
1378 (Conditionals): Delete menu.
1379 (Pattern matching case statement): Delete node/subsection,
1380 by actually moving, renaming, and overhauling it to...
1381 (Pattern-Matching Conditional): ...new node/section.
1382 (pcase Macro): New node/subsection.
1383 (Extending pcase): Likewise.
1384 (Backquote Patterns): Likewise.
1385 * doc/lispref/elisp.texi (Top) In @detailmenu, add
1386 "Pattern-Matching Conditional" under "Control Structures"
1387 section and delete "Conditionals" section.
1388 * lisp/emacs-lisp/pcase.el (pcase): Rewrite docstring.
1389 (pcase-defmacro \` (qpat) ...): Likewise.
1390
13912018-05-27 Thien-Thi Nguyen <ttn@gnu.org>
1392
1393 Use EXPVAL in docstrings of patterns defined using pcase-defmacro
1394
1395 Suggested by Drew Adams (Bug#31311).
1396
1397 * lisp/emacs-lisp/cl-macs.el (cl-struct): ...here.
1398 * lisp/emacs-lisp/eieio.el (eieio): Likewise.
1399 * lisp/emacs-lisp/radix-tree.el (radix-tree-leaf): Likewise.
1400 * lisp/emacs-lisp/rx.el (rx): Likewise.
1401
14022018-05-27 Thien-Thi Nguyen <ttn@gnu.org>
1403
1404 Introduce EXPVAL for pcase, pcase-defmacro docstrings
1405
1406 Suggested by Drew Adams (Bug#31311).
1407
1408 * lisp/emacs-lisp/pcase.el (pcase): Use EXPVAL in
1409 docstring to stand for the result of evaluating EXP.
1410 (pcase-defmacro): Add (fn ...) form in docstring
1411 that includes [DOC], and the EXPVAL convention.
1412
14132018-05-27 Thien-Thi Nguyen <ttn@gnu.org>
1414
1415 Ensure pcase doc shows `QPAT first among extensions
1416
1417 * lisp/emacs-lisp/pcase.el (pcase--make-docstring):
1418 Split extensions display into two phases, collection
1419 and display, separated by a reordering step that
1420 ensures backquote is the first.
1421
14222018-05-25 Nicolas Petton <nicolas@petton.fr>
1423
1424 * etc/HISTORY: Update for Emacs 26.1 release.
1425
1426 * etc/AUTHORS: Update.
1427
12018-05-25 Noam Postavsky <npostavs@gmail.com> 14282018-05-25 Noam Postavsky <npostavs@gmail.com>
2 1429
3 Note caveat for backward regexp searching in docstring (Bug#31584) 1430 Note caveat for backward regexp searching in docstring (Bug#31584)
@@ -59730,7 +61157,7 @@
59730 61157
59731This file records repository revisions from 61158This file records repository revisions from
59732commit 9d56a21e6a696ad19ac65c4b405aeca44785884a (exclusive) to 61159commit 9d56a21e6a696ad19ac65c4b405aeca44785884a (exclusive) to
59733commit 35574609dd09e2eab0301309b0e3bf831f627fcc (inclusive). 61160commit f205928d1f93f4373d755ca91805a88e022ac414 (inclusive).
59734See ChangeLog.1 for earlier changes. 61161See ChangeLog.1 for earlier changes.
59735 61162
59736;; Local Variables: 61163;; Local Variables:
diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi
index a8e9fb13ce7..0b0c0a167d9 100644
--- a/doc/lispintro/emacs-lisp-intro.texi
+++ b/doc/lispintro/emacs-lisp-intro.texi
@@ -2729,8 +2729,8 @@ In the old days, when you lacked a @file{~/.emacs} file and started an
2729Emacs session by typing the command @code{emacs} alone, without naming 2729Emacs session by typing the command @code{emacs} alone, without naming
2730any files, Emacs started with the @file{*scratch*} buffer visible. 2730any files, Emacs started with the @file{*scratch*} buffer visible.
2731Nowadays, you will see a splash screen. You can follow one of the 2731Nowadays, you will see a splash screen. You can follow one of the
2732commands suggested on the splash screen, visit a file, or press the 2732commands suggested on the splash screen, visit a file, or press @kbd{q}
2733spacebar to reach the @file{*scratch*} buffer. 2733to quit the splash screen and reach the @file{*scratch*} buffer.
2734 2734
2735If you switch to the @file{*scratch*} buffer, type 2735If you switch to the @file{*scratch*} buffer, type
2736@code{(buffer-name)}, position the cursor after it, and then type 2736@code{(buffer-name)}, position the cursor after it, and then type
diff --git a/etc/HISTORY b/etc/HISTORY
index ba86182a1c3..b239904253b 100644
--- a/etc/HISTORY
+++ b/etc/HISTORY
@@ -12,10 +12,11 @@ development is sketchy, the following text summarizes what is known.
12EMACS started out as a set of macros atop the TECO text editor, and 12EMACS started out as a set of macros atop the TECO text editor, and
13was first operational in late 1976. It was inspired by earlier work 13was first operational in late 1976. It was inspired by earlier work
14such as the E editor of Stanford, and was based on older TECO macro 14such as the E editor of Stanford, and was based on older TECO macro
15sets. EMACS in turn inspired several similar editors. See: 15sets. See: Stallman RM. EMACS: The Extensible, Customizable
16Stallman RM. EMACS: The Extensible, Customizable Self-Documenting 16Self-Documenting Display Editor. AI Memo 519a, MIT, 1981-03-26
17Display Editor. AI Memo 519a, MIT, 1981-03-26
18<http://dspace.mit.edu/bitstream/handle/1721.1/5736/AIM-519A.pdf>. 17<http://dspace.mit.edu/bitstream/handle/1721.1/5736/AIM-519A.pdf>.
18EMACS in turn inspired several similar editors. For a summary of
19this history, see <https://github.com/larsbrinkhoff/emacs-history>.
19 20
20In 1984, work began on GNU Emacs, a fresh implementation designed to 21In 1984, work began on GNU Emacs, a fresh implementation designed to
21run on GNU and GNU-like systems, with a full-featured Lisp at its 22run on GNU and GNU-like systems, with a full-featured Lisp at its
diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el
index e8a3015b8fb..0efaa637129 100644
--- a/lisp/emacs-lisp/debug.el
+++ b/lisp/emacs-lisp/debug.el
@@ -349,6 +349,7 @@ That buffer should be current already."
349 (backtrace-frames 'debug))) 349 (backtrace-frames 'debug)))
350 (print-escape-newlines t) 350 (print-escape-newlines t)
351 (print-escape-control-characters t) 351 (print-escape-control-characters t)
352 ;; If you increase print-level, add more depth in call_debugger.
352 (print-level 8) 353 (print-level 8)
353 (print-length 50) 354 (print-length 50)
354 (pos (point))) 355 (pos (point)))
diff --git a/lisp/files.el b/lisp/files.el
index 31e2f39a8d1..eabb3c0e06c 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -148,12 +148,16 @@ This variable is relevant only if `backup-by-copying' and
148Called with an absolute file name as argument, it returns t to enable backup.") 148Called with an absolute file name as argument, it returns t to enable backup.")
149 149
150(defcustom buffer-offer-save nil 150(defcustom buffer-offer-save nil
151 "Non-nil in a buffer means always offer to save buffer on exit. 151 "Non-nil in a buffer means always offer to save buffer on exiting Emacs.
152Do so even if the buffer is not visiting a file. 152Do so even if the buffer is not visiting a file.
153Automatically local in all buffers. 153Automatically local in all buffers.
154 154
155Set to the symbol `always' to offer to save buffer whenever 155Set to the symbol `always' to offer to save buffer whenever
156`save-some-buffers' is called." 156`save-some-buffers' is called.
157
158Note that this option has no effect on `kill-buffer';
159if you want to control what happens when a buffer is killed,
160use `kill-buffer-query-functions'."
157 :type '(choice (const :tag "Never" nil) 161 :type '(choice (const :tag "Never" nil)
158 (const :tag "On Emacs exit" t) 162 (const :tag "On Emacs exit" t)
159 (const :tag "Whenever save-some-buffers is called" always)) 163 (const :tag "Whenever save-some-buffers is called" always))
diff --git a/lisp/imenu.el b/lisp/imenu.el
index b4d7d903595..94ee6bc83a7 100644
--- a/lisp/imenu.el
+++ b/lisp/imenu.el
@@ -179,7 +179,9 @@ with name concatenation."
179 179
180(defcustom imenu-generic-skip-comments-and-strings t 180(defcustom imenu-generic-skip-comments-and-strings t
181 "When non-nil, ignore text inside comments and strings. 181 "When non-nil, ignore text inside comments and strings.
182Only affects `imenu--generic-function'." 182Only affects `imenu-default-create-index-function' (and any
183alternative implementation of `imenu-create-index-function' that
184uses `imenu--generic-function')."
183 :type 'boolean 185 :type 'boolean
184 :group 'imenu 186 :group 'imenu
185 :version "24.4") 187 :version "24.4")
@@ -730,7 +732,7 @@ for modes which use `imenu--generic-function'. If it is not set, but
730;; so it needs to be careful never to loop! 732;; so it needs to be careful never to loop!
731(defun imenu--generic-function (patterns) 733(defun imenu--generic-function (patterns)
732 "Return an index alist of the current buffer based on PATTERNS. 734 "Return an index alist of the current buffer based on PATTERNS.
733PATTERNS should be an alist with the same form as `imenu-generic-expression'. 735PATTERNS should be an alist of the same form as `imenu-generic-expression'.
734 736
735If `imenu-generic-skip-comments-and-strings' is non-nil, this ignores 737If `imenu-generic-skip-comments-and-strings' is non-nil, this ignores
736text inside comments and strings. 738text inside comments and strings.
diff --git a/lisp/skeleton.el b/lisp/skeleton.el
index 1d1af825a17..e7ac2ea32b2 100644
--- a/lisp/skeleton.el
+++ b/lisp/skeleton.el
@@ -268,7 +268,8 @@ available:
268 (or (eolp) (not skeleton-end-newline) (newline-and-indent)) 268 (or (eolp) (not skeleton-end-newline) (newline-and-indent))
269 (run-hooks 'skeleton-end-hook) 269 (run-hooks 'skeleton-end-hook)
270 (sit-for 0) 270 (sit-for 0)
271 (or (pos-visible-in-window-p beg) 271 (or (not (eq (window-buffer) (current-buffer)))
272 (pos-visible-in-window-p beg)
272 (progn 273 (progn
273 (goto-char beg) 274 (goto-char beg)
274 (recenter 0))) 275 (recenter 0)))
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index 88052d7749b..75f458233ee 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -301,9 +301,6 @@ in the order given by 'git status'."
301 '("--ignored")) 301 '("--ignored"))
302 "--")) 302 "--"))
303 (status (apply #'vc-git--run-command-string file args))) 303 (status (apply #'vc-git--run-command-string file args)))
304 ;; Alternatively, the `ignored' state could be detected with 'git
305 ;; ls-files -i -o --exclude-standard', but that's an extra process
306 ;; call, and the `ignored' state is rarely needed.
307 (if (null status) 304 (if (null status)
308 ;; If status is nil, there was an error calling git, likely because 305 ;; If status is nil, there was an error calling git, likely because
309 ;; the file is not in a git repo. 306 ;; the file is not in a git repo.
@@ -568,6 +565,7 @@ or an empty string if none."
568(declare-function vc-set-async-update "vc-dispatcher" (process-buffer)) 565(declare-function vc-set-async-update "vc-dispatcher" (process-buffer))
569 566
570(defun vc-git-dir-status-goto-stage (git-state) 567(defun vc-git-dir-status-goto-stage (git-state)
568 ;; TODO: Look into reimplementing this using `git status --porcelain=v2'.
571 (let ((files (vc-git-dir-status-state->files git-state))) 569 (let ((files (vc-git-dir-status-state->files git-state)))
572 (erase-buffer) 570 (erase-buffer)
573 (pcase (vc-git-dir-status-state->stage git-state) 571 (pcase (vc-git-dir-status-state->stage git-state)
@@ -584,7 +582,7 @@ or an empty string if none."
584 "ls-files" "-z" "-c" "-s" "--")) 582 "ls-files" "-z" "-c" "-s" "--"))
585 (`ls-files-conflict 583 (`ls-files-conflict
586 (vc-git-command (current-buffer) 'async files 584 (vc-git-command (current-buffer) 'async files
587 "ls-files" "-z" "-c" "-s" "--")) 585 "ls-files" "-z" "-u" "--"))
588 (`ls-files-unknown 586 (`ls-files-unknown
589 (vc-git-command (current-buffer) 'async files 587 (vc-git-command (current-buffer) 'async files
590 "ls-files" "-z" "-o" "--directory" 588 "ls-files" "-z" "-o" "--directory"
@@ -947,9 +945,6 @@ This prompts for a branch to merge from."
947 (vc-git--run-command-string directory "status" "--porcelain" "--")) 945 (vc-git--run-command-string directory "status" "--porcelain" "--"))
948 (lines (when status (split-string status "\n" 'omit-nulls))) 946 (lines (when status (split-string status "\n" 'omit-nulls)))
949 files) 947 files)
950 ;; TODO: Look into reimplementing `vc-git-state', as well as
951 ;; `vc-git-dir-status-files', based on this output, thus making the
952 ;; extra process call in `vc-git-find-file-hook' unnecessary.
953 (dolist (line lines files) 948 (dolist (line lines files)
954 (when (string-match "\\([ MADRCU?!][ MADRCU?!]\\) \\(.+\\)\\(?: -> \\(.+\\)\\)?" 949 (when (string-match "\\([ MADRCU?!][ MADRCU?!]\\) \\(.+\\)\\(?: -> \\(.+\\)\\)?"
955 line) 950 line)
@@ -984,15 +979,10 @@ This prompts for a branch to merge from."
984(defun vc-git-find-file-hook () 979(defun vc-git-find-file-hook ()
985 "Activate `smerge-mode' if there is a conflict." 980 "Activate `smerge-mode' if there is a conflict."
986 (when (and buffer-file-name 981 (when (and buffer-file-name
987 ;; FIXME 982 (eq (vc-state buffer-file-name 'Git) 'conflict)
988 ;; 1) the net result is to call git twice per file.
989 ;; 2) v-g-c-f is documented to take a directory.
990 ;; https://lists.gnu.org/r/emacs-devel/2014-01/msg01126.html
991 (vc-git-conflicted-files buffer-file-name)
992 (save-excursion 983 (save-excursion
993 (goto-char (point-min)) 984 (goto-char (point-min))
994 (re-search-forward "^<<<<<<< " nil 'noerror))) 985 (re-search-forward "^<<<<<<< " nil 'noerror)))
995 (vc-file-setprop buffer-file-name 'vc-state 'conflict)
996 (smerge-start-session) 986 (smerge-start-session)
997 (when vc-git-resolve-conflicts 987 (when vc-git-resolve-conflicts
998 (add-hook 'after-save-hook 'vc-git-resolve-when-done nil 'local)) 988 (add-hook 'after-save-hook 'vc-git-resolve-when-done nil 'local))
diff --git a/src/coding.h b/src/coding.h
index 165c1b29b71..d2cf4d8a7ba 100644
--- a/src/coding.h
+++ b/src/coding.h
@@ -28,6 +28,8 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
28 28
29#include "lisp.h" 29#include "lisp.h"
30 30
31INLINE_HEADER_BEGIN
32
31/* Index to arguments of Fdefine_coding_system_internal. */ 33/* Index to arguments of Fdefine_coding_system_internal. */
32 34
33enum define_coding_system_arg_index 35enum define_coding_system_arg_index
@@ -771,4 +773,6 @@ extern struct coding_system safe_terminal_coding;
771 773
772extern char emacs_mule_bytes[256]; 774extern char emacs_mule_bytes[256];
773 775
776INLINE_HEADER_END
777
774#endif /* EMACS_CODING_H */ 778#endif /* EMACS_CODING_H */
diff --git a/src/editfns.c b/src/editfns.c
index efe83e811ba..e16a554de20 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -3127,6 +3127,9 @@ determines whether case is significant or ignored. */)
3127#undef ELEMENT 3127#undef ELEMENT
3128#undef EQUAL 3128#undef EQUAL
3129 3129
3130/* Counter used to rarely_quit in replace-buffer-contents. */
3131static unsigned short rbc_quitcounter;
3132
3130#define XVECREF_YVECREF_EQUAL(ctx, xoff, yoff) \ 3133#define XVECREF_YVECREF_EQUAL(ctx, xoff, yoff) \
3131 buffer_chars_equal ((ctx), (xoff), (yoff)) 3134 buffer_chars_equal ((ctx), (xoff), (yoff))
3132 3135
@@ -3136,6 +3139,9 @@ determines whether case is significant or ignored. */)
3136 /* Buffers to compare. */ \ 3139 /* Buffers to compare. */ \
3137 struct buffer *buffer_a; \ 3140 struct buffer *buffer_a; \
3138 struct buffer *buffer_b; \ 3141 struct buffer *buffer_b; \
3142 /* Whether each buffer is unibyte/plain-ASCII or not. */ \
3143 bool a_unibyte; \
3144 bool b_unibyte; \
3139 /* Bit vectors recording for each character whether it was deleted 3145 /* Bit vectors recording for each character whether it was deleted
3140 or inserted. */ \ 3146 or inserted. */ \
3141 unsigned char *deletions; \ 3147 unsigned char *deletions; \
@@ -3216,6 +3222,8 @@ differences between the two buffers. */)
3216 struct context ctx = { 3222 struct context ctx = {
3217 .buffer_a = a, 3223 .buffer_a = a,
3218 .buffer_b = b, 3224 .buffer_b = b,
3225 .a_unibyte = BUF_ZV (a) == BUF_ZV_BYTE (a),
3226 .b_unibyte = BUF_ZV (b) == BUF_ZV_BYTE (b),
3219 .deletions = SAFE_ALLOCA (del_bytes), 3227 .deletions = SAFE_ALLOCA (del_bytes),
3220 .insertions = SAFE_ALLOCA (ins_bytes), 3228 .insertions = SAFE_ALLOCA (ins_bytes),
3221 .fdiag = buffer + size_b + 1, 3229 .fdiag = buffer + size_b + 1,
@@ -3232,9 +3240,36 @@ differences between the two buffers. */)
3232 early. */ 3240 early. */
3233 eassert (! early_abort); 3241 eassert (! early_abort);
3234 3242
3243 rbc_quitcounter = 0;
3244
3235 Fundo_boundary (); 3245 Fundo_boundary ();
3246 bool modification_hooks_inhibited = false;
3236 record_unwind_protect_excursion (); 3247 record_unwind_protect_excursion ();
3237 3248
3249 /* We are going to make a lot of small modifications, and having the
3250 modification hooks called for each of them will slow us down.
3251 Instead, we announce a single modification for the entire
3252 modified region. But don't do that if the caller inhibited
3253 modification hooks, because then they don't want that. */
3254 ptrdiff_t from, to;
3255 if (!inhibit_modification_hooks)
3256 {
3257 ptrdiff_t k, l;
3258
3259 /* Find the first character position to be changed. */
3260 for (k = 0; k < size_a && !bit_is_set (ctx.deletions, k); k++)
3261 ;
3262 from = BEGV + k;
3263
3264 /* Find the last character position to be changed. */
3265 for (l = size_a; l > 0 && !bit_is_set (ctx.deletions, l - 1); l--)
3266 ;
3267 to = BEGV + l;
3268 prepare_to_modify_buffer (from, to, NULL);
3269 specbind (Qinhibit_modification_hooks, Qt);
3270 modification_hooks_inhibited = true;
3271 }
3272
3238 ptrdiff_t i = size_a; 3273 ptrdiff_t i = size_a;
3239 ptrdiff_t j = size_b; 3274 ptrdiff_t j = size_b;
3240 /* Walk backwards through the lists of changes. This was also 3275 /* Walk backwards through the lists of changes. This was also
@@ -3243,15 +3278,13 @@ differences between the two buffers. */)
3243 while (i >= 0 || j >= 0) 3278 while (i >= 0 || j >= 0)
3244 { 3279 {
3245 /* Allow the user to quit if this gets too slow. */ 3280 /* Allow the user to quit if this gets too slow. */
3246 maybe_quit (); 3281 rarely_quit (++rbc_quitcounter);
3247 3282
3248 /* Check whether there is a change (insertion or deletion) 3283 /* Check whether there is a change (insertion or deletion)
3249 before the current position. */ 3284 before the current position. */
3250 if ((i > 0 && bit_is_set (ctx.deletions, i - 1)) || 3285 if ((i > 0 && bit_is_set (ctx.deletions, i - 1)) ||
3251 (j > 0 && bit_is_set (ctx.insertions, j - 1))) 3286 (j > 0 && bit_is_set (ctx.insertions, j - 1)))
3252 { 3287 {
3253 maybe_quit ();
3254
3255 ptrdiff_t end_a = min_a + i; 3288 ptrdiff_t end_a = min_a + i;
3256 ptrdiff_t end_b = min_b + j; 3289 ptrdiff_t end_b = min_b + j;
3257 /* Find the beginning of the current change run. */ 3290 /* Find the beginning of the current change run. */
@@ -3259,14 +3292,13 @@ differences between the two buffers. */)
3259 --i; 3292 --i;
3260 while (j > 0 && bit_is_set (ctx.insertions, j - 1)) 3293 while (j > 0 && bit_is_set (ctx.insertions, j - 1))
3261 --j; 3294 --j;
3295
3296 rarely_quit (rbc_quitcounter++);
3297
3262 ptrdiff_t beg_a = min_a + i; 3298 ptrdiff_t beg_a = min_a + i;
3263 ptrdiff_t beg_b = min_b + j; 3299 ptrdiff_t beg_b = min_b + j;
3264 eassert (beg_a >= BEGV);
3265 eassert (beg_b >= BUF_BEGV (b));
3266 eassert (beg_a <= end_a); 3300 eassert (beg_a <= end_a);
3267 eassert (beg_b <= end_b); 3301 eassert (beg_b <= end_b);
3268 eassert (end_a <= ZV);
3269 eassert (end_b <= BUF_ZV (b));
3270 eassert (beg_a < end_a || beg_b < end_b); 3302 eassert (beg_a < end_a || beg_b < end_b);
3271 if (beg_a < end_a) 3303 if (beg_a < end_a)
3272 del_range (beg_a, end_a); 3304 del_range (beg_a, end_a);
@@ -3280,8 +3312,17 @@ differences between the two buffers. */)
3280 --i; 3312 --i;
3281 --j; 3313 --j;
3282 } 3314 }
3315 SAFE_FREE_UNBIND_TO (count, Qnil);
3316 rbc_quitcounter = 0;
3283 3317
3284 return SAFE_FREE_UNBIND_TO (count, Qnil); 3318 if (modification_hooks_inhibited)
3319 {
3320 ptrdiff_t updated_to = to + ZV - BEGV - size_a;
3321 signal_after_change (from, to - from, updated_to - from);
3322 update_compositions (from, updated_to, CHECK_INSIDE);
3323 }
3324
3325 return Qnil;
3285} 3326}
3286 3327
3287static void 3328static void
@@ -3307,39 +3348,45 @@ bit_is_set (const unsigned char *a, ptrdiff_t i)
3307/* Return true if the characters at position POS_A of buffer 3348/* Return true if the characters at position POS_A of buffer
3308 CTX->buffer_a and at position POS_B of buffer CTX->buffer_b are 3349 CTX->buffer_a and at position POS_B of buffer CTX->buffer_b are
3309 equal. POS_A and POS_B are zero-based. Text properties are 3350 equal. POS_A and POS_B are zero-based. Text properties are
3310 ignored. */ 3351 ignored.
3352
3353 Implementation note: this function is called inside the inner-most
3354 loops of compareseq, so it absolutely must be optimized for speed,
3355 every last bit of it. E.g., each additional use of BEGV or such
3356 likes will slow down replace-buffer-contents by dozens of percents,
3357 because builtin_lisp_symbol will be called one more time in the
3358 innermost loop. */
3311 3359
3312static bool 3360static bool
3313buffer_chars_equal (struct context *ctx, 3361buffer_chars_equal (struct context *ctx,
3314 ptrdiff_t pos_a, ptrdiff_t pos_b) 3362 ptrdiff_t pos_a, ptrdiff_t pos_b)
3315{ 3363{
3316 eassert (pos_a >= 0);
3317 pos_a += BUF_BEGV (ctx->buffer_a); 3364 pos_a += BUF_BEGV (ctx->buffer_a);
3318 eassert (pos_a >= BUF_BEGV (ctx->buffer_a));
3319 eassert (pos_a < BUF_ZV (ctx->buffer_a));
3320
3321 eassert (pos_b >= 0);
3322 pos_b += BUF_BEGV (ctx->buffer_b); 3365 pos_b += BUF_BEGV (ctx->buffer_b);
3323 eassert (pos_b >= BUF_BEGV (ctx->buffer_b));
3324 eassert (pos_b < BUF_ZV (ctx->buffer_b));
3325
3326 bool a_unibyte = BUF_ZV (ctx->buffer_a) == BUF_ZV_BYTE (ctx->buffer_a);
3327 bool b_unibyte = BUF_ZV (ctx->buffer_b) == BUF_ZV_BYTE (ctx->buffer_b);
3328 3366
3329 /* Allow the user to escape out of a slow compareseq call. */ 3367 /* Allow the user to escape out of a slow compareseq call. */
3330 maybe_quit (); 3368 rarely_quit (++rbc_quitcounter);
3331 3369
3332 ptrdiff_t bpos_a = 3370 ptrdiff_t bpos_a =
3333 a_unibyte ? pos_a : buf_charpos_to_bytepos (ctx->buffer_a, pos_a); 3371 ctx->a_unibyte ? pos_a : buf_charpos_to_bytepos (ctx->buffer_a, pos_a);
3334 ptrdiff_t bpos_b = 3372 ptrdiff_t bpos_b =
3335 b_unibyte ? pos_b : buf_charpos_to_bytepos (ctx->buffer_b, pos_b); 3373 ctx->b_unibyte ? pos_b : buf_charpos_to_bytepos (ctx->buffer_b, pos_b);
3336 3374
3337 if (a_unibyte && b_unibyte) 3375 /* We make the below a series of specific test to avoid using
3376 BUF_FETCH_CHAR_AS_MULTIBYTE, which references Lisp symbols, and
3377 is therefore significantly slower (see the note in the commentary
3378 to this function). */
3379 if (ctx->a_unibyte && ctx->b_unibyte)
3338 return BUF_FETCH_BYTE (ctx->buffer_a, bpos_a) 3380 return BUF_FETCH_BYTE (ctx->buffer_a, bpos_a)
3339 == BUF_FETCH_BYTE (ctx->buffer_b, bpos_b); 3381 == BUF_FETCH_BYTE (ctx->buffer_b, bpos_b);
3340 3382 if (ctx->a_unibyte && !ctx->b_unibyte)
3341 return BUF_FETCH_CHAR_AS_MULTIBYTE (ctx->buffer_a, bpos_a) 3383 return UNIBYTE_TO_CHAR (BUF_FETCH_BYTE (ctx->buffer_a, bpos_a))
3342 == BUF_FETCH_CHAR_AS_MULTIBYTE (ctx->buffer_b, bpos_b); 3384 == BUF_FETCH_MULTIBYTE_CHAR (ctx->buffer_b, bpos_b);
3385 if (!ctx->a_unibyte && ctx->b_unibyte)
3386 return BUF_FETCH_MULTIBYTE_CHAR (ctx->buffer_a, bpos_a)
3387 == UNIBYTE_TO_CHAR (BUF_FETCH_BYTE (ctx->buffer_b, bpos_b));
3388 return BUF_FETCH_MULTIBYTE_CHAR (ctx->buffer_a, bpos_a)
3389 == BUF_FETCH_MULTIBYTE_CHAR (ctx->buffer_b, bpos_b);
3343} 3390}
3344 3391
3345 3392
diff --git a/src/eval.c b/src/eval.c
index c16a267bc5e..256ca8ffdc8 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -282,8 +282,12 @@ call_debugger (Lisp_Object arg)
282 /* Do not allow max_specpdl_size less than actual depth (Bug#16603). */ 282 /* Do not allow max_specpdl_size less than actual depth (Bug#16603). */
283 EMACS_INT old_max = max (max_specpdl_size, count); 283 EMACS_INT old_max = max (max_specpdl_size, count);
284 284
285 if (lisp_eval_depth + 40 > max_lisp_eval_depth) 285 /* The previous value of 40 is too small now that the debugger
286 max_lisp_eval_depth = lisp_eval_depth + 40; 286 prints using cl-prin1 instead of prin1. Printing lists nested 8
287 deep (which is the value of print-level used in the debugger)
288 currently requires 77 additional frames. See bug#31919. */
289 if (lisp_eval_depth + 100 > max_lisp_eval_depth)
290 max_lisp_eval_depth = lisp_eval_depth + 100;
287 291
288 /* While debugging Bug#16603, previous value of 100 was found 292 /* While debugging Bug#16603, previous value of 100 was found
289 too small to avoid specpdl overflow in the debugger itself. */ 293 too small to avoid specpdl overflow in the debugger itself. */
diff --git a/src/lisp.h b/src/lisp.h
index 6203a746a30..731a45da11a 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -3012,15 +3012,13 @@ extern void defvar_kboard (struct Lisp_Kboard_Objfwd *, const char *, int);
3012 } while (false) 3012 } while (false)
3013 3013
3014 3014
3015/* Elisp uses several stacks: 3015/* Elisp uses multiple stacks:
3016 - the C stack. 3016 - The C stack.
3017 - the bytecode stack: used internally by the bytecode interpreter. 3017 - The specpdl stack keeps track of backtraces, unwind-protects and
3018 Allocated from the C stack. 3018 dynamic let-bindings. It is allocated from the 'specpdl' array,
3019 - The specpdl stack: keeps track of active unwind-protect and 3019 a manually managed stack.
3020 dynamic-let-bindings. Allocated from the `specpdl' array, a manually 3020 - The handler stack keeps track of active catch tags and condition-case
3021 managed stack. 3021 handlers. It is allocated in a manually managed stack implemented by a
3022 - The handler stack: keeps track of active catch tags and condition-case
3023 handlers. Allocated in a manually managed stack implemented by a
3024 doubly-linked list allocated via xmalloc and never freed. */ 3022 doubly-linked list allocated via xmalloc and never freed. */
3025 3023
3026/* Structure for recording Lisp call stack for backtrace purposes. */ 3024/* Structure for recording Lisp call stack for backtrace purposes. */
@@ -3113,7 +3111,7 @@ SPECPDL_INDEX (void)
3113 control structures. A struct handler contains all the information needed to 3111 control structures. A struct handler contains all the information needed to
3114 restore the state of the interpreter after a non-local jump. 3112 restore the state of the interpreter after a non-local jump.
3115 3113
3116 handler structures are chained together in a doubly linked list; the `next' 3114 Handler structures are chained together in a doubly linked list; the `next'
3117 member points to the next outer catchtag and the `nextfree' member points in 3115 member points to the next outer catchtag and the `nextfree' member points in
3118 the other direction to the next inner element (which is typically the next 3116 the other direction to the next inner element (which is typically the next
3119 free element since we mostly use it on the deepest handler). 3117 free element since we mostly use it on the deepest handler).
diff --git a/src/w32fns.c b/src/w32fns.c
index 3bd320928dd..7f7e1a404ce 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -2192,6 +2192,11 @@ x_set_no_accept_focus (struct frame *f, Lisp_Object new_value, Lisp_Object old_v
2192 * 2192 *
2193 * Some window managers may not honor this parameter. The value `below' 2193 * Some window managers may not honor this parameter. The value `below'
2194 * is not supported on Windows. 2194 * is not supported on Windows.
2195 *
2196 * Internally, this function also handles a value 'above-suspended'.
2197 * That value is used to temporarily remove F from the 'above' group
2198 * to make sure that it does not obscure the window of a dialog in
2199 * progress.
2195 */ 2200 */
2196static void 2201static void
2197x_set_z_group (struct frame *f, Lisp_Object new_value, Lisp_Object old_value) 2202x_set_z_group (struct frame *f, Lisp_Object new_value, Lisp_Object old_value)
@@ -7583,12 +7588,27 @@ file_dialog_callback (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
7583 return 0; 7588 return 0;
7584} 7589}
7585 7590
7591/**
7592 * w32_dialog_in_progress:
7593 *
7594 * This function is called by Fx_file_dialog and Fx_select_font and
7595 * serves to temporarily remove any Emacs frame currently in the
7596 * 'above' z-group from that group to assure that such a frame does
7597 * not hide the dialog window. Frames that are temporarily removed
7598 * from the 'above' group have their z_group bit-field set to
7599 * z_group_above_suspended. Any such frame is moved back to the
7600 * 'above' group as soon as the dialog finishes and has its z_group
7601 * bit-field reset to z_group_above.
7602 *
7603 * This function does not affect the z-order or the z-group state of
7604 * the dialog window itself.
7605 */
7586void 7606void
7587w32_dialog_in_progress (Lisp_Object in_progress) 7607w32_dialog_in_progress (Lisp_Object in_progress)
7588{ 7608{
7589 Lisp_Object frames, frame; 7609 Lisp_Object frames, frame;
7590 7610
7591 /* Don't let frames in `above' z-group obscure popups. */ 7611 /* Don't let frames in `above' z-group obscure dialog windows. */
7592 FOR_EACH_FRAME (frames, frame) 7612 FOR_EACH_FRAME (frames, frame)
7593 { 7613 {
7594 struct frame *f = XFRAME (frame); 7614 struct frame *f = XFRAME (frame);
diff --git a/src/xterm.c b/src/xterm.c
index 9504bfb1834..af28dab860a 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -10566,6 +10566,10 @@ x_set_skip_taskbar (struct frame *f, Lisp_Object new_value, Lisp_Object old_valu
10566 * windows that do not have the `below' property set. 10566 * windows that do not have the `below' property set.
10567 * 10567 *
10568 * Some window managers may not honor this parameter. 10568 * Some window managers may not honor this parameter.
10569 *
10570 * Internally, this function also handles a value 'above-suspended'.
10571 * That value is used to temporarily remove F from the 'above' group
10572 * to make sure that it does not obscure a menu currently popped up.
10569 */ 10573 */
10570void 10574void
10571x_set_z_group (struct frame *f, Lisp_Object new_value, Lisp_Object old_value) 10575x_set_z_group (struct frame *f, Lisp_Object new_value, Lisp_Object old_value)