diff options
Diffstat (limited to 'lispref')
-rw-r--r-- | lispref/ChangeLog | 50 | ||||
-rw-r--r-- | lispref/Makefile.in | 1 | ||||
-rw-r--r-- | lispref/anti.texi | 4 | ||||
-rw-r--r-- | lispref/calendar.texi | 996 | ||||
-rw-r--r-- | lispref/display.texi | 52 | ||||
-rw-r--r-- | lispref/elisp.texi | 2 | ||||
-rw-r--r-- | lispref/keymaps.texi | 10 | ||||
-rw-r--r-- | lispref/makefile.w32-in | 1 | ||||
-rw-r--r-- | lispref/markers.texi | 6 | ||||
-rw-r--r-- | lispref/minibuf.texi | 5 | ||||
-rw-r--r-- | lispref/modes.texi | 2 | ||||
-rw-r--r-- | lispref/os.texi | 2 | ||||
-rw-r--r-- | lispref/positions.texi | 6 | ||||
-rw-r--r-- | lispref/text.texi | 35 | ||||
-rw-r--r-- | lispref/tips.texi | 7 | ||||
-rw-r--r-- | lispref/vol1.texi | 2 | ||||
-rw-r--r-- | lispref/vol2.texi | 2 |
17 files changed, 154 insertions, 1029 deletions
diff --git a/lispref/ChangeLog b/lispref/ChangeLog index 268304e5d4c..7f22ad2e485 100644 --- a/lispref/ChangeLog +++ b/lispref/ChangeLog @@ -1,3 +1,53 @@ +2005-03-29 Chong Yidong <cyd@stupidchicken.com> + + * text.texi (Buffer Contents): Add filter-buffer-substring and + buffer-substring-filters. + +2005-03-26 Chong Yidong <cyd@stupidchicken.com> + + * anti.texi (Antinews): Mention `G' interactive code. + + * tips.texi (Compilation Tips): Mention benchmark.el. + +2005-03-27 Luc Teirlinck <teirllm@auburn.edu> + + * modes.texi (Other Font Lock Variables): `font-lock-fontify-block' + is now bound to M-o M-o. + + * keymaps.texi (Prefix Keys): `facemenu-keymap' is now on M-o. + +2005-03-26 Glenn Morris <gmorris@ast.cam.ac.uk> + + * calendar.texi: Delete file (and move contents to emacs-xtra.texi + in the Emacs Manual). + * Makefile.in (srcs): Remove calendar.texi. + * makefile.w32-in (srcs): Remove calendar.texi. + * display.texi (Display): Change name of next node. + * os.texi (System In): Change name of previous node. + * elisp.texi (Top): Remove Calendar references. + * vol1.texi (Top): Remove Calendar references. + * vol2.texi (Top): Remove Calendar references. + +2005-03-25 Richard M. Stallman <rms@gnu.org> + + * display.texi (Standard Faces, Fringe Bitmaps, Customizing Bitmaps): + Cleanup previous change. + +2005-03-25 Chong Yidong <cyd@stupidchicken.com> + + * display.texi (Face Attributes): Faces earlier in an :inherit + list take precedence. + (Scroll Bars): Fix description of vertical-scroll-bars. + Document frame-current-scroll-bars and window-current-scroll-bars. + + * markers.texi (The Mark): Document temporary Transient Mark mode. + + * minibuf.texi (Reading File Names): Document + read-file-name-completion-ignore-case. + + * positions.texi (Screen Lines): Document nil for width argument + to compute-motion. + 2005-03-23 Kim F. Storm <storm@cua.dk> * display.texi (Standard Faces): Other faces used in the fringe diff --git a/lispref/Makefile.in b/lispref/Makefile.in index 770ffd5769a..2fab86ab876 100644 --- a/lispref/Makefile.in +++ b/lispref/Makefile.in @@ -46,7 +46,6 @@ srcs = \ $(srcdir)/back.texi \ $(srcdir)/backups.texi \ $(srcdir)/buffers.texi \ - $(srcdir)/calendar.texi \ $(srcdir)/commands.texi \ $(srcdir)/compile.texi \ $(srcdir)/control.texi \ diff --git a/lispref/anti.texi b/lispref/anti.texi index a744ddf421b..458409f2603 100644 --- a/lispref/anti.texi +++ b/lispref/anti.texi @@ -238,6 +238,10 @@ alists, obarrays, and functions.) In addition, the function @code{test-completion} is no longer available. @item +The @samp{G} interactive code character is no longer supported. +Use @samp{F} instead. + +@item Arbitrary Lisp functions can no longer be recorded into @code{buffer-undo-list}. As a consequence, @code{yank-undo-function} is obsolete, and has been removed. diff --git a/lispref/calendar.texi b/lispref/calendar.texi deleted file mode 100644 index 5c63d6f9591..00000000000 --- a/lispref/calendar.texi +++ /dev/null @@ -1,996 +0,0 @@ -@c -*-texinfo-*- -@c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990, 1991, 1992, 1993, 1995, 1998 Free Software Foundation, Inc. -@c See the file elisp.texi for copying conditions. -@node Calendar, System Interface, Display, Top -@chapter Customizing the Calendar and Diary - - There are many customizations that you can use to make the calendar and -diary suit your personal tastes. - -@menu -* Calendar Customizing:: Defaults you can set. -* Holiday Customizing:: Defining your own holidays. -* Date Display Format:: Changing the format. -* Time Display Format:: Changing the format. -* Daylight Savings:: Changing the default. -* Diary Customizing:: Defaults you can set. -* Hebrew/Islamic Entries:: How to obtain them. -* Fancy Diary Display:: Enhancing the diary display, sorting entries, - using included diary files. -* Sexp Diary Entries:: Fancy things you can do. -* Appt Customizing:: Customizing appointment reminders. -@end menu - -@node Calendar Customizing -@section Customizing the Calendar -@vindex view-diary-entries-initially - - If you set the variable @code{view-diary-entries-initially} to -@code{t}, calling up the calendar automatically displays the diary -entries for the current date as well. The diary dates appear only if -the current date is visible. If you add both of the following lines to -your init file:@refill - -@example -(setq view-diary-entries-initially t) -(calendar) -@end example - -@noindent -this displays both the calendar and diary windows whenever you start Emacs. - -@vindex view-calendar-holidays-initially - Similarly, if you set the variable -@code{view-calendar-holidays-initially} to @code{t}, entering the -calendar automatically displays a list of holidays for the current -three-month period. The holiday list appears in a separate -window. - -@vindex mark-diary-entries-in-calendar - You can set the variable @code{mark-diary-entries-in-calendar} to -@code{t} in order to mark any dates with diary entries. This takes -effect whenever the calendar window contents are recomputed. There are -two ways of marking these dates: by changing the face (@pxref{Faces}), -or by placing a plus sign (@samp{+}) beside the date. - -@vindex mark-holidays-in-calendar - Similarly, setting the variable @code{mark-holidays-in-calendar} to -@code{t} marks holiday dates, either with a change of face or with an -asterisk (@samp{*}). - -@vindex calendar-holiday-marker -@vindex diary-entry-marker - The variable @code{calendar-holiday-marker} specifies how to mark a -date as being a holiday. Its value may be a single-character string -to insert next to the date, or a face name to use for displaying the -date. Likewise, the variable @code{diary-entry-marker} specifies how -to mark a date that has diary entries. The calendar creates faces -named @code{holiday-face} and @code{diary-face} for these purposes; -those symbols are the default values of these variables. - -@vindex calendar-load-hook - The variable @code{calendar-load-hook} is a normal hook run when the -calendar package is first loaded (before actually starting to display -the calendar). - -@vindex initial-calendar-window-hook - Starting the calendar runs the normal hook -@code{initial-calendar-window-hook}. Recomputation of the calendar -display does not run this hook. But if you leave the calendar with the -@kbd{q} command and reenter it, the hook runs again.@refill - -@vindex today-visible-calendar-hook - The variable @code{today-visible-calendar-hook} is a normal hook run -after the calendar buffer has been prepared with the calendar when the -current date is visible in the window. One use of this hook is to -replace today's date with asterisks; to do that, use the hook function -@code{calendar-star-date}. - -@findex calendar-star-date -@example -(add-hook 'today-visible-calendar-hook 'calendar-star-date) -@end example - -@noindent -Another standard hook function marks the current date, either by -changing its face or by adding an asterisk. Here's how to use it: - -@findex calendar-mark-today -@example -(add-hook 'today-visible-calendar-hook 'calendar-mark-today) -@end example - -@noindent -@vindex calendar-today-marker -The variable @code{calendar-today-marker} specifies how to mark -today's date. Its value should be a single-character string to insert -next to the date or a face name to use for displaying the date. A -face named @code{calendar-today-face} is provided for this purpose; -that symbol is the default for this variable. - -@vindex today-invisible-calendar-hook -@noindent - A similar normal hook, @code{today-invisible-calendar-hook} is run if -the current date is @emph{not} visible in the window. - -@vindex calendar-move-hook - Each of the calendar cursor motion commands runs the hook -@code{calendar-move-hook} after it moves the cursor. - -@node Holiday Customizing -@section Customizing the Holidays - -@vindex calendar-holidays -@vindex christian-holidays -@vindex hebrew-holidays -@vindex islamic-holidays - Emacs knows about holidays defined by entries on one of several lists. -You can customize these lists of holidays to your own needs, adding or -deleting holidays. The lists of holidays that Emacs uses are for -general holidays (@code{general-holidays}), local holidays -(@code{local-holidays}), Christian holidays (@code{christian-holidays}), -Hebrew (Jewish) holidays (@code{hebrew-holidays}), Islamic (Muslim) -holidays (@code{islamic-holidays}), and other holidays -(@code{other-holidays}). - -@vindex general-holidays - The general holidays are, by default, holidays common throughout the -United States. To eliminate these holidays, set @code{general-holidays} -to @code{nil}. - -@vindex local-holidays - There are no default local holidays (but sites may supply some). You -can set the variable @code{local-holidays} to any list of holidays, as -described below. - -@vindex all-christian-calendar-holidays -@vindex all-hebrew-calendar-holidays -@vindex all-islamic-calendar-holidays - By default, Emacs does not include all the holidays of the religions -that it knows, only those commonly found in secular calendars. For a -more extensive collection of religious holidays, you can set any (or -all) of the variables @code{all-christian-calendar-holidays}, -@code{all-hebrew-calendar-holidays}, or -@code{all-islamic-calendar-holidays} to @code{t}. If you want to -eliminate the religious holidays, set any or all of the corresponding -variables @code{christian-holidays}, @code{hebrew-holidays}, and -@code{islamic-holidays} to @code{nil}.@refill - -@vindex other-holidays - You can set the variable @code{other-holidays} to any list of -holidays. This list, normally empty, is intended for individual use. - -@cindex holiday forms - Each of the lists (@code{general-holidays}, @code{local-holidays}, -@code{christian-holidays}, @code{hebrew-holidays}, -@code{islamic-holidays}, and @code{other-holidays}) is a list of -@dfn{holiday forms}, each holiday form describing a holiday (or -sometimes a list of holidays). - - Here is a table of the possible kinds of holiday form. Day numbers -and month numbers count starting from 1, but ``dayname'' numbers -count Sunday as 0. The element @var{string} is always the -name of the holiday, as a string. - -@table @code -@item (holiday-fixed @var{month} @var{day} @var{string}) -A fixed date on the Gregorian calendar. - -@item (holiday-float @var{month} @var{dayname} @var{k} @var{string}) -The @var{k}th @var{dayname} in @var{month} on the Gregorian calendar -(@var{dayname}=0 for Sunday, and so on); negative @var{k} means count back -from the end of the month. - -@item (holiday-hebrew @var{month} @var{day} @var{string}) -A fixed date on the Hebrew calendar. - -@item (holiday-islamic @var{month} @var{day} @var{string}) -A fixed date on the Islamic calendar. - -@item (holiday-julian @var{month} @var{day} @var{string}) -A fixed date on the Julian calendar. - -@item (holiday-sexp @var{sexp} @var{string}) -A date calculated by the Lisp expression @var{sexp}. The expression -should use the variable @code{year} to compute and return the date of a -holiday, or @code{nil} if the holiday doesn't happen this year. The -value of @var{sexp} must represent the date as a list of the form -@code{(@var{month} @var{day} @var{year})}. - -@item (if @var{condition} @var{holiday-form}) -A holiday that happens only if @var{condition} is true. - -@item (@var{function} @r{[}@var{args}@r{]}) -A list of dates calculated by the function @var{function}, called with -arguments @var{args}. -@end table - - For example, suppose you want to add Bastille Day, celebrated in -France on July 14. You can do this as follows: - -@smallexample -(setq other-holidays '((holiday-fixed 7 14 "Bastille Day"))) -@end smallexample - -@noindent -The holiday form @code{(holiday-fixed 7 14 "Bastille Day")} specifies the -fourteenth day of the seventh month (July). - - Many holidays occur on a specific day of the week, at a specific time -of month. Here is a holiday form describing Hurricane Supplication Day, -celebrated in the Virgin Islands on the fourth Monday in August: - -@smallexample -(holiday-float 8 1 4 "Hurricane Supplication Day") -@end smallexample - -@noindent -Here the 8 specifies August, the 1 specifies Monday (Sunday is 0, -Tuesday is 2, and so on), and the 4 specifies the fourth occurrence in -the month (1 specifies the first occurrence, 2 the second occurrence, -@minus{}1 the last occurrence, @minus{}2 the second-to-last occurrence, and -so on). - - You can specify holidays that occur on fixed days of the Hebrew, -Islamic, and Julian calendars too. For example, - -@smallexample -(setq other-holidays - '((holiday-hebrew 10 2 "Last day of Hanukkah") - (holiday-islamic 3 12 "Mohammed's Birthday") - (holiday-julian 4 2 "Jefferson's Birthday"))) -@end smallexample - -@noindent -adds the last day of Hanukkah (since the Hebrew months are numbered with -1 starting from Nisan), the Islamic feast celebrating Mohammed's -birthday (since the Islamic months are numbered from 1 starting with -Muharram), and Thomas Jefferson's birthday, which is 2 April 1743 on the -Julian calendar. - - To include a holiday conditionally, use either Emacs Lisp's @code{if} or the -@code{holiday-sexp} form. For example, American presidential elections -occur on the first Tuesday after the first Monday in November of years -divisible by 4: - -@smallexample -(holiday-sexp '(if (= 0 (% year 4)) - (calendar-gregorian-from-absolute - (1+ (calendar-dayname-on-or-before - 1 (+ 6 (calendar-absolute-from-gregorian - (list 11 1 year))))))) - "US Presidential Election") -@end smallexample - -@noindent -or - -@smallexample -(if (= 0 (% displayed-year 4)) - (fixed 11 - (extract-calendar-day - (calendar-gregorian-from-absolute - (1+ (calendar-dayname-on-or-before - 1 (+ 6 (calendar-absolute-from-gregorian - (list 11 1 displayed-year))))))) - "US Presidential Election")) -@end smallexample - - Some holidays just don't fit into any of these forms because special -calculations are involved in their determination. In such cases you -must write a Lisp function to do the calculation. To include eclipses, -for example, add @code{(eclipses)} to @code{other-holidays} -and write an Emacs Lisp function @code{eclipses} that returns a -(possibly empty) list of the relevant Gregorian dates among the range -visible in the calendar window, with descriptive strings, like this: - -@smallexample -(((6 27 1991) "Lunar Eclipse") ((7 11 1991) "Solar Eclipse") ... ) -@end smallexample - -@node Date Display Format -@section Date Display Format -@vindex calendar-date-display-form - - You can customize the manner of displaying dates in the diary, in mode -lines, and in messages by setting @code{calendar-date-display-form}. -This variable holds a list of expressions that can involve the variables -@code{month}, @code{day}, and @code{year}, which are all numbers in -string form, and @code{monthname} and @code{dayname}, which are both -alphabetic strings. In the American style, the default value of this -list is as follows: - -@smallexample -((if dayname (concat dayname ", ")) monthname " " day ", " year) -@end smallexample - -@noindent -while in the European style this value is the default: - -@smallexample -((if dayname (concat dayname ", ")) day " " monthname " " year) -@end smallexample - -@noindent -The ISO standard date representation is this: - -@smallexample -(year "-" month "-" day) -@end smallexample - -@noindent -This specifies a typical American format: - -@smallexample -(month "/" day "/" (substring year -2)) -@end smallexample - -@node Time Display Format -@section Time Display Format -@vindex calendar-time-display-form - - The calendar and diary by default display times of day in the -conventional American style with the hours from 1 through 12, minutes, -and either @samp{am} or @samp{pm}. If you prefer the European style, -also known in the US as military, in which the hours go from 00 to 23, -you can alter the variable @code{calendar-time-display-form}. This -variable is a list of expressions that can involve the variables -@code{12-hours}, @code{24-hours}, and @code{minutes}, which are all -numbers in string form, and @code{am-pm} and @code{time-zone}, which are -both alphabetic strings. The default value of -@code{calendar-time-display-form} is as follows: - -@smallexample -(12-hours ":" minutes am-pm - (if time-zone " (") time-zone (if time-zone ")")) -@end smallexample - -@noindent -Here is a value that provides European style times: - -@smallexample -(24-hours ":" minutes - (if time-zone " (") time-zone (if time-zone ")")) -@end smallexample - -@node Daylight Savings -@section Daylight Savings Time -@cindex daylight savings time - - Emacs understands the difference between standard time and daylight -savings time---the times given for sunrise, sunset, solstices, -equinoxes, and the phases of the moon take that into account. The rules -for daylight savings time vary from place to place and have also varied -historically from year to year. To do the job properly, Emacs needs to -know which rules to use. - - Some operating systems keep track of the rules that apply to the place -where you are; on these systems, Emacs gets the information it needs -from the system automatically. If some or all of this information is -missing, Emacs fills in the gaps with the rules currently used in -Cambridge, Massachusetts, which is the center of GNU's world. - - -@vindex calendar-daylight-savings-starts -@vindex calendar-daylight-savings-ends - If the default choice of rules is not appropriate for your location, -you can tell Emacs the rules to use by setting the variables -@code{calendar-daylight-savings-starts} and -@code{calendar-daylight-savings-ends}. Their values should be Lisp -expressions that refer to the variable @code{year}, and evaluate to the -Gregorian date on which daylight savings time starts or (respectively) -ends, in the form of a list @code{(@var{month} @var{day} @var{year})}. -The values should be @code{nil} if your area does not use daylight -savings time. - - Emacs uses these expressions to determine the start and end dates of -daylight savings time as holidays and for correcting times of day in the -solar and lunar calculations. - - The values for Cambridge, Massachusetts are as follows: - -@example -@group -(calendar-nth-named-day 1 0 4 year) -(calendar-nth-named-day -1 0 10 year) -@end group -@end example - -@noindent -i.e., the first 0th day (Sunday) of the fourth month (April) in -the year specified by @code{year}, and the last Sunday of the tenth month -(October) of that year. If daylight savings time were -changed to start on October 1, you would set -@code{calendar-daylight-savings-starts} to this: - -@example -(list 10 1 year) -@end example - - For a more complex example, suppose daylight savings time begins on -the first of Nisan on the Hebrew calendar. You should set -@code{calendar-daylight-savings-starts} to this value: - -@example -(calendar-gregorian-from-absolute - (calendar-absolute-from-hebrew - (list 1 1 (+ year 3760)))) -@end example - -@noindent -because Nisan is the first month in the Hebrew calendar and the Hebrew -year differs from the Gregorian year by 3760 at Nisan. - - If there is no daylight savings time at your location, or if you want -all times in standard time, set @code{calendar-daylight-savings-starts} -and @code{calendar-daylight-savings-ends} to @code{nil}. - -@vindex calendar-daylight-time-offset - The variable @code{calendar-daylight-time-offset} specifies the -difference between daylight savings time and standard time, measured in -minutes. The value for Cambridge is 60. - -@vindex calendar-daylight-savings-starts-time -@vindex calendar-daylight-savings-ends-time - The variable @code{calendar-daylight-savings-starts-time} and the -variable @code{calendar-daylight-savings-ends-time} specify the number -of minutes after midnight local time when the transition to and from -daylight savings time should occur. For Cambridge, both variables' -values are 120. - -@node Diary Customizing -@section Customizing the Diary - -@vindex holidays-in-diary-buffer - Ordinarily, the mode line of the diary buffer window indicates any -holidays that fall on the date of the diary entries. The process of -checking for holidays can take several seconds, so including holiday -information delays the display of the diary buffer noticeably. If you'd -prefer to have a faster display of the diary buffer but without the -holiday information, set the variable @code{holidays-in-diary-buffer} to -@code{nil}.@refill - -@vindex number-of-diary-entries - The variable @code{number-of-diary-entries} controls the number of -days of diary entries to be displayed at one time. It affects the -initial display when @code{view-diary-entries-initially} is @code{t}, as -well as the command @kbd{M-x diary}. For example, the default value is -1, which says to display only the current day's diary entries. If the -value is 2, both the current day's and the next day's entries are -displayed. The value can also be a vector of seven elements: for -example, if the value is @code{[0 2 2 2 2 4 1]} then no diary entries -appear on Sunday, the current date's and the next day's diary entries -appear Monday through Thursday, Friday through Monday's entries appear -on Friday, while on Saturday only that day's entries appear. - -@vindex print-diary-entries-hook -@findex print-diary-entries - The variable @code{print-diary-entries-hook} is a normal hook run -after preparation of a temporary buffer containing just the diary -entries currently visible in the diary buffer. (The other, irrelevant -diary entries are really absent from the temporary buffer; in the diary -buffer, they are merely hidden.) The default value of this hook does -the printing with the command @code{lpr-buffer}. If you want to use a -different command to do the printing, just change the value of this -hook. Other uses might include, for example, rearranging the lines into -order by day and time. - -@vindex diary-date-forms - You can customize the form of dates in your diary file, if neither the -standard American nor European styles suits your needs, by setting the -variable @code{diary-date-forms}. This variable is a list of patterns -for recognizing a date. Each date pattern is a list whose elements may -be regular expressions (@pxref{Regular Expressions}) or the symbols -@code{month}, @code{day}, @code{year}, @code{monthname}, and -@code{dayname}. All these elements serve as patterns that match certain -kinds of text in the diary file. In order for the date pattern, as a -whole, to match, all of its elements must match consecutively. - - A regular expression in a date pattern matches in its usual fashion, -using the standard syntax table altered so that @samp{*} is a word -constituent. - - The symbols @code{month}, @code{day}, @code{year}, @code{monthname}, -and @code{dayname} match the month number, day number, year number, -month name, and day name of the date being considered. The symbols that -match numbers allow leading zeros; those that match names allow -three-letter abbreviations and capitalization. All the symbols can -match @samp{*}; since @samp{*} in a diary entry means ``any day'', ``any -month'', and so on, it should match regardless of the date being -considered. - - The default value of @code{diary-date-forms} in the American style is -this: - -@example -((month "/" day "[^/0-9]") - (month "/" day "/" year "[^0-9]") - (monthname " *" day "[^,0-9]") - (monthname " *" day ", *" year "[^0-9]") - (dayname "\\W")) -@end example - - The date patterns in the list must be @emph{mutually exclusive} and -must not match any portion of the diary entry itself, just the date and -one character of whitespace. If, to be mutually exclusive, the pattern -must match a portion of the diary entry text---beyond the whitespace -that ends the date---then the first element of the date pattern -@emph{must} be @code{backup}. This causes the date recognizer to back -up to the beginning of the current word of the diary entry, after -finishing the match. Even if you use @code{backup}, the date pattern -must absolutely not match more than a portion of the first word of the -diary entry. The default value of @code{diary-date-forms} in the -European style is this list: - -@example -((day "/" month "[^/0-9]") - (day "/" month "/" year "[^0-9]") - (backup day " *" monthname "\\W+\\<[^*0-9]") - (day " *" monthname " *" year "[^0-9]") - (dayname "\\W")) -@end example - -@noindent -Notice the use of @code{backup} in the third pattern, because it needs -to match part of a word beyond the date itself to distinguish it from -the fourth pattern. - -@node Hebrew/Islamic Entries -@section Hebrew- and Islamic-Date Diary Entries - - Your diary file can have entries based on Hebrew or Islamic dates, as -well as entries based on the world-standard Gregorian calendar. -However, because recognition of such entries is time-consuming and most -people don't use them, you must explicitly enable their use. If you -want the diary to recognize Hebrew-date diary entries, for example, -you must do this: - -@vindex nongregorian-diary-listing-hook -@vindex nongregorian-diary-marking-hook -@findex list-hebrew-diary-entries -@findex mark-hebrew-diary-entries -@smallexample -(add-hook 'nongregorian-diary-listing-hook 'list-hebrew-diary-entries) -(add-hook 'nongregorian-diary-marking-hook 'mark-hebrew-diary-entries) -@end smallexample - -@noindent -If you want Islamic-date entries, do this: - -@findex list-islamic-diary-entries -@findex mark-islamic-diary-entries -@smallexample -(add-hook 'nongregorian-diary-listing-hook 'list-islamic-diary-entries) -(add-hook 'nongregorian-diary-marking-hook 'mark-islamic-diary-entries) -@end smallexample - - Hebrew- and Islamic-date diary entries have the same formats as -Gregorian-date diary entries, except that @samp{H} precedes a Hebrew -date and @samp{I} precedes an Islamic date. Moreover, because the -Hebrew and Islamic month names are not uniquely specified by the first -three letters, you may not abbreviate them. For example, a diary entry -for the Hebrew date Heshvan 25 could look like this: - -@smallexample -HHeshvan 25 Happy Hebrew birthday! -@end smallexample - -@noindent -and would appear in the diary for any date that corresponds to Heshvan 25 -on the Hebrew calendar. And here is an Islamic-date diary entry that matches -Dhu al-Qada 25: - -@smallexample -IDhu al-Qada 25 Happy Islamic birthday! -@end smallexample - - As with Gregorian-date diary entries, Hebrew- and Islamic-date entries -are nonmarking if they are preceded with an ampersand (@samp{&}). - - Here is a table of commands used in the calendar to create diary entries -that match the selected date and other dates that are similar in the Hebrew -or Islamic calendar: - -@table @kbd -@item i h d -Add a diary entry for the Hebrew date corresponding to the selected date -(@code{insert-hebrew-diary-entry}). -@item i h m -Add a diary entry for the day of the Hebrew month corresponding to the -selected date (@code{insert-monthly-hebrew-diary-entry}). This diary -entry matches any date that has the same Hebrew day-within-month as the -selected date. -@item i h y -Add a diary entry for the day of the Hebrew year corresponding to the -selected date (@code{insert-yearly-hebrew-diary-entry}). This diary -entry matches any date which has the same Hebrew month and day-within-month -as the selected date. -@item i i d -Add a diary entry for the Islamic date corresponding to the selected date -(@code{insert-islamic-diary-entry}). -@item i i m -Add a diary entry for the day of the Islamic month corresponding to the -selected date (@code{insert-monthly-islamic-diary-entry}). -@item i i y -Add a diary entry for the day of the Islamic year corresponding to the -selected date (@code{insert-yearly-islamic-diary-entry}). -@end table - -@findex insert-hebrew-diary-entry -@findex insert-monthly-hebrew-diary-entry -@findex insert-yearly-hebrew-diary-entry -@findex insert-islamic-diary-entry -@findex insert-monthly-islamic-diary-entry -@findex insert-yearly-islamic-diary-entry - These commands work much like the corresponding commands for ordinary -diary entries: they apply to the date that point is on in the calendar -window, and what they do is insert just the date portion of a diary entry -at the end of your diary file. You must then insert the rest of the -diary entry. - -@node Fancy Diary Display -@section Fancy Diary Display -@vindex diary-display-hook -@findex simple-diary-display - - Diary display works by preparing the diary buffer and then running the -hook @code{diary-display-hook}. The default value of this hook -(@code{simple-diary-display}) hides the irrelevant diary entries and -then displays the buffer. However, if you specify the hook as follows, - -@cindex diary buffer -@findex fancy-diary-display -@example -(add-hook 'diary-display-hook 'fancy-diary-display) -@end example - -@noindent -this enables fancy diary display. It displays diary entries and -holidays by copying them into a special buffer that exists only for the -sake of display. Copying to a separate buffer provides an opportunity -to change the displayed text to make it prettier---for example, to sort -the entries by the dates they apply to. - - As with simple diary display, you can print a hard copy of the buffer -with @code{print-diary-entries}. To print a hard copy of a day-by-day -diary for a week, position point on Sunday of that week, type -@kbd{7 d}, and then do @kbd{M-x print-diary-entries}. As usual, the -inclusion of the holidays slows down the display slightly; you can speed -things up by setting the variable @code{holidays-in-diary-buffer} to -@code{nil}. - -@vindex diary-list-include-blanks - Ordinarily, the fancy diary buffer does not show days for which there are -no diary entries, even if that day is a holiday. If you want such days to be -shown in the fancy diary buffer, set the variable -@code{diary-list-include-blanks} to @code{t}.@refill - -@cindex sorting diary entries - If you use the fancy diary display, you can use the normal hook -@code{list-diary-entries-hook} to sort each day's diary entries by their -time of day. Here's how: - -@findex sort-diary-entries -@example -(add-hook 'list-diary-entries-hook 'sort-diary-entries t) -@end example - -@noindent -For each day, this sorts diary entries that begin with a recognizable -time of day according to their times. Diary entries without times come -first within each day. - - Fancy diary display also has the ability to process included diary -files. This permits a group of people to share a diary file for events -that apply to all of them. Lines in the diary file of this form: - -@smallexample -#include "@var{filename}" -@end smallexample - -@noindent -includes the diary entries from the file @var{filename} in the fancy -diary buffer. The include mechanism is recursive, so that included files -can include other files, and so on; you must be careful not to have a -cycle of inclusions, of course. Here is how to enable the include -facility: - -@vindex list-diary-entries-hook -@vindex mark-diary-entries-hook -@findex include-other-diary-files -@findex mark-included-diary-files -@smallexample -(add-hook 'list-diary-entries-hook 'include-other-diary-files) -(add-hook 'mark-diary-entries-hook 'mark-included-diary-files) -@end smallexample - -The include mechanism works only with the fancy diary display, because -ordinary diary display shows the entries directly from your diary file. - -@node Sexp Diary Entries -@section Sexp Entries and the Fancy Diary Display -@cindex sexp diary entries - - Sexp diary entries allow you to do more than just have complicated -conditions under which a diary entry applies. If you use the fancy -diary display, sexp entries can generate the text of the entry depending -on the date itself. For example, an anniversary diary entry can insert -the number of years since the anniversary date into the text of the -diary entry. Thus the @samp{%d} in this dairy entry: - -@findex diary-anniversary -@smallexample -%%(diary-anniversary 10 31 1948) Arthur's birthday (%d years old) -@end smallexample - -@noindent -gets replaced by the age, so on October 31, 1990 the entry appears in -the fancy diary buffer like this: - -@smallexample -Arthur's birthday (42 years old) -@end smallexample - -@noindent -If the diary file instead contains this entry: - -@smallexample -%%(diary-anniversary 10 31 1948) Arthur's %d%s birthday -@end smallexample - -@noindent -the entry in the fancy diary buffer for October 31, 1990 appears like this: - -@smallexample -Arthur's 42nd birthday -@end smallexample - - Similarly, cyclic diary entries can interpolate the number of repetitions -that have occurred: - -@findex diary-cyclic -@smallexample -%%(diary-cyclic 50 1 1 1990) Renew medication (%d%s time) -@end smallexample - -@noindent -looks like this: - -@smallexample -Renew medication (5th time) -@end smallexample - -@noindent -in the fancy diary display on September 8, 1990. - - There is an early reminder diary sexp that includes its entry in the -diary not only on the date of occurrence, but also on earlier dates. -For example, if you want a reminder a week before your anniversary, you -can use - -@findex diary-remind -@smallexample -%%(diary-remind '(diary-anniversary 12 22 1968) 7) Ed's anniversary -@end smallexample - -@noindent -and the fancy diary will show -@smallexample -Ed's anniversary -@end smallexample -@noindent -both on December 15 and on December 22. - -@findex diary-date - The function @code{diary-date} applies to dates described by a month, -day, year combination, each of which can be an integer, a list of -integers, or @code{t}. The value @code{t} means all values. For -example, - -@smallexample -%%(diary-date '(10 11 12) 22 t) Rake leaves -@end smallexample - -@noindent -causes the fancy diary to show - -@smallexample -Rake leaves -@end smallexample - -@noindent -on October 22, November 22, and December 22 of every year. - -@findex diary-float - The function @code{diary-float} allows you to describe diary entries -that apply to dates like the third Friday of November, or the last -Tuesday in April. The parameters are the @var{month}, @var{dayname}, -and an index @var{n}. The entry appears on the @var{n}th @var{dayname} -of @var{month}, where @var{dayname}=0 means Sunday, 1 means Monday, and -so on. If @var{n} is negative it counts backward from the end of -@var{month}. The value of @var{month} can be a list of months, a single -month, or @code{t} to specify all months. You can also use an optional -parameter @var{day} to specify the @var{n}th @var{dayname} of -@var{month} on or after/before @var{day}; the value of @var{day} defaults -to 1 if @var{n} is positive and to the last day of @var{month} if -@var{n} is negative. For example, - -@smallexample -%%(diary-float t 1 -1) Pay rent -@end smallexample - -@noindent -causes the fancy diary to show - -@smallexample -Pay rent -@end smallexample - -@noindent -on the last Monday of every month. - - The generality of sexp diary entries lets you specify any diary -entry that you can describe algorithmically. A sexp diary entry -contains an expression that computes whether the entry applies to any -given date. If its value is non-@code{nil}, the entry applies to that -date; otherwise, it does not. The expression can use the variable -@code{date} to find the date being considered; its value is a list -(@var{month} @var{day} @var{year}) that refers to the Gregorian -calendar. - - The sexp diary entry applies to a date when the expression's value -is non-@code{nil}, but some values have more specific meanings. If -the value is a string, that string is a description of the event which -occurs on that date. The value can also have the form -@code{(@var{mark} . @var{string})}; then @var{mark} specifies how to -mark the date in the calendar, and @var{string} is the description of -the event. If @var{mark} is a single-character string, that character -appears next to the date in the calendar. If @var{mark} is a face -name, the date is displayed in that face. If @var{mark} is -@code{nil}, that specifies no particular highlighting for the date. - - Suppose you get paid on the 21st of the month if it is a weekday, and -on the Friday before if the 21st is on a weekend. Here is how to write -a sexp diary entry that matches those dates: - -@smallexample -&%%(let ((dayname (calendar-day-of-week date)) - (day (car (cdr date)))) - (or (and (= day 21) (memq dayname '(1 2 3 4 5))) - (and (memq day '(19 20)) (= dayname 5))) - ) Pay check deposited -@end smallexample - - The following sexp diary entries take advantage of the ability (in the fancy -diary display) to concoct diary entries whose text varies based on the date: - -@findex diary-sunrise-sunset -@findex diary-phases-of-moon -@findex diary-day-of-year -@findex diary-iso-date -@findex diary-julian-date -@findex diary-astro-day-number -@findex diary-hebrew-date -@findex diary-islamic-date -@findex diary-french-date -@findex diary-mayan-date -@table @code -@item %%(diary-sunrise-sunset) -Make a diary entry for the local times of today's sunrise and sunset. -@item %%(diary-phases-of-moon) -Make a diary entry for the phases (quarters) of the moon. -@item %%(diary-day-of-year) -Make a diary entry with today's day number in the current year and the number -of days remaining in the current year. -@item %%(diary-iso-date) -Make a diary entry with today's equivalent ISO commercial date. -@item %%(diary-julian-date) -Make a diary entry with today's equivalent date on the Julian calendar. -@item %%(diary-astro-day-number) -Make a diary entry with today's equivalent astronomical (Julian) day number. -@item %%(diary-hebrew-date) -Make a diary entry with today's equivalent date on the Hebrew calendar. -@item %%(diary-islamic-date) -Make a diary entry with today's equivalent date on the Islamic calendar. -@item %%(diary-french-date) -Make a diary entry with today's equivalent date on the French Revolutionary -calendar. -@item %%(diary-mayan-date) -Make a diary entry with today's equivalent date on the Mayan calendar. -@end table - -@noindent -Thus including the diary entry - -@example -&%%(diary-hebrew-date) -@end example - -@noindent -causes every day's diary display to contain the equivalent date on the -Hebrew calendar, if you are using the fancy diary display. (With simple -diary display, the line @samp{&%%(diary-hebrew-date)} appears in the -diary for any date, but does nothing particularly useful.) - - These functions can be used to construct sexp diary entries based on -the Hebrew calendar in certain standard ways: - -@cindex rosh hodesh -@findex diary-rosh-hodesh -@cindex parasha, weekly -@findex diary-parasha -@cindex candle lighting times -@findex diary-sabbath-candles -@cindex omer count -@findex diary-omer -@cindex yahrzeits -@findex diary-yahrzeit -@table @code -@item %%(diary-rosh-hodesh) -Make a diary entry that tells the occurrence and ritual announcement of each -new Hebrew month. -@item %%(diary-parasha) -Make a Saturday diary entry that tells the weekly synagogue scripture reading. -@item %%(diary-sabbath-candles) -Make a Friday diary entry that tells the @emph{local time} of Sabbath -candle lighting. -@item %%(diary-omer) -Make a diary entry that gives the omer count, when appropriate. -@item %%(diary-yahrzeit @var{month} @var{day} @var{year}) @var{name} -Make a diary entry marking the anniversary of a date of death. The date -is the @emph{Gregorian} (civil) date of death. The diary entry appears -on the proper Hebrew calendar anniversary and on the day before. (In -the European style, the order of the parameters is changed to @var{day}, -@var{month}, @var{year}.) -@end table - - All the functions documented above take an optional argument -@var{mark} which specifies how to mark the date in the calendar display. -If one of these functions decides that it applies to a certain date, -it returns a value that contains @var{mark}. - -@node Appt Customizing -@section Customizing Appointment Reminders - - You can specify exactly how Emacs reminds you of an appointment, and -how far in advance it begins doing so, by setting these variables: - -@vindex appt-message-warning-time -@vindex appt-audible -@vindex appt-visible -@vindex appt-display-mode-line -@vindex appt-msg-window -@vindex appt-display-duration -@vindex appt-disp-window-function -@vindex appt-delete-window-function -@table @code -@item appt-message-warning-time -The time in minutes before an appointment that the reminder begins. The -default is 12 minutes. -@item appt-audible -If this is non-@code{nil}, Emacs rings the -terminal bell for appointment reminders. The default is @code{t}. -@item appt-visible -If this is non-@code{nil}, Emacs displays the appointment -message in the echo area. The default is @code{t}. -@item appt-display-mode-line -If this is non-@code{nil}, Emacs displays the number of minutes -to the appointment on the mode line. The default is @code{t}. -@item appt-msg-window -If this is non-@code{nil}, Emacs displays the appointment -message in another window. The default is @code{t}. -@item appt-disp-window-function -This variable holds a function to use to create the other window -for the appointment message. -@item appt-delete-window-function -This variable holds a function to use to get rid of the appointment -message window, when its time is up. -@item appt-display-duration -The number of seconds to display an appointment message. The default -is 10 seconds. -@end table - -@ignore - arch-tag: 8e50c766-4703-4888-a421-af15244cca7e -@end ignore diff --git a/lispref/display.texi b/lispref/display.texi index 74c6b3feb51..d5a28b0a0cc 100644 --- a/lispref/display.texi +++ b/lispref/display.texi @@ -4,7 +4,7 @@ @c 2002, 2005 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @setfilename ../info/display -@node Display, Calendar, Processes, Top +@node Display, System Interface, Processes, Top @chapter Emacs Display This chapter describes a number of features related to the display @@ -1695,10 +1695,10 @@ font. (This works only on certain systems.) @item fringe @kindex fringe @r{(face name)} -This face controls the default colors of window fringes, the thin areas on -either side that are used to display continuation and truncation glyphs. -Other faces used to display bitmaps in the fringe implicitly inherits from -this face. +This face controls the default colors of window fringes, the thin +areas on either side that are used to display continuation and +truncation glyphs. Other faces used to display bitmaps in the fringe +are implicitly merged with this face. @item minibuffer-prompt @kindex minibuffer-prompt @r{(face name)} @@ -2008,6 +2008,8 @@ color. The value is used like that of @code{:underline}. The name of a face from which to inherit attributes, or a list of face names. Attributes from inherited faces are merged into the face like an underlying face would be, with higher priority than underlying faces. +If a list of faces is used, attributes from faces earlier in the list +override those from later faces. @item :box Whether or not a box should be drawn around characters, its color, the @@ -2833,12 +2835,12 @@ line in a window is by specifying the @code{display} property for one of the characters that appears in it. Use a display specification of the form @code{(left-fringe @var{bitmap} [@var{face}])} or @code{(right-fringe @var{bitmap} [@var{face}])} (@pxref{Display -Property}). Here, @var{bitmap} is a symbol identifying the bitmap -you want, and @var{face} (which is optional) is the name of the face -whose colors should be used for displaying the bitmap, instead of the -default @code{fringe} face. When specified, @var{face} implicitly -inherits from the @code{fringe} face, so normally @var{face} only -specifies the foreground color for the bitmap. +Property}). Here, @var{bitmap} is a symbol identifying the bitmap you +want, and @var{face} (which is optional) is the name of the face whose +colors should be used for displaying the bitmap, instead of the +default @code{fringe} face. @var{face} is automatically merged with +the @code{fringe} face, so normally @var{face} need only specify the +foreground color for the bitmap. These are the symbols identify the standard fringe bitmaps. Evaluate @code{(require 'fringe)} to define them. Fringe bitmap @@ -2928,8 +2930,8 @@ This sets the face for the fringe bitmap @var{bitmap} to @var{face}. If @var{face} is @code{nil}, it selects the @code{fringe} face. The bitmap's face controls the color to draw it in. -The @var{face} implicitly inherits from the @code{fringe} face, -so normally @var{face} should specifu only the foreground color. +@var{face} is merged with the @code{fringe} face, so normally +@var{face} should specify only the foreground color. @end defun @node Overlay Arrow @@ -2991,11 +2993,21 @@ used. @section Scroll Bars Normally the frame parameter @code{vertical-scroll-bars} controls -whether the windows in the frame have vertical scroll bars. A -non-@code{nil} parameter value means they do. The frame parameter +whether the windows in the frame have vertical scroll bars, and +whether they are on the left or right. The frame parameter @code{scroll-bar-width} specifies how wide they are (@code{nil} meaning the default). @xref{Window Frame Parameters}. +@defun frame-current-scroll-bars &optional frame +This function reports the scroll bar type settings for frame +@var{frame}. The value is a cons cell +@code{(@var{vertical-type} .@: @var{horizontal-type})}, where +@var{vertical-type} is either @code{left}, @code{right}, or @code{nil} +(which means no scroll bar.) @var{horizontal-type} is meant to +specify the horizontal scroll bar type, but since they are not +implemented, it is always @code{nil}. +@end defun + @vindex vertical-scroll-bar You can enable or disable scroll bars for a particular buffer, by setting the variable @code{vertical-scroll-bar}. This variable @@ -3050,6 +3062,16 @@ are @code{nil} for no scroll bar, @code{left} to put a scroll bar on the left, and @code{right} to put a scroll bar on the right. @end defvar +@defun window-current-scroll-bars &optional window +This function reports the scroll bar type for window @var{window}. +If @var{window} is omitted or @code{nil}, the selected window is used. +The value is a cons cell +@code{(@var{vertical-type} .@: @var{horizontal-type})}. Unlike +@code{window-scroll-bars}, this reports the scroll bar type actually +used, once frame defaults and @code{scroll-bar-mode} are taken into +account. +@end defun + @defvar scroll-bar-width This variable, always local in all buffers, specifies the width of the buffer's scroll bars, measured in pixels. A value of @code{nil} means diff --git a/lispref/elisp.texi b/lispref/elisp.texi index b2cec876d79..894ebb20df3 100644 --- a/lispref/elisp.texi +++ b/lispref/elisp.texi @@ -152,7 +152,6 @@ Reference Manual, corresponding to GNU Emacs version 22.1. * Processes:: Running and communicating with subprocesses. * Display:: Features for controlling the screen display. -* Calendar:: Customizing the calendar and diary. * System Interface:: Getting the user id, system type, environment variables, and other such things. @@ -973,7 +972,6 @@ Object Internals @include processes.texi @include display.texi -@include calendar.texi @include os.texi @c MOVE to Emacs Manual: include misc-modes.texi diff --git a/lispref/keymaps.texi b/lispref/keymaps.texi index f374472e101..59e2e19966d 100644 --- a/lispref/keymaps.texi +++ b/lispref/keymaps.texi @@ -456,16 +456,16 @@ key. key. @item -@cindex @kbd{M-g} +@cindex @kbd{M-o} @vindex facemenu-keymap -@code{facemenu-keymap} is the global keymap used for the @kbd{M-g} +@code{facemenu-keymap} is the global keymap used for the @kbd{M-o} prefix key. @c Emacs 19 feature @item -The other Emacs prefix keys are @kbd{C-x @@}, @kbd{C-x a i}, @kbd{C-x -@key{ESC}} and @kbd{@key{ESC} @key{ESC}}. They use keymaps that have no -special names. +The other Emacs prefix keys are @kbd{M-g}, @kbd{C-x @@}, @kbd{C-x a i}, +@kbd{C-x @key{ESC}} and @kbd{@key{ESC} @key{ESC}}. They use keymaps +that have no special names. @end itemize The keymap binding of a prefix key is used for looking up the event diff --git a/lispref/makefile.w32-in b/lispref/makefile.w32-in index 8d4a95911ce..248330167b2 100644 --- a/lispref/makefile.w32-in +++ b/lispref/makefile.w32-in @@ -48,7 +48,6 @@ srcs = \ $(srcdir)/back.texi \ $(srcdir)/backups.texi \ $(srcdir)/buffers.texi \ - $(srcdir)/calendar.texi \ $(srcdir)/commands.texi \ $(srcdir)/compile.texi \ $(srcdir)/control.texi \ diff --git a/lispref/markers.texi b/lispref/markers.texi index 31d6796af58..3353d7805ae 100644 --- a/lispref/markers.texi +++ b/lispref/markers.texi @@ -554,6 +554,12 @@ This variable if non-@code{nil} enables Transient Mark mode, in which every buffer-modifying primitive sets @code{deactivate-mark}. The consequence of this is that commands that modify the buffer normally make the mark inactive. + +Lisp programs can set @code{transient-mark-mode} to @code{only} to +enable Transient Mark mode for the following command only. During +that following command, the value of transient-mark-mode is +@code{identity}. If it is still @code{identity} at the end of the +command, it changes to nil. @end defopt @defopt mark-even-if-inactive diff --git a/lispref/minibuf.texi b/lispref/minibuf.texi index bfe5214174b..a479aae8234 100644 --- a/lispref/minibuf.texi +++ b/lispref/minibuf.texi @@ -1296,6 +1296,11 @@ called, it calls this function with the supplied arguments instead of doing its usual work. @end defvar +@defvar read-file-name-completion-ignore-case +If this variable is non-@code{nil}, @code{read-file-name} ignores case +when performing completion. +@end defvar + @defun read-directory-name prompt &optional directory default existing initial This function is like @code{read-file-name} but allows only directory names as completion possibilities. diff --git a/lispref/modes.texi b/lispref/modes.texi index 9464f900d4f..f2cfcd2eb8c 100644 --- a/lispref/modes.texi +++ b/lispref/modes.texi @@ -2349,7 +2349,7 @@ be slow. @defvar font-lock-mark-block-function If this variable is non-@code{nil}, it should be a function that is called with no arguments, to choose an enclosing range of text for -refontification for the command @kbd{M-g M-g} +refontification for the command @kbd{M-o M-o} (@code{font-lock-fontify-block}). The function should report its choice by placing the region around it. diff --git a/lispref/os.texi b/lispref/os.texi index 1358e3421db..a1de8f09c36 100644 --- a/lispref/os.texi +++ b/lispref/os.texi @@ -4,7 +4,7 @@ @c Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @setfilename ../info/os -@node System Interface, Antinews, Calendar, Top +@node System Interface, Antinews, Display, Top @chapter Operating System Interface This chapter is about starting and getting out of Emacs, access to diff --git a/lispref/positions.texi b/lispref/positions.texi index 19a26754140..822238a6342 100644 --- a/lispref/positions.texi +++ b/lispref/positions.texi @@ -581,9 +581,9 @@ The coordinate arguments @var{frompos} and @var{topos} are cons cells of the form @code{(@var{hpos} . @var{vpos})}. The argument @var{width} is the number of columns available to display -text; this affects handling of continuation lines. Use the value -returned by @code{window-width} for the window of your choice; -normally, use @code{(window-width @var{window})}. +text; this affects handling of continuation lines. @code{nil} means +the actual number of usable text columns in the window, which is +equivalent to the value returned by @code{(window-width window)}. The argument @var{offsets} is either @code{nil} or a cons cell of the form @code{(@var{hscroll} . @var{tab-offset})}. Here @var{hscroll} is diff --git a/lispref/text.texi b/lispref/text.texi index e300b345454..1d4dc0fce8a 100644 --- a/lispref/text.texi +++ b/lispref/text.texi @@ -207,6 +207,41 @@ This is like @code{buffer-substring}, except that it does not copy text properties, just the characters themselves. @xref{Text Properties}. @end defun +@defun filter-buffer-substring start end &optional delete +This function passes the buffer text between @var{start} and @var{end} +through the filter functions specified by the variable +@code{buffer-substring-filters}, and returns the value from the last +filter function. If @code{buffer-substring-filters} is @code{nil}, +the value is the unaltered text from the buffer, what +@code{buffer-substring} would return. + +If @var{delete} is non-@code{nil}, this function deletes the text +between @var{start} and @var{end} after copying it, like +@code{delete-and-extract-region}. + +Lisp code should use this function instead of @code{buffer-substring} +or @code{delete-and-extract-region} when copying into user-accessible +data structures such as the kill-ring, X clipboard, and registers. +Major and minor modes can add functions to +@code{buffer-substring-filters} to alter such text as it is copied out +of the buffer. +@end defun + +@defvar buffer-substring-filters +This variable should be a list of functions that accept a single +argument, a string, and return a string. +@code{filter-buffer-substring} passes the buffer substring to the +first function in this list, and the return value of each function is +passed to the next function. The return value of the last function is +used as the return value of @code{filter-buffer-substring}. + +As a special convention, point is set to the start of the buffer text +being operated on (i.e., the @var{start} argument for +@code{filter-buffer-substring}) before these functions are called. + +If this variable is @code{nil}, no filtering is performed. +@end defvar + @defun buffer-string This function returns the contents of the entire accessible portion of the current buffer as a string. It is equivalent to diff --git a/lispref/tips.texi b/lispref/tips.texi index c029ee1d451..538affd7450 100644 --- a/lispref/tips.texi +++ b/lispref/tips.texi @@ -452,6 +452,13 @@ Profile your program with the @file{elp} library. See the file @file{elp.el} for instructions. @item +@cindex @file{benchmark.el} +@cindex benchmarking +Check the speed of individual Emacs Lisp forms using the +@file{benchmark} library. See the functions @code{benchmark-run} and +@code{benchmark-run-compiled} in @file{benchmark.el}. + +@item Use iteration rather than recursion whenever possible. Function calls are slow in Emacs Lisp even when a compiled function is calling another compiled function. diff --git a/lispref/vol1.texi b/lispref/vol1.texi index cc771bf0359..58ab99c91ba 100644 --- a/lispref/vol1.texi +++ b/lispref/vol1.texi @@ -258,7 +258,6 @@ Manual, corresponding to GNU Emacs version 19.29. variables, and other such things. * Display:: Parameters controlling screen usage. The bell. Waiting for input. -* Calendar:: Customizing the calendar and diary. Appendices @@ -989,7 +988,6 @@ Object Internals @c include processes.texi @c include os.texi @c include display.texi -@c include calendar.texi @c MOVE to Emacs Manual: include misc-modes.texi diff --git a/lispref/vol2.texi b/lispref/vol2.texi index f3cdb6db116..d7a67315c52 100644 --- a/lispref/vol2.texi +++ b/lispref/vol2.texi @@ -259,7 +259,6 @@ Manual, corresponding to GNU Emacs version 19.29. variables, and other such things. * Display:: Parameters controlling screen usage. The bell. Waiting for input. -* Calendar:: Customizing the calendar and diary. Appendices @@ -990,7 +989,6 @@ Object Internals @include processes.texi @include os.texi @include display.texi -@include calendar.texi @c MOVE to Emacs Manual: include misc-modes.texi |