emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 687c4137fa4: Merge from origin/emacs-29


From: Eli Zaretskii
Subject: master 687c4137fa4: Merge from origin/emacs-29
Date: Sat, 27 Apr 2024 06:26:29 -0400 (EDT)

branch: master
commit 687c4137fa473031bc62aa0d41aec74df4f1e5af
Merge: b761a381066 f37f01b5046
Author: Eli Zaretskii <eliz@gnu.org>
Commit: Eli Zaretskii <eliz@gnu.org>

    Merge from origin/emacs-29
    
    f37f01b5046 Fix a typo in Introduction to Emacs Lisp (bug#70571).
    d8687fd6cd8 Fix last change
    494dfd9cf2b Fix indentation of if/else in 'csharp-ts-mode' (bug#70345)
    1cc6322e612 ; * etc/PROBLEMS: Document crashes due to tree-sitter ABI...
    42766f95e5c * build-aux/make-info-dir: Avoid bashism (bug#70484).
    81476fa19e8 Improve documentation of selection and navigation in *xre...
    2a533514929 Fix Widget manual typos, markup and omissions (bug#70502)
    90be3015b4d ; Document bookmark fringe mark in the user manual
    afd0b548fcc Fix python-ts-mode built-in functions and attributes (bug...
    dc720decc3a Fix markup and indexing in the Calendar chapter of user m...
    f593bf79a91 Fix the user manual for `calendar-time-zone-style'
    aed2b7a3d82 Avoid assertion violations in 'push_prefix_prop'
    c929532b469 Remove ert-equal-including-properties from manual
    e3aae5fd385 ; Document 'filtered-frame-list'
---
 build-aux/make-info-dir                            |   5 +-
 doc/emacs/calendar.texi                            | 262 ++++++++++++---------
 doc/emacs/maintaining.texi                         |  53 +++--
 doc/emacs/regs.texi                                |  15 +-
 doc/lispintro/emacs-lisp-intro.texi                |   2 +-
 doc/lispref/frames.texi                            |  12 +
 doc/misc/ert.texi                                  |   3 +-
 doc/misc/widget.texi                               |  47 ++--
 etc/PROBLEMS                                       |  22 ++
 lisp/progmodes/csharp-mode.el                      |   4 +-
 lisp/progmodes/python.el                           |  16 +-
 src/dispextern.h                                   |   4 +-
 src/xdisp.c                                        |   2 +
 .../progmodes/csharp-mode-resources/indent-ts.erts |  51 ++++
 test/lisp/progmodes/csharp-mode-tests.el           |   3 +
 15 files changed, 346 insertions(+), 155 deletions(-)

diff --git a/build-aux/make-info-dir b/build-aux/make-info-dir
index 703abc7bd0a..214757bb65b 100755
--- a/build-aux/make-info-dir
+++ b/build-aux/make-info-dir
@@ -33,7 +33,8 @@
 
 ## Header contains non-printing characters, so this is more
 ## reliable than using awk.
-cat <"${1?}" || exit
+test $# -ge 2 || exit 1
+cat <"$1"
 shift
 
 exec "${AWK-awk}" '
@@ -101,4 +102,4 @@ exec "${AWK-awk}" '
       if (data[dircat])
         printf "\n%s\n%s", topic[dircat], data[dircat]
   }
-' "${@?}"
+' "$@"
diff --git a/doc/emacs/calendar.texi b/doc/emacs/calendar.texi
index 7312cfb34c9..10fe404099d 100644
--- a/doc/emacs/calendar.texi
+++ b/doc/emacs/calendar.texi
@@ -104,8 +104,11 @@ Move point one year backward 
(@code{calendar-backward-year}).
   The day and week commands are natural analogues of the usual Emacs
 commands for moving by characters and by lines.  Just as @kbd{C-n}
 usually moves to the same column in the following line, in Calendar
-mode it moves to the same day in the following week.  And @kbd{C-p}
-moves to the same day in the previous week.
+mode it is bound to @code{calendar-forward-week}, which moves to the
+same day in the following week.  And @kbd{C-p}
+(@code{calendar-backward-week} moves to the same day in the previous
+week.  @kbd{C-f} (@code{calendar-forward-day}) and @kbd{C-b}
+(@code{calendar-backward-day}) move forward and back by days.
 
   The arrow keys are equivalent to @kbd{C-f}, @kbd{C-b}, @kbd{C-n} and
 @kbd{C-p}, just as they normally are in other modes.
@@ -119,10 +122,12 @@ moves to the same day in the previous week.
 @kindex C-x [ @r{(Calendar mode)}
 @findex calendar-backward-year
   The commands for motion by months and years work like those for
-weeks, but move a larger distance.  The month commands @kbd{M-@}} and
-@kbd{M-@{} move forward or backward by an entire month.  The year
-commands @kbd{C-x ]} and @w{@kbd{C-x [}} move forward or backward a
-whole year.
+weeks, but move a larger distance.  The month commands @kbd{M-@}}
+(@code{calendar-forward-month}) and @kbd{M-@{}
+(@code{calendar-backward-month}) move forward or backward by an entire
+month.  The year commands @w{@kbd{C-x ]}}
+(@code{calendar-forward-year}) and @w{@kbd{C-x [}}
+(@code{calendar-backward-year}) move forward or backward a whole year.
 
   The easiest way to remember these commands is to consider months and
 years analogous to paragraphs and pages of text, respectively.  But
@@ -261,8 +266,9 @@ Scroll backward by three months 
(@code{calendar-scroll-right-three-months}).
 @findex calendar-scroll-right
   The most basic calendar scroll commands scroll by one month at a
 time.  This means that there are two months of overlap between the
-display before the command and the display after.  @kbd{>} scrolls the
-calendar contents one month forward in time.  @kbd{<} scrolls the
+display before the command and the display after.  @kbd{>}
+(@code{calendar-scroll-left}) scrolls the calendar contents one month
+forward in time.  @kbd{<} (@code{calendar-scroll-right}) scrolls the
 contents one month backwards in time.
 
 @kindex C-v @r{(Calendar mode)}
@@ -273,13 +279,15 @@ contents one month backwards in time.
 @kindex PageUp @r{(Calendar mode)}
 @kindex prior @r{(Calendar mode)}
 @findex calendar-scroll-right-three-months
-  The commands @kbd{C-v} and @kbd{M-v} scroll the calendar by an entire
-screenful---three months---in analogy with the usual meaning of
-these commands.  @kbd{C-v} makes later dates visible and @kbd{M-v} makes
-earlier dates visible.  These commands take a numeric argument as a
-repeat count; in particular, since @kbd{C-u} multiplies the next command
-by four, typing @kbd{C-u C-v} scrolls the calendar forward by a year and
-typing @kbd{C-u M-v} scrolls the calendar backward by a year.
+  The commands @kbd{C-v} (@code{calendar-scroll-left-three-months})
+and @kbd{M-v} (@code{calendar-scroll-right-three-months}) scroll the
+calendar by an entire screenful---three months---in analogy with the
+usual meaning of these commands.  @kbd{C-v} makes later dates visible
+and @kbd{M-v} makes earlier dates visible.  These commands take a
+numeric argument as a repeat count; in particular, since @kbd{C-u}
+multiplies the next command by four, typing @kbd{C-u C-v} scrolls the
+calendar forward by a year and typing @kbd{C-u M-v} scrolls the
+calendar backward by a year.
 
   The function keys @key{PageDown} (or @key{next}) and @key{PageUp}
 (or @key{prior}) are equivalent to @kbd{C-v} and @kbd{M-v}, just as
@@ -358,6 +366,8 @@ calendar deletes or iconifies that frame depending on the 
value of
   You can write calendars and diary entries to HTML and @LaTeX{} files.
 
 @cindex calendar and HTML
+@vindex cal-html-directory
+@vindex cal-html-holidays
   The Calendar HTML commands produce files of HTML code that contain
 calendar, holiday, and diary entries.  Each file applies to one month,
 and has a name of the format @file{@var{yyyy}-@var{mm}.html}, where
@@ -382,10 +392,13 @@ Generate a one-month calendar 
(@code{cal-html-cursor-month}).
 @item H y
 Generate a calendar file for each month of a year, as well as an index
 page (@code{cal-html-cursor-year}).  By default, this command writes
-files to a @var{yyyy} subdirectory---if this is altered some hyperlinks
-between years will not work.
+files to a @var{year} subdirectory, where @var{year} is the year at
+cursor---if this is altered, some hyperlinks between years will not
+work.
 @end table
 
+@vindex cal-html-print-day-number-flag
+@vindex cal-html-year-index-cols
   If the variable @code{cal-html-print-day-number-flag} is
 non-@code{nil}, then the monthly calendars show the day-of-the-year
 number.  The variable @code{cal-html-year-index-cols} specifies the
@@ -444,6 +457,9 @@ paper size (3.75in x 6.75in).  All of these commands accept 
a prefix
 argument, which specifies how many days, weeks, months or years to print
 (starting always with the selected one).
 
+@vindex cal-tex-holidays
+@vindex cal-tex-diary
+@vindex cal-tex-rules
   If the variable @code{cal-tex-holidays} is non-@code{nil} (the default),
 then the printed calendars show the holidays in @code{calendar-holidays}.
 If the variable @code{cal-tex-diary} is non-@code{nil} (the default is
@@ -454,6 +470,7 @@ pages in styles that have sufficient room.  Consult the 
documentation of
 the individual cal-tex functions to see which calendars support which
 features.
 
+@vindex cal-tex-preamble-extra
   You can use the variable @code{cal-tex-preamble-extra} to insert extra
 @LaTeX{} commands in the preamble of the generated document if you need
 to.
@@ -486,12 +503,12 @@ List holidays in another window for a specified range of 
years.
 
 @kindex h @r{(Calendar mode)}
 @findex calendar-cursor-holidays
-@vindex calendar-view-holidays-initially-flag
   To see if any holidays fall on a given date, position point on that
-date in the calendar window and use the @kbd{h} command.  Alternatively,
-click on that date with @kbd{mouse-3} and then choose @kbd{Holidays}
-from the menu that appears.  Either way, this displays the holidays for
-that date, in the echo area if they fit there, otherwise in a separate
+date in the calendar window and use the @kbd{h}
+(@code{calendar-cursor-holidays}) command.  Alternatively, click on
+that date with @kbd{mouse-3} and then choose @kbd{Holidays} from the
+menu that appears.  Either way, this displays the holidays for that
+date, in the echo area if they fit there, otherwise in a separate
 window.
 
 @kindex x @r{(Calendar mode)}
@@ -500,8 +517,8 @@ window.
 @findex calendar-unmark
 @vindex calendar-mark-holidays-flag
   To view the distribution of holidays for all the dates shown in the
-calendar, use the @kbd{x} command.  This displays the dates that are
-holidays in a different face.
+calendar, use the @kbd{x} (@code{calendar-mark-holidays}) command.
+This displays the dates that are holidays in a different face.
 @iftex
 @xref{Calendar Customizing,,, emacs-xtra, Specialized Emacs Features}.
 @end iftex
@@ -510,19 +527,22 @@ holidays in a different face.
 @end ifnottex
   The command applies both to the currently visible months and to
 other months that subsequently become visible by scrolling.  To turn
-marking off and erase the current marks, type @kbd{u}, which also
-erases any diary marks (@pxref{Diary}).  If the variable
-@code{calendar-mark-holidays-flag} is non-@code{nil}, creating or
-updating the calendar marks holidays automatically.
+marking off and erase the current marks, type @kbd{u}
+(@code{calendar-unmark}), which also erases any diary marks
+(@pxref{Diary}).  If the variable @code{calendar-mark-holidays-flag}
+is non-@code{nil}, creating or updating the calendar marks holidays
+automatically.
 
 @kindex a @r{(Calendar mode)}
 @findex calendar-list-holidays
-  To get even more detailed information, use the @kbd{a} command, which
-displays a separate buffer containing a list of all holidays in the
-current three-month range.  You can use @key{SPC} and @key{DEL} in the
-calendar window to scroll that list up and down, respectively.
+  To get even more detailed information, use the @kbd{a}
+(@code{calendar-list-holidays}) command, which displays a separate
+buffer containing a list of all holidays in the current three-month
+range.  You can use @key{SPC} and @key{DEL} in the calendar window to
+scroll that list up and down, respectively.
 
 @findex holidays
+@vindex calendar-view-holidays-initially-flag
   The command @kbd{M-x holidays} displays the list of holidays for the
 current month and the preceding and succeeding months; this works even
 if you don't have a calendar window.  If the variable
@@ -536,6 +556,7 @@ major Bahá'í, Chinese, Christian, Islamic, and Jewish
 holidays; also the solstices and equinoxes.
 
 @findex list-holidays
+@findex holiday-list
    The command @kbd{M-x holiday-list} displays the list of holidays for
 a range of years.  This function asks you for the starting and stopping
 years, and allows you to choose all the holidays or one of several
@@ -569,14 +590,14 @@ Display times of sunrise and sunset for the selected 
month.
 @kindex S @r{(Calendar mode)}
 @findex calendar-sunrise-sunset
 @findex sunrise-sunset
-  Within the calendar, to display the @emph{local times} of sunrise and
-sunset in the echo area, move point to the date you want, and type
-@kbd{S}.  Alternatively, click @kbd{mouse-3} on the date, then choose
-@samp{Sunrise/sunset} from the menu that appears.  The command @kbd{M-x
-sunrise-sunset} is available outside the calendar to display this
-information for today's date or a specified date.  To specify a date
-other than today, use @kbd{C-u M-x sunrise-sunset}, which prompts for
-the year, month, and day.
+  Within the calendar, to display the @emph{local times} of sunrise
+and sunset in the echo area, move point to the date you want, and type
+@kbd{S} (@code{calendar-sunrise-sunset}).  Alternatively, click
+@kbd{mouse-3} on the date, then choose @samp{Sunrise/sunset} from the
+menu that appears.  The command @kbd{M-x sunrise-sunset} is available
+outside the calendar to display this information for today's date or a
+specified date.  To specify a date other than today, use @kbd{C-u M-x
+sunrise-sunset}, which prompts for the year, month, and day.
 
   You can display the times of sunrise and sunset for any location and
 any date with @kbd{C-u C-u M-x sunrise-sunset}.  This asks you for a
@@ -584,13 +605,13 @@ longitude, latitude, number of minutes difference from 
Coordinated
 Universal Time, and date, and then tells you the times of sunrise and
 sunset for that location on that date.
 
+@vindex calendar-location-name
+@vindex calendar-longitude
+@vindex calendar-latitude
   Because the times of sunrise and sunset depend on the location on
 earth, you need to tell Emacs your latitude, longitude, and location
 name before using these commands.  Here is an example of what to set:
 
-@vindex calendar-location-name
-@vindex calendar-longitude
-@vindex calendar-latitude
 @example
 (setq calendar-latitude 40.1)
 (setq calendar-longitude -88.2)
@@ -601,14 +622,14 @@ name before using these commands.  Here is an example of 
what to set:
 Use one decimal place in the values of @code{calendar-latitude} and
 @code{calendar-longitude}.
 
+@vindex calendar-time-zone
+@vindex calendar-standard-time-zone-name
+@vindex calendar-daylight-time-zone-name
   Your time zone also affects the local time of sunrise and sunset.
 Emacs usually gets time zone information from the operating system, but
 if these values are not what you want (or if the operating system does
 not supply them), you must set them yourself.  Here is an example:
 
-@vindex calendar-time-zone
-@vindex calendar-standard-time-zone-name
-@vindex calendar-daylight-time-zone-name
 @example
 (setq calendar-time-zone -360)
 (setq calendar-standard-time-zone-name "CST")
@@ -616,9 +637,9 @@ not supply them), you must set them yourself.  Here is an 
example:
 @end example
 
 @noindent
-The value of @code{calendar-time-zone} is the number of minutes
+The value of @code{calendar-time-zone} is the number of minutes of
 difference between your local standard time and Coordinated Universal
-Time (Greenwich time).  The values of
+Time (a.k.a.@: ``Greenwich time'').  The values of
 @code{calendar-standard-time-zone-name} and
 @code{calendar-daylight-time-zone-name} are the abbreviations used in
 your time zone.  Emacs displays the times of sunrise and sunset
@@ -627,7 +648,8 @@ for how daylight saving time is determined.
 
 @vindex calendar-time-zone-style
   If you want to display numerical time zones (like @samp{"+0100"})
-instead of symbolic ones (like @samp{"CET"}), set this to @code{numeric}.
+instead of symbolic ones (like @samp{"CET"}), set the variable
+@code{calendar-time-zone-style} to @code{numeric}.
 
   As a user, you might find it convenient to set the calendar location
 variables for your usual physical location in your @file{.emacs} file.
@@ -639,10 +661,10 @@ for all users in a @file{default.el} file.  @xref{Init 
File}.
 @cindex phases of the moon
 @cindex moon, phases of
 
-  These calendar commands display the dates and times of the phases of
-the moon (new moon, first quarter, full moon, last quarter).  This
-feature is useful for debugging problems that depend on the phase of
-the moon.
+  The calendar commands described in this section display the dates
+and times of the phases of the moon (new moon, first quarter, full
+moon, last quarter).  This feature is useful for debugging problems
+that depend on the phase of the moon.
 
 @table @kbd
 @item M
@@ -655,9 +677,10 @@ today's date.
 
 @kindex M @r{(Calendar mode)}
 @findex calendar-lunar-phases
-  Within the calendar, use the @kbd{M} command to display a separate
-buffer of the phases of the moon for the current three-month range.  The
-dates and times listed are accurate to within a few minutes.
+  Within the calendar, use the @kbd{M} (@code{calendar-lunar-phases})
+command to display a separate buffer of the phases of the moon for the
+current three-month range.  The dates and times listed are accurate to
+within a few minutes.
 
 @findex lunar-phases
   Outside the calendar, use the command @kbd{M-x lunar-phases} to
@@ -668,21 +691,22 @@ year.
 
   The dates and times given for the phases of the moon are given in
 local time (corrected for daylight saving, when appropriate).
-See the discussion in the previous section.  @xref{Sunrise/Sunset}.
+See the discussion in the previous section (@pxref{Sunrise/Sunset}).
 
 @node Other Calendars
 @section Conversion To and From Other Calendars
 
 @cindex Gregorian calendar
-  The Emacs calendar displayed is @emph{always} the Gregorian calendar,
-sometimes called the New Style calendar, which is used in most of
-the world today.  However, this calendar did not exist before the
-sixteenth century and was not widely used before the eighteenth century;
-it did not fully displace the Julian calendar and gain universal
-acceptance until the early twentieth century.  The Emacs calendar can
-display any month since January, year 1 of the current era, but the
-calendar displayed is always the Gregorian, even for a date at which
-the Gregorian calendar did not exist.
+@cindex New Style calendar
+  The Emacs calendar displayed is @emph{always} the @dfn{Gregorian
+calendar}, sometimes called the @dfn{New Style calendar}, which is
+used in most of the world today.  However, this calendar did not exist
+before the sixteenth century and was not widely used before the
+eighteenth century; it did not fully displace the Julian calendar and
+gain universal acceptance until the early twentieth century.  The
+Emacs calendar can display any month since January, year 1 of the
+current era, but the calendar displayed is always the Gregorian, even
+for a date at which the Gregorian calendar did not exist.
 
   While Emacs cannot display other calendars, it can convert dates to
 and from several other calendars.
@@ -711,7 +735,8 @@ century.
 @cindex astronomical day numbers
   Astronomers use a simple counting of days elapsed since noon, Monday,
 January 1, 4713 BC on the Julian calendar.  The number of days elapsed
-is called the @dfn{Julian day number} or the @dfn{Astronomical day number}.
+since then is called the @dfn{Julian day number} or the
+@dfn{Astronomical day number}.
 
 @cindex Hebrew calendar
   The Hebrew calendar is used by tradition in the Jewish religion.  The
@@ -736,6 +761,10 @@ the metric system.  The French government officially 
abandoned this
 calendar at the end of 1805.
 
 @cindex Mayan calendars
+@cindex long count calendar system
+@cindex tzolkin calendar system
+@cindex haab calendar system
+@cindex Goodman-Martinez-Thompson correlation
   The Maya of Central America used three separate, overlapping calendar
 systems, the @emph{long count}, the @emph{tzolkin}, and the @emph{haab}.
 Emacs knows about all three of these calendars.  Experts dispute the
@@ -751,6 +780,7 @@ extra period to make it six days.  The Ethiopic calendar is 
identical in
 structure, but has different year numbers and month names.
 
 @cindex Persian calendar
+@cindex Birashk
   The Persians use a solar calendar based on a design of Omar Khayyam.
 Their calendar consists of twelve months of which the first six have 31
 days, the next five have 30 days, and the last has 29 in ordinary years
@@ -840,13 +870,13 @@ Display Mayan date for selected day 
(@code{calendar-mayan-print-date}).
   Otherwise, move point to the date you want to convert, then type the
 appropriate command starting with @kbd{p} from the table above.  The
 prefix @kbd{p} is a mnemonic for ``print'', since Emacs ``prints'' the
-equivalent date in the echo area.  @kbd{p o} displays the
-date in all forms known to Emacs.  You can also use @kbd{mouse-3} and
-then choose @kbd{Other calendars} from the menu that appears.  This
-displays the equivalent forms of the date in all the calendars Emacs
-understands, in the form of a menu.  (Choosing an alternative from
-this menu doesn't actually do anything---the menu is used only for
-display.)
+equivalent date in the echo area.  @kbd{p o}
+(@code{calendar-print-other-dates}) displays the date in all forms
+known to Emacs.  You can also use @kbd{mouse-3} and then choose
+@kbd{Other calendars} from the menu that appears.  This displays the
+equivalent forms of the date in all the calendars Emacs understands,
+in the form of a menu.  (Choosing an alternative from this menu
+doesn't actually do anything---the menu is used only for display.)
 
 @node From Other Calendar
 @subsection Converting From Other Calendars
@@ -1053,10 +1083,11 @@ Mail yourself email reminders about upcoming diary 
entries.
 @kindex d @r{(Calendar mode)}
 @findex diary-view-entries
 @vindex calendar-view-diary-initially-flag
-  Displaying the diary entries with @kbd{d} shows in a separate buffer
-the diary entries for the selected date in the calendar.  The mode line
-of the new buffer shows the date of the diary entries.  Holidays are
-shown either in the buffer or in the mode line, depending on the display
+  Displaying the diary entries with @kbd{d}
+(@code{diary-view-entries}) shows in a separate buffer the diary
+entries for the selected date in the calendar.  The mode line of the
+new buffer shows the date of the diary entries.  Holidays are shown
+either in the buffer or in the mode line, depending on the display
 method you choose
 @iftex
 (@pxref{Diary Display,,, emacs-xtra, Specialized Emacs Features}).
@@ -1079,8 +1110,8 @@ current date is visible).
 @findex diary-mark-entries
 @vindex calendar-mark-diary-entries-flag
   To get a broader view of which days are mentioned in the diary, use
-the @kbd{m} command.  This marks the dates that have diary entries in
-a different face.
+the @kbd{m} (@code{diary-mark-entries}) command.  This marks the dates
+that have diary entries in a different face.
 @iftex
 @xref{Calendar Customizing,,, emacs-xtra, Specialized Emacs Features}.
 @end iftex
@@ -1089,9 +1120,10 @@ a different face.
 @end ifnottex
 
   This command applies both to the months that are currently visible
-and to those that subsequently become visible after scrolling.  To turn
-marking off and erase the current marks, type @kbd{u}, which also
-turns off holiday marks (@pxref{Holidays}).  If the variable
+and to those that subsequently become visible after scrolling.  To
+turn marking off and erase the current marks, type @kbd{u}
+(@code{calendar-unmark}), which also turns off holiday marks
+(@pxref{Holidays}).  If the variable
 @code{calendar-mark-diary-entries-flag} is non-@code{nil}, creating or
 updating the calendar marks diary dates automatically.
 
@@ -1107,9 +1139,10 @@ otherwise mark many different dates.
 @kindex s @r{(Calendar mode)}
 @findex diary-show-all-entries
   To see the full diary file, rather than just some of the entries, use
-the @kbd{s} command.
+the @kbd{s} (@code{diary-show-all-entries}) command.
 
 @findex diary
+@vindex diary-number-of-entries
   The command @kbd{M-x diary} displays the diary entries for the current
 date, independently of the calendar display, and optionally for the next
 few days as well; the variable @code{diary-number-of-entries} specifies
@@ -1161,6 +1194,9 @@ and @var{day} are numbers of one or two digits.  The 
optional @var{year}
 is also a number, and may be abbreviated to the last two digits; that
 is, you can use @samp{11/12/2012} or @samp{11/12/12}.
 
+@vindex calendar-abbrev-length
+@vindex calendar-month-abbrev-array
+@vindex calendar-day-abbrev-array
   Dates can also have the form @samp{@var{monthname} @var{day}} or
 @samp{@var{monthname} @var{day}, @var{year}}, where the month's name can
 be spelled in full or abbreviated (with or without a period).  The
@@ -1194,6 +1230,7 @@ significant.
 
 @node Adding to Diary
 @subsection Commands to Add to the Diary
+@cindex create diary entries
 
   While in the calendar, there are several commands to create diary
 entries.  The basic commands are listed here; more sophisticated
@@ -1219,10 +1256,11 @@ Add a diary entry for the selected day of the year 
(@code{diary-insert-yearly-en
 
 @kindex i d @r{(Calendar mode)}
 @findex diary-insert-entry
-  You can make a diary entry for a specific date by selecting that date
-in the calendar window and typing the @kbd{i d} command.  This command
-displays the end of your diary file in another window and inserts the
-date; you can then type the rest of the diary entry.
+  You can make a diary entry for a specific date by selecting that
+date in the calendar window and typing the @kbd{i d}
+(@code{diary-insert-entry}) command.  This command displays the end of
+your diary file in another window and inserts the date; you can then
+type the rest of the diary entry.
 
 @kindex i w @r{(Calendar mode)}
 @findex diary-insert-weekly-entry
@@ -1231,12 +1269,14 @@ date; you can then type the rest of the diary entry.
 @kindex i y @r{(Calendar mode)}
 @findex diary-insert-yearly-entry
   If you want to make a diary entry that applies to a specific day of
-the week, select that day of the week (any occurrence will do) and type
-@kbd{i w}.  This inserts the day-of-week as a generic date; you can then
-type the rest of the diary entry.  You can make a monthly diary entry in
-the same fashion: select the day of the month, use the @kbd{i m}
-command, and type the rest of the entry.  Similarly, you can insert a
-yearly diary entry with the @kbd{i y} command.
+the week, select that day of the week (any occurrence will do) and
+type @kbd{i w} (@code{diary-insert-weekly-entry}).  This inserts the
+day-of-week as a generic date; you can then type the rest of the diary
+entry.  You can make a monthly diary entry in the same fashion: select
+the day of the month, use the @kbd{i m}
+(@code{diary-insert-monthly-entry}) command, and type the rest of the
+entry.  Similarly, you can insert a yearly diary entry with the @kbd{i
+y} (@code{diary-insert-yearly-entry}) command.
 
   All of the above commands make marking diary entries by default.  To
 make a nonmarking diary entry, give a prefix argument to the command.
@@ -1251,6 +1291,7 @@ calendar window, if appropriate.  You can use the command
 @node Special Diary Entries
 @subsection Special Diary Entries
 
+@cindex sexp entries, in diary
   In addition to entries based on calendar dates, the diary file can
 contain @dfn{sexp entries} for regular events such as anniversaries.
 These entries are based on Lisp expressions (sexps) that Emacs evaluates
@@ -1276,11 +1317,12 @@ Add a cyclic diary entry starting at the date
 
 @kindex i a @r{(Calendar mode)}
 @findex diary-insert-anniversary-entry
-  If you want to make a diary entry that applies to the anniversary of a
-specific date, move point to that date and use the @kbd{i a} command.
-This displays the end of your diary file in another window and inserts
-the anniversary description; you can then type the rest of the diary
-entry.  The entry looks like this:
+  If you want to make a diary entry that applies to the anniversary of
+a specific date, move point to that date and use the @kbd{i a}
+(@code{diary-insert-anniversary-entry}) command.  This displays the
+end of your diary file in another window and inserts the anniversary
+description; you can then type the rest of the diary entry.  The entry
+looks like this:
 
 @findex diary-anniversary
 @example
@@ -1294,6 +1336,7 @@ calendar style, the input order of month, day and year is 
different.)
 The reason this expression requires a beginning year is that advanced
 diary functions can use it to calculate the number of elapsed years.
 
+@cindex block diary entry
   A @dfn{block} diary entry applies to a specified range of consecutive
 dates.  Here is a block diary entry that applies to all dates from June
 24, 2012 through July 10, 2012:
@@ -1310,17 +1353,19 @@ calendar style, the input order of month, day and year 
is different.)
 
 @kindex i b @r{(Calendar mode)}
 @findex diary-insert-block-entry
-  To insert a block entry, place point and the mark on the two
-dates that begin and end the range, and type @kbd{i b}.  This command
-displays the end of your diary file in another window and inserts the
-block description; you can then type the diary entry.
+  To insert a block entry, place point and the mark on the two dates
+that begin and end the range, and type @kbd{i b}
+(@code{diary-insert-block-entry}).  This command displays the end of
+your diary file in another window and inserts the block description;
+you can then type the diary entry.
 
 @kindex i c @r{(Calendar mode)}
 @findex diary-insert-cyclic-entry
-   @dfn{Cyclic} diary entries repeat after a fixed interval of days.  To
-create one, select the starting date and use the @kbd{i c} command.  The
-command prompts for the length of interval, then inserts the entry,
-which looks like this:
+@cindex cyclic diary entry
+   @dfn{Cyclic} diary entries repeat after a fixed interval of days.
+To create one, select the starting date and use the @kbd{i c}
+(@code{diary-insert-cyclic-entry}) command.  The command prompts for
+the length of interval, then inserts the entry, which looks like this:
 
 @findex diary-cyclic
 @example
@@ -1342,6 +1387,7 @@ since every date visible in the calendar window must be 
individually
 checked.  So it's a good idea to make sexp diary entries nonmarking
 (with @samp{&}) when possible.
 
+@cindex floating diary entry
   Another sophisticated kind of sexp entry, a @dfn{floating} diary entry,
 specifies a regularly occurring event by offsets specified in days,
 weeks, and months.  It is comparable to a crontab entry interpreted by
@@ -1477,6 +1523,7 @@ appointment list with @kbd{M-x appt-delete}.
 
 @node Importing Diary
 @subsection Importing and Exporting Diary Entries
+@cindex importing diary entries
 
   You can transfer diary entries between Emacs diary files and a
 variety of other formats.
@@ -1534,6 +1581,7 @@ to the main diary file, if these are different files.
 
 @findex icalendar-export-file
 @findex icalendar-export-region
+@cindex export diary
   Use @code{icalendar-export-file} to interactively export an entire
 Emacs diary file to iCalendar format.  To export only a part of a diary
 file, mark the relevant area, and call @code{icalendar-export-region}.
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index 2b945a0c5bd..579098c81b1 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -2343,19 +2343,33 @@ documentation for details.
 @vindex xref-auto-jump-to-first-definition
   If any of the above commands finds more than one matching
 definition, it by default pops up the @file{*xref*} buffer showing the
-matching candidates.  (@kbd{C-M-.}@: @emph{always} pops up the
-@file{*xref*} buffer if it finds at least one match.)  The candidates
-are normally shown in that buffer as the name of a file and the
-matching identifier(s) in that file.  In that buffer, you can select
-any of the candidates for display, and you have several additional
-commands, described in @ref{Xref Commands}.  However, if the value of
-the variable @code{xref-auto-jump-to-first-definition} is @code{move},
-the first of these candidates is automatically selected in the
-@file{*xref*} buffer, and if it's @code{t} or @code{show}, the first
-candidate is automatically shown in its own window; @code{t} also
-selects the window showing the first candidate.  The default value is
-@code{nil}, which just shows the candidates in the @file{*xref*}
-buffer, but doesn't select any of them.
+matching candidates and selects that buffer's window.  (@kbd{C-M-.}@:
+@emph{always} pops up the @file{*xref*} buffer if it finds at least
+one match.)  Each candidate is normally shown in that buffer as the
+name of a file and the matching identifier(s) in that file.  In that
+buffer, you can select any of the candidates for display, and you have
+several additional commands, described in @ref{Xref Commands}.
+However, if the value of the variable
+@code{xref-auto-jump-to-first-definition} is @code{move}, Emacs
+automatically moves point to the first of these candidates in the
+@file{*xref*} buffer, so just typing @key{RET} will display the
+definition of that candidate.  If the value of the variable is
+@code{t} or @code{show}, the first candidate is automatically shown in
+its own window; @code{t} also selects the window showing the first
+candidate's definition, while @code{show} leaves the window of the
+@file{*xfer*} buffer selected.  The default value is @code{nil}, which
+just shows the candidates in the @file{*xref*} buffer, but neither
+selects any of them nor shows their definition, until you select a
+candidate in the @file{*xref*} buffer.
+
+@findex next-error, in @file{*xref*} buffer
+@findex previous-error, in @file{*xref*} buffer
+@kindex M-g M-n, for navigation in @file{*xref*} buffer
+@kindex M-g M-p, for navigation in @file{*xref*} buffer
+  If you switch away of the window showing the @file{*xref*} buffer
+which displays several candidates, you can move from one candidate to
+another using the commands @w{@kbd{M-g M-n}} (@code{next-error}) and
+@w{@kbd{M-g M-p}} (@code{previous-error}).  @xref{Compilation Mode}.
 
 @kindex M-,
 @findex xref-go-back
@@ -2518,12 +2532,17 @@ referenced.  The XREF mode commands are available in 
this buffer, see
 @vindex xref-auto-jump-to-first-xref
   If the value of the variable @code{xref-auto-jump-to-first-xref} is
 @code{t}, @code{xref-find-references} automatically jumps to the first
-result and selects the window where it is displayed.  If the value is
-@code{show}, the first result is shown, but the window showing the
+result in the @file{*xref*} buffer and selects the window where that
+reference is displayed; you can select the other results with
+@w{@kbd{M-g M-n}} (@code{next-error}) and @w{@kbd{M-g M-p}}
+(@code{previous-error}) (@pxref{Compilation Mode}).  If the value is
+@code{show}, the first result is displayed, but the window showing the
 @file{*xref*} buffer is left selected.  If the value is @code{move},
 the first result is selected in the @file{*xref*} buffer, but is not
-shown.  The default value is @code{nil}, which just shows the results
-in the @file{*xref*} buffer, but doesn't select any of them.
+displayed; you can then use @key{RET} to actually display the
+reference.  The default value is @code{nil}, which just shows the
+results in the @file{*xref*} buffer, but doesn't select any of them,
+and doesn't display the reference itself.
 
 @findex xref-query-replace-in-results
   @kbd{r} (@code{xref-query-replace-in-results}) reads a @var{replacement}
diff --git a/doc/emacs/regs.texi b/doc/emacs/regs.texi
index cac5b32c566..734d704a272 100644
--- a/doc/emacs/regs.texi
+++ b/doc/emacs/regs.texi
@@ -380,8 +380,19 @@ Save all the current bookmark values in the default 
bookmark file.
 @kbd{C-x r m}, which sets a bookmark using the visited file name as
 the default for the bookmark name.  If you name each bookmark after
 the file it points to, then you can conveniently revisit any of those
-files with @kbd{C-x r b}, and move to the position of the bookmark at
-the same time.
+files with @kbd{C-x r b} (@code{bookmark-jump}), and move to the
+position of the bookmark at the same time.
+
+@vindex bookmark-fringe-mark
+  In addition to recording the current position, on graphical displays
+@kbd{C-x r m} places a special image on the left fringe
+(@pxref{Fringes}) of the screen line corresponding to the recorded
+position, to indicate that there's a bookmark there.  This can be
+controlled by the user option @code{bookmark-fringe-mark}: customize
+it to @code{nil} to disable the fringe mark.  The default value is
+@code{bookmark-mark}, which is the bitmap used for this purpose.  When
+you later use @kbd{C-x r b} to jump back to the bookmark, the fringe
+mark will be again shown on the fringe.
 
 @kindex C-x r M
 @findex bookmark-set-no-overwrite
diff --git a/doc/lispintro/emacs-lisp-intro.texi 
b/doc/lispintro/emacs-lisp-intro.texi
index a06822ce539..19777bf8ab7 100644
--- a/doc/lispintro/emacs-lisp-intro.texi
+++ b/doc/lispintro/emacs-lisp-intro.texi
@@ -19428,7 +19428,7 @@ There is more, but that is the hardest part.
 @appendixsec The @file{ring.el} File
 @cindex @file{ring.el} file
 
-Interestingly, GNU Emacs posses a file called @file{ring.el} that
+Interestingly, GNU Emacs possesses a file called @file{ring.el} that
 provides many of the features we just discussed.  But functions such
 as @code{kill-ring-yank-pointer} do not use this library, possibly
 because they were written earlier.
diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi
index cf7fc7721c5..cae93acae9f 100644
--- a/doc/lispref/frames.texi
+++ b/doc/lispref/frames.texi
@@ -2823,6 +2823,18 @@ direction.
   See also @code{next-window} and @code{previous-window}, in @ref{Cyclic
 Window Ordering}.
 
+  Some Lisp programs need to find one or more frames that satisfy a
+given criteria.  The function @code{filtered-frame-list} is provided for
+this purpose.
+
+@defun filtered-frame-list predicate
+This function returns the list of all the live frames which satisfy the
+specified @var{predicate}.  The argument @var{predicate} must be a
+function of one argument, a frame to be tested against the filtering
+criteria, and should return non-@code{nil} if the frame satisfies the
+criteria.
+@end defun
+
 @node Minibuffers and Frames
 @section Minibuffers and Frames
 
diff --git a/doc/misc/ert.texi b/doc/misc/ert.texi
index 8767de71496..cecde5f3232 100644
--- a/doc/misc/ert.texi
+++ b/doc/misc/ert.texi
@@ -786,7 +786,6 @@ Here's a more complicated test:
 @end lisp
 
 @findex make-ert-test
-@findex ert-equal-including-properties
 This test creates a test object using @code{make-ert-test} whose body
 will immediately signal failure.  It then runs that test and asserts
 that it fails.  Then, it creates a temporary buffer and invokes
@@ -795,7 +794,7 @@ to the current buffer.  Finally, it extracts the first line 
from the
 buffer and asserts that it matches what we expect.  It uses
 @code{buffer-substring-no-properties} and @code{equal} to ignore text
 properties; for a test that takes properties into account,
-@code{buffer-substring} and @code{ert-equal-including-properties}
+@code{buffer-substring} and @code{equal-including-properties}
 could be used instead.
 
 The reason why this test only checks the first line of the backtrace
diff --git a/doc/misc/widget.texi b/doc/misc/widget.texi
index f74605c92c0..2e378e86fc7 100644
--- a/doc/misc/widget.texi
+++ b/doc/misc/widget.texi
@@ -760,14 +760,14 @@ This chapter describes commands that are specific to 
buffers that
 contain widgets.
 
 @cindex widget keybindings
-@defvr Const widget-keymap
+@defvar widget-keymap
 Keymap containing useful bindings for buffers containing widgets.
 
-Binds @key{TAB} and @kbd{C-@key{TAB}} to @code{widget-forward} and
-@code{widget-backward}, respectively.  It also binds @key{RET} to
-@code{widget-button-press} and @kbd{down-mouse-1} and
+Binds @key{TAB} to @code{widget-forward} and both @kbd{S-@key{TAB}} and
+@kbd{M-@key{TAB}} to @code{widget-backward}.  It also binds @key{RET} to
+@code{widget-button-press} and both @kbd{down-mouse-1} and
 @kbd{down-mouse-2} to @code{widget-button-click}.
-@end defvr
+@end defvar
 
 There's also a keymap for events that the Widget library doesn't need
 to handle.
@@ -788,8 +788,8 @@ The following navigation commands are available:
 @deffn Command widget-forward &optional count
 Move point @var{count} buttons or editing fields forward.
 @end deffn
-@item @kbd{M-@key{TAB}}
-@itemx @kbd{S-@key{TAB}}
+@item M-@key{TAB}
+@itemx S-@key{TAB}
 @deffn Command widget-backward &optional count
 Move point @var{count} buttons or editing fields backward.
 @end deffn
@@ -805,30 +805,35 @@ When editing an @code{editable-field} widget, the 
following commands
 are available:
 
 @table @kbd
-@item @key{C-e}
+@item C-e
 @deffn Command widget-end-of-line
 Move point to the end of field or end of line, whichever is first.
 @end deffn
 
-@item @kbd{C-k}
+@item C-k
 @deffn Command widget-kill-line
 Kill to end of field or end of line, whichever is first.
 @end deffn
 
-@item @kbd{M-TAB}
+@item M-@key{TAB}
+@itemx C-M-i
 @deffn Command widget-complete
 Complete the content of the editable field at point.
 @end deffn
 
-@item @kbd{C-m}
+@item C-m
+@itemx @key{RET}
 @deffn Command widget-field-activate
 Invoke the editable field at point.
 @end deffn
 @end table
 
-The following two are commands that can execute widget actions.
+The following two commands can execute the action associated with a
+button widget (e.g., a radio button or checkbox):
+
 @table @kbd
 @item @key{RET}
+@itemx C-m
 @findex widget-button-press
 @deffn Command widget-button-press @var{pos} &optional @var{event}
 Invoke the button at @var{pos}, defaulting to point.
@@ -3262,14 +3267,26 @@ to get a string.  Otherwise, it @code{eval}s it.
 This chapter is about the customization options for the Widget
 library, for the end user.
 
-@deffn Face widget-field-face
-Face used for other editing fields.
+@deffn Face widget-documentation
+Face used for documentation text.
+@end deffn
+
+@deffn Face widget-field
+Face used for editable fields.
 @end deffn
 
-@deffn Face widget-button-face
+@deffn Face widget-button
 Face used for buttons.
 @end deffn
 
+@deffn Face widget-button-pressed
+Face used for pressed buttons.
+@end deffn
+
+@deffn Face widget-inactive
+Face used for inactive widgets.
+@end deffn
+
 @defopt widget-mouse-face
 Face used for highlighting a button when the mouse pointer moves
 across it.
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index b17a10bd4ee..27761dddf04 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -216,6 +216,28 @@ arguments you intend to pass to Emacs):
 
   $ SNAP=1 SNAP_NAME=1 SNAP_REVISION=1 emacs ...
 
+** Emacs built with tree-sitter crashes when some *-ts-mode is turned on.
+
+The crash is in many cases an abort due to run-time detection of stack
+smashing, and it happens when one of the *-ts-mode modes is turned on
+in a buffer.
+
+The reason is that the tree-sitter library changed its Application
+Binary Interface (ABI) between version 0.22.2 and 0.22.4, but did not
+increment the ABI version number.  Therefore, Emacs compiled with
+tree-sitter versions before the change will try to use the shared
+library after the change, and crash due to incompatibilities in the
+ABI.
+
+Until and unless the tree-sitter developers release a library with an
+updated ABI version, the solution is to rebuild Emacs with the actual
+library with which it will be used.  If you cannot rebuild Emacs,
+downgrade your tree-sitter library to version 0.22.2 or older.
+
+The relevant tree-sitter issue is here:
+
+  https://github.com/tree-sitter/tree-sitter/issues/3296
+
 ** Emacs crashes when you try to view a file with complex characters.
 
 One possible reason for this could be a bug in the libotf or the
diff --git a/lisp/progmodes/csharp-mode.el b/lisp/progmodes/csharp-mode.el
index 10ac73d9691..29325ab9632 100644
--- a/lisp/progmodes/csharp-mode.el
+++ b/lisp/progmodes/csharp-mode.el
@@ -689,7 +689,9 @@ compilation and evaluation time conflicts."
      ((parent-is "binary_expression") parent 0)
      ((parent-is "block") parent-bol csharp-ts-mode-indent-offset)
      ((parent-is "local_function_statement") parent-bol 0)
-     ((parent-is "if_statement") parent-bol 0)
+     ((match "block" "if_statement") parent-bol 0)
+     ((match "else" "if_statement") parent-bol 0)
+     ((parent-is "if_statement") parent-bol csharp-ts-mode-indent-offset)
      ((parent-is "for_statement") parent-bol 0)
      ((parent-is "for_each_statement") parent-bol 0)
      ((parent-is "while_statement") parent-bol 0)
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 85279d3e84b..d6c29e5ffc6 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -1206,13 +1206,15 @@ fontified."
 
    :feature 'builtin
    :language 'python
-   `(((identifier) @font-lock-builtin-face
-      (:match ,(rx-to-string
-                `(seq bol
-                      (or ,@python--treesit-builtins
-                          ,@python--treesit-special-attributes)
-                      eol))
-              @font-lock-builtin-face)))
+   `((call function: (identifier) @font-lock-builtin-face
+           (:match ,(rx-to-string
+                     `(seq bol (or ,@python--treesit-builtins) eol))
+                   @font-lock-builtin-face))
+     (attribute attribute: (identifier) @font-lock-builtin-face
+                (:match ,(rx-to-string
+                          `(seq bol
+                                (or ,@python--treesit-special-attributes) eol))
+                        @font-lock-builtin-face)))
 
    :feature 'decorator
    :language 'python
diff --git a/src/dispextern.h b/src/dispextern.h
index 7a942ec79dc..1614a044cbf 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -2422,7 +2422,9 @@ struct it
   bool_bf string_from_display_prop_p : 1;
 
   /* True means `string' comes from a `line-prefix' or `wrap-prefix'
-     property.  */
+     property, and that these properties were already handled, even if
+     their value is not a string.  This is used to avoid processing
+     the same line/wrap prefix more than once for the same glyph row.  */
   bool_bf string_from_prefix_prop_p : 1;
 
   /* True means we are iterating an object that came from a value of a
diff --git a/src/xdisp.c b/src/xdisp.c
index 72a217513ef..85802ec5083 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -24415,6 +24415,7 @@ push_prefix_prop (struct it *it, Lisp_Object prop)
     {
       it->method = GET_FROM_STRETCH;
       it->object = prop;
+      it->string_from_prefix_prop_p = true;
     }
 #ifdef HAVE_WINDOW_SYSTEM
   else if (IMAGEP (prop))
@@ -24422,6 +24423,7 @@ push_prefix_prop (struct it *it, Lisp_Object prop)
       it->what = IT_IMAGE;
       it->image_id = lookup_image (it->f, prop, it->face_id);
       it->method = GET_FROM_IMAGE;
+      it->string_from_prefix_prop_p = true;
     }
 #endif /* HAVE_WINDOW_SYSTEM */
   else
diff --git a/test/lisp/progmodes/csharp-mode-resources/indent-ts.erts 
b/test/lisp/progmodes/csharp-mode-resources/indent-ts.erts
new file mode 100644
index 00000000000..3cb23608270
--- /dev/null
+++ b/test/lisp/progmodes/csharp-mode-resources/indent-ts.erts
@@ -0,0 +1,51 @@
+Code:
+  (lambda ()
+    (csharp-ts-mode)
+    (indent-region (point-min) (point-max)))
+
+Point-Char: |
+
+Name: Indent single statement body for if/else. (bug#70345)
+
+=-=
+
+int x;
+int y;
+
+if (true)
+    x = 2;
+
+if (true)
+{
+    x = 2;
+}
+
+if (true)
+    x = 2;
+else
+    y = 2;
+
+if (true)
+{
+    x = 2;
+}
+else
+{
+    y = 2;
+}
+
+if (true)
+    x = 2;
+else
+{
+    y = 2;
+}
+
+if (true)
+{
+    x = 2;
+}
+else
+    y = 2;
+
+=-=-=
diff --git a/test/lisp/progmodes/csharp-mode-tests.el 
b/test/lisp/progmodes/csharp-mode-tests.el
index f50fabf5836..2878fa601f2 100644
--- a/test/lisp/progmodes/csharp-mode-tests.el
+++ b/test/lisp/progmodes/csharp-mode-tests.el
@@ -26,5 +26,8 @@
 (ert-deftest csharp-mode-test-indentation ()
   (ert-test-erts-file (ert-resource-file "indent.erts")))
 
+(ert-deftest csharp-ts-mode-test-indentation ()
+  (ert-test-erts-file (ert-resource-file "indent-ts.erts")))
+
 (provide 'csharp-mode-tests)
 ;;; csharp-mode-tests.el ends here



reply via email to

[Prev in Thread] Current Thread [Next in Thread]