Merge from origin/emacs-29

f37f01b504 Fix a typo in Introduction to Emacs Lisp (bug#70571).
d8687fd6cd Fix last change
494dfd9cf2 Fix indentation of if/else in 'csharp-ts-mode' (bug#70345)
1cc6322e61 ; * etc/PROBLEMS: Document crashes due to tree-sitter ABI...
42766f95e5 * build-aux/make-info-dir: Avoid bashism (bug#70484).
81476fa19e Improve documentation of selection and navigation in *xre...
2a53351492 Fix Widget manual typos, markup and omissions (bug#70502)
90be3015b4 ; Document bookmark fringe mark in the user manual
afd0b548fc Fix python-ts-mode built-in functions and attributes (bug...
dc720decc3 Fix markup and indexing in the Calendar chapter of user m...
f593bf79a9 Fix the user manual for `calendar-time-zone-style'
aed2b7a3d8 Avoid assertion violations in 'push_prefix_prop'
c929532b46 Remove ert-equal-including-properties from manual
e3aae5fd38 ; Document 'filtered-frame-list'
scratch/lisp-func-type-decls
Eli Zaretskii 2024-04-27 06:23:46 -04:00
commit 687c4137fa
15 changed files with 346 additions and 155 deletions

View File

@ -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]
}
' "${@?}"
' "$@"

View File

@ -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}.

View File

@ -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}

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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-button-face
@deffn Face widget-field
Face used for editable fields.
@end deffn
@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.

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;
=-=-=

View File

@ -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