aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Albinus2020-10-23 16:26:47 +0200
committerMichael Albinus2020-10-23 16:26:47 +0200
commitc847d5998f588dbf3eca5ea1ec573a2d64a97607 (patch)
tree385256d979f91ea233f084f8ebe21cb963ac84ff
parent8101083c7ab885281cbe1ede717957c8080f7111 (diff)
parent8b87ea6844036c168c9ec67dd318ee3ba8dab5ae (diff)
downloademacs-c847d5998f588dbf3eca5ea1ec573a2d64a97607.tar.gz
emacs-c847d5998f588dbf3eca5ea1ec573a2d64a97607.zip
Merge branch 'emacs-27' of git.sv.gnu.org:/srv/git/emacs into emacs-27
-rw-r--r--admin/release-process11
-rw-r--r--doc/lispref/commands.texi48
-rw-r--r--doc/lispref/sequences.texi9
-rw-r--r--doc/lispref/tips.texi17
-rw-r--r--doc/misc/info.texi42
-rw-r--r--lisp/Makefile.in6
-rw-r--r--lisp/emacs-lisp/seq.el8
-rw-r--r--lisp/info.el9
-rw-r--r--lisp/minibuffer.el83
-rw-r--r--src/keyboard.c7
-rw-r--r--src/xdisp.c7
11 files changed, 169 insertions, 78 deletions
diff --git a/admin/release-process b/admin/release-process
index c3728b582f1..a1f42f05075 100644
--- a/admin/release-process
+++ b/admin/release-process
@@ -195,6 +195,17 @@ pt-br Rodrigo Real
195ru Alex Ott 195ru Alex Ott
196sk Miroslav Vaško 196sk Miroslav Vaško
197 197
198** Update some files from their upstream.
199
200Some files in Emacs are copies of data files maintained elsewhere.
201Make sure that they are reasonably up-to-date.
202
203- etc/publicsuffix.txt
204https://publicsuffix.org/list/public_suffix_list.dat
205
206- leim/SKK-DIC/SKK-JISYO.L
207https://raw.githubusercontent.com/skk-dev/dict/master/SKK-JISYO.L
208
198* BUGS 209* BUGS
199 210
200** Check for modes which bind M-s that conflicts with a new global binding M-s 211** Check for modes which bind M-s that conflicts with a new global binding M-s
diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi
index 25f657404f3..aabaec256b4 100644
--- a/doc/lispref/commands.texi
+++ b/doc/lispref/commands.texi
@@ -1346,10 +1346,11 @@ button. @xref{Repeat Events}.
1346 1346
1347 To access the contents of a mouse position list in the 1347 To access the contents of a mouse position list in the
1348@var{position} slot of a click event, you should typically use the 1348@var{position} slot of a click event, you should typically use the
1349functions documented in @ref{Accessing Mouse}. The explicit format of 1349functions documented in @ref{Accessing Mouse}.
1350the list depends on where the click occurred. For clicks in the text 1350
1351area, mode line, header line, tab line, or in the fringe or marginal 1351The explicit format of the list depends on where the click occurred.
1352areas, the mouse position list has the form 1352For clicks in the text area, mode line, header line, tab line, or in
1353the fringe or marginal areas, the mouse position list has the form
1353 1354
1354@example 1355@example
1355(@var{window} @var{pos-or-area} (@var{x} . @var{y}) @var{timestamp} 1356(@var{window} @var{pos-or-area} (@var{x} . @var{y}) @var{timestamp}
@@ -1479,6 +1480,45 @@ handle), @code{up} (the up arrow at one end of the scroll bar), or
1479@c The 'top', 'bottom', and 'end-scroll' codes don't seem to be used. 1480@c The 'top', 'bottom', and 'end-scroll' codes don't seem to be used.
1480@end table 1481@end table
1481 1482
1483For clicks on the frame's internal border (@pxref{Frame Layout}),
1484@var{position} has this form:
1485
1486@example
1487 (@var{frame} @var{part} (@var{X} . @var{Y}) @var{timestamp})
1488@end example
1489
1490@table @asis
1491@item @var{frame}
1492The frame whose internal border was clicked on.
1493
1494@item @var{part}
1495The part of the internal border which was clicked on. This can be one
1496of the following:
1497
1498@table @code
1499@item nil
1500The frame does not have an internal border. This usually happens on
1501text-mode frames. This can also happen on GUI frames with internal
1502border if the frame doesn't have its @code{drag-internal-border}
1503parameter (@pxref{Mouse Dragging Parameters}) set to a non-@code{nil}
1504value.
1505
1506@item left-edge
1507@itemx top-edge
1508@itemx right-edge
1509@itemx bottom-edge
1510The click was on the corresponding border at an offset of at least one
1511canonical character from the border's nearest corner.
1512
1513@item top-left-corner
1514@itemx top-right-corner
1515@itemx bottom-right-corner
1516@itemx bottom-left-corner
1517The click was on the corresponding corner of the internal border.
1518@end table
1519
1520@end table
1521
1482 1522
1483@node Drag Events 1523@node Drag Events
1484@subsection Drag Events 1524@subsection Drag Events
diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi
index ca52369bd0c..952834bd4e3 100644
--- a/doc/lispref/sequences.texi
+++ b/doc/lispref/sequences.texi
@@ -658,8 +658,13 @@ for which @var{predicate} returns @code{nil}.
658@var{initial-value} and the first element of @var{sequence}, then calling 658@var{initial-value} and the first element of @var{sequence}, then calling
659@var{function} with that result and the second element of @var{sequence}, 659@var{function} with that result and the second element of @var{sequence},
660then with that result and the third element of @var{sequence}, etc. 660then with that result and the third element of @var{sequence}, etc.
661@var{function} should be a function of two arguments. If 661@var{function} should be a function of two arguments.
662@var{sequence} is empty, this returns @var{initial-value} without 662
663@var{function} is called with two arguments. @var{intial-value}
664(and then the accumulated value) is used as the first argument, and
665the elements in @var{sequence} are used for the second argument.
666
667If @var{sequence} is empty, this returns @var{initial-value} without
663calling @var{function}. 668calling @var{function}.
664 669
665@example 670@example
diff --git a/doc/lispref/tips.texi b/doc/lispref/tips.texi
index 5b09b2ccea6..4d6dcb9f834 100644
--- a/doc/lispref/tips.texi
+++ b/doc/lispref/tips.texi
@@ -95,6 +95,11 @@ If one prefix is insufficient, your package can use two or three
95alternative common prefixes, so long as they make sense. 95alternative common prefixes, so long as they make sense.
96 96
97@item 97@item
98We recommend enabling @code{lexical-binding} in new code, and
99converting existing Emacs Lisp code to enable @code{lexical-binding}
100if it doesn't already. @xref{Using Lexical Binding}.
101
102@item
98Put a call to @code{provide} at the end of each separate Lisp file. 103Put a call to @code{provide} at the end of each separate Lisp file.
99@xref{Named Features}. 104@xref{Named Features}.
100 105
@@ -963,7 +968,7 @@ explains these conventions, starting with an example:
963 968
964@smallexample 969@smallexample
965@group 970@group
966;;; foo.el --- Support for the Foo programming language 971;;; foo.el --- Support for the Foo programming language -*- lexical-binding: t; -*-
967 972
968;; Copyright (C) 2010-2020 Your Name 973;; Copyright (C) 2010-2020 Your Name
969@end group 974@end group
@@ -986,14 +991,14 @@ explains these conventions, starting with an example:
986 The very first line should have this format: 991 The very first line should have this format:
987 992
988@example 993@example
989;;; @var{filename} --- @var{description} 994;;; @var{filename} --- @var{description} -*- lexical-binding: t; -*-
990@end example 995@end example
991 996
992@noindent 997@noindent
993The description should be contained in one line. If the file 998The description should be contained in one line. If the file needs to
994needs a @samp{-*-} specification, put it after @var{description}. 999set more variables in the @samp{-*-} specification, add it after
995If this would make the first line too long, use a Local Variables 1000@code{lexical-binding}. If this would make the first line too long, use
996section at the end of the file. 1001a Local Variables section at the end of the file.
997 1002
998 The copyright notice usually lists your name (if you wrote the 1003 The copyright notice usually lists your name (if you wrote the
999file). If you have an employer who claims copyright on your work, you 1004file). If you have an employer who claims copyright on your work, you
diff --git a/doc/misc/info.texi b/doc/misc/info.texi
index f3ab305e350..85e04a99608 100644
--- a/doc/misc/info.texi
+++ b/doc/misc/info.texi
@@ -798,17 +798,17 @@ in cross references and node names if it differs from the current
798file, so you can always know that you are going to be switching to 798file, so you can always know that you are going to be switching to
799another manual and which one. 799another manual and which one.
800 800
801However, Emacs normally hides some other text in cross-references. 801Emacs normally hides some text in cross references. If you put your
802If you put your mouse over the cross reference, then the information 802mouse over the cross reference, then the information appearing in a
803appearing in a separate box (tool tip) or in the echo area will show 803separate box (tool tip) or in the echo area will show the full
804the full cross-reference including the file name and the node name of 804cross reference, including the file name and the node name of the
805the cross reference. If you have a mouse, just leave it over the 805cross reference if it leads to another file. If you have a mouse,
806cross reference @xref{Top,, Overview of Texinfo, texinfo, Texinfo: 806just leave it over the next cross reference: @xref{Top,, Overview of
807The GNU Documentation Format}, and watch what happens. If you 807Texinfo, texinfo, Texinfo: The GNU Documentation Format}, and watch
808always like to have that information visible without having to move 808what happens. If you always like to have that information visible
809your mouse over the cross reference, use @kbd{M-x visible-mode}, or 809without having to move your mouse over the cross reference, use
810set @code{Info-hide-note-references} to a value other than @code{t} 810@kbd{M-x visible-mode}, or set @code{Info-hide-note-references} to a
811(@pxref{Emacs Info Variables}). 811value other than @code{t} (@pxref{Emacs Info Variables}).
812 812
813@format 813@format
814>> Now type @kbd{n} to learn more commands. 814>> Now type @kbd{n} to learn more commands.
@@ -1227,12 +1227,20 @@ not scroll with the rest of the buffer, making these links always
1227visible. 1227visible.
1228 1228
1229@item Info-hide-note-references 1229@item Info-hide-note-references
1230As explained in earlier nodes, the Emacs version of Info normally 1230As explained in earlier sections, the Emacs version of Info normally
1231hides some text in menus and cross-references. You can completely 1231hides some text in menus and cross references. It also replaces the
1232disable this feature, by setting this option to @code{nil}. Setting 1232@samp{*note} prefix of each cross reference with a more grammatically
1233it to a value that is neither @code{nil} nor @code{t} produces an 1233correct @samp{see}. This is the effect of the default value of this
1234intermediate behavior, hiding a limited amount of text, but showing 1234option, @code{t}. Setting this option to @code{nil} disables both
1235all text that could potentially be useful. 1235hiding and replacing of the original cross reference text, and Emacs
1236will then display them as they are in the Info file. If you set it to
1237the value @code{hide}, Emacs will do the same as with @code{t}, but
1238will also remove @samp{*note} without replacing it with anything.
1239Setting it to any other non-@code{nil} value produces an intermediate
1240behavior, hiding a limited amount of text, but showing all text that
1241could potentially be useful, including the name of the node that is
1242the target of the cross reference and its file if it is different from
1243the current file.
1236 1244
1237@item Info-scroll-prefer-subnodes 1245@item Info-scroll-prefer-subnodes
1238If set to a non-@code{nil} value, @key{SPC} and @key{BACKSPACE} (or 1246If set to a non-@code{nil} value, @key{SPC} and @key{BACKSPACE} (or
diff --git a/lisp/Makefile.in b/lisp/Makefile.in
index 57527bb5afc..dac62cedec2 100644
--- a/lisp/Makefile.in
+++ b/lisp/Makefile.in
@@ -525,4 +525,10 @@ $(lisp)/progmodes/cc-mode.elc: $(lisp)/progmodes/cc-langs.elc \
525$(lisp)/progmodes/cc-styles.elc: $(lisp)/progmodes/cc-vars.elc \ 525$(lisp)/progmodes/cc-styles.elc: $(lisp)/progmodes/cc-vars.elc \
526 $(lisp)/progmodes/cc-align.elc 526 $(lisp)/progmodes/cc-align.elc
527 527
528# https://debbugs.gnu.org/43037
529# js.elc (like all modes using CC Mode's compile time macros) needs to
530# be compiled under the same version of CC Mode it will run with.
531$(lisp)/progmodes/js.elc: $(lisp)/progmodes/cc-defs.elc \
532 $(lisp)/progmodes/cc-engine.elc $(lisp)/progmodes/cc-mode.elc
533
528# Makefile ends here. 534# Makefile ends here.
diff --git a/lisp/emacs-lisp/seq.el b/lisp/emacs-lisp/seq.el
index e3037a71901..42b145da2fd 100644
--- a/lisp/emacs-lisp/seq.el
+++ b/lisp/emacs-lisp/seq.el
@@ -336,9 +336,11 @@ list."
336 "Reduce the function FUNCTION across SEQUENCE, starting with INITIAL-VALUE. 336 "Reduce the function FUNCTION across SEQUENCE, starting with INITIAL-VALUE.
337 337
338Return the result of calling FUNCTION with INITIAL-VALUE and the 338Return the result of calling FUNCTION with INITIAL-VALUE and the
339first element of SEQUENCE, then calling FUNCTION with that result and 339first element of SEQUENCE, then calling FUNCTION with that result
340the second element of SEQUENCE, then with that result and the third 340and the second element of SEQUENCE, then with that result and the
341element of SEQUENCE, etc. 341third element of SEQUENCE, etc. FUNCTION will be called with
342INITIAL-VALUE (and then the accumulated value) as the first
343argument, and the elements from SEQUENCE as the second argument.
342 344
343If SEQUENCE is empty, return INITIAL-VALUE and FUNCTION is not called." 345If SEQUENCE is empty, return INITIAL-VALUE and FUNCTION is not called."
344 (if (seq-empty-p sequence) 346 (if (seq-empty-p sequence)
diff --git a/lisp/info.el b/lisp/info.el
index 033a7a5cbb5..13c57bdcd13 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -305,10 +305,11 @@ when you hit the end of the current node."
305 305
306(defcustom Info-hide-note-references t 306(defcustom Info-hide-note-references t
307 "If non-nil, hide the tag and section reference in *note and * menu items. 307 "If non-nil, hide the tag and section reference in *note and * menu items.
308If value is non-nil but not `hide', also replaces the \"*note\" with \"see\". 308If the value is t, the default, replace \"*note\" with \"see\".
309If value is non-nil but not t or `hide', the reference section is still shown. 309If the value is `hide', remove \"*note\" without replacing it with anything.
310nil completely disables this feature. If this is non-nil, you might 310If value is non-nil, but not t or `hide', the reference section is still shown.
311want to set `Info-refill-paragraphs'." 311nil completely disables this feature, leaving the original \"*note\" visible.
312If this is non-nil, you may wish setting `Info-refill-paragraphs' non-nil."
312 :version "22.1" 313 :version "22.1"
313 :type '(choice (const :tag "No hiding" nil) 314 :type '(choice (const :tag "No hiding" nil)
314 (const :tag "Replace tag and hide reference" t) 315 (const :tag "Replace tag and hide reference" t)
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index 10cfca8d587..942fb019fe2 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -783,45 +783,50 @@ The text is displayed for `minibuffer-message-clear-timeout' seconds
783whichever comes first. 783whichever comes first.
784Unlike `minibuffer-message', this function is called automatically 784Unlike `minibuffer-message', this function is called automatically
785via `set-message-function'." 785via `set-message-function'."
786 (when (and (not noninteractive) 786 (let* ((minibuf-window (active-minibuffer-window))
787 (window-live-p (active-minibuffer-window)) 787 (minibuf-frame (and (window-live-p minibuf-window)
788 (eq (window-frame) (window-frame (active-minibuffer-window)))) 788 (window-frame minibuf-window))))
789 (with-current-buffer (window-buffer (active-minibuffer-window)) 789 (when (and (not noninteractive)
790 (setq message (if (string-match-p "\\` *\\[.+\\]\\'" message) 790 (window-live-p minibuf-window)
791 ;; Make sure we can put-text-property. 791 (or (eq (window-frame) minibuf-frame)
792 (copy-sequence message) 792 (eq (frame-parameter minibuf-frame 'minibuffer) 'only)))
793 (concat " [" message "]"))) 793 (with-current-buffer (window-buffer minibuf-window)
794 (unless (or (null minibuffer-message-properties) 794 (setq message (if (string-match-p "\\` *\\[.+\\]\\'" message)
795 ;; Don't overwrite the face properties the caller has set 795 ;; Make sure we can put-text-property.
796 (text-properties-at 0 message)) 796 (copy-sequence message)
797 (setq message (apply #'propertize message minibuffer-message-properties))) 797 (concat " [" message "]")))
798 798 (unless (or (null minibuffer-message-properties)
799 (clear-minibuffer-message) 799 ;; Don't overwrite the face properties the caller has set
800 800 (text-properties-at 0 message))
801 (let ((ovpos (minibuffer--message-overlay-pos))) 801 (setq message
802 (setq minibuffer-message-overlay 802 (apply #'propertize message minibuffer-message-properties)))
803 (make-overlay ovpos ovpos nil t t))) 803
804 (unless (zerop (length message)) 804 (clear-minibuffer-message)
805 ;; The current C cursor code doesn't know to use the overlay's 805
806 ;; marker's stickiness to figure out whether to place the cursor 806 (let ((ovpos (minibuffer--message-overlay-pos)))
807 ;; before or after the string, so let's spoon-feed it the pos. 807 (setq minibuffer-message-overlay
808 (put-text-property 0 1 'cursor 1 message)) 808 (make-overlay ovpos ovpos nil t t)))
809 (overlay-put minibuffer-message-overlay 'after-string message) 809 (unless (zerop (length message))
810 ;; Make sure the overlay with the message is displayed before 810 ;; The current C cursor code doesn't know to use the overlay's
811 ;; any other overlays in that position, in case they have 811 ;; marker's stickiness to figure out whether to place the cursor
812 ;; resize-mini-windows set to nil and the other overlay strings 812 ;; before or after the string, so let's spoon-feed it the pos.
813 ;; are too long for the mini-window width. This makes sure the 813 (put-text-property 0 1 'cursor 1 message))
814 ;; temporary message will always be visible. 814 (overlay-put minibuffer-message-overlay 'after-string message)
815 (overlay-put minibuffer-message-overlay 'priority 1100) 815 ;; Make sure the overlay with the message is displayed before
816 816 ;; any other overlays in that position, in case they have
817 (when (numberp minibuffer-message-clear-timeout) 817 ;; resize-mini-windows set to nil and the other overlay strings
818 (setq minibuffer-message-timer 818 ;; are too long for the mini-window width. This makes sure the
819 (run-with-timer minibuffer-message-clear-timeout nil 819 ;; temporary message will always be visible.
820 #'clear-minibuffer-message))) 820 (overlay-put minibuffer-message-overlay 'priority 1100)
821 821
822 ;; Return `t' telling the caller that the message 822 (when (numberp minibuffer-message-clear-timeout)
823 ;; was handled specially by this function. 823 (setq minibuffer-message-timer
824 t))) 824 (run-with-timer minibuffer-message-clear-timeout nil
825 #'clear-minibuffer-message)))
826
827 ;; Return `t' telling the caller that the message
828 ;; was handled specially by this function.
829 t))))
825 830
826(setq set-message-function 'set-minibuffer-message) 831(setq set-message-function 'set-minibuffer-message)
827 832
diff --git a/src/keyboard.c b/src/keyboard.c
index 5f136f03ecf..fca71985b92 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -5246,7 +5246,6 @@ make_lispy_position (struct frame *f, Lisp_Object x, Lisp_Object y,
5246 extra_info))); 5246 extra_info)));
5247 } 5247 }
5248 5248
5249#ifdef HAVE_WINDOW_SYSTEM
5250 else if (f) 5249 else if (f)
5251 { 5250 {
5252 /* Return mouse pixel coordinates here. */ 5251 /* Return mouse pixel coordinates here. */
@@ -5254,7 +5253,9 @@ make_lispy_position (struct frame *f, Lisp_Object x, Lisp_Object y,
5254 xret = XFIXNUM (x); 5253 xret = XFIXNUM (x);
5255 yret = XFIXNUM (y); 5254 yret = XFIXNUM (y);
5256 5255
5257 if (FRAME_LIVE_P (f) 5256#ifdef HAVE_WINDOW_SYSTEM
5257 if (FRAME_WINDOW_P (f)
5258 && FRAME_LIVE_P (f)
5258 && FRAME_INTERNAL_BORDER_WIDTH (f) > 0 5259 && FRAME_INTERNAL_BORDER_WIDTH (f) > 0
5259 && !NILP (get_frame_param (f, Qdrag_internal_border))) 5260 && !NILP (get_frame_param (f, Qdrag_internal_border)))
5260 { 5261 {
@@ -5263,8 +5264,8 @@ make_lispy_position (struct frame *f, Lisp_Object x, Lisp_Object y,
5263 5264
5264 posn = builtin_lisp_symbol (internal_border_parts[part]); 5265 posn = builtin_lisp_symbol (internal_border_parts[part]);
5265 } 5266 }
5266 }
5267#endif 5267#endif
5268 }
5268 5269
5269 else 5270 else
5270 window_or_frame = Qnil; 5271 window_or_frame = Qnil;
diff --git a/src/xdisp.c b/src/xdisp.c
index 6c401d0abb9..03dc4bec712 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -22793,6 +22793,10 @@ maybe_produce_line_number (struct it *it)
22793 int lnum_face_id = merge_faces (it->w, Qline_number, 0, DEFAULT_FACE_ID); 22793 int lnum_face_id = merge_faces (it->w, Qline_number, 0, DEFAULT_FACE_ID);
22794 int current_lnum_face_id 22794 int current_lnum_face_id
22795 = merge_faces (it->w, Qline_number_current_line, 0, DEFAULT_FACE_ID); 22795 = merge_faces (it->w, Qline_number_current_line, 0, DEFAULT_FACE_ID);
22796 /* From here onwards, we must prevent freeing realized faces, because
22797 we are using the above 2 face IDs for the glyphs we produce. */
22798 bool save_free_realized_faces = inhibit_free_realized_faces;
22799 inhibit_free_realized_faces = true;
22796 /* Compute point's line number if needed. */ 22800 /* Compute point's line number if needed. */
22797 if ((EQ (Vdisplay_line_numbers, Qrelative) 22801 if ((EQ (Vdisplay_line_numbers, Qrelative)
22798 || EQ (Vdisplay_line_numbers, Qvisual) 22802 || EQ (Vdisplay_line_numbers, Qvisual)
@@ -22922,10 +22926,13 @@ maybe_produce_line_number (struct it *it)
22922 it->lnum_width = 0; 22926 it->lnum_width = 0;
22923 it->lnum_pixel_width = 0; 22927 it->lnum_pixel_width = 0;
22924 bidi_unshelve_cache (itdata, false); 22928 bidi_unshelve_cache (itdata, false);
22929 inhibit_free_realized_faces = save_free_realized_faces;
22925 return; 22930 return;
22926 } 22931 }
22927 } 22932 }
22928 22933
22934 inhibit_free_realized_faces = save_free_realized_faces;
22935
22929 /* Record the width in pixels we need for the line number display. */ 22936 /* Record the width in pixels we need for the line number display. */
22930 it->lnum_pixel_width = tem_it.current_x; 22937 it->lnum_pixel_width = tem_it.current_x;
22931 /* Copy the produced glyphs into IT's glyph_row. */ 22938 /* Copy the produced glyphs into IT's glyph_row. */