From: Miles Bader Date: Fri, 28 Dec 2007 22:26:14 +0000 (+0000) Subject: Merge from emacs--rel--22 X-Git-Tag: emacs-pretest-23.0.90~8793 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=b17f53abc28496125965f36147b76ea5f6a2b4fb;p=emacs.git Merge from emacs--rel--22 Revision: emacs@sv.gnu.org/emacs--devo--0--patch-966 --- b17f53abc28496125965f36147b76ea5f6a2b4fb diff --cc admin/FOR-RELEASE index f96da325b75,57b439b6749..1d5cfc9ddf0 --- a/admin/FOR-RELEASE +++ b/admin/FOR-RELEASE @@@ -55,62 -50,17 +55,64 @@@ http://lists.gnu.org/archive/html/bug-g * BUGS +** Document the changes introduced by multi-tty +http://lists.gnu.org/archive/html/emacs-devel/2007-08/msg01639.html +http://lists.gnu.org/archive/html/emacs-devel/2007-08/msg01602.html + +** Does deleting frames run Lisp code? If so, can we get rid of that? +It is a dangerous design. +http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg01330.html + +** Why were the calls to x_fully_uncatch_errors commented out in eval.c? +http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg01987.html + +** grep et al should use font-lock to do highlighting, so that they respect font-lock-mode. +"can't turn off font-lock" +http://lists.gnu.org/archive/html/emacs-devel/2007-08/msg00548.html + +** mah@everybody.org, Sep 18: erc causes emacs to hang with multi-tty +http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg01765.html + +** jbw@macs.hw.ac.uk, Sep 18: before-string property has no effect if display property is empty +http://lists.gnu.org/archive/html/bug-gnu-emacs/2007-09/msg00094.html +http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg01816.html + +** sdl.web@gmail.com, Sep 24: TLS infinite loop. +http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg01720.html + +** herring@lanl.gov: find-func: can no longer find adviced subrs +This ought to work. + +** \\{...} produces duplicate entries +http://lists.gnu.org/archive/html/emacs-devel/2007-05/msg00209.html + +** menu indications of key bindings for remapped commands +http://lists.gnu.org/archive/html/emacs-devel/2007-05/msg01339.html + +** rms: gnus-dired.el is a mistake. Those features should not +be part of Gnus. They should be moved to some other part of Emacs. +rsteib: Gnus dependencies in `gnus-dired.el' (and `mailcap.el') have been +minimized. I don't know what is left to do here. + +** sdl.web@gmail.com, 30 Oct: ps-lpr-switches has no effect + ** Stephen.Berman@gmx.net: minibuffer and current-local-map -** bojohan+news@dd.chalmers.se, 19 Nov: appointment display during isearch replaces buffer contents - with history element. +** timh@insightful.com, 9 Nov: X-coding-system incompatibility, and workaround + +** Get rid of old-style backquotes in cc-vars.el. +ttn has a patch: +http://lists.gnu.org/archive/html/emacs-devel/2007-10/msg02052.html -** eric@openbsd.org, 24 Nov: c-mode syntactic analysis regression in emacs-22.1 +** Fix or document the shortcoming of easymenu and :suffix. +http://lists.gnu.org/archive/html/emacs-devel/2007-11/msg01857.html -** diff mode change for missing spaces in -u format. +** Fix problem with mode-name in SGML mode. +If mode-name stays non-string, add NEWS entry and doc fix. +http://lists.gnu.org/archive/html/emacs-devel/2007-11/msg02048.html + ** pot@gnu.org, 17 Dec: strange From line maker rmail-reply loop + * DOCUMENTATION ** Check the Emacs Tutorial. diff --cc doc/emacs/ChangeLog index 9c4d874e139,00000000000..e950d152a80 mode 100644,000000..100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog @@@ -1,5093 -1,0 +1,5114 @@@ ++2007-12-27 Richard Stallman ++ ++ * text.texi (Formatted Text): Improve menu tag. ++ (Editing Format Info): In Info, add duplicate menu of nodes ++ about the submenus. ++ (Format Faces): Say where Faces menu is found. Mention Other. ++ (Format Colors): Say where these submenus are found. ++ (Format Indentation, Format Justification): Likewise. ++ (Format Properties): Likewise. ++ ++2007-12-22 Richard Stallman ++ ++ * search.texi (Query Replace): Make exp of query-replace more ++ self-contained, and clarify. ++ ++ * cc-mode.texi (Getting Started): Change @ref to @pxref. ++ ++2007-12-15 Richard Stallman ++ ++ * files.texi (Auto Save): Clarify definition of auto-saving. ++ +2007-11-26 Richard Stallman + + * help.texi (Help Echo): Cleanups. + +2007-11-23 Thien-Thi Nguyen + + * files.texi (Why Version Control?): Fix typo. + (VCS Concepts): Fix typos; small tense fix. + (Selecting a Fileset): Fix typos; small rewording. + (Log Buffer): Likewise. + (Old Revisions): Likewise. + +2007-11-17 Eli Zaretskii + + * mule.texi (Communication Coding): Fix wording of last change. + +2007-11-16 Werner Lemberg + + * custom.texi (Specifying File Variables), major.texi (Choosing + Modes): Mention '\" in man pages. + +2007-11-16 Kenichi Handa + + * mule.texi (Communication Coding): Document x-select-request-type. + + * frames.texi (Cut/Paste Other App): Mention x-select-request-type. + +2007-11-15 Francesco Potort,Al(B + + * maintaining.texi (TEXTAGS): note that you can use "-" for stdout with + --output=file. + +2007-11-13 Martin Rudalics + + * help.texi (Help Summary, Apropos, Misc Help): Fix typos. + (Help Echo): Avoid mentioning the term "region" here and + consistently use the term "active text". + +2007-11-11 Glenn Morris + + * calendar.texi (Special Diary Entries): Fix Thanksgiving example. + +2007-11-10 Paul Pogonyshev + + * search.texi (Query Replace): Mention + `query-replace-show-replacement'. + +2007-11-09 Nick Roberts + + * building.texi (Watch Expressions): Remove obscure sentence. + +2007-11-06 Kenichi Handa + + * mule.texi (Select Input Method): Describe how to activate an input + method in the text mode. + +2007-11-01 Dan Nicolaescu + + * cmdargs.texi (Misc Variables): Remove Sun windows info. + +2007-10-30 Nick Roberts + + * building.texi (Watch Expressions): Describe gdb-delete-out-of-scope. + +2007-10-30 Glenn Morris + + * misc.texi (Directory Tracking): Explain a bit more about + dirtrack-mode. + +2007-10-25 Glenn Morris + + * fortran-xtra.texi (Fortran): F90 mode handles F2003. + +2007-10-24 Richard Stallman + + * misc.texi (Interactive Shell): Cleanup last change. + +2007-10-22 Juri Linkov + + * mini.texi (Minibuffer History): Add text about a list of minibuffer + default values. + +2007-10-20 Eric S. Raymond + + * files.texi: Disambiguate two slightly different uses of the term + 'filesets'. + +2007-10-18 Martin Rudalics + + * trouble.texi (Quitting): Fix typo. + +2007-10-18 Glenn Morris + + * frames.texi (Mode Line Mouse): Mention minor mode names. + +2007-10-17 Juri Linkov + + * text.texi (Fill Commands): Undocument fill-paragraph-or-region. + fill-paragraph operates on the active region in Transient Mark mode. + (Fill Prefix, Format Indentation): Replace fill-paragraph-or-region + with fill-paragraph. + + * basic.texi (Arguments): Replace fill-paragraph-or-region with + fill-paragraph. + + * fixit.texi (Spelling): ispell-word operates on the active region + in Transient Mark mode. + +2007-10-17 Aaron S. Hawley + + * building.texi (Source Buffers): + * custom.texi (Init Non-ASCII): + * glossary.texi (Glossary): Use "key binding" consistently. + +2007-10-17 Juanma Barranquero + + * calendar.texi (Diary): Fix directive. + +2007-10-16 Richard Stallman + + * calendar.texi (Diary): Clarify text about diary file example. + +2007-10-13 Eric S. Raymond + + * files.texi: Capitalize node names according to convention. + +2007-10-13 Glenn Morris + + * misc.texi (Interactive Shell): Correct INSIDE_EMACS reference. + +2007-10-11 Eric S. Raymond + + * emacs.texi: + * files.texi (Version Systems): Minor fixes to version-control material + suggested by RMS and Robert J. Chassell. + +2007-10-10 Eric S. Raymond + + * files.texi (Version Systems): + * vc-xtra.texi: + * vc1-xtra.texi: + * vc2-xtra.texi: Merge in changes for new VC with fileset-oriented + operations. Change of terminology from `version' to `revision'. + Revise text for adequate description of VCSes with monotonic IDs. + * emacs.texi: Change of terminology from `version' to `revision'. + +2007-10-09 Eric S. Raymond + + * files.texi (Version Systems): Describe newer VCses. + Reorder the descriptions to be chronological. + +2007-10-09 Richard Stallman + + * display.texi (Cursor Display): Correct how cursor appears + in nonselected windows. + +2007-10-04 Nick Roberts + + * building.texi (GDB Graphical Interface): Remove references to gdba + and mention gud-gdb. + +2007-08-31 Eli Zaretskii + + * rmail.texi (Rmail Sorting): Improve indexing. + +2007-10-06 Juri Linkov + + * text.texi (Fill Commands): Document fill-paragraph-or-region. + (Fill Prefix, Format Indentation): Replace fill-paragraph with + fill-paragraph-or-region. + + * basic.texi (Arguments): Replace fill-paragraph with + fill-paragraph-or-region. + +2007-10-06 Eric S. Raymond + + * files.texi: Update the section on version control for 2007 + conditions. None of these changes are new-VC-specific; that + will come later. + +2007-09-15 Glenn Morris + + * calendar.texi (Holidays): Change all instances of `holiday-list' back + to `list-holidays'. + +2007-09-14 Glenn Morris + + * calendar.texi: Update all instances of mark-calendar-holidays, + list-calendar-holidays, list-holidays with the new names. + +2007-09-06 Glenn Morris + + * Move manual sources from man/ to subdirectories of doc/. + Split into the Emacs manual in emacs/, and other manuals in misc/. + * Makefile.in (INFO_TARGETS, DVI_TARGETS): Reduce to just the Emacs + manual. + (infodir): New variable. + (info): Use $infodir. + (emacsman): Delete target, not needed any more. + Move all targets that are not the Emacs manual to misc/Makefile.in. + (mostlyclean): Remove `gnustmp'. + * makefile.w32-in (INFO_TARGETS, DVI_TARGETS): Reduce to just the Emacs + manual. + (MULTI_INSTALL_INFO, ENVADD, infodir): Go up one more level. + (emacsman): Delete target, not needed any more. + (clean): Remove all info files but Emacs manual. + Move all targets that are not the Emacs manual to misc/Makefile.in. + * emacs-xtra.texi, emacs.texi (setfilename): Go up one more level. + + * Makefile.in (INFOSOURCES): Delete. + (.SUFFIXES): Use $(TEXI2DVI) rather than texi2dvi. + (mostlyclean): Add *.op, *.ops. Move *.aux *.cps *.fns *.kys *.pgs + *.vrs *.toc here... + (maintainer-clean): ...from here. + +2007-09-05 Glenn Morris + + * custom.texi (Safe File Variables): Clarify `!' and risky variables. + +2007-08-29 Glenn Morris + + * emacs.texi (EMACSVER): Increase to 23.0.50. + +2007-08-27 Richard Stallman + + * emacs.texi (Top): Clarify menu item for Glossary. + + * display.texi (Faces): Change secn title. + Clarify not all fonts come from Font Lock. + +2007-08-17 Eli Zaretskii + + * basic.texi (Position Info): Add index entry for face at point. + Mention that character faces are also displayed by "C-u C-x =". + +2007-08-08 Glenn Morris + + * glossary.texi (Glossary): Deprecate `iff'. + +2007-08-07 Chong Yidong + + * files.texi (File Conveniences): Document point motion keys in Image + mode. + +2007-07-27 Glenn Morris + + * emacs.texi (Copying): Include license text from gpl.texi, rather than + in-line. + + * gpl.texi: New file with text of GPL. + * Makefile.in (EMACSSOURCES): Add gpl.texi. + +2007-07-26 Dan Nicolaescu + + * vc2-xtra.texi (Customizing VC): Add GIT and HG. + + * dired.texi (Wdired): Mention C-x C-q key binding. + +2007-07-28 Nick Roberts + + * building.texi (GDB Graphical Interface): Qualify use of "M-x gdba". + +2007-07-25 Glenn Morris + + * emacs.texi (Copying): Replace license with GPLv3. + + * Relicense all FSF files to GPLv3 or later. + +2007-07-24 Glenn Morris + + * calendar.texi (Writing Calendar Files): cal-tex-diary etc only work + for some calendars. + +2007-07-23 Nick Roberts + + * screen.texi (Mode Line): Describe new mode-line flag that shows if + default-directory for the current buffer is on a remote machine. + +2007-07-21 Eli Zaretskii + + * vc2-xtra.texi (Customizing VC) : Update the + default value. + +2007-07-21 Richard Stallman + + * files.texi (Why Version Control?): Improve previous change. + +2007-07-18 Eric S. Raymond + + * files.texi (Why Version Control?): New node. + +2007-07-12 Nick Roberts + + * building.texi (Starting GUD): Add xref to this anchor. + +2007-06-24 Karl Berry + + * emacs.texi: New Back-Cover Text. + +2007-06-07 Alan Mackenzie + + * display.texi (Optional Mode Line): Document the new form of + line+column numbers, "(561,2)". + +2007-06-06 Juanma Barranquero + + * maintaining.texi (Create Tags Table): Fix typos. + +2007-06-02 Chong Yidong + + * Version 22.1 released. + +2007-05-07 Karl Berry + + * emacs.texi (EMACSVER): Back to 22. + +2007-05-06 Richard Stallman + + * maintaining.texi (Create Tags Table): Clean up previous change. + +2007-05-05 Francesco Potort,Al(B + + * maintaining.texi (Create Tags Table): Add text about the dangers of + making symbolic links to tags files. + +2007-05-04 Karl Berry + + * emacs.texi (EMACSVER) [smallbook]: 22.1 for printed version, not 22. + +2007-05-03 Karl Berry + + * emacs.texi (EMACSVER) [smallbook]: 22 for printed version. + + * .cvsignore (*.pdf): New entry. + + * emacs.texi (\urlcolor, \linkcolor) [smallbook]: \let to \Black + for printing. + +2007-05-01 Richard Stallman + + * cmdargs.texi (Initial Options): Under --batch, mention --eval. + +2007-04-28 Glenn Morris + + * ack.texi (Acknowledgments): + * anti.texi (Antinews): + * programs.texi (Program Modes): Restore mention of python.el pending + consideration of legal status. + +2007-04-28 Richard Stallman + + * files.texi (File Names): Fixes to ~ description on MS systems. + +2007-04-26 Glenn Morris + + * emacs.texi (EMACSVER): Increase to 22.1.50. + +2007-04-25 Karl Berry + + * emacs.texi: Improve line breaks on copyright page, + similar layout to lispref, 8.5x11 by default. + + * dired.texi (Image-Dired): Improve line break, fix typo. + +2007-04-24 Chong Yidong + + * programs.texi (Program Modes): + * anti.texi (Antinews): + * ack.texi (Acknowledgments): python.el removed. + +2007-04-23 Chong Yidong + + * display.texi (Highlight Interactively): Correct description of + hi-lock-file-patterns-policy. + + * files.texi (File Archives): Mention self-extracting executables. + +2007-04-23 Eli Zaretskii + + * search.texi (Unconditional Replace, Query Replace): Add xref to + "Replacement and Case". + +2007-04-22 Chong Yidong + + * dired.texi (Image-Dired): Move from Thumbnails node. + * misc.texi (Thumbnails): Node deleted. + * emacs.texi (Top): Update node listing. + + * files.texi (File Conveniences): + * ack.texi (Acknowledgments): Rename "tumme" to "image-dired". + +2007-04-21 Richard Stallman + + * display.texi (Highlight Interactively): Correct previous change. + Clarify doc of hi-lock-find-patterns, and move new features into it. + +2007-04-20 David Koppelman + + * display.texi (Highlight Interactively): Document + hi-lock-file-patterns-policy. + +2007-04-20 Martin Rudalics + + * display.texi (Scrolling): Fix typo. + +2007-04-15 Chong Yidong + + * doclicense.texi: Remove node heading, so that it can be included by + other files. + + * emacs.texi: Insert node heading for GFDL. + +2007-04-14 Eli Zaretskii + + * cmdargs.texi (Colors): Qualify "color of window" index entry by + "command line". + + * display.texi (Faces): Refer to "Creating Frames" for face + and other frame customizations in .emacs. + + * frames.texi (Creating Frames): Mention that face customizations can + be put in .emacs. Add index entries. + +2007-04-12 Richard Stallman + + * glossary.texi (Glossary): Explain `iff'. + +2007-04-11 Karl Berry + + * gnu.texi (Top), + * macos.texi (Mac Font Specs), + * anti.texi (Antinews), + * xresources.texi (Resources), + * misc.texi (Emulation), + * calendar.texi (Daylight Saving), + * dired.texi (Dired and Find), + * rmail.texi (Remote Mailboxes), + * sending.texi (Mail Headers), + * programs.texi (Which Function), + * files.texi (Recover), + * buffers.texi (Uniquify), + * frames.texi (Wheeled Mice), + * killing.texi (Rectangles): Wording to improve breaks in + 8.5x11 format. + * mule.texi (Language Environments): \hbadness=10000 since there's + no way to reword. + * emacs.texi (smallbook): New @set to more easily switch between + smallbook and 8.5x11. + +2007-04-11 Richard Stallman + + * files.texi (File Conveniences): Add xref to Tumme. + Delete text about Thumbnail mode. + +2007-04-09 Alan Mackenzie + + * cmdargs.texi (Initial Options): Call "inhibit-splash-screen" by its + new name. Insert concept index entries. + +2007-04-08 Chong Yidong + + * display.texi (Standard Faces): Document prefix arg for + list-faces-display. + + * rmail.texi (Rmail Scrolling): Document rmail-end-of-message. + +2007-04-07 Chong Yidong + + * killing.texi (Deletion): Rewrite description of M-\ prefix argument. + + * files.texi (Misc File Ops): Rewrite description of + insert-file-literally. + +2007-03-31 Eli Zaretskii + + * misc.texi (Printing): Postscript -> PostScript. + + * ack.texi (Acknowledgments): Postscript -> PostScript. + + * custom.texi (Init File, Init Non-ASCII): Fix last change. + + * emacs.texi (Top): Fix the menu due to the change in custom.texi + below. + +2007-03-30 Chong Yidong + + * custom.texi (Non-ASCII Rebinding): Node deleted. Material moved to + Init Non-ASCII. + (Init Rebinding, Init Syntax): Link to Init Non-ASCII instead. + (Init Non-ASCII): New node. + +2007-03-28 YAMAMOTO Mitsuharu + + * macos.texi (Mac Font Specs): Mention AppleAntiAliasingThreshold. + +2007-03-12 Glenn Morris + + * calendar.texi, emacs.texi (Daylight Saving): Rename node from + "Daylight Savings". + + * calendar.texi: Replace "daylight savings" with "daylight + saving" in text throughout. + +2007-03-04 Richard Stallman + + * custom.texi (Safe File Variables): Minor correction. + +2007-02-28 Thien-Thi Nguyen + + * rmail.texi (Movemail): Add internal ref. + Don't indent the intro for the PROTO table. + Format PROTO table items with @code. + +2007-02-26 Nick Roberts + + * building.texi: Remove references to bashdb. + +2007-02-19 Juanma Barranquero + + * mule.texi (Language Environments): Update list of supported language + environments. + +2007-02-14 Kim F. Storm + + * building.texi (Grep Searching): Fix lgrep doc. + +2007-02-12 Chong Yidong + + * back.texi: Remove unused file. + +2007-02-05 Francesco Potort,Al(B + + * maintaining.texi (Tag Syntax): Now --members is the default for + etags, not for ctags yet. + +2007-02-03 Eli Zaretskii + + * emacs.texi (Top): Update the top-level menus. Make the detailed menu + headers compliant with Texinfo guidelines and with what texnfo-upd.el + expects. Add comments to prevent people from inadvertently modifying + the key parts needed by `texinfo-multiple-files-update'. + +2007-01-29 Chong Yidong + + * frames.texi (Secondary Selection): Window clicked does not matter + when mouse-yank-at-point is non-nil. + +2007-01-16 Glenn Morris + + * abbrevs.texi (Editing Abbrevs): Describe how to disable a + system abbrev. + +2007-01-11 Richard Stallman + + * msdog.texi (Windows Keyboard): Another small cleanup. + +2007-01-10 Richard Stallman + + * msdog.texi (Windows Keyboard): Yet another try to make + everyone happy with that passage. + +2007-01-05 Richard Stallman + + * anti.texi (Antinews): Mention M-x shell scrolling. + +2007-01-05 Nick Roberts + + * building.texi (Watch Expressions): Describe gdb-max-children. + +2007-01-04 Richard Stallman + + * msdog.texi (Windows Keyboard): Clarify previous change. + +2007-01-02 Richard Stallman + + * custom.texi (Changing a Variable): Minor clarification. + (Specific Customization): customize-customized => customize-unsaved. + + * entering.texi (Entering Emacs): Clean up text about restarting + Emacs for each file. + + * misc.texi (Shell Options): Minor cleanup. + + * msdog.texi (Windows Keyboard): Explain that Windows was incompatible + with Emacs, not vice versa. + + * programs.texi (Symbol Completion): Recommend customizing + window manager. + + * xresources.texi (Resources): Minor fix. + +2007-01-01 Jan Dj,Ad(Brv + + * xresources.texi (Table of Resources): Add scrollBarWidth resource. + +2007-01-01 Richard Stallman + + * commands.texi (User Input): Document keys stolen by window mangers. + +2006-12-31 Richard Stallman + + * custom.texi (Specific Customization): Document customize-option + instead of customize-variable. + +2006-12-31 Kim F. Storm + + * major.texi (Choosing Modes): Document auto-mode-case-fold. + +2006-12-30 Kim F. Storm + + * killing.texi (CUA Bindings): Fix typo. + + * xresources.texi (Table of Resources): Mention grow-only value for + auto-resize-tool-bars. + +2006-12-27 Eli Zaretskii + + * msdog.texi (Windows Keyboard): Mention widespread Windows bindings, + and how to get them back. + +2006-12-26 Richard Stallman + + * calendar.texi (Holidays): Holiday listing is based on current + practice, but DST is not. + +2006-12-25 Richard Stallman + + * emacs.texi (Top): Update subnode menus. + + * mark.texi (Transient Mark): Fix xref. + + * killing.texi (Graphical Kill): Node deleted. + (Killing): Add xref to Cut and Paste. + (CUA Bindings): Update xref. + + * frames.texi (Cut and Paste): New section to hold other nodes. + (Mouse Commands): Node demoted. + (Cut/Paste Other App): Split out from Mouse Commands. + (Word and Line Mouse): Likewise. + (Secondary Selection, Clipboard): Nodes demoted. + +2006-12-24 Kevin Ryde + + * calendar.texi (Holidays): US daylight saving begins second Sunday + in March for 2007 onwards. + (Daylight Savings): Show new US default daylight saving rules, 2nd + Sun in Mar to 1st Sun in Nov, now in cal-dst.el. + +2006-12-23 Chong Yidong + + * calendar.texi (Scroll Calendar): < and > are switched. + +2006-12-23 Kevin Rodgers + + * killing.texi (Deletion): Describe M-\ prefix argument. + +2006-12-23 Richard Stallman + + * search.texi (Regexp Search): Explain why forward and reverse regexp + search are not mirror images. + +2006-12-19 Kim F. Storm + + * major.texi (Choosing Modes): Describe match-function elements for + magic-mode-alist. + +2006-12-18 Eli Zaretskii + + * msdog.texi (Windows Keyboard): Add a footnote about "Windows" keys + peculiarities. + +2006-12-18 Richard Stallman + + * abbrevs.texi (Editing Abbrevs): Fix previous change. + +2006-12-17 Alan Mackenzie + + * programs.texi (Left Margin Paren): Remove the bit which says + that CC Mode sets open-paren-in-column-0-is-defun-start to nil. + Discuss some of the issues of setting this option to nil. + +2006-12-17 Glenn Morris + + * abbrevs.texi (Editing Abbrevs): Mention system abbrevs. + +2006-12-16 Eli Zaretskii + + * msdog.texi (Windows Keyboard): Clarify `w32-recognize-altgr' effect. + (Windows Files): `w32-get-true-file-attributes' is only relevant for + NTFS volumes. + (ls in Lisp): `links' in `ls-lisp-verbosity' is only relevant to NTFS + volumes. + +2006-12-15 Eli Zaretskii + + * text.texi (HTML Mode): Fix "C-c TAB". + +2006-12-09 Richard Stallman + + * misc.texi (Invoking emacsclient): Simplify TCP file text. + +2006-12-08 Kevin Rodgers + + * files.texi (Misc File Ops): Document insert-file-literally. + +2006-12-08 Eli Zaretskii + + * cmdargs.texi (Colors): Note that --color is intended for overriding + the terminal defaults, not for normal invocation. + + * misc.texi (Emacs Server): Improve wording. Don't mention the + ``server program''. Add a cross-reference to "Init File" node. + (Invoking emacsclient): Add index entries. Document both short and + long versions of command-line options. Document the -f option. + +2006-12-06 Richard Stallman + + * text.texi (Outline Format): Say to set outline-regexp + and outline-level with major modes and file local variables. + +2006-12-05 Micha,Ak(Bl Cadilhac + + * anti.texi (Antinews): Mention the alternative to + `~/.emacs_SHELLNAME', which is `~/.emacs.d/init_SHELLNAME.sh'. + + * misc.texi (Interactive Shell): Ditto. + +2006-12-04 Eli Zaretskii + + * emacs.texi (Acknowledgments): Fix Arne J@o{}rgensen's name. + + * ack.texi (Acknowledgments): Fix Arne J@o{}rgensen's name. + +2006-12-01 Eli Zaretskii + + * mule.texi (Enabling Multibyte): Rephrase the confusing reference to a + colon in the mode line. + + * msdog.texi (Windows Processes) [@ifnottex]: Mention w32-shell-execute. + +2006-11-26 Nick Roberts + + * building.texi (Watch Expressions): Mention SPC for expanding/ + contracting watch expressions. + +2006-11-26 Kim F. Storm + + * kmacro.texi (Basic Keyboard Macro): Mention F3/F4 more. + +2006-11-26 Nick Roberts + + * building.texi (Debugger Operation): Define text command mode. + Clarify how tooltips work. + (GDB Graphical Interface): Explain how to run in text command mode + more clearly. + +2006-11-25 Juanma Barranquero + + * mule.texi (Defining Fontsets): Fix use of `charset' and `font'. + +2006-11-22 Juanma Barranquero + + * anti.texi (Antinews): Mention --server-file and TCP sockets. + +2006-11-18 Chong Yidong + + * misc.texi (Interactive Shell): INSIDE_EMACS is set to t, + and EMACS is deprecated. + +2006-11-18 Juanma Barranquero + + * makefile.w32-in (emacs.dvi): Remove xresmini.texi. + +2006-11-18 Jan Dj,Ad(Brv + + * Makefile.in (emacs.dvi): Remove xresmini.texi. + + * emacs.texi: Include xresources.texi both for info and dvi. + + * xresources.texi: Merge text from xresmini.texi. + +2006-11-12 Roberto Rodr,Am(Bguez (tiny change) + + * glossary.texi: Fix typos. + +2006-11-06 Richard Stallman + + * emacs.texi (Acknowledgments): Fix name spelling, add Anna Bigatti. + + * ack.texi (Acknowledgments): Fix name spelling. + +2006-11-01 Juri Linkov + + * search.texi (Word Search): Document incremental word search. + +2006-10-28 Glenn Morris + + * ack.texi (Acknowledgments): Add cal-html author. + + * calendar.texi (Writing Calendar Files): Rename section (was "LaTeX + Calendar"). Describe new package cal-html. + * emacs.texi (Top): Rename old node "LaTeX Calendar" to "Writing + Calendar Files." + +2006-10-23 Richard Stallman + + * abbrevs.texi (Expanding Abbrevs): Expansion happens only when + Abbrev mode is enabled. + +2006-10-16 Richard Stallman + + * emacs.texi: Update ISBN. + +2006-10-11 Kim F. Storm + + * emacs.texi (Acknowledgments): Use @dotless{i}. + +2006-10-08 Nick Roberts + + * building.texi (Breakpoints Buffer): Mention catchpoints. + +2006-10-08 Kim F. Storm + + * ack.texi (Acknowledgments): Update. + + * emacs.texi (Acknowledgments): Fix bad @/ form. + +2006-10-05 Kim F. Storm + + * emacs.texi (Acknowledgments): Add more contributors. + +2006-10-03 Richard Stallman + + * emacs.texi (Acknowledgments): Update version and edition. + +2006-10-01 Karl Berry + + * custom.texi (Customization Groups): Page break to keep example buffer + on one page. + +2006-09-30 Karl Berry + + * programs.texi (Basic Indent): @need to improve page break. + * text.texi: Rewording to improve page breaks, and use @LaTeX{}. + +2006-09-29 Glenn Morris + + * calendar.texi (Date Formats): Doc fix for european-calendar-style. + +2006-09-29 Karl Berry + + * windows.texi (Basic Window): Remove forced @break, no longer + desirable. + * frames.texi (Frame Commands), + * mark.texi (Marking Objects): Reword to avoid bad page break. + * display.texi (Auto Scrolling): Use @tie{} to avoid bad line break. + +2006-09-19 Richard Stallman + + * frames.texi (Dialog Boxes): Clean up wording: avoid passive, + stick to present tense. + +2006-09-18 Jan Dj,Ad(Brv + + * frames.texi (Dialog Boxes): Rename x-use-old-gtk-file-dialog + to x-gtk-use-old-file-dialog. + (Dialog Boxes): Document x-gtk-file-dialog-help-text. + +2006-09-15 Jay Belanger + + * emacs.texi (GNU GENERAL PUBLIC LICENSE): + Change "Library Public License" to "Lesser Public License" + throughout. Use "yyyy" to represent year. + +2006-09-12 Reiner Steib + + * files.texi (Visiting): Add index entry "open file". + +2006-09-11 Richard Stallman + + * building.texi (Compilation Mode): Clarification. + (Grep Searching): Add xref to Compilation Mode. + +2006-09-08 Richard Stallman + + * search.texi (Search): Ref multi-file search commands here. + (Other Repeating Search): Not here. + +2006-08-28 Richard Stallman + + * windows.texi (Split Window): Update xref. + + * basic.texi (Continuation Lines): Update xref. + + * indent.texi (Tab Stops): Update xref. + + * emacs.texi (Top): Update subnode menu. + + * display.texi (Line Truncation, Displaying Boundaries): New nodes, + split out of Display Custom. + +2006-08-25 Kim F. Storm + + * display.texi (Display Custom): Add variables overline-margin + and x-underline-at-descent-line. + +2006-08-25 Richard Stallman + + * entering.texi (Exiting): Rewrite to give graphical displays + priority over text terminals. + + * search.texi (Incremental Search): Move index entries. + +2006-08-23 Chong Yidong + + * custom.texi (Init File): Reference Find Init to avoid "home + directory" confusion. + +2006-08-22 Nick Roberts + + * building.texi (Other GDB-UI Buffers): Describe how to edit + a value in the locals buffer. + +2006-08-21 Richard Stallman + + * search.texi (Basic Isearch): Add `isearch' index entry. + +2006-08-16 Richard Stallman + + * misc.texi (Saving Emacs Sessions): Clean up wording. + + * mark.texi (Marking Objects): Mention term "select all". + + * emacs.texi (Top): Update subnode menu. + + * help.texi (Help Mode): Move node up in file. + +2006-08-15 Nick Roberts + + * building.texi (Stack Buffer): Explain fringe arrow. + +2006-08-12 Eli Zaretskii + + * misc.texi (Saving Emacs Sessions): Clarify when desktop is restored + on startup. + +2006-08-11 Romain Francoise + + * ack.texi (Acknowledgments): Delete mention to zone-mode.el. + +2006-08-10 Sven Joachim (tiny change) + + * mule.texi (Recognize Coding, Text Coding): Fix typos. + +2006-08-10 Richard Stallman + + * text.texi (Format Faces): Substantial rewrites to deal + with face merging. Empty regions don't count. Clarify + face property inheritance. + +2006-08-08 Romain Francoise + + * dired.texi (Marks vs Flags): Fix typo reported by Ari Roponen + . + +2006-08-04 Eli Zaretskii + + * cmdargs.texi (Window Size X) <--geometry>: Only width and height + apply to all frames. + +2006-08-01 Richard Stallman + + * help.texi (Name Help): Add index entries for describe-variable. + +2006-08-01 Nick Roberts + + * building.texi (GDB Graphical Interface): Shorten node names. + (GDB-UI Layout): Use GDB-related. + (Other GDB-UI Buffers): Simplify English. + +2006-07-31 Richard Stallman + + * search.texi (Query Replace): Add xref for Dired's Q command. + +2006-07-31 Nick Roberts + + * building.texi (GDB commands in Fringe): Rename to... + (Source Buffers): ..this and move forward. Describe hollow arrow and + new option gdb-find-source-frame. + +2006-07-29 Richard Stallman + + * dired.texi (Operating on Files): Simplify previous change + and fix Texinfo usage. + +2006-07-29 Eli Zaretskii + + * dired.texi (Operating on Files): Add cross-references. State the + Unix commands that do similar things. + +2006-07-28 Richard Stallman + + * mark.texi (Transient Mark): Clarify that region never disappears + when Transient Mark mode is off, and not when it is on. + +2006-07-27 Richard Stallman + + * search.texi (Non-ASCII Isearch): Clarify. Mention C-q. + +2006-07-24 Richard Stallman + + * xresources.texi (GTK styles): Fix texinfo usage. + + * commands.texi (User Input): Explain why we teach keyboard cmds. + + * xresources.texi, xresmini.texi, search.texi, programs.texi: + * misc.texi, kmacro.texi, killing.texi, glossary.texi: + * fortran-xtra.texi, files.texi, emacs.texi, emacs-xtra.texi: + * doclicense.texi, display.texi, dired.texi, basic.texi: + * anti.texi, ack.texi: Move periods and commas inside quotes. + +2006-07-22 Eli Zaretskii + + * cmdargs.texi (General Variables): Document EMAIL. + +2006-07-21 Eli Zaretskii + + * frames.texi (Frame Commands): Mention that focus-follows-mouse + doesn't have effect on MS-Windows. + +2006-07-17 Richard Stallman + + * building.texi (Grep Searching): Explain about chaining grep commands. + +2006-07-10 Nick Roberts + + * killing.texi, mini.texi: Fix typos. + +2006-07-09 Chong Yidong + + * misc.texi (Invoking emacsclient): Document behavior when emacsclient + is invoked for multiple files. + +2006-07-08 Eli Zaretskii + + * msdog.texi (Windows Keyboard) [@iftex]: Add an @inforef to the + on-line manual for the rest of this node. + (Windows Mouse) : Include + unconditionally. + (Windows Processes) : Include unconditionally. + Improve wording. + (Windows Printing): Improve wording. + (Windows Misc) [@iftex]: Add an @inforef to the on-line manual for the + rest of this node. + +2006-07-05 Thien-Thi Nguyen + + * building.texi (Lisp Eval): Throughout, replace eval-current-buffer + with eval-buffer. + +2006-07-05 Nick Roberts + + * mule.texi (Coding Systems, Specify Coding): Link descriptions + of character translation. + +2006-07-04 Nick Roberts + + * rmail.texi (Remote Mailboxes): Add missing @code keyword. + +2006-07-03 Karl Berry + + * emacs.texi (\hbadness): Set to 6000 so we aren't bothered by + not-too-underfull hboxes in the TeX output. + * abbrevs.texi, buffers.texi, building.texi, calendar.texi, + * cmdargs.texi, custom.texi, dired.texi, macos.texi, + * maintaining.texi, misc.texi, mule.texi, programs.texi, rmail.texi, + * sending.texi, text.texi: Fix overfull/underfull boxes. + +2006-07-03 Romain Francoise + + * m-x.texi (M-x): Fix. + +2006-07-03 Richard Stallman + + * search.texi (Other Repeating Search): filename -> file name. + + * misc.texi (Narrowing): Minor cleanups. + + * files.texi (Visiting): filename -> file name. + + * emacs.texi (Top): Update subnode menus. + + * mule.texi (Coding Systems): Move char translation stuff here. + (Specify Coding, Output Coding): New nodes, out of Recognize Coding. + (Recognize Coding): Substantial local rewrites. + (International): Update menu. + + * display.texi (Auto Scrolling): New node, broken out of Scrolling. + (Scrolling): Substantial local rewrites. + (Display): Update menu and intro. + + * dired.texi: filename -> file name. + + * custom.texi (Safe File Variables): Texinfo usage fix. + +2006-07-03 Ted Zlatanov + + * help.texi, m-x.texi: Lots of cleanups. + +2006-06-30 Eli Zaretskii + + * msdog.texi (ls in Lisp, Windows Keyboard, Windows Mouse) + (Windows Processes, Windows Misc): Shorten the printed version by + selectively conditioning less important portions by @ifnottex. + +2006-06-27 Richard Stallman + + * mini.texi (Minibuffer File): Minor cleanup. + +2006-06-25 Nick Roberts + + * frames.texi (XTerm Mouse): Rename to... + (Text-Only Mouse): ...this. Mention t-mouse-mode. + + * emacs.texi (Top): Use new node name. + +2006-06-24 Eli Zaretskii + + * emacs.texi (Top): Update the detailed menu according to changes in + msdog.texi. + + * msdog.texi (Windows Keyboard): New section. + (Windows Mouse): New section. + (Windows System Menu): Remove section (text merged with "Windows + Keyboard"). + (Windows Misc): New section. + + * dired.texi (Dired Enter): Refer to msdog.texi for ls-lisp emulation. + + * msdog.texi (ls in Lisp): New section. + + * files.texi (Visiting): Document case-insensitive wildcard matching + under find-file-wildcards. + +2006-06-16 YAMAMOTO Mitsuharu + + * macos.texi (Mac Input): Add description of mac-function-modifier. + Now Unicode keyboard layouts work. + +2006-06-10 Richard Stallman + + * mule.texi (Recognize Coding): Clarify previous change. + +2006-06-09 Kenichi Handa + + * mule.texi (Recognize Coding): Describe the convention of "CODING!" + notation. + +2006-06-07 Kevin Ryde + + * mule.texi (Coding Systems): Footnote xref "MS-DOS and MULE" in main + manual for @ifnottex, but in emacs-extra for @iftex. + + * cmdargs.texi (General Variables): Fix smtpmail xref. + +2006-05-29 Stefan Monnier + + * programs.texi (Comment Commands): + * custom.texi (Specifying File Variables): + Use ;; instead of ;;; to better follow coding conventions. + +2006-06-07 Nick Roberts + + * building.texi (Watch Expressions): Move node to end. + (GDB Graphical Interface): Move description of clicks in fringe... + (GDB commands in the Fringe): ...to here. New node. + +2006-06-05 Romain Francoise + + * xresmini.texi (GTK resources): Fix various typos. + +2006-06-05 Nick Roberts + + * building.texi (GDB Graphical Interface): Update bindings. + (Commands of GUD): Add gud-print. Remove gud-run. + Restate availability more generally. + +2006-06-03 Ted Zlatanov + + * mini.texi: Lots of cleanups. + +2006-06-01 Luc Teirlinck + + * misc.texi (Shell History Copying): Update descriptions of `C-c RET' + and Mouse-2. + +2006-06-01 Jan Dj,Ad(Brv + + * screen.texi (Menu Bar): Change menu-bar-start to menu-bar-open. + +2006-05-31 Richard Stallman + + * basic.texi (Moving Point): Fix previous change. + +2006-05-29 Jan Dj,Ad(Brv + + * screen.texi (Menu Bar): F10 for Gtk+/Lesstif/Lucid menus. + +2006-05-28 Ted Zlatanov + + * basic.texi: Many simplifications and improvements in wording. + +2006-05-26 Nick Roberts + + * anti.texi (Antinews): Create a node for gdb-ui. + +2006-05-22 Reiner Steib + + * frames.texi (Menu Bars, Tool Bars): Add index entries. + +2006-05-20 Richard Stallman + + * dired.texi (Dired Navigation): dired-goto-file is now j. + +2006-05-20 Eli Zaretskii + + * mule.texi (Coding Systems): Mention the undecided-* coding systems + and their aliases. + + * msdog.texi (Windows Printing): Mention non-support of plain text + printing with some el-cheapo printers, and suggest a workaround. + +2006-05-20 Kevin Ryde + + * text.texi (TeX Print): tex-dvi-view-command has a default value, + remove the bit saying you must set it. + +2006-05-19 Luc Teirlinck + + * trouble.texi (Checklist): + * text.texi (Text, Auto Fill, Text Mode): + * search.texi (Nonincremental Search): + * rmail.texi (Rmail Labels): + * mule.texi (Input Methods, Multibyte Conversion): + * misc.texi (Gnus, Where to Look, PostScript): + * maintaining.texi (Create Tags Table): + * indent.texi (Indentation Commands): + * fixit.texi (Spelling): + * emacs.texi (Copying): + * custom.texi (Init File): ifinfo -> ifnottex. + +2006-05-17 Richard Stallman + + * files.texi (Diff Mode): Mention C-x `. + +2006-05-08 Richard Stallman + + * custom.texi (Disabling): Textual cleanups. + +2006-05-12 Glenn Morris + + * calendar.texi (Displaying the Diary, Format of Diary File): + Refer to diary-view-entries, diary-list-entries, + diary-show-all-entries rather than obsolete aliases. + +2006-05-12 Eli Zaretskii + + * calendar.texi (Calendar/Diary, Holidays, Displaying the Diary) + (Displaying the Diary, Special Diary Entries, Importing Diary): + * building.texi (Compilation Shell): + * buffers.texi (Several Buffers) [iftex]: Replace @xref's to + emacs-xtra with @inforef's. + + * files.texi (Visiting): Fix wording. + + * mule.texi (Coding Systems, Text Coding): More indexing. + Mention that C-x RET f can set eol conversion. + +2006-05-07 Jan Dj,Ad(Brv + + * xresmini.texi (GTK resources): Insert GTK description. + + * xresources.texi (GTK resources): metafont should be menufont. + +2006-05-06 Michael Albinus + + * mini.texi (Completion Options): Completion of remote files' + method, user name and host name is active only in partial + completion mode. + +2006-05-06 Eli Zaretskii + + * makefile.w32-in (emacs.dvi): + * Makefile.in (emacs.dvi): Add xresmini.texi. + + * xresmini.texi (Table of Resources): Remove xref to non-existent + node "LessTif Resources". + + * msdog.texi (Microsoft Windows): + * calendar.texi (Calendar/Diary, Displaying the Diary) + (Special Diary Entries, Importing Diary, Holidays): + * programs.texi (Program Modes): + * text.texi (Text): + * buffers.texi (Several Buffers): + * files.texi (Comparing Files): Fix cross-references to emacs-xtra. + +2006-05-06 Eli Zaretskii + + The following changes merge the emacs-xtra manual into the main + manual, but only for on-line version of the manual. + + * vc2-xtra.texi (Version Backups, Local Version Control) + (Making Snapshots, Change Logs and VC, Version Headers) + (Customizing VC, CVS Options) [ifnottex]: Conditional xref's for + on-line manual. + + * vc1-xtra.texi (VC Dired Mode) [ifnottex]: Conditional xref's + for on-line manual. + + * msdog-xtra.texi (MS-DOS, MS-DOS Keyboard, MS-DOS Mouse) + (MS-DOS Display, MS-DOS File Names, MS-DOS Printing) + (MS-DOS and MULE, MS-DOS Processes) [ifnottex]: Conditional xref's + for on-line manual. + + * fortran-xtra.texi (Fortran, Fortran Autofill) + (Fortran Autofill, Fortran Abbrev) [ifnottex]: Conditional xref's + for on-line manual. + + * picture-xtra.texi (Basic Picture, Rectangles in Picture) [ifnottex]: + Conditional xref's for on-line manual. + + * emerge-xtra.texi (Emerge, Overview of Emerge) + (Fine Points of Emerge) [ifnottex]: Conditional xref's for on-line + manual. + + * Makefile.in (INFO_TARGETS): Remove ../info/emacs-xtra. + (EMACS_XTRA): New variable, lists the new *-xtra.texi files. + (EMACSSOURCES): Use EMACS_XTRA. + (../info/emacs-xtra): Remove. + (emacs-xtra.dvi): Add EMACS_XTRA to prerequisites. + + * makefile.w32-in (INFO_TARGETS): Remove $(infodir)/emacs-xtra. + (EMACS_XTRA): New variable, lists the new *-xtra.texi files. + (EMACSSOURCES): Use EMACS_XTRA. + ($(infodir)/emacs-xtra): Remove. + (emacs-xtra.dvi): Add EMACS_XTRA to prerequisites. + + * trouble.texi (Quitting): + * text.texi (Text): + * programs.texi (Program Modes): + * msdog.texi (Microsoft Windows): + * frames.texi (Frames): + * files.texi (Backup, Version Control, VC Concepts) + (Types of Log File, Advanced C-x v v, Log Buffer, Old Versions) + (Registering, VC Status, VC Undo, Multi-User Branching) + (Comparing Files): + * calendar.texi (Calendar/Diary, Holidays, Displaying the Diary) + (Displaying the Diary, Special Diary Entries, Importing Diary): + * buffers.texi (Several Buffers): Replace inforef to emacs-xtra by + conditional xref's, depending on @iftex/@ifnottex. + + * msdog.texi (Microsoft Windows) [ifnottex]: Add menu entry for + "MS-DOS". @include msdog-xtra.texi. + + * programs.texi (Programs) [ifnottex]: Add menu entry for "Fortran". + [ifnottex]: @include fortran-xtra.texi. + + * files.texi (Secondary VC Commands) [ifnottex]: Add menu entries + for vc-xtra.texi subsections. + (VC Undo) [ifnottex]: @include vc1-xtra.texi and @lowersections it. + (Multi-User Branching) [ifnottex]: @include vc2-xtra.texi. + + * sending.texi (Sending Mail): A @node line without explicit Prev, + Next, and Up links. + + * abbrevs.texi (Abbrevs): A @node line without explicit Prev, + Next, and Up links. + + * emacs.texi (Top) [ifnottex]: Add menu entries for "Picture Mode" + and its sections. @include picture-xtra.texi. + + * maintaining.texi (Maintaining) [ifnottex]: Add menu entry for + "Emerge". + (List Tags) [ifnottex]: @include emerge-xtra.texi. + + * cal-xtra.texi (Daylight Savings): Remove this node: it is an + exact duplicate of its name-sake in calendar.texi. + + * calendar.texi (Calendar/Diary) [ifnottex]: Add menu item for + "Advanced Calendar/Diary Usage". + (Time Intervals) [ifnottex]: @include cal-xtra.texi. + + * dired.texi (Subdirectories in Dired) [ifnottex]: @include + dired-xtra.texi. + (Dired) [ifnottex]: Add menu entry for "Subdir Switches". + + * files.texi (Reverting) [ifnottex]: @include arevert-xtra.texi. + (Files) [ifnottex]: Add menu entry for Autorevert. + + * emacs-xtra.texi (Introduction): Reword to make consistent with + printed version only. + : Remove the body of all chapters and move them to the + new *-xtra.texi files. Use @raisesections and @lowersections to + convert sections to chapters etc. + + * msdog-xtra.texi: + * fortran-xtra.texi: + * vc-xtra.texi: + * vc1-xtra.texi: + * vc2-xtra.texi: + * emerge-xtra.texi: + * cal-xtra.texi: + * dired-xtra.texi: + * arevert-xtra.texi: New files, with text from respective chapters + of emacs-xtra.texi. Convert each @chapter into @section, @section + into @subsection, etc. + + * emacs-xtra.texi (MS-DOS): Renamed from "MS-DOG". All references + updated. + + * msdog.texi (Microsoft Windows): Rename from "Emacs and Microsoft + Windows". All references updated. + +2006-05-06 YAMAMOTO Mitsuharu + + * macos.texi (Mac Input): Mention input from Character Palette. + (Mac Font Specs): Fix typo. + +2006-05-05 Richard Stallman + + * files.texi (Diff Mode): Minor cleanup. + +2006-05-05 Karl Berry + + * emacs.texi: Call @fonttextsize 10, inside @tex to avoid + errors from the current release of makeinfo (4.8). + * help.texi (Library Keywords): Change widest word in multitable + template from `emulations' to `convenience'. (Not sure if this is + related to the font change.) + +2006-05-05 Eli Zaretskii + + * files.texi (File Names): Add a footnote about limited support of + ~USER on MS-Windows. + + * cmdargs.texi (Initial Options): Add a footnote about limited + support of ~USER on MS-Windows. + +2006-05-03 Richard Stallman + + * files.texi (Diff Mode): Node moved here. + (Comparing Files): Delete what duplicates new node. + (Files): Put Diff Mode in menu. + + * misc.texi (Diff Mode): Moved to files.texi. + + * emacs.texi (Top): Update menu for Diff Mode. + + * trouble.texi (Emergency Escape): Simplify. + + * emacs.texi (Top): Minor clarification. + +2006-05-03 Teodor Zlatanov + + * commands.texi, entering.texi, screen.texi: Many simplifications. + +2006-05-03 Richard Stallman + + * commands.texi (Text Characters): Delete paragraph about unibyte + non-ASCII printing chars. + + * killing.texi (Killing): Say "graphical displays". + * display.texi: Say "graphical displays". + + * cmdargs.texi (Misc X): Say "graphical displays". + +2006-05-01 Richard Stallman + + * emacs.texi (Top): Add Diff Mode to menu. + +2006-05-01 Aaron S. Hawley + + * misc.texi (Diff Mode): New node. + +2006-05-01 YAMAMOTO Mitsuharu + + * macos.texi (Mac International): Now Carbon Emacs has ATSUI support. + (Mac Environment Variables): Shorten example line. + (Mac Font Specs): Shorten lisp lines. Add descriptions for ATSUI. + +2006-05-01 Nick Roberts + + * building.texi (GUD Customization): Describe cases %d and %c. + Update description for %e. + +2006-04-30 Glenn Morris + + * calendar.texi (LaTeX Calendar): Mention cal-tex-preamble-extra. + +2006-04-29 Dan Nicolaescu + + * custom.texi (Examining): Update C-h v output example. + +2006-04-29 Kim F. Storm + + * building.texi (Grep Searching): Add lgrep and rgrep. + +2006-04-23 Richard Stallman + + * emacs.texi [TeX]: Use xresmini.texi instead of xresources.texi. + + * xresmini.texi: New file. + + * xresources.texi (Face Resources): Split table into font resources + and the rest. Combine similar attributes for brevity. + +2006-04-21 Eli Zaretskii + + * emacs-xtra.texi (MS-DOS File Names): Remove section about + backslashes and case-insensitivity in file names (moved to the + main manual). + (MS-DOS Printing): Move most of the text to the main manual. + + * msdog.texi (Windows Files, Windows HOME, MS-Windows Printing): + New nodes. + (Windows Processes, Windows System Menu): Add index entries and + fix wording. + +2006-04-18 J.D. Smith + + * misc.texi (Shell Ring): Add notes on saved input when + navigating off the end of the history list. + +2006-04-18 Chong Yidong + + * misc.texi (Shell Options): Correct default value of + comint-scroll-show-maximum-output. + +2006-04-18 Nick Roberts + + * building.texi (Watch Expressions): Update. + +2006-04-12 Richard Stallman + + * search.texi: Clean up previous change. + +2006-04-12 Eli Zaretskii + + * search.texi (Regexp Backslash, Regexp Replace): Add index + entries for ``back reference'' and mention the term itself in the + text. + +2006-04-11 Richard Stallman + + * custom.texi (Safe File Variables): + Document enable-local-variables = :safe. + +2006-04-11 Karl Berry + + * emacs-xtra.texi, emacs.texi (Dired under VC, VC Dired Commands) + (Remote Repositories, Version Backups, Local Version Control) + (Snapshots, Making and Using Snapshots, Snapshot Caveats) + (Miscellaneous Commands and Features of VC, Change Logs and VC) + (Renaming VC Work Files and Master Files) + (Inserting Version Control Headers, Customizing VC, General Options) + (Options for RCS and SCCS, Options specific for CVS): Move all + these nodes to emacs-xtra.texi, for brevity. + * cmdargs.texi, files.texi: Change cross-references. + +2006-04-11 J.D. Smith + + * files.texi (Old Versions): Update description of vc-annotate's + use of color to indicate date ranges. + +2006-04-09 Kevin Ryde + + * sending.texi (Mail Sending): In send-mail-function @pxref smtpmail, + put info and printed manual names the right way around. + +2006-04-09 Karl Berry + + * msdog.texi, emacs-xtra.texi: Move all the MS-DOS material to + emacs-xtra.texi, leaving only MS Windows information. + * building.texi, emacs.texi, frames.texi, gnu.texi, macos.texi, + * msdog.texi, mule.texi, trouble.texi: Change cross-references and + node names. + + * emacs.texi: Move @summarycontents and @contents to the beginning + of the file. + +2006-04-08 Kevin Ryde + + * text.texi (Fill Commands): fill-nobreak-predicate is now a hook. + +2006-04-07 Richard Stallman + + * programs.texi (Comments, Comment Commands, Options for Comments) + (Multi-Line Comments): "Align", not "indent". + (Basic Indent): C-j deletes trailing whitespace before the newline. + +2006-04-06 Richard Stallman + + * programs.texi (Basic Indent): Clarify relationship of C-j to TAB. + +2006-04-06 Eli Zaretskii + + * killing.texi (Rectangles): Add index entry for marking a rectangle. + +2006-04-05 Richard Stallman + + * emacs.texi (Top): Update subnode menu. + + * trouble.texi (Unasked-for Search): Node deleted. + (Lossage): Delete from menu. + +2006-04-04 Richard Stallman + + * trouble.texi: Various cleanups. + (Checklist): Don't bother saying how to snail a bug report. + (Emergency Escape): Much rewriting. + (After a Crash): Rename the core dump immediately. + (Total Frustration): Call it a psychotherapist. + (Bug Criteria): Avoid "illegal instruction". + (Sending Patches): We always put the contributor's name in. + + * misc.texi (Thumbnails): Minor correction. + +2006-04-03 Richard Stallman + + * misc.texi (Thumbnails): Minor cleanup. + +2006-04-02 Karl Berry + + * sending.texi (Mail Sending): pxref to Top needs five args. + + * texinfo.tex: Update to current version (2006-03-21.13). + +2006-03-31 Richard Stallman + + * emacs.texi (Top): Update subnode menu. + + * help.texi (Help Mode): Cleanup. + + * dired.texi: Many cleanups. + (Dired Deletion): Describe dired-recursive-deletes. + (Operating on Files): dired-create-directory moved. + (Misc Dired Features): Move to here. + (Tumme): Node moved to misc.texi. + + * custom.texi: Many cleanups. + (Minor Modes): Don't mention ISO Accents Mode. + (Examining): Update C-h v output example. + (Hooks): Add index and xref for add-hook. + (Locals): Delete list of vars that are always per-buffer. Rearrange. + (Local Keymaps): Don't mention lisp-mode-map, c-mode-map. + + * misc.texi: Many cleanups. + (beginning): Add to summary of topics. + (Shell): Put eshell xref at the end. Remove eshell from table. + (Thumbnails): New node. + +2006-03-28 Eli Zaretskii + + * files.texi (File Name Cache): Make it clear that the cache is + not persistent. + +2006-03-25 Karl Berry + + * emacs-xtra.texi, emacs.texi, gnu.texi: + (1) use @copyright{} instead of (C) in typeset text; + (2) do not indent copyright year list (or anything else). + +2006-03-21 Juanma Barranquero + + * files.texi (VC Dired Mode): Remove misplaced brackets. + +2006-03-21 Andre Spiegel + + * files.texi: Various updates and clarifications in the VC chapter. + +2006-03-19 Luc Teirlinck + + * help.texi (Help Mode): Document "C-c C-c". + +2006-03-16 Luc Teirlinck + + * emacs-xtra.texi (Top): Avoid ugly continuation line in + menu in the standalone Info reader. + +2006-03-15 Chong Yidong + + * emacs-xtra.texi (Emerge, Picture Mode, Fortran): New chapters, + moved here from Emacs manual. + + * programs.texi (Fortran): Section moved to emacs-xtra. + (Program Modes): Xref to Fortran in emacs-xtra. + + * maintaining.texi (Emerge): Move to emacs-xtra. + * files.texi (Comparing Files): Xref to Emerge in emacs-xtra. + + * picture.texi: File deleted. + * Makefile.in: + * makefile.w32-in: Remove picture.texi. + + * text.texi (Text): Xref to Picture Mode in emacs-xtra. + * abbrevs.texi (Abbrevs): + * sending.texi (Sending Mail): Picture node removed. + + * emacs.texi (Top): Update node listings. + +2006-03-12 Richard Stallman + + * calendar.texi: Various cleanups. + +2006-03-11 Luc Teirlinck + + * search.texi (Regexps): Use @samp for regexp that is not in Lisp + syntax. + +2006-03-08 Luc Teirlinck + + * search.texi (Regexps): More accurately describe which characters + are special in which situations. Recommend _not_ to quote `]' or + `-' when they are not special. + +2006-02-28 Andre Spiegel + + * files.texi (Old Versions): Clarify operation of C-x v =. + +2006-02-21 Nick Roberts + + * building.texi (Watch Expressions): Update and describe + gdb-speedbar-auto-raise. + +2006-02-19 Richard M. Stallman + + * emacs.texi: Use @smallbook. + (Top): Update ref to Emacs paper, delete ref to Cookbook. + Update subnode menu. + + * building.texi (Lisp Interaction): Minor addition. + +2006-02-18 Nick Roberts + + * building.texi (Watch Expressions): Update and be more precise. + +2006-02-15 Francesco Potort,Al(B + + * maintaining.texi (Create Tags Table): Explain why the + exception when etags writes to files under the /dev tree. + +2006-02-14 Richard M. Stallman + + * custom.texi (Safe File Variables): Lots of clarification. + Renamed from Unsafe File Variables. + +2006-02-14 Chong Yidong + + * custom.texi (Unsafe File Variables): File variable confirmation + assumed denied in batch mode. + +2006-02-14 Richard M. Stallman + + * building.texi (GDB User Interface Layout): Don't say `inferior' + for program being debugged. + +2006-02-15 Nick Roberts + + * building.texi (GDB Graphical Interface): + Replace gdb-use-inferior-io-buffer with gdb-use-separate-io-buffer. + +2006-02-13 Chong Yidong + + * custom.texi (Specifying File Variables, Unsafe File Variables): + New nodes, split from File Variables. Document new file local + variable behavior. + +2006-02-13 YAMAMOTO Mitsuharu + + * display.texi (Standard Faces): + * files.texi (Visiting): + * frames.texi (Clipboard): + * glossary.texi (Glossary) : + * xresources.texi (X Resources): Mention Mac OS port. + +2006-02-12 Richard M. Stallman + + * building.texi (Building): Clarify topic in intro. + + * maintaining.texi (Maintaining): Change title; clarify topic. + Delete duplicate index entries. + + * building.texi (Other GDB User Interface Buffers): Clarifications. + + * text.texi (Cell Commands): Clarifications. + + * programs.texi (Defuns): Delete duplicate explanation of + left-margin paren convention. + (Hungry Delete): Minor cleanup. + +2006-02-11 Mathias Dahl + + * dired.texi (Tumme): More tumme documentation. + +2006-02-11 Alan Mackenzie + + * programs.texi ("Hungry Delete"): Correct the appellation of the + backspace and delete keys to @kbd{DEL} and @kbd{DELETE}. + +2006-02-11 Mathias Dahl + + * dired.texi (Tumme): Fix small bug. + +2006-02-10 YAMAMOTO Mitsuharu + + * macos.texi (Mac International): Rename "fontset-mac" to + "fontset-standard". + +2006-02-09 Mathias Dahl + + * dired.texi (Tumme): Basic documentation for Tumme added. + +2006-02-07 Luc Teirlinck + + * mule.texi (International): + * programs.texi (Basic Indent): Fix typos. + + * custom.texi (Minor Modes): + * display.texi (Text Display): + * commands.texi (Text Characters): Update xrefs. + +2006-02-07 Richard M. Stallman + + * emacs.texi (Top): Update subnode menu. + Update info on old Emacs papers. + (Intro): "Graphical display", not window system. + + * xresources.texi (GTK styles): Minor clarifications. + + * trouble.texi: "Graphical display", not window system. + (Stuck Recursive): Minor clarification. + + * text.texi: Minor clarifications. + (Sentences): Explain why two-space convention is better. + Explain sentence-end-without-period here. + (Fill Commands): Not here. + (Refill): Node moved down. + (Filling): Update menu. + (Table Creation, Cell Justification, Column Commands): Clarify. + + * sending.texi: Minor clarifications. + + * search.texi (Regexp Backslash): Clarification. + + * rmail.texi: Minor cleanups. + (Rmail): Delete digression about `rmail-mode'. + (Rmail Inbox): Delete false advice wrt rmail-primary-inbox-list. + (Rmail Files): Mention C-u M-x rmail. + (Rmail Reply): Mention References. + (Rmail Display): Mention rmail-nonignored-headers. + + * programs.texi: Minor cleanups. + (Comment Commands): Mention momentary Transient Mark mode. + (Matching): Be more specific about customizing show-paren-mode. + (Info Lookup): Don't list the modes that support C-h S. + Just say what it does in an unsupported mode. + (Man Page): Delete excessive info on customizing woman. + (Motion in C): Don't mention c-for/backward-into-nomenclature. + + * abbrevs.texi: Minor clarifications. + (Dabbrev Customization): Talk about "dynamic abbrev expansion", + not "dynamic abbrevs" as if they were a kind of abbrev. + + * picture.texi (Picture): Minor cleanup. + + * mule.texi (Communication Coding): Say "other applications". + (Fontsets): Not specific to X. Add xref to X Resources. + (Unibyte Mode): Rename from Single-Byte Character Support. + "Graphical display", not window system. + (International): Update menu. + + * maintaining.texi (Format of ChangeLog): + New node, split out from ChangeLog. + (ChangeLog): Clarifications in the remaining text. + (Create Tags Table, Etags Regexps, Select Tags Table): Cleanups. + (Find Tag): Add @w. + (Tags Search): Explain tag table order here. Simplify grep ref. + (List Tags): tags-tag-face is a variable, not a face. + (Emerge): Cleanups. + + * kmacro.texi (Keyboard Macro Counter): Rewrite for clarity. + (Keyboard Macros): Avoid "the user". + + * killing.texi: "Graphical display", not window system. + + * help.texi (Help Echo): "Graphical display", not window system. + + * glossary.texi: Say "you", not "the user". Say "graphical display". + + * frames.texi: Minor cleanups. "Graphical display", not window system. + + * files.texi (Visiting): Make drag-and-drop not X-specific. + + * custom.texi: Minor cleanups. "Graphical display", not window system. + + * cmdargs.texi: Minor cleanups. + + * building.texi (Compilation): Move and split kill-compilation para. + Add para about multiple compilers. + (Compilation Mode): Commands also available in grep mode and others. + Mention C-u C-x ` more tutorially. Clarify C-x `. + (Compilation Shell): Clarify. Put Bash example first. + (Grep Searching): Minor cleanups; add @w. + (Debuggers): Minor cleanups. + (Starting GUD): Make GDB xgraphical mode issue clearer. + (Debugger Operation): Lots of clarifications including + GDB tooltip side-effect issue. + (Commands of GUD): Clarify. + (GUD Customization): Add bashdb-mode-hook. + (GDB Graphical Interface): Rewrite for clarity. + (GDB User Interface Layout): Rewrite for clarity. + (Stack Buffer, Watch Expressions): Likewise. + (Other GDB User Interface Buffers): Cleanups. + (Lisp Libraries, External Lisp): Cleanup. + + * basic.texi (Position Info): "Graphical displays", rather than + window systems. + + * anti.texi: Minor cleanup. + +2006-02-03 Eli Zaretskii + + * custom.texi (Init File, Find Init): Add cross-references to + where $HOME is described. + +2006-02-01 Luc Teirlinck + + * frames.texi (Frame Parameters): Remove @item for S-Mouse-1; it + is not inside the @table. + + * emacs.texi (Top): Correct node name. + + * files.texi (File Names): Fix @xref. + (Reverting): Fix typo. + + * mule.texi (International): Correct node name. + + * kmacro.texi (Save Keyboard Macro): Add missing @kbd to @table. + +2006-02-01 Richard M. Stallman + + * emacs.texi (Top): Update subnode menu. + + * mule.texi: Minor clarifications. + Reduce the specific references to X Windows. + Refer to "graphical" terminals, rather than window systems. + (Text Coding): Rename from Specify Coding. + (Communication Coding, File Name Coding, Terminal Coding): + New nodes split out from Text Coding. + + * kmacro.texi: Minor clarifications. + (Keyboard Macro Ring): Comment out some excessive commands. + (Basic Keyboard Macro): Split up the table, putting part in each node. + + * major.texi: Minor clarifications. + + * misc.texi (Single Shell, Interactive Shell): Fix xrefs. + + * windows.texi: Minor clarifications. + (Change Window): Don't describe mode-line mouse cmds here. + Add xref to Mode Line Mouse. + + * msdog.texi (Text and Binary, MS-DOS and MULE): Fix xrefs. + + * macos.texi (Mac International): Fix xref. + + * indent.texi: Minor clarifications. + + * frames.texi: Minor clarifications. + Reduce the specific references to X Windows. + Refer to "graphical" terminals, rather than window systems. + (Frame Parameters): Don't mention commands like + set-foreground-color. Just say to customize a face. + (Drag and Drop): Lisp-level stuff moved to Emacs Lisp manual. + + * files.texi: Minor clarifications. + (Numbered Backups): New node, split out from Backup Names. + + * display.texi (Font Lock): C mode no longer depends on (-in-col-0. + + * cmdargs.texi (General Variables): Fix xref. + + * buffers.texi: Minor clarifications. + +2006-01-31 Richard M. Stallman + + * display.texi (Scrolling, Horizontal Scrolling, Follow Mode): + Nodes moved to top. + + * display.texi: Minor clarifications. + (Display): Rearrange menu. + (Standard Faces): Mention query-replace face. + (Faces): Simplify. + (Font Lock): Simplify face customization info. + (Highlight Changes): Node merged into Highlight Interactively. + (Highlight Interactively): Much rewriting and cleanup. + (Optional Mode Line): Narrowed line number not good for goto-line. + Simplify face customization advice. + (Text Display): Mention use of escape-glyph face. + Move ctl-arrow and tab-width here. + (Display Custom): Move no-redraw-on-reenter to end of node. + + * search.texi: Minor clarifications. + (Isearch Scroll): Simplify. + (Other Repeating Search): Document multi-occur-in-matching-buffers. + + * regs.texi (Registers): Mention bookmarks here. + + * mark.texi: Minor clarifications. + (Selective Undo): Node deleted. + + * m-x.texi: Minor clarifications. + + * killing.texi: Minor clarifications. + Refer to "graphical" terminals, rather than window systems. + + * help.texi: Clarifications. + (Help): Don't describe C-h F and C-h K here. + (Key Help): Describe C-h K here. + (Name Help): Mention Emacs Lisp Intro. + Describe C-h F here. + (Misc Help): Mention C-h F and C-h K only briefly. + + * fixit.texi (Undo): New node, mostly copied from basic.texi. + Selective undo text merged in. + (Spelling): Mention Aspell along with Ispell. + + * emacs.texi (Top): Update subnode menus. + + * basic.texi (Basic Undo): Rename from Undo. Most of text + moved to new Undo node. + +2006-01-29 Chong Yidong + + * basic.texi (Continuation Lines, Inserting Text): + Mention longlines mode. + +2006-01-29 Richard M. Stallman + + * screen.texi: Minor cleaups. + (Screen): Clean up the intro paragraphs. + (Mode Line): Lots of rewriting. Handle frame-name better. + eol-mnemonic-... vars moved out. + + * emacs.texi (Top): Change menu item for MS-DOS node. + Update subnode menu. + + * msdog.texi (MS-DOS): Rewrite intro to explain how this + chapter relates to Windows. Title changed. + + * mini.texi: Minor cleanups. + + * mark.texi (Selective Undo): New node, text moved from basic.texi. + (Mark): Put it in the menu. + + * entering.texi: Minor cleanups. + + * emacs.texi (Top): Add xref to Mac chapter; explain Windows better. + (Intro): Refer to "graphical" terminals, rather than X. + + * display.texi (Display Custom): Add xref to Variables. + (Optional Mode Line): eol-mnemonic-... vars moved here. + + * commands.texi: Minor cleanups. Refer to "graphical" terminals, + rather than X. + + * basic.texi: Minor cleanups. + (Undo): selective-undo moved. + +2006-01-25 Luc Teirlinck + + * anti.texi (Antinews): Various corrections and additions. + +2006-01-23 Juri Linkov + + * custom.texi (Easy Customization, Customization Groups) + (Browsing Custom): Mention links along with buttons. + +2006-01-21 Eli Zaretskii + + * text.texi (TeX Print): Use @key for TAB. + + * kmacro.texi (Keyboard Macro Step-Edit): Use @key for TAB. + +2006-01-15 Sven Joachim (tiny change) + + * files.texi (File Aliases): Don't claim that usually separate + buffers are created for two file names that name the same data. + Mention additional situations where different names mean the same + file on disk. + +2006-01-19 Richard M. Stallman + + * killing.texi (Deletion): Upcase @key argument. + + * custom.texi (Custom Themes): Minor cleanup. + + * programs.texi (Hungry Delete): Upcase @key argument. + +2006-01-16 Juri Linkov + + * display.texi (Standard Faces): Add `mode-line-buffer-id'. + Move `mode-line-highlight' before `mode-line-buffer-id'. + +2006-01-14 Richard M. Stallman + + * basic.texi (Inserting Text): Minor cleanup. + +2006-01-11 Luc Teirlinck + + * custom.texi (Changing a Variable, Face Customization): + Update for changes in Custom menus. + +2006-01-05 YAMAMOTO Mitsuharu + + * macos.texi (Mac International): Undo last change. + +2006-01-02 Chong Yidong + + * custom.texi (Custom Themes): Describe the new + customize-create-theme interface. + +2005-12-30 Juri Linkov + + * basic.texi (Position Info): Update example. + +2005-12-27 Jan Dj,Ad(Brv + + * frames.texi (Dialog Boxes): Add x-gtk-show-hidden-files. + +2005-12-24 Chong Yidong + + * custom.texi (Custom Themes): `load-theme' always loads. + +2005-12-23 Juri Linkov + + * display.texi (Highlight Interactively): Use double space to + separate sentences. Replace C-p with M-p, and C-n with M-n. + +2005-12-22 Richard M. Stallman + + * custom.texi (Easy Customization and subnodes): + Replace "active field" with "button". + Use "user option" only for variables. + Use "setting" for variable-or-face. + +2005-12-22 Luc Teirlinck + + * buffers.texi (Select Buffer): Change order in table to make + "Similar" refer to the correct item. + (Indirect Buffers): Minor rewording. + +2005-12-20 Juri Linkov + + * files.texi (VC Status): Put P and N near p and n. + +2005-12-19 Richard M. Stallman + + * programs.texi (Electric C): Delete the info about newline control. + (Other C Commands): Minor cleanup. + (Left Margin Paren): Minor cleanup. + +2005-12-19 Luc Teirlinck + + * custom.texi (Easy Customization): Add "Browsing Custom" to menu. + (Customization Groups): Delete text moved to "Browsing Custom". + (Browsing Custom): New node. + (Specific Customization): Clarify which commands only work for + loaded options. + +2005-12-18 Bill Wohler + + * frames.texi (Tool Bars): Shorten text of previous change. + +2005-12-18 Aaron S. Hawley + + * files.texi (VC Status): Document log-view mode. + +2005-12-18 Bill Wohler + + * frames.texi (Tool Bars): Mention that you can turn off tool bars + permanently via the customize interface. + +2005-12-16 Ralf Angeli + + * killing.texi (Killing by Lines): Document `kill-whole-line' + function. + +2005-12-16 L$,1 q(Brentey K,Aa(Broly + + * buffers.texi (Select Buffer): Change `prev-buffer' to + `previous-buffer'. Indicate that these functions use a frame + local buffer list. + +2005-12-12 Richard M. Stallman + + * custom.texi (Easy Customization): Change menu comment. + (Prefix Keymaps): Fix spelling of Control-X-prefix. + + * help.texi (Apropos): Rewrite. Talk about "apropos patterns". + (Help): Among the Apropos commands, describe only C-h a here. + +2005-12-11 Richard M. Stallman + + * programs.texi (Options for Comments): Comment-end starts with space. + + * glossary.texi (Glossary): Minor cleanup. + + * files.texi (Old Versions): Use @table. + +2005-12-10 David Koppelman + + * display.texi (Highlight Interactively): Include + global-hi-lock-mode. Add miscellaneous details and elaborations. + +2005-12-09 Richard M. Stallman + + * display.texi (Font Lock): Delete the Global FL menu item. + +2005-12-09 Luc Teirlinck + + * custom.texi (Minibuffer Maps): Mention the maps for file name + completion. + +2005-12-09 Kim F. Storm + + * killing.texi (CUA Bindings): Describe how to use C-x and C-c as + prefix keys even when mark is active. Decribe that RET moves + cursor to next corner in rectangle; clarify insert around rectangle. + +2005-12-08 Luc Teirlinck + + * custom.texi (Customization): Use xref to elisp manual for + non-TeX output. + (Minor Modes): Update. + (Customization Groups, Changing a Variable, Face Customization): + Update for new appearance of Custom buffers. + (Changing a Variable): `custom-buffer-done-function' has been + replaced by `custom-buffer-done-kill'. + (Specific Customization): In the `customize-group' buffer, a + subgroup's contents are not "hidden". They are not included at + all. They have no [Show] button. + (Mouse Buttons): Add pxref to description of mouse event lists in + Elisp manual. Add `menu-bar' and `header-line' dummy prefix keys. + (Find Init): Emacs now looks for ~/.emacs.d/init.el instead of + ~/.emacs.d/.emacs, if it can not find ~/.emacs(.el). + +2005-12-08 Richard M. Stallman + + * mini.texi (Completion Commands, Completion): + In file name input, SPC does not do completion. + +2005-12-08 Nick Roberts + + * building.texi (GDB Graphical Interface): Explain screen size + setting. + (Other GDB User Interface Buffers): Describe features specific to + GDB 6.4. + +2005-12-01 Nick Roberts + + * building.texi (GDB User Interface Layout): Describe how to + kill associated buffers. + (Breakpoints Buffer): Use D instead of d for gdb-delete-breakpoint. + (Watch Expressions): Be more precise. + (Other GDB User Interface Buffers): Describe how to change a + register value. + +2005-11-24 YAMAMOTO Mitsuharu + + * macos.texi (Mac Input): Remove description of + mac-command-key-is-meta. Add descriptions of + mac-control-modifier, mac-command-modifier, and + mac-option-modifier. + (Mac International): Fix description of conversion of clipboard data. + (Mac Font Specs): Add example of font customization by face attributes. + +2005-11-22 Nick Roberts + + * building.texi (Watch Expressions): Expand description. + (Other GDB User Interface Buffers): Describe local map for + gud-watch. + +2005-11-21 Chong Yidong + + * display.texi (Font Lock): Font lock is enabled by default now. + +2005-11-20 Juri Linkov + + * basic.texi (Position Info): Update examples of the output. + Remove the fact that examples are produced in the TeXinfo buffer, + because in the Info reader users will get a different output from + `C-x ='. + + * building.texi (Compilation Mode): Remove paragraph duplicated + from the node `Compilation'. Add `compilation-skip-threshold'. + + * display.texi (Font Lock): Suggest more user-friendly method of + finding all Font Lock faces (M-x customize-group RET font-lock-faces). + +2005-11-18 Richard M. Stallman + + * files.texi (Registering): Mention @@ in mode line. + + * mini.texi (Minibuffer File): Clarify previous change. Add @findex. + +2005-11-08 Aaron S. Hawley + + * files.texi (Renaming and VC): Some back-ends don't + handle renaming. + +2005-11-17 Juri Linkov + + * emacs.texi (Top): + * display.texi (Highlight Interactively): Put this font-lock based + mode near Font Lock node. + +2005-11-16 Chong Yidong + + * ack.texi (Acknowledgments): Acknowledge Andrew Zhilin for Emacs + icons. + +2005-11-12 Kim F. Storm + + * help.texi (Help): Fix C-h a entry. Add C-h d entry. + (Help Summary): Add C-h d and C-h e. + (Apropos): Clarify that all apropos commands may search for either + list of words or a regexp. Add C-h d for apropos-documentation. + Describe apropos-documentation-sort-by-scores user option. + +2005-11-09 Luc Teirlinck + + * killing.texi (CUA Bindings): Add @section. + +2005-11-10 Kim F. Storm + + * emacs.texi (Top): Add CUA Bindings entry to menu. + + * killing.texi (CUA Bindings): New node. Moved here from + misc.texi and extended with info on rectangle commands and + rectangle highlighting, interface to registers, and the global + mark feature. + + * misc.texi (Emulation): Move CUA bindings item to killing.texi. + + * regs.texi: Prev link points to CUA Bindings node. + +2005-11-07 Luc Teirlinck + + * help.texi (Help Echo): By default, help echos are only shown on + mouse-over, not on point-over. + +2005-11-04 J,Ai(Br,At(Bme Marant + + * misc.texi (Shell Mode): Describe how to activate password echoing. + +2005-11-04 Romain Francoise + + * mark.texi (Mark Ring): Fix typo. + +2005-11-03 Richard M. Stallman + + * mark.texi (Mark Ring): Mention set-mark-command-repeat-pop. + +2005-11-01 Bill Wohler + + * help.texi (Help Mode): Fix typo. + +2005-11-01 Nick Roberts + + * building.texi (Other GDB User Interface Buffers): Describe + the command gdb-use-inferior-io-buffer. + +2005-10-31 Romain Francoise + + * files.texi (Compressed Files): Fix typo. + + * buffers.texi (Misc Buffer): Downcase `*shell*'. + + * windows.texi (Force Same Window): Likewise. + +2005-10-30 Bill Wohler + + * help.texi (Help Mode): URLs viewed with browse-url. + +2005-10-31 Nick Roberts + + * building.texi (GDB Graphical Interface): Don't reference + gdb-mouse-set-clear-breakpoint. Explain gdb-mouse-until + must stay in same frame. + +2005-10-29 Chong Yidong + + * custom.texi (Init File): Document ~/.emacs.d/init.el. + + * anti.texi (Antinews): Likewise. + +2005-10-28 Bill Wohler + + * help.texi (Help): Help mode now creates hyperlinks for URLs. + +2005-10-28 Richard M. Stallman + + * files.texi (Visiting): Explain how to enter ? in a file name. + + * trouble.texi (Memory Full): Mention !MEM FULL! in mode line. + +2005-10-25 Nick Roberts + + * building.texi (GDB Graphical Interface): Describe + gdb-mouse-until. + +2005-10-23 Richard M. Stallman + + * custom.texi (Init File): Recommend when to use site-start.el. + +2005-10-21 Juri Linkov + + * custom.texi (Examining): Mention accessing the old variable + value via M-n in set-variable. + +2005-10-18 Romain Francoise + + * files.texi (Version Systems): Capitalize GNU. + +2005-10-18 Nick Roberts + + * building.texi (Compilation Mode): Remove redundant paragraph. + (Watch Expressions): Remove paragraph to reflect code change. + +2005-10-16 Richard M. Stallman + + * building.texi (Compilation Mode, Compilation): Clarified. + +2005-10-15 Richard M. Stallman + + * misc.texi (Saving Emacs Sessions): Mention savehist library. + +2005-10-13 Kenichi Handa + + * basic.texi (Position Info): Fix previous change. + +2005-10-12 Jan Dj,Ad(Brv + + * cmdargs.texi (Icons X): Fix typo. + +2005-10-12 Kenichi Handa + + * basic.texi (Position Info): Describe the case that Emacs shows + "part of display ...". + +2005-10-10 Jan Dj,Ad(Brv + + * cmdargs.texi (Icons X): -nb => -nbi. + +2005-10-10 Chong Yidong + + * frames.texi (Speedbar): A couple more clarifications. + +2005-10-11 Nick Roberts + + * building.texi (GDB User Interface Layout): Improve diagram. + (Watch Expressions): Explain how to make speedbar global. + (Other GDB User Interface Buffers): Make references more precise. + +2005-10-09 Richard M. Stallman + + * frames.texi (Speedbar): Clarify the text. + +2005-10-09 Chong Yidong + + * frames.texi (Speedbar): Add information on keybindings, + dismissing the speedbar, and buffer display mode. Link to + speedbar manual. + +2005-10-09 Jan Dj,Ad(Brv + + * cmdargs.texi (Icons X): Removed options -i, -itype, --icon-type, + added -nb, --no-bitmap-icon. + +2005-10-07 Nick Roberts + + * building.texi (GDB Graphical Interface): Add variables and + functions to indices. Be more precise. + +2005-10-03 Jan Dj,Ad(Brv + + * frames.texi (Drag and Drop): Remove the x- from + x-dnd-open-file-other-window and xdnd-protocol-alist. + +2005-09-30 Romain Francoise + + * mini.texi (Minibuffer): The default value now appears before the + colon in minibuffer prompts. + +2005-09-25 Richard M. Stallman + + * search.texi (Regexp Search): Doc search-whitespace-regexp. + +2005-09-20 Emanuele Giaquinta (tiny change) + + * text.texi (Paragraphs): Correction about Paragraph-Indent Text mode. + +2005-09-21 YAMAMOTO Mitsuharu + + * emacs.texi (Top): Update submenus from macos.texi. + + * macos.texi: Change `Mac OS 8 or 9' to `Mac OS Classic'. + (Mac OS): Update feature support status. + (Mac Input): List supported input scripts. Remove description + about `mac-keyboard-text-encoding'. Mention mouse button + emulation and related variables. + (Mac International): Mention Central European and Cyrillic + support. Now `keyboard-coding-system' is dynamically changed. + Add description about coding system for selection. Add + description about language environment. + (Mac Environment Variables): Mention + `~/.MacOSX/environment.plist'. Give example of command line + arguments. Add Preferences support. + (Mac Directories): Explicitly state that this node is for Mac OS + Classic only. + (Mac Font Specs): Mention specification for scalable fonts. List + supported charsets. Add preferred way of creating fontsets. Add + description about `mac-allow-anti-aliasing'. + (Mac Functions): Add descriptions about `mac-set-file-creator', + `mac-get-file-creator', `mac-set-file-type', `mac-get-file-type', + and `mac-get-preference'. + +2005-09-16 Romain Francoise + + Update all files to specify GFDL version 1.2. + + * doclicense.texi (GNU Free Documentation License): Update to + version 1.2. + +2005-09-15 Richard M. Stallman + + * buffers.texi (List Buffers): Fix xref. + + * rmail.texi (Rmail Basics): Fix xref. + + * emacs.texi (Top): Update subnode menus. + + * files.texi (Saving Commands): New node, broken out of Saving. + (Customize Save): New node, broken out of Saving. + Clarify effect of write-region-inhibit-fsync. + (Misc File Ops): Say write-region-inhibit-fsync affects write-region. + +2005-09-14 Romain Francoise + + * files.texi (Saving): Mention write-region-inhibit-fsync. + +2005-09-05 Chong Yidong + + * custom.texi (Custom Themes): New node. + +2005-09-03 Richard M. Stallman + + * search.texi (Search Case): Mention vars that control + case-fold-search for various operations. + +2005-08-22 Juri Linkov + + * display.texi (Standard Faces): Merge the text from + `(elisp)Standard Faces' into this node. + +2005-08-18 Luc Teirlinck + + * emacs.texi (Top): Delete menu item for deleted node + Keyboard Translations. + +2005-08-18 Richard M. Stallman + + * trouble.texi (Unasked-for Search): + Delete xref to Keyboard Translations. + + * glossary.texi (Glossary): Delete xref. + + * custom.texi (Minor Modes): Say that the list here is not complete. + (Keyboard Translations): Node deleted. + (Disabling): Delete xref to it. + (Customization Groups): Fix Custom buffer example. + (Hooks): Mention remove-hooks. + +2005-08-17 Luc Teirlinck + + * building.texi (GDB Graphical Interface): Improve filling of menu + item. + +2005-08-18 Nick Roberts + + * building.texi (GDB Graphical Interface): Use better node names. + +2005-08-14 Richard M. Stallman + + * text.texi (Sentences): Fix xref. + +2005-08-14 Juri Linkov + + * building.texi (Compilation, Grep Searching): Move grep command + headings from `Compilation' to `Grep Searching'. + + * dired.texi (Dired and Find): + * maintaining.texi (Tags Search): Replace grep xref to + `Compilation' node with `Grep Searching'. + + * files.texi (Comparing Files): Replace xref to `Compilation' with + `Compilation Mode'. + +2005-08-13 Alan Mackenzie + + * search.texi (Non-ASCII Isearch): Correct a typo. + (Replacement Commands): Mention query-replace key binding. + +2005-08-11 Richard M. Stallman + + * programs.texi (Options for Comments): Fix xref. + + * search.texi (Regexp Backslash, Regexp Example): New nodes split + out of Regexps. + +2005-08-09 Juri Linkov + + * building.texi (Compilation): Use `itemx' instead of `item'. + (Grep Searching): Simplify phrase. + + * display.texi (Standard Faces): Describe vertical-border on + window systems. + + * windows.texi (Split Window): Simplify phrase and mention + vertical-border face. + +2005-08-09 Richard M. Stallman + + * files.texi (Comparing Files): Clarify compare-windows. + + * calendar.texi (Scroll Calendar): Document < and > in calendar. + +2005-08-06 Eli Zaretskii + + * mule.texi (Coding Systems): Rephrase the paragraph about + codepages: no need for "M-x codepage-setup" anymore, except on + MS-DOS. + + * msdog.texi (MS-DOS and MULE): Clarify that this section is for + the MS-DOS port only. + +2005-07-30 Eli Zaretskii + + * makefile.w32-in (info): Don't run multi-install-info.bat. + ($(infodir)/dir): New target, produced by running + multi-install-info.bat. + +2005-07-22 Eli Zaretskii + + * files.texi (Quoted File Names): Add index entry. + +2005-07-19 Juri Linkov + + * files.texi (Comparing Files): Mention resync for `compare-windows'. + +2005-07-18 Juri Linkov + + * custom.texi (Easy Customization): + * files.texi (Old Versions): + * frames.texi (Wheeled Mice): + * mule.texi (Specify Coding): + * text.texi (Cell Justification): + * trouble.texi (After a Crash): + * xresources.texi (GTK styles): + Delete duplicate duplicate words. + +2005-07-17 Richard M. Stallman + + * frames.texi (Creating Frames): Fix foreground color example. + + * custom.texi (Init Examples): Clean up text about conditionals. + +2005-07-16 Richard M. Stallman + + * mini.texi (Completion Commands): Fix command name for ?. + +2005-07-16 Eli Zaretskii + + * display.texi (Standard Faces): Explain that customization of + `menu' face has no effect on w32 and with GTK. Add + cross-references. + + * cmdargs.texi (General Variables): Clarify the default location + of $HOME on w32 systems. + +2005-07-15 Jason Rumney + + * cmdargs.texi (General Variables): Default HOME on MS Windows has + changed. + +2005-07-08 Kenichi Handa + + * mule.texi (Recognize Coding): Recommend + revert-buffer-with-coding-system instead of revert-buffer. + +2005-07-07 Richard M. Stallman + + * anti.texi (Antinews): Mention mode-line-inverse-video. + + * files.texi (Saving): Minor correction about C-x C-w. + + * display.texi (Display Custom): Don't mention mode-line-inverse-video. + +2005-07-07 Luc Teirlinck + + * search.texi (Isearch Scroll): Add example of using the + `isearch-scroll' property. + (Slow Isearch): Reference anchor for `baud-rate' instead of entire + `Display Custom' node. + (Regexp Replace): Put text that requires Emacs Lisp knowledge last + and de-emphasize it. + (Other Repeating Search): `occur' currently can not correctly + handle multiline matches. Correct, clarify and update description + of `flush-lines' and `keep-lines'. + + * display.texi (Display Custom): Add anchor for `baud-rate'. + +2005-07-07 Richard M. Stallman + + * gnu.texi: Update where to get GNU status; add refs for how to help. + Add footnotes 6 and 7. + +2005-07-04 Lute Kamstra + + Update FSF's address in GPL notices. + + * doclicense.texi (GNU Free Documentation License): + * trouble.texi (Checklist): Update FSF's address. + +2005-06-24 Richard M. Stallman + + * display.texi (Text Display): Change index entries. + +2005-06-24 Eli Zaretskii + + * makefile.w32-in (MAKEINFO): Use --force. + (INFO_TARGETS, DVI_TARGETS): Make identical to the lists in + Makefile.in. + +2005-06-23 Richard M. Stallman + + * anti.texi (Antinews): Renamed show-nonbreak-escape to + nobreak-char-display. + + * emacs.texi (Top): Update detailed node listing. + + * display.texi (Text Display): Renamed show-nonbreak-escape + to nobreak-char-display and no-break-space to nobreak-space. + (Standard Faces): Split up the list of standard faces + and put it in a separate node. Add nobreak-space and + escape-glyph. + +2005-06-23 Lute Kamstra + + * mule.texi (Select Input Method): Fix typo. + +2005-06-23 Kenichi Handa + + * mule.texi (International): List all supported scripts. Adjust + text for that leim is now included in the normal Emacs + distribution. + (Language Environments): List all language environments. + Intlfonts contains fonts for most supported scripts, not all.. + (Select Input Method): Refer to C-u C-x = to see how to type to + input a specifc character. + (Recognize Coding): Fix typo, china-iso-8bit -> chinese-iso-8bit. + +2005-06-23 Juanma Barranquero + + * building.texi (Grep Searching): Texinfo usage fix. + +2005-06-22 Miles Bader + + * display.texi (Faces): Change `vertical-divider' to `vertical-border'. + +2005-06-20 Miles Bader + + * display.texi (Faces): Add `vertical-divider'. + +2005-06-17 Richard M. Stallman + + * text.texi (Adaptive Fill): Minor clarification. + +2005-06-10 Lute Kamstra + + * emacs.texi (Top): Correct version number. + * anti.texi (Antinews): Correct version number. Use EMACSVER to + refer to the current version of Emacs. + +2005-06-08 Luc Teirlinck + + * files.texi (Log Buffer): Document when there can be more than + one file to be committed. + +2005-06-08 Juri Linkov + + * display.texi (Faces): Add `shadow' face. + +2005-06-07 Masatake YAMATO + + * display.texi (Faces): Write about mode-line-highlight. + +2005-06-06 Richard M. Stallman + + * misc.texi (Printing Package): Explain how to initialize + printing package. + + * cmdargs.texi (Action Arguments): Clarify directory default for -l. + +2005-06-05 Chong Yidong + + * emacs.texi: Rename Hardcopy to Printing. + Make PostScript and PostScript Variables subnodes of it. + + * misc.texi (Printing): Rename node from Hardcopy. + Mention menu bar options. + Move PostScript and PostScript Variables to submenu. + (Printing package): New node. + + * mark.texi (Using Region): Change Hardcopy xref to Printing. + + * dired.texi (Operating on Files): Likewise. + + * calendar.texi (Displaying the Diary): Likewise. + + * msdog.texi (MS-DOS Printing, MS-DOS Processes): Likewise. + + * glossary.texi (Glossary): Likewise. + + * frames.texi (Mode Line Mouse): Mention mode-line-highlight + effect. + +2005-06-04 Richard M. Stallman + + * trouble.texi (After a Crash): Polish previous change. + +2005-05-30 Noah Friedman + + * trouble.texi (After a Crash): Mention emacs-buffer.gdb as a + recovery mechanism. + +2005-05-28 Nick Roberts + + * building.texi (Other Buffers): SPC toggles display of + floating point registers. + +2005-05-27 Nick Roberts + + * files.texi (Log Buffer): Merge in description of Log Edit + mode from pcl-cvs.texi. + +2005-05-26 Richard M. Stallman + + * building.texi (Lisp Eval): C-M-x with arg runs Edebug. + +2005-05-24 Luc Teirlinck + + * fixit.texi (Spelling): Delete confusing sentence; flyspell is + not enabled by default. + When not on a word, `ispell-word' by default checks the word + before point. + +2005-05-24 Nick Roberts + + * building.texi (Debugger Operation): Simplify last sentence. + +2005-05-23 Lute Kamstra + + * emacs.texi: Update FSF's address throughout. + (Preface): Use @cite. + (Distrib): Add cross reference to the node "Copying". Mention the + FDL. Don't refer to etc/{FTP,ORDERS}. Mention the sale of + printed manuals. + (Intro): Use @xref for the Emacs Lisp Intro. + +2005-05-18 Luc Teirlinck + + * buffers.texi (Select Buffer): Document `C-u M-g M-g'. + + * basic.texi (Moving Point): Mention default for `goto-line'. + + * programs.texi (Lisp Doc): Eldoc mode shows only the first line + of a variable's docstring. + +2005-05-18 Lute Kamstra + + * maintaining.texi (Overview of Emerge): Add cross reference. + Remove duplication. + + * emacs.texi (Top): Update to the current structure of the manual. + * misc.texi (Emacs Server): Add menu description. + * files.texi (Saving): Fix menu. + * custom.texi (Customization): Fix menu. + * mule.texi (International): Fix menu. + * kmacro.texi (Keyboard Macros): Fix menu. + +2005-05-16 Luc Teirlinck + + * display.texi: Various minor changes. + (Faces): Delete text that is repeated in the next section. + +2005-05-16 Nick Roberts + + * building.texi (Debugger Operation): Mention GUD tooltips are + disabled with GDB in text command mode. + +2005-05-16 Nick Roberts + + * building.texi: Replace toolbar with "tool bar" for consistency. + (Compilation Mode): Describe compilation-context-lines + and use of arrow in compilation buffer. + (Debugger Operation): Replace help text with variable's value. + + * frames.texi (Tooltips): Replace toolbar with "tool bar" for + consistency. + +2005-05-15 Luc Teirlinck + + * major.texi (Choosing Modes): normal-mode processes the -*- line. + Add xref. + +2005-05-14 Luc Teirlinck + + * basic.texi (Moving Point): Mention `M-g g' binding for `goto-line'. + (Position Info): Delete discussion of `goto-line'. It is already + described in `Moving point'. + + * mini.texi (Completion Commands): Correct reference. + (Completion Options): Fix typo. + + * killing.texi (Deletion): Complete description of `C-x C-o'. + +2005-05-10 Richard M. Stallman + + * building.texi (Compilation): Clarify recompile's directory choice. + + * frames.texi (Tooltips): Cleanups. + + * basic.texi (Arguments): Fix punctuation. + +2005-05-09 Luc Teirlinck + + * screen.texi (Menu Bar): The up and down (not left and right) + arrow keys move through a keyboard menu. + +2005-05-08 Luc Teirlinck + + * basic.texi: Various typo and grammar fixes. + (Moving Point): C-a now runs move-beginning-of-line. + +2005-05-08 Nick Roberts + + * building.texi (Debugger Operation): Describe gud-tooltip-echo-area. + + * frames.texi (Tooltips): Describe help tooltips and GUD tooltips + as different animals. + +2005-05-07 Luc Teirlinck + + * frames.texi (Mouse References): Clarify `mouse-1-click-follows-link'. + Correct index entry. + +2005-05-07 Nick Roberts + + * building.texi (Debugger Operation): Update to reflect changes + in GUD tooltips. + +2005-04-30 Richard M. Stallman + + * files.texi (Compressed Files): Auto Compression normally enabled. + + * building.texi (Debugger Operation): Clarify previous change. + +2005-04-28 Nick Roberts + + * building.texi (Debugger Operation): Add description for + GUD tooltips when program is not running. + +2005-04-26 Luc Teirlinck + + * misc.texi (Shell): Add `Shell Prompts' to menu. + (Shell Mode): Add xref to `Shell Prompts'. Clarify `C-c C-u' + description. Delete remarks moved to new node. + (Shell Prompts): New node. + (History References): Replace remarks moved to `Shell Prompts' + with xref to that node. + (Remote Host): Clarify how to specify the terminal type when + logging in to a different machine. + +2005-04-26 Richard M. Stallman + + * emacs.texi (Top): Update submenus from files.texi. + + * files.texi (Filesets): Clarify previous change. + + * dired.texi (Misc Dired Features): Clarify previous change. + +2005-04-25 Chong Yidong + + * ack.texi (Acknowledgments): Delete info about iso-acc.el. + + * dired.texi (Misc Dired Features): Document + dired-compare-directories. + + * files.texi (Filesets): New node. + (File Conveniences): Document Image mode. + + * text.texi (TeX Print): Document tex-compile. + +2005-04-25 Luc Teirlinck + + * frames.texi (Tooltips): Tooltip mode is enabled by default. + Delete redundant reference to tooltip Custom group. It is + referred too again in the next paragraph. + +2005-04-24 Richard M. Stallman + + * ack.texi: Delete info about lazy-lock.el and fast-lock.el. + +2005-04-19 Kim F. Storm + + * building.texi (Compilation Mode): Add M-g M-n and M-g M-p bindings. + +2005-04-18 Lars Hansen + + * misc.texi (Saving Emacs Sessions): Add that "--no-desktop" now + turns off desktop-save-mode. + +2005-04-17 Luc Teirlinck + + * frames.texi (XTerm Mouse): Xterm Mouse mode is no longer enabled + by default in terminals compatible with xterm. Mention that + xterm-mouse-mode is a minor mode and put in pxref to Minor Modes + node. + +2005-04-12 Luc Teirlinck + + * frames.texi (XTerm Mouse): Xterm Mouse mode is now enabled by default. + +2005-04-12 Jan Dj,Ad(Brv + + * xresources.texi (Table of Resources): Add cursorBlink. + +2005-04-11 Luc Teirlinck + + * rmail.texi (Rmail Summary Edit): Explain numeric arguments to + `d', `C-d' and `u'. + +2005-04-11 Richard M. Stallman + + * cmdargs.texi (Initial Options): -Q is now --quick, and does less. + (Misc X): Add -D, --basic-display. + + * maintaining.texi (Change Log): Correct the description of + the example. + + * major.texi (Choosing Modes): Document magic-mode-alist. + +2005-04-10 Luc Teirlinck + + * rmail.texi (Rmail Basics): Clarify description of `q' and `b'. + (Rmail Deletion): `C-d' in RMAIL buffer does not accept a numeric arg. + (Rmail Inbox): Give full name of `rmail-primary-inbox-list'. + (Rmail Output): Clarify which statements apply to `o', `C-o' and + `w', respectively. + (Rmail Labels): Mention `l'. + (Rmail Attributes): Correct pxref. Mention `stored' attribute. + (Rmail Summary Edit): Describe `j' and RET. + +2005-04-10 Jan Dj,Ad(Brv + + * xresources.texi (Lucid Resources): Add fontSet resource. + +2005-04-09 Luc Teirlinck + + * display.texi (Useless Whitespace): `indicate-unused-lines' is + now called `indicate-empty-lines'. + +2005-04-06 Kim F. Storm + + * cmdargs.texi (Initial Options): Add --bare-bones alias for -Q. + +2005-04-04 Luc Teirlinck + + * dired.texi (Dired Visiting): `dired-view-command-alist' has been + deleted. + (Marks vs Flags): Add some convenient key bindings. + (Hiding Subdirectories): Delete redundant and inaccurate sentence. + (Misc Dired Features): Correct and expand description of `w' command. + + * frames.texi (XTerm Mouse): Delete apparently false info. + The GNU/Linux console currently does not appear to support + `xterm-mouse-mode'. + +2005-04-03 Glenn Morris + + * calendar.texi (Diary): Mention shell utility `calendar'. + +2005-04-01 Richard M. Stallman + + * cmdargs.texi (Misc X): Explain horizontal scroll bars don't exist. + +2005-04-01 Lute Kamstra + + * maintaining.texi (Change Log): add-change-log-entry uses + add-log-mailing-address. + +2005-03-31 Luc Teirlinck + + * files.texi (Reverting): Move `auto-revert-check-vc-info' to + `VC Mode Line' and put in an xref to that node. + (VC Mode Line): Move `auto-revert-check-vc-info' here and clarify + its description. + +2005-03-31 Paul Eggert + + * calendar.texi (Calendar Systems): Say that the Persian calendar + implemented here is the arithmetical one championed by Birashk. + +2005-03-30 Glenn Morris + + * programs.texi (Fortran Motion): Fix previous change. + +2005-03-29 Richard M. Stallman + + * mule.texi (Single-Byte Character Support): Reinstall the C-x 8 info. + +2005-03-29 Chong Yidong + + * text.texi (Refill): Refer to Long Lines Mode. + (Longlines): New node. + (Auto Fill): Don't index "word wrap" here. + (Filling): Add Longlines to menu. + +2005-03-29 Richard M. Stallman + + * xresources.texi: Minor fixes. + + * misc.texi (Emacs Server): Fix Texinfo usage. + + * emacs.texi (Top): Don't use a real section heading for + "Detailed Node Listing". Fake it instead. + + * basic.texi (Position Info): Minor cleanup. + + * mule.texi (Input Methods): Minor cleanup. + +2005-03-29 Glenn Morris + + * programs.texi (ForIndent Vars): `fortran-if-indent' does other + constructs as well. + (Fortran Motion): Add fortran-end-of-block, fortran-beginning-of-block. + +2005-03-29 Kenichi Handa + + * mule.texi (Input Methods): Refer to the command C-u C-x =. + + * basic.texi (Position Info): Update the description about the + command C-u C-x =. + +2005-03-28 Richard M. Stallman + + * emacs.texi (Top): Use @section for the detailed node listing. + + * calendar.texi: Minor fixes to previous change. + + * programs.texi (Fortran): Small fixes to previous changes. + + * emacs.texi (Top): Update list of subnodes of Dired. + Likewise for building.texi. + + * files.texi (File Conveniences): Delete Auto Image File mode. + +2005-03-28 Chong Yidong + + * building.texi (Flymake): New node. + + * custom.texi (Function Keys): Document kp- event types and + keypad-setup package. + + * dired.texi (Wdired): New node. + + * files.texi (File Conveniences): Reorder entries. + Explain how to turn on Auto-image-file mode. + Document Thumbs mode. + + * mule.texi (Specify Coding): Document recode-region and + recode-file-name. + + * programs.texi (Program Modes): Add Conf mode and DNS mode. + +2005-03-27 Luc Teirlinck + + * commands.texi (Keys): M-o is now a prefix key. + +2005-03-27 Glenn Morris + + * programs.texi: Reformat and update copyright years. + (Fortran): Update section. + +2005-03-26 Luc Teirlinck + + * files.texi: Several small changes in addition to: + (Visiting): Change xref for Dialog Boxes to ref. + (Version Headers): Replace references to obsolete var + `vc-header-alist' with `vc-BACKEND-header'. + (Customizing VC): Update value of `vc-handled-backends'. + +2005-03-26 Glenn Morris + + * emacs-xtra.texi (Advanced Calendar/Diary Usage): New section; + move here from Emacs Lisp Reference Manual. + * calendar.texi (Calendar/Diary, Diary Commands) + (Special Diary Entries, Importing Diary): Change some xrefs to + point to emacs-xtra rather than elisp. + + * emacs-xtra.texi (Calendar Customizing): + Move view-diary-entries-initially, view-calendar-holidays-initially, + mark-diary-entries-in-calendar, mark-holidays-in-calendar to main + Emacs Manual. + (Appt Customizing): Merge entire section into main Emacs Manual. + * calendar.texi (Holidays): Move view-calendar-holidays-initially, + mark-holidays-in-calendar here from emacs-xtra. + (Displaying the Diary): Move view-diary-entries-initially, + mark-diary-entries-in-calendar here from emacs-xtra. + (Appointments): Move appt-display-mode-line, + appt-display-duration, appt-disp-window-function, + appt-delete-window-function here from emacs-xtra. + + * calendar.texi: Update and reformat copyright. + Change all @xrefs to the non-printing emacs-xtra to @inforefs. + (Calendar/Diary): Menu now only on Mouse-3, not C-Mouse-3. + (Diary): Refer to `diary-file' rather than ~/diary. + (Diary Commands): Rename node to "Displaying the Diary". + * emacs.texi (Top): Rename "Diary Commands" section. + * misc.texi (Hardcopy): Rename "Diary Commands" xref. + +2005-03-26 Eli Zaretskii + + * misc.texi (Emacs Server): Fix the command for setting + server-name. Add an xref to Invoking emacsclient. + + * help.texi (Help Summary): Clarify when "C-h ." will do something + nontrivial. + (Apropos): Add cindex entry for apropos-sort-by-scores. + + * display.texi (Text Display): Add index entries for how no-break + characters are displayed. + +2005-03-26 Eli Zaretskii + + * files.texi (Visiting): Fix cross-references introduced with the + last change. + + * xresources.texi (GTK resources): Fix last change. + +2005-03-25 Chong Yidong + + * xresources.texi (X Resources): GTK options documented too. + (Resources): Clarify meaning of program name. + (Table of Resources): Add visualClass. + (GTK resources): Rewrite. + (GTK widget names, GTK Names in Emacs, GTK styles): Cleanups. + + * display.texi (Text Display): Mention non-breaking spaces. + + * files.texi (Reverting): Document auto-revert-check-vc-info. + + * frames.texi (Mouse Commands): Document + x-mouse-click-focus-ignore-position and mouse-drag-copy-region. + + * help.texi (Help Summary): Add `C-h .'. + (Apropos): Apropos accepts a list of search terms. + Document apropos-sort-by-scores. + (Help Echo): Document display-local-help. + + * misc.texi (Emacs Server): Document server-name. + (Invoking emacsclient): Document -s option for server names. + + * text.texi (Outline Visibility): Introduce "current heading + line" (commands can be called with point on a body line). + Re-order table to follow the sequence of discussion. + hide-body won't hide lines before first header line. + (TeX Mode): Add DocTeX mode. + +2005-03-24 Richard M. Stallman + + * mule.texi (Single-Byte Character Support): Delete mention + of iso-acc.el and iso-transl.el. + +2005-03-23 Lute Kamstra + + * search.texi (Non-ASCII Isearch): Rename from Non-Ascii Isearch. + +2005-03-23 Richard M. Stallman + + * search.texi: Delete explicit node pointers. + (Incremental Search): New menu. + (Basic Isearch, Repeat Isearch, Error in Isearch) + (Non-Ascii Isearch, Isearch Yank, Highlight Isearch, Isearch Scroll) + (Slow Isearch): New subnodes. + (Configuring Scrolling): Node deleted. + (Search Case): Doc default-case-fold-search. + (Regexp Replace): Move replace-regexp doc here. + + * rmail.texi (Movemail): Put commas inside closequotes. + + * picture.texi (Insert in Picture): Document C-c arrow combos. + (Basic Picture): Clarify erasure. + + * display.texi (Font Lock): Put commas inside closequotes. + + * cmdargs.texi (General Variables): Put commas inside closequotes. + +2005-03-23 Nick Roberts + + * building.texi (Stack Buffer): Mention reverse contrast for + *selected* frame (might not be current frame). + +2005-03-21 Richard M. Stallman + + * building.texi (Starting GUD): Add bashdb. + +2005-03-20 Chong Yidong + + * basic.texi (Moving Point): Add M-g M-g binding. + (Undo): Document undo-only. + (Position Info): Document M-g M-g and C-u M-g M-g. + + * building.texi (Building): Put Grep Searching after Compilation + Shell. + (Compilation Mode): Document M-n, M-p, M-}, M-{, and C-c C-f bindings. + Document next-error-highlight. + (Grep Searching): Document grep-highlight-matches. + (Lisp Eval): Typing C-x C-e twice prints integers specially. + + * calendar.texi (Importing Diary): Rename node from iCalendar. + Document diary-from-outlook. + + * dired.texi (Misc Dired Features): Rename node from Misc Dired + Commands. + Mention effect of X drag and drop on Dired buffers. + + * files.texi (Visiting): Document large-file-warning-threshold. + Move paragraph on file-selection dialog. + Mention visiting files using X drag and drop. + (Reverting): Mention using Auto-Revert mode to tail files. + Document auto-revert-tail-mode. + (Version Systems): Minor correction. + (Comparing Files): Diff-mode is no longer based on Compilation + mode. + Document compare-ignore-whitespace. + (Misc File Ops): Explain passing a directory to rename-file. + Likewise for copy-file and make-symbolic-link. + + * frames.texi (Wheeled Mice): Mouse wheel support on by default. + Document mouse-wheel-progressive speed. + + * help.texi (Misc Help): Document numeric argument for C-h i. + Correctly explain the effect of just C-u as argument. + + * killing.texi (Deletion): Document numeric argument for + just-one-space. + + * mini.texi (Completion): Completion acts on text before point. + + * misc.texi (Saving Emacs Sessions): Document desktop-restore-eager. + (Emulation): CUA mode replaces pc-bindings-mode, + pc-selection-mode, and s-region. + + * mule.texi (Input Methods): Leim is now built-in. + (Select Input Method): Document quail-show-key. + (Specify Coding): Document revert-buffer-with-coding-system. + + * programs.texi (Fortran Motion): Document f90-next-statement, + f90-previous-statement, f90-next-block, f90-previous-block, + f90-end-of-block, and f90-beginning-of-block. + + * text.texi (Format Faces): Replace old M-g key prefix with M-o. + + * emacs.texi (Acknowledgments): Updated. + + * anti.texi: Total rewrite. + +2005-03-19 Chong Yidong + + * ack.texi (Acknowledgments): Update. + +2005-03-19 Eli Zaretskii + + * anti.texi (Antinews): Refer to Emacs 21.4, not 21.3. Update + copyright years. + +2005-03-14 Nick Roberts + + * building.texi (Commands of GUD): Move paragraph on setting + breakpoints with mouse to the GDB Graphical Interface node. + +2005-03-07 Richard M. Stallman + + * misc.texi (Single Shell, Shell Options): Fix previous change. + + * building.texi (Debugger Operation): Update GUD tooltip enable info. + +2005-03-06 Richard M. Stallman + + * building.texi (Starting GUD): Don't explain text vs graphical + GDB here. Just mention it and xref. + Delete "just one debugger process". + (Debugger Operation): Move GUD tooltip info here. + (GUD Tooltips): Node deleted. + (GDB Graphical Interface): Explain the two GDB modes here. + + * sending.texi (Sending Mail): Minor cleanup. + (Mail Aliases): Explain quoting conventions. + Update key rebinding example. + (Header Editing): C-M-i is like M-TAB. + (Mail Mode Misc): mail-attach-file does not do MIME. + + * rmail.texi (Rmail Inbox): Move text from Remote Mailboxes + that really belongs here. + (Remote Mailboxes): Text moved to Rmail Inbox. + (Rmail Display): Mention Mouse-1. + (Movemail): Clarify two movemail versions. + Clarify rmail-movemail-program. + + * misc.texi (Single Shell): Replace uudecode example with gpg example. + Document async shell commands. + (Shell History): Clarify. + (Shell Ring): Mention C-UP an C-DOWN. + (Shell Options): Add comint-prompt-read-only. + (Invoking emacsclient): Set EDITOR to run Emacs. + (Sorting): No need to explain what region is. + (Saving Emacs Sessions): Fix typo. + (Recursive Edit): Fix punctuation. + (Emulation): Don't mention "PC bindings" which are standard. + (Hyperlinking): Explain Mouse-1 convention here. + (Find Func): Node deleted. + + * help.texi (Name Help): Xref to Hyperlinking. + + * glossary.texi (Glossary): + Rename "Balance Parentheses" to "Balancing...". + Add "Byte Compilation". Correct "Copyleft". + New xref in "Customization". + Clarify "Current Line", "Echoing", "Fringe", "Frame", "Speedbar". + Add "Graphical Terminal" "Keybinding", "Margin", "Window System". + Rename "Registers" to "Register". + Replace "Selecting" with "Selected Frame", + "Selected Window", and "Selecting a Buffer". + + * files.texi (Types of Log File): Explain how projects' + methods can vary. + + * display.texi (Faces): Delete "Emacs 21". + + * custom.texi (Changing a Variable): C-M-i like M-TAB. + * fixit.texi (Spelling): C-M-i like M-TAB. + * mini.texi (Completion Options): C-M-i like M-TAB. + * programs.texi (Symbol Completion): C-M-i like M-TAB. + * text.texi (Text Mode): C-M-i like M-TAB. + + * commands.texi (Keys): Mention F1 and F2 in list of prefixes. + + * calendar.texi (Specified Dates): Mention `g w'. + (Appointments): appt-activate toggles with no arg. + +2005-03-05 Juri Linkov + + * cmdargs.texi (Emacs Invocation): Add cindex + "invocation (command line arguments)" + (Misc X): Add -nbc, --no-blinking-cursor. + +2005-03-04 Ulf Jasper + + * calendar.texi (iCalendar): No need to require it now. + +2005-03-03 Nick Roberts + + * trouble.texi (Contributing): Mention Savannah. Direct users to + emacs-devel. + +2005-03-01 Glenn Morris + + * calendar.texi (Adding to Diary): Mention redrawing of calendar + window. + +2005-02-27 Richard M. Stallman + + * building.texi (Compilation): Update mode line status info. + +2005-02-27 Matt Hodges + + * calendar.texi (General Calendar): Document binding of + scroll-other-window-down. + (Mayan Calendar): Fix earliest date. + (Time Intervals): Document timeclock-change. + Fix timeclock-ask-before-exiting documentation. + +2005-02-26 Kim F. Storm + + * frames.texi (Mouse References): + Add mouse-1-click-in-non-selected-windows. + +2005-02-25 Richard M. Stallman + + * screen.texi (Screen): Explain better about cursors and mode lines; + don't presuppose text terminals. + (Point): Don't assume just one cursor. + Clarify explanation of cursors. + (Echo Area, Menu Bar): Cleanups. + + * mini.texi (Minibuffer): Prompts are highlighted. + (Minibuffer Edit): Newline = C-j only on text terminals. + Clarify resize-mini-windows values. + Mention M-PAGEUP and M-PAGEDOWN. + (Completion Commands): Mouse-1 like Mouse-2. + (Minibuffer History): Explain history commands better. + (Repetition): Add xref to Incremental Search. + + * mark.texi (Setting Mark): Clarify info about displaying mark. + Clarify explanation of C-@ and C-SPC. + (Transient Mark): Mention Delete Selection mode. + (Marking Objects): Clean up text about extending the region. + + * m-x.texi (M-x): One C-g doesn't always go to top level. + No delay before suggest-key-bindings output. + + * fixit.texi (Fixit): Mention C-/ for undo. + (Spelling): Mention ESC TAB like M-TAB. + Replacement words with r and R are rechecked. + Say where C-g leaves point. Mention ? as input. + +2005-02-23 Lute Kamstra + + * cmdargs.texi (Initial Options): Add cross reference. + +2005-02-16 Luc Teirlinck + + * emacs.texi (Top): Update menu for splitting of node in + msdog.texi. + * frames.texi (Frames): Update xref for splitting of node in + msdog.texi. + * trouble.texi (Quitting): Ditto. + +2005-02-16 Richard M. Stallman + + * windows.texi (Split Window): Simplify line truncation info + and xref to Display Custom. + + * trouble.texi (Quitting): Emergency escape only for text terminal. + (Screen Garbled): C-l for ungarbling is only for text terminal. + + * text.texi (Text Mode): ESC TAB alternative for M-TAB. + + * sending.texi (Header Editing): ESC TAB alternative for M-TAB. + + * programs.texi (Program Modes): Mention Python mode. + (Moving by Defuns): Repeating C-M-h extends region. + (Basic Indent): Clarify. + (Custom C Indent): Clarify. + (Expressions): Repeating C-M-@ extends region. + (Info Lookup): Clarify for C-h S. + (Symbol Completion): ESC TAB alternative for M-TAB. + (Electric C): Clarify. + + * emacs.texi (Top): Update display.texi and frames.texi submenu data. + + * msdog.texi (MS-DOS Keyboard, MS-DOS Mouse): Split from + MS-DOS Input node. + (MS-DOS Keyboard): Start with explaining DEL and BREAK. + (MS-DOS and MULE): Clarify. + (MS-DOS Processes, Windows Processes): Fix typos. + + * major.texi (Choosing Modes): Clarify. + + * kmacro.texi (Basic Keyboard Macro): Doc F3, F4. + (Keyboard Macro Step-Edit): Clarify. + + * indent.texi (Indentation): Clarifications. + + * help.texi (Help): Correct error about C-h in query-replace. + Clarify apropos vs C-h a. Fix how to search in FAQ. + (Key Help): Describe C-h w here. + (Name Help): Minor cleanup. C-h w moved to Key Help. + Clarify the "object" joke. + (Apropos): Clarify. Mouse-1 like Mouse-2. + (Help Mode): Mouse-1 like Mouse-2. + + * fixit.texi (Spelling): Mention ESC TAB as alt. for M-TAB. + + * display.texi (Display): Reorder menu. + (Faces): Cleanup. + (Font Lock): Cleanup. Mention Options menu. + Delete obsolete text. + (Scrolling): For C-l, don't presume text terminal. + (Horizontal Scrolling): Simplify intro. + (Follow Mode): Clarify. + (Cursor Display): Moved before Display Custom. + (Display Custom): Explain no-redraw-on-reenter is for text terminals. + Doc default-tab-width. Doc line truncation more thoroughly. + + * dired.texi (Dired Enter): C-x C-f can run Dired. + (Dired Visiting): Comment out `a' command. + Mouse-1 is like Mouse-2. + (Shell Commands in Dired): ? can be used more than once. + + * basic.texi (Continuation Lines): Simplify description of truncation, + and refer to Display Custom for the rest of it. + +2005-02-06 Lute Kamstra + + * basic.texi (Undo): Fix typo. + + * cmdargs.texi (Emacs Invocation): Fix typo. + + * custom.texi (Init Examples): Fix typo. + + * abbrevs.texi (Expanding Abbrevs): Fix typo. + +2005-02-06 Richard M. Stallman + + * regs.texi (Registers): Registers can hold numbers, too. + + * killing.texi (Other Kill Commands): Cleanup. + Delete redundant explanation of kill in read-only buffer. + (Yanking): Mention term "copying". + (Accumulating Text): Fix typo. + + * entering.texi (Entering Emacs): Update rationale at start. + (Exiting): Treat iconifying on a par with suspension. + + * custom.texi (Minor Modes): Fix typo. + (Easy Customization): Fix menu style. + (Variables): Add xref. + (Examining): Setting for future sessions works through .emacs. + (Keymaps): "Text terminals", not "Many". + (Init Rebinding): Explain \C-. Show example of \M-. + Fix minor wording errors. + (Function Keys): Explain vector syntax just once. + (Named ASCII Chars): Clarify history of TAB/C-i connection. + (Init File): Mention .emacs.d directory. + (Init Examples): Add xref. + (Find Init): Mention .emacs.d directory. + + * cmdargs.texi (Emacs Invocation): +LINENUM is also an option. + (Action Arguments): Explain which kinds of -l args are found how. + (Initial Options): --batch does not inhibit site-start. + Add xrefs. + (Command Example): Use --batch, not -batch. + + * basic.texi (Inserting Text): Cleanup wording. + (Moving Point): Doc PRIOR, PAGEUP, NEXT, PAGEDOWN more systematically. + C-n is not error at end of buffer. + (Undo): Doc C-/ like C-_. Add xrefs. + (Arguments): META key may be labeled ALT. + Peculiar arg meanings are explained in doc strings. + + * abbrevs.texi (Expanding Abbrevs): Clarify. + +2005-02-05 Eli Zaretskii + + * frames.texi (Frame Parameters): Add an xref to the description + of list-colors-display. Add a pointer to the X docs about colors. + + * cmdargs.texi (Colors): Mention 16-, 88- and 256-color modes. + Impove docs of list-colors-display. + +2005-02-03 Lute Kamstra + + * frames.texi (Frames, Drag and Drop): Fix typos. + +2005-02-03 Richard M. Stallman + + * windows.texi (Basic Window): Mention color-change in mode line. + (Change Window): Explain dragging vertical boundaries. + + * text.texi (Sentences): Clarify. + (Paragraphs): Explain M-a and blank lines. + (Outline Mode): Clarify text and menu. + (Hard and Soft Newlines): Mention use-hard-newlines. + + * frames.texi (Frames): Delete unnecessary mention of Windows. + (Mouse Commands): Likewise. Mention xterm mouse support. + (Clipboard): Clarify. + (Mouse References): Mention use of Mouse-1 for following links. + (Menu Mouse Clicks): Clarify. + (Mode Line Mouse): Clarify. + (Drag and Drop): Rewrite. + + * fixit.texi (Spelling): Fix typo. + + * files.texi (File Names): Clarify. + (Visiting): Update conditions for use of file dialog. Clarify. + (Saving): Doc d as answer in save-some-buffers. + (Remote Files): Clean up the text. + + * dired.texi (Misc Dired Commands): Delete dired-marked-files. + + * buffers.texi (Select Buffer): Doc next-buffer and prev-buffer. + (List Buffers): Clarify. + (Several Buffers): Doc T command. + (Buffer Convenience): Clarify menu. + + * basic.texi (Undo): Clarify last change. + +2005-02-02 Matt Hodges + + * fixit.texi (Spelling): Fix typo. + +2005-02-01 Luc Teirlinck + + * basic.texi (Undo): Update description of `undo-outer-limit'. + +2005-02-01 Nick Roberts + + * building.texi: Update documentation relating to GDB Graphical + Interface. + +2005-01-30 Luc Teirlinck + + * custom.texi (Easy Customization): Adapt menu to node name change. + +2005-01-30 Richard M. Stallman + + * custom.texi (Easy Customization): Defn of "User Option" now + includes faces. Don't say just "option" when talking about variables. + Do say just "options" to mean "anything customizable". + (Specific Customization): Describe `customize-variable', + not `customize-option'. + + * glossary.texi (Glossary) : Add xref. + : Change definition--include faces. Change xref. + + * picture.texi (Picture): Mention artist.el. + + * sending.texi, screen.texi, programs.texi, misc.texi: + * mini.texi, major.texi, maintaining.texi, macos.texi: + * help.texi, frames.texi, files.texi: + Don't say just "option" when talking about variables. + + * display.texi, mule.texi: Don't say just "option" when talking + about variables. Other minor cleanups. + +2005-01-26 Lute Kamstra + + * cmdargs.texi (Initial Options): Add a cross reference to `Init + File'. Mention the `-Q' option at the `--no-site-file' option. + +2005-01-22 David Kastrup + + * building.texi (Grep Searching): Mention alias `find-grep' for + `grep-find'. + +2005-01-20 Richard M. Stallman + + * calendar.texi (Time Intervals): Delete special stuff for MS-DOS. + +2005-01-15 Sergey Poznyakoff + + * rmail.texi (Movemail): Explain differences + between standard and mailutils versions of movemail. + Describe command line and configuration options introduced + with the latter. + Explain the notion of mailbox URL, provide examples and + cross-references to mailutils documentation. + Describe various methods of specifying mailbox names, + user names and user passwords for rmail. + (Remote Mailboxes): New section. Describe + how movemail handles remote mailboxes. Describe configuration + options used to control its behavior. + (Other Mailbox Formats): Explain handling of various mailbox + formats. + +2005-01-13 Richard M. Stallman + + * commands.texi (Commands): Clarification. + +2005-01-11 Richard M. Stallman + + * programs.texi (Multi-line Indent): Fix previous change. + (Fortran Autofill): Simplify description of fortran-auto-fill-mode. + +2005-01-08 Richard M. Stallman + + * display.texi (Faces): isearch-lazy-highlight-face renamed to + lazy-highlight. + + * search.texi (Query Replace): Mention faces query-replace + and lazy-highlight. + (Incremental Search): Update isearch highlighting info. + +2005-01-04 Richard M. Stallman + + * custom.texi (Saving Customizations): Minor improvement. + +2005-01-03 Luc Teirlinck + + * custom.texi (Saving Customizations): Emacs no longer loads + `custom-file' after .emacs. No longer mention customizing through + Custom. + +2005-01-01 Andreas Schwab + + * killing.texi (Graphical Kill): Move up under node Killing, + change @section to @subsection. + +2005-01-01 Richard M. Stallman + + * custom.texi (Face Customization): Mention hex color specs. + + * emacs.texi (Top): Update Killing submenu. + + * killing.texi (Killing): Reorganize section. + No more TeX-only text; put the node command at start of chapter. + But the first section heading is used only in TeX. + Rewrite the text to read better in this mode. + (Graphical Kill): New subnode gets some of the text that + used to be in the first section. + +2004-12-31 Richard M. Stallman + + * dired.texi (Shell Commands in Dired): Delete the ? example. + + * display.texi (Scrolling): Correct scroll-preserve-screen-position. + + * files.texi (Saving): Describe new require-final-newline features + and mode-require-final-newline. + +2004-12-29 Richard M. Stallman + + * custom.texi (File Variables): Clarify previous change. + +2004-12-27 Jan Dj,Ad(Brv + + * frames.texi (Dialog Boxes): Mention Gtk+ 2.6 also, as that version is + out now. + +2004-12-27 Richard M. Stallman + + * Makefile.in (MAKEINFO): Specify --force. + + * basic.texi (Moving Point): C-e now runs move-end-of-line. + (Undo): Doc undo-outer-limit. + +2004-12-15 Juri Linkov + + * mark.texi (Transient Mark, Mark Ring): M-< and other + movement commands don't set mark in Transient Mark mode + if mark is active. + +2004-12-12 Juri Linkov + + * misc.texi (FFAP): Add C-x C-r, C-x C-v, C-x C-d, + C-x 4 r, C-x 4 d, C-x 5 r, C-x 5 d. + + * dired.texi (Dired Navigation): Add @r{(Dired)} to M-g. + (Misc Dired Commands): Add @r{(Dired)} to w. + +2004-12-12 Juri Linkov + + * mark.texi (Marking Objects): Marking commands also extend the + region when mark is active in Transient Mark mode. + +2004-12-08 Luc Teirlinck + + * custom.texi (Saving Customizations): Emacs only loads the custom + file automatically after the init file in version 22.1 or later. + Adapt text and examples to this fact. + +2004-12-07 Luc Teirlinck + + * frames.texi (Scroll Bars): The option `scroll-bar-mode' has to + be set through Custom. Otherwise, it has no effect. + +2004-12-05 Richard M. Stallman + + * cmdargs.texi, doclicense.texi, xresources.texi, emacs.texi: + * entering.texi: Rename Command Line to Emacs Invocation. + + * misc.texi (Term Mode): Correcty describe C-c. + + * custom.texi (Easy Customization): Move up to section level, + before Variables. Avoid using the term "variable"; say "option". + New initial explanation. + (Variables): In initial explanation, connect "variable" to the + already-explained "user option". + + * emacs.texi (Top): Fix ref to Command Line. + Move reference to Easy Customization. + + * xresources.texi (X Resources): Fix From link. + + * doclicense.texi (GNU Free Documentation License): Fix To link. + + * entering.texi (Entering Emacs): Fix xref, now to Command Line. + + * cmdargs.texi (Command Line): Node renamed from Command Arguments. + +2004-12-03 Richard M. Stallman + + * cmdargs.texi (Initial Options): Clarify batch mode i/o. + +2004-12-01 Luc Teirlinck + + * kmacro.texi: Several small changes in addition to the following. + (Keyboard Macro Ring): Describe behavior of `C-x C-k C-k' when + defining a keyboard macro. + Mention `kmacro-ring-max'. + (Keyboard Macro Counter): Clarify description of + `kmacro-insert-counter', `kmacro-set-counter', + `kmacro-add-counter' and `kmacro-set-format'. + +2004-11-29 Reiner Steib + + * custom.texi (File Variables): Add `unibyte' and make it more + clear that `unibyte' and `coding' are special. Suggested by Simon + Krahnke . + + * mule.texi (Enabling Multibyte): Refer to File Variables. + Suggested by Simon Krahnke . + +2004-11-26 Jan Dj,Ad(Brv + + * frames.texi (Dialog Boxes): Rename use-old-gtk-file-dialog to + x-use-old-gtk-file-dialog. + +2004-11-20 Richard M. Stallman + + * text.texi (Fill Prefix): M-q doesn't apply fill prefix to first line. + +2004-11-09 Lars Brinkhoff + + * building.texi (Lisp Eval): Delete hyphen in section name. + +2004-11-19 Thien-Thi Nguyen + + * files.texi (Old Versions): + No longer document annotation as "CVS only". + +2004-11-10 Andre Spiegel + + * files.texi (Version Control): Rewrite the introduction about + version systems, mentioning the new ones that we support. Thanks + to Alex Ott, Karl Fogel, Stefan Monnier, and David Kastrup for + suggestions. + +2004-11-03 Jan Dj,Ad(Brv + + * frames.texi (Dialog Boxes): Replace non-nil with non-@code{nil}. + +2004-11-02 Jan Dj,Ad(Brv + + * frames.texi (Dialog Boxes): Document use-old-gtk-file-dialog. + +2004-10-23 Eli Zaretskii + + * text.texi (Text Based Tables, Table Definition) + (Table Creation, Table Recognition, Cell Commands) + (Cell Justification, Row Commands, Column Commands) + (Fixed Width Mode, Table Conversion, Measuring Tables) + (Table Misc): New nodes, documenting the Table Mode. + +2004-10-19 Jason Rumney + + * makefile.w32-in (info): Change order of arguments to makeinfo. + +2004-10-19 Ulf Jasper + + * calendar.texi (iCalendar): Update for package changes. + +2004-10-09 Luc Teirlinck + + * files.texi (Misc File Ops): View mode is a minor mode. + +2004-10-08 Glenn Morris + + * calendar.texi (iCalendar): Style changes. + +2004-10-07 Luc Teirlinck + + * search.texi (Regexps): The regexp described in the example is no + longer stored in the variable `sentence-end'. + +2004-10-06 Nick Roberts + + * building.texi (Starting GUD): Note that multiple debugging + sessions requires `gdb --fullname'. + +2004-10-05 Ulf Jasper + + * calendar.texi (iCalendar): New section for a new package. + +2004-10-05 Luc Teirlinck + + * text.texi: Various small changes in addition to the following. + (Text): Replace xref for autotype with inforef. + (Sentences): Explain nil value for `sentence-end'. + (Paragraphs): Update default values for `paragraph-start' and + `paragraph-separate'. + (Text Mode): Correct description of Text mode's effect on the + syntax table. + (Outline Visibility): `hide-other' does not hide top level headings. + `selective-display-ellipses' no longer has an effect on Outline mode. + (TeX Misc): Add missing @cindex. + Replace xref for RefTeX with inforef. + (Requesting Formatted Text): The variable + `enriched-fill-after-visiting' no longer exists. + (Editing Format Info): Update names of menu items and commands. + (Format Faces): Mention special effect of specifying the default face. + Describe inheritance of text properties. + Correct description of `fixed' face. + (Format Indentation): Correct description of effect of setting + margins. Mention `set-left-margin' and `set-right-margin'. + (Format Justification): Update names of menu items. + `set-justification-full' is now bound to `M-j b'. + Mention that `default-justification' is a per buffer variable. + (Format Properties): Update name of menu item. + (Forcing Enriched Mode): `format-decode-buffer' automatically + turns on Enriched mode if the buffer is in text/enriched format. + +2004-10-05 Emilio C. Lopes + + * calendar.texi (From Other Calendar): Add calendar-goto-iso-week. + +2004-09-28 Kim F. Storm + + * display.texi (Display Custom) : + Align with new functionality. + +2004-09-22 Luc Teirlinck + + * display.texi (Display Custom): Remove stray `@end defvar'. + +2004-09-23 Kim F. Storm + + * display.texi (Display Custom): Add `overflow-newline-into-fringe', + `indicate-buffer-boundaries' and `default-indicate-buffer-boundaries'. + +2004-09-20 Richard M. Stallman + + * custom.texi (Hooks): Explain using setq to clear out a hook. + (File Variables): Explain multiline string constants. + (Non-ASCII Rebinding): Explain when you need to update + non-ASCII char codes in .emacs. + + * building.texi (Compilation): Explain how to make a silent + subprocess that won't be terminated. Explain compilation-environment. + +2004-09-13 Kim F. Storm + + * mini.texi (Repetition): Rename isearch-resume-enabled to + isearch-resume-in-command-history and change default to disabled. + +2004-09-09 Kim F. Storm + + * kmacro.texi (Save Keyboard Macro): Replace `name-last-kbd-macro' + with new `kmacro-name-last-macro'. + +2004-09-08 Juri Linkov + + * mini.texi (Minibuffer History): Add `history-delete-duplicates'. + +2004-09-03 Juri Linkov + + * search.texi (Incremental Search): Update wording for M-%. + +2004-09-02 Luc Teirlinck + + * killing.texi (Killing): Correct description of kill commands in + read-only buffer. + +2004-09-02 Teodor Zlatanov + + * building.texi (Compilation Mode): Add a paragraph about rules + for finding the compilation buffer for `next-error'. + + * search.texi (Other Repeating Search): Mention that Occur mode + supports the next-error functionality. + +2004-09-02 Juri Linkov + + * search.texi (Regexp Replace): Add missing backslash to \footnote. + +2004-08-31 Luc Teirlinck + + * kmacro.texi (Basic Keyboard Macro): + `apply-macro-to-region-lines' now operates on all lines that begin + in the region, rather than on all complete lines in the region. + +2004-08-31 Jan Dj,Ad(Brv + + * frames.texi (Drag and drop): Add documentation about + x-dnd-test-function and x-dnd-known-types. + +2004-08-30 Luc Teirlinck + + * indent.texi: Various minor changes in addition to: + (Indentation Commands): Correct description of `indent-relative'. + (Tab Stops): is no longer bound to `tab-to-tab-stop' in Text + mode. The *Tab Stops* buffer uses Overwrite Mode. + (Just Spaces): `tabify' converts sequences of at least two spaces + to tabs. + +2004-08-27 Luc Teirlinck + + * frames.texi (Secondary Selection): Setting the secondary + selection with M-Drag-Mouse-1 does not alter the kill ring, + setting it with M-Mouse-1 and M-Mouse-3 does. + (Mode Line Mouse): C-Mouse-2 on scroll bar now also works for + toolkit scroll bars. + (Scroll Bars): Ditto. + + * windows.texi (Basic Window): When using a window system, the value + of point in a non-selected window is indicated by a hollow box. + (Split Window): Side by side windows are separated by a scroll bar, + if scroll bars are used. + C-Mouse-2 on scroll bar now also works for toolkit scroll bars. + (Change Window): Correct Mouse-2 vs Mouse-3 mess-up. + (Window Convenience): Update bindings for `winner-undo' and + `winner-redo'. + + * ack.texi (Acknowledgments): Use `@unnumbered'. + * misc.texi : Adapt sectioning in Info to the node structure. + (Invoking emacsclient): Make "Invoking emacsclient" a subsection + of "Using Emacs as a Server". + * building.texi (Building): Interchange nodes (for correct numbering). + * programs.texi (Programs): Interchange nodes (for correct numbering). + * killing.texi, entering.texi, commands.texi: Adapt sectioning in + Info to the node structure. + * emacs.texi: Make "GNU GENERAL PUBLIC LICENSE" an appendix. + Rearrange order of nodes and sections such that both "GNU GENERAL + PUBLIC LICENSE" and "GNU Free Documentation License" appear at the + end, as appropriate for appendices. + (Acknowledgments): Put inside @iftex instead of @ifnotinfo. + Use `@unnumberedsec'. + * trouble.texi: Adapt sectioning in Info to the node structure. + Adapt node pointers to change in emacs.texi. + * cmdargs.texi, doclicense.texi: Adapt node pointers. + +2004-08-25 Kenichi Handa + + * custom.texi (Non-ASCII Rebinding): Fix and simplify the + description for unibyte mode. + +2004-08-23 Luc Teirlinck + + * display.texi (Font Lock): Correct invalid (for hardcopy) @xref. + + * search.texi (Regexps): Correct cryptic (in hardcopy) @ref. + (Configuring Scrolling): Correct invalid (for hardcopy) @xref. + (Regexp Replace): Standardize reference to hardcopy Elisp Manual + in @pxref. + +2004-08-22 Luc Teirlinck + + * kmacro.texi (Keyboard Macro Counter, Keyboard Macro Step-Edit): + Change section names. + +2004-08-21 Luc Teirlinck + + * kmacro.texi (Keyboard Macro Ring): Rename section. + Emacs treats the head of the macro ring as the `last keyboard macro'. + (Keyboard Macro Counter): Minor change. + (Save Keyboard Macro): Some clarifications. + (Edit Keyboard Macro): Rename section. + + * buffers.texi (Buffers): Maximum buffer size is now 256M on + 32-bit machines. + (Several Buffers): Clarify which buffer is selected if `2' is + pressed in the Buffer Menu. + Auto Revert mode can be used to update the Buffer Menu + automatically. + +2004-08-21 Eli Zaretskii + + * help.texi (Misc Help): Add an index entry for finding an Info + manual by its file name. + +2004-08-20 Luc Teirlinck + + * files.texi (Backup Deletion): Correct description of + `delete-old-versions'. + (Time Stamps): `time-stamp' needs to be added to `before-save-hook'. + (Auto Save Files): Recommend `auto-save-mode' to reenable + auto-saving, rather than the abbreviation `auto-save'. + +2004-08-17 Luc Teirlinck + + * emacs.texi (Top): Mention "cutting" and "pasting" as synonyms + for "killing" and "yanking" in main menu. + +2004-08-16 Richard M. Stallman + + * killing.texi (Yanking, Killing): Minor cleanups. + + * mark.texi (Momentary Mark): Minor cleanups. + +2004-08-15 Kenichi Handa + + * custom.texi (Non-ASCII Rebinding): + C-q always inserts the right code to pass to global-set-key. + +2004-08-13 Luc Teirlinck + + * regs.texi (RegNumbers): Mention `C-x r i' binding for + `insert-register', instead of `C-x r g' binding, for consistency. + +2004-08-12 Luc Teirlinck + + * fixit.texi (Spelling): Fix typo. + +2004-08-11 Luc Teirlinck + + * help.texi (Help): Fix Texinfo usage. + +2004-07-24 Richard M. Stallman + + * text.texi (Paragraphs): Update how paragraphs are separated + and the default for paragraph-separate. + + * search.texi (Regexp Replace): Further update text for new + replacement operators. + +2004-07-18 Luc Teirlinck + + * emacs-xtra.texi (Subdir switches): Dired does not remember the + `R' switch. + + * dired.texi (Dired Updating): `k' only deletes inserted + subdirectories from the Dired buffer if a prefix argument was given. + + * search.texi (Regexps): Delete redundant definition of `symbol' in + description of `\_>'. It already occurs in the description of `\_<'. + +2004-07-01 Juri Linkov + + * search.texi (Incremental Search): Add C-M-w, C-M-y, M-%, C-M-%, M-e. + (Regexp Search): Add M-r. + +2004-06-30 Luc Teirlinck + + * makefile.w32-in (EMACSSOURCES): Remove emacs-xtra. + +2004-06-29 Jesper Harder + + * search.texi, calendar.texi: Markup fixes. + +2004-06-25 Richard M. Stallman + + * search.texi (Regexp Replace): Rewrite description of \# \, and \?. + +2004-06-25 David Kastrup + + * search.texi (Regexp Replace): Some typo corrections and + rearrangement. + +2004-06-24 David Kastrup + + * search.texi (Unconditional Replace): Use replace-string instead + of query-replace in example. + (Regexp Replace): Add explanations for `\,', `\#' and `\?' + sequences. + (Query Replace): Correct explanation of `^' which does not use + the mark stack. + +2004-06-21 Nick Roberts + + * misc.texi (Shell History Copying): Document comint-insert-input. + (Shell Ring): Describe comint-dynamic-list-input-ring here. + +2004-06-20 Jesper Harder + + * msdog.texi (Text and Binary, MS-DOS Printing): Use m-dash. + * custom.texi (Customization): Do. + * anti.texi (Antinews): Do. + * abbrevs.texi (Defining Abbrevs): Do. + + * programs.texi (Info Lookup): Fix keybinding for + info-lookup-symbol. + +2004-06-16 Juanma Barranquero + + * makefile.w32-in (INFO_TARGETS, DVI_TARGETS, EMACSSOURCES): + Add emacs-xtra. + ($(infodir)/emacs-xtra, emacs-xtra.dvi): New dependencies. + (clean): Add emacs-xtra and flymake. Remove redundancies. + +2004-06-15 Luc Teirlinck + + * Makefile.in (INFO_TARGETS, DVI_TARGETS, ../info/emacs-xtra): + Add emacs-xtra. + * emacs-xtra.texi: New file. + +2004-06-14 Luc Teirlinck + + * dired.texi (Dired Enter): Mention conditions on `ls' switches. + (Dired and Find): Mention differences with ordinary Dired buffers. + +2004-06-13 Richard M. Stallman + + * custom.texi (Init Syntax): Explain about vars that do special + things when set with setq or with Custom. + (Init Examples): Add line-number-mode example. + +2004-06-12 Juri Linkov + + * dired.texi (Operating on Files): Add dired-do-touch. + +2004-06-10 Juri Linkov + + * building.texi (Lisp Eval): Add C-M-x on defface. + +2004-06-08 Luc Teirlinck + + * files.texi (Reverting): Auto-Revert mode and + Global Auto-Revert mode no longer revert remote files. + +2004-05-29 Richard M. Stallman + + * custom.texi (Init File): Two dashes start --no-site-file. + +2004-05-29 Alan Mackenzie + + * programs.texi: Update for CC Mode 5.30 and incidental amendments. + ("AWK"): Is consistently thus spelt throughout. + (AWK, Pike): Document as "C-like modes". + (@kbd{M-j}): Document as alternative to @kbd{C-M-j}. + (M-x man): Supersedes M-x manual-entry. + Add numerous index entries. Correct "ESC a/e" to "M-a/e". + + ("Comments in C"): Delete node; the info is in CC Mode manual. + (c-comment-only-line-offset): Remove description. + + (C-c ., C-c C-c): Describe new C Mode bindings. + + (C-u TAB, indent-code-rigidly, c-indent-exp, c-tab-always-indent) + (@dfn{Style}, c-default-style, comment-column, comment-padding) + (c-up-conditional, c-beginning-of-statement, c-end-of-statement): + Amend definitions. + + (c-beginning-of-defun, c-end-of-defun, c-context-line-break): + Describe functions. + + (c-comment-start-regexp, c-hanging-comment-ender-p) + (c-hanging-comment-starter-p): Remove obsolete definitions. + + * emacs.texi: Remove the menu entry "Comments in C". + +2004-05-27 Luc Teirlinck + + * dired.texi (Dired and Find): `find-ls-option' does not apply to + `M-x locate'. + +2004-05-16 Karl Berry + + * emacs.texi (ack.texi) [@ifnottex]: Change condition; with @ifinfo, + makeinfo --html fails. + * help.texi (Help Summary) [@ifnottex]: Likewise. + +2004-05-13 Nick Roberts + + * building.texi (GDB Graphical Interface): Update and describe + layout first. + +2004-05-04 Jason Rumney + + * makefile.w32-in: Revert last change. + +2004-05-03 Jason Rumney + + * makefile.w32-in (MULTI_INSTALL_INFO, ENVADD): Use forward slashes. + +2004-04-23 Juanma Barranquero + + * makefile.w32-in: Add "-*- makefile -*-" mode tag. + +2004-04-18 Juri Linkov + + * fixit.texi (Spelling): Remove file extension from ispell xref. + +2004-04-15 Kim F. Storm + + * cmdargs.texi (Initial Options): Add -Q. + +2004-04-05 Kim F. Storm + + * custom.texi (File Variables): Add safe-local-eval-forms. + +2004-04-02 Luc Teirlinck + + * files.texi (Reverting): Correct description of revert-buffer's + handling of point. + +2004-03-22 Juri Linkov + + * emacs.texi (Top): Add `Misc X'. + + * trouble.texi: Fix help key bindings. + + * glossary.texi: Improve references. + + * help.texi: Sync keywords with finder.el. + + * mini.texi (Completion): Add description for menu items. + + * misc.texi (Browse-URL, FFAP): Add information about keywords. + + * sending.texi (Mail Methods): Fix xref to Message manual. + +2004-03-12 Richard M. Stallman + + * buffers.texi (Misc Buffer): Add index entry for rename-uniquely. + +2004-03-04 Richard M. Stallman + + * search.texi (Regexps): Explain that ^ and $ have their + special meanings only in certain contexts. + + * programs.texi (Expressions): Doc C-M-SPC as alias for C-M-@. + + * mule.texi (Specify Coding): Doc C-x RET F. + + * buffers.texi (Misc Buffer): Explain use of M-x rename-uniquely + for multiple compile and grep buffers. + (Indirect Buffers): Don't recommand clone-indirect-buffer + for multiple compile and grep buffers. + +2004-02-29 Juanma Barranquero + + * makefile.w32-in (mostlyclean, clean, maintainer-clean): + Use $(DEL) instead of rm, and ignore exit code. + +2004-02-23 Nick Roberts + + * building.texi (Watch Expressions): Update. + +2004-02-21 Juri Linkov + + * cmdargs.texi (Action Arguments): Add alias --find-file. Add + --directory, --help, --version. Move text about command-line-args + to Command Arguments. + (Initial Options): Add @cindex for --script. Fix @cindex for -q. + Add --no-desktop. Add alias --no-multibyte, --no-unibyte. + (Window Size X): Join -g and --geometry. Add @cindex. + (Borders X): Fix @cindex for -ib. Add @cindex for -bw. + (Title X): Remove alias -title. + (Misc X): New node. + +2004-02-15 Jan Dj,Ad(Brv + + * frames.texi (Drag and drop): Add Motif to list of supported + protocols. + +2004-02-03 Jan Dj,Ad(Brv + + * frames.texi (Drag and drop): New section. + +2004-01-24 Richard M. Stallman + + * emacs.texi (Acknowledgments): Renamed from Acknowledgements. + Include it only @ifnotinfo. Patch the preceding and following + node headers to point to each other. + +2004-01-11 Glenn Morris + + * calendar.texi (Appointments): Update section. + +2003-12-29 Kevin Ryde + + * programs.texi (C Modes): Fix the xref. + +2003-12-23 Nick Roberts + + * building.texi (Watch Expressions): Update. + (Commands of GUD): Include use of toolbar + breakpoints set from + fringe/margin. + +2003-12-03 Andre Spiegel + + * files.texi: Say how to disable VC. Suggested by Alan Mackenzie + . + +2003-11-29 Jan Dj,Ad(Brv + + * frames.texi (Dialog Boxes): Add use-file-dialog. + +2003-11-22 Martin Stjernholm + + * ack.texi: Note that Alan Mackenzie contributed the AWK support + in CC Mode. + +2003-11-02 Jesper Harder (tiny change) + + * man/ack.texi, man/basic.texi, man/cmdargs.texi: + * man/commands.texi, man/custom.texi, man/display.texi: + * man/emacs.texi, man/files.texi: + * man/frames.texi, man/glossary.texi, man/killing.texi: + * man/macos.texi, man/mark.texi, man/misc.texi, man/msdog.texi: + * man/mule.texi, man/rmail.texi, man/search.texi: + * man/sending.texi, man/text.texi, man/trouble.texi: + Replace @sc{ascii} and ASCII with @acronym{ASCII}. + +2003-11-01 Alan Mackenzie + + * search.texi (Scrolling During Incremental Search): Document a + new scrolling facility in isearch mode. + +2003-10-22 Miles Bader + + * Makefile.in (info): Move before $(top_srcdir)/info. + +2003-10-22 Nick Roberts + + * building.texi (Watch Expressions): Update section on data display + to reflect code changes (GDB Graphical Interface). + +2003-10-13 Richard M. Stallman + + * xresources.texi (GTK resources): Clean up previous change. + +2003-10-12 Jan Dj,Ad(Brv + + * xresources.texi (GTK resources): Add a note that some themes + disallow customizations. Add scroll theme example. + +2003-09-30 Richard M. Stallman + + * cmdargs.texi (General Variables): Remove MAILRC envvar. + + * misc.texi (Saving Emacs Sessions): Shorten the section, + collapsing back into one node. + +2003-09-30 Lars Hansen + + * misc.texi: Section "Saving Emacs Sessions" rewritten. + +2003-09-29 Jan Dj,Ad(Brv. + + * xresources.texi (GTK names in Emacs): Correct typo. + +2003-09-24 Luc Teirlinck + + * cmdargs.texi (Font X): Mention new default font. More + fully describe long font names, wildcard patterns and the + problems involved. (Result of discussion on emacs-devel.) + +2003-09-22 Luc Teirlinck + + * emacs.texi (Acknowledgements): Correct typo. + +2003-09-22 Richard M. Stallman + + * dired.texi (Misc Dired Commands): New node. + (Dired Navigation): Add dired-goto-file. + + * files.texi (File Aliases, Misc File Ops): Add @cindex entries. + + * emacs.texi (Acknowledgements): New node, split from Distribution. + + * cmdargs.texi (Action Arguments): -f reads interactive args. + +2003-09-08 Lute Kamstra + + * screen.texi (Mode Line): Say that POS comes before LINE. + Mention `size-indication-mode'. + * display.texi (Optional Mode Line): Document + `size-indication-mode'. + * basic.texi (Position Info): Mention `size-indication-mode'. + +2003-09-07 Luc Teirlinck + + * xresources.texi (Resources): Refer to `editres' man page. + (Lucid Resources): Update defaults. Expand description of + `shadowThickness'. + +2003-09-04 Miles Bader + + * Makefile.in (top_srcdir): New variable. + ($(top_srcdir)/info): New rule. + (info): Depend on it. + +2003-09-03 Peter Runestig + + * makefile.w32-in: New file. + +2003-08-29 Richard M. Stallman + + * misc.texi (Saving Emacs Sessions): Correct previous change. + +2003-08-19 Luc Teirlinck + + * emacs.texi (Top): Update menu to reflect new Keyboard Macros chapter. + (Intro): Include kmacro.texi after fixit.texi instead of after + custom.texi. (As suggested by Kim Storm.) + +2003-08-18 Luc Teirlinck + + * fixit.texi (Fixit): Update `Next' pointer. + * files.texi (Files): Update `Previous' pointer. + * kmacro.texi (Keyboard Macros): Remove redundant node and section. + * emacs.texi (Intro): Include kmacro.texi after custom.texi. + (Suggested by Kim Storm.) + * Makefile (EMACSSOURCES): Add kmacro.texi. (Suggested by Kim Storm.) + +2003-08-18 Kim F. Storm + + * kmacro.texi: New file describing enhanced keyboard macro + functionality. Replaces old description in custom.texi. + + * custom.texi (Customization): Add xref to Keyboard Macros chapter. + (Keyboard Macros): Move to new kmacro.texi file. + + * emacs.texi (Keyboard Macros): Reference new keyboard macro topics. + +2003-08-17 Edward M. Reingold + + * calendar.texi (Specified Dates): Add `calendar-goto-day-of-year'. + +2003-08-17 Alex Schroeder + + * misc.texi (Saving Emacs Sessions): Manual M-x desktop-save not + required. + +2003-08-05 Richard M. Stallman + + * programs.texi (Lisp Indent): Don't describe + lisp-indent-function property here. Use xref to Lisp Manual. + +2003-08-03 Glenn Morris + + * calendar.texi (Date Formats): Document changed behaviour of + abbreviations. + +2003-07-24 Markus Rost + + * buffers.texi (List Buffers): Fix previous change. + +2003-07-13 Markus Rost + + * buffers.texi (List Buffers): Adjust to new format of *Buffer + List*. + +2003-07-07 Luc Teirlinck + + * display.texi (Font Lock): Fix typo. + +2003-07-07 Richard M. Stallman + + * display.texi (Font Lock): Add xref for format info on + font-lock-remove-keywords. + + * building.texi (Compilation): Document what happens with asynch + children of compiler process. + + * help.texi (Library Keywords): Use @multitable. + +2003-06-04 Richard M. Stallman + + * programs.texi (Expressions): Delete C-M-DEL. + + * misc.texi (Shell Options): Clarify comint-scroll-show-maximum-output. + comint-move-point-for-output renamed from + comint-scroll-to-bottom-on-output. + + * custom.texi (Init Rebinding): Replace previous change with xref. + (Non-ASCII Rebinding): Explain that issue more briefly here. + +2003-05-28 Richard M. Stallman + + * indent.texi (Indentation): Condense, simplify, clarify prev change. + +2003-05-28 Nick Roberts + + * building.texi (GDB Graphical Interface): New node. + (Rewritten somewhat by RMS.) + +2003-05-28 Kai Gro,A_(Bjohann + + * custom.texi (Init Rebinding): Xref Non-ASCII Rebinding, for + non-English letters. Explain how to set coding systems correctly + and how to include the right coding cookie in the file. + +2003-05-22 Kai Gro,A_(Bjohann + + * indent.texi (Indentation): Explain the concepts. + (Just Spaces): Explain why preventing tabs for indentation might + be useful. + +2003-04-16 Richard M. Stallman + + * search.texi (Regexps): Ref to Lisp manual for more regexp features. + +2003-02-22 Alex Schroeder + + * cmdargs.texi (General Variables): Document SMTPSERVER. + + * sending.texi: Remove SMTP node. + (Mail Sending): Describe `send-mail-function'. Link to SMTP + library. + +2003-02-22 Alex Schroeder + + * sending.texi (Sending via SMTP): Explain MTA/MUA. + +2003-02-22 Simon Josefsson + + * sending.texi (Mail Methods): Add node about SMTP. + +2003-02-17 Jan Dj,Ad(Brv + + * xresources.texi (GTK names in Emacs): Add emacs-toolbar - GtkToolbar. + +2003-02-01 Kevin Ryde + + * glossary.texi (Glossary): Correction to cl cross reference. + +2003-01-20 Richard M. Stallman + + * killing.texi (Rectangles): Document C-x c r. + +2003-01-19 Jan Dj,Ad(Brv + + * xresources.texi (GTK resources): New node. + (GTK widget names): New node. + (GTK names in Emacs): New node. + (GTK styles): New node. + +2003-01-09 Francesco Potort,Al(B + + * maintaining.texi (Create Tags Table): Add reference to the new + `etags --help --lang=LANG' option. + +2002-10-02 Karl Berry + + * emacs.texi: Per rms, update all manuals to use @copying instead of + @ifinfo. Also use @ifnottex instead of @ifinfo around the top node, + where needed for the sake of the HTML output. + +2001-12-20 Eli Zaretskii + + * Makefile.in (EMACSSOURCES): Update the list of Emacs manual + source files. + +2001-11-16 Eli Zaretskii + + * Makefile.in (emacsman): New target. + +2001-10-20 Gerd Moellmann + + * (Version 21.1 released.) + +2001-10-05 Gerd Moellmann + + * Branch for 21.1. + +2001-03-05 Gerd Moellmann + + * Makefile.in (mostlyclean, maintainer-clean): Delete more files. + +2000-05-31 Stefan Monnier + + * .cvsignore (*.tmp): New entry. Seems to be used for @macro. + +1999-07-12 Richard Stallman + + * Version 20.4 released. + +1998-12-04 Markus Rost + + * Makefile.in (INFO_TARGETS): Delete customize.info. + (DVI_TARGETS): Delete customize.dvi. + (../info/customize, customize.dvi): Targets deleted. + +1998-08-19 Richard Stallman + + * Version 20.3 released. + +1998-05-06 Richard Stallman + + * Makefile.in (EMACSSOURCES): Add mule.texi. + Add msdog.texi, ack.texi. Remove gnu1.texi. + +1998-04-06 Andreas Schwab + + * Makefile.in (ENVADD): Enviroment vars to pass to texi2dvi. Use + it in dvi targets. + +1997-09-23 Paul Eggert + + * Makefile.in: Merge changes mistakenly made to `Makefile'. + (INFO_TARGETS): Change ../info/custom to ../info/customize. + (../info/customize): Rename from ../info/custom. + +1997-09-19 Richard Stallman + + * Version 20.2 released. + +1997-09-15 Richard Stallman + + * Version 20.1 released. + +1997-08-24 Richard Stallman + + * Makefile (../info/customize, customize.dvi): New targets. + (INFO_TARGETS): Add ../info/customize. + (DVI_TARGETS): Add customize.dvi. + +1996-08-11 Richard Stallman + + * Version 19.33 released. + +1996-07-31 Richard Stallman + + * Version 19.32 released. + +1996-06-20 Richard Stallman + + * Makefile.in (All info targets): cd $(srcdir) to do the work. + +1996-06-19 Richard Stallman + + * Makefile.in (All info targets): Specify $(srcdir) in input files. + Specify -I option. + (All dvi targets): Set the TEXINPUTS variable. + +1996-05-25 Karl Heuer + + * Version 19.31 released. + +1995-11-24 Richard Stallman + + * Version 19.30 released. + +1995-02-07 Richard Stallman + + * Makefile.in (maintainer-clean): Rename from realclean. + +1994-11-23 Richard Stallman + + * Makefile.in: New file. + * Makefile: File deleted. + +1994-11-19 Richard Stallman + + * Makefile (TEXINDEX_OBJS): Variable deleted. + (texindex, texindex.o, getopt.o): Rules deleted. + All deps on texindex deleted. + (distclean): Don't delete texindex. + (mostlyclean): Don't delete *.o. + * texindex.c, getopt.c: Files deleted. + +1994-09-07 Richard Stallman + + * Version 19.26 released. + +1994-07-02 Richard Stallman (rms@gnu.ai.mit.edu) + + * Makefile (EMACSSOURCES): Exclude undo.texi. + +1994-05-30 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.25 released. + +1994-05-23 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.24 released. + +1994-05-16 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.23 released. + +1994-04-17 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile: Delete spurious tab. + +1994-02-16 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile (.SUFFIXES): New rule. + +1993-12-04 Richard Stallman (rms@srarc2) + + * getopt.c: New file. + * Makefile (TEXINDEX_OBJS): Use getopt.o in this dir, not ../lib-src. + (getopt.o): New rule. + (dvi): Don't depend on texindex. + (emacs.dvi): Depend on texindex. + +1993-12-03 Richard Stallman (rms@srarc2) + + * Makefile (TEXI2DVI): New variable. + (emacs.dvi): Add explicit command. + (TEXINDEX_OBJS): Delete duplicate getopt.o. + +1993-11-27 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.22 released. + +1993-11-18 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile (TEXINDEX_OBJS): Delete spurious period. + +1993-11-16 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.21 released. + +1993-11-14 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile (realclean): Don't delete the Info files. + +1993-10-25 Brian Fox (bfox@albert.gnu.ai.mit.edu) + + * frames.texi (Creating Frames): Mention `C-x 5' instead of `C-x + 4' where appropriate. + +1993-10-20 Brian Fox (bfox@ai.mit.edu) + + * Makefile: Fix targets for texindex. + + * texindex.c: Include "../src/config.h" if building in emacs. + + * Makefile: Change all files to FILENAME.texi, force all targets + to be FILENAME, not FILENAME.info. + Add target to build texindex.c, defining `emacs'. + +1993-08-14 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.19 released. + +1993-08-08 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.18 released. + +1993-07-20 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile: Fix source file names of the separate manuals. + +1993-07-18 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.17 released. + +1993-07-10 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * split-man: Fix typos in last change. + +1993-07-06 Jim Blandy (jimb@geech.gnu.ai.mit.edu) + + * Version 19.16 released. + +1993-06-19 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * version 19.15 released. + +1993-06-18 Jim Blandy (jimb@geech.gnu.ai.mit.edu) + + * Makefile (distclean): It's rm, not rf. + +1993-06-17 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * Version 19.14 released. + +1993-06-16 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * Makefile: New file. + +1993-06-08 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * Version 19.13 released. + +1993-05-27 Jim Blandy (jimb@geech.gnu.ai.mit.edu) + + * Version 19.9 released. + +1993-05-25 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * Version 19.8 released. + +1993-05-25 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * cmdargs.texi: Document the -i, -itype, and -iconic options. + + * trouble.texi: It's `enable-flow-control-on', not + `evade-flow-control-on'. + +1993-05-24 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * display.texi: Document standard-display-european. + +1993-05-22 Jim Blandy (jimb@geech.gnu.ai.mit.edu) + + * Version 19.7 released. + + * emacs.texi: Add a sentence to the top menu mentioning the + specific version of Emacs this manual applies to. + +1993-04-25 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) + + * basic.texi: Document next-line-add-lines variable used to + implement down-arrow. + + * killing.texi: Document kill-whole-line. + +1993-04-18 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) + + * text.texi: Update unix TeX ordering information. + +1993-03-26 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) + + * news.texi: Mention fill-rectangle in keybinding list. + + * killing.texi: Document fill-rectangle. + +1993-03-17 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) + + * vc.texi: Bring the docs up to date with VC 5.2. + +1992-01-10 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) + + * emacs.tex: Mention blackbox and gomoku under Amusements. + Assembler mode is now mentioned and appropriately indexed + under Programming Modes. + +1991-02-15 Robert J. Chassell (bob@wookumz.ai.mit.edu) + + * emacs.tex: Update TeX ordering information. + +1990-06-26 David Lawrence (tale@geech) + + * emacs.tex: Note that completion-ignored-extensions is not used + to filter out names when all completions are displayed in + *Completions*. + +1990-05-25 Richard Stallman (rms@sugar-bombs.ai.mit.edu) + + * texindex.tex: If USG, include sys/types.h and sys/fcntl.h. + +1990-03-21 Jim Kingdon (kingdon@pogo.ai.mit.edu) + + * emacs.tex: Add @findex grep. + +1988-08-16 Robert J. Chassell (bob@frosted-flakes.ai.mit.edu) + + * emacs.tex: Correct two typos. No other changes before + Version 19 will be made. + +1988-05-23 Robert J. Chassell (bob@frosted-flakes.ai.mit.edu) + + * emacs.tex: Update information for obtaining TeX distribution from the + University of Washington. + +;; Local Variables: +;; coding: iso-2022-7bit +;; fill-column: 79 +;; add-log-time-zone-rule: t +;; End: + + Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, + 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. + + This file is part of GNU Emacs. + + GNU Emacs is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + GNU Emacs is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU Emacs; see the file COPYING. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + +;;; arch-tag: f1d62776-3ed5-4811-9d96-267252577dbd diff --cc doc/emacs/files.texi index 8e2cb879754,00000000000..8e33dc5aa8c mode 100644,000000..100644 --- a/doc/emacs/files.texi +++ b/doc/emacs/files.texi @@@ -1,3076 -1,0 +1,3077 @@@ +@c This is part of the Emacs manual. +@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1999, 2000, +@c 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +@c See file emacs.texi for copying conditions. +@node Files, Buffers, Keyboard Macros, Top +@chapter File Handling +@cindex files + + The operating system stores data permanently in named @dfn{files}, so +most of the text you edit with Emacs comes from a file and is ultimately +stored in a file. + + To edit a file, you must tell Emacs to read the file and prepare a +buffer containing a copy of the file's text. This is called +@dfn{visiting} the file. Editing commands apply directly to text in the +buffer; that is, to the copy inside Emacs. Your changes appear in the +file itself only when you @dfn{save} the buffer back into the file. + + In addition to visiting and saving files, Emacs can delete, copy, +rename, and append to files, keep multiple versions of them, and operate +on file directories. + +@menu +* File Names:: How to type and edit file-name arguments. +* Visiting:: Visiting a file prepares Emacs to edit the file. +* Saving:: Saving makes your changes permanent. +* Reverting:: Reverting cancels all the changes not saved. +@ifnottex +* Autorevert:: Auto Reverting non-file buffers. +@end ifnottex +* Auto Save:: Auto Save periodically protects against loss of data. +* File Aliases:: Handling multiple names for one file. +* Version Control:: Version control systems (RCS, CVS and SCCS). +* Directories:: Creating, deleting, and listing file directories. +* Comparing Files:: Finding where two files differ. +* Diff Mode:: Mode for editing file differences. +* Misc File Ops:: Other things you can do on files. +* Compressed Files:: Accessing compressed files. +* File Archives:: Operating on tar, zip, jar etc. archive files. +* Remote Files:: Accessing files on other sites. +* Quoted File Names:: Quoting special characters in file names. +* File Name Cache:: Completion against a list of files you often use. +* File Conveniences:: Convenience Features for Finding Files. +* Filesets:: Handling sets of files. +@end menu + +@node File Names +@section File Names +@cindex file names + + Most Emacs commands that operate on a file require you to specify the +file name. (Saving and reverting are exceptions; the buffer knows which +file name to use for them.) You enter the file name using the +minibuffer (@pxref{Minibuffer}). @dfn{Completion} is available +(@pxref{Completion}) to make it easier to specify long file names. When +completing file names, Emacs ignores those whose file-name extensions +appear in the variable @code{completion-ignored-extensions}; see +@ref{Completion Options}. + + For most operations, there is a @dfn{default file name} which is used +if you type just @key{RET} to enter an empty argument. Normally the +default file name is the name of the file visited in the current buffer; +this makes it easy to operate on that file with any of the Emacs file +commands. + +@vindex default-directory + Each buffer has a default directory which is normally the same as the +directory of the file visited in that buffer. When you enter a file +name without a directory, the default directory is used. If you specify +a directory in a relative fashion, with a name that does not start with +a slash, it is interpreted with respect to the default directory. The +default directory is kept in the variable @code{default-directory}, +which has a separate value in every buffer. + +@findex cd +@findex pwd + The command @kbd{M-x pwd} displays the current buffer's default +directory, and the command @kbd{M-x cd} sets it (to a value read using +the minibuffer). A buffer's default directory changes only when the +@code{cd} command is used. A file-visiting buffer's default directory +is initialized to the directory of the file it visits. If you create +a buffer with @kbd{C-x b}, its default directory is copied from that +of the buffer that was current at the time. + + For example, if the default file name is @file{/u/rms/gnu/gnu.tasks} +then the default directory is normally @file{/u/rms/gnu/}. If you +type just @samp{foo}, which does not specify a directory, it is short +for @file{/u/rms/gnu/foo}. @samp{../.login} would stand for +@file{/u/rms/.login}. @samp{new/foo} would stand for the file name +@file{/u/rms/gnu/new/foo}. + +@vindex insert-default-directory + The default directory actually appears in the minibuffer when the +minibuffer becomes active to read a file name. This serves two +purposes: it @emph{shows} you what the default is, so that you can type +a relative file name and know with certainty what it will mean, and it +allows you to @emph{edit} the default to specify a different directory. +This insertion of the default directory is inhibited if the variable +@code{insert-default-directory} is set to @code{nil}. + + Note that it is legitimate to type an absolute file name after you +enter the minibuffer, ignoring the presence of the default directory +name as part of the text. The final minibuffer contents may look +invalid, but that is not so. For example, if the minibuffer starts out +with @samp{/usr/tmp/} and you add @samp{/x1/rms/foo}, you get +@samp{/usr/tmp//x1/rms/foo}; but Emacs ignores everything through the +first slash in the double slash; the result is @samp{/x1/rms/foo}. +@xref{Minibuffer File}. + +@cindex home directory shorthand + You can use @file{~/} in a file name to mean your home directory, +or @file{~@var{user-id}/} to mean the home directory of a user whose +login name is @code{user-id}@footnote{ +On MS-Windows and MS-DOS systems, where a user doesn't have a home +directory, Emacs replaces @file{~/} with the value of the +environment variable @code{HOME}; see @ref{General Variables}. On +these systems, the @file{~@var{user-id}/} construct is supported only +for the current user, i.e., only if @var{user-id} is the current +user's login name.}. + +@cindex environment variables in file names +@cindex expansion of environment variables +@cindex @code{$} in file names + @anchor{File Names with $}@samp{$} in a file name is used to +substitute an environment variable. The environment variable name +consists of all the alphanumeric characters after the @samp{$}; +alternatively, it can be enclosed in braces after the @samp{$}. For +example, if you have used the shell command @command{export +FOO=rms/hacks} to set up an environment variable named @env{FOO}, then +you can use @file{/u/$FOO/test.c} or @file{/u/$@{FOO@}/test.c} as an +abbreviation for @file{/u/rms/hacks/test.c}. If the environment +variable is not defined, no substitution occurs: @file{/u/$notdefined} +stands for itself (assuming the environment variable @env{notdefined} +is not defined). + + Note that shell commands to set environment variables affect Emacs +only when done before Emacs is started. + + To access a file with @samp{$} in its name, if the @samp{$} causes +expansion, type @samp{$$}. This pair is converted to a single +@samp{$} at the same time as variable substitution is performed for a +single @samp{$}. Alternatively, quote the whole file name with +@samp{/:} (@pxref{Quoted File Names}). File names which begin with a +literal @samp{~} should also be quoted with @samp{/:}. + +@findex substitute-in-file-name + The Lisp function that performs the @samp{$}-substitution is called +@code{substitute-in-file-name}. The substitution is performed only on +file names read as such using the minibuffer. + + You can include non-@acronym{ASCII} characters in file names if you set the +variable @code{file-name-coding-system} to a non-@code{nil} value. +@xref{File Name Coding}. + +@node Visiting +@section Visiting Files +@cindex visiting files +@cindex open file + +@table @kbd +@item C-x C-f +Visit a file (@code{find-file}). +@item C-x C-r +Visit a file for viewing, without allowing changes to it +(@code{find-file-read-only}). +@item C-x C-v +Visit a different file instead of the one visited last +(@code{find-alternate-file}). +@item C-x 4 f +Visit a file, in another window (@code{find-file-other-window}). Don't +alter what is displayed in the selected window. +@item C-x 5 f +Visit a file, in a new frame (@code{find-file-other-frame}). Don't +alter what is displayed in the selected frame. +@item M-x find-file-literally +Visit a file with no conversion of the contents. +@end table + +@cindex files, visiting and saving +@cindex saving files + @dfn{Visiting} a file means reading its contents into an Emacs +buffer so you can edit them. Emacs makes a new buffer for each file +that you visit. We often say that this buffer ``is visiting'' that +file, or that the buffer's ``visited file'' is that file. Emacs +constructs the buffer name from the file name by throwing away the +directory, keeping just the name proper. For example, a file named +@file{/usr/rms/emacs.tex} would get a buffer named @samp{emacs.tex}. +If there is already a buffer with that name, Emacs constructs a unique +name---the normal method is to append @samp{<2>}, @samp{<3>}, and so +on, but you can select other methods (@pxref{Uniquify}). + + Each window's mode line shows the name of the buffer that is being displayed +in that window, so you can always tell what buffer you are editing. + + The changes you make with editing commands are made in the Emacs +buffer. They do not take effect in the file that you visited, or any +permanent place, until you @dfn{save} the buffer. Saving the buffer +means that Emacs writes the current contents of the buffer into its +visited file. @xref{Saving}. + +@cindex modified (buffer) + If a buffer contains changes that have not been saved, we say the +buffer is @dfn{modified}. This is important because it implies that +some changes will be lost if the buffer is not saved. The mode line +displays two stars near the left margin to indicate that the buffer is +modified. + +@kindex C-x C-f +@findex find-file + To visit a file, use the command @kbd{C-x C-f} (@code{find-file}). Follow +the command with the name of the file you wish to visit, terminated by a +@key{RET}. + + The file name is read using the minibuffer (@pxref{Minibuffer}), with +defaulting and completion in the standard manner (@pxref{File Names}). +While in the minibuffer, you can abort @kbd{C-x C-f} by typing +@kbd{C-g}. File-name completion ignores certain file names; for more +about this, see @ref{Completion Options}. + + Your confirmation that @kbd{C-x C-f} has completed successfully is +the appearance of new text on the screen and a new buffer name in the +mode line. If the specified file does not exist and you could not +create it, or exists but you can't read it, then you get an error, +with an error message displayed in the echo area. + + If you visit a file that is already in Emacs, @kbd{C-x C-f} does not make +another copy. It selects the existing buffer containing that file. +However, before doing so, it checks whether the file itself has changed +since you visited or saved it last. If the file has changed, Emacs offers +to reread it. + +@vindex large-file-warning-threshold +@cindex maximum buffer size exceeded, error message + If you try to visit a file larger than +@code{large-file-warning-threshold} (the default is 10000000, which is +about 10 megabytes), Emacs will ask you for confirmation first. You +can answer @kbd{y} to proceed with visiting the file. Note, however, +that Emacs cannot visit files that are larger than the maximum Emacs +buffer size, which is around 256 megabytes on 32-bit machines +(@pxref{Buffers}). If you try, Emacs will display an error message +saying that the maximum buffer size has been exceeded. + +@cindex file selection dialog + On graphical displays there are two additional methods for +visiting files. Firstly, when Emacs is built with a suitable GUI +toolkit, commands invoked with the mouse (by clicking on the menu bar +or tool bar) use the toolkit's standard File Selection dialog instead +of prompting for the file name in the minibuffer. On Unix and +GNU/Linux platforms, Emacs does that when built with GTK, LessTif, and +Motif toolkits; on MS-Windows and Mac, the GUI version does that by default. +For information on how to customize this, see @ref{Dialog Boxes}. + + Secondly, Emacs supports ``drag and drop''; dropping a file into an +ordinary Emacs window visits the file using that window. However, +dropping a file into a window displaying a Dired buffer moves or +copies the file into the displayed directory. For details, see +@ref{Drag and Drop}, and @ref{Misc Dired Features}. + +@cindex creating files + What if you want to create a new file? Just visit it. Emacs displays +@samp{(New file)} in the echo area, but in other respects behaves as if +you had visited an existing empty file. If you make any changes and +save them, the file is created. + + Emacs recognizes from the contents of a file which end-of-line +convention it uses to separate lines---newline (used on GNU/Linux and +on Unix), carriage-return linefeed (used on Microsoft systems), or +just carriage-return (used on the Macintosh)---and automatically +converts the contents to the normal Emacs convention, which is that +the newline character separates lines. This is a part of the general +feature of coding system conversion (@pxref{Coding Systems}), and +makes it possible to edit files imported from different operating +systems with equal convenience. If you change the text and save the +file, Emacs performs the inverse conversion, changing newlines back +into carriage-return linefeed or just carriage-return if appropriate. + +@vindex find-file-run-dired + If the file you specify is actually a directory, @kbd{C-x C-f} invokes +Dired, the Emacs directory browser, so that you can ``edit'' the contents +of the directory (@pxref{Dired}). Dired is a convenient way to view, delete, +or operate on the files in the directory. However, if the variable +@code{find-file-run-dired} is @code{nil}, then it is an error to try +to visit a directory. + + Files which are actually collections of other files, or @dfn{file +archives}, are visited in special modes which invoke a Dired-like +environment to allow operations on archive members. @xref{File +Archives}, for more about these features. + +@cindex wildcard characters in file names +@vindex find-file-wildcards + If the file name you specify contains shell-style wildcard +characters, Emacs visits all the files that match it. (On +case-insensitive filesystems, Emacs matches the wildcards disregarding +the letter case.) Wildcards include @samp{?}, @samp{*}, and +@samp{[@dots{}]} sequences. To enter the wild card @samp{?} in a file +name in the minibuffer, you need to type @kbd{C-q ?}. @xref{Quoted +File Names}, for information on how to visit a file whose name +actually contains wildcard characters. You can disable the wildcard +feature by customizing @code{find-file-wildcards}. + + If you visit a file that the operating system won't let you modify, +or that is marked read-only, Emacs makes the buffer read-only too, so +that you won't go ahead and make changes that you'll have trouble +saving afterward. You can make the buffer writable with @kbd{C-x C-q} +(@code{toggle-read-only}). @xref{Misc Buffer}. + +@kindex C-x C-r +@findex find-file-read-only + If you want to visit a file as read-only in order to protect +yourself from entering changes accidentally, visit it with the command +@kbd{C-x C-r} (@code{find-file-read-only}) instead of @kbd{C-x C-f}. + +@kindex C-x C-v +@findex find-alternate-file + If you visit a nonexistent file unintentionally (because you typed the +wrong file name), use the @kbd{C-x C-v} command +(@code{find-alternate-file}) to visit the file you really wanted. +@kbd{C-x C-v} is similar to @kbd{C-x C-f}, but it kills the current +buffer (after first offering to save it if it is modified). When +@kbd{C-x C-v} reads the file name to visit, it inserts the entire +default file name in the buffer, with point just after the directory +part; this is convenient if you made a slight error in typing the name. + +@kindex C-x 4 f +@findex find-file-other-window + @kbd{C-x 4 f} (@code{find-file-other-window}) is like @kbd{C-x C-f} +except that the buffer containing the specified file is selected in another +window. The window that was selected before @kbd{C-x 4 f} continues to +show the same buffer it was already showing. If this command is used when +only one window is being displayed, that window is split in two, with one +window showing the same buffer as before, and the other one showing the +newly requested file. @xref{Windows}. + +@kindex C-x 5 f +@findex find-file-other-frame + @kbd{C-x 5 f} (@code{find-file-other-frame}) is similar, but opens a +new frame, or makes visible any existing frame showing the file you +seek. This feature is available only when you are using a window +system. @xref{Frames}. + +@findex find-file-literally + If you wish to edit a file as a sequence of @acronym{ASCII} characters with no special +encoding or conversion, use the @kbd{M-x find-file-literally} command. +It visits a file, like @kbd{C-x C-f}, but does not do format conversion +(@pxref{Formatted Text}), character code conversion (@pxref{Coding +Systems}), or automatic uncompression (@pxref{Compressed Files}), and +does not add a final newline because of @code{require-final-newline}. +If you already have visited the same file in the usual (non-literal) +manner, this command asks you whether to visit it literally instead. + +@vindex find-file-hook +@vindex find-file-not-found-functions + Two special hook variables allow extensions to modify the operation of +visiting files. Visiting a file that does not exist runs the functions +in the list @code{find-file-not-found-functions}; this variable holds a list +of functions, and the functions are called one by one (with no +arguments) until one of them returns non-@code{nil}. This is not a +normal hook, and the name ends in @samp{-functions} rather than @samp{-hook} +to indicate that fact. + + Successful visiting of any file, whether existing or not, calls the +functions in the list @code{find-file-hook}, with no arguments. +This variable is a normal hook. In the case of a nonexistent file, the +@code{find-file-not-found-functions} are run first. @xref{Hooks}. + + There are several ways to specify automatically the major mode for +editing the file (@pxref{Choosing Modes}), and to specify local +variables defined for that file (@pxref{File Variables}). + +@node Saving +@section Saving Files + + @dfn{Saving} a buffer in Emacs means writing its contents back into the file +that was visited in the buffer. + +@menu +* Save Commands:: Commands for saving files. +* Backup:: How Emacs saves the old version of your file. +* Customize Save:: Customizing the saving of files. +* Interlocking:: How Emacs protects against simultaneous editing + of one file by two users. +* Shadowing: File Shadowing. Copying files to "shadows" automatically. +* Time Stamps:: Emacs can update time stamps on saved files. +@end menu + +@node Save Commands +@subsection Commands for Saving Files + + These are the commands that relate to saving and writing files. + +@table @kbd +@item C-x C-s +Save the current buffer in its visited file on disk (@code{save-buffer}). +@item C-x s +Save any or all buffers in their visited files (@code{save-some-buffers}). +@item M-~ +Forget that the current buffer has been changed (@code{not-modified}). +With prefix argument (@kbd{C-u}), mark the current buffer as changed. +@item C-x C-w +Save the current buffer with a specified file name (@code{write-file}). +@item M-x set-visited-file-name +Change the file name under which the current buffer will be saved. +@end table + +@kindex C-x C-s +@findex save-buffer + When you wish to save the file and make your changes permanent, type +@kbd{C-x C-s} (@code{save-buffer}). After saving is finished, @kbd{C-x C-s} +displays a message like this: + +@example +Wrote /u/rms/gnu/gnu.tasks +@end example + +@noindent +If the selected buffer is not modified (no changes have been made in it +since the buffer was created or last saved), saving is not really done, +because it would have no effect. Instead, @kbd{C-x C-s} displays a message +like this in the echo area: + +@example +(No changes need to be saved) +@end example + +@kindex C-x s +@findex save-some-buffers + The command @kbd{C-x s} (@code{save-some-buffers}) offers to save any +or all modified buffers. It asks you what to do with each buffer. The +possible responses are analogous to those of @code{query-replace}: + +@table @kbd +@item y +Save this buffer and ask about the rest of the buffers. +@item n +Don't save this buffer, but ask about the rest of the buffers. +@item ! +Save this buffer and all the rest with no more questions. +@c following generates acceptable underfull hbox +@item @key{RET} +Terminate @code{save-some-buffers} without any more saving. +@item . +Save this buffer, then exit @code{save-some-buffers} without even asking +about other buffers. +@item C-r +View the buffer that you are currently being asked about. When you exit +View mode, you get back to @code{save-some-buffers}, which asks the +question again. +@item d +Diff the buffer against its corresponding file, so you can see +what changes you would be saving. +@item C-h +Display a help message about these options. +@end table + + @kbd{C-x C-c}, the key sequence to exit Emacs, invokes +@code{save-some-buffers} and therefore asks the same questions. + +@kindex M-~ +@findex not-modified + If you have changed a buffer but you do not want to save the changes, +you should take some action to prevent it. Otherwise, each time you use +@kbd{C-x s} or @kbd{C-x C-c}, you are liable to save this buffer by +mistake. One thing you can do is type @kbd{M-~} (@code{not-modified}), +which clears out the indication that the buffer is modified. If you do +this, none of the save commands will believe that the buffer needs to be +saved. (@samp{~} is often used as a mathematical symbol for `not'; thus +@kbd{M-~} is `not', metafied.) You could also use +@code{set-visited-file-name} (see below) to mark the buffer as visiting +a different file name, one which is not in use for anything important. +Alternatively, you can cancel all the changes made since the file was +visited or saved, by reading the text from the file again. This is +called @dfn{reverting}. @xref{Reverting}. (You could also undo all the +changes by repeating the undo command @kbd{C-x u} until you have undone +all the changes; but reverting is easier.) You can also kill the buffer. + +@findex set-visited-file-name + @kbd{M-x set-visited-file-name} alters the name of the file that the +current buffer is visiting. It reads the new file name using the +minibuffer. Then it marks the buffer as visiting that file name, and +changes the buffer name correspondingly. @code{set-visited-file-name} +does not save the buffer in the newly visited file; it just alters the +records inside Emacs in case you do save later. It also marks the +buffer as ``modified'' so that @kbd{C-x C-s} in that buffer +@emph{will} save. + +@kindex C-x C-w +@findex write-file + If you wish to mark the buffer as visiting a different file and save it +right away, use @kbd{C-x C-w} (@code{write-file}). It is +equivalent to @code{set-visited-file-name} followed by @kbd{C-x C-s} +(except that @kbd{C-x C-w} asks for confirmation if the file exists). +@kbd{C-x C-s} used on a buffer that is not visiting a file has the +same effect as @kbd{C-x C-w}; that is, it reads a file name, marks the +buffer as visiting that file, and saves it there. The default file name in +a buffer that is not visiting a file is made by combining the buffer name +with the buffer's default directory (@pxref{File Names}). + + If the new file name implies a major mode, then @kbd{C-x C-w} switches +to that major mode, in most cases. The command +@code{set-visited-file-name} also does this. @xref{Choosing Modes}. + + If Emacs is about to save a file and sees that the date of the latest +version on disk does not match what Emacs last read or wrote, Emacs +notifies you of this fact, because it probably indicates a problem caused +by simultaneous editing and requires your immediate attention. +@xref{Interlocking,, Simultaneous Editing}. + +@node Backup +@subsection Backup Files +@cindex backup file +@vindex make-backup-files +@vindex vc-make-backup-files + + On most operating systems, rewriting a file automatically destroys all +record of what the file used to contain. Thus, saving a file from Emacs +throws away the old contents of the file---or it would, except that +Emacs carefully copies the old contents to another file, called the +@dfn{backup} file, before actually saving. + + For most files, the variable @code{make-backup-files} determines +whether to make backup files. On most operating systems, its default +value is @code{t}, so that Emacs does write backup files. + + For files managed by a version control system (@pxref{Version +Control}), the variable @code{vc-make-backup-files} determines whether +to make backup files. By default it is @code{nil}, since backup files +are redundant when you store all the previous versions in a version +control system. +@iftex +@xref{General VC Options,,,emacs-xtra, Specialized Emacs Features}. +@end iftex +@ifnottex +@xref{General VC Options}. +@end ifnottex + + + At your option, Emacs can keep either a single backup for each file, +or make a series of numbered backup files for each file that you edit. + +@vindex backup-enable-predicate +@vindex temporary-file-directory +@vindex small-temporary-file-directory + The default value of the @code{backup-enable-predicate} variable +prevents backup files being written for files in the directories used +for temporary files, specified by @code{temporary-file-directory} or +@code{small-temporary-file-directory}. + + Emacs makes a backup for a file only the first time the file is saved +from one buffer. No matter how many times you save a file, its backup file +continues to contain the contents from before the file was visited. +Normally this means that the backup file contains the contents from before +the current editing session; however, if you kill the buffer and then visit +the file again, a new backup file will be made by the next save. + + You can also explicitly request making another backup file from a +buffer even though it has already been saved at least once. If you save +the buffer with @kbd{C-u C-x C-s}, the version thus saved will be made +into a backup file if you save the buffer again. @kbd{C-u C-u C-x C-s} +saves the buffer, but first makes the previous file contents into a new +backup file. @kbd{C-u C-u C-u C-x C-s} does both things: it makes a +backup from the previous contents, and arranges to make another from the +newly saved contents if you save again. + +@menu +* One or Many: Numbered Backups. Whether to make one backup file or many. +* Names: Backup Names. How backup files are named. +* Deletion: Backup Deletion. Emacs deletes excess numbered backups. +* Copying: Backup Copying. Backups can be made by copying or renaming. +@end menu + +@node Numbered Backups +@subsubsection Numbered Backups + +@vindex version-control + The choice of single backup file or multiple numbered backup files +is controlled by the variable @code{version-control}. Its possible +values are: + +@table @code +@item t +Make numbered backups. +@item nil +Make numbered backups for files that have numbered backups already. +Otherwise, make single backups. +@item never +Never make numbered backups; always make single backups. +@end table + +@noindent +The usual way to set this variable is globally, through your +@file{.emacs} file or the customization buffer. However, you can set +@code{version-control} locally in an individual buffer to control the +making of backups for that buffer's file. For example, Rmail mode +locally sets @code{version-control} to @code{never} to make sure that +there is only one backup for an Rmail file. @xref{Locals}. + +@cindex @env{VERSION_CONTROL} environment variable + If you set the environment variable @env{VERSION_CONTROL}, to tell +various GNU utilities what to do with backup files, Emacs also obeys the +environment variable by setting the Lisp variable @code{version-control} +accordingly at startup. If the environment variable's value is @samp{t} +or @samp{numbered}, then @code{version-control} becomes @code{t}; if the +value is @samp{nil} or @samp{existing}, then @code{version-control} +becomes @code{nil}; if it is @samp{never} or @samp{simple}, then +@code{version-control} becomes @code{never}. + +@node Backup Names +@subsubsection Single or Numbered Backups + + When Emacs makes a single backup file, its name is normally +constructed by appending @samp{~} to the file name being edited; thus, +the backup file for @file{eval.c} would be @file{eval.c~}. + +@vindex make-backup-file-name-function +@vindex backup-directory-alist + You can change this behavior by defining the variable +@code{make-backup-file-name-function} to a suitable function. +Alternatively you can customize the variable +@code{backup-directory-alist} to specify that files matching certain +patterns should be backed up in specific directories. + + A typical use is to add an element @code{("." . @var{dir})} to make +all backups in the directory with absolute name @var{dir}; Emacs +modifies the backup file names to avoid clashes between files with the +same names originating in different directories. Alternatively, +adding, say, @code{("." . ".~")} would make backups in the invisible +subdirectory @file{.~} of the original file's directory. Emacs +creates the directory, if necessary, to make the backup. + + If access control stops Emacs from writing backup files under the usual +names, it writes the backup file as @file{%backup%~} in your home +directory. Only one such file can exist, so only the most recently +made such backup is available. + + If you choose to have a series of numbered backup files, backup file +names contain @samp{.~}, the number, and another @samp{~} after the +original file name. Thus, the backup files of @file{eval.c} would be +called @file{eval.c.~1~}, @file{eval.c.~2~}, and so on, all the way +through names like @file{eval.c.~259~} and beyond. The variable +@code{backup-directory-alist} applies to numbered backups just as +usual. + +@node Backup Deletion +@subsubsection Automatic Deletion of Backups + + To prevent excessive consumption of disk space, Emacs can delete numbered +backup versions automatically. Generally Emacs keeps the first few backups +and the latest few backups, deleting any in between. This happens every +time a new backup is made. + +@vindex kept-old-versions +@vindex kept-new-versions + The two variables @code{kept-old-versions} and +@code{kept-new-versions} control this deletion. Their values are, +respectively, the number of oldest (lowest-numbered) backups to keep +and the number of newest (highest-numbered) ones to keep, each time a +new backup is made. The backups in the middle (excluding those oldest +and newest) are the excess middle versions---those backups are +deleted. These variables' values are used when it is time to delete +excess versions, just after a new backup version is made; the newly +made backup is included in the count in @code{kept-new-versions}. By +default, both variables are 2. + +@vindex delete-old-versions + If @code{delete-old-versions} is @code{t}, Emacs deletes the excess +backup files silently. If it is @code{nil}, the default, Emacs asks +you whether it should delete the excess backup versions. If it has +any other value, then Emacs never automatically deletes backups. + + Dired's @kbd{.} (Period) command can also be used to delete old versions. +@xref{Dired Deletion}. + +@node Backup Copying +@subsubsection Copying vs.@: Renaming + + Backup files can be made by copying the old file or by renaming it. +This makes a difference when the old file has multiple names (hard +links). If the old file is renamed into the backup file, then the +alternate names become names for the backup file. If the old file is +copied instead, then the alternate names remain names for the file +that you are editing, and the contents accessed by those names will be +the new contents. + + The method of making a backup file may also affect the file's owner +and group. If copying is used, these do not change. If renaming is used, +you become the file's owner, and the file's group becomes the default +(different operating systems have different defaults for the group). + + Having the owner change is usually a good idea, because then the owner +always shows who last edited the file. Also, the owners of the backups +show who produced those versions. Occasionally there is a file whose +owner should not change; it is a good idea for such files to contain +local variable lists to set @code{backup-by-copying-when-mismatch} +locally (@pxref{File Variables}). + +@vindex backup-by-copying +@vindex backup-by-copying-when-linked +@vindex backup-by-copying-when-mismatch +@vindex backup-by-copying-when-privileged-mismatch +@cindex file ownership, and backup +@cindex backup, and user-id + The choice of renaming or copying is controlled by four variables. +Renaming is the default choice. If the variable +@code{backup-by-copying} is non-@code{nil}, copying is used. Otherwise, +if the variable @code{backup-by-copying-when-linked} is non-@code{nil}, +then copying is used for files that have multiple names, but renaming +may still be used when the file being edited has only one name. If the +variable @code{backup-by-copying-when-mismatch} is non-@code{nil}, then +copying is used if renaming would cause the file's owner or group to +change. @code{backup-by-copying-when-mismatch} is @code{t} by default +if you start Emacs as the superuser. The fourth variable, +@code{backup-by-copying-when-privileged-mismatch}, gives the highest +numeric user-id for which @code{backup-by-copying-when-mismatch} will be +forced on. This is useful when low-numbered user-ids are assigned to +special system users, such as @code{root}, @code{bin}, @code{daemon}, +etc., which must maintain ownership of files. + + When a file is managed with a version control system (@pxref{Version +Control}), Emacs does not normally make backups in the usual way for +that file. But check-in and check-out are similar in some ways to +making backups. One unfortunate similarity is that these operations +typically break hard links, disconnecting the file name you visited from +any alternate names for the same file. This has nothing to do with +Emacs---the version control system does it. + +@node Customize Save +@subsection Customizing Saving of Files + +@vindex require-final-newline + If the value of the variable @code{require-final-newline} is +@code{t}, saving or writing a file silently puts a newline at the end +if there isn't already one there. If the value is @code{visit}, Emacs +adds a newline at the end of any file that doesn't have one, just +after it visits the file. (This marks the buffer as modified, and you +can undo it.) If the value is @code{visit-save}, that means to add +newlines both on visiting and on saving. If the value is @code{nil}, +Emacs leaves the end of the file unchanged; if it's neither @code{nil} +nor @code{t}, Emacs asks you whether to add a newline. The default is +@code{nil}. + +@vindex mode-require-final-newline + Many major modes are designed for specific kinds of files that are +always supposed to end in newlines. These major modes set the +variable @code{require-final-newline} according to +@code{mode-require-final-newline}. By setting the latter variable, +you can control how these modes handle final newlines. + +@vindex write-region-inhibit-fsync + When Emacs saves a file, it invokes the @code{fsync} system call to +force the data immediately out to disk. This is important for safety +if the system crashes or in case of power outage. However, it can be +disruptive on laptops using power saving, because it requires the disk +to spin up each time you save a file. Setting +@code{write-region-inhibit-fsync} to a non-@code{nil} value disables +this synchronization. Be careful---this means increased risk of data +loss. + +@node Interlocking +@subsection Protection against Simultaneous Editing + +@cindex file dates +@cindex simultaneous editing + Simultaneous editing occurs when two users visit the same file, both +make changes, and then both save them. If nobody were informed that +this was happening, whichever user saved first would later find that his +changes were lost. + + On some systems, Emacs notices immediately when the second user starts +to change the file, and issues an immediate warning. On all systems, +Emacs checks when you save the file, and warns if you are about to +overwrite another user's changes. You can prevent loss of the other +user's work by taking the proper corrective action instead of saving the +file. + +@findex ask-user-about-lock +@cindex locking files + When you make the first modification in an Emacs buffer that is +visiting a file, Emacs records that the file is @dfn{locked} by you. +(It does this by creating a symbolic link in the same directory with a +different name.) Emacs removes the lock when you save the changes. The +idea is that the file is locked whenever an Emacs buffer visiting it has +unsaved changes. + +@cindex collision + If you begin to modify the buffer while the visited file is locked by +someone else, this constitutes a @dfn{collision}. When Emacs detects a +collision, it asks you what to do, by calling the Lisp function +@code{ask-user-about-lock}. You can redefine this function for the sake +of customization. The standard definition of this function asks you a +question and accepts three possible answers: + +@table @kbd +@item s +Steal the lock. Whoever was already changing the file loses the lock, +and you gain the lock. +@item p +Proceed. Go ahead and edit the file despite its being locked by someone else. +@item q +Quit. This causes an error (@code{file-locked}), and the buffer +contents remain unchanged---the modification you were trying to make +does not actually take place. +@end table + + Note that locking works on the basis of a file name; if a file has +multiple names, Emacs does not realize that the two names are the same file +and cannot prevent two users from editing it simultaneously under different +names. However, basing locking on names means that Emacs can interlock the +editing of new files that will not really exist until they are saved. + + Some systems are not configured to allow Emacs to make locks, and +there are cases where lock files cannot be written. In these cases, +Emacs cannot detect trouble in advance, but it still can detect the +collision when you try to save a file and overwrite someone else's +changes. + + If Emacs or the operating system crashes, this may leave behind lock +files which are stale, so you may occasionally get warnings about +spurious collisions. When you determine that the collision is spurious, +just use @kbd{p} to tell Emacs to go ahead anyway. + + Every time Emacs saves a buffer, it first checks the last-modification +date of the existing file on disk to verify that it has not changed since the +file was last visited or saved. If the date does not match, it implies +that changes were made in the file in some other way, and these changes are +about to be lost if Emacs actually does save. To prevent this, Emacs +displays a warning message and asks for confirmation before saving. +Occasionally you will know why the file was changed and know that it does +not matter; then you can answer @kbd{yes} and proceed. Otherwise, you should +cancel the save with @kbd{C-g} and investigate the situation. + + The first thing you should do when notified that simultaneous editing +has already taken place is to list the directory with @kbd{C-u C-x C-d} +(@pxref{Directories}). This shows the file's current author. You +should attempt to contact him to warn him not to continue editing. +Often the next step is to save the contents of your Emacs buffer under a +different name, and use @code{diff} to compare the two files.@refill + +@node File Shadowing +@subsection Shadowing Files +@cindex shadow files +@cindex file shadows +@findex shadow-initialize + +@table @kbd +@item M-x shadow-initialize +Set up file shadowing. +@item M-x shadow-define-literal-group +Declare a single file to be shared between sites. +@item M-x shadow-define-regexp-group +Make all files that match each of a group of files be shared between hosts. +@item M-x shadow-define-cluster @key{RET} @var{name} @key{RET} +Define a shadow file cluster @var{name}. +@item M-x shadow-copy-files +Copy all pending shadow files. +@item M-x shadow-cancel +Cancel the instruction to shadow some files. +@end table + +You can arrange to keep identical @dfn{shadow} copies of certain files +in more than one place---possibly on different machines. To do this, +first you must set up a @dfn{shadow file group}, which is a set of +identically-named files shared between a list of sites. The file +group is permanent and applies to further Emacs sessions as well as +the current one. Once the group is set up, every time you exit Emacs, +it will copy the file you edited to the other files in its group. You +can also do the copying without exiting Emacs, by typing @kbd{M-x +shadow-copy-files}. + +To set up a shadow file group, use @kbd{M-x +shadow-define-literal-group} or @kbd{M-x shadow-define-regexp-group}. +See their documentation strings for further information. + +Before copying a file to its shadows, Emacs asks for confirmation. +You can answer ``no'' to bypass copying of this file, this time. If +you want to cancel the shadowing permanently for a certain file, use +@kbd{M-x shadow-cancel} to eliminate or change the shadow file group. + +A @dfn{shadow cluster} is a group of hosts that share directories, so +that copying to or from one of them is sufficient to update the file +on all of them. Each shadow cluster has a name, and specifies the +network address of a primary host (the one we copy files to), and a +regular expression that matches the host names of all the other hosts +in the cluster. You can define a shadow cluster with @kbd{M-x +shadow-define-cluster}. + +@node Time Stamps +@subsection Updating Time Stamps Automatically +@cindex time stamps +@cindex modification dates +@cindex locale, date format + +You can arrange to put a time stamp in a file, so that it will be updated +automatically each time you edit and save the file. The time stamp +has to be in the first eight lines of the file, and you should +insert it like this: + +@example +Time-stamp: <> +@end example + +@noindent +or like this: + +@example +Time-stamp: " " +@end example + +@findex time-stamp + Then add the hook function @code{time-stamp} to the hook +@code{before-save-hook}; that hook function will automatically update +the time stamp, inserting the current date and time when you save the +file. You can also use the command @kbd{M-x time-stamp} to update the +time stamp manually. For other customizations, see the Custom group +@code{time-stamp}. Note that non-numeric fields in the time stamp are +formatted according to your locale setting (@pxref{Environment}). + +@node Reverting +@section Reverting a Buffer +@findex revert-buffer +@cindex drastic changes +@cindex reread a file + + If you have made extensive changes to a file and then change your mind +about them, you can get rid of them by reading in the previous version +of the file. To do this, use @kbd{M-x revert-buffer}, which operates on +the current buffer. Since reverting a buffer unintentionally could lose +a lot of work, you must confirm this command with @kbd{yes}. + + @code{revert-buffer} tries to position point in such a way that, if +the file was edited only slightly, you will be at approximately the +same piece of text after reverting as before. However, if you have made +drastic changes, point may wind up in a totally different piece of text. + + Reverting marks the buffer as ``not modified'' until another change is +made. + + Some kinds of buffers whose contents reflect data bases other than files, +such as Dired buffers, can also be reverted. For them, reverting means +recalculating their contents from the appropriate data base. Buffers +created explicitly with @kbd{C-x b} cannot be reverted; @code{revert-buffer} +reports an error when asked to do so. + +@vindex revert-without-query + When you edit a file that changes automatically and frequently---for +example, a log of output from a process that continues to run---it may be +useful for Emacs to revert the file without querying you, whenever you +visit the file again with @kbd{C-x C-f}. + + To request this behavior, set the variable @code{revert-without-query} +to a list of regular expressions. When a file name matches one of these +regular expressions, @code{find-file} and @code{revert-buffer} will +revert it automatically if it has changed---provided the buffer itself +is not modified. (If you have edited the text, it would be wrong to +discard your changes.) + +@cindex Global Auto-Revert mode +@cindex mode, Global Auto-Revert +@cindex Auto-Revert mode +@cindex mode, Auto-Revert +@findex global-auto-revert-mode +@findex auto-revert-mode +@findex auto-revert-tail-mode + + You may find it useful to have Emacs revert files automatically when +they change. Three minor modes are available to do this. + + @kbd{M-x global-auto-revert-mode} enables Global Auto-Revert mode, +which periodically checks all file buffers and reverts when the +corresponding file has changed. @kbd{M-x auto-revert-mode} enables a +local version, Auto-Revert mode, which applies only to the current +buffer. + + You can use Auto-Revert mode to ``tail'' a file such as a system +log, so that changes made to that file by other programs are +continuously displayed. To do this, just move the point to the end of +the buffer, and it will stay there as the file contents change. +However, if you are sure that the file will only change by growing at +the end, use Auto-Revert Tail mode instead +(@code{auto-revert-tail-mode}). It is more efficient for this. + +@vindex auto-revert-interval + The variable @code{auto-revert-interval} controls how often to check +for a changed file. Since checking a remote file is too slow, these +modes do not check or revert remote files. + + @xref{VC Mode Line}, for Auto Revert peculiarities in buffers that +visit files under version control. + +@ifnottex +@include arevert-xtra.texi +@end ifnottex + +@node Auto Save +@section Auto-Saving: Protection Against Disasters +@cindex Auto Save mode +@cindex mode, Auto Save +@cindex crashes + - Emacs saves all the visited files from time to time (based on counting - your keystrokes) without being asked. This is called @dfn{auto-saving}. - It prevents you from losing more than a limited amount of work if the - system crashes. ++ Emacs saves all the visited files from time to time (based on ++counting your keystrokes) without being asked, in separate files so as ++not to alter the files you actually use. This is called ++@dfn{auto-saving}. It prevents you from losing more than a limited ++amount of work if the system crashes. + + When Emacs determines that it is time for auto-saving, it considers +each buffer, and each is auto-saved if auto-saving is enabled for it +and it has been changed since the last time it was auto-saved. The +message @samp{Auto-saving...} is displayed in the echo area during +auto-saving, if any files are actually auto-saved. Errors occurring +during auto-saving are caught so that they do not interfere with the +execution of commands you have been typing. + +@menu +* Files: Auto Save Files. The file where auto-saved changes are + actually made until you save the file. +* Control: Auto Save Control. Controlling when and how often to auto-save. +* Recover:: Recovering text from auto-save files. +@end menu + +@node Auto Save Files +@subsection Auto-Save Files + + Auto-saving does not normally save in the files that you visited, because +it can be very undesirable to save a program that is in an inconsistent +state when you have made half of a planned change. Instead, auto-saving +is done in a different file called the @dfn{auto-save file}, and the +visited file is changed only when you request saving explicitly (such as +with @kbd{C-x C-s}). + + Normally, the auto-save file name is made by appending @samp{#} to the +front and rear of the visited file name. Thus, a buffer visiting file +@file{foo.c} is auto-saved in a file @file{#foo.c#}. Most buffers that +are not visiting files are auto-saved only if you request it explicitly; +when they are auto-saved, the auto-save file name is made by appending +@samp{#} to the front and rear of buffer name, then +adding digits and letters at the end for uniqueness. For +example, the @samp{*mail*} buffer in which you compose messages to be +sent might be auto-saved in a file named @file{#*mail*#704juu}. Auto-save file +names are made this way unless you reprogram parts of Emacs to do +something different (the functions @code{make-auto-save-file-name} and +@code{auto-save-file-name-p}). The file name to be used for auto-saving +in a buffer is calculated when auto-saving is turned on in that buffer. + +@cindex auto-save for remote files +@vindex auto-save-file-name-transforms + The variable @code{auto-save-file-name-transforms} allows a degree +of control over the auto-save file name. It lets you specify a series +of regular expressions and replacements to transform the auto save +file name. The default value puts the auto-save files for remote +files (@pxref{Remote Files}) into the temporary file directory on the +local machine. + + When you delete a substantial part of the text in a large buffer, auto +save turns off temporarily in that buffer. This is because if you +deleted the text unintentionally, you might find the auto-save file more +useful if it contains the deleted text. To reenable auto-saving after +this happens, save the buffer with @kbd{C-x C-s}, or use @kbd{C-u 1 M-x +auto-save-mode}. + +@vindex auto-save-visited-file-name + If you want auto-saving to be done in the visited file rather than +in a separate auto-save file, set the variable +@code{auto-save-visited-file-name} to a non-@code{nil} value. In this +mode, there is no real difference between auto-saving and explicit +saving. + +@vindex delete-auto-save-files + A buffer's auto-save file is deleted when you save the buffer in its +visited file. (You can inhibit this by setting the variable +@code{delete-auto-save-files} to @code{nil}.) Changing the visited +file name with @kbd{C-x C-w} or @code{set-visited-file-name} renames +any auto-save file to go with the new visited name. + +@node Auto Save Control +@subsection Controlling Auto-Saving + +@vindex auto-save-default +@findex auto-save-mode + Each time you visit a file, auto-saving is turned on for that file's +buffer if the variable @code{auto-save-default} is non-@code{nil} (but not +in batch mode; @pxref{Entering Emacs}). The default for this variable is +@code{t}, so auto-saving is the usual practice for file-visiting buffers. +Auto-saving can be turned on or off for any existing buffer with the +command @kbd{M-x auto-save-mode}. Like other minor mode commands, @kbd{M-x +auto-save-mode} turns auto-saving on with a positive argument, off with a +zero or negative argument; with no argument, it toggles. + +@vindex auto-save-interval + Emacs does auto-saving periodically based on counting how many characters +you have typed since the last time auto-saving was done. The variable +@code{auto-save-interval} specifies how many characters there are between +auto-saves. By default, it is 300. Emacs doesn't accept values that are +too small: if you customize @code{auto-save-interval} to a value less +than 20, Emacs will behave as if the value is 20. + +@vindex auto-save-timeout + Auto-saving also takes place when you stop typing for a while. The +variable @code{auto-save-timeout} says how many seconds Emacs should +wait before it does an auto save (and perhaps also a garbage +collection). (The actual time period is longer if the current buffer is +long; this is a heuristic which aims to keep out of your way when you +are editing long buffers, in which auto-save takes an appreciable amount +of time.) Auto-saving during idle periods accomplishes two things: +first, it makes sure all your work is saved if you go away from the +terminal for a while; second, it may avoid some auto-saving while you +are actually typing. + + Emacs also does auto-saving whenever it gets a fatal error. This +includes killing the Emacs job with a shell command such as @samp{kill +%emacs}, or disconnecting a phone line or network connection. + +@findex do-auto-save + You can request an auto-save explicitly with the command @kbd{M-x +do-auto-save}. + +@node Recover +@subsection Recovering Data from Auto-Saves + +@findex recover-file + You can use the contents of an auto-save file to recover from a loss +of data with the command @kbd{M-x recover-file @key{RET} @var{file} +@key{RET}}. This visits @var{file} and then (after your confirmation) +restores the contents from its auto-save file @file{#@var{file}#}. +You can then save with @kbd{C-x C-s} to put the recovered text into +@var{file} itself. For example, to recover file @file{foo.c} from its +auto-save file @file{#foo.c#}, do:@refill + +@example +M-x recover-file @key{RET} foo.c @key{RET} +yes @key{RET} +C-x C-s +@end example + + Before asking for confirmation, @kbd{M-x recover-file} displays a +directory listing describing the specified file and the auto-save file, +so you can compare their sizes and dates. If the auto-save file +is older, @kbd{M-x recover-file} does not offer to read it. + +@findex recover-session + If Emacs or the computer crashes, you can recover all the files you +were editing from their auto save files with the command @kbd{M-x +recover-session}. This first shows you a list of recorded interrupted +sessions. Move point to the one you choose, and type @kbd{C-c C-c}. + + Then @code{recover-session} asks about each of the files that were +being edited during that session, asking whether to recover that file. +If you answer @kbd{y}, it calls @code{recover-file}, which works in its +normal fashion. It shows the dates of the original file and its +auto-save file, and asks once again whether to recover that file. + + When @code{recover-session} is done, the files you've chosen to +recover are present in Emacs buffers. You should then save them. Only +this---saving them---updates the files themselves. + +@vindex auto-save-list-file-prefix + Emacs records information about interrupted sessions for later +recovery in files named +@file{~/.emacs.d/auto-save-list/.saves-@var{pid}-@var{hostname}}. All +of this name except the @file{@var{pid}-@var{hostname}} part comes +from the value of @code{auto-save-list-file-prefix}. You can record +sessions in a different place by customizing that variable. If you +set @code{auto-save-list-file-prefix} to @code{nil} in your +@file{.emacs} file, sessions are not recorded for recovery. + +@node File Aliases +@section File Name Aliases +@cindex symbolic links (visiting) +@cindex hard links (visiting) + + Symbolic links and hard links both make it possible for several file +names to refer to the same file. Hard links are alternate names that +refer directly to the file; all the names are equally valid, and no one +of them is preferred. By contrast, a symbolic link is a kind of defined +alias: when @file{foo} is a symbolic link to @file{bar}, you can use +either name to refer to the file, but @file{bar} is the real name, while +@file{foo} is just an alias. More complex cases occur when symbolic +links point to directories. + +@vindex find-file-existing-other-name +@vindex find-file-suppress-same-file-warnings + + Normally, if you visit a file which Emacs is already visiting under +a different name, Emacs displays a message in the echo area and uses +the existing buffer visiting that file. This can happen on systems +that support hard or symbolic links, or if you use a long file name on +a system that truncates long file names, or on a case-insensitive file +system. You can suppress the message by setting the variable +@code{find-file-suppress-same-file-warnings} to a non-@code{nil} +value. You can disable this feature entirely by setting the variable +@code{find-file-existing-other-name} to @code{nil}: then if you visit +the same file under two different names, you get a separate buffer for +each file name. + +@vindex find-file-visit-truename +@cindex truenames of files +@cindex file truenames + If the variable @code{find-file-visit-truename} is non-@code{nil}, +then the file name recorded for a buffer is the file's @dfn{truename} +(made by replacing all symbolic links with their target names), rather +than the name you specify. Setting @code{find-file-visit-truename} also +implies the effect of @code{find-file-existing-other-name}. + +@node Version Control +@section Version Control +@cindex version control + + @dfn{Version control systems} are packages that can record multiple +versions of a source file, usually storing the unchanged parts of the +file just once. Version control systems also record history information +such as the creation time of each version, who created it, and a +description of what was changed in that version. + + The Emacs version control interface is called VC. Its commands work +with different version control systems---currently, it supports CVS, +GNU Arch, RCS, Meta-CVS, Subversion, and SCCS. Of these, the GNU +project distributes CVS, GNU Arch, and RCS. We also have free +software to replace SCCS, known as CSSC; if you are using SCCS and +don't want to make the incompatible change to RCS or CVS, you can +switch to CSSC. + + VC is enabled by default in Emacs. To disable it, set the +customizable variable @code{vc-handled-backends} to @code{nil} +@iftex +(@pxref{Customizing VC,,,emacs-xtra, Specialized Emacs Features}). +@end iftex +@ifnottex +(@pxref{Customizing VC}). +@end ifnottex + + +@menu +* Introduction to VC:: How version control works in general. +* VC Mode Line:: How the mode line shows version control status. +* Basic VC Editing:: How to edit a file under version control. +* Old Revisions:: Examining and comparing old versions. +* Secondary VC Commands:: The commands used a little less frequently. +* Branches:: Multiple lines of development. +@ifnottex +* Remote Repositories:: Efficient access to remote CVS servers. +* Snapshots:: Sets of file versions treated as a unit. +* Miscellaneous VC:: Various other commands and features of VC. +* Customizing VC:: Variables that change VC's behavior. +@end ifnottex +@end menu + +@node Introduction to VC +@subsection Introduction to Version Control + + VC allows you to use a version control system from within Emacs, +integrating the version control operations smoothly with editing. +Though VC cannot completely bridge the gaps between version-control +systems with widely differing capabilities, it does provide +a uniform interface to many version control operations. Regardless of +which version control system is in use, you will be able to do basic +operations in much the same way. + + This section provides a general overview of version control, and +describes the version control systems that VC supports. You can skip +this section if you are already familiar with the version control system +you want to use. + +@menu +* Why Version Control?:: Understanding the problems it addresses +* Version Control Systems:: Supported version control back-end systems. +* VCS Concepts:: Words and concepts related to version control. +* Types of Log File:: The VCS log in contrast to the ChangeLog. +@end menu + +@node Why Version Control? +@subsubsection Understanding the problems it addresses + + Version control systems provide you with three important capabilities: +@dfn{reversibility}, @dfn{concurrency}, and @dfn{history}. + + The most basic capability you get from a version-control system is +reversibility, the ability to back up to a saved, known-good state when +you discover that some modification you did was a mistake or a bad idea. + + Version-control systems also support concurrency, the ability to +have many people modifying the same collection of code or documents +knowing that conflicting modifications can be detected and resolved. + + Version-control systems give you the capability to attach a history +to your data, explanatory comments about the intention behind each +change to it. Even for a programmer working solo change histories +are an important aid to memory; for a multi-person project they +become a vitally important form of communication among developers. + +@node Version Control Systems +@subsubsection Supported Version Control Systems + +@cindex back end (version control) + VC currently works with six different version control systems or +``back ends'': SCCS, RCS, CVS, Meta-CVS, Subversion, GNU Arch, +git, and Mercurial. +@comment Omitting bzr because support is very scratchy and incomplete. + +@cindex SCCS + SCCS was the first version-control system ever built, and was long ago +superseded by later and more advanced ones; Emacs supports it only for +backward compatibility and historical reasons. VC compensates for +certain features missing in SCCS (snapshots, for example) by +implementing them itself, but some other VC features, such as multiple +branches, are not available with SCCS. Since SCCS is non-free you +should not use it; use its free replacement CSSC instead. But you +should use CSSC only if for some reason you cannot use a more +recent and better-designed version-control system. + +@cindex RCS + RCS is the free version control system around which VC was initially +built. Almost everything you can do with RCS can be done through VC. You +cannot use RCS over the network, though, and it only works at the level +of individual files, rather than projects. You should use it if you +want a simple, yet reliable tool for handling individual files. + +@cindex CVS + CVS is the free version control system that was until recently (as of +2007) used for the majority of free software projects, though it is now +being superseded by other systems. It allows concurrent +multi-user development either locally or over the network. Some of its +shortcomings, corrected by newer systems such as Subversion or GNU Arch, +are that it lacks atomic commits or support for renaming files. VC +supports all basic editing operations under CVS, but for some less +common tasks you still need to call CVS from the command line. Note +also that before using CVS you must set up a repository, which is a +subject too complex to treat here. + +@cindex Meta-CVS + Meta-CVS uses CVS repositories, but has an enhanced client that +uses client-side information to solve various of the known problems +with CVS. It is not widely used, having been overtaken by Subversion. +The Emacs support for it is rudimentary, and may be removed in a +future version. + +@cindex SVN +@cindex Subversion + Subversion is a free version control system designed to be similar +to CVS but without CVS's problems, and is now (2007) rapidly +superseding CVS. Subversion supports atomic commits of filesets, and +versions directories, symbolic links, meta-data, renames, copies, and +deletes. It can be used via http or via its own protocol. + +@cindex GNU Arch +@cindex Arch + GNU Arch is a new version control system that is designed for +distributed work. It differs in many ways from old well-known +systems, such as CVS and RCS. It supports different transports for +interoperating between users, offline operations, and it has good +branching and merging features. It also supports atomic commits of +filesets, and keeps a history of file renaming and moving. VC +does not support all operations provided by GNU Arch, so you must +sometimes invoke it from the command line, or use a specialized +module. + +@cindex git + git is a version-control system invented by Linus Torvalds to +support Linux kernel development. Like GNU Arch, it supports atomic +commits of filesets, and keeps a history of file renaming and +moving. One significant feature of git is that it largely abolishes +the notion of a single centralized repository; instead, each working +copy of a git project is its own repository and coordination is done +through repository-sync operations. VC fully supports git, except +that it doesn't do news merges and repository sync operations must +be done from the command line. + +@cindex hg +@cindex Mercurial + Mercurial is a distributed version-control systems broadly +resembling GNU Arch and git, with atomic fileset commits and +rename/move histories. Like git it is fully decentralized. +VC fully supports Mercurial, except for repository sync operations +which still need to be done from the command line. + +@node VCS Concepts +@subsubsection Concepts of Version Control + +@cindex repository +@cindex registered file + When a file is under version control, we also say that it is +@dfn{registered} in the version control system. The system has a +@dfn{repository} which stores both the file's present state plus its +change history---enough to reconstruct the current version or any +earlier version. The repository will also contain a @dfn{log entry} for +each change to the file, describing in words what was modified in that +revision. + +@cindex work file +@cindex checking out files + A file checked out of a version-control repository is sometimes +called the @dfn{work file}. You edit the work file and make changes +in it, as you would with an ordinary file. After you are done with a +set of changes, you @dfn{check in} or @dfn{commit} the file, which +records the changes in the repository, along with a log entry for +them. + +@cindex revision +@cindex revision ID + A copy of a file stored in a repository is called a @dfn{revision}. +The history of a file is a sequence of revisions. Each revisions is +named by a @dfn{revision ID}. In older VCSes (such as SCCS and RCS), +the simplest kind of revision ID consisted of a @dfn{dot-pair}; +integers (the @dfn{major} and @dfn{minor} revisions) separated by a +dot. Newer VCSes tend to use @dfn{monotonic} revision IDs that are +simple integers counting from 1. + + To go beyond these basic concepts, you will need to understand three +ways in which version-control systems can differ from each other. They +can be locking or merging; they can be file-based or changeset-based; +and they can be centralized or decentralized. VC handles all these +choices, but they lead to differing behaviors which you will need +to understand as you use it. + +@cindex locking versus merging + A version control system typically has some mechanism to coordinate +between users who want to change the same file. One method is +@dfn{locking} (analogous to the locking that Emacs uses to detect +simultaneous editing of a file, but distinct from it). In a locking +system, such as SCCS, you must @dfn{lock} a file before you start to +edit it. The other method is @dfn{merging}; the system tries to +merge your changes with other people's changes when you check them in. + + With version control locking, work files are normally read-only so +that you cannot change them. You ask the version control system to make +a work file writable for you by locking it; only one user can do +this at any given time. When you check in your changes, that unlocks +the file, making the work file read-only again. This allows other users +to lock the file to make further changes. + + By contrast, a merging system lets each user check out and modify a +work file at any time. When you check in a file, the system will +attempt to merge your changes with any others checked into the +repository since you checked out the file. + + Both locking and merging systems can have problems when multiple users +try to modify the same file at the same time. Locking systems have +@dfn{lock conflicts}; a user may try to check a file out and be unable +to because it is locked. In merging systems, @dfn{merge conflicts} +happen when you check in a change to a file that conflicts with a change +checked in by someone else after your checkout. Both kinds of conflict +have to be resolved by human judgment and communication. + + SCCS always uses locking. RCS is lock-based by default but can be +told to operate in a merging style. CVS and Subversion are +merge-based by default but can be told to operate in a locking mode. +Most later version-control systems, such as GNU Arch, git, and +Mercurial, have been based exclusively on merging rather than locking. +This is because experience has shown that the merging-based approach +is generally superior to the locking one, both in convenience to +developers and in minimizing the number and severity of conflicts that +actually occur. + + While it is rather unlikely that anyone will ever again build a +fundamentally locking-based rather than merging-based version-control +system in the future, merging-based version-systems sometimes have locks +retrofitted onto them for reasons having nothing to do with technology. +@footnote{Usually the control-freak instincts of managers.} For this +reason, and to support older systems still in use, VC mode supports +both locking and merging version control and tries to hide the differences +between them as much as possible. + +@cindex files versus changesets. + On SCCS, RCS, CVS, and other early version-control systems, checkins +and other operations are @dfn{file-based}; each file has its own +@dfn{master file} with its own comment and revision history separate +from that of all other files in the system. Later systems, beginning +with Subversion, are @dfn{changeset-based}; a checkin under these +may include changes to several files and that change set is treated as +a unit by the system. Any comment associated with the change belongs +to no single file, but is attached to the changeset itself. + + Changeset-based version control is in general both more flexible and +more powerful than file-based version control; usually, when a change to +multiple files has to be backed out, it's good to be able to easily +identify and remove all of it. But it took some years for designers to +figure that out, and while file-based systems are passing out of use +there are lots of legacy repositories still to be dealt with at time of +writing in 2007. + + In fact, older versions of VC mode supported only file-based systems, +leading to some unhappy results when it was used to drive +changeset-based ones---the Subversion support, for example, used to break +up changesets into multiple per-file commits. This has been fixed, but +it has left a legacy in VC-mode's terminology. The terms ``checkin'' +and ``checkout'' are associated with file-based and locking-based +systems and a bit archaic; nowadays those operations are usually called +``commit'' and ``update''. + +@cindex centralized vs. decentralized + Early version-control systems were designed around a @dfn{centralized} +model in which each project has only one repository used by all +developers. SCCS, RCS, CVS, and Subversion share this kind of model. +It has two important problems. One is that a single repository is a +single point of failure---if the repository server is down all work +stops. The other is that you need to be connected live to the server to +do checkins and checkouts; if you're offline, you can't work. + + Newer version-control systems like GNU Arch, git, Mercurial, and Bzr +are @dfn{decentralized}. A project may have several different +repositories, and these systems support a sort of super-merge between +repositories that tries to reconcile their change histories. At the +limit, each developer has his/her own repository, and repository +merges replace checkin/commit operations. + + VC's job is to help you manage the traffic between your personal +workfiles and a repository. Whether that repository is a single master +or one of a network of peer repositories is not something VC has to care +about. Thus, the difference between a centralized and a decentralized +version-control system is invisible to VC mode. + +@iftex +(@pxref{CVS Options,,,emacs-xtra, Specialized Emacs Features}). +@end iftex +@ifnottex +(@pxref{CVS Options}). +@end ifnottex + + +@node Types of Log File +@subsubsection Types of Log File +@cindex types of log file +@cindex log File, types of +@cindex version control log + + Projects that use a revision control system can have @emph{two} +types of log for changes. One is the log maintained by the +revision control system: each time you check in a change, you must +fill out a @dfn{log entry} for the change (@pxref{Log Buffer}). This +kind of log is called the @dfn{version control log}, also the +@dfn{revision control log}, @dfn{RCS log}, or @dfn{CVS log}. + + The other kind of log is the file @file{ChangeLog} (@pxref{Change +Log}). It provides a chronological record of all changes to a large +portion of a program---typically one directory and its subdirectories. +A small program would use one @file{ChangeLog} file; a large program +may well merit a @file{ChangeLog} file in each major directory. +@xref{Change Log}. + + Actually, the fact that both kinds of log exist is partly a legacy from +file-based version control. Changelogs are a GNU convention, later +more widely adopted, that help developers to get a changeset-based +view of a project even when its version-control system has that +information split up in multiple file-based logs. + + Changeset-based version systems, on the other hand, often maintain +a changeset-based modification log for the entire system that makes +ChangeLogs mostly redundant. The only advantage ChangeLogs retain is that +it may be useful to be able to view the transaction history of a +single directory separately from those of other directories. + + A project maintained with version control can use just the +version-control log, or it can use both kinds of logs. It can +handle some files one way and some files the other way. Each project +has its policy, which you should follow. + + When the policy is to use both, you typically want to write an entry +for each change just once, then put it into both logs. You can write +the entry in @file{ChangeLog}, then copy it to the log buffer when you +check in the change. Or you can write the entry in the log buffer +while checking in the change, and later use the @kbd{C-x v a} command +to copy it to @file{ChangeLog} +@iftex +(@pxref{Change Logs and VC,,,emacs-xtra, Specialized Emacs Features}). +@end iftex +@ifnottex +(@pxref{Change Logs and VC}). +@end ifnottex + +@node VC Mode Line +@subsection Version Control and the Mode Line + + When you visit a file that is under version control, Emacs indicates +this on the mode line. For example, @samp{RCS-1.3} says that RCS is +used for that file, and the current version is 1.3. + + The character between the back-end name and the revision ID +indicates the version control status of the file. @samp{-} means that +the work file is not locked (if locking is in use), or not modified (if +locking is not in use). @samp{:} indicates that the file is locked, or +that it is modified. If the file is locked by some other user (for +instance, @samp{jim}), that is displayed as @samp{RCS:jim:1.3}. + +@vindex auto-revert-check-vc-info + When Auto Revert mode (@pxref{Reverting}) reverts a buffer that is +under version control, it updates the version control information in +the mode line. However, Auto Revert mode may not properly update this +information if the version control status changes without changes to +the work file, from outside the current Emacs session. If you set +@code{auto-revert-check-vc-info} to @code{t}, Auto Revert mode updates +the version control status information every +@code{auto-revert-interval} seconds, even if the work file itself is +unchanged. The resulting CPU usage depends on the version control +system, but is usually not excessive. + +@node Basic VC Editing +@subsection Basic Editing under Version Control + +@menu +* Selecting A Fileset:: Choosing a set of files to operate on +* Doing The Right Thing:: Stepping forward in the development cycle +* VC With A Locking VCS:: RCS in its default mode, SCCS, and optionally CVS. +* VC With A Merging VCS:: Without locking: default mode for CVS. +* Advanced C-x v v:: Advanced features available with a prefix argument. +* Log Buffer:: Features available in log entry buffers. +@end menu + +@node Selecting A Fileset +@subsubsection Choosing the scope of your command + +@cindex filesets + Most VC commands operate on @dfn{filesets}. A fileset is a +group of files that you have chosen to treat as a unit at the +time you perform the command. Filesets are the way that VC +mode bridges the gap between file-based and changeset-based +version-control systems. + + If you are visiting a version-controlled file in the current buffer, +the default fileset for any command is simply that one file. If you +are visiting a VC Dired buffer, and some files in it are marked, +your fileset is the marked files only. + + All files in a fileset must be under the same version-control system. +If they are not, VC mode will fail when you attempt to execute +a command on the fileset. + + VC filesets are, essentially, a way to pass multiple file +arguments as a group to underlying version-control commands. For +example, on Subversion a checkin with more than one file in its +fileset will become a joint commit, as though you had typed +@command{svn commit} with those file arguments at the shell command +line in the directory of the selected buffer. + + If you are accustomed to earlier versions of VC, the change in behavior +you will notice is in VC-Dired mode. Other than @kbd{C-x v v}, most +VC-mode commands once operated on only one file selected by the line +the cursor is on. The change in the behavior of @kbd{C-x v v} outside +VC-Dired mode is more subtle. Formerly it operated in parallel on all +marked files, but did not pass them to the version-control backends as +a group. Now it does, which enables VC to drive changeset-based +version-control systems. + + Emacs uses the concept of named filesets elsewhere +(@pxref{Filesets}) to allow you to view and visit files in functional +groups. Unlike those, VC filesets are not named and don't persist +across sessions. + +@node Doing The Right Thing +@subsubsection Performing the next operation in the development cycle + + The principal VC command is an all-purpose command that performs +either locking or check-in on your current fileset, depending on +the situation. + +@table @kbd +@itemx C-x v v +Perform the next logical version control operation on this file. +@end table + +@findex vc-next-action +@kindex C-x v v + The precise action of this command depends on the state of the file, +and whether the version control system uses locking or merging. SCCS and +RCS normally use locking; CVS and Subversion normally use +merging but can be configured to do locking. Later systems such as +GNU Arch and Mercurial always use merging. + +@findex vc-toggle-read-only +@kindex C-x C-q @r{(Version Control)} + As a special convenience that is particularly useful for files with +locking, you can let Emacs check a file in or out whenever you change +its read-only flag. This means, for example, that you cannot +accidentally edit a file without properly checking it out first. To +achieve this, bind the key @kbd{C-x C-q} to @kbd{vc-toggle-read-only} +in your @file{~/.emacs} file. (@xref{Init Rebinding}.) + +@node VC With A Locking VCS +@subsubsection Basic Version Control with Locking + + If locking is used for the file (as with SCCS, and RCS in its default +mode), @kbd{C-x v v} can either lock a file or check it in: + +@itemize @bullet +@item +If the file is not locked, @kbd{C-x v v} locks it, and +makes it writable so that you can change it. + +@item +If the file is locked by you, and contains changes, @kbd{C-x v v} checks +in the changes. In order to do this, it first reads the log entry +for the new revision. @xref{Log Buffer}. + +@item +If the file is locked by you, but you have not changed it since you +locked it, @kbd{C-x v v} releases the lock and makes the file read-only +again. + +@item +If the file is locked by some other user, @kbd{C-x v v} asks you whether +you want to ``steal the lock'' from that user. If you say yes, the file +becomes locked by you, but a message is sent to the person who had +formerly locked the file, to inform him of what has happened. +@end itemize + + These rules also apply when you use CVS in locking mode, except +that there is no such thing as stealing a lock. + +@node VC With A Merging VCS +@subsubsection Basic Version Control with Merging + + When your version-control system is merging-based rather than +locking-based---the default for CVS and Subversion, and the way GNU +Arch and more modern systems always work---work files are always +writable; you do not need to do anything before you begin to edit a +file. The status indicator on the mode line is @samp{-} if the file +is unmodified; it flips to @samp{:} as soon as you save any changes in +the work file. + + Here is what @kbd{C-x v v} does when using a merging-based system +(such as CVS or Subversion in their default merging mode): + +@itemize @bullet +@item +If some other user has checked in changes into the repository, Emacs +asks you whether you want to merge those changes into your own work +file. You must do this before you can check in your own changes. (To +pick up any recent changes from the repository @emph{without} trying +to commit your own changes, type @kbd{C-x v m @key{RET}}.) +@xref{Merging}. + +@item +If there are no new changes in the repository, but you have made +modifications in your work file, @kbd{C-x v v} checks in your changes. +In order to do this, it first reads the log entry for the new revision. +@xref{Log Buffer}. + +@item +If the file is not modified, the @kbd{C-x v v} does nothing. +@end itemize + + These rules also apply when you use RCS in the mode that does not +require locking, except that automatic merging of changes from the +repository is not implemented. Unfortunately, this means that nothing +informs you if another user has checked in changes in the same file +since you began editing it, and when this happens, his changes will be +effectively removed when you check in your revision (though they will +remain in the repository, so they will not be entirely lost). You must +therefore verify that the current revision is unchanged, before you +check in your changes. + + In addition, locking is possible with RCS even in this mode, although +it is not required; @kbd{C-x v v} with an unmodified file locks the +file, just as it does with RCS in its normal (locking) mode. + + Later systems like CVS, Subversion and Arch will notice conflicting +changes in the repository automatically and notify you when they occur. + +@node Advanced C-x v v +@subsubsection Advanced Control in @kbd{C-x v v} + +@cindex revision ID to check in/out + When you give a prefix argument to @code{vc-next-action} (@kbd{C-u +C-x v v}), it still performs the next logical version control +operation, but accepts additional arguments to specify precisely how +to do the operation. + +@itemize @bullet +@item +If the file is modified (or locked), you can specify the revision ID +to use for the new version that you check in. This is one way +to create a new branch (@pxref{Branches}). + +@item +If the file is not modified (and unlocked), you can specify the +revision to select; this lets you start working from an older +revision, or on another branch. If you do not enter any revision, +that takes you to the highest (``head'') revision on the current +branch; therefore @kbd{C-u C-x v v @key{RET}} is a convenient way to +get the latest version of a file from the repository. + +@item +@cindex specific version control system +Instead of the revision ID, you can also specify the name of a +version control system. This is useful when one file is being managed +with two version control systems at the same time +@iftex +(@pxref{Local Version Control,,,emacs-xtra, Specialized Emacs +Features}). +@end iftex +@ifnottex +(@pxref{Local Version Control}). +@end ifnottex + +@end itemize + +@node Log Buffer +@subsubsection Features of the Log Entry Buffer + + When you check in changes, @kbd{C-x v v} first reads a log entry. It +pops up a buffer called @samp{*VC-Log*} for you to enter the log entry. + + Sometimes the @samp{*VC-Log*} buffer contains default text when you enter it, +typically the last log message entered. If it does, mark and point +are set around the entire contents of the buffer so that it is easy to +kill the contents of the buffer with @kbd{C-w}. + +@findex log-edit-insert-changelog + If you work by first writing entries in the @file{ChangeLog} +(@pxref{Change Log}) and afterwards committing the change under revision +control, you can generate the Log Edit text from the ChangeLog using +@kbd{C-c C-a} (@kbd{log-edit-insert-changelog}). This looks for +entries for the file(s) concerned in the top entry in the ChangeLog +and uses those paragraphs as the log text. This text is only inserted +if the top entry was made under your user name on the current date. +@iftex +@xref{Change Logs and VC,,,emacs-xtra, Specialized Emacs Features}, +@end iftex +@ifnottex +@xref{Change Logs and VC}, +@end ifnottex +for the opposite way of working---generating ChangeLog entries from +the revision control log. + + In the @samp{*VC-Log*} buffer, @kbd{C-c C-f} (@kbd{M-x +log-edit-show-files}) shows the list of files to be committed in case +you need to check that. (This can be a list of more than one file if +you use VC Dired mode or PCL-CVS.) +@iftex +@xref{VC Dired Mode,,,emacs-xtra, Specialized Emacs Features}, +@end iftex +@ifnottex +@xref{VC Dired Mode}, +@end ifnottex +and @ref{Top, , About PCL-CVS, pcl-cvs, PCL-CVS --- The Emacs +Front-End to CVS}.) + + When you have finished editing the log message, type @kbd{C-c C-c} to +exit the buffer and commit the change. + + To abort check-in, just @strong{don't} type @kbd{C-c C-c} in that +buffer. You can switch buffers and do other editing. As long as you +don't try to check in another file, the entry you were editing remains +in the @samp{*VC-Log*} buffer, and you can go back to that buffer at any +time to complete the check-in. + + If you change several source files for the same reason, it is often +convenient to specify the same log entry for many of the files. (This +is the normal way to do things on a changeset-oriented system, where +comments are attached to changesets rather than the history of +individual files.) The most convenient way to do this is to mark all the +files in VC-Dired mode and check in from there; the log buffer will +carry the fileset information with it and do a group commit when you +confirm it with @kbd{C-c C-c}. + + However, you can also browse the history of previous log entries to +duplicate a checkin comment. This can be useful when you want several +files to have checkin comments that vary only slightly from each +other. The commands @kbd{M-n}, @kbd{M-p}, @kbd{M-s} and @kbd{M-r} for +doing this work just like the minibuffer history commands (except that +these versions are used outside the minibuffer). + +@vindex vc-log-mode-hook + Each time you check in a change, the log entry buffer is put into VC Log +mode, which involves running two hooks: @code{text-mode-hook} and +@code{vc-log-mode-hook}. @xref{Hooks}. + +@node Old Revisions +@subsection Examining And Comparing Old Revisions + + One of the convenient features of version control is the ability +to examine any revision of a file, or compare two revisions. + +@table @kbd +@item C-x v ~ @var{revision} @key{RET} +Examine revision @var{revision} of the visited file, in a buffer of its +own. + +@item C-x v = +Compare the buffer contents associated with the current +fileset with the working revision(s) from which you started editing. + +@item C-u C-x v = @key{RET} @var{oldvers} @key{RET} @var{newvers} @key{RET} +Compare the specified two repository revisions of the current fileset. + +@item C-x v g +Display the file with per-line revision information and using colors. +@end table + +@findex vc-revision-other-window +@kindex C-x v ~ + To examine an old revision in its entirety, visit the file and then type +@kbd{C-x v ~ @var{revision} @key{RET}} (@code{vc-revision-other-window}). +This puts the text of revision @var{revision} in a file named +@file{@var{filename}.~@var{revision}~}, and visits it in its own buffer +in a separate window. (In RCS, you can also select an old revision +and create a branch from it. @xref{Branches}.) + +@findex vc-diff +@kindex C-x v = +@kbd{C-x v =} compares the current buffer contents of each file in the +current fileset (saving them in the file if necessary) with the +repository revision from which you started editing each file (this is not +necessarily the latest revision of the file). The diff will be displayed +in a special buffer in another window. + +@findex vc-diff +@kindex C-u C-x v = + You can compare two repository revisions of the current fileset with +the command @kbd{C-u C-x v =} (@code{vc-diff}). @kbd{C-u C-x v =} reads +two revision ID or tags. The diff will be displayed in a special +buffer in another window. + + You can specify a checked-in revision by its ID; an empty input +specifies the current contents of the work file (which may be different +from all the checked-in revisions). You can also specify a snapshot name +@iftex +(@pxref{Snapshots,,,emacs-xtra, Specialized Emacs Features}) +@end iftex +@ifnottex +(@pxref{Snapshots}) +@end ifnottex +instead of one or both revision ID. + + Note that if your version-control system is file-oriented (SCCS, +RCS, CVS) rather than fileset-oriented (Subversion, GNU Arch, git, +Mercurial) specifying a revision of a multiple-file fileset by +revision ID (as opposed to a snapshot name or RSCCS/RCS tag) is +unlikely to return diffs that are connected in any meaningful way. + + If you invoke @kbd{C-u C-x v =} or @kbd{C-u C-x v =} from a buffer +that is neither visiting a version-controlled file nor a VC Dired +buffer, these commands will generate a diff of all registered files in +the current directory and its subdirectories. + +@vindex vc-diff-switches +@vindex vc-rcs-diff-switches + @kbd{C-x v =} works by running a variant of the @code{diff} utility +designed to work with the version control system in use. When you +invoke @code{diff} this way, in addition to the options specified by +@code{diff-switches} (@pxref{Comparing Files}), it receives those +specified by @code{vc-diff-switches}, plus those specified for the +specific back end by @code{vc-@var{backend}-diff-switches}. For +instance, when the version control back end is RCS, @code{diff} uses +the options in @code{vc-rcs-diff-switches}. The +@samp{vc@dots{}diff-switches} variables are @code{nil} by default. + + The buffer produced by @kbd{C-x v =} supports the commands of +Compilation mode (@pxref{Compilation Mode}), such as @kbd{C-x `} and +@kbd{C-c C-c}, in both the ``old'' and ``new'' text, and they always +find the corresponding locations in the current work file. (Older +revisions are not, in general, present as files on your disk.) + +@findex vc-annotate +@kindex C-x v g + For some back ends, you can display the file @dfn{annotated} with +per-line revision information and using colors to enhance the visual +appearance, with the command @kbd{M-x vc-annotate}. This creates a new +buffer (the ``annotate buffer'') displaying the file's text, with each +part colored to show how old it is. Text colored red is new, blue means +old, and intermediate colors indicate intermediate ages. By default, +the color is scaled over the full range of ages, such that the oldest +changes are blue, and the newest changes are red. + + When you give a prefix argument to this command, Emacs reads two +arguments using the minibuffer: the ID of which revision to display and +annotate (instead of the current file contents), and the time span in +days the color range should cover. + + From the annotate buffer, these and other color scaling options are +available from the @samp{VC-Annotate} menu. In this buffer, you can +also use the following keys to browse the annotations of past revisions, +view diffs, or view log entries: + +@table @kbd +@item P +Annotate the previous revision, that is to say, the revision before +the one currently annotated. A numeric prefix argument is a repeat +count, so @kbd{C-u 10 P} would take you back 10 revisions. + +@item N +Annotate the next revision---the one after the revision currently +annotated. A numeric prefix argument is a repeat count. + +@item J +Annotate the revision indicated by the current line. + +@item A +Annotate the revision before the one indicated by the current line. +This is useful to see the state the file was in before the change on +the current line was made. + +@item D +Display the diff between the current line's revision and the previous +revision. This is useful to see what the current line's revision +actually changed in the file. + +@item L +Show the log of the current line's revision. This is useful to see +the author's description of the changes in the revision on the current +line. + +@item W +Annotate the working revision--the one you are editing. If you used +@kbd{P} and @kbd{N} to browse to other revisions, use this key to +return to your working revision. +@end table + +@node Secondary VC Commands +@subsection The Secondary Commands of VC + + This section explains the secondary commands of VC, those that you might +use once a day. + +@menu +* Registering:: Putting a file under version control. +* VC Status:: Viewing the VC status of files. +* VC Undo:: Canceling changes before or after check-in. +@ifnottex +* VC Dired Mode:: Listing files managed by version control. +* VC Dired Commands:: Commands to use in a VC Dired buffer. +@end ifnottex +@end menu + +@node Registering +@subsubsection Registering a File for Version Control + +@kindex C-x v i +@findex vc-register + You can put any file under version control by simply visiting it, and +then typing @w{@kbd{C-x v i}} (@code{vc-register}). + +@table @kbd +@item C-x v i +Register the visited file for version control. +@end table + + To register the file, Emacs must choose which version control system +to use for it. If the file's directory already contains files +registered in a version control system, Emacs uses that system. If +there is more than one system in use for a directory, Emacs uses the +one that appears first in @code{vc-handled-backends} +@iftex +(@pxref{Customizing VC,,,emacs-xtra, Specialized Emacs Features}). +@end iftex +@ifnottex +(@pxref{Customizing VC}). +@end ifnottex +On the other hand, if there are no files already registered, Emacs uses +the first system from @code{vc-handled-backends} that could register +the file (for example, you cannot register a file under CVS if its +directory is not already part of a CVS tree); with the default value +of @code{vc-handled-backends}, this means that Emacs uses RCS in this +situation. + + If locking is in use, @kbd{C-x v i} leaves the file unlocked and +read-only. Type @kbd{C-x v v} if you wish to start editing it. After +registering a file with CVS, you must subsequently commit the initial +revision by typing @kbd{C-x v v}. Until you do that, the revision ID +appears as @samp{@@@@} in the mode line. + +@vindex vc-default-init-revision +@cindex initial revision ID to register + The default initial revision ID for a newly registered file +varies by what VCS you are using; normally it will be 1.1 on VCSes +that use dot-pair revision IDs and 1 on VCSes that use monotonic IDs. +You can specify a different default by setting the variable +@code{vc-default-init-revision}, or you can give @kbd{C-x v i} a +numeric argument; then it reads the initial revision ID for this +particular file using the minibuffer. + +@vindex vc-initial-comment + If @code{vc-initial-comment} is non-@code{nil}, @kbd{C-x v i} reads an +initial comment to describe the purpose of this source file. Reading +the initial comment works like reading a log entry (@pxref{Log Buffer}). + +@node VC Status +@subsubsection VC Status Commands + +@table @kbd +@item C-x v l +Display revision control state and change history. +@end table + +@kindex C-x v l +@findex vc-print-log + To view the detailed revision control status and history of a file, +type @kbd{C-x v l} (@code{vc-print-log}). It displays the history of +changes to the current file, including the text of the log entries. The +output appears in a separate window. The point is centered at the +revision of the file that is currently being visited. + + In the change log buffer, you can use the following keys to move +between the logs of revisions and of files, to view past revisions, and +to view diffs: + +@table @kbd +@item p +Move to the previous revision-item in the buffer. (Revision entries in the log +buffer are usually in reverse-chronological order, so the previous +revision-item usually corresponds to a newer revision.) A numeric +prefix argument is a repeat count. + +@item n +Move to the next revision-item (which most often corresponds to the +previous revision of the file). A numeric prefix argument is a repeat +count. + +@item P +Move to the log of the previous file, when the logs of multiple files +are in the log buffer +@iftex +(@pxref{VC Dired Mode,,,emacs-xtra, Specialized Emacs Features}). +@end iftex +@ifnottex +(@pxref{VC Dired Mode}). +@end ifnottex +Otherwise, just move to the beginning of the log. A numeric prefix +argument is a repeat count, so @kbd{C-u 10 P} would move backward 10 +files. + +@item N +Move to the log of the next file, when the logs of multiple files are +in the log buffer +@iftex +(@pxref{VC Dired Mode,,,emacs-xtra, Specialized Emacs Features}). +@end iftex +@ifnottex +(@pxref{VC Dired Mode}). +@end ifnottex +It also takes a numeric prefix argument as a repeat count. + +@item f +Visit the revision indicated at the current line, like typing @kbd{C-x +v ~} and specifying this revision's ID (@pxref{Old Revisions}). + +@item d +Display the diff (@pxref{Comparing Files}) between the revision +indicated at the current line and the next earlier revision. This is +useful to see what actually changed when the revision indicated on the +current line was committed. +@end table + +@node VC Undo +@subsubsection Undoing Version Control Actions + +@table @kbd +@item C-x v u +Revert the buffer and the file to the working revision from which you started +editing the file. + +@item C-x v c +Remove the last-entered change from the master for the visited file. +This undoes your last check-in. +@end table + +@kindex C-x v u +@findex vc-revert-buffer + If you want to discard your current set of changes and revert to the +working revision from which you started editing the file, use @kbd{C-x v u} +(@code{vc-revert-buffer}). This leaves the file unlocked; if locking +is in use, you must first lock the file again before you change it +again. @kbd{C-x v u} requires confirmation, unless it sees that you +haven't made any changes with respect to the master copy of the +working revision. + + @kbd{C-x v u} is also the command to unlock a file if you lock it and +then decide not to change it. + +@kindex C-x v c +@findex vc-rollback + To cancel a change that you already checked in, use @kbd{C-x v c} +(@code{vc-rollback}). This command discards all record of the most +recent checked-in revision, but only if your work file corresponds to +that revision---you cannot use @kbd{C-x v c} to cancel a revision that is +not the latest on its branch. Note that many version-control systems do +not support rollback at all; this command is something of a historical +relic. + +@ifnottex +@c vc1-xtra.texi needs extra level of lowering. +@lowersections +@include vc1-xtra.texi +@raisesections +@end ifnottex + +@node Branches +@subsection Multiple Branches of a File +@cindex branch (version control) +@cindex trunk (version control) + + One use of version control is to maintain multiple ``current'' +revisions of a file. For example, you might have different revisions of a +program in which you are gradually adding various unfinished new +features. Each such independent line of development is called a +@dfn{branch}. VC allows you to create branches, switch between +different branches, and merge changes from one branch to another. +Please note, however, that branches are not supported for SCCS. + + A file's main line of development is usually called the @dfn{trunk}. +You can create multiple branches from the trunk. How the difference +between trunk and branch is made visible is dependent on whether the +VCS uses dot-pair or monotonic version IDs. + + In VCSes with dot-pair revision IDs, the revisions on the trunk are +normally IDed 1.1, 1.2, 1.3, etc. At any such revision, you can +start an independent branch. A branch starting at revision 1.2 would +have revision ID 1.2.1.1, and consecutive revisions on this branch +would have IDs 1.2.1.2, 1.2.1.3, 1.2.1.4, and so on. If there is +a second branch also starting at revision 1.2, it would consist of +revisions 1.2.2.1, 1.2.2.2, 1.2.2.3, etc. + + In VCSes with monotonic revision IDs, trunk revisions are IDed as +1, 2, 3, etc. A branch from (say) revision 2 might start with 2.1 and +continue through 2.2, 2.3, etc. But naming conventions for branches +and subbranches vary widely on these systems, and some (like +Mercurial) never depart from the monotonic integer sequence at all. +Consult the documentation of the VCS you are using. + +@cindex head revision + If you omit the final component of a dot-pair revision ID, that is called a +@dfn{branch ID}. It refers to the highest existing revision on that +branch---the @dfn{head revision} of that branch. The branches in the +dot-pair example above have branch IDs 1.2.1 and 1.2.2. + +@menu +* Switching Branches:: How to get to another existing branch. +* Creating Branches:: How to start a new branch. +* Merging:: Transferring changes between branches. +* Multi-User Branching:: Multiple users working at multiple branches + in parallel. +@end menu + +@node Switching Branches +@subsubsection Switching between Branches + + To switch between branches, type @kbd{C-u C-x v v} and specify the +revision ID you want to select. On a locking-based system, this +version is then visited @emph{unlocked} (write-protected), so you can +examine it before locking it. Switching branches in this way is allowed +only when the file is not locked. + + On a VCS with dot-pair IDs, you can omit the minor part, thus giving +only the branch ID; this takes you to the head version on the +chosen branch. If you only type @key{RET}, Emacs goes to the highest +version on the trunk. + + After you have switched to any branch (including the main branch), you +stay on it for subsequent VC commands, until you explicitly select some +other branch. + +@node Creating Branches +@subsubsection Creating New Branches + + To create a new branch from a head revision (one that is the latest in +the branch that contains it), first select that revision if necessary, +lock it with @kbd{C-x v v}, and make whatever changes you want. Then, +when you check in the changes, use @kbd{C-u C-x v v}. This lets you +specify the revision ID for the new revision. You should specify a +suitable branch ID for a branch starting at the current revision. +For example, if the current revision is 2.5, the branch ID should be +2.5.1, 2.5.2, and so on, depending on the number of existing branches at +that point. + + To create a new branch at an older revision (one that is no longer the +head of a branch), first select that revision (@pxref{Switching +Branches}). Your procedure will then differ depending on whether you +are using a locking or merging-based VCS. + + On a locking VCS, you will need to lock the old revision branch with +@kbd{C-x v v}. You'll be asked to confirm, when you lock the old +revision, that you really mean to create a new branch---if you say no, +you'll be offered a chance to lock the latest revision instead. On +a merging-based VCS you will skip this step. + + Then make your changes and type @kbd{C-x v v} again to check in a new +revision. This automatically creates a new branch starting from the +selected revision. You need not specially request a new branch, because +that's the only way to add a new revision at a point that is not the head +of a branch. + + After the branch is created, you ``stay'' on it. That means that +subsequent check-ins create new revisions on that branch. To leave the +branch, you must explicitly select a different revision with @kbd{C-u C-x +v v}. To transfer changes from one branch to another, use the merge +command, described in the next section. + +@node Merging +@subsubsection Merging Branches + +@cindex merging changes + When you have finished the changes on a certain branch, you will +often want to incorporate them into the file's main line of development +(the trunk). This is not a trivial operation, because development might +also have proceeded on the trunk, so that you must @dfn{merge} the +changes into a file that has already been changed otherwise. VC allows +you to do this (and other things) with the @code{vc-merge} command. + +@table @kbd +@item C-x v m (vc-merge) +Merge changes into the work file. +@end table + +@kindex C-x v m +@findex vc-merge + @kbd{C-x v m} (@code{vc-merge}) takes a set of changes and merges it +into the current version of the work file. It firsts asks you in the +minibuffer where the changes should come from. If you just type +@key{RET}, Emacs merges any changes that were made on the same branch +since you checked the file out (we call this @dfn{merging the news}). +This is the common way to pick up recent changes from the repository, +regardless of whether you have already changed the file yourself. + + You can also enter a branch ID or a pair of revision IDs in +the minibuffer. Then @kbd{C-x v m} finds the changes from that +branch, or the differences between the two revisions you specified, and +merges them into the current revision of the current file. + + As an example, suppose that you have finished a certain feature on +branch 1.3.1. In the meantime, development on the trunk has proceeded +to revision 1.5. To merge the changes from the branch to the trunk, +first go to the head revision of the trunk, by typing @kbd{C-u C-x v v +@key{RET}}. Revision 1.5 is now current. If locking is used for the file, +type @kbd{C-x v v} to lock revision 1.5 so that you can change it. Next, +type @kbd{C-x v m 1.3.1 @key{RET}}. This takes the entire set of changes on +branch 1.3.1 (relative to revision 1.3, where the branch started, up to +the last revision on the branch) and merges it into the current revision +of the work file. You can now check in the changed file, thus creating +revision 1.6 containing the changes from the branch. + + It is possible to do further editing after merging the branch, before +the next check-in. But it is usually wiser to check in the merged +revision, then lock it and make the further changes. This will keep +a better record of the history of changes. + +@cindex conflicts +@cindex resolving conflicts + When you merge changes into a file that has itself been modified, the +changes might overlap. We call this situation a @dfn{conflict}, and +reconciling the conflicting changes is called @dfn{resolving a +conflict}. + + Whenever conflicts occur during merging, VC detects them, tells you +about them in the echo area, and asks whether you want help in merging. +If you say yes, it starts an Ediff session (@pxref{Top, +Ediff, Ediff, ediff, The Ediff Manual}). + + If you say no, the conflicting changes are both inserted into the +file, surrounded by @dfn{conflict markers}. The example below shows how +a conflict region looks; the file is called @samp{name} and the current +master file revision with user B's changes in it is 1.11. + +@c @w here is so CVS won't think this is a conflict. +@smallexample +@group +@w{<}<<<<<< name + @var{User A's version} +======= + @var{User B's version} +@w{>}>>>>>> 1.11 +@end group +@end smallexample + +@cindex vc-resolve-conflicts + Then you can resolve the conflicts by editing the file manually. Or +you can type @code{M-x vc-resolve-conflicts} after visiting the file. +This starts an Ediff session, as described above. Don't forget to +check in the merged version afterwards. + +@node Multi-User Branching +@subsubsection Multi-User Branching + + It is often useful for multiple developers to work simultaneously on +different branches of a file. CVS and later systems allow this by +default; for RCS, it is possible if you create multiple source +directories. Each source directory should have a link named +@file{RCS} which points to a common directory of RCS master files. +Then each source directory can have its own choice of selected +revisions, but all share the same common RCS records. + + This technique works reliably and automatically, provided that the +source files contain RCS version headers +@iftex +(@pxref{Version Headers,,,emacs-xtra, Specialized Emacs Features}). +@end iftex +@ifnottex +(@pxref{Version Headers}). +@end ifnottex +The headers enable Emacs to be sure, at all times, which revision +ID is present in the work file. + + If the files do not have version headers, you must instead tell Emacs +explicitly in each session which branch you are working on. To do this, +first find the file, then type @kbd{C-u C-x v v} and specify the correct +branch ID. This ensures that Emacs knows which branch it is using +during this particular editing session. + +@ifnottex +@include vc2-xtra.texi +@end ifnottex + +@node Directories +@section File Directories + +@cindex file directory +@cindex directory listing + The file system groups files into @dfn{directories}. A @dfn{directory +listing} is a list of all the files in a directory. Emacs provides +commands to create and delete directories, and to make directory +listings in brief format (file names only) and verbose format (sizes, +dates, and authors included). Emacs also includes a directory browser +feature called Dired; see @ref{Dired}. + +@table @kbd +@item C-x C-d @var{dir-or-pattern} @key{RET} +Display a brief directory listing (@code{list-directory}). +@item C-u C-x C-d @var{dir-or-pattern} @key{RET} +Display a verbose directory listing. +@item M-x make-directory @key{RET} @var{dirname} @key{RET} +Create a new directory named @var{dirname}. +@item M-x delete-directory @key{RET} @var{dirname} @key{RET} +Delete the directory named @var{dirname}. It must be empty, +or you get an error. +@end table + +@findex list-directory +@kindex C-x C-d + The command to display a directory listing is @kbd{C-x C-d} +(@code{list-directory}). It reads using the minibuffer a file name +which is either a directory to be listed or a wildcard-containing +pattern for the files to be listed. For example, + +@example +C-x C-d /u2/emacs/etc @key{RET} +@end example + +@noindent +lists all the files in directory @file{/u2/emacs/etc}. Here is an +example of specifying a file name pattern: + +@example +C-x C-d /u2/emacs/src/*.c @key{RET} +@end example + + Normally, @kbd{C-x C-d} displays a brief directory listing containing +just file names. A numeric argument (regardless of value) tells it to +make a verbose listing including sizes, dates, and owners (like +@samp{ls -l}). + +@vindex list-directory-brief-switches +@vindex list-directory-verbose-switches + The text of a directory listing is mostly obtained by running +@code{ls} in an inferior process. Two Emacs variables control the +switches passed to @code{ls}: @code{list-directory-brief-switches} is +a string giving the switches to use in brief listings (@code{"-CF"} by +default), and @code{list-directory-verbose-switches} is a string +giving the switches to use in a verbose listing (@code{"-l"} by +default). + +@vindex directory-free-space-program +@vindex directory-free-space-args + In verbose directory listings, Emacs adds information about the +amount of free space on the disk that contains the directory. To do +this, it runs the program specified by +@code{directory-free-space-program} with arguments +@code{directory-free-space-args}. + +@node Comparing Files +@section Comparing Files +@cindex comparing files + +@findex diff +@vindex diff-switches + The command @kbd{M-x diff} compares two files, displaying the +differences in an Emacs buffer named @samp{*diff*}. It works by +running the @code{diff} program, using options taken from the variable +@code{diff-switches}. The value of @code{diff-switches} should be a +string; the default is @code{"-c"} to specify a context diff. +@xref{Top,, Diff, diff, Comparing and Merging Files}, for more +information about @command{diff} output formats. + +@findex diff-backup + The command @kbd{M-x diff-backup} compares a specified file with its most +recent backup. If you specify the name of a backup file, +@code{diff-backup} compares it with the source file that it is a backup +of. + +@findex compare-windows + The command @kbd{M-x compare-windows} compares the text in the +current window with that in the next window. (For more information +about windows in Emacs, @ref{Windows}.) Comparison starts at point in +each window, after pushing each initial point value on the mark ring +in its respective buffer. Then it moves point forward in each window, +one character at a time, until it reaches characters that don't match. +Then the command exits. + + If point in the two windows is followed by non-matching text when +the command starts, @kbd{M-x compare-windows} tries heuristically to +advance up to matching text in the two windows, and then exits. So if +you use @kbd{M-x compare-windows} repeatedly, each time it either +skips one matching range or finds the start of another. + +@vindex compare-ignore-case +@vindex compare-ignore-whitespace + With a numeric argument, @code{compare-windows} ignores changes in +whitespace. If the variable @code{compare-ignore-case} is +non-@code{nil}, the comparison ignores differences in case as well. +If the variable @code{compare-ignore-whitespace} is non-@code{nil}, +@code{compare-windows} normally ignores changes in whitespace, and a +prefix argument turns that off. + +@cindex Smerge mode +@findex smerge-mode +@cindex failed merges +@cindex merges, failed +@cindex comparing 3 files (@code{diff3}) + You can use @kbd{M-x smerge-mode} to turn on Smerge mode, a minor +mode for editing output from the @command{diff3} program. This is +typically the result of a failed merge from a version control system +``update'' outside VC, due to conflicting changes to a file. Smerge +mode provides commands to resolve conflicts by selecting specific +changes. + +@iftex +@xref{Emerge,,, emacs-xtra, Specialized Emacs Features}, +@end iftex +@ifnottex +@xref{Emerge}, +@end ifnottex +for the Emerge facility, which provides a powerful interface for +merging files. + +@node Diff Mode +@section Diff Mode +@cindex Diff mode +@findex diff-mode +@cindex patches, editing + + Diff mode is used for the output of @kbd{M-x diff}; it is also +useful for editing patches and comparisons produced by the +@command{diff} program. To select Diff mode manually, type @kbd{M-x +diff-mode}. + + One general feature of Diff mode is that manual edits to the patch +automatically correct line numbers, including those in the hunk +header, so that you can actually apply the edited patch. Diff mode +treats each hunk location as an ``error message,'' so that you can use +commands such as @kbd{C-x '} to visit the corresponding source +locations. It also provides the following commands to navigate, +manipulate and apply parts of patches: + +@table @kbd +@item M-n +Move to the next hunk-start (@code{diff-hunk-next}). + +@item M-p +Move to the previous hunk-start (@code{diff-hunk-prev}). + +@item M-@} +Move to the next file-start, in a multi-file patch +(@code{diff-file-next}). + +@item M-@{ +Move to the previous file-start, in a multi-file patch +(@code{diff-file-prev}). + +@item M-k +Kill the hunk at point (@code{diff-hunk-kill}). + +@item M-K +In a multi-file patch, kill the current file part. +(@code{diff-file-kill}). + +@item C-c C-a +Apply this hunk to its target file (@code{diff-apply-hunk}). With a +prefix argument of @kbd{C-u}, revert this hunk. + +@item C-c C-c +Go to the source corresponding to this hunk (@code{diff-goto-source}). + +@item C-c C-e +Start an Ediff session with the patch (@code{diff-ediff-patch}). +@xref{Top, Ediff, Ediff, ediff, The Ediff Manual}. + +@item C-c C-n +Restrict the view to the current hunk (@code{diff-restrict-view}). +@xref{Narrowing}. With a prefix argument of @kbd{C-u}, restrict the +view to the current patch of a multiple file patch. To widen again, +use @kbd{C-x n w}. + +@item C-c C-r +Reverse the direction of comparison for the entire buffer +(@code{diff-reverse-direction}). + +@item C-c C-s +Split the hunk at point (@code{diff-split-hunk}). This is for +manually editing patches, and only works with the unified diff format. + +@item C-c C-u +Convert the entire buffer to unified format +(@code{diff-context->unified}). With a prefix argument, convert +unified format to context format. In Transient Mark mode, when the +mark is active, this command operates only on the region. + +@item C-c C-w +Refine the current hunk so that it disregards changes in whitespace +(@code{diff-refine-hunk}). +@end table + + @kbd{C-x 4 a} in Diff mode operates on behalf of the target file, +but gets the function name from the patch itself. @xref{Change Log}. +This is useful for making log entries for functions that are deleted +by the patch. + +@node Misc File Ops +@section Miscellaneous File Operations + + Emacs has commands for performing many other operations on files. +All operate on one file; they do not accept wildcard file names. + +@findex view-file +@cindex viewing +@cindex View mode +@cindex mode, View + @kbd{M-x view-file} allows you to scan or read a file by sequential +screenfuls. It reads a file name argument using the minibuffer. After +reading the file into an Emacs buffer, @code{view-file} displays the +beginning. You can then type @key{SPC} to scroll forward one windowful, +or @key{DEL} to scroll backward. Various other commands are provided +for moving around in the file, but none for changing it; type @kbd{?} +while viewing for a list of them. They are mostly the same as normal +Emacs cursor motion commands. To exit from viewing, type @kbd{q}. +The commands for viewing are defined by a special minor mode called View +mode. + + A related command, @kbd{M-x view-buffer}, views a buffer already present +in Emacs. @xref{Misc Buffer}. + +@kindex C-x i +@findex insert-file + @kbd{M-x insert-file} (also @kbd{C-x i}) inserts a copy of the +contents of the specified file into the current buffer at point, +leaving point unchanged before the contents and the mark after them. + +@findex insert-file-literally + @kbd{M-x insert-file-literally} is like @kbd{M-x insert-file}, +except the file is inserted ``literally'': it is treated as a sequence +of @acronym{ASCII} characters with no special encoding or conversion, +similar to the @kbd{M-x find-file-literally} command +(@pxref{Visiting}). + +@findex write-region + @kbd{M-x write-region} is the inverse of @kbd{M-x insert-file}; it +copies the contents of the region into the specified file. @kbd{M-x +append-to-file} adds the text of the region to the end of the +specified file. @xref{Accumulating Text}. The variable +@code{write-region-inhibit-fsync} applies to these commands, as well +as saving files; see @ref{Customize Save}. + +@findex delete-file +@cindex deletion (of files) + @kbd{M-x delete-file} deletes the specified file, like the @code{rm} +command in the shell. If you are deleting many files in one directory, it +may be more convenient to use Dired (@pxref{Dired}). + +@findex rename-file + @kbd{M-x rename-file} reads two file names @var{old} and @var{new} using +the minibuffer, then renames file @var{old} as @var{new}. If the file name +@var{new} already exists, you must confirm with @kbd{yes} or renaming is not +done; this is because renaming causes the old meaning of the name @var{new} +to be lost. If @var{old} and @var{new} are on different file systems, the +file @var{old} is copied and deleted. + + If the argument @var{new} is just a directory name, the real new +name is in that directory, with the same non-directory component as +@var{old}. For example, @kbd{M-x rename-file RET ~/foo RET /tmp RET} +renames @file{~/foo} to @file{/tmp/foo}. The same rule applies to all +the remaining commands in this section. All of them ask for +confirmation when the new file name already exists, too. + +@findex add-name-to-file +@cindex hard links (creation) + The similar command @kbd{M-x add-name-to-file} is used to add an +additional name to an existing file without removing its old name. +The new name is created as a ``hard link'' to the existing file. +The new name must belong on the same file system that the file is on. +On MS-Windows, this command works only if the file resides in an NTFS +file system. On MS-DOS, it works by copying the file. + +@findex copy-file +@cindex copying files + @kbd{M-x copy-file} reads the file @var{old} and writes a new file +named @var{new} with the same contents. + +@findex make-symbolic-link +@cindex symbolic links (creation) + @kbd{M-x make-symbolic-link} reads two file names @var{target} and +@var{linkname}, then creates a symbolic link named @var{linkname}, +which points at @var{target}. The effect is that future attempts to +open file @var{linkname} will refer to whatever file is named +@var{target} at the time the opening is done, or will get an error if +the name @var{target} is nonexistent at that time. This command does +not expand the argument @var{target}, so that it allows you to specify +a relative name as the target of the link. + + Not all systems support symbolic links; on systems that don't +support them, this command is not defined. + +@node Compressed Files +@section Accessing Compressed Files +@cindex compression +@cindex uncompression +@cindex Auto Compression mode +@cindex mode, Auto Compression +@pindex gzip + + Emacs automatically uncompresses compressed files when you visit +them, and automatically recompresses them if you alter them and save +them. Emacs recognizes compressed files by their file names. File +names ending in @samp{.gz} indicate a file compressed with +@code{gzip}. Other endings indicate other compression programs. + + Automatic uncompression and compression apply to all the operations in +which Emacs uses the contents of a file. This includes visiting it, +saving it, inserting its contents into a buffer, loading it, and byte +compiling it. + +@findex auto-compression-mode +@vindex auto-compression-mode + To disable this feature, type the command @kbd{M-x +auto-compression-mode}. You can disable it permanently by +customizing the variable @code{auto-compression-mode}. + +@node File Archives +@section File Archives +@cindex mode, tar +@cindex Tar mode +@cindex file archives + + A file whose name ends in @samp{.tar} is normally an @dfn{archive} +made by the @code{tar} program. Emacs views these files in a special +mode called Tar mode which provides a Dired-like list of the contents +(@pxref{Dired}). You can move around through the list just as you +would in Dired, and visit the subfiles contained in the archive. +However, not all Dired commands are available in Tar mode. + + If Auto Compression mode is enabled (@pxref{Compressed Files}), then +Tar mode is used also for compressed archives---files with extensions +@samp{.tgz}, @code{.tar.Z} and @code{.tar.gz}. + + The keys @kbd{e}, @kbd{f} and @key{RET} all extract a component file +into its own buffer. You can edit it there, and if you save the +buffer, the edited version will replace the version in the Tar buffer. +@kbd{v} extracts a file into a buffer in View mode. @kbd{o} extracts +the file and displays it in another window, so you could edit the file +and operate on the archive simultaneously. @kbd{d} marks a file for +deletion when you later use @kbd{x}, and @kbd{u} unmarks a file, as in +Dired. @kbd{C} copies a file from the archive to disk and @kbd{R} +renames a file within the archive. @kbd{g} reverts the buffer from +the archive on disk. + + The keys @kbd{M}, @kbd{G}, and @kbd{O} change the file's permission +bits, group, and owner, respectively. + + If your display supports colors and the mouse, moving the mouse +pointer across a file name highlights that file name, indicating that +you can click on it. Clicking @kbd{Mouse-2} on the highlighted file +name extracts the file into a buffer and displays that buffer. + + Saving the Tar buffer writes a new version of the archive to disk with +the changes you made to the components. + + You don't need the @code{tar} program to use Tar mode---Emacs reads +the archives directly. However, accessing compressed archives +requires the appropriate uncompression program. + +@cindex Archive mode +@cindex mode, archive +@cindex @code{arc} +@cindex @code{jar} +@cindex @code{zip} +@cindex @code{lzh} +@cindex @code{zoo} +@pindex arc +@pindex jar +@pindex zip +@pindex lzh +@pindex zoo +@cindex Java class archives +@cindex unzip archives + A separate but similar Archive mode is used for archives produced by +the programs @code{arc}, @code{jar}, @code{lzh}, @code{zip}, and +@code{zoo}, which have extensions corresponding to the program names. +Archive mode also works for those @code{exe} files that are +self-extracting executables. + + The key bindings of Archive mode are similar to those in Tar mode, +with the addition of the @kbd{m} key which marks a file for subsequent +operations, and @kbd{M-@key{DEL}} which unmarks all the marked files. +Also, the @kbd{a} key toggles the display of detailed file +information, for those archive types where it won't fit in a single +line. Operations such as renaming a subfile, or changing its mode or +owner, are supported only for some of the archive formats. + + Unlike Tar mode, Archive mode runs the archiving program to unpack +and repack archives. Details of the program names and their options +can be set in the @samp{Archive} Customize group. However, you don't +need these programs to look at the archive table of contents, only to +extract or manipulate the subfiles in the archive. + +@node Remote Files +@section Remote Files + +@cindex Tramp +@cindex FTP +@cindex remote file access + You can refer to files on other machines using a special file name +syntax: + +@example +@group +/@var{host}:@var{filename} +/@var{user}@@@var{host}:@var{filename} +/@var{user}@@@var{host}#@var{port}:@var{filename} +/@var{method}:@var{user}@@@var{host}:@var{filename} +/@var{method}:@var{user}@@@var{host}#@var{port}:@var{filename} +@end group +@end example + +@noindent +To carry out this request, Emacs uses either the FTP program or a +remote-login program such as @command{ssh}, @command{rlogin}, or +@command{telnet}. You can always specify in the file name which +method to use---for example, +@file{/ftp:@var{user}@@@var{host}:@var{filename}} uses FTP, whereas +@file{/ssh:@var{user}@@@var{host}:@var{filename}} uses @command{ssh}. +When you don't specify a method in the file name, Emacs chooses +the method as follows: + +@enumerate +@item +If the host name starts with @samp{ftp.} (with dot), then Emacs uses +FTP. +@item +If the user name is @samp{ftp} or @samp{anonymous}, then Emacs uses +FTP. +@item +Otherwise, Emacs uses @command{ssh}. +@end enumerate + +@noindent +Remote file access through FTP is handled by the Ange-FTP package, which +is documented in the following. Remote file access through the other +methods is handled by the Tramp package, which has its own manual. +@xref{Top, The Tramp Manual,, tramp, The Tramp Manual}. + +When the Ange-FTP package is used, Emacs logs in through FTP using your +user name or the name @var{user}. It may ask you for a password from +time to time; this is used for logging in on @var{host}. The form using +@var{port} allows you to access servers running on a non-default TCP +port. + +@cindex backups for remote files +@vindex ange-ftp-make-backup-files + If you want to disable backups for remote files, set the variable +@code{ange-ftp-make-backup-files} to @code{nil}. + + By default, the auto-save files (@pxref{Auto Save Files}) for remote +files are made in the temporary file directory on the local machine. +This is achieved using the variable @code{auto-save-file-name-transforms}. + +@cindex ange-ftp +@vindex ange-ftp-default-user +@cindex user name for remote file access + Normally, if you do not specify a user name in a remote file name, +that means to use your own user name. But if you set the variable +@code{ange-ftp-default-user} to a string, that string is used instead. + +@cindex anonymous FTP +@vindex ange-ftp-generate-anonymous-password + To visit files accessible by anonymous FTP, you use special user +names @samp{anonymous} or @samp{ftp}. Passwords for these user names +are handled specially. The variable +@code{ange-ftp-generate-anonymous-password} controls what happens: if +the value of this variable is a string, then that string is used as +the password; if non-@code{nil} (the default), then the value of +@code{user-mail-address} is used; if @code{nil}, then Emacs prompts +you for a password as usual. + +@cindex firewall, and accessing remote files +@cindex gateway, and remote file access with @code{ange-ftp} +@vindex ange-ftp-smart-gateway +@vindex ange-ftp-gateway-host + Sometimes you may be unable to access files on a remote machine +because a @dfn{firewall} in between blocks the connection for security +reasons. If you can log in on a @dfn{gateway} machine from which the +target files @emph{are} accessible, and whose FTP server supports +gatewaying features, you can still use remote file names; all you have +to do is specify the name of the gateway machine by setting the +variable @code{ange-ftp-gateway-host}, and set +@code{ange-ftp-smart-gateway} to @code{t}. Otherwise you may be able +to make remote file names work, but the procedure is complex. You can +read the instructions by typing @kbd{M-x finder-commentary @key{RET} +ange-ftp @key{RET}}. + +@vindex file-name-handler-alist +@cindex disabling remote files + You can entirely turn off the FTP file name feature by removing the +entries @code{ange-ftp-completion-hook-function} and +@code{ange-ftp-hook-function} from the variable +@code{file-name-handler-alist}. You can turn off the feature in +individual cases by quoting the file name with @samp{/:} (@pxref{Quoted +File Names}). + +@node Quoted File Names +@section Quoted File Names + +@cindex quoting file names +@cindex file names, quote special characters + You can @dfn{quote} an absolute file name to prevent special +characters and syntax in it from having their special effects. +The way to do this is to add @samp{/:} at the beginning. + + For example, you can quote a local file name which appears remote, to +prevent it from being treated as a remote file name. Thus, if you have +a directory named @file{/foo:} and a file named @file{bar} in it, you +can refer to that file in Emacs as @samp{/:/foo:/bar}. + + @samp{/:} can also prevent @samp{~} from being treated as a special +character for a user's home directory. For example, @file{/:/tmp/~hack} +refers to a file whose name is @file{~hack} in directory @file{/tmp}. + + Quoting with @samp{/:} is also a way to enter in the minibuffer a +file name that contains @samp{$}. In order for this to work, the +@samp{/:} must be at the beginning of the minibuffer contents. (You +can also double each @samp{$}; see @ref{File Names with $}.) + + You can also quote wildcard characters with @samp{/:}, for visiting. +For example, @file{/:/tmp/foo*bar} visits the file +@file{/tmp/foo*bar}. + + Another method of getting the same result is to enter +@file{/tmp/foo[*]bar}, which is a wildcard specification that matches +only @file{/tmp/foo*bar}. However, in many cases there is no need to +quote the wildcard characters because even unquoted they give the +right result. For example, if the only file name in @file{/tmp} that +starts with @samp{foo} and ends with @samp{bar} is @file{foo*bar}, +then specifying @file{/tmp/foo*bar} will visit only +@file{/tmp/foo*bar}. + +@node File Name Cache +@section File Name Cache + +@cindex file name caching +@cindex cache of file names +@pindex find +@kindex C-@key{TAB} +@findex file-cache-minibuffer-complete + You can use the @dfn{file name cache} to make it easy to locate a +file by name, without having to remember exactly where it is located. +When typing a file name in the minibuffer, @kbd{C-@key{tab}} +(@code{file-cache-minibuffer-complete}) completes it using the file +name cache. If you repeat @kbd{C-@key{tab}}, that cycles through the +possible completions of what you had originally typed. (However, note +that the @kbd{C-@key{tab}} character cannot be typed on most text-only +terminals.) + + The file name cache does not fill up automatically. Instead, you +load file names into the cache using these commands: + +@findex file-cache-add-directory +@table @kbd +@item M-x file-cache-add-directory @key{RET} @var{directory} @key{RET} +Add each file name in @var{directory} to the file name cache. +@item M-x file-cache-add-directory-using-find @key{RET} @var{directory} @key{RET} +Add each file name in @var{directory} and all of its nested +subdirectories to the file name cache. +@item M-x file-cache-add-directory-using-locate @key{RET} @var{directory} @key{RET} +Add each file name in @var{directory} and all of its nested +subdirectories to the file name cache, using @command{locate} to find +them all. +@item M-x file-cache-add-directory-list @key{RET} @var{variable} @key{RET} +Add each file name in each directory listed in @var{variable} +to the file name cache. @var{variable} should be a Lisp variable +such as @code{load-path} or @code{exec-path}, whose value is a list +of directory names. +@item M-x file-cache-clear-cache @key{RET} +Clear the cache; that is, remove all file names from it. +@end table + + The file name cache is not persistent: it is kept and maintained +only for the duration of the Emacs session. You can view the contents +of the cache with the @code{file-cache-display} command. + +@node File Conveniences +@section Convenience Features for Finding Files + + In this section, we introduce some convenient facilities for finding +recently-opened files, reading file names from a buffer, and viewing +image files. + +@findex recentf-mode +@vindex recentf-mode +@findex recentf-save-list +@findex recentf-edit-list + If you enable Recentf mode, with @kbd{M-x recentf-mode}, the +@samp{File} menu includes a submenu containing a list of recently +opened files. @kbd{M-x recentf-save-list} saves the current +@code{recent-file-list} to a file, and @kbd{M-x recentf-edit-list} +edits it. + + The @kbd{M-x ffap} command generalizes @code{find-file} with more +powerful heuristic defaults (@pxref{FFAP}), often based on the text at +point. Partial Completion mode offers other features extending +@code{find-file}, which can be used with @code{ffap}. +@xref{Completion Options}. + +@findex image-mode +@findex image-toggle-display +@cindex images, viewing + Visiting image files automatically selects Image mode. This major +mode allows you to toggle between displaying the file as an image in +the Emacs buffer, and displaying its underlying text representation, +using the command @kbd{C-c C-c} (@code{image-toggle-display}). This +works only when Emacs can display the specific image type. If the +displayed image is wider or taller than the frame, the usual point +motion keys (@kbd{C-f}, @kbd{C-p}, and so forth) cause different parts +of the image to be displayed. + +@findex thumbs-mode +@findex mode, thumbs + See also the Image-Dired package (@pxref{Image-Dired}) for viewing +images as thumbnails. + +@node Filesets +@section Filesets +@cindex filesets + +@findex filesets-init + If you regularly edit a certain group of files, you can define them +as a @dfn{fileset}. This lets you perform certain operations, such as +visiting, @code{query-replace}, and shell commands on all the files +at once. To make use of filesets, you must first add the expression +@code{(filesets-init)} to your @file{.emacs} file (@pxref{Init File}). +This adds a @samp{Filesets} menu to the menu bar. + +@findex filesets-add-buffer +@findex filesets-remove-buffer + The simplest way to define a fileset is by adding files to it one +at a time. To add a file to fileset @var{name}, visit the file and +type @kbd{M-x filesets-add-buffer @kbd{RET} @var{name} @kbd{RET}}. If +there is no fileset @var{name}, this creates a new one, which +initially creates only the current file. The command @kbd{M-x +filesets-remove-buffer} removes the current file from a fileset. + + You can also edit the list of filesets directly, with @kbd{M-x +filesets-edit} (or by choosing @samp{Edit Filesets} from the +@samp{Filesets} menu). The editing is performed in a Customize buffer +(@pxref{Easy Customization}). Filesets need not be a simple list of +files---you can also define filesets using regular expression matching +file names. Some examples of these more complicated filesets are +shown in the Customize buffer. Remember to select @samp{Save for +future sessions} if you want to use the same filesets in future Emacs +sessions. + + You can use the command @kbd{M-x filesets-open} to visit all the +files in a fileset, and @kbd{M-x filesets-close} to close them. Use +@kbd{M-x filesets-run-cmd} to run a shell command on all the files in +a fileset. These commands are also available from the @samp{Filesets} +menu, where each existing fileset is represented by a submenu. + + Emacs uses the concept of a fileset elsewhere @pxref{Version +Control} to describe sets of files to be treated as a group for +purposes of version-control operations. Those filesets are +unnamed and do not persist across Emacs essions. + +@ignore + arch-tag: 768d32cb-e15a-4cc1-b7bf-62c00ee12250 +@end ignore diff --cc doc/emacs/search.texi index af1b877e6a4,00000000000..7b77046e2f3 mode 100644,000000..100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi @@@ -1,1365 -1,0 +1,1364 @@@ +@c This is part of the Emacs manual. +@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001, 2002, +@c 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +@c See file emacs.texi for copying conditions. +@node Search, Fixit, Display, Top +@chapter Searching and Replacement +@cindex searching +@cindex finding strings within text + + Like other editors, Emacs has commands for searching for occurrences of +a string. The principal search command is unusual in that it is +@dfn{incremental}; it begins to search before you have finished typing the +search string. There are also nonincremental search commands more like +those of other editors. + + Besides the usual @code{replace-string} command that finds all +occurrences of one string and replaces them with another, Emacs has a +more flexible replacement command called @code{query-replace}, which +asks interactively which occurrences to replace. There are also +commands to find and operate on all matches for a pattern. + + You can also search multiple files under control of a tags +table (@pxref{Tags Search}) or through the Dired @kbd{A} command +(@pxref{Operating on Files}), or ask the @code{grep} program to do it +(@pxref{Grep Searching}). + + +@menu +* Incremental Search:: Search happens as you type the string. +* Nonincremental Search:: Specify entire string and then search. +* Word Search:: Search for sequence of words. +* Regexp Search:: Search for match for a regexp. +* Regexps:: Syntax of regular expressions. +* Regexp Backslash:: Regular expression constructs starting with `\'. +* Regexp Example:: A complex regular expression explained. +* Search Case:: To ignore case while searching, or not. +* Replace:: Search, and replace some or all matches. +* Other Repeating Search:: Operating on all matches for some regexp. +@end menu + +@node Incremental Search +@section Incremental Search +@cindex incremental search +@cindex isearch + + An incremental search begins searching as soon as you type the first +character of the search string. As you type in the search string, Emacs +shows you where the string (as you have typed it so far) would be +found. When you have typed enough characters to identify the place you +want, you can stop. Depending on what you plan to do next, you may or +may not need to terminate the search explicitly with @key{RET}. + +@table @kbd +@item C-s +Incremental search forward (@code{isearch-forward}). +@item C-r +Incremental search backward (@code{isearch-backward}). +@end table + +@menu +* Basic Isearch:: Basic incremental search commands. +* Repeat Isearch:: Searching for the same string again. +* Error in Isearch:: When your string is not found. +* Special Isearch:: Special input in incremental search. +* Non-ASCII Isearch:: How to search for non-ASCII characters. +* Isearch Yank:: Commands that grab text into the search string + or else edit the search string. +* Highlight Isearch:: Isearch highlights the other possible matches. +* Isearch Scroll:: Scrolling during an incremental search. +* Slow Isearch:: Incremental search features for slow terminals. +@end menu + +@node Basic Isearch +@subsection Basics of Incremental Search + +@kindex C-s +@findex isearch-forward + @kbd{C-s} starts a forward incremental search. It reads characters +from the keyboard, and moves point past the next occurrence of those +characters. If you type @kbd{C-s} and then @kbd{F}, that puts the +cursor after the first @samp{F} (the first following the starting point, since +this is a forward search). Then if you type an @kbd{O}, you will see +the cursor move to just after the first @samp{FO} (the @samp{F} in that +@samp{FO} may or may not be the first @samp{F}). After another +@kbd{O}, the cursor moves to just after the first @samp{FOO} after the place +where you started the search. At each step, the buffer text that +matches the search string is highlighted, if the terminal can do that; +the current search string is always displayed in the echo area. + + If you make a mistake in typing the search string, you can cancel +characters with @key{DEL}. Each @key{DEL} cancels the last character of +search string. This does not happen until Emacs is ready to read another +input character; first it must either find, or fail to find, the character +you want to erase. If you do not want to wait for this to happen, use +@kbd{C-g} as described below. + + When you are satisfied with the place you have reached, you can type +@key{RET}, which stops searching, leaving the cursor where the search +brought it. Also, any command not specially meaningful in searches +stops the searching and is then executed. Thus, typing @kbd{C-a} +would exit the search and then move to the beginning of the line. +@key{RET} is necessary only if the next command you want to type is a +printing character, @key{DEL}, @key{RET}, or another character that is +special within searches (@kbd{C-q}, @kbd{C-w}, @kbd{C-r}, @kbd{C-s}, +@kbd{C-y}, @kbd{M-y}, @kbd{M-r}, @kbd{M-c}, @kbd{M-e}, and some other +meta-characters). + + When you exit the incremental search, it sets the mark where point +@emph{was} before the search. That is convenient for moving back +there. In Transient Mark mode, incremental search sets the mark +without activating it, and does so only if the mark is not already +active. + +@node Repeat Isearch +@subsection Repeating Incremental Search + + Sometimes you search for @samp{FOO} and find one, but not the one you +expected to find. There was a second @samp{FOO} that you forgot +about, before the one you were aiming for. In this event, type +another @kbd{C-s} to move to the next occurrence of the search string. +You can repeat this any number of times. If you overshoot, you can +cancel some @kbd{C-s} characters with @key{DEL}. + + After you exit a search, you can search for the same string again by +typing just @kbd{C-s C-s}: the first @kbd{C-s} is the key that invokes +incremental search, and the second @kbd{C-s} means ``search again.'' + + If a search is failing and you ask to repeat it by typing another +@kbd{C-s}, it starts again from the beginning of the buffer. +Repeating a failing reverse search with @kbd{C-r} starts again from +the end. This is called @dfn{wrapping around}, and @samp{Wrapped} +appears in the search prompt once this has happened. If you keep on +going past the original starting point of the search, it changes to +@samp{Overwrapped}, which means that you are revisiting matches that +you have already seen. + + To reuse earlier search strings, use the @dfn{search ring}. The +commands @kbd{M-p} and @kbd{M-n} move through the ring to pick a search +string to reuse. These commands leave the selected search ring element +in the minibuffer, where you can edit it. To edit the current search +string in the minibuffer without replacing it with items from the +search ring, type @kbd{M-e}. Type @kbd{C-s} or @kbd{C-r} +to terminate editing the string and search for it. + + You can change to searching backwards with @kbd{C-r}. For instance, +if you are searching forward but you realize you were looking for +something above the starting point, you can do this. Repeated +@kbd{C-r} keeps looking for more occurrences backwards. A @kbd{C-s} +starts going forwards again. @kbd{C-r} in a search can be canceled +with @key{DEL}. + +@kindex C-r +@findex isearch-backward + If you know initially that you want to search backwards, you can use +@kbd{C-r} instead of @kbd{C-s} to start the search, because @kbd{C-r} +as a key runs a command (@code{isearch-backward}) to search backward. +A backward search finds matches that end before the starting point, +just as a forward search finds matches that begin after it. + +@node Error in Isearch +@subsection Errors in Incremental Search + + If your string is not found at all, the echo area says @samp{Failing +I-Search}. The cursor is after the place where Emacs found as much of your +string as it could. Thus, if you search for @samp{FOOT}, and there is no +@samp{FOOT}, you might see the cursor after the @samp{FOO} in @samp{FOOL}. +At this point there are several things you can do. If your string was +mistyped, you can rub some of it out and correct it. If you like the place +you have found, you can type @key{RET} or some other Emacs command to +remain there. Or you can type @kbd{C-g}, which +removes from the search string the characters that could not be found (the +@samp{T} in @samp{FOOT}), leaving those that were found (the @samp{FOO} in +@samp{FOOT}). A second @kbd{C-g} at that point cancels the search +entirely, returning point to where it was when the search started. + +@cindex quitting (in search) + The @kbd{C-g} ``quit'' character does special things during searches; +just what it does depends on the status of the search. If the search has +found what you specified and is waiting for input, @kbd{C-g} cancels the +entire search. The cursor moves back to where you started the search. If +@kbd{C-g} is typed when there are characters in the search string that have +not been found---because Emacs is still searching for them, or because it +has failed to find them---then the search string characters which have not +been found are discarded from the search string. With them gone, the +search is now successful and waiting for more input, so a second @kbd{C-g} +will cancel the entire search. + +@node Special Isearch +@subsection Special Input for Incremental Search + + An upper-case letter in the search string makes the search +case-sensitive. If you delete the upper-case character from the search +string, it ceases to have this effect. @xref{Search Case}. + + To search for a newline, type @kbd{C-j}. To search for another +control character, such as control-S or carriage return, you must quote +it by typing @kbd{C-q} first. This function of @kbd{C-q} is analogous +to its use for insertion (@pxref{Inserting Text}): it causes the +following character to be treated the way any ``ordinary'' character is +treated in the same context. You can also specify a character by its +octal code: enter @kbd{C-q} followed by a sequence of octal digits. + + @kbd{M-%} typed in incremental search invokes @code{query-replace} +or @code{query-replace-regexp} (depending on search mode) with the +current search string used as the string to replace. @xref{Query +Replace}. + + Entering @key{RET} when the search string is empty launches +nonincremental search (@pxref{Nonincremental Search}). + +@vindex isearch-mode-map + To customize the special characters that incremental search understands, +alter their bindings in the keymap @code{isearch-mode-map}. For a list +of bindings, look at the documentation of @code{isearch-mode} with +@kbd{C-h f isearch-mode @key{RET}}. + +@node Non-ASCII Isearch +@subsection Isearch for Non-@acronym{ASCII} Characters +@cindex searching for non-@acronym{ASCII} characters +@cindex input method, during incremental search + + To enter non-@acronym{ASCII} characters in an incremental search, +you can use @kbd{C-q} (see the previous section), but it is easier to +use an input method (@pxref{Input Methods}). If an input method is +enabled in the current buffer when you start the search, you can use +it in the search string also. Emacs indicates that by including the +input method mnemonic in its prompt, like this: + +@example +I-search [@var{im}]: +@end example + +@noindent +@findex isearch-toggle-input-method +@findex isearch-toggle-specified-input-method +where @var{im} is the mnemonic of the active input method. + + You can toggle (enable or disable) the input method while you type +the search string with @kbd{C-\} (@code{isearch-toggle-input-method}). +You can turn on a certain (non-default) input method with @kbd{C-^} +(@code{isearch-toggle-specified-input-method}), which prompts for the +name of the input method. The input method you enable during +incremental search remains enabled in the current buffer afterwards. + +@node Isearch Yank +@subsection Isearch Yanking + + The characters @kbd{C-w} and @kbd{C-y} can be used in incremental +search to grab text from the buffer into the search string. This +makes it convenient to search for another occurrence of text at point. +@kbd{C-w} copies the character or word after point as part of the +search string, advancing point over it. (The decision, whether to +copy a character or a word, is heuristic.) Another @kbd{C-s} to +repeat the search will then search for a string including that +character or word. + + @kbd{C-y} is similar to @kbd{C-w} but copies all the rest of the +current line into the search string. If point is already at the end +of a line, it grabs the entire next line. Both @kbd{C-y} and +@kbd{C-w} convert the text they copy to lower case if the search is +currently not case-sensitive; this is so the search remains +case-insensitive. + + @kbd{C-M-w} and @kbd{C-M-y} modify the search string by only one +character at a time: @kbd{C-M-w} deletes the last character from the +search string and @kbd{C-M-y} copies the character after point to the +end of the search string. An alternative method to add the character +after point into the search string is to enter the minibuffer by +@kbd{M-e} and to type @kbd{C-f} at the end of the search string in the +minibuffer. + + The character @kbd{M-y} copies text from the kill ring into the search +string. It uses the same text that @kbd{C-y} as a command would yank. +@kbd{Mouse-2} in the echo area does the same. +@xref{Yanking}. + +@node Highlight Isearch +@subsection Lazy Search Highlighting +@cindex lazy search highlighting +@vindex isearch-lazy-highlight + + When you pause for a little while during incremental search, it +highlights all other possible matches for the search string. This +makes it easier to anticipate where you can get to by typing @kbd{C-s} +or @kbd{C-r} to repeat the search. The short delay before highlighting +other matches helps indicate which match is the current one. +If you don't like this feature, you can turn it off by setting +@code{isearch-lazy-highlight} to @code{nil}. + +@cindex faces for highlighting search matches + You can control how this highlighting looks by customizing the faces +@code{isearch} (used for the current match) and @code{lazy-highlight} +(for all the other matches). + +@node Isearch Scroll +@subsection Scrolling During Incremental Search + + You can enable the use of vertical scrolling during incremental +search (without exiting the search) by setting the customizable +variable @code{isearch-allow-scroll} to a non-@code{nil} value. This +applies to using the vertical scroll-bar and to certain keyboard +commands such as @kbd{@key{PRIOR}} (@code{scroll-down}), +@kbd{@key{NEXT}} (@code{scroll-up}) and @kbd{C-l} (@code{recenter}). +You must run these commands via their key sequences to stay in the +search---typing @kbd{M-x} will terminate the search. You can give +prefix arguments to these commands in the usual way. + + This feature won't let you scroll the current match out of visibility, +however. + + The feature also affects some other commands, such as @kbd{C-x 2} +(@code{split-window-vertically}) and @kbd{C-x ^} +(@code{enlarge-window}) which don't exactly scroll but do affect where +the text appears on the screen. In general, it applies to any command +whose name has a non-@code{nil} @code{isearch-scroll} property. So you +can control which commands are affected by changing these properties. + + For example, to make @kbd{C-h l} usable within an incremental search +in all future Emacs sessions, use @kbd{C-h c} to find what command it +runs. (You type @kbd{C-h c C-h l}; it says @code{view-lossage}.) +Then you can put the following line in your @file{.emacs} file +(@pxref{Init File}): + +@example +(put 'view-lossage 'isearch-scroll t) +@end example + +@noindent +This feature can be applied to any command that doesn't permanently +change point, the buffer contents, the match data, the current buffer, +or the selected window and frame. The command must not itself attempt +an incremental search. + +@node Slow Isearch +@subsection Slow Terminal Incremental Search + + Incremental search on a slow terminal uses a modified style of display +that is designed to take less time. Instead of redisplaying the buffer at +each place the search gets to, it creates a new single-line window and uses +that to display the line that the search has found. The single-line window +comes into play as soon as point moves outside of the text that is already +on the screen. + + When you terminate the search, the single-line window is removed. +Emacs then redisplays the window in which the search was done, to show +its new position of point. + +@vindex search-slow-speed + The slow terminal style of display is used when the terminal baud rate is +less than or equal to the value of the variable @code{search-slow-speed}, +initially 1200. See also the discussion of the variable @code{baud-rate} +(@pxref{baud-rate,, Customization of Display}). + +@vindex search-slow-window-lines + The number of lines to use in slow terminal search display is controlled +by the variable @code{search-slow-window-lines}. Its normal value is 1. + +@node Nonincremental Search +@section Nonincremental Search +@cindex nonincremental search + + Emacs also has conventional nonincremental search commands, which require +you to type the entire search string before searching begins. + +@table @kbd +@item C-s @key{RET} @var{string} @key{RET} +Search for @var{string}. +@item C-r @key{RET} @var{string} @key{RET} +Search backward for @var{string}. +@end table + + To do a nonincremental search, first type @kbd{C-s @key{RET}}. This +enters the minibuffer to read the search string; terminate the string +with @key{RET}, and then the search takes place. If the string is not +found, the search command signals an error. + + When you type @kbd{C-s @key{RET}}, the @kbd{C-s} invokes incremental +search as usual. That command is specially programmed to invoke +nonincremental search, @code{search-forward}, if the string you +specify is empty. (Such an empty argument would otherwise be +useless.) But it does not call @code{search-forward} right away. First +it checks the next input character to see if is @kbd{C-w}, +which specifies a word search. +@ifnottex +@xref{Word Search}. +@end ifnottex +@kbd{C-r @key{RET}} does likewise, for a reverse incremental search. + +@findex search-forward +@findex search-backward + Forward and backward nonincremental searches are implemented by the +commands @code{search-forward} and @code{search-backward}. These +commands may be bound to keys in the usual manner. The feature that you +can get to them via the incremental search commands exists for +historical reasons, and to avoid the need to find separate key sequences +for them. + +@node Word Search +@section Word Search +@cindex word search + + Word search searches for a sequence of words without regard to how the +words are separated. More precisely, you type a string of many words, +using single spaces to separate them, and the string can be found even +if there are multiple spaces, newlines, or other punctuation characters +between these words. + + Word search is useful for editing a printed document made with a text +formatter. If you edit while looking at the printed, formatted version, +you can't tell where the line breaks are in the source file. With word +search, you can search without having to know them. + +@table @kbd +@item C-s @key{RET} C-w @var{words} @key{RET} +Search for @var{words}, ignoring details of punctuation. +@item C-r @key{RET} C-w @var{words} @key{RET} +Search backward for @var{words}, ignoring details of punctuation. +@end table + + Word search as a special case of nonincremental search is invoked +with @kbd{C-s @key{RET} C-w}. This is followed by the search string, +which must always be terminated with @key{RET}. Being nonincremental, +this search does not start until the argument is terminated. It works +by constructing a regular expression and searching for that; see +@ref{Regexp Search}. + + Use @kbd{C-r @key{RET} C-w} to do backward word search. + + You can also invoke word search with @kbd{C-s M-e C-w} or @kbd{C-r +M-e C-w} followed by the search string and terminated with @key{RET}, +@kbd{C-s} or @kbd{C-r}. This puts word search into incremental mode +where you can use all keys available for incremental search. However, +when you type more words in incremental word search, it will fail +until you type complete words. + +@findex word-search-forward +@findex word-search-backward + Forward and backward word searches are implemented by the commands +@code{word-search-forward} and @code{word-search-backward}. These +commands may be bound to keys in the usual manner. They are available +via the incremental search commands both for historical reasons and +to avoid the need to find separate key sequences for them. + +@node Regexp Search +@section Regular Expression Search +@cindex regular expression +@cindex regexp + + A @dfn{regular expression} (@dfn{regexp}, for short) is a pattern +that denotes a class of alternative strings to match, possibly +infinitely many. GNU Emacs provides both incremental and +nonincremental ways to search for a match for a regexp. The syntax of +regular expressions is explained in the following section. + +@kindex C-M-s +@findex isearch-forward-regexp +@kindex C-M-r +@findex isearch-backward-regexp + Incremental search for a regexp is done by typing @kbd{C-M-s} +(@code{isearch-forward-regexp}), by invoking @kbd{C-s} with a +prefix argument (whose value does not matter), or by typing @kbd{M-r} +within a forward incremental search. This command reads a +search string incrementally just like @kbd{C-s}, but it treats the +search string as a regexp rather than looking for an exact match +against the text in the buffer. Each time you add text to the search +string, you make the regexp longer, and the new regexp is searched +for. To search backward for a regexp, use @kbd{C-M-r} +(@code{isearch-backward-regexp}), @kbd{C-r} with a prefix argument, +or @kbd{M-r} within a backward incremental search. + + All of the control characters that do special things within an +ordinary incremental search have the same function in incremental regexp +search. Typing @kbd{C-s} or @kbd{C-r} immediately after starting the +search retrieves the last incremental search regexp used; that is to +say, incremental regexp and non-regexp searches have independent +defaults. They also have separate search rings that you can access with +@kbd{M-p} and @kbd{M-n}. + +@vindex search-whitespace-regexp + If you type @key{SPC} in incremental regexp search, it matches any +sequence of whitespace characters, including newlines. If you want to +match just a space, type @kbd{C-q @key{SPC}}. You can control what a +bare space matches by setting the variable +@code{search-whitespace-regexp} to the desired regexp. + + In some cases, adding characters to the regexp in an incremental regexp +search can make the cursor move back and start again. For example, if +you have searched for @samp{foo} and you add @samp{\|bar}, the cursor +backs up in case the first @samp{bar} precedes the first @samp{foo}. + + Forward and backward regexp search are not symmetrical, because +regexp matching in Emacs always operates forward, starting with the +beginning of the regexp. Thus, forward regexp search scans forward, +trying a forward match at each possible starting position. Backward +regexp search scans backward, trying a forward match at each possible +starting position. These search methods are not mirror images. + +@findex re-search-forward +@findex re-search-backward + Nonincremental search for a regexp is done by the functions +@code{re-search-forward} and @code{re-search-backward}. You can invoke +these with @kbd{M-x}, or bind them to keys, or invoke them by way of +incremental regexp search with @kbd{C-M-s @key{RET}} and @kbd{C-M-r +@key{RET}}. + + If you use the incremental regexp search commands with a prefix +argument, they perform ordinary string search, like +@code{isearch-forward} and @code{isearch-backward}. @xref{Incremental +Search}. + +@node Regexps +@section Syntax of Regular Expressions +@cindex syntax of regexps + + This manual describes regular expression features that users +typically want to use. There are additional features that are +mainly used in Lisp programs; see @ref{Regular Expressions,,, +elisp, The Emacs Lisp Reference Manual}. + + Regular expressions have a syntax in which a few characters are +special constructs and the rest are @dfn{ordinary}. An ordinary +character is a simple regular expression which matches that same +character and nothing else. The special characters are @samp{$}, +@samp{^}, @samp{.}, @samp{*}, @samp{+}, @samp{?}, @samp{[}, and +@samp{\}. The character @samp{]} is special if it ends a character +alternative (see later). The character @samp{-} is special inside a +character alternative. Any other character appearing in a regular +expression is ordinary, unless a @samp{\} precedes it. (When you use +regular expressions in a Lisp program, each @samp{\} must be doubled, +see the example near the end of this section.) + + For example, @samp{f} is not a special character, so it is ordinary, and +therefore @samp{f} is a regular expression that matches the string +@samp{f} and no other string. (It does @emph{not} match the string +@samp{ff}.) Likewise, @samp{o} is a regular expression that matches +only @samp{o}. (When case distinctions are being ignored, these regexps +also match @samp{F} and @samp{O}, but we consider this a generalization +of ``the same string,'' rather than an exception.) + + Any two regular expressions @var{a} and @var{b} can be concatenated. The +result is a regular expression which matches a string if @var{a} matches +some amount of the beginning of that string and @var{b} matches the rest of +the string.@refill + + As a simple example, we can concatenate the regular expressions @samp{f} +and @samp{o} to get the regular expression @samp{fo}, which matches only +the string @samp{fo}. Still trivial. To do something nontrivial, you +need to use one of the special characters. Here is a list of them. + +@table @asis +@item @kbd{.}@: @r{(Period)} +is a special character that matches any single character except a newline. +Using concatenation, we can make regular expressions like @samp{a.b}, which +matches any three-character string that begins with @samp{a} and ends with +@samp{b}.@refill + +@item @kbd{*} +is not a construct by itself; it is a postfix operator that means to +match the preceding regular expression repetitively as many times as +possible. Thus, @samp{o*} matches any number of @samp{o}s (including no +@samp{o}s). + +@samp{*} always applies to the @emph{smallest} possible preceding +expression. Thus, @samp{fo*} has a repeating @samp{o}, not a repeating +@samp{fo}. It matches @samp{f}, @samp{fo}, @samp{foo}, and so on. + +The matcher processes a @samp{*} construct by matching, immediately, +as many repetitions as can be found. Then it continues with the rest +of the pattern. If that fails, backtracking occurs, discarding some +of the matches of the @samp{*}-modified construct in case that makes +it possible to match the rest of the pattern. For example, in matching +@samp{ca*ar} against the string @samp{caaar}, the @samp{a*} first +tries to match all three @samp{a}s; but the rest of the pattern is +@samp{ar} and there is only @samp{r} left to match, so this try fails. +The next alternative is for @samp{a*} to match only two @samp{a}s. +With this choice, the rest of the regexp matches successfully.@refill + +@item @kbd{+} +is a postfix operator, similar to @samp{*} except that it must match +the preceding expression at least once. So, for example, @samp{ca+r} +matches the strings @samp{car} and @samp{caaaar} but not the string +@samp{cr}, whereas @samp{ca*r} matches all three strings. + +@item @kbd{?} +is a postfix operator, similar to @samp{*} except that it can match the +preceding expression either once or not at all. For example, +@samp{ca?r} matches @samp{car} or @samp{cr}; nothing else. + +@item @kbd{*?}, @kbd{+?}, @kbd{??} +@cindex non-greedy regexp matching +are non-greedy variants of the operators above. The normal operators +@samp{*}, @samp{+}, @samp{?} are @dfn{greedy} in that they match as +much as they can, as long as the overall regexp can still match. With +a following @samp{?}, they are non-greedy: they will match as little +as possible. + +Thus, both @samp{ab*} and @samp{ab*?} can match the string @samp{a} +and the string @samp{abbbb}; but if you try to match them both against +the text @samp{abbb}, @samp{ab*} will match it all (the longest valid +match), while @samp{ab*?} will match just @samp{a} (the shortest +valid match). + +Non-greedy operators match the shortest possible string starting at a +given starting point; in a forward search, though, the earliest +possible starting point for match is always the one chosen. Thus, if +you search for @samp{a.*?$} against the text @samp{abbab} followed by +a newline, it matches the whole string. Since it @emph{can} match +starting at the first @samp{a}, it does. + +@item @kbd{\@{@var{n}\@}} +is a postfix operator that specifies repetition @var{n} times---that +is, the preceding regular expression must match exactly @var{n} times +in a row. For example, @samp{x\@{4\@}} matches the string @samp{xxxx} +and nothing else. + +@item @kbd{\@{@var{n},@var{m}\@}} +is a postfix operator that specifies repetition between @var{n} and +@var{m} times---that is, the preceding regular expression must match +at least @var{n} times, but no more than @var{m} times. If @var{m} is +omitted, then there is no upper limit, but the preceding regular +expression must match at least @var{n} times.@* @samp{\@{0,1\@}} is +equivalent to @samp{?}. @* @samp{\@{0,\@}} is equivalent to +@samp{*}. @* @samp{\@{1,\@}} is equivalent to @samp{+}. + +@item @kbd{[ @dots{} ]} +is a @dfn{character set}, which begins with @samp{[} and is terminated +by @samp{]}. In the simplest case, the characters between the two +brackets are what this set can match. + +Thus, @samp{[ad]} matches either one @samp{a} or one @samp{d}, and +@samp{[ad]*} matches any string composed of just @samp{a}s and @samp{d}s +(including the empty string), from which it follows that @samp{c[ad]*r} +matches @samp{cr}, @samp{car}, @samp{cdr}, @samp{caddaar}, etc. + +You can also include character ranges in a character set, by writing the +starting and ending characters with a @samp{-} between them. Thus, +@samp{[a-z]} matches any lower-case @acronym{ASCII} letter. Ranges may be +intermixed freely with individual characters, as in @samp{[a-z$%.]}, +which matches any lower-case @acronym{ASCII} letter or @samp{$}, @samp{%} or +period. + +Note that the usual regexp special characters are not special inside a +character set. A completely different set of special characters exists +inside character sets: @samp{]}, @samp{-} and @samp{^}. + +To include a @samp{]} in a character set, you must make it the first +character. For example, @samp{[]a]} matches @samp{]} or @samp{a}. To +include a @samp{-}, write @samp{-} as the first or last character of the +set, or put it after a range. Thus, @samp{[]-]} matches both @samp{]} +and @samp{-}. + +To include @samp{^} in a set, put it anywhere but at the beginning of +the set. (At the beginning, it complements the set---see below.) + +When you use a range in case-insensitive search, you should write both +ends of the range in upper case, or both in lower case, or both should +be non-letters. The behavior of a mixed-case range such as @samp{A-z} +is somewhat ill-defined, and it may change in future Emacs versions. + +@item @kbd{[^ @dots{} ]} +@samp{[^} begins a @dfn{complemented character set}, which matches any +character except the ones specified. Thus, @samp{[^a-z0-9A-Z]} matches +all characters @emph{except} @acronym{ASCII} letters and digits. + +@samp{^} is not special in a character set unless it is the first +character. The character following the @samp{^} is treated as if it +were first (in other words, @samp{-} and @samp{]} are not special there). + +A complemented character set can match a newline, unless newline is +mentioned as one of the characters not to match. This is in contrast to +the handling of regexps in programs such as @code{grep}. + +@item @kbd{^} +is a special character that matches the empty string, but only at the +beginning of a line in the text being matched. Otherwise it fails to +match anything. Thus, @samp{^foo} matches a @samp{foo} that occurs at +the beginning of a line. + +For historical compatibility reasons, @samp{^} can be used with this +meaning only at the beginning of the regular expression, or after +@samp{\(} or @samp{\|}. + +@item @kbd{$} +is similar to @samp{^} but matches only at the end of a line. Thus, +@samp{x+$} matches a string of one @samp{x} or more at the end of a line. + +For historical compatibility reasons, @samp{$} can be used with this +meaning only at the end of the regular expression, or before @samp{\)} +or @samp{\|}. + +@item @kbd{\} +has two functions: it quotes the special characters (including +@samp{\}), and it introduces additional special constructs. + +Because @samp{\} quotes special characters, @samp{\$} is a regular +expression that matches only @samp{$}, and @samp{\[} is a regular +expression that matches only @samp{[}, and so on. + +See the following section for the special constructs that begin +with @samp{\}. +@end table + + Note: for historical compatibility, special characters are treated as +ordinary ones if they are in contexts where their special meanings make no +sense. For example, @samp{*foo} treats @samp{*} as ordinary since there is +no preceding expression on which the @samp{*} can act. It is poor practice +to depend on this behavior; it is better to quote the special character anyway, +regardless of where it appears. + +As a @samp{\} is not special inside a character alternative, it can +never remove the special meaning of @samp{-} or @samp{]}. So you +should not quote these characters when they have no special meaning +either. This would not clarify anything, since backslashes can +legitimately precede these characters where they @emph{have} special +meaning, as in @samp{[^\]} (@code{"[^\\]"} for Lisp string syntax), +which matches any single character except a backslash. + +@node Regexp Backslash +@section Backslash in Regular Expressions + + For the most part, @samp{\} followed by any character matches only +that character. However, there are several exceptions: two-character +sequences starting with @samp{\} that have special meanings. The +second character in the sequence is always an ordinary character when +used on its own. Here is a table of @samp{\} constructs. + +@table @kbd +@item \| +specifies an alternative. Two regular expressions @var{a} and @var{b} +with @samp{\|} in between form an expression that matches some text if +either @var{a} matches it or @var{b} matches it. It works by trying to +match @var{a}, and if that fails, by trying to match @var{b}. + +Thus, @samp{foo\|bar} matches either @samp{foo} or @samp{bar} +but no other string.@refill + +@samp{\|} applies to the largest possible surrounding expressions. Only a +surrounding @samp{\( @dots{} \)} grouping can limit the grouping power of +@samp{\|}.@refill + +Full backtracking capability exists to handle multiple uses of @samp{\|}. + +@item \( @dots{} \) +is a grouping construct that serves three purposes: + +@enumerate +@item +To enclose a set of @samp{\|} alternatives for other operations. +Thus, @samp{\(foo\|bar\)x} matches either @samp{foox} or @samp{barx}. + +@item +To enclose a complicated expression for the postfix operators @samp{*}, +@samp{+} and @samp{?} to operate on. Thus, @samp{ba\(na\)*} matches +@samp{bananana}, etc., with any (zero or more) number of @samp{na} +strings.@refill + +@item +To record a matched substring for future reference. +@end enumerate + +This last application is not a consequence of the idea of a +parenthetical grouping; it is a separate feature that is assigned as a +second meaning to the same @samp{\( @dots{} \)} construct. In practice +there is usually no conflict between the two meanings; when there is +a conflict, you can use a ``shy'' group. + +@item \(?: @dots{} \) +@cindex shy group, in regexp +specifies a ``shy'' group that does not record the matched substring; +you can't refer back to it with @samp{\@var{d}}. This is useful +in mechanically combining regular expressions, so that you +can add groups for syntactic purposes without interfering with +the numbering of the groups that are meant to be referred to. + +@item \@var{d} +@cindex back reference, in regexp +matches the same text that matched the @var{d}th occurrence of a +@samp{\( @dots{} \)} construct. This is called a @dfn{back +reference}. + +After the end of a @samp{\( @dots{} \)} construct, the matcher remembers +the beginning and end of the text matched by that construct. Then, +later on in the regular expression, you can use @samp{\} followed by the +digit @var{d} to mean ``match the same text matched the @var{d}th time +by the @samp{\( @dots{} \)} construct.'' + +The strings matching the first nine @samp{\( @dots{} \)} constructs +appearing in a regular expression are assigned numbers 1 through 9 in +the order that the open-parentheses appear in the regular expression. +So you can use @samp{\1} through @samp{\9} to refer to the text matched +by the corresponding @samp{\( @dots{} \)} constructs. + +For example, @samp{\(.*\)\1} matches any newline-free string that is +composed of two identical halves. The @samp{\(.*\)} matches the first +half, which may be anything, but the @samp{\1} that follows must match +the same exact text. + +If a particular @samp{\( @dots{} \)} construct matches more than once +(which can easily happen if it is followed by @samp{*}), only the last +match is recorded. + +@item \` +matches the empty string, but only at the beginning of the string or +buffer (or its accessible portion) being matched against. + +@item \' +matches the empty string, but only at the end of the string or buffer +(or its accessible portion) being matched against. + +@item \= +matches the empty string, but only at point. + +@item \b +matches the empty string, but only at the beginning or +end of a word. Thus, @samp{\bfoo\b} matches any occurrence of +@samp{foo} as a separate word. @samp{\bballs?\b} matches +@samp{ball} or @samp{balls} as a separate word.@refill + +@samp{\b} matches at the beginning or end of the buffer +regardless of what text appears next to it. + +@item \B +matches the empty string, but @emph{not} at the beginning or +end of a word. + +@item \< +matches the empty string, but only at the beginning of a word. +@samp{\<} matches at the beginning of the buffer only if a +word-constituent character follows. + +@item \> +matches the empty string, but only at the end of a word. @samp{\>} +matches at the end of the buffer only if the contents end with a +word-constituent character. + +@item \w +matches any word-constituent character. The syntax table +determines which characters these are. @xref{Syntax}. + +@item \W +matches any character that is not a word-constituent. + +@item \_< +matches the empty string, but only at the beginning of a symbol. +A symbol is a sequence of one or more symbol-constituent characters. +A symbol-constituent character is a character whose syntax is either +@samp{w} or @samp{_}. @samp{\_<} matches at the beginning of the +buffer only if a symbol-constituent character follows. + +@item \_> +matches the empty string, but only at the end of a symbol. @samp{\_>} +matches at the end of the buffer only if the contents end with a +symbol-constituent character. + +@item \s@var{c} +matches any character whose syntax is @var{c}. Here @var{c} is a +character that designates a particular syntax class: thus, @samp{w} +for word constituent, @samp{-} or @samp{ } for whitespace, @samp{.} +for ordinary punctuation, etc. @xref{Syntax}. + +@item \S@var{c} +matches any character whose syntax is not @var{c}. + +@cindex categories of characters +@cindex characters which belong to a specific language +@findex describe-categories +@item \c@var{c} +matches any character that belongs to the category @var{c}. For +example, @samp{\cc} matches Chinese characters, @samp{\cg} matches +Greek characters, etc. For the description of the known categories, +type @kbd{M-x describe-categories @key{RET}}. + +@item \C@var{c} +matches any character that does @emph{not} belong to category +@var{c}. +@end table + + The constructs that pertain to words and syntax are controlled by the +setting of the syntax table (@pxref{Syntax}). + +@node Regexp Example +@section Regular Expression Example + + Here is a complicated regexp---a simplified version of the regexp +that Emacs uses, by default, to recognize the end of a sentence +together with any whitespace that follows. We show its Lisp syntax to +distinguish the spaces from the tab characters. In Lisp syntax, the +string constant begins and ends with a double-quote. @samp{\"} stands +for a double-quote as part of the regexp, @samp{\\} for a backslash as +part of the regexp, @samp{\t} for a tab, and @samp{\n} for a newline. + +@example +"[.?!][]\"')]*\\($\\| $\\|\t\\| \\)[ \t\n]*" +@end example + +@noindent +This contains four parts in succession: a character set matching +period, @samp{?}, or @samp{!}; a character set matching +close-brackets, quotes, or parentheses, repeated zero or more times; a +set of alternatives within backslash-parentheses that matches either +end-of-line, a space at the end of a line, a tab, or two spaces; and a +character set matching whitespace characters, repeated any number of +times. + + To enter the same regexp in incremental search, you would type +@key{TAB} to enter a tab, and @kbd{C-j} to enter a newline. You would +also type single backslashes as themselves, instead of doubling them +for Lisp syntax. In commands that use ordinary minibuffer input to +read a regexp, you would quote the @kbd{C-j} by preceding it with a +@kbd{C-q} to prevent @kbd{C-j} from exiting the minibuffer. + +@node Search Case +@section Searching and Case + + Incremental searches in Emacs normally ignore the case of the text +they are searching through, if you specify the text in lower case. +Thus, if you specify searching for @samp{foo}, then @samp{Foo} and +@samp{foo} are also considered a match. Regexps, and in particular +character sets, are included: @samp{[ab]} would match @samp{a} or +@samp{A} or @samp{b} or @samp{B}.@refill + + An upper-case letter anywhere in the incremental search string makes +the search case-sensitive. Thus, searching for @samp{Foo} does not find +@samp{foo} or @samp{FOO}. This applies to regular expression search as +well as to string search. The effect ceases if you delete the +upper-case letter from the search string. + + Typing @kbd{M-c} within an incremental search toggles the case +sensitivity of that search. The effect does not extend beyond the +current incremental search to the next one, but it does override the +effect of including an upper-case letter in the current search. + +@vindex case-fold-search +@vindex default-case-fold-search + If you set the variable @code{case-fold-search} to @code{nil}, then +all letters must match exactly, including case. This is a per-buffer +variable; altering the variable affects only the current buffer, but +there is a default value in @code{default-case-fold-search} that you +can also set. @xref{Locals}. This variable applies to nonincremental +searches also, including those performed by the replace commands +(@pxref{Replace}) and the minibuffer history matching commands +(@pxref{Minibuffer History}). + + Several related variables control case-sensitivity of searching and +matching for specific commands or activities. For instance, +@code{tags-case-fold-search} controls case sensitivity for +@code{find-tag}. To find these variables, do @kbd{M-x +apropos-variable @key{RET} case-fold-search @key{RET}}. + +@node Replace +@section Replacement Commands +@cindex replacement +@cindex search-and-replace commands +@cindex string substitution +@cindex global substitution + + Global search-and-replace operations are not needed often in Emacs, +but they are available. In addition to the simple @kbd{M-x +replace-string} command which replaces all occurrences, +there is @kbd{M-%} (@code{query-replace}), which presents each occurrence +of the pattern and asks you whether to replace it. + + The replace commands normally operate on the text from point to the +end of the buffer; however, in Transient Mark mode (@pxref{Transient +Mark}), when the mark is active, they operate on the region. The +basic replace commands replace one string (or regexp) with one +replacement string. It is possible to perform several replacements in +parallel using the command @code{expand-region-abbrevs} +(@pxref{Expanding Abbrevs}). + +@menu +* Unconditional Replace:: Replacing all matches for a string. +* Regexp Replace:: Replacing all matches for a regexp. +* Replacement and Case:: How replacements preserve case of letters. +* Query Replace:: How to use querying. +@end menu + +@node Unconditional Replace, Regexp Replace, Replace, Replace +@subsection Unconditional Replacement +@findex replace-string + +@table @kbd +@item M-x replace-string @key{RET} @var{string} @key{RET} @var{newstring} @key{RET} +Replace every occurrence of @var{string} with @var{newstring}. +@end table + + To replace every instance of @samp{foo} after point with @samp{bar}, +use the command @kbd{M-x replace-string} with the two arguments +@samp{foo} and @samp{bar}. Replacement happens only in the text after +point, so if you want to cover the whole buffer you must go to the +beginning first. All occurrences up to the end of the buffer are +replaced; to limit replacement to part of the buffer, narrow to that +part of the buffer before doing the replacement (@pxref{Narrowing}). +In Transient Mark mode, when the region is active, replacement is +limited to the region (@pxref{Transient Mark}). + + When @code{replace-string} exits, it leaves point at the last +occurrence replaced. It sets the mark to the prior position of point +(where the @code{replace-string} command was issued); use @kbd{C-u +C-@key{SPC}} to move back there. + + A numeric argument restricts replacement to matches that are surrounded +by word boundaries. The argument's value doesn't matter. + + @xref{Replacement and Case}, for details about case-sensitivity in +replace commands. + + What if you want to exchange @samp{x} and @samp{y}: replace every @samp{x} with a @samp{y} and vice versa? You can do it this way: + +@example +M-x replace-string @key{RET} x @key{RET} @@TEMP@@ @key{RET} +M-< M-x replace-string @key{RET} y @key{RET} x @key{RET} +M-< M-x replace-string @key{RET} @@TEMP@@ @key{RET} y @key{RET} +@end example + +@noindent +This works provided the string @samp{@@TEMP@@} does not appear +in your text. + +@node Regexp Replace, Replacement and Case, Unconditional Replace, Replace +@subsection Regexp Replacement +@findex replace-regexp + + The @kbd{M-x replace-string} command replaces exact matches for a +single string. The similar command @kbd{M-x replace-regexp} replaces +any match for a specified pattern. + +@table @kbd +@item M-x replace-regexp @key{RET} @var{regexp} @key{RET} @var{newstring} @key{RET} +Replace every match for @var{regexp} with @var{newstring}. +@end table + +@cindex back reference, in regexp replacement + In @code{replace-regexp}, the @var{newstring} need not be constant: +it can refer to all or part of what is matched by the @var{regexp}. +@samp{\&} in @var{newstring} stands for the entire match being +replaced. @samp{\@var{d}} in @var{newstring}, where @var{d} is a +digit, stands for whatever matched the @var{d}th parenthesized +grouping in @var{regexp}. (This is called a ``back reference.'') +@samp{\#} refers to the count of replacements already made in this +command, as a decimal number. In the first replacement, @samp{\#} +stands for @samp{0}; in the second, for @samp{1}; and so on. For +example, + +@example +M-x replace-regexp @key{RET} c[ad]+r @key{RET} \&-safe @key{RET} +@end example + +@noindent +replaces (for example) @samp{cadr} with @samp{cadr-safe} and @samp{cddr} +with @samp{cddr-safe}. + +@example +M-x replace-regexp @key{RET} \(c[ad]+r\)-safe @key{RET} \1 @key{RET} +@end example + +@noindent +performs the inverse transformation. To include a @samp{\} in the +text to replace with, you must enter @samp{\\}. + + If you want to enter part of the replacement string by hand each +time, use @samp{\?} in the replacement string. Each replacement will +ask you to edit the replacement string in the minibuffer, putting +point where the @samp{\?} was. + + The remainder of this subsection is intended for specialized tasks +and requires knowledge of Lisp. Most readers can skip it. + + You can use Lisp expressions to calculate parts of the +replacement string. To do this, write @samp{\,} followed by the +expression in the replacement string. Each replacement calculates the +value of the expression and converts it to text without quoting (if +it's a string, this means using the string's contents), and uses it in +the replacement string in place of the expression itself. If the +expression is a symbol, one space in the replacement string after the +symbol name goes with the symbol name, so the value replaces them +both. + + Inside such an expression, you can use some special sequences. +@samp{\&} and @samp{\@var{n}} refer here, as usual, to the entire +match as a string, and to a submatch as a string. @var{n} may be +multiple digits, and the value of @samp{\@var{n}} is @code{nil} if +subexpression @var{n} did not match. You can also use @samp{\#&} and +@samp{\#@var{n}} to refer to those matches as numbers (this is valid +when the match or submatch has the form of a numeral). @samp{\#} here +too stands for the number of already-completed replacements. + + Repeating our example to exchange @samp{x} and @samp{y}, we can thus +do it also this way: + +@example +M-x replace-regexp @key{RET} \(x\)\|y @key{RET} +\,(if \1 "y" "x") @key{RET} +@end example + + For computing replacement strings for @samp{\,}, the @code{format} +function is often useful (@pxref{Formatting Strings,,, elisp, The Emacs +Lisp Reference Manual}). For example, to add consecutively numbered +strings like @samp{ABC00042} to columns 73 @w{to 80} (unless they are +already occupied), you can use + +@example +M-x replace-regexp @key{RET} ^.\@{0,72\@}$ @key{RET} +\,(format "%-72sABC%05d" \& \#) @key{RET} +@end example + +@node Replacement and Case, Query Replace, Regexp Replace, Replace +@subsection Replace Commands and Case + + If the first argument of a replace command is all lower case, the +command ignores case while searching for occurrences to +replace---provided @code{case-fold-search} is non-@code{nil}. If +@code{case-fold-search} is set to @code{nil}, case is always significant +in all searches. + +@vindex case-replace + In addition, when the @var{newstring} argument is all or partly lower +case, replacement commands try to preserve the case pattern of each +occurrence. Thus, the command + +@example +M-x replace-string @key{RET} foo @key{RET} bar @key{RET} +@end example + +@noindent +replaces a lower case @samp{foo} with a lower case @samp{bar}, an +all-caps @samp{FOO} with @samp{BAR}, and a capitalized @samp{Foo} with +@samp{Bar}. (These three alternatives---lower case, all caps, and +capitalized, are the only ones that @code{replace-string} can +distinguish.) + + If upper-case letters are used in the replacement string, they remain +upper case every time that text is inserted. If upper-case letters are +used in the first argument, the second argument is always substituted +exactly as given, with no case conversion. Likewise, if either +@code{case-replace} or @code{case-fold-search} is set to @code{nil}, +replacement is done without case conversion. + +@node Query Replace,, Replacement and Case, Replace +@subsection Query Replace +@cindex query replace + +@table @kbd +@item M-% @var{string} @key{RET} @var{newstring} @key{RET} +@itemx M-x query-replace @key{RET} @var{string} @key{RET} @var{newstring} @key{RET} +Replace some occurrences of @var{string} with @var{newstring}. +@item C-M-% @var{regexp} @key{RET} @var{newstring} @key{RET} +@itemx M-x query-replace-regexp @key{RET} @var{regexp} @key{RET} @var{newstring} @key{RET} +Replace some matches for @var{regexp} with @var{newstring}. +@end table + +@kindex M-% +@findex query-replace + If you want to change only some of the occurrences of @samp{foo} to - @samp{bar}, not all of them, then you cannot use an ordinary - @code{replace-string}. Instead, use @kbd{M-%} (@code{query-replace}). ++@samp{bar}, not all of them, use @kbd{M-%} (@code{query-replace}). +This command finds occurrences of @samp{foo} one by one, displays each +occurrence and asks you whether to replace it. Aside from querying, - @code{query-replace} works just like @code{replace-string}. It - preserves case, like @code{replace-string}, provided - @code{case-replace} is non-@code{nil}, as it normally is ++@code{query-replace} works just like @code{replace-string} ++(@pxref{Unconditional Replace}). In particular, it preserves case ++provided @code{case-replace} is non-@code{nil}, as it normally is +(@pxref{Replacement and Case}). A numeric argument means consider +only occurrences that are bounded by word-delimiter characters. + +@kindex C-M-% +@findex query-replace-regexp + @kbd{C-M-%} performs regexp search and replace (@code{query-replace-regexp}). +It works like @code{replace-regexp} except that it queries +like @code{query-replace}. + +@cindex faces for highlighting query replace + These commands highlight the current match using the face +@code{query-replace}. They highlight other matches using +@code{lazy-highlight} just like incremental search (@pxref{Incremental +Search}). By default, @code{query-replace-regexp} will show +substituted replacement string for the current match in the +minibuffer. If you want to keep special sequences @samp{\&} and +@samp{\@var{n}} unexpanded, customize +@code{query-replace-show-replacement} variable. + + The characters you can type when you are shown a match for the string +or regexp are: + +@ignore @c Not worth it. +@kindex SPC @r{(query-replace)} +@kindex DEL @r{(query-replace)} +@kindex , @r{(query-replace)} +@kindex RET @r{(query-replace)} +@kindex . @r{(query-replace)} +@kindex ! @r{(query-replace)} +@kindex ^ @r{(query-replace)} +@kindex C-r @r{(query-replace)} +@kindex C-w @r{(query-replace)} +@kindex C-l @r{(query-replace)} +@end ignore + +@c WideCommands +@table @kbd +@item @key{SPC} +to replace the occurrence with @var{newstring}. + +@item @key{DEL} +to skip to the next occurrence without replacing this one. + +@item , @r{(Comma)} +to replace this occurrence and display the result. You are then asked +for another input character to say what to do next. Since the +replacement has already been made, @key{DEL} and @key{SPC} are +equivalent in this situation; both move to the next occurrence. + +You can type @kbd{C-r} at this point (see below) to alter the replaced +text. You can also type @kbd{C-x u} to undo the replacement; this exits +the @code{query-replace}, so if you want to do further replacement you +must use @kbd{C-x @key{ESC} @key{ESC} @key{RET}} to restart +(@pxref{Repetition}). + +@item @key{RET} +to exit without doing any more replacements. + +@item .@: @r{(Period)} +to replace this occurrence and then exit without searching for more +occurrences. + +@item ! +to replace all remaining occurrences without asking again. + +@item ^ +to go back to the position of the previous occurrence (or what used to +be an occurrence), in case you changed it by mistake or want to +reexamine it. + +@item C-r +to enter a recursive editing level, in case the occurrence needs to be +edited rather than just replaced with @var{newstring}. When you are +done, exit the recursive editing level with @kbd{C-M-c} to proceed to +the next occurrence. @xref{Recursive Edit}. + +@item C-w +to delete the occurrence, and then enter a recursive editing level as in +@kbd{C-r}. Use the recursive edit to insert text to replace the deleted +occurrence of @var{string}. When done, exit the recursive editing level +with @kbd{C-M-c} to proceed to the next occurrence. + +@item e +to edit the replacement string in the minibuffer. When you exit the +minibuffer by typing @key{RET}, the minibuffer contents replace the +current occurrence of the pattern. They also become the new +replacement string for any further occurrences. + +@item C-l +to redisplay the screen. Then you must type another character to +specify what to do with this occurrence. + +@item C-h +to display a message summarizing these options. Then you must type +another character to specify what to do with this occurrence. +@end table + + Some other characters are aliases for the ones listed above: @kbd{y}, +@kbd{n} and @kbd{q} are equivalent to @key{SPC}, @key{DEL} and +@key{RET}. + + Aside from this, any other character exits the @code{query-replace}, +and is then reread as part of a key sequence. Thus, if you type +@kbd{C-k}, it exits the @code{query-replace} and then kills to end of +line. + + To restart a @code{query-replace} once it is exited, use @kbd{C-x +@key{ESC} @key{ESC}}, which repeats the @code{query-replace} because it +used the minibuffer to read its arguments. @xref{Repetition, C-x ESC +ESC}. + + @xref{Operating on Files}, for the Dired @kbd{Q} command which +performs query replace on selected files. See also @ref{Transforming +File Names}, for Dired commands to rename, copy, or link files by +replacing regexp matches in file names. + +@node Other Repeating Search +@section Other Search-and-Loop Commands + + Here are some other commands that find matches for a regular +expression. They all ignore case in matching, if the pattern contains +no upper-case letters and @code{case-fold-search} is non-@code{nil}. +Aside from @code{occur} and its variants, all operate on the text from +point to the end of the buffer, or on the active region in Transient +Mark mode. + +@findex list-matching-lines +@findex occur +@findex multi-occur +@findex multi-occur-in-matching-buffers +@findex how-many +@findex delete-non-matching-lines +@findex delete-matching-lines +@findex flush-lines +@findex keep-lines + +@table @kbd +@item M-x occur @key{RET} @var{regexp} @key{RET} +Display a list showing each line in the buffer that contains a match +for @var{regexp}. To limit the search to part of the buffer, narrow +to that part (@pxref{Narrowing}). A numeric argument @var{n} +specifies that @var{n} lines of context are to be displayed before and +after each matching line. Currently, @code{occur} can not correctly +handle multiline matches. + +@kindex RET @r{(Occur mode)} +@kindex o @r{(Occur mode)} +@kindex C-o @r{(Occur mode)} +The buffer @samp{*Occur*} containing the output serves as a menu for +finding the occurrences in their original context. Click +@kbd{Mouse-2} on an occurrence listed in @samp{*Occur*}, or position +point there and type @key{RET}; this switches to the buffer that was +searched and moves point to the original of the chosen occurrence. +@kbd{o} and @kbd{C-o} display the match in another window; @kbd{C-o} +does not select it. + +After using @kbd{M-x occur}, you can use @code{next-error} to visit +the occurrences found, one by one. @ref{Compilation Mode}. + +@item M-x list-matching-lines +Synonym for @kbd{M-x occur}. + +@item M-x multi-occur @key{RET} @var{buffers} @key{RET} @var{regexp} @key{RET} +This function is just like @code{occur}, except it is able to search +through multiple buffers. It asks you to specify the buffer names one by one. + +@item M-x multi-occur-in-matching-buffers @key{RET} @var{bufregexp} @key{RET} @var{regexp} @key{RET} +This function is similar to @code{multi-occur}, except the buffers to +search are specified by a regular expression that matches visited +file names. With a prefix argument, it uses the regular expression to match +buffer names instead. + +@item M-x how-many @key{RET} @var{regexp} @key{RET} +Print the number of matches for @var{regexp} that exist in the buffer +after point. In Transient Mark mode, if the region is active, the +command operates on the region instead. + +@item M-x flush-lines @key{RET} @var{regexp} @key{RET} +This command deletes each line that contains a match for @var{regexp}, +operating on the text after point; it deletes the current line +if it contains a match starting after point. In Transient Mark mode, +if the region is active, the command operates on the region instead; +it deletes a line partially contained in the region if it contains a +match entirely contained in the region. + +If a match is split across lines, @code{flush-lines} deletes all those +lines. It deletes the lines before starting to look for the next +match; hence, it ignores a match starting on the same line at which +another match ended. + +@item M-x keep-lines @key{RET} @var{regexp} @key{RET} +This command deletes each line that @emph{does not} contain a match for +@var{regexp}, operating on the text after point; if point is not at the +beginning of a line, it always keeps the current line. In Transient +Mark mode, if the region is active, the command operates on the region +instead; it never deletes lines that are only partially contained in +the region (a newline that ends a line counts as part of that line). + +If a match is split across lines, this command keeps all those lines. +@end table + +@ignore + arch-tag: fd9d8e77-66af-491c-b212-d80999613e3e +@end ignore diff --cc doc/emacs/text.texi index c151c75e8bb,00000000000..4b3bc8df0f0 mode 100644,000000..100644 --- a/doc/emacs/text.texi +++ b/doc/emacs/text.texi @@@ -1,2902 -1,0 +1,2925 @@@ +@c This is part of the Emacs manual. +@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001, +@c 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +@c See file emacs.texi for copying conditions. +@node Text, Programs, Indentation, Top +@chapter Commands for Human Languages +@cindex text +@cindex manipulating text + + The term @dfn{text} has two widespread meanings in our area of the +computer field. One is data that is a sequence of characters. Any file +that you edit with Emacs is text, in this sense of the word. The other +meaning is more restrictive: a sequence of characters in a human language +for humans to read (possibly after processing by a text formatter), as +opposed to a program or binary data. This chapter is concerned with +editing text in the narrower sense. + + Human languages have syntactic/stylistic conventions that can be +supported or used to advantage by editor commands: conventions involving +words, sentences, paragraphs, and capital letters. This chapter +describes Emacs commands for all of these things. There are also +commands for @dfn{filling}, which means rearranging the lines of a +paragraph to be approximately equal in length. The commands for moving +over and killing words, sentences and paragraphs, while intended +primarily for editing text, are also often useful for editing programs. + + Emacs has several major modes for editing human-language text. If the +file contains text pure and simple, use Text mode, which customizes +Emacs in small ways for the syntactic conventions of text. Outline mode +provides special commands for operating on text with an outline +structure. +@iftex +@xref{Outline Mode}. +@end iftex + + For text which contains embedded commands for text formatters, Emacs +has other major modes, each for a particular formatter. Thus, for +input to @TeX{}, you would use @TeX{} +@iftex +mode (@pxref{TeX Mode,,@TeX{} Mode}). +@end iftex +@ifnottex +mode. +@end ifnottex +For input to groff or nroff, use Nroff mode. + + Instead of using a text formatter, you can edit formatted text in +WYSIWYG style (``what you see is what you get''), with Enriched mode. +Then the formatting appears on the screen in Emacs while you edit. +@iftex +@xref{Formatted Text}. +@end iftex + +@cindex ASCII art + If you need to edit pictures made out of text characters (commonly +referred to as ``ASCII art''), use @kbd{M-x edit-picture} to enter +Picture mode, a special major mode for editing such pictures. +@iftex +@xref{Picture Mode,,, emacs-xtra, Specialized Emacs Features}. +@end iftex +@ifnottex +@xref{Picture Mode}. +@end ifnottex + + +@cindex skeletons +@cindex templates +@cindex autotyping +@cindex automatic typing + The ``automatic typing'' features may be useful when writing text. +@inforef{Top,, autotype}. + +@menu +* Words:: Moving over and killing words. +* Sentences:: Moving over and killing sentences. +* Paragraphs:: Moving over paragraphs. +* Pages:: Moving over pages. +* Filling:: Filling or justifying text. +* Case:: Changing the case of text. +* Text Mode:: The major modes for editing text files. +* Outline Mode:: Editing outlines. +* TeX Mode:: Editing input to the formatter TeX. +* HTML Mode:: Editing HTML, SGML, and XML files. +* Nroff Mode:: Editing input to the formatter nroff. +* Formatted Text:: Editing formatted text directly in WYSIWYG fashion. +* Text Based Tables:: Editing text-based tables in WYSIWYG fashion. +@end menu + +@node Words +@section Words +@cindex words +@cindex Meta commands and words + + Emacs has commands for moving over or operating on words. By convention, +the keys for them are all Meta characters. + +@table @kbd +@item M-f +Move forward over a word (@code{forward-word}). +@item M-b +Move backward over a word (@code{backward-word}). +@item M-d +Kill up to the end of a word (@code{kill-word}). +@item M-@key{DEL} +Kill back to the beginning of a word (@code{backward-kill-word}). +@item M-@@ +Mark the end of the next word (@code{mark-word}). +@item M-t +Transpose two words or drag a word across others +(@code{transpose-words}). +@end table + + Notice how these keys form a series that parallels the character-based +@kbd{C-f}, @kbd{C-b}, @kbd{C-d}, @key{DEL} and @kbd{C-t}. @kbd{M-@@} is +cognate to @kbd{C-@@}, which is an alias for @kbd{C-@key{SPC}}. + +@kindex M-f +@kindex M-b +@findex forward-word +@findex backward-word + The commands @kbd{M-f} (@code{forward-word}) and @kbd{M-b} +(@code{backward-word}) move forward and backward over words. These +Meta characters are thus analogous to the corresponding control +characters, @kbd{C-f} and @kbd{C-b}, which move over single characters +in the text. The analogy extends to numeric arguments, which serve as +repeat counts. @kbd{M-f} with a negative argument moves backward, and +@kbd{M-b} with a negative argument moves forward. Forward motion +stops right after the last letter of the word, while backward motion +stops right before the first letter. + +@kindex M-d +@findex kill-word + @kbd{M-d} (@code{kill-word}) kills the word after point. To be +precise, it kills everything from point to the place @kbd{M-f} would +move to. Thus, if point is in the middle of a word, @kbd{M-d} kills +just the part after point. If some punctuation comes between point and the +next word, it is killed along with the word. (If you wish to kill only the +next word but not the punctuation before it, simply do @kbd{M-f} to get +the end, and kill the word backwards with @kbd{M-@key{DEL}}.) +@kbd{M-d} takes arguments just like @kbd{M-f}. + +@findex backward-kill-word +@kindex M-DEL + @kbd{M-@key{DEL}} (@code{backward-kill-word}) kills the word before +point. It kills everything from point back to where @kbd{M-b} would +move to. For instance, if point is after the space in @w{@samp{FOO, +BAR}}, it kills @w{@samp{FOO, }}. If you wish to kill just +@samp{FOO}, and not the comma and the space, use @kbd{M-b M-d} instead +of @kbd{M-@key{DEL}}. + +@c Don't index M-t and transpose-words here, they are indexed in +@c fixit.texi, in the node "Transpose". +@c @kindex M-t +@c @findex transpose-words + @kbd{M-t} (@code{transpose-words}) exchanges the word before or +containing point with the following word. The delimiter characters between +the words do not move. For example, @w{@samp{FOO, BAR}} transposes into +@w{@samp{BAR, FOO}} rather than @samp{@w{BAR FOO,}}. @xref{Transpose}, for +more on transposition. + +@kindex M-@@ +@findex mark-word + To operate on the next @var{n} words with an operation which applies +between point and mark, you can either set the mark at point and then move +over the words, or you can use the command @kbd{M-@@} (@code{mark-word}) +which does not move point, but sets the mark where @kbd{M-f} would move +to. @kbd{M-@@} accepts a numeric argument that says how many words to +scan for the place to put the mark. In Transient Mark mode, this command +activates the mark. + + The word commands' understanding of word boundaries is controlled +by the syntax table. Any character can, for example, be declared to +be a word delimiter. @xref{Syntax}. + +@node Sentences +@section Sentences +@cindex sentences +@cindex manipulating sentences + + The Emacs commands for manipulating sentences and paragraphs are mostly +on Meta keys, so as to be like the word-handling commands. + +@table @kbd +@item M-a +Move back to the beginning of the sentence (@code{backward-sentence}). +@item M-e +Move forward to the end of the sentence (@code{forward-sentence}). +@item M-k +Kill forward to the end of the sentence (@code{kill-sentence}). +@item C-x @key{DEL} +Kill back to the beginning of the sentence (@code{backward-kill-sentence}). +@end table + +@kindex M-a +@kindex M-e +@findex backward-sentence +@findex forward-sentence + The commands @kbd{M-a} and @kbd{M-e} (@code{backward-sentence} and +@code{forward-sentence}) move to the beginning and end of the current +sentence, respectively. They were chosen to resemble @kbd{C-a} and +@kbd{C-e}, which move to the beginning and end of a line. Unlike +them, @kbd{M-a} and @kbd{M-e} move over successive sentences if +repeated. + + Moving backward over a sentence places point just before the first +character of the sentence; moving forward places point right after the +punctuation that ends the sentence. Neither one moves over the +whitespace at the sentence boundary. + +@kindex M-k +@kindex C-x DEL +@findex kill-sentence +@findex backward-kill-sentence + Just as @kbd{C-a} and @kbd{C-e} have a kill command, @kbd{C-k}, to go +with them, so @kbd{M-a} and @kbd{M-e} have a corresponding kill command +@kbd{M-k} (@code{kill-sentence}) which kills from point to the end of +the sentence. With minus one as an argument it kills back to the +beginning of the sentence. Larger arguments serve as a repeat count. +There is also a command, @kbd{C-x @key{DEL}} +(@code{backward-kill-sentence}), for killing back to the beginning of a +sentence. This command is useful when you change your mind in the +middle of composing text. + + The sentence commands assume that you follow the American typist's +convention of putting two spaces at the end of a sentence; they consider +a sentence to end wherever there is a @samp{.}, @samp{?} or @samp{!} +followed by the end of a line or two spaces, with any number of +@samp{)}, @samp{]}, @samp{'}, or @samp{"} characters allowed in between. +A sentence also begins or ends wherever a paragraph begins or ends. +It is useful to follow this convention, because it makes a distinction +between periods that end a sentence and periods that indicate +abbreviations; that enables the Emacs sentence commands to distinguish, +too. These commands do not stop for periods that indicate abbreviations. + +@vindex sentence-end-double-space + If you want to use just one space between sentences, you can set the +variable @code{sentence-end-double-space} to @code{nil} to make the +sentence commands stop for single spaces. However, this mode has a +drawback: there is no way to distinguish between periods that end +sentences and those that indicate abbreviations. For convenient and +reliable editing, we therefore recommend you follow the two-space +convention. The variable @code{sentence-end-double-space} also +affects filling (@pxref{Fill Commands}) in related ways. + +@vindex sentence-end + The variable @code{sentence-end} controls how to recognize the end +of a sentence. If non-@code{nil}, it is a regexp that matches the +last few characters of a sentence, together with the whitespace +following the sentence. If the value is @code{nil}, the default, then +Emacs computes the regexp according to various criteria such as the +value of @code{sentence-end-double-space}. @xref{Regexp Example}, for +a detailed explanation of one of the regular expressions Emacs uses +for this purpose. + +@vindex sentence-end-without-period + Some languages do not use periods to indicate the end of a sentence. +For example, sentences in Thai end with a double space but without a +period. Set the variable @code{sentence-end-without-period} to +@code{t} in such cases. + +@node Paragraphs +@section Paragraphs +@cindex paragraphs +@cindex manipulating paragraphs +@kindex M-@{ +@kindex M-@} +@findex backward-paragraph +@findex forward-paragraph + + The Emacs commands for manipulating paragraphs are also on Meta keys. + +@table @kbd +@item M-@{ +Move back to previous paragraph beginning (@code{backward-paragraph}). +@item M-@} +Move forward to next paragraph end (@code{forward-paragraph}). +@item M-h +Put point and mark around this or next paragraph (@code{mark-paragraph}). +@end table + + @kbd{M-@{} moves to the beginning of the current or previous +paragraph, while @kbd{M-@}} moves to the end of the current or next +paragraph. Blank lines and text-formatter command lines separate +paragraphs and are not considered part of any paragraph. If there is +a blank line before the paragraph, @kbd{M-@{} moves to the blank line, +because that is convenient in practice. + + In Text mode, an indented line is not a paragraph break. If you +want indented lines to have this effect, use Paragraph-Indent Text +mode instead. @xref{Text Mode}. + + In major modes for programs, paragraphs begin and end only at blank +lines. This makes the paragraph commands useful, even though there +are no paragraphs as such in a program. + + When you have set a fill prefix, then paragraphs are delimited by +all lines which don't start with the fill prefix. @xref{Filling}. + +@kindex M-h +@findex mark-paragraph + When you wish to operate on a paragraph, you can use the command +@kbd{M-h} (@code{mark-paragraph}) to set the region around it. Thus, +for example, @kbd{M-h C-w} kills the paragraph around or after point. +The @kbd{M-h} command puts point at the beginning and mark at the end of +the paragraph point was in. In Transient Mark mode, it activates the +mark. If point is between paragraphs (in a run of blank lines, or at a +boundary), the paragraph following point is surrounded by point and +mark. If there are blank lines preceding the first line of the +paragraph, one of these blank lines is included in the region. + +@vindex paragraph-start +@vindex paragraph-separate + The precise definition of a paragraph boundary is controlled by the +variables @code{paragraph-separate} and @code{paragraph-start}. The +value of @code{paragraph-start} is a regexp that should match any line +that either starts or separates paragraphs. The value of +@code{paragraph-separate} is another regexp that should match only lines +that separate paragraphs without being part of any paragraph (for +example, blank lines). Lines that start a new paragraph and are +contained in it must match only @code{paragraph-start}, not +@code{paragraph-separate}. Each regular expression must match at the +left margin. For example, in Fundamental mode, @code{paragraph-start} +is @w{@code{"\f\\|[ \t]*$"}}, and @code{paragraph-separate} is +@w{@code{"[ \t\f]*$"}}. + + Normally it is desirable for page boundaries to separate paragraphs. +The default values of these variables recognize the usual separator for +pages. + +@node Pages +@section Pages + +@cindex pages +@cindex formfeed + Files are often thought of as divided into @dfn{pages} by the +@dfn{formfeed} character (@acronym{ASCII} control-L, octal code 014). +When you print hardcopy for a file, this character forces a page break; +thus, each page of the file goes on a separate page on paper. Most Emacs +commands treat the page-separator character just like any other +character: you can insert it with @kbd{C-q C-l}, and delete it with +@key{DEL}. Thus, you are free to paginate your file or not. However, +since pages are often meaningful divisions of the file, Emacs provides +commands to move over them and operate on them. + +@table @kbd +@item C-x [ +Move point to previous page boundary (@code{backward-page}). +@item C-x ] +Move point to next page boundary (@code{forward-page}). +@item C-x C-p +Put point and mark around this page (or another page) (@code{mark-page}). +@item C-x l +Count the lines in this page (@code{count-lines-page}). +@end table + +@kindex C-x [ +@kindex C-x ] +@findex forward-page +@findex backward-page + The @kbd{C-x [} (@code{backward-page}) command moves point to immediately +after the previous page delimiter. If point is already right after a page +delimiter, it skips that one and stops at the previous one. A numeric +argument serves as a repeat count. The @kbd{C-x ]} (@code{forward-page}) +command moves forward past the next page delimiter. + +@kindex C-x C-p +@findex mark-page + The @kbd{C-x C-p} command (@code{mark-page}) puts point at the +beginning of the current page and the mark at the end. The page +delimiter at the end is included (the mark follows it). The page +delimiter at the front is excluded (point follows it). In Transient +Mark mode, this command activates the mark. + + @kbd{C-x C-p C-w} is a handy way to kill a page to move it +elsewhere. If you move to another page delimiter with @kbd{C-x [} and +@kbd{C-x ]}, then yank the killed page, all the pages will be properly +delimited once again. The reason @kbd{C-x C-p} includes only the +following page delimiter in the region is to ensure that. + + A numeric argument to @kbd{C-x C-p} is used to specify which page to go +to, relative to the current one. Zero means the current page. One means +the next page, and @minus{}1 means the previous one. + +@kindex C-x l +@findex count-lines-page + The @kbd{C-x l} command (@code{count-lines-page}) is good for deciding +where to break a page in two. It displays in the echo area the total number +of lines in the current page, and then divides it up into those preceding +the current line and those following, as in + +@example +Page has 96 (72+25) lines +@end example + +@noindent + Notice that the sum is off by one; this is correct if point is not at the +beginning of a line. + +@vindex page-delimiter + The variable @code{page-delimiter} controls where pages begin. Its +value is a regexp that matches the beginning of a line that separates +pages. The normal value of this variable is @code{"^\f"}, which +matches a formfeed character at the beginning of a line. + +@node Filling +@section Filling Text +@cindex filling text + + @dfn{Filling} text means breaking it up into lines that fit a +specified width. Emacs does filling in two ways. In Auto Fill mode, +inserting text with self-inserting characters also automatically fills +it. There are also explicit fill commands that you can use when editing +text leaves it unfilled. When you edit formatted text, you can specify +a style of filling for each portion of the text (@pxref{Formatted +Text}). + +@menu +* Auto Fill:: Auto Fill mode breaks long lines automatically. +* Fill Commands:: Commands to refill paragraphs and center lines. +* Fill Prefix:: Filling paragraphs that are indented + or in a comment, etc. +* Adaptive Fill:: How Emacs can determine the fill prefix automatically. +* Refill:: Keeping paragraphs filled. +* Longlines:: Editing text with very long lines. +@end menu + +@node Auto Fill +@subsection Auto Fill Mode +@cindex Auto Fill mode +@cindex mode, Auto Fill + + @dfn{Auto Fill} mode is a minor mode in which lines are broken +automatically when they become too wide. Breaking happens only when +you type a @key{SPC} or @key{RET}. + +@table @kbd +@item M-x auto-fill-mode +Enable or disable Auto Fill mode. +@item @key{SPC} +@itemx @key{RET} +In Auto Fill mode, break lines when appropriate. +@end table + +@findex auto-fill-mode + @kbd{M-x auto-fill-mode} turns Auto Fill mode on if it was off, or off +if it was on. With a positive numeric argument it always turns Auto +Fill mode on, and with a negative argument always turns it off. You can +see when Auto Fill mode is in effect by the presence of the word +@samp{Fill} in the mode line, inside the parentheses. Auto Fill mode is +a minor mode which is enabled or disabled for each buffer individually. +@xref{Minor Modes}. + + In Auto Fill mode, lines are broken automatically at spaces when they +get longer than the desired width. Line breaking and rearrangement +takes place only when you type @key{SPC} or @key{RET}. If you wish to +insert a space or newline without permitting line-breaking, type +@kbd{C-q @key{SPC}} or @kbd{C-q C-j} (recall that a newline is really a +control-J). Also, @kbd{C-o} inserts a newline without line breaking. + + Auto Fill mode works well with programming-language modes, because it +indents new lines with @key{TAB}. If a line ending in a comment gets +too long, the text of the comment is split into two comment lines. +Optionally, new comment delimiters are inserted at the end of the first +line and the beginning of the second so that each line is a separate +comment; the variable @code{comment-multi-line} controls the choice +(@pxref{Comments}). + + Adaptive filling (@pxref{Adaptive Fill}) works for Auto Filling as +well as for explicit fill commands. It takes a fill prefix +automatically from the second or first line of a paragraph. + + Auto Fill mode does not refill entire paragraphs; it can break lines but +cannot merge lines. So editing in the middle of a paragraph can result in +a paragraph that is not correctly filled. The easiest way to make the +paragraph properly filled again is usually with the explicit fill commands. +@ifnottex +@xref{Fill Commands}. +@end ifnottex + + Many users like Auto Fill mode and want to use it in all text files. +The section on init files says how to arrange this permanently for yourself. +@xref{Init File}. + +@node Fill Commands +@subsection Explicit Fill Commands + +@table @kbd +@item M-q +Fill current paragraph (@code{fill-paragraph}). +@item C-x f +Set the fill column (@code{set-fill-column}). +@item M-x fill-region +Fill each paragraph in the region (@code{fill-region}). +@item M-x fill-region-as-paragraph +Fill the region, considering it as one paragraph. +@item M-s +Center a line. +@end table + +@kindex M-q +@findex fill-paragraph + To refill a paragraph, use the command @kbd{M-q} +(@code{fill-paragraph}). This operates on the paragraph that point is +inside, or the one after point if point is between paragraphs. +Refilling works by removing all the line-breaks, then inserting new ones +where necessary. When the mark is active in Transient Mark mode, this +command operates on the active region like @code{fill-region}. + +@findex fill-region + To refill many paragraphs, use @kbd{M-x fill-region}, which +finds the paragraphs in the region and fills each of them. + +@findex fill-region-as-paragraph + @kbd{M-q} and @code{fill-region} use the same criteria as @kbd{M-h} +for finding paragraph boundaries (@pxref{Paragraphs}). For more +control, you can use @kbd{M-x fill-region-as-paragraph}, which refills +everything between point and mark as a single paragraph. This command +deletes any blank lines within the region, so separate blocks of text +end up combined into one block. + +@cindex justification + A numeric argument to @kbd{M-q} tells it to @dfn{justify} the text +as well as filling it. This means that extra spaces are inserted to +make the right margin line up exactly at the fill column. To remove +the extra spaces, use @kbd{M-q} with no argument. (Likewise for +@code{fill-region}.) Another way to control justification, and choose +other styles of filling, is with the @code{justification} text +property; see @ref{Format Justification}. + +@kindex M-s @r{(Text mode)} +@cindex centering +@findex center-line + The command @kbd{M-s} (@code{center-line}) centers the current line +within the current fill column. With an argument @var{n}, it centers +@var{n} lines individually and moves past them. This binding is +made by Text mode and is available only in that and related modes +(@pxref{Text Mode}). + +@vindex fill-column +@kindex C-x f +@findex set-fill-column + The maximum line width for filling is in the variable +@code{fill-column}. Altering the value of @code{fill-column} makes it +local to the current buffer; until that time, the default value is in +effect. The default is initially 70. @xref{Locals}. The easiest way +to set @code{fill-column} is to use the command @kbd{C-x f} +(@code{set-fill-column}). With a numeric argument, it uses that as the +new fill column. With just @kbd{C-u} as argument, it sets +@code{fill-column} to the current horizontal position of point. + + Emacs commands normally consider a period followed by two spaces or by +a newline as the end of a sentence; a period followed by just one space +indicates an abbreviation and not the end of a sentence. To preserve +the distinction between these two ways of using a period, the fill +commands do not break a line after a period followed by just one space. + + If the variable @code{sentence-end-double-space} is @code{nil}, the +fill commands expect and leave just one space at the end of a sentence. +Ordinarily this variable is @code{t}, so the fill commands insist on +two spaces for the end of a sentence, as explained above. @xref{Sentences}. + +@vindex colon-double-space + If the variable @code{colon-double-space} is non-@code{nil}, the +fill commands put two spaces after a colon. + +@vindex fill-nobreak-predicate + The variable @code{fill-nobreak-predicate} is a hook (an abnormal +hook, @pxref{Hooks}) specifying additional conditions where +line-breaking is not allowed. Each function is called with no +arguments, with point at a place where Emacs is considering breaking +the line. If a function returns a non-@code{nil} value, then that's +a bad place to break the line. Two standard functions you can use are +@code{fill-single-word-nobreak-p} (don't break after the first word of +a sentence or before the last) and @code{fill-french-nobreak-p} (don't +break after @samp{(} or before @samp{)}, @samp{:} or @samp{?}). + +@node Fill Prefix +@subsection The Fill Prefix + +@cindex fill prefix + To fill a paragraph in which each line starts with a special marker +(which might be a few spaces, giving an indented paragraph), you can use +the @dfn{fill prefix} feature. The fill prefix is a string that Emacs +expects every line to start with, and which is not included in filling. +You can specify a fill prefix explicitly; Emacs can also deduce the +fill prefix automatically (@pxref{Adaptive Fill}). + +@table @kbd +@item C-x . +Set the fill prefix (@code{set-fill-prefix}). +@item M-q +Fill a paragraph using current fill prefix (@code{fill-paragraph}). +@item M-x fill-individual-paragraphs +Fill the region, considering each change of indentation as starting a +new paragraph. +@item M-x fill-nonuniform-paragraphs +Fill the region, considering only paragraph-separator lines as starting +a new paragraph. +@end table + +@kindex C-x . +@findex set-fill-prefix + To specify a fill prefix for the current buffer, move to a line that +starts with the desired prefix, put point at the end of the prefix, +and type @w{@kbd{C-x .}}@: (@code{set-fill-prefix}). (That's a period +after the @kbd{C-x}.) To turn off the fill prefix, specify an empty +prefix: type @w{@kbd{C-x .}}@: with point at the beginning of a line. + + When a fill prefix is in effect, the fill commands remove the fill +prefix from each line of the paragraph before filling and insert it on +each line after filling. (The beginning of the first line of the +paragraph is left unchanged, since often that is intentionally +different.) Auto Fill mode also inserts the fill prefix automatically +when it makes a new line. The @kbd{C-o} command inserts the fill +prefix on new lines it creates, when you use it at the beginning of a +line (@pxref{Blank Lines}). Conversely, the command @kbd{M-^} deletes +the prefix (if it occurs) after the newline that it deletes +(@pxref{Indentation}). + + For example, if @code{fill-column} is 40 and you set the fill prefix +to @samp{;; }, then @kbd{M-q} in the following text + +@example +;; This is an +;; example of a paragraph +;; inside a Lisp-style comment. +@end example + +@noindent +produces this: + +@example +;; This is an example of a paragraph +;; inside a Lisp-style comment. +@end example + + Lines that do not start with the fill prefix are considered to start +paragraphs, both in @kbd{M-q} and the paragraph commands; this gives +good results for paragraphs with hanging indentation (every line +indented except the first one). Lines which are blank or indented once +the prefix is removed also separate or start paragraphs; this is what +you want if you are writing multi-paragraph comments with a comment +delimiter on each line. + +@findex fill-individual-paragraphs + You can use @kbd{M-x fill-individual-paragraphs} to set the fill +prefix for each paragraph automatically. This command divides the +region into paragraphs, treating every change in the amount of +indentation as the start of a new paragraph, and fills each of these +paragraphs. Thus, all the lines in one ``paragraph'' have the same +amount of indentation. That indentation serves as the fill prefix for +that paragraph. + +@findex fill-nonuniform-paragraphs + @kbd{M-x fill-nonuniform-paragraphs} is a similar command that divides +the region into paragraphs in a different way. It considers only +paragraph-separating lines (as defined by @code{paragraph-separate}) as +starting a new paragraph. Since this means that the lines of one +paragraph may have different amounts of indentation, the fill prefix +used is the smallest amount of indentation of any of the lines of the +paragraph. This gives good results with styles that indent a paragraph's +first line more or less that the rest of the paragraph. + +@vindex fill-prefix + The fill prefix is stored in the variable @code{fill-prefix}. Its value +is a string, or @code{nil} when there is no fill prefix. This is a +per-buffer variable; altering the variable affects only the current buffer, +but there is a default value which you can change as well. @xref{Locals}. + + The @code{indentation} text property provides another way to control +the amount of indentation paragraphs receive. @xref{Format Indentation}. + +@node Adaptive Fill +@subsection Adaptive Filling + +@cindex adaptive filling + The fill commands can deduce the proper fill prefix for a paragraph +automatically in certain cases: either whitespace or certain punctuation +characters at the beginning of a line are propagated to all lines of the +paragraph. + + If the paragraph has two or more lines, the fill prefix is taken from +the paragraph's second line, but only if it appears on the first line as +well. + + If a paragraph has just one line, fill commands @emph{may} take a +prefix from that line. The decision is complicated because there are +three reasonable things to do in such a case: + +@itemize @bullet +@item +Use the first line's prefix on all the lines of the paragraph. + +@item +Indent subsequent lines with whitespace, so that they line up under the +text that follows the prefix on the first line, but don't actually copy +the prefix from the first line. + +@item +Don't do anything special with the second and following lines. +@end itemize + + All three of these styles of formatting are commonly used. So the +fill commands try to determine what you would like, based on the prefix +that appears and on the major mode. Here is how. + +@vindex adaptive-fill-first-line-regexp + If the prefix found on the first line matches +@code{adaptive-fill-first-line-regexp}, or if it appears to be a +comment-starting sequence (this depends on the major mode), then the +prefix found is used for filling the paragraph, provided it would not +act as a paragraph starter on subsequent lines. + + Otherwise, the prefix found is converted to an equivalent number of +spaces, and those spaces are used as the fill prefix for the rest of the +lines, provided they would not act as a paragraph starter on subsequent +lines. + + In Text mode, and other modes where only blank lines and page +delimiters separate paragraphs, the prefix chosen by adaptive filling +never acts as a paragraph starter, so it can always be used for filling. + +@vindex adaptive-fill-mode +@vindex adaptive-fill-regexp + The variable @code{adaptive-fill-regexp} determines what kinds of line +beginnings can serve as a fill prefix: any characters at the start of +the line that match this regular expression are used. If you set the +variable @code{adaptive-fill-mode} to @code{nil}, the fill prefix is +never chosen automatically. + +@vindex adaptive-fill-function + You can specify more complex ways of choosing a fill prefix +automatically by setting the variable @code{adaptive-fill-function} to a +function. This function is called with point after the left margin of a +line, and it should return the appropriate fill prefix based on that +line. If it returns @code{nil}, @code{adaptive-fill-regexp} gets +a chance to find a prefix. + +@node Refill +@subsection Refill Mode +@cindex refilling text, word processor style +@cindex modes, Refill +@cindex Refill minor mode + + Refill minor mode provides support for keeping paragraphs filled as +you type or modify them in other ways. It provides an effect similar +to typical word processor behavior. This works by running a +paragraph-filling command at suitable times. + + To toggle the use of Refill mode in the current buffer, type +@kbd{M-x refill-mode}. When you are typing text, only characters +which normally trigger auto filling, like the space character, will +trigger refilling. This is to avoid making it too slow. Apart from +self-inserting characters, other commands which modify the text cause +refilling. + + The current implementation is preliminary and not robust. You can +get better ``line wrapping'' behavior using Longlines mode. +@xref{Longlines}. However, Longlines mode has an important +side-effect: the newlines that it inserts for you are not saved to +disk, so the files that you make with Longlines mode will appear to be +completely unfilled if you edit them without Longlines mode. + +@node Longlines +@subsection Long Lines Mode +@cindex refilling text, word processor style +@cindex modes, Long Lines +@cindex word wrap +@cindex Long Lines minor mode + + Long Lines mode is a minor mode for @dfn{word wrapping}; it lets you +edit ``unfilled'' text files, which Emacs would normally display as a +bunch of extremely long lines. Many text editors, such as those built +into many web browsers, normally do word wrapping. + +@findex longlines-mode + To enable Long Lines mode, type @kbd{M-x longlines-mode}. If the +text is full of long lines, this will ``wrap'' them +immediately---i.e., break up to fit in the window. As you edit the +text, Long Lines mode automatically re-wraps lines by inserting or +deleting @dfn{soft newlines} as necessary (@pxref{Hard and Soft +Newlines}.) These soft newlines won't show up when you save the +buffer into a file, or when you copy the text into the kill ring, +clipboard, or a register. + +@findex longlines-auto-wrap + Word wrapping is @emph{not} the same as ordinary filling +(@pxref{Fill Commands}). It does not contract multiple spaces into a +single space, recognize fill prefixes (@pxref{Fill Prefix}), or +perform adaptive filling (@pxref{Adaptive Fill}). The reason for this +is that a wrapped line is still, conceptually, a single line. Each +soft newline is equivalent to exactly one space in that long line, and +vice versa. However, you can still call filling functions such as +@kbd{M-q}, and these will work as expected, inserting soft newlines +that won't show up on disk or when the text is copied. You can even +rely entirely on the normal fill commands by turning off automatic +line wrapping, with @kbd{C-u M-x longlines-auto-wrap}. To turn +automatic line wrapping back on, type @kbd{M-x longlines-auto-wrap}. + +@findex longlines-show-hard-newlines + Type @kbd{RET} to insert a hard newline, one which automatic +refilling will not remove. If you want to see where all the hard +newlines are, type @kbd{M-x longlines-show-hard-newlines}. This will +mark each hard newline with a special symbol. The same command with a +prefix argument turns this display off. + + Long Lines mode does not change normal text files that are already +filled, since the existing newlines are considered hard newlines. +Before Long Lines can do anything, you need to transform each +paragraph into a long line. One way is to set @code{fill-column} to a +large number (e.g., @kbd{C-u 9999 C-x f}), re-fill all the paragraphs, +and then set @code{fill-column} back to its original value. + +@node Case +@section Case Conversion Commands +@cindex case conversion + + Emacs has commands for converting either a single word or any arbitrary +range of text to upper case or to lower case. + +@table @kbd +@item M-l +Convert following word to lower case (@code{downcase-word}). +@item M-u +Convert following word to upper case (@code{upcase-word}). +@item M-c +Capitalize the following word (@code{capitalize-word}). +@item C-x C-l +Convert region to lower case (@code{downcase-region}). +@item C-x C-u +Convert region to upper case (@code{upcase-region}). +@end table + +@kindex M-l +@kindex M-u +@kindex M-c +@cindex words, case conversion +@cindex converting text to upper or lower case +@cindex capitalizing words +@findex downcase-word +@findex upcase-word +@findex capitalize-word + The word conversion commands are the most useful. @kbd{M-l} +(@code{downcase-word}) converts the word after point to lower case, moving +past it. Thus, repeating @kbd{M-l} converts successive words. +@kbd{M-u} (@code{upcase-word}) converts to all capitals instead, while +@kbd{M-c} (@code{capitalize-word}) puts the first letter of the word +into upper case and the rest into lower case. All these commands convert +several words at once if given an argument. They are especially convenient +for converting a large amount of text from all upper case to mixed case, +because you can move through the text using @kbd{M-l}, @kbd{M-u} or +@kbd{M-c} on each word as appropriate, occasionally using @kbd{M-f} instead +to skip a word. + + When given a negative argument, the word case conversion commands apply +to the appropriate number of words before point, but do not move point. +This is convenient when you have just typed a word in the wrong case: you +can give the case conversion command and continue typing. + + If a word case conversion command is given in the middle of a word, +it applies only to the part of the word which follows point. (This is +comparable to what @kbd{M-d} (@code{kill-word}) does.) With a +negative argument, case conversion applies only to the part of the +word before point. + +@kindex C-x C-l +@kindex C-x C-u +@findex downcase-region +@findex upcase-region + The other case conversion commands are @kbd{C-x C-u} +(@code{upcase-region}) and @kbd{C-x C-l} (@code{downcase-region}), which +convert everything between point and mark to the specified case. Point and +mark do not move. + + The region case conversion commands @code{upcase-region} and +@code{downcase-region} are normally disabled. This means that they ask +for confirmation if you try to use them. When you confirm, you may +enable the command, which means it will not ask for confirmation again. +@xref{Disabling}. + +@node Text Mode +@section Text Mode +@cindex Text mode +@cindex mode, Text +@findex text-mode + + When you edit files of text in a human language, it's more convenient +to use Text mode rather than Fundamental mode. To enter Text mode, type +@kbd{M-x text-mode}. + + In Text mode, only blank lines and page delimiters separate +paragraphs. As a result, paragraphs can be indented, and adaptive +filling determines what indentation to use when filling a paragraph. +@xref{Adaptive Fill}. + +@kindex TAB @r{(Text mode)} + Text mode defines @key{TAB} to run @code{indent-relative} +(@pxref{Indentation}), so that you can conveniently indent a line like +the previous line. + + Text mode turns off the features concerned with comments except when +you explicitly invoke them. It changes the syntax table so that +single-quotes are considered part of words. However, if a word starts +with single-quotes, these are treated as a prefix for purposes such as +capitalization. That is, @kbd{M-c} will convert @samp{'hello'} into +@samp{'Hello'}, as expected. + +@cindex Paragraph-Indent Text mode +@cindex mode, Paragraph-Indent Text +@findex paragraph-indent-text-mode +@findex paragraph-indent-minor-mode + If you indent the first lines of paragraphs, then you should use +Paragraph-Indent Text mode rather than Text mode. In this mode, you +do not need to have blank lines between paragraphs, because the +first-line indentation is sufficient to start a paragraph; however +paragraphs in which every line is indented are not supported. Use +@kbd{M-x paragraph-indent-text-mode} to enter this mode. Use @kbd{M-x +paragraph-indent-minor-mode} to enable an equivalent minor mode in +situations where you can't change the major mode---in mail +composition, for instance. + +@kindex M-TAB @r{(Text mode)} + Text mode, and all the modes based on it, define @kbd{M-@key{TAB}} +as the command @code{ispell-complete-word}, which performs completion +of the partial word in the buffer before point, using the spelling +dictionary as the space of possible words. @xref{Spelling}. If your +window manager defines @kbd{M-@key{TAB}} to switch windows, you can +type @kbd{@key{ESC} @key{TAB}} or @kbd{C-M-i}. + +@vindex text-mode-hook + Entering Text mode runs the hook @code{text-mode-hook}. Other major +modes related to Text mode also run this hook, followed by hooks of +their own; this includes Paragraph-Indent Text mode, Nroff mode, @TeX{} +mode, Outline mode, and Mail mode. Hook functions on +@code{text-mode-hook} can look at the value of @code{major-mode} to see +which of these modes is actually being entered. @xref{Hooks}. + +@ifnottex + Emacs provides two other modes for editing text that is to be passed +through a text formatter to produce fancy formatted printed output. +@xref{Nroff Mode}, for editing input to the formatter nroff. +@xref{TeX Mode,,@TeX{} Mode}, for editing input to the formatter TeX. + + Another mode is used for editing outlines. It allows you to view the +text at various levels of detail. You can view either the outline +headings alone or both headings and text; you can also hide some of the +headings at lower levels from view to make the high level structure more +visible. @xref{Outline Mode}. +@end ifnottex + +@node Outline Mode +@section Outline Mode +@cindex Outline mode +@cindex mode, Outline +@cindex invisible lines + +@findex outline-mode +@findex outline-minor-mode +@vindex outline-minor-mode-prefix + Outline mode is a major mode much like Text mode but intended for +editing outlines. It allows you to make parts of the text temporarily +invisible so that you can see the outline structure. Type @kbd{M-x +outline-mode} to switch to Outline mode as the major mode of the current +buffer. + + When Outline mode makes a line invisible, the line does not appear +on the screen. The screen appears exactly as if the invisible line +were deleted, except that an ellipsis (three periods in a row) appears +at the end of the previous visible line. (Multiple consecutive +invisible lines produce just one ellipsis.) + + Editing commands that operate on lines, such as @kbd{C-n} and +@kbd{C-p}, treat the text of the invisible line as part of the previous +visible line. Killing the ellipsis at the end of a visible line +really kills all the following invisible lines. + + Outline minor mode provides the same commands as the major mode, +Outline mode, but you can use it in conjunction with other major modes. +Type @kbd{M-x outline-minor-mode} to enable the Outline minor mode in +the current buffer. You can also specify this in the text of a file, +with a file local variable of the form @samp{mode: outline-minor} +(@pxref{File Variables}). + +@kindex C-c @@ @r{(Outline minor mode)} + The major mode, Outline mode, provides special key bindings on the +@kbd{C-c} prefix. Outline minor mode provides similar bindings with +@kbd{C-c @@} as the prefix; this is to reduce the conflicts with the +major mode's special commands. (The variable +@code{outline-minor-mode-prefix} controls the prefix used.) + +@vindex outline-mode-hook + Entering Outline mode runs the hook @code{text-mode-hook} followed by +the hook @code{outline-mode-hook} (@pxref{Hooks}). + +@menu +* Format: Outline Format. What the text of an outline looks like. +* Motion: Outline Motion. Special commands for moving through + outlines. +* Visibility: Outline Visibility. Commands to control what is visible. +* Views: Outline Views. Outlines and multiple views. +* Foldout:: Folding means zooming in on outlines. +@end menu + +@node Outline Format +@subsection Format of Outlines + +@cindex heading lines (Outline mode) +@cindex body lines (Outline mode) + Outline mode assumes that the lines in the buffer are of two types: +@dfn{heading lines} and @dfn{body lines}. A heading line represents a +topic in the outline. Heading lines start with one or more stars; the +number of stars determines the depth of the heading in the outline +structure. Thus, a heading line with one star is a major topic; all the +heading lines with two stars between it and the next one-star heading +are its subtopics; and so on. Any line that is not a heading line is a +body line. Body lines belong with the preceding heading line. Here is +an example: + +@example +* Food +This is the body, +which says something about the topic of food. + +** Delicious Food +This is the body of the second-level header. + +** Distasteful Food +This could have +a body too, with +several lines. + +*** Dormitory Food + +* Shelter +Another first-level topic with its header line. +@end example + + A heading line together with all following body lines is called +collectively an @dfn{entry}. A heading line together with all following +deeper heading lines and their body lines is called a @dfn{subtree}. + +@vindex outline-regexp + You can customize the criterion for distinguishing heading lines by +setting the variable @code{outline-regexp}. (The recommended ways to +do this are in a major mode function or with a file local variable.) +Any line whose beginning has a match for this regexp is considered a +heading line. Matches that start within a line (not at the left +margin) do not count. + + The length of the matching text determines the level of the heading; +longer matches make a more deeply nested level. Thus, for example, if +a text formatter has commands @samp{@@chapter}, @samp{@@section} and +@samp{@@subsection} to divide the document into chapters and sections, +you could make those lines count as heading lines by setting +@code{outline-regexp} to @samp{"@@chap\\|@@\\(sub\\)*section"}. Note +the trick: the two words @samp{chapter} and @samp{section} are equally +long, but by defining the regexp to match only @samp{chap} we ensure +that the length of the text matched on a chapter heading is shorter, +so that Outline mode will know that sections are contained in +chapters. This works as long as no other command starts with +@samp{@@chap}. + +@vindex outline-level + You can explicitly specify a rule for calculating the level of a +heading line by setting the variable @code{outline-level}. The value +of @code{outline-level} should be a function that takes no arguments +and returns the level of the current heading. The recommended ways to +set this variable are in a major mode command or with a file local +variable. + +@node Outline Motion +@subsection Outline Motion Commands + + Outline mode provides special motion commands that move backward and +forward to heading lines. + +@table @kbd +@item C-c C-n +Move point to the next visible heading line +(@code{outline-next-visible-heading}). +@item C-c C-p +Move point to the previous visible heading line +(@code{outline-previous-visible-heading}). +@item C-c C-f +Move point to the next visible heading line at the same level +as the one point is on (@code{outline-forward-same-level}). +@item C-c C-b +Move point to the previous visible heading line at the same level +(@code{outline-backward-same-level}). +@item C-c C-u +Move point up to a lower-level (more inclusive) visible heading line +(@code{outline-up-heading}). +@end table + +@findex outline-next-visible-heading +@findex outline-previous-visible-heading +@kindex C-c C-n @r{(Outline mode)} +@kindex C-c C-p @r{(Outline mode)} + @kbd{C-c C-n} (@code{outline-next-visible-heading}) moves down to the next +heading line. @kbd{C-c C-p} (@code{outline-previous-visible-heading}) moves +similarly backward. Both accept numeric arguments as repeat counts. The +names emphasize that invisible headings are skipped, but this is not really +a special feature. All editing commands that look for lines ignore the +invisible lines automatically. + +@findex outline-up-heading +@findex outline-forward-same-level +@findex outline-backward-same-level +@kindex C-c C-f @r{(Outline mode)} +@kindex C-c C-b @r{(Outline mode)} +@kindex C-c C-u @r{(Outline mode)} + More powerful motion commands understand the level structure of headings. +@kbd{C-c C-f} (@code{outline-forward-same-level}) and +@kbd{C-c C-b} (@code{outline-backward-same-level}) move from one +heading line to another visible heading at the same depth in +the outline. @kbd{C-c C-u} (@code{outline-up-heading}) moves +backward to another heading that is less deeply nested. + +@node Outline Visibility +@subsection Outline Visibility Commands + + The other special commands of outline mode are used to make lines visible +or invisible. Their names all start with @code{hide} or @code{show}. +Most of them fall into pairs of opposites. They are not undoable; instead, +you can undo right past them. Making lines visible or invisible is simply +not recorded by the undo mechanism. + + Many of these commands act on the ``current'' heading line. If +point is on a heading line, that is the current heading line; if point +is on a body line, the current heading line is the nearest preceding +header line. + +@table @kbd +@item C-c C-c +Make the current heading line's body invisible (@code{hide-entry}). +@item C-c C-e +Make the current heading line's body visible (@code{show-entry}). +@item C-c C-d +Make everything under the current heading invisible, not including the +heading itself (@code{hide-subtree}). +@item C-c C-s +Make everything under the current heading visible, including body, +subheadings, and their bodies (@code{show-subtree}). +@item C-c C-l +Make the body of the current heading line, and of all its subheadings, +invisible (@code{hide-leaves}). +@item C-c C-k +Make all subheadings of the current heading line, at all levels, +visible (@code{show-branches}). +@item C-c C-i +Make immediate subheadings (one level down) of the current heading +line visible (@code{show-children}). +@item C-c C-t +Make all body lines in the buffer invisible (@code{hide-body}). +@item C-c C-a +Make all lines in the buffer visible (@code{show-all}). +@item C-c C-q +Hide everything except the top @var{n} levels of heading lines +(@code{hide-sublevels}). +@item C-c C-o +Hide everything except for the heading or body that point is in, plus +the headings leading up from there to the top level of the outline +(@code{hide-other}). +@end table + +@findex hide-entry +@findex show-entry +@kindex C-c C-c @r{(Outline mode)} +@kindex C-c C-e @r{(Outline mode)} + Two commands that are exact opposites are @kbd{C-c C-c} +(@code{hide-entry}) and @kbd{C-c C-e} (@code{show-entry}). They apply +to the body lines directly following the current heading line. +Subheadings and their bodies are not affected. + +@findex hide-subtree +@findex show-subtree +@kindex C-c C-s @r{(Outline mode)} +@kindex C-c C-d @r{(Outline mode)} +@cindex subtree (Outline mode) + Two more powerful opposites are @kbd{C-c C-d} (@code{hide-subtree}) +and @kbd{C-c C-s} (@code{show-subtree}). Both apply to the current +heading line's @dfn{subtree}: its body, all its subheadings, both +direct and indirect, and all of their bodies. In other words, the +subtree contains everything following the current heading line, up to +and not including the next heading of the same or higher rank. + +@findex hide-leaves +@findex show-branches +@kindex C-c C-l @r{(Outline mode)} +@kindex C-c C-k @r{(Outline mode)} + Intermediate between a visible subtree and an invisible one is having +all the subheadings visible but none of the body. There are two +commands for doing this, depending on whether you want to hide the +bodies or make the subheadings visible. They are @kbd{C-c C-l} +(@code{hide-leaves}) and @kbd{C-c C-k} (@code{show-branches}). + +@kindex C-c C-i @r{(Outline mode)} +@findex show-children + A little weaker than @code{show-branches} is @kbd{C-c C-i} +(@code{show-children}). It makes just the direct subheadings +visible---those one level down. Deeper subheadings remain invisible, if +they were invisible. + +@findex hide-body +@findex show-all +@kindex C-c C-t @r{(Outline mode)} +@kindex C-c C-a @r{(Outline mode)} + Two commands have a blanket effect on the whole file. @kbd{C-c C-t} +(@code{hide-body}) makes all body lines invisible, so that you see just +the outline structure (as a special exception, it will not hide lines +at the top of the file, preceding the first header line, even though +these are technically body lines). @kbd{C-c C-a} (@code{show-all}) +makes all lines visible. These commands can be thought of as a pair +of opposites even though @kbd{C-c C-a} applies to more than just body +lines. + +@findex hide-sublevels +@kindex C-c C-q @r{(Outline mode)} + The command @kbd{C-c C-q} (@code{hide-sublevels}) hides all but the +top level headings. With a numeric argument @var{n}, it hides everything +except the top @var{n} levels of heading lines. + +@findex hide-other +@kindex C-c C-o @r{(Outline mode)} + The command @kbd{C-c C-o} (@code{hide-other}) hides everything except +the heading and body text that point is in, plus its parents (the headers +leading up from there to top level in the outline) and the top level +headings. + +@findex reveal-mode + When incremental search finds text that is hidden by Outline mode, +it makes that part of the buffer visible. If you exit the search +at that position, the text remains visible. You can also +automatically make text visible as you navigate in it by using +@kbd{M-x reveal-mode}. + +@node Outline Views +@subsection Viewing One Outline in Multiple Views + +@cindex multiple views of outline +@cindex views of an outline +@cindex outline with multiple views +@cindex indirect buffers and outlines + You can display two views of a single outline at the same time, in +different windows. To do this, you must create an indirect buffer using +@kbd{M-x make-indirect-buffer}. The first argument of this command is +the existing outline buffer name, and its second argument is the name to +use for the new indirect buffer. @xref{Indirect Buffers}. + + Once the indirect buffer exists, you can display it in a window in the +normal fashion, with @kbd{C-x 4 b} or other Emacs commands. The Outline +mode commands to show and hide parts of the text operate on each buffer +independently; as a result, each buffer can have its own view. If you +want more than two views on the same outline, create additional indirect +buffers. + +@node Foldout +@subsection Folding Editing + +@cindex folding editing + The Foldout package extends Outline mode and Outline minor mode with +``folding'' commands. The idea of folding is that you zoom in on a +nested portion of the outline, while hiding its relatives at higher +levels. + + Consider an Outline mode buffer with all the text and subheadings under +level-1 headings hidden. To look at what is hidden under one of these +headings, you could use @kbd{C-c C-e} (@kbd{M-x show-entry}) to expose +the body, or @kbd{C-c C-i} to expose the child (level-2) headings. + +@kindex C-c C-z +@findex foldout-zoom-subtree + With Foldout, you use @kbd{C-c C-z} (@kbd{M-x foldout-zoom-subtree}). +This exposes the body and child subheadings, and narrows the buffer so +that only the @w{level-1} heading, the body and the level-2 headings are +visible. Now to look under one of the level-2 headings, position the +cursor on it and use @kbd{C-c C-z} again. This exposes the level-2 body +and its level-3 child subheadings and narrows the buffer again. Zooming +in on successive subheadings can be done as much as you like. A string +in the mode line shows how deep you've gone. + + When zooming in on a heading, to see only the child subheadings specify +a numeric argument: @kbd{C-u C-c C-z}. The number of levels of children +can be specified too (compare @kbd{M-x show-children}), e.g.@: @kbd{M-2 +C-c C-z} exposes two levels of child subheadings. Alternatively, the +body can be specified with a negative argument: @kbd{M-- C-c C-z}. The +whole subtree can be expanded, similarly to @kbd{C-c C-s} (@kbd{M-x +show-subtree}), by specifying a zero argument: @kbd{M-0 C-c C-z}. + + While you're zoomed in, you can still use Outline mode's exposure and +hiding functions without disturbing Foldout. Also, since the buffer is +narrowed, ``global'' editing actions will only affect text under the +zoomed-in heading. This is useful for restricting changes to a +particular chapter or section of your document. + +@kindex C-c C-x +@findex foldout-exit-fold + To unzoom (exit) a fold, use @kbd{C-c C-x} (@kbd{M-x foldout-exit-fold}). +This hides all the text and subheadings under the top-level heading and +returns you to the previous view of the buffer. Specifying a numeric +argument exits that many levels of folds. Specifying a zero argument +exits all folds. + + To cancel the narrowing of a fold without hiding the text and +subheadings, specify a negative argument. For example, @kbd{M--2 C-c +C-x} exits two folds and leaves the text and subheadings exposed. + + Foldout mode also provides mouse commands for entering and exiting +folds, and for showing and hiding text: + +@table @asis +@item @kbd{C-M-Mouse-1} zooms in on the heading clicked on +@itemize @asis +@item +single click: expose body. +@item +double click: expose subheadings. +@item +triple click: expose body and subheadings. +@item +quad click: expose entire subtree. +@end itemize +@item @kbd{C-M-Mouse-2} exposes text under the heading clicked on +@itemize @asis +@item +single click: expose body. +@item +double click: expose subheadings. +@item +triple click: expose body and subheadings. +@item +quad click: expose entire subtree. +@end itemize +@item @kbd{C-M-Mouse-3} hides text under the heading clicked on or exits fold +@itemize @asis +@item +single click: hide subtree. +@item +double click: exit fold and hide text. +@item +triple click: exit fold without hiding text. +@item +quad click: exit all folds and hide text. +@end itemize +@end table + +@vindex foldout-mouse-modifiers + You can specify different modifier keys (instead of +@kbd{Control-Meta-}) by setting @code{foldout-mouse-modifiers}; but if +you have already loaded the @file{foldout.el} library, you must reload +it in order for this to take effect. + + To use the Foldout package, you can type @kbd{M-x load-library +@key{RET} foldout @key{RET}}; or you can arrange for to do that +automatically by putting this in your @file{.emacs} file: + +@example +(eval-after-load "outline" '(require 'foldout)) +@end example + +@node TeX Mode +@section @TeX{} Mode +@cindex @TeX{} mode +@cindex La@TeX{} mode +@cindex Sli@TeX{} mode +@cindex Doc@TeX{} mode +@cindex mode, @TeX{} +@cindex mode, La@TeX{} +@cindex mode, Sli@TeX{} +@cindex mode, Doc@TeX{} +@findex tex-mode +@findex plain-tex-mode +@findex latex-mode +@findex slitex-mode +@findex doctex-mode + + @TeX{} is a powerful text formatter written by Donald Knuth; it is +also free software, like GNU Emacs. La@TeX{} is a simplified input +format for @TeX{}, implemented by @TeX{} macros; it comes with @TeX{}. +Sli@TeX{} is a special form of La@TeX{}.@footnote{Sli@TeX{} is +obsoleted by the @samp{slides} document class and other alternative +packages in recent La@TeX{} versions.} Doc@TeX{} (@file{.dtx}) is a +special file format in which the La@TeX{} sources are written, +combining sources with documentation. + + Emacs has a special @TeX{} mode for editing @TeX{} input files. +It provides facilities for checking the balance of delimiters and for +invoking @TeX{} on all or part of the file. + +@vindex tex-default-mode + @TeX{} mode has four variants: Plain @TeX{} mode, La@TeX{} mode, +Sli@TeX{} mode, and Doc@TeX{} mode (these distinct major modes differ +only slightly). They are designed for editing the four different +formats. The command @kbd{M-x tex-mode} looks at the contents of the +buffer to determine whether the contents appear to be either La@TeX{} +input, Sli@TeX{}, or Doc@TeX{} input; if so, it selects the +appropriate mode. If the file contents do not appear to be La@TeX{}, +Sli@TeX{} or Doc@TeX{}, it selects Plain @TeX{} mode. If the contents +are insufficient to determine this, the variable +@code{tex-default-mode} controls which mode is used. + + When @kbd{M-x tex-mode} does not guess right, you can use the commands +@kbd{M-x plain-tex-mode}, @kbd{M-x latex-mode}, @kbd{M-x slitex-mode}, +and @kbd{doctex-mode} to select explicitly the particular variants of +@TeX{} mode. + +@menu +* Editing: TeX Editing. Special commands for editing in TeX mode. +* LaTeX: LaTeX Editing. Additional commands for LaTeX input files. +* Printing: TeX Print. Commands for printing part of a file with TeX. +* Misc: TeX Misc. Customization of TeX mode, and related features. +@end menu + +@node TeX Editing +@subsection @TeX{} Editing Commands + + Here are the special commands provided in @TeX{} mode for editing the +text of the file. + +@table @kbd +@item " +Insert, according to context, either @samp{``} or @samp{"} or +@samp{''} (@code{tex-insert-quote}). +@item C-j +Insert a paragraph break (two newlines) and check the previous +paragraph for unbalanced braces or dollar signs +(@code{tex-terminate-paragraph}). +@item M-x tex-validate-region +Check each paragraph in the region for unbalanced braces or dollar signs. +@item C-c @{ +Insert @samp{@{@}} and position point between them (@code{tex-insert-braces}). +@item C-c @} +Move forward past the next unmatched close brace (@code{up-list}). +@end table + +@findex tex-insert-quote +@kindex " @r{(@TeX{} mode)} + In @TeX{}, the character @samp{"} is not normally used; we use +@samp{``} to start a quotation and @samp{''} to end one. To make +editing easier under this formatting convention, @TeX{} mode overrides +the normal meaning of the key @kbd{"} with a command that inserts a pair +of single-quotes or backquotes (@code{tex-insert-quote}). To be +precise, this command inserts @samp{``} after whitespace or an open +brace, @samp{"} after a backslash, and @samp{''} after any other +character. + + If you need the character @samp{"} itself in unusual contexts, use +@kbd{C-q} to insert it. Also, @kbd{"} with a numeric argument always +inserts that number of @samp{"} characters. You can turn off the +feature of @kbd{"} expansion by eliminating that binding in the local +map (@pxref{Key Bindings}). + + In @TeX{} mode, @samp{$} has a special syntax code which attempts to +understand the way @TeX{} math mode delimiters match. When you insert a +@samp{$} that is meant to exit math mode, the position of the matching +@samp{$} that entered math mode is displayed for a second. This is the +same feature that displays the open brace that matches a close brace that +is inserted. However, there is no way to tell whether a @samp{$} enters +math mode or leaves it; so when you insert a @samp{$} that enters math +mode, the previous @samp{$} position is shown as if it were a match, even +though they are actually unrelated. + +@findex tex-insert-braces +@kindex C-c @{ @r{(@TeX{} mode)} +@findex up-list +@kindex C-c @} @r{(@TeX{} mode)} + @TeX{} uses braces as delimiters that must match. Some users prefer +to keep braces balanced at all times, rather than inserting them +singly. Use @kbd{C-c @{} (@code{tex-insert-braces}) to insert a pair of +braces. It leaves point between the two braces so you can insert the +text that belongs inside. Afterward, use the command @kbd{C-c @}} +(@code{up-list}) to move forward past the close brace. + +@findex tex-validate-region +@findex tex-terminate-paragraph +@kindex C-j @r{(@TeX{} mode)} + There are two commands for checking the matching of braces. @kbd{C-j} +(@code{tex-terminate-paragraph}) checks the paragraph before point, and +inserts two newlines to start a new paragraph. It outputs a message in +the echo area if any mismatch is found. @kbd{M-x tex-validate-region} +checks a region, paragraph by paragraph. The errors are listed in the +@samp{*Occur*} buffer, and you can use @kbd{C-c C-c} or @kbd{Mouse-2} in +that buffer to go to a particular mismatch. + + Note that Emacs commands count square brackets and parentheses in +@TeX{} mode, not just braces. This is not strictly correct for the +purpose of checking @TeX{} syntax. However, parentheses and square +brackets are likely to be used in text as matching delimiters and it is +useful for the various motion commands and automatic match display to +work with them. + +@node LaTeX Editing +@subsection La@TeX{} Editing Commands + + La@TeX{} mode, and its variant, Sli@TeX{} mode, provide a few extra +features not applicable to plain @TeX{}. + +@table @kbd +@item C-c C-o +Insert @samp{\begin} and @samp{\end} for La@TeX{} block and position +point on a line between them (@code{tex-latex-block}). +@item C-c C-e +Close the innermost La@TeX{} block not yet closed +(@code{tex-close-latex-block}). +@end table + +@findex tex-latex-block +@kindex C-c C-o @r{(La@TeX{} mode)} +@vindex latex-block-names + In La@TeX{} input, @samp{\begin} and @samp{\end} commands are used to +group blocks of text. To insert a @samp{\begin} and a matching +@samp{\end} (on a new line following the @samp{\begin}), use @kbd{C-c +C-o} (@code{tex-latex-block}). A blank line is inserted between the +two, and point is left there. You can use completion when you enter the +block type; to specify additional block type names beyond the standard +list, set the variable @code{latex-block-names}. For example, here's +how to add @samp{theorem}, @samp{corollary}, and @samp{proof}: + +@example +(setq latex-block-names '("theorem" "corollary" "proof")) +@end example + +@findex tex-close-latex-block +@kindex C-c C-e @r{(La@TeX{} mode)} + In La@TeX{} input, @samp{\begin} and @samp{\end} commands must +balance. You can use @kbd{C-c C-e} (@code{tex-close-latex-block}) to +insert automatically a matching @samp{\end} to match the last unmatched +@samp{\begin}. It indents the @samp{\end} to match the corresponding +@samp{\begin}. It inserts a newline after @samp{\end} if point is at +the beginning of a line. + +@node TeX Print +@subsection @TeX{} Printing Commands + + You can invoke @TeX{} as an inferior of Emacs on either the entire +contents of the buffer or just a region at a time. Running @TeX{} in +this way on just one chapter is a good way to see what your changes +look like without taking the time to format the entire file. + +@table @kbd +@item C-c C-r +Invoke @TeX{} on the current region, together with the buffer's header +(@code{tex-region}). +@item C-c C-b +Invoke @TeX{} on the entire current buffer (@code{tex-buffer}). +@item C-c @key{TAB} +Invoke Bib@TeX{} on the current file (@code{tex-bibtex-file}). +@item C-c C-f +Invoke @TeX{} on the current file (@code{tex-file}). +@item C-c C-l +Recenter the window showing output from the inferior @TeX{} so that +the last line can be seen (@code{tex-recenter-output-buffer}). +@item C-c C-k +Kill the @TeX{} subprocess (@code{tex-kill-job}). +@item C-c C-p +Print the output from the last @kbd{C-c C-r}, @kbd{C-c C-b}, or @kbd{C-c +C-f} command (@code{tex-print}). +@item C-c C-v +Preview the output from the last @kbd{C-c C-r}, @kbd{C-c C-b}, or @kbd{C-c +C-f} command (@code{tex-view}). +@item C-c C-q +Show the printer queue (@code{tex-show-print-queue}). +@item C-c C-c +Invoke some other compilation command on the entire current buffer +(@code{tex-compile}). +@end table + +@findex tex-buffer +@kindex C-c C-b @r{(@TeX{} mode)} +@findex tex-print +@kindex C-c C-p @r{(@TeX{} mode)} +@findex tex-view +@kindex C-c C-v @r{(@TeX{} mode)} +@findex tex-show-print-queue +@kindex C-c C-q @r{(@TeX{} mode)} + You can pass the current buffer through an inferior @TeX{} by means of +@kbd{C-c C-b} (@code{tex-buffer}). The formatted output appears in a +temporary file; to print it, type @kbd{C-c C-p} (@code{tex-print}). +Afterward, you can use @kbd{C-c C-q} (@code{tex-show-print-queue}) to +view the progress of your output towards being printed. If your terminal +has the ability to display @TeX{} output files, you can preview the +output on the terminal with @kbd{C-c C-v} (@code{tex-view}). + +@cindex @env{TEXINPUTS} environment variable +@vindex tex-directory + You can specify the directory to use for running @TeX{} by setting the +variable @code{tex-directory}. @code{"."} is the default value. If +your environment variable @env{TEXINPUTS} contains relative directory +names, or if your files contains @samp{\input} commands with relative +file names, then @code{tex-directory} @emph{must} be @code{"."} or you +will get the wrong results. Otherwise, it is safe to specify some other +directory, such as @code{"/tmp"}. + +@vindex tex-run-command +@vindex latex-run-command +@vindex slitex-run-command +@vindex tex-dvi-print-command +@vindex tex-dvi-view-command +@vindex tex-show-queue-command + If you want to specify which shell commands are used in the inferior @TeX{}, +you can do so by setting the values of the variables @code{tex-run-command}, +@code{latex-run-command}, @code{slitex-run-command}, +@code{tex-dvi-print-command}, @code{tex-dvi-view-command}, and +@code{tex-show-queue-command}. The default values may +(or may not) be appropriate for your system. + + Normally, the file name given to these commands comes at the end of +the command string; for example, @samp{latex @var{filename}}. In some +cases, however, the file name needs to be embedded in the command; an +example is when you need to provide the file name as an argument to one +command whose output is piped to another. You can specify where to put +the file name with @samp{*} in the command string. For example, + +@example +(setq tex-dvi-print-command "dvips -f * | lpr") +@end example + +@findex tex-kill-job +@kindex C-c C-k @r{(@TeX{} mode)} +@findex tex-recenter-output-buffer +@kindex C-c C-l @r{(@TeX{} mode)} + The terminal output from @TeX{}, including any error messages, appears +in a buffer called @samp{*tex-shell*}. If @TeX{} gets an error, you can +switch to this buffer and feed it input (this works as in Shell mode; +@pxref{Interactive Shell}). Without switching to this buffer you can +scroll it so that its last line is visible by typing @kbd{C-c +C-l}. + + Type @kbd{C-c C-k} (@code{tex-kill-job}) to kill the @TeX{} process if +you see that its output is no longer useful. Using @kbd{C-c C-b} or +@kbd{C-c C-r} also kills any @TeX{} process still running. + +@findex tex-region +@kindex C-c C-r @r{(@TeX{} mode)} + You can also pass an arbitrary region through an inferior @TeX{} by typing +@kbd{C-c C-r} (@code{tex-region}). This is tricky, however, because most files +of @TeX{} input contain commands at the beginning to set parameters and +define macros, without which no later part of the file will format +correctly. To solve this problem, @kbd{C-c C-r} allows you to designate a +part of the file as containing essential commands; it is included before +the specified region as part of the input to @TeX{}. The designated part +of the file is called the @dfn{header}. + +@cindex header (@TeX{} mode) + To indicate the bounds of the header in Plain @TeX{} mode, you insert two +special strings in the file. Insert @samp{%**start of header} before the +header, and @samp{%**end of header} after it. Each string must appear +entirely on one line, but there may be other text on the line before or +after. The lines containing the two strings are included in the header. +If @samp{%**start of header} does not appear within the first 100 lines of +the buffer, @kbd{C-c C-r} assumes that there is no header. + + In La@TeX{} mode, the header begins with @samp{\documentclass} or +@samp{\documentstyle} and ends with @samp{\begin@{document@}}. These +are commands that La@TeX{} requires you to use in any case, so nothing +special needs to be done to identify the header. + +@findex tex-file +@kindex C-c C-f @r{(@TeX{} mode)} + The commands (@code{tex-buffer}) and (@code{tex-region}) do all of their +work in a temporary directory, and do not have available any of the auxiliary +files needed by @TeX{} for cross-references; these commands are generally +not suitable for running the final copy in which all of the cross-references +need to be correct. + + When you want the auxiliary files for cross references, use @kbd{C-c +C-f} (@code{tex-file}) which runs @TeX{} on the current buffer's file, +in that file's directory. Before running @TeX{}, it offers to save any +modified buffers. Generally, you need to use (@code{tex-file}) twice to +get the cross-references right. + +@vindex tex-start-options + The value of the variable @code{tex-start-options} specifies +options for the @TeX{} run. + +@vindex tex-start-commands + The value of the variable @code{tex-start-commands} specifies @TeX{} +commands for starting @TeX{}. The default value causes @TeX{} to run +in nonstop mode. To run @TeX{} interactively, set the variable to +@code{""}. + +@vindex tex-main-file + Large @TeX{} documents are often split into several files---one main +file, plus subfiles. Running @TeX{} on a subfile typically does not +work; you have to run it on the main file. In order to make +@code{tex-file} useful when you are editing a subfile, you can set the +variable @code{tex-main-file} to the name of the main file. Then +@code{tex-file} runs @TeX{} on that file. + + The most convenient way to use @code{tex-main-file} is to specify it +in a local variable list in each of the subfiles. @xref{File +Variables}. + +@findex tex-bibtex-file +@kindex C-c TAB @r{(@TeX{} mode)} +@vindex tex-bibtex-command + For La@TeX{} files, you can use Bib@TeX{} to process the auxiliary +file for the current buffer's file. Bib@TeX{} looks up bibliographic +citations in a data base and prepares the cited references for the +bibliography section. The command @kbd{C-c @key{TAB}} +(@code{tex-bibtex-file}) runs the shell command +(@code{tex-bibtex-command}) to produce a @samp{.bbl} file for the +current buffer's file. Generally, you need to do @kbd{C-c C-f} +(@code{tex-file}) once to generate the @samp{.aux} file, then do +@kbd{C-c @key{TAB}} (@code{tex-bibtex-file}), and then repeat @kbd{C-c C-f} +(@code{tex-file}) twice more to get the cross-references correct. + +@findex tex-compile +@kindex C-c C-c @r{(@TeX{} mode)} + To invoke some other compilation program on the current @TeX{} +buffer, type @kbd{C-c C-c} (@code{tex-compile}). This command knows +how to pass arguments to many common programs, including +@file{pdflatex}, @file{yap}, @file{xdvi}, and @file{dvips}. You can +select your desired compilation program using the standard completion +keys (@pxref{Completion}). + +@node TeX Misc +@subsection @TeX{} Mode Miscellany + +@vindex tex-shell-hook +@vindex tex-mode-hook +@vindex latex-mode-hook +@vindex slitex-mode-hook +@vindex plain-tex-mode-hook + Entering any variant of @TeX{} mode runs the hooks +@code{text-mode-hook} and @code{tex-mode-hook}. Then it runs either +@code{plain-tex-mode-hook}, @code{latex-mode-hook}, or +@code{slitex-mode-hook}, whichever is appropriate. Starting the +@TeX{} shell runs the hook @code{tex-shell-hook}. @xref{Hooks}. + +@findex iso-iso2tex +@findex iso-tex2iso +@findex iso-iso2gtex +@findex iso-gtex2iso +@cindex Latin-1 @TeX{} encoding +@cindex @TeX{} encoding + The commands @kbd{M-x iso-iso2tex}, @kbd{M-x iso-tex2iso}, @kbd{M-x +iso-iso2gtex} and @kbd{M-x iso-gtex2iso} can be used to convert +between Latin-1 encoded files and @TeX{}-encoded equivalents. +@ignore +@c Too cryptic to be useful, too cryptic for me to make it better -- rms. + They +are included by default in the @code{format-alist} variable, so they +can be used with @kbd{M-x format-find-file}, for instance. +@end ignore + +@ignore @c Not worth documenting if it is only for Czech -- rms. +@findex tildify-buffer +@findex tildify-region +@cindex ties, @TeX{}, inserting +@cindex hard spaces, @TeX{}, inserting + The commands @kbd{M-x tildify-buffer} and @kbd{M-x tildify-region} +insert @samp{~} (@dfn{tie}) characters where they are conventionally +required. This is set up for Czech---customize the group +@samp{tildify} for other languages or for other sorts of markup. +@end ignore + +@cindex Ref@TeX{} package +@cindex references, La@TeX{} +@cindex La@TeX{} references + For managing all kinds of references for La@TeX{}, you can use +Ref@TeX{}. @inforef{Top,, reftex}. + +@node HTML Mode +@section SGML, XML, and HTML Modes + + The major modes for SGML and HTML include indentation support and +commands to operate on tags. This section describes the special +commands of these modes. (HTML mode is a slightly customized variant +of SGML mode.) + +@table @kbd +@item C-c C-n +@kindex C-c C-n @r{(SGML mode)} +@findex sgml-name-char +Interactively specify a special character and insert the SGML +@samp{&}-command for that character. + +@item C-c C-t +@kindex C-c C-t @r{(SGML mode)} +@findex sgml-tag +Interactively specify a tag and its attributes (@code{sgml-tag}). +This command asks you for a tag name and for the attribute values, +then inserts both the opening tag and the closing tag, leaving point +between them. + +With a prefix argument @var{n}, the command puts the tag around the +@var{n} words already present in the buffer after point. With +@minus{}1 as argument, it puts the tag around the region. (In +Transient Mark mode, it does this whenever a region is active.) + +@item C-c C-a +@kindex C-c C-a @r{(SGML mode)} +@findex sgml-attributes +Interactively insert attribute values for the current tag +(@code{sgml-attributes}). + +@item C-c C-f +@kindex C-c C-f @r{(SGML mode)} +@findex sgml-skip-tag-forward +Skip across a balanced tag group (which extends from an opening tag +through its corresponding closing tag) (@code{sgml-skip-tag-forward}). +A numeric argument acts as a repeat count. + +@item C-c C-b +@kindex C-c C-b @r{(SGML mode)} +@findex sgml-skip-tag-backward +Skip backward across a balanced tag group (which extends from an +opening tag through its corresponding closing tag) +(@code{sgml-skip-tag-forward}). A numeric argument acts as a repeat +count. + +@item C-c C-d +@kindex C-c C-d @r{(SGML mode)} +@findex sgml-delete-tag +Delete the tag at or after point, and delete the matching tag too +(@code{sgml-delete-tag}). If the tag at or after point is an opening +tag, delete the closing tag too; if it is a closing tag, delete the +opening tag too. + +@item C-c ? @var{tag} @key{RET} +@kindex C-c ? @r{(SGML mode)} +@findex sgml-tag-help +Display a description of the meaning of tag @var{tag} +(@code{sgml-tag-help}). If the argument @var{tag} is empty, describe +the tag at point. + +@item C-c / +@kindex C-c / @r{(SGML mode)} +@findex sgml-close-tag +Insert a close tag for the innermost unterminated tag +(@code{sgml-close-tag}). If called from within a tag or a comment, +close this element instead of inserting a close tag. + +@item C-c 8 +@kindex C-c 8 @r{(SGML mode)} +@findex sgml-name-8bit-mode +Toggle a minor mode in which Latin-1 characters insert the +corresponding SGML commands that stand for them, instead of the +characters themselves (@code{sgml-name-8bit-mode}). + +@item C-c C-v +@kindex C-c C-v @r{(SGML mode)} +@findex sgml-validate +Run a shell command (which you must specify) to validate the current +buffer as SGML (@code{sgml-validate}). + +@item C-c TAB +@kindex C-c TAB @r{(SGML mode)} +@findex sgml-tags-invisible +Toggle the visibility of existing tags in the buffer. This can be +used as a cheap preview. +@end table + +@vindex sgml-xml-mode + SGML mode and HTML mode support XML also. In XML, every opening tag +must have an explicit closing tag. When @code{sgml-xml-mode} is +non-@code{nil}, SGML mode and HTML mode always insert explicit +closing tags. When you visit a file, these modes determine from the +file contents whether it is XML or not, and set @code{sgml-xml-mode} +accordingly, so that they do the right thing for the file in either +case. + +@node Nroff Mode +@section Nroff Mode + +@cindex nroff +@findex nroff-mode + Nroff mode is a mode like Text mode but modified to handle nroff commands +present in the text. Invoke @kbd{M-x nroff-mode} to enter this mode. It +differs from Text mode in only a few ways. All nroff command lines are +considered paragraph separators, so that filling will never garble the +nroff commands. Pages are separated by @samp{.bp} commands. Comments +start with backslash-doublequote. Also, three special commands are +provided that are not in Text mode: + +@findex forward-text-line +@findex backward-text-line +@findex count-text-lines +@kindex M-n @r{(Nroff mode)} +@kindex M-p @r{(Nroff mode)} +@kindex M-? @r{(Nroff mode)} +@table @kbd +@item M-n +Move to the beginning of the next line that isn't an nroff command +(@code{forward-text-line}). An argument is a repeat count. +@item M-p +Like @kbd{M-n} but move up (@code{backward-text-line}). +@item M-? +Displays in the echo area the number of text lines (lines that are not +nroff commands) in the region (@code{count-text-lines}). +@end table + +@findex electric-nroff-mode + The other feature of Nroff mode is that you can turn on Electric Nroff +mode. This is a minor mode that you can turn on or off with @kbd{M-x +electric-nroff-mode} (@pxref{Minor Modes}). When the mode is on, each +time you use @key{RET} to end a line that contains an nroff command that +opens a kind of grouping, the matching nroff command to close that +grouping is automatically inserted on the following line. For example, +if you are at the beginning of a line and type @kbd{.@: ( b @key{RET}}, +this inserts the matching command @samp{.)b} on a new line following +point. + + If you use Outline minor mode with Nroff mode (@pxref{Outline Mode}), +heading lines are lines of the form @samp{.H} followed by a number (the +header level). + +@vindex nroff-mode-hook + Entering Nroff mode runs the hook @code{text-mode-hook}, followed by +the hook @code{nroff-mode-hook} (@pxref{Hooks}). + +@node Formatted Text +@section Editing Formatted Text + +@cindex Enriched mode +@cindex mode, Enriched +@cindex formatted text +@cindex WYSIWYG +@cindex word processing + @dfn{Enriched mode} is a minor mode for editing files that contain +formatted text in WYSIWYG fashion, as in a word processor. Currently, +formatted text in Enriched mode can specify fonts, colors, underlining, +margins, and types of filling and justification. In the future, we plan +to implement other formatting features as well. + + Enriched mode is a minor mode (@pxref{Minor Modes}). It is +typically used in conjunction with Text mode (@pxref{Text Mode}), but +you can also use it with other major modes such as Outline mode and +Paragraph-Indent Text mode. + +@cindex text/enriched MIME format + Potentially, Emacs can store formatted text files in various file +formats. Currently, only one format is implemented: @dfn{text/enriched} +format, which is defined by the MIME protocol. @xref{Format +Conversion,, Format Conversion, elisp, the Emacs Lisp Reference Manual}, +for details of how Emacs recognizes and converts file formats. + + The Emacs distribution contains a formatted text file that can serve as +an example. Its name is @file{etc/enriched.doc}. It contains samples +illustrating all the features described in this section. It also +contains a list of ideas for future enhancements. + +@menu +* Requesting Formatted Text:: Entering and exiting Enriched mode. +* Hard and Soft Newlines:: There are two different kinds of newlines. +* Editing Format Info:: How to edit text properties. +* Faces: Format Faces. Bold, italic, underline, etc. +* Color: Format Colors. Changing the color of text. +* Indent: Format Indentation. Changing the left and right margins. +* Justification: Format Justification. + Centering, setting text flush with the + left or right margin, etc. - * Other: Format Properties. The "special" text properties submenu. ++* Special: Format Properties. The "special" text properties submenu. +* Forcing Enriched Mode:: How to force use of Enriched mode. +@end menu + +@node Requesting Formatted Text +@subsection Requesting to Edit Formatted Text + + Whenever you visit a file that Emacs saved in the text/enriched +format, Emacs automatically converts the formatting information in the +file into Emacs's own internal format (known as @dfn{text +properties}), and turns on Enriched mode. + +@findex enriched-mode + To create a new file of formatted text, first visit the nonexistent +file, then type @kbd{M-x enriched-mode} before you start inserting text. +This command turns on Enriched mode. Do this before you begin inserting +text, to ensure that the text you insert is handled properly. + + More generally, the command @code{enriched-mode} turns Enriched mode +on if it was off, and off if it was on. With a prefix argument, this +command turns Enriched mode on if the argument is positive, and turns +the mode off otherwise. + + When you save a buffer while Enriched mode is enabled in it, Emacs +automatically converts the text to text/enriched format while writing it +into the file. When you visit the file again, Emacs will automatically +recognize the format, reconvert the text, and turn on Enriched mode +again. + +@vindex enriched-translations + You can add annotations for saving additional text properties, which +Emacs normally does not save, by adding to @code{enriched-translations}. +Note that the text/enriched standard requires any non-standard +annotations to have names starting with @samp{x-}, as in +@samp{x-read-only}. This ensures that they will not conflict with +standard annotations that may be added later. + + @xref{Text Properties,,, elisp, the Emacs Lisp Reference Manual}, +for more information about text properties. + +@node Hard and Soft Newlines +@subsection Hard and Soft Newlines +@cindex hard newline +@cindex soft newline +@cindex newlines, hard and soft + +@cindex use-hard-newlines + In formatted text, Emacs distinguishes between two different kinds of +newlines, @dfn{hard} newlines and @dfn{soft} newlines. (You can enable +or disable this feature separately in any buffer with the command +@code{use-hard-newlines}.) + + Hard newlines are used to separate paragraphs, or items in a list, or +anywhere that there should always be a line break regardless of the +margins. The @key{RET} command (@code{newline}) and @kbd{C-o} +(@code{open-line}) insert hard newlines. + + Soft newlines are used to make text fit between the margins. All the +fill commands, including Auto Fill, insert soft newlines---and they +delete only soft newlines. + + Although hard and soft newlines look the same, it is important to bear +the difference in mind. Do not use @key{RET} to break lines in the +middle of filled paragraphs, or else you will get hard newlines that are +barriers to further filling. Instead, let Auto Fill mode break lines, +so that if the text or the margins change, Emacs can refill the lines +properly. @xref{Auto Fill}. + + On the other hand, in tables and lists, where the lines should always +remain as you type them, you can use @key{RET} to end lines. For these +lines, you may also want to set the justification style to +@code{unfilled}. @xref{Format Justification}. + +@node Editing Format Info +@subsection Editing Format Information + + There are two ways to alter the formatting information for a formatted +text file: with keyboard commands, and with the mouse. + + The easiest way to add properties to your document is with the Text +Properties menu. You can get to this menu in two ways: from the Edit +menu in the menu bar (use @kbd{@key{F10} e t} if you have no mouse), +or with @kbd{C-Mouse-2} (hold the @key{CTRL} key and press the middle +mouse button). There are also keyboard commands described in the +following section. + - Most of the items in the Text Properties menu lead to other submenus. - These are described in the sections that follow. Some items run - commands directly: ++ These items in the Text Properties menu run commands directly: + +@table @code +@findex facemenu-remove-face-props +@item Remove Face Properties +Delete from the region all face and color text properties +(@code{facemenu-remove-face-props}). + +@findex facemenu-remove-all +@item Remove Text Properties +Delete @emph{all} text properties from the region +(@code{facemenu-remove-all}). + +@findex describe-text-properties +@cindex text properties of characters +@cindex overlays at character position +@cindex widgets at buffer position +@cindex buttons at buffer position +@item Describe Properties +List all the text properties, widgets, buttons, and overlays of the +character following point (@code{describe-text-properties}). + +@item Display Faces +Display a list of all the defined faces (@code{list-faces-display}). + +@item Display Colors +Display a list of all the defined colors (@code{list-colors-display}). +@end table + ++@ifinfo ++ Other items in the Text Properties menu lead to submenus: ++ ++@menu ++* Faces: Format Faces. Bold, italic, underline, etc. ++* Color: Format Colors. Changing the color of text. ++* Indent: Format Indentation. Changing the left and right margins. ++* Justification: Format Justification. ++ Centering, setting text flush with the ++ left or right margin, etc. ++* Special: Format Properties. The "special" text properties submenu. ++@end menu ++@end ifinfo ++@ifnotinfo ++ The rest lead to submenus which are described in the following sections. ++@end ifnotinfo ++ +@node Format Faces +@subsection Faces in Formatted Text + - The Faces submenu lists various Emacs faces including @code{bold}, - @code{italic}, and @code{underline} (@pxref{Faces}). These menu items - operate on the region if it is active and nonempty. Otherwise, they - specify to use that face for an immediately following self-inserting - character. Instead of the menu, you can use these keyboard commands: ++ The Faces submenu under Text Properties lists various Emacs faces ++including @code{bold}, @code{italic}, and @code{underline} ++(@pxref{Faces}). These menu items operate on the region if it is ++active and nonempty. Otherwise, they specify to use that face for an ++immediately following self-inserting character. There is also an item ++@samp{Other} with which you can enter a face name through the ++minibuffer (@pxref{Standard Faces}). ++ ++ Instead of the Faces submenu, you can use these keyboard commands: + +@table @kbd +@kindex M-o d @r{(Enriched mode)} +@findex facemenu-set-default +@item M-o d +Remove all @code{face} properties from the region (which includes +specified colors), or force the following inserted character to have no +@code{face} property (@code{facemenu-set-default}). +@kindex M-o b @r{(Enriched mode)} +@findex facemenu-set-bold +@item M-o b +Add the face @code{bold} to the region or to the following inserted +character (@code{facemenu-set-bold}). +@kindex M-o i @r{(Enriched mode)} +@findex facemenu-set-italic +@item M-o i +Add the face @code{italic} to the region or to the following inserted +character (@code{facemenu-set-italic}). +@kindex M-o l @r{(Enriched mode)} +@findex facemenu-set-bold-italic +@item M-o l +Add the face @code{bold-italic} to the region or to the following +inserted character (@code{facemenu-set-bold-italic}). +@kindex M-o u @r{(Enriched mode)} +@findex facemenu-set-underline +@item M-o u +Add the face @code{underline} to the region or to the following inserted +character (@code{facemenu-set-underline}). +@kindex M-o o @r{(Enriched mode)} +@findex facemenu-set-face +@item M-o o @var{face} @key{RET} +Add the face @var{face} to the region or to the following inserted +character (@code{facemenu-set-face}). +@end table + + With a prefix argument, all these commands apply to an immediately +following self-inserting character, disregarding the region. + + A self-inserting character normally inherits the @code{face} +property (and most other text properties) from the preceding character +in the buffer. If you use the above commands to specify face for the +next self-inserting character, or the next section's commands to +specify a foreground or background color for it, then it does not +inherit the @code{face} property from the preceding character; instead +it uses whatever you specified. It will still inherit other text +properties, though. + + Strictly speaking, these commands apply only to the first following +self-inserting character that you type. But if you insert additional +characters after it, they will inherit from the first one. So it +appears that these commands apply to all of them. + + Enriched mode defines two additional faces: @code{excerpt} and +@code{fixed}. These correspond to codes used in the text/enriched file +format. + + The @code{excerpt} face is intended for quotations. This face is the +same as @code{italic} unless you customize it (@pxref{Face Customization}). + + The @code{fixed} face means, ``Use a fixed-width font for this part +of the text.'' Applying the @code{fixed} face to a part of the text +will cause that part of the text to appear in a fixed-width font, even +if the default font is variable-width. This applies to Emacs and to +other systems that display text/enriched format. So if you +specifically want a certain part of the text to use a fixed-width +font, you should specify the @code{fixed} face for that part. + + By default, the @code{fixed} face looks the same as @code{bold}. +This is an attempt to distinguish it from @code{default}. You may +wish to customize @code{fixed} to some other fixed-width medium font. +@xref{Face Customization}. + + If your terminal cannot display different faces, you will not be +able to see them, but you can still edit documents containing faces, +and even add faces and colors to documents. The faces you specify +will be visible when the file is viewed on a terminal that can display +them. + +@node Format Colors +@subsection Colors in Formatted Text + + You can specify foreground and background colors for portions of the - text. There is a menu for specifying the foreground color and a menu - for specifying the background color. Each color menu lists all the - colors that you have used in Enriched mode in the current Emacs session. ++text. Under Text Properties there is a submenu for specifying the ++foreground color, and a submenu for specifying the background color. ++Each one lists all the colors that you have used in Enriched mode in ++the current Emacs session. + + If you specify a color with a prefix argument---or, in Transient +Mark mode, if the region is not active---then it applies to any +immediately following self-inserting input. Otherwise, the command +applies to the region. + - Each color menu contains one additional item: @samp{Other}. You can use - this item to specify a color that is not listed in the menu; it reads - the color name with the minibuffer. To display a list of available colors - and their names, use the @samp{Display Colors} menu item in the Text - Properties menu (@pxref{Editing Format Info}). ++ Each of the two color submenus contains one additional item: ++@samp{Other}. You can use this item to specify a color that is not ++listed in the menu; it reads the color name with the minibuffer. To ++display a list of available colors and their names, use the ++@samp{Display Colors} menu item in the Text Properties menu ++(@pxref{Editing Format Info}). + + Any color that you specify in this way, or that is mentioned in a +formatted text file that you read in, is added to the corresponding +color menu for the duration of the Emacs session. + +@findex facemenu-set-foreground +@findex facemenu-set-background + There are no predefined key bindings for specifying colors, but you can do so +with the extended commands @kbd{M-x facemenu-set-foreground} and +@kbd{M-x facemenu-set-background}. Both of these commands read the name +of the color with the minibuffer. + +@node Format Indentation +@subsection Indentation in Formatted Text + + When editing formatted text, you can specify different amounts of +indentation for the right or left margin of an entire paragraph or a +part of a paragraph. The margins you specify automatically affect the +Emacs fill commands (@pxref{Filling}) and line-breaking commands. + - The Indentation submenu provides a convenient interface for specifying - these properties. The submenu contains four items: ++ The Indentation submenu of Text Properties provides a convenient ++interface for specifying these properties. The submenu contains four ++items: + +@table @code +@kindex C-x TAB @r{(Enriched mode)} +@findex increase-left-margin +@item Indent More +Indent the region by 4 columns (@code{increase-left-margin}). In +Enriched mode, this command is also available on @kbd{C-x @key{TAB}}; if +you supply a numeric argument, that says how many columns to add to the +margin (a negative argument reduces the number of columns). + +@item Indent Less +Remove 4 columns of indentation from the region. + +@item Indent Right More +Make the text narrower by indenting 4 columns at the right margin. + +@item Indent Right Less +Remove 4 columns of indentation from the right margin. +@end table + + You can use these commands repeatedly to increase or decrease the +indentation. + + The most common way to use them is to change the indentation of an +entire paragraph. For other uses, the effects of refilling can be +hard to predict, except in some special cases like the one described +next. + + The most common other use is to format paragraphs with @dfn{hanging +indents}, which means that the first line is indented less than +subsequent lines. To set up a hanging indent, increase the +indentation of the region starting after the first word of the +paragraph and running until the end of the paragraph. + + Indenting the first line of a paragraph is easier. Set the margin for +the whole paragraph where you want it to be for the body of the +paragraph, then indent the first line by inserting extra spaces or tabs. + +@vindex standard-indent + The variable @code{standard-indent} specifies how many columns these +commands should add to or subtract from the indentation. The default +value is 4. The overall default right margin for Enriched mode is +controlled by the variable @code{fill-column}, as usual. + +@kindex C-c [ @r{(Enriched mode)} +@kindex C-c ] @r{(Enriched mode)} +@findex set-left-margin +@findex set-right-margin + There are also two commands for setting the left or right margin of +the region absolutely: @code{set-left-margin} and +@code{set-right-margin}. Enriched mode binds these commands to +@kbd{C-c [} and @kbd{C-c ]}, respectively. You can specify the +margin width either with a numeric argument or in the minibuffer. + + Sometimes, as a result of editing, the filling of a paragraph becomes +messed up---parts of the paragraph may extend past the left or right +margins. When this happens, use @kbd{M-q} (@code{fill-paragraph}) to +refill the paragraph. + + The fill prefix, if any, works in addition to the specified paragraph +indentation: @kbd{C-x .} does not include the specified indentation's +whitespace in the new value for the fill prefix, and the fill commands +look for the fill prefix after the indentation on each line. @xref{Fill +Prefix}. + +@node Format Justification +@subsection Justification in Formatted Text + + When editing formatted text, you can specify various styles of +justification for a paragraph. The style you specify automatically +affects the Emacs fill commands. + - The Justification submenu provides a convenient interface for specifying - the style. The submenu contains five items: ++ The Justification submenu of Text Properties provides a convenient ++interface for specifying the style. The submenu contains five items: + +@table @code +@item Left +This is the most common style of justification (at least for English). +Lines are aligned at the left margin but left uneven at the right. + +@item Right +This aligns each line with the right margin. Spaces and tabs are added +on the left, if necessary, to make lines line up on the right. + +@item Full +This justifies the text, aligning both edges of each line. Justified +text looks very nice in a printed book, where the spaces can all be +adjusted equally, but it does not look as nice with a fixed-width font +on the screen. Perhaps a future version of Emacs will be able to adjust +the width of spaces in a line to achieve elegant justification. + +@item Center +This centers every line between the current margins. + +@item Unfilled +This turns off filling entirely. Each line will remain as you wrote it; +the fill and auto-fill functions will have no effect on text which has +this setting. You can, however, still indent the left margin. In +unfilled regions, all newlines are treated as hard newlines (@pxref{Hard +and Soft Newlines}) . +@end table + + In Enriched mode, you can also specify justification from the keyboard +using the @kbd{M-j} prefix character: + +@table @kbd +@kindex M-j l @r{(Enriched mode)} +@findex set-justification-left +@item M-j l +Make the region left-filled (@code{set-justification-left}). +@kindex M-j r @r{(Enriched mode)} +@findex set-justification-right +@item M-j r +Make the region right-filled (@code{set-justification-right}). +@kindex M-j b @r{(Enriched mode)} +@findex set-justification-full +@item M-j b +Make the region fully justified (@code{set-justification-full}). +@kindex M-j c @r{(Enriched mode)} +@kindex M-S @r{(Enriched mode)} +@findex set-justification-center +@item M-j c +@itemx M-S +Make the region centered (@code{set-justification-center}). +@kindex M-j u @r{(Enriched mode)} +@findex set-justification-none +@item M-j u +Make the region unfilled (@code{set-justification-none}). +@end table + + Justification styles apply to entire paragraphs. All the +justification-changing commands operate on the paragraph containing +point, or, if the region is active, on all paragraphs which overlap the +region. + +@vindex default-justification + The default justification style is specified by the variable +@code{default-justification}. Its value should be one of the symbols +@code{left}, @code{right}, @code{full}, @code{center}, or @code{none}. +This is a per-buffer variable. Setting the variable directly affects +only the current buffer. However, customizing it in a Custom buffer +sets (as always) the default value for buffers that do not override it. +@xref{Locals}, and @ref{Easy Customization}. + +@node Format Properties +@subsection Setting Other Text Properties + - The Special Properties menu lets you add or remove three other useful text - properties: @code{read-only}, @code{invisible} and @code{intangible}. - The @code{intangible} property disallows moving point within the text, - the @code{invisible} text property hides text from display, and the - @code{read-only} property disallows alteration of the text. ++ The Special Properties submenu of Text Properties can add or remove ++three other useful text properties: @code{read-only}, @code{invisible} ++and @code{intangible}. The @code{intangible} property disallows ++moving point within the text, the @code{invisible} text property hides ++text from display, and the @code{read-only} property disallows ++alteration of the text. + + Each of these special properties has a menu item to add it to the +region. The last menu item, @samp{Remove Special}, removes all of these +special properties from the text in the region. + + Currently, the @code{invisible} and @code{intangible} properties are +@emph{not} saved in the text/enriched format. The @code{read-only} +property is saved, but it is not a standard part of the text/enriched +format, so other editors may not respect it. + +@node Forcing Enriched Mode +@subsection Forcing Enriched Mode + + Normally, Emacs knows when you are editing formatted text because it +recognizes the special annotations used in the file that you visited. +However, sometimes you must take special actions to convert file +contents or turn on Enriched mode: + +@itemize @bullet +@item +When you visit a file that was created with some other editor, Emacs may +not recognize the file as being in the text/enriched format. In this +case, when you visit the file you will see the formatting commands +rather than the formatted text. Type @kbd{M-x format-decode-buffer} to +translate it. This also automatically turns on Enriched mode. + +@item +When you @emph{insert} a file into a buffer, rather than visiting it, +Emacs does the necessary conversions on the text which you insert, but +it does not enable Enriched mode. If you wish to do that, type @kbd{M-x +enriched-mode}. +@end itemize + + The command @code{format-decode-buffer} translates text in various +formats into Emacs's internal format. It asks you to specify the format +to translate from; however, normally you can type just @key{RET}, which +tells Emacs to guess the format. + +@findex format-find-file + If you wish to look at a text/enriched file in its raw form, as a +sequence of characters rather than as formatted text, use the @kbd{M-x +find-file-literally} command. This visits a file, like +@code{find-file}, but does not do format conversion. It also inhibits +character code conversion (@pxref{Coding Systems}) and automatic +uncompression (@pxref{Compressed Files}). To disable format conversion +but allow character code conversion and/or automatic uncompression if +appropriate, use @code{format-find-file} with suitable arguments. + +@node Text Based Tables +@section Editing Text-based Tables +@cindex table mode +@cindex text-based tables + + Table mode provides an easy and intuitive way to create and edit WYSIWYG +text-based tables. Here is an example of such a table: + +@smallexample +@group ++-----------------+--------------------------------+-----------------+ +| Command | Description | Key Binding | ++-----------------+--------------------------------+-----------------+ +| forward-char |Move point right N characters | C-f | +| |(left if N is negative). | | +| | | | +| |On reaching end of buffer, stop | | +| |and signal error. | | ++-----------------+--------------------------------+-----------------+ +| backward-char |Move point left N characters | C-b | +| |(right if N is negative). | | +| | | | +| |On attempt to pass beginning or | | +| |end of buffer, stop and signal | | +| |error. | | ++-----------------+--------------------------------+-----------------+ +@end group +@end smallexample + + Table mode allows the contents of the table such as this one to be +easily manipulated by inserting or deleting characters inside a cell. +A cell is effectively a localized rectangular edit region and edits to +a cell do not affect the contents of the surrounding cells. If the +contents do not fit into a cell, then the cell is automatically +expanded in the vertical and/or horizontal directions and the rest of +the table is restructured and reformatted in accordance with the +growth of the cell. + +@menu +* Table Definition:: What is a text based table. +* Table Creation:: How to create a table. +* Table Recognition:: How to activate and deactivate tables. +* Cell Commands:: Cell-oriented commands in a table. +* Cell Justification:: Justifying cell contents. +* Row Commands:: Manipulating rows of table cell. +* Column Commands:: Manipulating columns of table cell. +* Fixed Width Mode:: Fixing cell width. +* Table Conversion:: Converting between plain text and tables. +* Measuring Tables:: Analyzing table dimension. +* Table Misc:: Table miscellany. +@end menu + +@node Table Definition +@subsection What is a Text-based Table? + + Keep the following examples of valid tables in mind as a reference +while you read this section: + +@example + +--+----+---+ +-+ +--+-----+ + | | | | | | | | | + +--+----+---+ +-+ | +--+--+ + | | | | | | | | + +--+----+---+ +--+--+ | + | | | + +-----+--+ +@end example + + A table consists of a rectangular frame whose inside is divided into +cells. Each cell must be at least one character wide and one +character high, not counting its border lines. A cell can be +subdivided into multiple rectangular cells, but cells cannot overlap. + + The table frame and cell border lines are made of three special +characters. These variables specify those characters: + +@table @code +@vindex table-cell-vertical-char +@item table-cell-vertical-char +Holds the character used for vertical lines. The default value is +@samp{|}. + +@vindex table-cell-horizontal-char +@item table-cell-horizontal-char +Holds the character used for horizontal lines. The default value is +@samp{-}. + +@vindex table-cell-intersection-char +@item table-cell-intersection-char +Holds the character used at where horizontal line and vertical line +meet. The default value is @samp{+}. +@end table + +@noindent +Based on this definition, the following five tables are examples of invalid +tables: + +@example + +-----+ +-----+ +--+ +-++--+ ++ + | | | | | | | || | ++ + | +-+ | | | | | | || | + | | | | +--+ | +--+--+ +-++--+ + | +-+ | | | | | | | +-++--+ + | | | | | | | | | || | + +-----+ +--+--+ +--+--+ +-++--+ + a b c d e +@end example + +From left to right: + +@enumerate a +@item +Overlapped cells or non-rectangular cells are not allowed. +@item +Same as a. +@item +The border must be rectangular. +@item +Cells must have a minimum width/height of one character. +@item +Same as d. +@end enumerate + +@node Table Creation +@subsection How to Create a Table? +@cindex create a text-based table +@cindex table creation + +@findex table-insert + The command to create a table is @code{table-insert}. When called +interactively, it asks for the number of columns, number of rows, cell +width and cell height. The number of columns is the number of cells +horizontally side by side. The number of rows is the number of cells +vertically within the table's height. The cell width is a number of +characters that each cell holds, left to right. The cell height is a +number of lines each cell holds. The cell width and the cell height +can be either an integer (when the value is constant across the table) +or a series of integer, separated by spaces or commas, where each +number corresponds to the next cell within a row from left to right, +or the next cell within a column from top to bottom. + +@node Table Recognition +@subsection Table Recognition +@cindex table recognition + +@findex table-recognize +@findex table-unrecognize + Table mode maintains special text properties in the buffer to allow +editing in a convenient fashion. When a buffer with tables is saved +to its file, these text properties are lost, so when you visit this +file again later, Emacs does not see a table, but just formatted text. +To resurrect the table text properties, issue the @kbd{M-x +table-recognize} command. It scans the current buffer, recognizes +valid table cells, and attaches appropriate text properties to allow +for table editing. The converse command, @code{table-unrecognize}, is +used to remove the special text properties and convert the buffer back +to plain text. + + Special commands exist to enable or disable tables within a region, +enable or disable individual tables, and enable/disable individual +cells. These commands are: + +@table @kbd +@findex table-recognize-region +@item M-x table-recognize-region +Recognize tables within the current region and activate them. +@findex table-unrecognize-region +@item M-x table-unrecognize-region +Deactivate tables within the current region. +@findex table-recognize-table +@item M-x table-recognize-table +Recognize the table under point and activate it. +@findex table-unrecognize-table +@item M-x table-unrecognize-table +Deactivate the table under point. +@findex table-recognize-cell +@item M-x table-recognize-cell +Recognize the cell under point and activate it. +@findex table-unrecognize-cell +@item M-x table-unrecognize-cell +Deactivate the cell under point. +@end table + + For another way of converting text into tables, see @ref{Table +Conversion}. + +@node Cell Commands +@subsection Commands for Table Cells + +@findex table-forward-cell +@findex table-backward-cell + The commands @code{table-forward-cell} and +@code{table-backward-cell} move point from the current cell to an +adjacent cell forward and backward respectively. The order of the +cells is cyclic: when point is in the last cell of a table, typing +@kbd{M-x table-forward-cell} moves to the first cell in the table. +Likewise @kbd{M-x table-backward-cell} from the first cell in a table +moves to the last cell. + +@findex table-span-cell + The command @code{table-span-cell} merges the current cell with the +adjacent cell in a specified direction---right, left, above or below. +You specify the direction with the minibuffer. It does not allow +merges which don't result in a legitimate cell layout. + +@findex table-split-cell +@cindex text-based tables, split a cell +@cindex split table cell + The command @code{table-split-cell} splits the current cell +vertically or horizontally. This command is a wrapper to the +direction specific commands @code{table-split-cell-vertically} and +@code{table-split-cell-horizontally}. You specify the direction with +a minibuffer argument. + +@findex table-split-cell-vertically + The command @code{table-split-cell-vertically} splits the current +cell vertically and creates a pair of cells above and below where +point is located. The content in the original cell is split as well. + +@findex table-split-cell-horizontally + The command @code{table-split-cell-horizontally} splits the current +cell horizontally and creates a pair of cells right and left of where +point is located. If the cell being split is not empty, this asks you +how to handle the cell contents. The three options are: @code{split}, +@code{left}, or @code{right}. @code{split} splits the contents at +point literally, while the @code{left} and @code{right} options move +the entire contents into the left or right cell respectively. + +@cindex enlarge a table cell +@cindex shrink a table cell + The next four commands enlarge or shrink a cell. They use numeric +arguments (@pxref{Arguments}) to specify how many columns or rows to +enlarge or shrink a particular table. + +@table @kbd +@findex table-heighten-cell +@item M-x table-heighten-cell +Enlarge the current cell vertically. +@findex table-shorten-cell +@item M-x table-shorten-cell +Shrink the current cell vertically. +@findex table-widen-cell +@item M-x table-widen-cell +Enlarge the current cell horizontally. +@findex table-narrow-cell +@item M-x table-narrow-cell +Shrink the current cell horizontally. +@end table + +@node Cell Justification +@subsection Cell Justification +@cindex cell text justification + + You can specify text justification for each cell. The justification +is remembered independently for each cell and the subsequent editing +of cell contents is subject to the specified justification. + +@findex table-justify + The command @code{table-justify} ask you to specify what to justify: +a cell, a column, or a row. If you select cell justification, this +command sets the justification only for the current cell. Selecting +column or row justification sets the justification for all the cells +within a column or row respectively. The command then ask you which +kind of justification to apply: @code{left}, @code{center}, +@code{right}, @code{top}, @code{middle}, @code{bottom}, or +@code{none}. Horizontal justification and vertical justification are +specified independently. The options @code{left}, @code{center}, and +@code{right} specify horizontal justification while the options +@code{top}, @code{middle}, @code{bottom}, and @code{none} specify +vertical justification. The vertical justification @code{none} +effectively removes vertical justification. Horizontal justification +must be one of @code{left}, @code{center}, or @code{right}. + +@vindex table-detect-cell-alignment + Justification information is stored in the buffer as a part of text +property. Therefore, this information is ephemeral and does not +survive through the loss of the buffer (closing the buffer and +revisiting the buffer erase any previous text properties). To +countermand for this, the command @code{table-recognize} and other +recognition commands (@pxref{Table Recognition}) are equipped with a +convenience feature (turned on by default). During table recognition, +the contents of a cell are examined to determine which justification +was originally applied to the cell and then applies this justification +to the cell. This is a speculative algorithm and is therefore not +perfect, however, the justification is deduced correctly most of the +time. To disable this feature, customize the variable +@code{table-detect-cell-alignment} and set it to @code{nil}. + +@node Row Commands +@subsection Commands for Table Rows +@cindex table row commands + +@cindex insert row in table +@findex table-insert-row + The command @code{table-insert-row} inserts a row of cells before +the current row in a table. The current row where point is located is +pushed down after the newly inserted row. A numeric prefix argument +specifies the number of rows to insert. Note that in order to insert +rows @emph{after} the last row at the bottom of a table, you must +place point below the table---that is, outside the table---prior to +invoking this command. + +@cindex delete row in table +@findex table-delete-row + The command @code{table-delete-row} deletes a row of cells at point. +A numeric prefix argument specifies the number of rows to delete. + +@node Column Commands +@subsection Commands for Table Columns +@cindex table column commands + +@cindex insert column in table +@findex table-insert-column + The command @code{table-insert-column} inserts a column of cells to +the left of the current row in a table. This pushes the current +column to the right. To insert a column to the right side of the +rightmost column, place point to the right of the rightmost column, +which is outside of the table, prior to invoking this command. A +numeric prefix argument specifies the number of columns to insert. + +@cindex delete column in table + A command @code{table-delete-column} deletes a column of cells at +point. A numeric prefix argument specifies the number of columns to +delete. + +@node Fixed Width Mode +@subsection Fix Width of Cells +@cindex fix width of table cells + +@findex table-fixed-width-mode + The command @code{table-fixed-width-mode} toggles fixed width mode +on and off. When fixed width mode is turned on, editing inside a +cell never changes the cell width; when it is off, the cell width +expands automatically in order to prevent a word from being folded +into multiple lines. By default, fixed width mode is disabled. + +@node Table Conversion +@subsection Conversion Between Plain Text and Tables +@cindex text to table +@cindex table to text + +@findex table-capture + The command @code{table-capture} captures plain text in a region and +turns it into a table. Unlike @code{table-recognize} (@pxref{Table +Recognition}), the original text does not have a table appearance but +may hold a logical table structure. For example, some elements +separated by known patterns form a two dimensional structure which can +be turned into a table. + + Here's an example of data that @code{table-capture} can operate on. +The numbers are horizontally separated by a comma and vertically +separated by a newline character. + +@example +1, 2, 3, 4 +5, 6, 7, 8 +, 9, 10 +@end example + +@noindent +Invoking @kbd{M-x table-capture} on that text produces this table: + +@example ++-----+-----+-----+-----+ +|1 |2 |3 |4 | ++-----+-----+-----+-----+ +|5 |6 |7 |8 | ++-----+-----+-----+-----+ +| |9 |10 | | ++-----+-----+-----+-----+ +@end example + +@noindent +The conversion uses @samp{,} for the column delimiter and newline for +a row delimiter, cells are left justified, and minimum cell width is +5. + +@findex table-release + The command @code{table-release} does the opposite of +@code{table-capture}. It releases a table by removing the table frame +and cell borders. This leaves the table contents as plain text. One +of the useful applications of @code{table-capture} and +@code{table-release} is to edit a text in layout. Look at the +following three paragraphs (the latter two are indented with header +lines): + +@example +@samp{table-capture} is a powerful command, but mastering its +power requires some practice. Here are some things it can do: + +Parse Cell Items By using column delimiter regular + expression and raw delimiter regular + expression, it parses the specified text + area and extracts cell items from + non-table text and then forms a table out + of them. + +Capture Text Area When no delimiters are specified it + creates a single cell table. The text in + the specified region is placed in that + cell. +@end example + +@noindent +Applying @code{table-capture} to a region containing the above three +paragraphs, with empty strings for column delimiter regexp and row +delimiter regexp, creates a table with a single cell like the +following one. + +@c The first line's right-hand frame in the following two examples +@c sticks out to accommodate for the removal of @samp in the +@c produced output!! +@smallexample +@group ++-----------------------------------------------------------------+ +|@samp{table-capture} is a powerful command, but mastering its | +|power requires some practice. Here are some things it can do: | +| | +|Parse Cell Items By using column delimiter regular | +| expression and raw delimiter regular | +| expression, it parses the specified text | +| area and extracts cell items from | +| non-table text and then forms a table out | +| of them. | +| | +|Capture Text Area When no delimiters are specified it | +| creates a single cell table. The text in | +| the specified region is placed in that | +| cell. | ++-----------------------------------------------------------------+ +@end group +@end smallexample + +@noindent +By splitting the cell appropriately we now have a table consisting of +paragraphs occupying its own cell. Each cell can now be edited +independently without affecting the layout of other cells. + +@smallexample ++-----------------------------------------------------------------+ +|@samp{table-capture} is a powerful command, but mastering its | +|power requires some practice. Here are some things it can do: | ++---------------------+-------------------------------------------+ +|Parse Cell Items |By using column delimiter regular | +| |expression and raw delimiter regular | +| |expression, it parses the specified text | +| |area and extracts cell items from | +| |non-table text and then forms a table out | +| |of them. | ++---------------------+-------------------------------------------+ +|Capture Text Area |When no delimiters are specified it | +| |creates a single cell table. The text in | +| |the specified region is placed in that | +| |cell. | ++---------------------+-------------------------------------------+ +@end smallexample + +@noindent +By applying @code{table-release}, which does the opposite process, the +contents become once again plain text. @code{table-release} works as +a companion command to @code{table-capture}. + +@node Measuring Tables +@subsection Analyzing Table Dimensions +@cindex table dimensions + +@findex table-query-dimension + The command @code{table-query-dimension} analyzes a table structure +and reports information regarding its dimensions. In case of the +above example table, the @code{table-query-dimension} command displays +in echo area: + +@smallexample +Cell: (21w, 6h), Table: (67w, 16h), Dim: (2c, 3r), Total Cells: 5 +@end smallexample + +@noindent +This indicates that the current cell is 21 character wide and 6 lines +high, the entire table is 67 characters wide and 16 lines high. The +table has 2 columns and 3 rows. It has a total of 5 cells, since the +first row has a spanned cell. + +@node Table Misc +@subsection Table Miscellany + +@cindex insert string into table cells +@findex table-insert-sequence + The command @code{table-insert-sequence} inserts a string into each +cell. Each string is a part of a sequence i.e.@: a series of +increasing integer numbers. + +@cindex table in language format +@cindex table for HTML and LaTeX +@findex table-generate-source + The command @code{table-generate-source} generates a table formatted +for a specific markup language. It asks for a language (which must be +one of @code{html}, @code{latex}, or @code{cals}), a destination +buffer where to put the result, and the table caption (a string), and +then inserts the generated table in the proper syntax into the +destination buffer. The default destination buffer is +@code{table.@var{lang}}, where @var{lang} is the language you +specified. + +@ignore + arch-tag: 8db54ed8-2036-49ca-b0df-23811d03dc70 +@end ignore diff --cc doc/lispref/ChangeLog index bfeb88f7830,00000000000..50399b0120e mode 100644,000000..100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@@ -1,6486 -1,0 +1,6497 @@@ ++2007-12-28 Richard Stallman ++ ++ * frames.texi (Size Parameters): Fix typo. ++ (Basic Parameters): For `title', refer to title bar. ++ (Size and Position): Explain meaning of frame pixel width and height. ++ ++2007-12-23 Richard Stallman ++ ++ * customize.texi (Type Keywords): Uncomment :validate and clarify it. ++ Improve some of the commented-out keywords' text too. ++ +2007-12-14 Martin Rudalics + + * nonascii.texi (Encoding and I/O): Reword to avoid saying + "visit the current buffer". + + * os.texi (System Interface): Fix typo. + +2007-12-04 Richard Stallman + + * objects.texi (Symbol Type): Fix typo. + +2007-12-03 Richard Stallman + + * hooks.texi (Standard Hooks): Add link to Hooks for Loading. + +2007-12-01 Glenn Morris + + * functions.texi (Declaring Functions): Improve previous change. + +2007-11-30 Glenn Morris + + * functions.texi (Declaring Functions): Add optional fourth + argument of declare-function, and setting third argument to `t'. + +2007-11-29 Richard Stallman + + * customize.texi (Composite Types): Document `group' type. + +2007-11-29 Glenn Morris + + * functions.texi (Declaring Functions): Add findex. Mention + `external' files. + +2007-11-26 Juanma Barranquero + + * functions.texi (Declaring Functions): Fix directive. + +2007-11-25 Richard Stallman + + * help.texi (Help Functions): Clean up last change. + + * advice.texi (Preactivation, Activation of Advice): Minor cleanup. + + * loading.texi (Named Features): Minor cleanup. + + * macros.texi (Eval During Expansion): Minor cleanup. + + * variables.texi (Variable Aliases): Minor cleanup. + +2007-11-24 Richard Stallman + + * functions.texi (Declaring Functions): Clarify previous change. + + * compile.texi (Compiler Errors): Clarify previous change. + +2007-11-24 Richard Stallman + + * display.texi (Refresh Screen, Forcing Redisplay): + Clarify the text and move items around. + +2007-11-24 Glenn Morris + + * functions.texi (Declaring Functions): New section. + * compile.texi (Compiler Errors): Mention declaring functions, + defvar with no initvalue, and byte-compile-warnings. + +2007-11-15 Martin Rudalics + + * vol1.texi (Top): Remove Frame-Local Variables from Node Listing. + * vol2.texi (Top): Remove Frame-Local Variables from Node Listing. + +2007-11-13 Martin Rudalics + + * help.texi (Help Functions): Document new macro `with-help-window'. + +2007-11-10 Paul Pogonyshev + + * searching.texi (Replacing Match): Describe new + `match-substitute-replacement'. + +2007-10-31 Richard Stallman + + * strings.texi (Creating Strings): Null strings from concat not unique. + +2007-10-26 Richard Stallman + + * objects.texi (Equality Predicates): Null strings are uniquified. + + * minibuf.texi: Minor clarifications in previous change. + +2007-10-25 Glenn Morris + + * customize.texi (Variable Definitions): Add :risky and :safe keywords. + +2007-10-24 Richard Stallman + + * elisp.texi (Top): Delete Frame-Local Variables from subnode menu. + + * variables.texi (Frame-Local Variables): Node deleted. + (Variables): Delete Frame-Local Variables from menu. + (Local Variables, Buffer-Local Variables, Intro to Buffer-Local) + (Default Value): Don't mention frame-local vars. + + * os.texi (Idle Timers): current-idle-time returns nil if not idle. + + * loading.texi (Unloading): Document FEATURE-unload-function + instead of FEATURE-unload-hook. + + * frames.texi (Multiple Displays): Don't mention frame-local vars. + +2007-10-22 Juri Linkov + + * minibuf.texi (Text from Minibuffer, Minibuffer Completion) + (High-Level Completion): Document a list of default value strings + in the DEFAULT argument, for which minibuffer functions return the + first element. + +2007-10-17 Juri Linkov + + * text.texi (Filling): Update arguments of fill-paragraph. + fill-paragraph operates on the active region in Transient Mark mode. + Remove fill-paragraph-or-region. + +2007-10-13 Karl Berry + + * elisp.texi (@dircategory): Move to after @copying, + since we want @copying as close as possible to the beginning of + the output. + +2007-10-12 Richard Stallman + + * elisp.texi (Top): Add Distinguish Interactive to subnode menu. + + * commands.texi (Distinguish Interactive): New node, + broken out from Interactive Call and rewritten. + (Command Loop): Put Distinguish Interactive in menu. + +2007-10-09 Richard Stallman + + * text.texi (Examining Properties): Mention overlay priority. + + * display.texi (Display Margins): Correct the description + of margin display specifications. + (Replacing Specs): New subnode broken out of Display Property. + +2007-10-06 Juri Linkov + + * text.texi (Filling): Document fill-paragraph-or-region. + +2007-10-05 Juanma Barranquero + + * display.texi (Auto Faces): Fix typo. + +2007-10-02 Richard Stallman + + * display.texi (Display Property): Explain some display specs + don't let you move point in. + + * frames.texi (Cursor Parameters): Describe + cursor-in-non-selected-windows here. Explain more values. + + * windows.texi (Basic Windows): Don't describe + cursor-in-non-selected-windows here. + +2007-10-01 Eli Zaretskii + + * processes.texi (Misc Network): Note that these functions are + supported only on some systems. + +2007-10-01 Richard Stallman + + * display.texi (Overlay Properties): Explain nil as priority. + Explain that conflicts are unpredictable if not resolved by + priorities. + +2007-09-23 Richard Stallman + + * macros.texi (Backquote): Minor clarification. + +2007-09-19 Richard Stallman + + * display.texi (Display Property): Explain multiple display specs. + Clarify when they work in parallel and when one overrides. + Fix error in example. + +2007-09-06 Glenn Morris + + * Move from lispref/ to doc/lispref/. Change all setfilename + commands to use ../../info. + * Makefile.in (infodir): Go up one more level. + (usermanualdir): Change from ../man to ../emacs. + (miscmanualdir): New. + (dist): Use new variable miscmanualdir. + * makefile.w32-in (infodir, texinputdir): Go up one more level. + (usermanualdir): Change from ../man to ../emacs. + +2007-08-30 Martin Rudalics + + * commands.texi (Command Loop Info): Advise against changing + most variables described here. Explain new variable + last-repeatable-command. + +2007-08-29 Glenn Morris + + * elisp.texi (EMACSVER): Increase to 23.0.50. + +2007-08-29 Dan Nicolaescu + + * frames.texi (Basic Parameters): Add display-environment-variable + and term-environment-variable. + +2007-08-28 Juri Linkov + + * display.texi (Image Formats, Other Image Types): Add SVG. + +2007-08-28 Juri Linkov + + * display.texi (Images): Move formats-related text to new node + "Image Formats". + (Image Formats): New node. + +2007-08-27 Richard Stallman + + * windows.texi (Window Configurations): Clarify what + a window configuration saves. + +2007-08-25 Richard Stallman + + * display.texi (Images): Delete redundant @findex. + +2007-08-16 Richard Stallman + + * processes.texi (Asynchronous Processes): Clarify + doc of start-file-process. + +2007-08-08 Martin Rudalics + + * modes.texi (Example Major Modes): Fix typo. + +2007-08-08 Glenn Morris + + * intro.texi (nil and t): Do not use `iff' in documentation. + + * tips.texi (Documentation Tips): Recommend against `iff'. + +2007-08-07 Chong Yidong + + * display.texi (Image Cache): Document image-refresh. + +2007-08-06 Martin Rudalics + + * windows.texi (Size of Window): Document window-full-width-p. + +2007-07-25 Glenn Morris + + * gpl.texi (GPL): Replace license with GPLv3. + + * Relicense all FSF files to GPLv3 or later. + +2007-07-24 Michael Albinus + + * processes.texi (Synchronous Processes): + Add `process-file-shell-command'. + (Asynchronous Processes): Mention restricted use of + `process-filter' and `process-sentinel' in + `start-file-process'. Add `start-file-process-shell-command'. + +2007-07-17 Michael Albinus + + * files.texi (Magic File Names): Introduce optional parameter + IDENTIFICATION for `file-remote-p'. + +2007-07-16 Richard Stallman + + * display.texi (Defining Faces): Fix previous change. + +2007-07-14 Richard Stallman + + * control.texi (Handling Errors): Document `debug' in handler list. + +2007-07-10 Richard Stallman + + * display.texi (Defining Faces): Explain C-M-x feature for defface. + +2007-07-09 Richard Stallman + + * files.texi (Magic File Names): Rewrite previous change. + +2007-07-08 Michael Albinus + + * files.texi (Magic File Names): Introduce optional parameter + CONNECTED for `file-remote-p'. + +2007-07-07 Michael Albinus + + * processes.texi (Asynchronous Processes): + * files.texi (Magic File Names): Add `start-file-process'. + +2007-06-27 Richard Stallman + + * files.texi (Format Conversion Piecemeal): Clarify + `after-insert-file-functions' calling convention. + +2007-06-27 Michael Albinus + + * files.texi (Magic File Names): Remove `dired-call-process'. + Add `process-file'. + +2007-06-27 Kenichi Handa + + * text.texi (Special Properties): Fix description about + `composition' property. + +2007-06-26 Kenichi Handa + + * nonascii.texi (Default Coding Systems): Document about the + return value `undecided'. + +2007-06-25 David Kastrup + + * keymaps.texi (Active Keymaps): Document new POSITION argument of + `current-active-maps'. + +2007-06-24 Karl Berry + + * elisp.texi, vol1.texi, vol2.texi: New Back-Cover Text. + +2007-06-15 Juanma Barranquero + + * display.texi (Overlay Arrow): Doc fix. + +2007-06-14 Karl Berry + + * anti.texi (Antinews): Typo. + +2007-06-14 Chong Yidong + + * display.texi (Image Cache): Document image-refresh. + +2007-06-12 Karl Berry + + * vol1.texi, vol2.texi, two-volume-cross-refs.txt: Update. + * two-volume.make: New file. + * .cvsignore: Ignore two-volume files. + +2007-06-12 Tom Tromey + + * os.texi (Init File): Document user-emacs-directory. + +2007-06-03 Nick Roberts + + * commands.texi (Click Events): Describe width and height when + object is nil. + +2007-05-30 Nick Roberts + + * commands.texi (Click Events): Layout more logically. Describe + width and height. + (Drag Events, Motion Events): Update to new format for position. + +2007-06-02 Richard Stallman + + * frames.texi (Color Parameters): Add xref to (emacs)Standard Faces. + +2007-06-02 Chong Yidong + + * Version 22.1 released. + +2007-06-01 Stefan Monnier + + * text.texi (Special Properties): Correct meaning of fontified face. + +2007-05-30 Richard Stallman + + * text.texi (Special Properties): Add link to Adjusting Point. + +2007-05-12 Richard Stallman + + * text.texi (Margins): indent-to-left-margin is not the default. + (Mode-Specific Indent): For indent-line-function, the default + is indent-relative. + + * modes.texi (Example Major Modes): Explain last line of text-mode + is redundant. + +2007-05-10 Richard Stallman + + * keymaps.texi (Scanning Keymaps): Update where-is-internal example. + + * help.texi (Keys in Documentation): Add reference to + Documentation Tips. + + * files.texi (Format Conversion): TO-FN gets three arguments. + + * modes.texi (Auto Major Mode): Document file-start-mode-alist. + +2007-05-10 Thien-Thi Nguyen + + * elisp.texi (Top): Remove "Saving Properties" from detailed menu. + * files.texi (Format Conversion): Expand intro; add menu. + (Format Conversion Overview, Format Conversion Round-Trip) + (Format Conversion Piecemeal): New nodes/subsections. + * hooks.texi: Xref "Format Conversion" , not "Saving Properties". + * text.texi (Text Properties): Remove "Saving Properties" from menu. + (Saving Properties): Delete node/subsection. + +2007-05-07 Karl Berry + + * elisp.texi (EMACSVER): Back to 22. + +2007-05-06 Richard Stallman + + * processes.texi (Accepting Output): Revert most of previous change. + +2007-05-05 Richard Stallman + + * processes.texi (Accepting Output): accept-process-output + uses microseconds, not milliseconds. But that arg is obsolete. + +2007-05-04 Karl Berry + + * elisp.texi (EMACSVER) [smallbook]: 22.1, not 22. + +2007-05-04 Eli Zaretskii + + * tips.texi (Documentation Tips): Rearrange items to place the + more important ones first. Add an index entry for hyperlinks. + +2007-05-03 Karl Berry + + * elisp.texi (\urlcolor, \linkcolor) [smallbook]: \Black for printing. + (EMACSVER) [smallbook]: 22 for printed version. + + * control.texi (Signaling Errors) : texinfo.tex is fixed, + so restore anchor to normal position after defun. Found by Kevin Ryde. + +2007-04-26 Glenn Morris + + * elisp.texi (EMACSVER): Increase to 22.1.50. + +2007-04-28 Karl Berry + + * elisp.texi: Improve line breaks on copyright page, + similar layout to emacs manual, 8.5x11 by default. + +2007-04-24 Richard Stallman + + * text.texi (Special Properties): Add xref to Overlay Properties. + + * display.texi (Overlay Properties): Add xref to Special Properties. + +2007-04-22 Richard Stallman + + * keymaps.texi (Extended Menu Items): Move the info about + format with cached keyboard binding. + +2007-04-21 Richard Stallman + + * text.texi (Special Properties): Clarify previous change. + + * files.texi (File Name Expansion): Clarify previous change. + + * display.texi (Attribute Functions): Fix example for + face-attribute-relative-p. + +2007-04-19 Kenichi Handa + + * text.texi (Special Properties): Document composition property. + +2007-04-19 Glenn Morris + + * files.texi (File Name Expansion): Mention "superroot". + +2007-04-15 Chong Yidong + + * frames.texi (Multiple Displays): Add note about "multi-monitor" + setups. + (Display Feature Testing): Note that display refers to all + physical monitors for multi-monitor setups. + +2007-04-14 Richard Stallman + + * lists.texi (Sets And Lists): Clarify `delete' examples. + Remove spurious xref to same node. + Clarify xref for add-to-list. + +2007-04-12 Nick Roberts + + * keymaps.texi (Format of Keymaps): Remove spurious ")" from + value of lisp-mode-map. + +2007-04-11 Karl Berry + + * anti.texi (Antinews): + * display.texi (Overlay Properties, Defining Images): + * processes.texi (Synchronous Processes, Sentinels): + * syntax.texi (Syntax Table Internals): + * searching.texi (Regexp Special): + * nonascii.texi (Default Coding Systems): + * text.texi (Special Properties): + * minibuf.texi (Basic Completion): Wording to improve breaks in + 8.5x11 format. + * elisp.texi (smallbook): New @set to more easily switch between + smallbook and 8.5x11. + +2007-04-11 Richard Stallman + + * text.texi (Lazy Properties): Minor fix. + +2007-04-08 Karl Berry + + * symbols.texi (Plists and Alists): Period after "vs" in index entries. + * macros.texi (Backquote): Downcase Backquote in index entries for + consistency. + +2007-04-08 Richard Stallman + + * text.texi (Adaptive Fill): Just describe default, + don't show it (since it contains non-ASCII chars). + +2007-04-07 Karl Berry + + * text.texi (Adaptive Fill) [@iftex]: Omit binary characters in + adaptive-fill-regexp's value, since they are not in the standard + TeX fonts. + +2007-04-07 Guanpeng Xu + + * display.texi (Defining Faces): Fix example. + +2007-04-07 Karl Berry + + * display.texi (Button Buffer Commands): Improve page break. + +2007-04-07 Richard Stallman + + * advice.texi (Activation of Advice): Remove redundant index entry. + + * backups.texi: Improve index entries. Remove redundant ones. + + * compile.texi (Byte Compilation): Improve index entry. + + * hash.texi (Creating Hash): Improve index entry. + + * symbols.texi (Definitions): Improve index entry. + + * edebug.texi: Improve index entries. Remove redundant/useless ones. + + * maps.texi (Standard Keymaps): Remove useless index entry. + + * help.texi (Documentation Basics): Remove redundant index entries. + + * customize.texi: Improve index entries. + Remove redundant/useless ones. + + * locals.texi (Standard Buffer-Local Variables): Clarify intro text. + + * streams.texi (Output Variables): Improve index entry. + + * abbrevs.texi (Abbrevs): Remove useless index entry. + + * macros.texi (Expansion): Remove useless index entry. + + * text.texi: Improve index entries. Remove redundant/useless ones. + (Text Properties, Examining Properties) + (Special Properties): Use "property category" instead of "category" + to refer to the `category' property. + + * positions.texi: Improve index entries. Remove useless one. + + * lists.texi: Improve index entries. Remove redundant/useless ones. + + * os.texi: Improve index entries. + (Timers): Fix previous change. + + * buffers.texi: Improve index entries. + (Modification Time): Get rid of term "obsolete buffer". + + * debugging.texi: Improve index entries. + (Test Coverage): Add xref to other test coverage ftr. + + * eval.texi: Improve index entry. Remove redundant ones. + + * numbers.texi: Improve index entries. Remove redundant/useless ones. + + * files.texi: Improve index entries. Remove redundant/useless ones. + + * objects.texi: Improve index entries. + + * processes.texi: Improve index entries. + + * modes.texi: Improve index entry. Remove redundant one. + + * nonascii.texi: Improve index entries. + + * internals.texi: Improve index entries. + + * syntax.texi: Improve index entries. + + * keymaps.texi (Active Keymaps): Improve index entries. + + * commands.texi: Improve index entries. Remove redundant/useless ones. + + * frames.texi: Improve index entries. Remove redundant/useless ones. + + * markers.texi: Improve index entries. Remove redundant ones. + + * tips.texi: Improve index entries. + + * loading.texi (Unloading): Improve index entry. + + * variables.texi: Improve index entries. Remove redundant one. + + * sequences.texi: Improve index entry. + + * display.texi: Improve index entries. Remove redundant ones. + + * windows.texi: Improve index entries. + + * searching.texi: Improve index entries. Remove redundant one. + + * strings.texi (Case Tables): Improve last change. + +2007-04-04 Chong Yidong + + * strings.texi (Case Tables): Document with-case-table and + ascii-case-table. + +2007-04-03 Karl Berry + + * processes.texi (Network): Reword to improve page break. + +2007-04-03 Eli Zaretskii + + * functions.texi (Inline Functions): Describe more disadvantages + of defsubst, and make advice against it stronger. + +2007-04-02 Karl Berry + + * backups.texi (Backup Names): Avoid widow words. + * modes.texi (Example Major Modes): Align last comment. + +2007-04-01 Chong Yidong + + * keymaps.texi (Remapping Commands): Document new arg to + command-remapping. + +2007-04-01 Karl Berry + + * processes.texi (Low-Level Network): Typo. + * loading.texi (Hooks for Loading): Avoid double "the". + * keymaps.texi (Key Sequences): No double "and". + (Changing Key Bindings): Shorten to improve line break. + +2007-03-31 Glenn Morris + + * os.texi (Timers): Fix description of run-at-time TIME formats. + +2007-03-31 Richard Stallman + + * display.texi (Invisible Text): Correct buffer-invisibility-spec + regarding ellipsis. + +2007-03-31 Eli Zaretskii + + * intro.texi (nil and t): + * symbols.texi (Plists and Alists): + * variables.texi (Variable Aliases, Constant Variables): + * functions.texi (Defining Functions): + * advice.texi (Advising Primitives): + * debugging.texi (Syntax Errors, Compilation Errors): + * minibuf.texi (Minibuffer Windows): + * commands.texi (Adjusting Point): + * modes.texi (Syntactic Font Lock, Faces for Font Lock) + (Auto Major Mode, Major Mode Conventions): + * help.texi (Describing Characters): + * files.texi (Create/Delete Dirs, Information about Files) + (File Locks, Writing to Files, Reading from Files) + (Saving Buffers): + * windows.texi (Resizing Windows, Cyclic Window Ordering): + * frames.texi (Finding All Frames): + * positions.texi (Buffer End, Motion): + * markers.texi (The Region): + * text.texi (Deletion, Near Point): + * display.texi (Displaying Messages, Truncation): + * os.texi (Processor Run Time): + * tips.texi (Key Binding Conventions, Programming Tips) + (Warning Tips, Documentation Tips, Comment Tips): + * internals.texi (Memory Usage): Improve indexing. + + * variables.texi (Frame-Local Variables): + * functions.texi (Argument List): + * loading.texi (Library Search): + * streams.texi (Output Variables): + * keymaps.texi (Translation Keymaps, Searching Keymaps): + * searching.texi (Replacing Match, Search and Replace): + * processes.texi (Byte Packing, Decoding Output) + (Accepting Output, Network Servers, Shell Arguments): + * display.texi (Abstract Display, Image Cache, Scroll Bars): + * windows.texi (Window Point, Window Start): + * frames.texi (Management Parameters, Frame Parameters, Frame Titles): + * commands.texi (Reading Input, Keyboard Events): + * minibuf.texi (Reading File Names, Minibuffer Completion) + (Recursive Mini): + * positions.texi (List Motion): + * hash.texi (Hash Tables, Creating Hash, Defining Hash): + * numbers.texi (Arithmetic Operations, Math Functions) + (Predicates on Numbers, Comparison of Numbers): + (Numeric Conversions): + * locals.texi (Standard Buffer-Local Variables): + * maps.texi (Standard Keymaps): + * os.texi (User Identification, System Environment, Recording Input) + (X11 Keysyms): + * nonascii.texi (Non-ASCII Characters, Splitting Characters): + * backups.texi (Backups and Auto-Saving): + * customize.texi (Customization, Group Definitions) + (Variable Definitions): + * compile.texi (Byte Compilation): Improve index entries. + +2007-03-31 Karl Berry + + * macros.texi (Defining Macros): Avoid widow syllable. + +2007-03-31 Eli Zaretskii + + * elisp.texi (Top): Postscript -> PostScript. + + * display.texi (Images, Postscript Images): Postscript -> PostScript. + +2007-03-31 Markus Triska + + * internals.texi (Writing Emacs Primitives): Untabify `For'. + +2007-03-30 Karl Berry + + * lists.texi (List-related Predicates): Remove spurious @need. + (Setcdr): Use @smallexample to improve page break. + (Association Lists) : Reword to improve page break. + + * strings.texi (String Conversion): Insert blank line to improve + page break. + + * numbers.texi (Random Numbers): Use @minus{}. + (Math Functions): Use @minus{}. + + * intro.texi (Acknowledgements): Avoid line breaks before middle + initials. + +2007-03-24 Eli Zaretskii + + * errors.texi (Standard Errors): Add an index entry. + +2007-03-19 Richard Stallman + + * os.texi (Recording Input): recent-keys now gives 300 keys. + +2007-03-12 Glenn Morris + + * os.texi: Replace "daylight savings" with "daylight saving" + throughout. + +2007-03-05 Richard Stallman + + * variables.texi (File Local Variables): Update + enable-local-variables values. + +2007-03-04 Richard Stallman + + * syntax.texi (Control Parsing): Minor clarification. + + * strings.texi (Formatting Strings): Clarify width, precision, flags. + + * sequences.texi (Sequence Functions): Move string-bytes away, + add xref. + + * nonascii.texi (Text Representations): Move string-bytes here. + + * modes.texi (Major Mode Conventions): Fundamental mode is exception. + + * minibuf.texi (Basic Completion): Minor clarification. + + * markers.texi (The Mark): Clarify existence vs activation of mark. + Other cleanup. + + * display.texi (Finding Overlays): Write better example. + + * compile.texi (Eval During Compile): Clarify putting macros + in eval-when-compile. + +2007-02-25 Vinicius Jose Latorre + + * loading.texi (How Programs Do Loading): Fix anchor position at + load-read-function definition doc. (tiny change) + +2007-02-21 Kim F. Storm + + * strings.texi (Text Comparison): Mention that assoc-string + converts symbols to strings before testing. + +2007-02-17 Kim F. Storm + + * processes.texi (Bindat Spec): Vector types can have optional + element type. + (Bindat Examples): Fix example. Add vector with element type. + +2007-02-16 Andreas Schwab + + * strings.texi (Formatting Strings): Document '+' flag. + +2007-02-15 Juanma Barranquero + + * strings.texi (Modifying Strings): Clarify that `clear-string' + always converts the string to unibyte. + +2007-02-14 Kim F. Storm + + * display.texi (Glyphs): Add make-glyph-code, glyph-char, glyph-face. + Rewrite glyph code description to refer to these functions. + Remove details of encoding face number and char into integer code. + +2007-02-03 Alan Mackenzie + + * loading.texi (Hooks for Loading): Make the description of + `eval-after-load' more detailed, and amend the description of + after-load-alist, in accordance with changes from 2006-05. + +2007-02-03 Chong Yidong + + * modes.texi (Defining Minor Modes): Document that a :require + keyword or similar may be required to make saved customization + variables work. + +2007-02-03 Eli Zaretskii + + * elisp.texi (Top): Make the detailed menu headers compliant with + Texinfo guidelines and with what texnfo-upd.el expects. Add + comments to prevent people from inadvertently modifying the key + parts needed by `texinfo-multiple-files-update'. + +2007-02-02 Eli Zaretskii + + * elisp.texi (Top): Update the top-level menus. + + * syntax.texi (Categories): Add index entries. + +2007-02-01 Juanma Barranquero + + * display.texi (Attribute Functions): Fix name and description of + the UNDERLINE arg of `set-face-underline-p'. + +2007-01-29 Eli Zaretskii + + * elisp.texi (Top): Add "Standard Errors", "Standard Buffer-Local + Variables", and "Standard Keymaps" to the detailed menu. + + * variables.texi (Future Local Variables): Add index entry. + +2007-01-28 Richard Stallman + + * tips.texi (Coding Conventions): Clarify the tip about macros + that define a function or a variable. + + * files.texi (File Attributes): UID and GID can be floats. + (Magic File Names): Explain why deferring all operations to + the standard handler does not work. + +2007-01-23 Martin Rudalics + + * backups.texi (Reverting): Use "buffer" instead of "file" + when talking about major and minor modes. + +2007-01-21 Richard Stallman + + * help.texi (Documentation): Add xref to Documentation Tips. + +2007-01-14 Juanma Barranquero + + * tips.texi (Coding Conventions): Fix typos. + +2007-01-05 Richard Stallman + + * modes.texi (Defining Minor Modes): Fix previous change. + +2007-01-03 Richard Stallman + + * customize.texi (Variable Definitions, Customization Types): + Don't use * in doc string for defcustom. + +2007-01-02 Richard Stallman + + * variables.texi (Variable Aliases): Clarify that aliases vars + always have the same value. + + * processes.texi (Bindat Spec): Fix Texinfo usage. + + * modes.texi (Defining Minor Modes): Explain effect of command + defined with define-global-minor-mode on new buffers. + +2006-12-30 Kim F. Storm + + * keymaps.texi (Tool Bar): Describe `grow-only' value of + `auto-resize-tool-bars'. + +2006-12-30 Richard Stallman + + * keymaps.texi (Active Keymaps): Fix previous change. + +2006-12-30 Nick Roberts + + * keymaps.texi (Active Keymaps): Make xref to lookup-key. + +2006-12-30 Kim F. Storm + + * processes.texi (Bindat Spec): Clarify using field names in + length specifications. + +2006-12-29 Kim F. Storm + + * processes.texi (Bindat Spec): Explain eval forms and lengths better. + Add count and index variables for eval forms in repeat blocks. + +2006-12-24 Richard Stallman + + * customize.texi (Variable Definitions): Document + new name custom-add-frequent-value. + +2006-12-19 Kim F. Storm + + * commands.texi (Misc Events): User signals now result in sigusr1 + and sigusr2 events which are handled through special-event-map. + (Special Events): User signals and drag-n-drop are special. + +2006-12-17 Richard Stallman + + * loading.texi (Named Features): Explain subfeatures better. + + * customize.texi: Use "option" only for user options. + For the keyword values inside defcustom etc, say "keywords". + For :options value's elements, say "elements". + :group should not be omitted. + + * syntax.texi (Parsing Expressions): Split up node. + (Motion via Parsing, Position Parse, Parser State) + (Low-Level Parsing, Control Parsing): New subnodes. + (Parser State): Document syntax-ppss-toplevel-pos. + + * positions.texi (List Motion): Punctuation fix. + + * files.texi (File Name Completion): Document PREDICATE arg + to file-name-completion. + +2006-12-16 Eli Zaretskii + + * internals.texi (Building Emacs, Writing Emacs Primitives): + Add index entries. + +2006-12-11 Richard Stallman + + * modes.texi (Font Lock Basics): Explain how nil for font-lock-defaults + affects face menu. Explain how to make it non-nil without enabling + any fontification. + +2006-12-10 Chong Yidong + + * modes.texi (Font Lock Basics): Document nil value of + font-lock-defaults. + +2006-12-10 Glenn Morris + + * abbrevs.texi (Defining Abbrevs): Mention `define-abbrev' 'force + value for system-flag argument. Abbrev tables may not be empty + when major modes are loaded. + +2006-12-08 Juanma Barranquero + + * makefile.w32-in (maintainer-clean): Partially revert last + change; delete "elisp-?" and "elisp-??" instead of "elisp-*" + to protect elisp-covers.texi. + +2006-12-07 Juanma Barranquero + + * makefile.w32-in (maintainer-clean): Depend on `distclean'. + Don't remove elisp* info files; they are already deleted by the + `clean' and `distclean' targets, and they are in the $(infodir) + directory, not the current one. + +2006-12-04 Kim F. Storm + + * commands.texi (Misc Events): Update signal events. + (Event Examples): Add signal example. + +2006-11-29 Richard Stallman + + * frames.texi (Visibility of Frames): Explain visible windows + can be covered by others. Add xref for raise-frame. + +2006-11-28 Richard Stallman + + * searching.texi (Regexp Special): Update when ^ is special. + +2006-11-27 Eli Zaretskii + + * customize.texi (Customization, Common Keywords) + (Group Definitions, Variable Definitions, Composite Types) + (Type Keywords, Customization Types): Add index entries for + various customization keywords. + +2006-11-23 Stefan Monnier + + * modes.texi (Multiline Font Lock): Rephrase some parts for clarity. + +2006-11-10 Jan Dj,Ad(Brv + + * frames.texi (Window System Selections): Remove clipboard from + description of selection-coding-system. + +2006-11-06 Richard Stallman + + * lists.texi (List Variables): Document COMPARE-FN. + + * keymaps.texi: Avoid use of "binding" to mean a relation; + use it only to refer to the meaning associated with a key. + (Keymaps): Change menu node description. + + * elisp.texi (Top): Change menu node description. + + * display.texi (Managing Overlays): Document overlay-recenter. + +2006-10-29 Chong Yidong + + * Makefile.in: Use relative paths to avoid advertising filesystem + contents during compilation. + +2006-10-23 Kim F. Storm + + * commands.texi (Event Input Misc): Update unread-command-events. + +2006-10-23 Nick Roberts + + * lists.texi (Sets And Lists): Fix typos. + +2006-10-18 Juanma Barranquero + + * control.texi (Processing of Errors): Use @var for an argument, + not @code. + +2006-10-16 Richard Stallman + + * edebug.texi (Edebug Recursive Edit): Minor cleanup. + + * keymaps.texi (Format of Keymaps): Show all the keymap element + patterns that result from menu items. + (Key Lookup): Minor cleanups. + + * modes.texi (Precalculated Fontification): Don't say that + not setting font-lock-defaults avoids loading font-lock. + + * help.texi (Documentation): Move xref to Emacs Manual here. + (Documentation Basics): From here. + Also doc emacs-lisp-docstring-fill-column. + + * elisp.texi: Update version and ISBN. + + * commands.texi (Interactive Call): Clarify KEYS arg to + call-interactively is a vector. + (Command Loop Info): Delete anchor in this-command-keys. + Add anchor in this-command-keys-vector. + (Recursive Editing): Document how recursive-edit + handles the current buffer. + +2006-10-13 Chong Yidong + + * frames.texi (Frame Titles): %c and %l are ignored in + frame-title-format. + +2006-10-11 Richard Stallman + + * keymaps.texi (Key Sequences): Clarify use of kbd. + +2006-10-10 Kim F. Storm + + * lists.texi (Sets And Lists): Add memql. + +2006-10-03 Richard Stallman + + * searching.texi (Char Classes): Document :multibyte: and :unibyte:. + Clarify :ascii: and :nonascii:. + +2006-09-29 Juri Linkov + + * modes.texi (%-Constructs): Reorder coding systems in the + documentation of %z to the real order displayed in the modeline. + +2006-09-25 Richard Stallman + + * os.texi (Timers): Describe timer-max-repeats. + +2006-09-25 Chong Yidong + + * os.texi (Timers): Mention with-local-quit. + +2006-09-24 Richard Stallman + + * searching.texi (Searching and Matching): Mention property search. + + * commands.texi (Command Loop Info): Explain how read-event affects + this-command-keys. + +2006-09-20 Richard Stallman + + * os.texi (Timers): Clarify about REPEAT when timer is delayed. + + * windows.texi (Window Start): Minor cleanups. + +2006-09-20 Kim F. Storm + + * windows.texi (Window Start): pos-visible-in-window-p allows + specifying t for position to mean "end of window". + Add window-line-height. + + * anti.texi (Antinews): Mention window-line-height. + +2006-09-19 David Kastrup + + * keymaps.texi (Searching Keymaps): Small clarification. + +2006-09-18 Richard Stallman + + * keymaps.texi (Creating Keymaps): Explain that keymap prompt strings + cause keyboard menus. + (Menu Keymaps): Likewise. + (Defining Menus, Keyboard Menus): Clarify. + + * text.texi (Fields): Clarify explanation of constrain-to-field. + +2006-09-16 Eli Zaretskii + + * variables.texi (Tips for Defining): Fix a typo. + +2006-09-15 Richard Stallman + + * keymaps.texi (Remapping Commands, Searching Keymaps) + (Active Keymaps): Clean up previous change. + +2006-09-15 Jay Belanger + + * gpl.texi: Replace "Library Public License" by "Lesser Public + License" throughout. + +2006-09-15 David Kastrup + + * keymaps.texi (Active Keymaps): Adapt description to use + `get-char-property' instead `get-text-property'. Explain how + mouse events change this. Explain the new optional argument of + `key-binding' and its mouse-dependent lookup. + (Searching Keymaps): Adapt description similarly. + (Remapping Commands): Explain the new optional argument of + `command-remapping'. + +2006-09-14 Richard Stallman + + * keymaps.texi (Searching Keymaps): Clarification. + (Active Keymaps): Refer to Searching Keymaps instead of duplication. + +2006-09-13 Richard Stallman + + * objects.texi (Character Type): Node split. + Add xref to Describing Characters. + (Basic Char Syntax, General Escape Syntax) + (Ctl-Char Syntax, Meta-Char Syntax): New subnodes. + +2006-09-11 Richard Stallman + + * display.texi (Display Table Format): Wording clarification. + (Glyphs): Clarifications. + +2006-09-10 Chong Yidong + + * keymaps.texi (Active Keymaps): Mention that key-binding checks + local maps. + +2006-09-10 Kim F. Storm + + * display.texi (Forcing Redisplay): Document return value of + function redisplay. + +2006-09-09 Richard Stallman + + * windows.texi (Window Hooks): Explain limits of + window-scroll-functions. + + * display.texi (Fringe Indicators): Update for last change in + indicate-buffer-boundaries. + +2006-09-08 Richard Stallman + + * processes.texi (Bindat Spec): Suggest names ending in -bindat-spec. + +2006-09-06 Kim F. Storm + + * frames.texi (Display Feature Testing): display-mm-dimensions-alist. + + * windows.texi (Window Start): Update pos-visible-in-window-p. + +2006-09-04 Richard Stallman + + * processes.texi (Accepting Output): Explain SECONDS=0 for + accept-process-output. + + * os.texi (Idle Timers): Explain why timer functions should not + loop until (input-pending-p). + +2006-09-02 Eli Zaretskii + + * makefile.w32-in (usermanualdir): New variable. + (elisp.dvi): Use it. + +2006-09-01 Eli Zaretskii + + * buffers.texi (Buffer Modification): Fix last change. + +2006-09-01 Chong Yidong + + * buffers.texi (Buffer Modification): Document + buffer-chars-modified-tick. + +2006-08-31 Richard Stallman + + * modes.texi (Syntactic Font Lock): Mention specific faces once again. + +2006-08-31 Richard Bielawski (tiny change) + + * modes.texi (Syntactic Font Lock): + Mention font-lock-syntactic-face-function + instead of specific faces. + +2006-08-29 Chong Yidong + + * display.texi (Images): Add xrref to display-images-p. + +2006-08-28 Kenichi Handa + + * nonascii.texi (Lisp and Coding Systems): Fix description of + detect-coding-region. + +2006-08-27 Michael Olson + + * processes.texi (Transaction Queues): Remove stray quote + character. + +2006-08-25 Richard Stallman + + * os.texi (Idle Timers): run-with-idle-timer allows Lisp time value. + Add xref. + +2006-08-24 Chong Yidong + + * os.texi (Timers): Avoid waiting inside timers. + +2006-08-21 Lute Kamstra + + * Makefile.in: Use ../man/texinfo.tex to build elisp.dvi. + +2006-08-20 Richard Stallman + + * os.texi (Idle Timers): New node, split out from Timers. + Document current-idle-time. + * commands.texi (Reading One Event): Update xref. + * elisp.texi (Top): Update subnode menu. + +2006-08-16 Richard Stallman + + * keymaps.texi (Extended Menu Items): Show format of cached + bindings in extended menu items. + + * customize.texi (Variable Definitions): Explain when the + standard value expression is evaluated. + +2006-08-15 Chong Yidong + + * commands.texi (Reading One Event): Explain idleness in + `read-event'. + +2006-08-12 Chong Yidong + + * text.texi (Near Point): Say "cursor" not "terminal cursor". + (Commands for Insertion): Removed split-line since it's not + relevant for Lisp programming. + (Yank Commands): Rewrite introduction. + (Undo): Clarify. + (Maintaining Undo): Clarify. Document undo-ask-before-discard. + (Filling): Remove redundant comment. Clarify return value of + current-justification. + (Margins): Minor clarifications. + (Adaptive Fill): Update default value of adaptive-fill-regexp. + (Sorting): Update definition of sort-lines. + (Columns): Clarify behavior of sort-columns. + (Indent Tabs): Link to Tab Stops in Emacs manual. + (Special Properties): Clarify. + (Clickable Text): Mention Buttons package. + +2006-08-12 Kevin Ryde + + * os.texi (Time Parsing): Add %z to description of + format-time-string, as per docstring. Add cross reference to + glibc manual for strftime. + +2006-08-08 Richard Stallman + + * modes.texi: Clean up wording in previous change. + +2006-08-07 Chong Yidong + + * modes.texi (Hooks): Clarify. + (Major Mode Basics): Mention define-derived-mode explicitly. + (Major Mode Conventions): Rebinding RET is OK for some modes. + Mention change-major-mode-hook and after-change-major-mode-hook. + (Example Major Modes): Moved to end of Modes section. + (Mode Line Basics): Clarify. + (Mode Line Data): Mention help-echo and local-map in strings. + Explain reason for treatment of non-risky variables. + (Properties in Mode): Clarify. + (Faces for Font Lock): Add font-lock-negation-char-face. + +2006-08-04 Eli Zaretskii + + * strings.texi (Formatting Strings): Warn against arbitrary + strings as first arg to `format'. + +2006-07-31 Thien-Thi Nguyen + + * text.texi (Clickable Text): Mention `help-echo' text property. + Update intro, examples and associated explanations. + +2006-07-31 Richard Stallman + + * commands.texi: Update xrefs. + (Event Mod): New node, cut out from old Translating Input. + + * maps.texi: Update xrefs. + + * keymaps.texi (Translation Keymaps): New node. + Update xrefs from Translating Input to Translation Keymaps. + + * elisp.texi (Top): Update subnode menu. + + * display.texi (Face Functions): Fix explanations of FRAME=t or nil. + + * os.texi (System Interface): Fix menu descriptions of some nodes. + (Translating Input): Node deleted. + +2006-07-31 Nick Roberts + + * modes.texi (Minor Mode Conventions): Update xref for add-to-list. + + * lists.texi (Sets And Lists): Likewise. + +2006-07-30 Thien-Thi Nguyen + + * text.texi (Fields): Mention POS + requirement when narrowing is in effect. + +2006-07-28 Richard Stallman + + * display.texi (Face Attributes): Simplify wording. + (Attribute Functions): Clarify meaning of new-frame default + attribute settings. + + * customize.texi (Common Keywords): Document how to use + :package-version in a package not in Emacs. + +2006-07-28 Kim F. Storm + + * commands.texi (Reading One Event): Fix last change. + +2006-07-26 Chong Yidong + + * commands.texi (Reading One Event): Document SECONDS argument for + read-event, read-char, and read-char-exclusive. + +2006-07-25 Stefan Monnier + + * modes.texi (Multiline Font Lock): Can't use jit-lock-defer-multiline + to ensure correct identification. + +2006-07-24 Richard Stallman + + * text.texi (Clickable Text): Clarify. + + * sequences.texi (Vector Functions): Delete duplicate xref. + + * objects.texi (Function Type): Clarify. + + * modes.texi (Keymaps and Minor Modes): List punct chars for minor + modes. + + * lists.texi (List Variables): New node. + Material moved from other nodes. + + * variables.texi (Setting Variables): add-to-list and + add-to-ordered-list moved to List Variables node. + +2006-07-23 Thien-Thi Nguyen + + * text.texi (Links and Mouse-1): + For mouse-on-link-p, expand on arg POS. + +2006-07-21 Kim F. Storm + + * display.texi (Forcing Redisplay): Don't mention systems which + don't support sub-second timers for redisplay-preemption-period. + + * os.texi (Terminal Output): Clarify text vs graphical terminal. + +2006-07-21 Eli Zaretskii + + * frames.texi (Input Focus): Document that focus-follows-mouse has + no effect on MS-Windows. + +2006-07-18 Richard Stallman + + * display.texi (Forcing Redisplay): Cleanups in previous change. + + * processes.texi (Low-Level Network): Make menu more convenient. + +2006-07-18 Kim F. Storm + + * display.texi (Forcing Redisplay): redisplay-preemption-period + only used on window systems. Add xref to Terminal Output. + + * os.texi (Terminal Output): baud-rate only controls preemption on + non-window systems. Add xref to Forcing Redisplay. + + * processes.texi (Low-Level Network): Rename node "Make Network" + to "Network Processes". + +2006-07-18 Karl Berry + + * variables.texi, functions.texi, customize.texi, loading.texi: + * edebug.texi, minibuf.texi: Fix page breaks through chapter 20. + +2006-07-17 Chong Yidong + + * commands.texi (Waiting): Document batch-mode sit-for behavior. + +2006-07-17 Richard Stallman + + * eval.texi, elisp.texi, text.texi: Use real doublequote inside menus. + Put period and comma inside quotes. + + * loading.texi, markers.texi: Use real doublequote inside menus. + + * windows.texi: Put point and comma inside quotes. + (Textual Scrolling): Use @samp for error message. + + * variables.texi, tips.texi, syntax.texi, symbols.texi: + * strings.texi, streams.texi, processes.texi, os.texi: + * objects.texi, numbers.texi, modes.texi, minibuf.texi: + * lists.texi, keymaps.texi, intro.texi, hash.texi, internals.texi: + * gpl.texi, functions.texi, files.texi, frames.texi, doclicense.texi: + * display.texi, control.texi, commands.texi, buffers.texi, anti.texi: + Put point and comma inside quotes. + + * control.texi (Processing of Errors): Add command-error-function. + + * variables.texi (File Local Variables): Clarify that + file local variables make buffer-local bindings. + + * modes.texi (Syntactic Font Lock): Give default for + font-lock-syntax-table. + +2006-07-17 Nick Roberts + + * text.texi (Special Properties): Clean up previous change. + +2006-07-16 Karl Berry + + * objects.texi, numbers.texi, strings.texi, lists.texi, hash.texi: + * control.texi: Fix bad page breaks through chapter 10 (control). + + * anti.texi (Antinews): Reorder face-attribute fns to avoid + underfull hbox. + +2006-07-15 Nick Roberts + + * text.texi (Special Properties): Describe fontified text property + in relation to a character (not text). + +2006-07-15 Kim F. Storm + + * maps.texi (Standard Keymaps): Add xref for minibuffer maps. + Add apropos-mode-map, custom-mode-map, esc-map, global-map, + grep-mode-map, help-map, help-mode-map, kmacro-map, and tool-bar-map. + + * anti.texi (Antinews): Mention redisplay function. + The kbd macro existed, but was not documented, before 22.x. + Function pos-visible-in-window-p is not new in 22.x, just enhanced. + +2006-07-14 Nick Roberts + + * display.texi (Displaying Messages): Add anchor. + + * frames.texi (Dialog Boxes): Use it. + +2006-07-12 Richard Stallman + + * objects.texi (Frame Type): Explain nature of frames better. + + * frames.texi (Frames): Explain nature of frames better. + +2006-07-12 Ken Manheimer + + * tips.texi (Coding Conventions): Explain why use cl at compile time. + +2006-07-12 YAMAMOTO Mitsuharu + + * frames.texi (Window System Selections): Mention scrap support for Mac. + Default value of x-select-enable-clipboard is t on Mac. + + * os.texi (Getting Out): Suspending is not allowed on Mac, either. + +2006-07-11 Kim F. Storm + + * display.texi (Forcing Redisplay): Add `redisplay' function. + Don't mention (sit-for -1) -- use (redisplay t) instead. + + * commands.texi (Waiting): (sit-for -1) is no longer special. + (sit-for 0) is equivalent to (redisplay). + Iconifying/deiconifying no longer makes sit-for return. + +2006-07-10 Nick Roberts + + * display.texi (Buttons): Fix typo. + + * index.texi, elisp.texi (New Symbols): Comment node out. + +2006-07-09 Richard Stallman + + * display.texi (Truncation): Clean up previous change. + +2006-07-08 Richard Stallman + + * commands.texi (Interactive Call): Use 3 as prefix in example + for execute-extended-command. + + * display.texi (Attribute Functions): Move paragraph about + compatibility with Emacs < 21. + +2006-07-09 Kim F. Storm + + * display.texi (Refresh Screen): Clarify force-window-update. + (Truncation): "Normally" indicated by fringe arrows. + +2006-07-08 Eli Zaretskii + + * windows.texi (Textual Scrolling, Resizing Windows): + * variables.texi (Constant Variables): + * text.texi (Buffer Contents, Deletion, Changing Properties) + (Property Search, Special Properties, Sticky Properties) + (Links and Mouse-1, Fields, Change Hooks): + * syntax.texi (Syntax Table Functions, Parsing Expressions) + (Categories): + * symbols.texi (Other Plists): + * streams.texi (Output Variables): + * processes.texi (Input to Processes, Query Before Exit): + * positions.texi (Word Motion, Text Lines, List Motion): + * os.texi (Init File, System Environment, Sound Output) + (Session Management): + * nonascii.texi (Text Representations, Character Sets) + (Chars and Bytes, Locales): + * modes.texi (Defining Minor Modes, Header Lines): + * minibuf.texi (Minibuffer Contents): + * markers.texi (Information from Markers): + * lists.texi (List Elements, Building Lists, Association Lists): + * keymaps.texi (Tool Bar): + * hash.texi (Creating Hash, Hash Access, Defining Hash, Other Hash): + * functions.texi (What Is a Function, Mapping Functions): + * frames.texi (Creating Frames, Parameter Access, Pointer Shape) + (Color Names, Text Terminal Colors, Display Feature Testing): + * files.texi (Visiting Functions, File Name Components) + (Unique File Names, Contents of Directories): + * display.texi (Forcing Redisplay, Displaying Messages) + (Temporary Displays, Font Selection, Auto Faces) + (Font Lookup, Fringe Indicators, Display Margins) + (Image Descriptors, Showing Images, Image Cache, Button Types) + (Making Buttons, Manipulating Buttons, Button Buffer Commands) + (Display Table Format, Glyphs): + * control.texi (Iteration): + * commands.texi (Command Loop Info, Adjusting Point): + * backups.texi (Making Backups, Auto-Saving): + Remove @tindex entries. + +2006-07-07 Kim F. Storm + + * display.texi (Fringe Cursors): Fix typo. + (Customizing Bitmaps): Fix define-fringe-bitmap entry. + (Overlay Arrow): Default is overlay-arrow fringe indicator. + +2006-07-05 Richard Stallman + + * text.texi (Buffer Contents): Add example of text props + in result of buffer-substring. + (Text Properties): Explain better about use of specific property names. + (Property Search): Some cleanups; reorder some functions. + + * keymaps.texi (Changing Key Bindings): Cleanup. + Add xref to Key Binding Conventions. + + * display.texi (Attribute Functions): Add examples for + face-attribute-relative-p. + + * tips.texi (Coding Conventions): Cleanup last change. + +2006-07-05 Karl Berry + + * elisp.texi: Use @fonttextsize 10pt, a la emacs.texi. + Remove @setchapternewpage odd. + Result is 1013 pages, down from 1100. + + * anti.texi, customize.texi, display.texi, internals.texi: + * minibuf.texi, modes.texi, tips.texi: + Fix overfull/underfull boxes. + +2006-07-05 Thien-Thi Nguyen + + * edebug.texi (Instrumenting): + Add Edebug-specific findex for eval-buffer. + * loading.texi (Loading): + Replace eval-current-buffer with eval-buffer. + +2006-06-30 Nick Roberts + + * locals.texi (Standard Buffer-Local Variables): Update the list + of variables. + +2006-06-26 Nick Roberts + + * files.texi (File Name Completion): Point user to the node + "Reading File Names". + +2006-06-24 Eli Zaretskii + + * files.texi (Contents of Directories): Document case-insensitive + behavior on respective filesystems. + + * objects.texi (Character Type): Document that Emacs signals an + error for unsupported Unicode characters specified as \uNNNN. + +2006-06-19 Richard Stallman + + * processes.texi (Bindat Spec): Clarify previous change. + +2006-06-16 Richard Stallman + + * tips.texi (Coding Conventions): Better explain conventions + for definition constructs. + + * text.texi (Special Properties): String value of `read-only' + serves as the error message. + + * objects.texi (Character Type): Clarify prev. change. + (Non-ASCII in Strings): Mention \u and \U. + + * commands.texi (Using Interactive): Explain problem of + markers, etc., in command-history. + +2006-06-14 Kim F. Storm + + * commands.texi (Waiting): Negative arg to sit-for forces + redisplay even if input is pending. + + * display.texi (Forcing Redisplay): Use (sit-for -1) to force a + redisplay. Remove incorrect example of binding redisplay-dont-pause + around (sit-for 0). + +2006-06-13 Richard Stallman + + * display.texi (Forcing Redisplay): Clarify previous change. + +2006-06-13 Romain Francoise + + * display.texi (Forcing Redisplay): Fix typo. + +2006-06-13 Kim F. Storm + + * display.texi (Forcing Redisplay): Add redisplay-preemption-period. + +2006-06-10 Luc Teirlinck + + * tips.texi (Coding Conventions): Add `@end itemize'. + +2006-06-10 Richard Stallman + + * tips.texi (Coding Conventions): Explain use of coding systems + to ensure one decoding for strings. + +2006-06-09 Aidan Kehoe + + * objects.texi (Character Type): Describe the \uABCD and \U00ABCDEF + syntax. + +2006-06-07 Eli Zaretskii + + * display.texi (Font Selection): Remove description of + clear-face-cache. + + * compile.texi (Eval During Compile): Fix a typo. Add index + entries for possible uses of eval-when-compile. + +2006-06-04 Thien-Thi Nguyen + + * display.texi (Abstract Display): Fix typo. + +2006-06-03 Eli Zaretskii + + * minibuf.texi (Minibuffer History) : + Reword variable's description. + +2006-06-01 Richard Stallman + + * windows.texi (Splitting Windows): Clarify splitting nonselected + window. + +2006-05-31 Juri Linkov + + * minibuf.texi (Minibuffer History): Add history-add-new-input. + +2006-05-30 Richard Stallman + + * display.texi (Line Height): Fix errors in description of + default line height and line-height properyty. + + * nonascii.texi (Default Coding Systems): Further clarification. + +2006-05-29 Luc Teirlinck + + * internals.texi (Pure Storage): Mention that an overflow in pure + space causes a memory leak. + (Garbage Collection): If there was an overflow in pure space, + `garbage-collect' returns nil. + +2006-05-30 Eli Zaretskii + + * nonascii.texi (Default Coding Systems): Fix it some more. + +2006-05-29 Eli Zaretskii + + * nonascii.texi (Default Coding Systems): Fix last change. + +2006-05-29 Kenichi Handa + + * nonascii.texi (find-operation-coding-system): Describe the new + argument format (FILENAME . BUFFER). + +2006-05-28 Richard Stallman + + * tips.texi (Coding Conventions): Better explain reasons not to + advise other packages or use `eval-after-load'. + +2006-05-29 Kim F. Storm + + * processes.texi (Bindat Functions): Rename `pos' and `raw-data' to + `bindat-idx' and `bindat-raw' for clarity. + +2006-05-27 Thien-Thi Nguyen + + * processes.texi (Bindat Spec): Expand on `repeat' handler. + + * display.texi (Display): Add "Abstract Display" to menu. + (Abstract Display, Abstract Display Functions) + (Abstract Display Example): New nodes. + * elisp.texi (Top): Add "Abstract Display" to menu. + +2006-05-27 Chong Yidong + + * keymaps.texi (Key Sequences): Link to input events definition. + (Format of Keymaps): Delete material duplicated in Keymap Basics. + + * files.texi (Changing Files): Document updated argument list for + copy-file. + +2006-05-27 Thien-Thi Nguyen + + * processes.texi (Bindat Functions): Explain term "total length". + Use it in bindat-length and bindat-pack descriptions. + +2006-05-26 Eli Zaretskii + + * tips.texi (Coding Conventions): Advise against using + eval-after-load in packages. Add an index entry. + +2006-05-25 Juri Linkov + + * minibuf.texi (Text from Minibuffer): Undocument keep-all. + + * modes.texi (%-Constructs): Add %e, %z, %Z. + +2006-05-25 Richard Stallman + + * elisp.texi (Top): Update subnode menu. + + * keymaps.texi (Keymap Basics): New node, split out of Key Sequences. + (Keymaps): Update menu. + +2006-05-25 Chong Yidong + + * keymaps.texi (Key Sequences): Some clarifications. + +2006-05-25 Thien-Thi Nguyen + + * processes.texi (Bindat Functions): Say "unibyte string" + explicitly for bindat-unpack and bindat-pack descriptions. + (Bindat Examples): Don't call `string-make-unibyte' in example. + +2006-05-25 Chong Yidong + + * keymaps.texi (Key Sequences): Renamed from Keymap Terminology. + Explain string and vector representations of key sequences + + * keymaps.texi (Changing Key Bindings): + * commands.texi (Interactive Codes): + * help.texi (Describing Characters): Refer to it. + +2006-05-23 Luc Teirlinck + + * frames.texi (Pointer Shape): @end table -> @end defvar. + +2006-05-22 Richard Stallman + + * elisp.texi (Top): Update subnode menus. + + * frames.texi (Pointer Shape): Node renamed from Pointer Shapes. + Contents rewritten; material from old Pointer Shape node moved here. + + * display.texi (Pointer Shape): Node deleted. + (Image Descriptors): Minor cleanup. + +2006-05-21 Richard Stallman + + * syntax.texi (Parsing Expressions): Update info on which STATE + elements are ignored. + +2006-05-19 Luc Teirlinck + + * hooks.texi (Standard Hooks): Correct typo. + + * gpl.texi (GPL): ifinfo -> ifnottex. + +2006-05-19 Michael Ernst (tiny change) + + * searching.texi (Simple Match Data): Warn about match data being + set anew by every search. + +2006-05-17 Richard Stallman + + * minibuf.texi (Minibuffer History): Clarify. + + * searching.texi (Regexp Special): Clarify nested regexp warning. + +2006-05-16 Kim F. Storm + + * minibuf.texi (Minibuffer History): Update add-to-history. + +2006-05-15 Oliver Scholz (tiny change) + + * nonascii.texi (Explicit Encoding): Fix + typo (encoding<->decoding). + +2006-05-14 Richard Stallman + + * buffers.texi (Creating Buffers): Cleanup. + + * files.texi (Visiting Functions): Rewrite in find-file-noselect. + +2006-05-13 Eli Zaretskii + + * buffers.texi (Current Buffer): Document that with-temp-buffer + disables undo. + + * os.texi (Terminal-Specific): More accurate description of how + Emacs searches for the terminal-specific libraries. + +2006-05-12 Eli Zaretskii + + * hooks.texi (Standard Hooks) [iftex]: Convert @xref's to + emacs-xtra to @inforef's. + + * text.texi (Undo): Document that undo is turned off in buffers + whose names begin with a space. + + * buffers.texi (Buffer Names): Add index entries for buffers whose + names begin with a space. + (Creating Buffers): Document that undo is turned off in buffers + whose names begin with a space. + + * files.texi (Visiting Functions, Reading from Files) + (Saving Buffers): Mention code and EOL conversions by file I/O + primitives and subroutines. + + * nonascii.texi (Lisp and Coding Systems): Document + coding-system-eol-type. Add index entries for eol conversion. + + * display.texi (Defining Faces): Mention `mac', and add an xref to + where window-system is described. + +2006-05-10 Richard Stallman + + * internals.texi (Writing Emacs Primitives): Clarify GCPRO rules. + +2006-05-10 Reiner Steib + + * variables.texi (File Local Variables): Recommend to quote lambda + expressions in safe-local-variable property. + +2006-05-09 Richard Stallman + + * variables.texi (File Local Variables): Document + safe-local-eval-forms and safe-local-eval-function. + +2006-05-07 Kim F. Storm + + * minibuf.texi (Minibuffer History): Remove keep-dups arg + from add-to-history. + +2006-05-07 Romain Francoise + + * commands.texi (Event Input Misc): + * compile.texi (Eval During Compile): + * internals.texi (Buffer Internals): + * minibuf.texi (Initial Input): + * nonascii.texi (Scanning Charsets): + * numbers.texi (Comparison of Numbers): + * windows.texi (Textual Scrolling, Vertical Scrolling): + Fix various typos. + +2006-05-06 Eli Zaretskii + + * hooks.texi (Standard Hooks): Replace inforef to emacs-xtra by + conditional xref's to either emacs or emacs-xtra, depending on + @iftex/@ifnottex. + + * minibuf.texi (Minibuffer History): Document add-to-history. + +2006-05-05 Eli Zaretskii + + * internals.texi (Pure Storage): Mention the pure overflow message + at startup. + +2006-05-05 Johan Bockg,Ae(Brd + + * keymaps.texi (Active Keymaps): Fix pseudo-Lisp syntax. + (Searching Keymaps): Fix pseudo-Lisp description of keymap + search. + +2006-05-01 Richard Stallman + + * intro.texi (nil and t): Clarify. + + * variables.texi (File Local Variables): Suggest using booleanp. + +2006-05-01 Juanma Barranquero + + * objects.texi (Type Predicates): Fix typos. + +2006-05-01 Stefan Monnier + + * intro.texi (nil and t): Add booleanp. + + * objects.texi (Type Predicates): Add links for booleanp and + string-or-null-p. + +2006-04-29 Richard Stallman + + * modes.texi (Multiline Font Lock): Rename from + Multi line Font Lock Elements. Much clarification. + (Font Lock Multiline, Region to Fontify): Much clarification. + +2006-04-29 Stefan Monnier + + * variables.texi (File Local Variables): Remove the special case t for + safe-local-variable. + +2006-04-26 Richard Stallman + + * syntax.texi (Parsing Expressions): Minor cleanup. + +2006-04-18 Richard Stallman + + * tips.texi (Coding Conventions): Explain when the package's + prefix should appear later on (not at the start of the name). + + * searching.texi (String Search): Clarify effect of NOERROR. + + * modes.texi (Imenu): Clarify what special items do. + + * hooks.texi (Standard Hooks): Delete text about old hook names. + +2006-04-17 Romain Francoise + + * variables.texi (Local Variables): Update the default value of + `max-specpdl-size'. + +2006-04-15 Michael Olson + + * processes.texi (Transaction Queues): Mention the new optional + `delay-question' argument for `tq-enqueue'. + +2006-04-13 Bill Wohler + + * customize.texi (Common Keywords): Use dotted notation for + :package-version value. Specify its values. Improve documentation + for customize-package-emacs-version-alist. + +2006-04-12 Bill Wohler + + * customize.texi (Common Keywords): Move description of + customize-package-emacs-version-alist to @defvar. + +2006-04-10 Bill Wohler + + * customize.texi (Common Keywords): Add :package-version. + +2006-04-10 Kim F. Storm + + * text.texi (Buffer Contents): Add NOPROPS arg to + filter-buffer-substring. + +2006-04-08 Kevin Ryde + + * os.texi (Command-Line Arguments): Update xref to emacs manual + "Command Arguments" -> "Emacs Invocation", per change there. + +2006-04-08 Thien-Thi Nguyen + + * display.texi (Other Display Specs): Arrange a @code{DOTTED-LIST} to + be on one line to help makeinfo not render two spaces after the dot. + +2006-04-07 Reiner Steib + + * strings.texi (Predicates for Strings): Add string-or-null-p. + +2006-03-28 Kim F. Storm + + * processes.texi (Accepting Output): Remove obsolete (and incorrect) + remarks about systems that don't support fractional seconds. + +2006-03-25 Karl Berry + + * elisp.texi: Use @copyright{} instead of (C), and do not indent + the year list. + +2006-03-21 Nick Roberts + + * display.texi (Fringe Indicators): Fix typos. + +2006-03-19 Luc Teirlinck + + * tips.texi (Documentation Tips): One can now also write `program' + in front of a quoted symbol in a docstring to prevent making a + hyperlink. + +2006-03-19 Alan Mackenzie + + * text.texi (Special Properties): Clarify `fontified' property. + +2006-03-16 Richard Stallman + + * display.texi (Defining Images): Minor cleanup. + +2006-03-16 Bill Wohler + + * display.texi (Defining Images): In image-load-path-for-library, + prefer user's images. + +2006-03-15 Stefan Monnier + + * modes.texi (Region to Fontify): Remove font-lock-lines-before. + +2006-03-15 Bill Wohler + + * display.texi (Defining Images): Fix example in + image-load-path-for-library by not recommending that one binds + image-load-path. Just defvar it to placate compiler and only use + it if previously defined. + +2006-03-14 Bill Wohler + + * display.texi (Defining Images): In image-load-path-for-library, + always return list of directories. Update example. + +2006-03-14 Alan Mackenzie + + * modes.texi: New node, "Region to Fontify" (for Font Lock). + This describes font-lock-extend-region-function. + ("Other Font Lock Variables"): Move "font-lock-lines-before" to + the new node "Region to Fontify". + +2006-03-13 Richard Stallman + + * display.texi (Invisible Text): The impossible position is + now before the invisible text, not after. + (Defining Images): Clean up last change. + +2006-03-11 Bill Wohler + + * display.texi (Defining Images): Add image-load-path-for-library. + +2006-03-11 Luc Teirlinck + + * text.texi (Adaptive Fill): Fix Texinfo usage. + + * strings.texi (Creating Strings): Fix Texinfo usage. + + * searching.texi (Regexp Special): Use @samp for regular + expressions that are not in Lisp syntax. + +2006-03-08 Luc Teirlinck + + * searching.texi (Regexp Special): Put remark between parentheses + to avoid misreading. + +2006-03-07 Luc Teirlinck + + * searching.texi (Syntax of Regexps): More accurately describe + which characters are special in which situations. + (Regexp Special): Recommend _not_ to quote `]' or `-' when they + are not special. Describe in detail when `[' and `]' are special. + (Regexp Backslash): Plenty of regexps with unbalanced square + brackets are valid, so reword that statement. + +2006-03-02 Kim F. Storm + + * keymaps.texi (Tool Bar): Add tool-bar-border. + +2006-02-28 Luc Teirlinck + + * loading.texi (Load Suffixes): Rephrase last paragraph. Fix typos. + +2006-02-27 Luc Teirlinck + + * elisp.texi (Top): Include "Load Suffixes" in the detailed menu. + + * files.texi (Locating Files): Suggest additional values for the + SUFFIXES arg of `locate-file'. Update pxref. + + * loading.texi (Loading): Include new node "Load Suffixes" in menu. + (How Programs Do Loading): Discuss the effects of Auto Compression + mode on `load'. + (Load Suffixes): New node. + (Library Search): Delete description of `load-suffixes'; it was + moved to "Load Suffixes". + (Autoload, Named Features): Mention `load-suffixes'. + +2006-02-21 Giorgos Keramidas (tiny change) + + * display.texi (Fringe Indicators, Fringe Cursors): Fix typos. + + * windows.texi (Window Tree): Fix typo. + +2006-02-20 Kim F. Storm + + * display.texi (Fringe Indicators): New section. + Move indicate-empty-lines, indicate-buffer-boundaries, and + default-indicate-buffer-boundaries here. + Add fringe-indicator-alist and default-fringes-indicator-alist. + Add list of logical fringe indicator symbols. + Update list of standard bitmap names. + (Fringe Cursors): New section. + Move overflow-newline-into-fringe here. + Add fringe-cursor-alist and default-fringes-cursor-alist. + Add list of fringe cursor symbols. + +2006-02-20 Juanma Barranquero + + * commands.texi (Using Interactive): Fix reference to node + "Minibuffers". + +2006-02-19 Richard M. Stallman + + * minibuf.texi (High-Level Completion): + Add xref to read-input-method-name. + + * files.texi (Relative File Names): Move file-relative-name here. + (File Name Expansion): From here. Minor clarifications. + + * commands.texi (Using Interactive): Add xrefs about reading input. + Clarify remarks about that moving point and mark. + Put string case before list case. + +2006-02-16 Johan Bockg,Ae(Brd + + * display.texi (Other Display Specs, Image Descriptors): + Revert erroneous changes. The previous description of + image-descriptors as `(image . PROPS)' was correct. + +2006-02-14 Richard M. Stallman + + * variables.texi (File Local Variables): Clarifications. + +2006-02-14 Juanma Barranquero + + * variables.texi (File Local Variables): Use @code for a cons + cell, not @var. + +2006-02-13 Chong Yidong + + * variables.texi (File Local Variables): Document new file local + variable behavior. + +2006-02-10 Kim F. Storm + + * eval.texi (Function Indirection): Add NOERROR to indirect-function. + +2006-02-08 Juanma Barranquero + + * modes.texi (%-Constructs): Remove obsolete info about + `global-mode-string'. + +2006-02-07 Richard M. Stallman + + * commands.texi (Prefix Command Arguments): Minor cleanup. + + * display.texi: "Graphical display", not window system. + + * functions.texi (What Is a Function): Fix xref. + + * keymaps.texi (Key Lookup): Clarify wrt commands vs other functions. + (Changing Key Bindings): Clarify when remapping is better than + substitute-key-definition. + +2006-02-02 Richard M. Stallman + + * minibuf.texi (Basic Completion): Completion alists are risky. + + * keymaps.texi (Active Keymaps): Clarifications. + (Searching Keymaps): New node. + (Keymaps): Update menu. + + * frames.texi (Layout Parameters): Minor clarification. + (Drag and Drop): New node. + (Frames): Update menu. + +2006-01-29 Chong Yidong + + * display.texi (Other Display Specs, Image Descriptors): + Image description is a list, not a cons cell. + +2006-01-28 Luc Teirlinck + + * lists.texi (Cons Cells): Minor correction (the cdr of a dotted + list is not necessarily a list). + +2006-01-27 Eli Zaretskii + + * frames.texi (Layout Parameters): border-width and + internal-border-width belong to the frame, not the window. + +2006-01-19 Richard M. Stallman + + * nonascii.texi (Translation of Characters): Search cmds use + translation-table-for-input. Automatically made local. + + * markers.texi (Overview of Markers): Count insertion type + as one of a marker's attributes. + + * keymaps.texi (Controlling Active Maps): New node, split out of + Active Keymaps. + (Keymaps): Menu updated. + (Active Keymaps): Give pseudocode to explain how the active + maps are searched. current-active-maps and key-binding moved here. + (Functions for Key Lookup): current-active-maps and key-binding moved. + Clarifications. + (Searching the Keymaps): New subnode. + + * elisp.texi (Top): Menu clarification. + + * display.texi (Other Display Specs): Delete duplicate entry for + just a string as display spec. Move text about recursive display + specs on such a string. + + * commands.texi (Key Sequence Input): Clarify. + Move num-nonmacro-input-events out. + (Reading One Event): num-nonmacro-input-events moved here. + +2006-01-14 Nick Roberts + + * advice.texi (Simple Advice): Update example to fit argument + change in previous-line. + +2006-01-05 Richard M. Stallman + + * markers.texi (The Mark): Fix in `mark'. + +2006-01-04 Richard M. Stallman + + * processes.texi (Misc Network, Make Network): Minor cleanups. + +2006-01-04 Kim F. Storm + + * processes.texi (Make Network): Add IPv6 addresses and handling. + (Network Feature Testing): Mention (:family ipv6). + (Misc Network): Add IPv6 formats to format-network-address. + +2005-12-30 Richard M. Stallman + + * text.texi (Changing Properties): + Don't use return value of set-text-properties. + +2005-12-29 Luc Teirlinck + + * modes.texi (Mode Line Format): Correct typo in menu. + +2005-12-29 Richard M. Stallman + + * modes.texi (Mode Line Top): New node. + (Mode Line Data): Some text moved to new node. + Explain the data structure more concretely. + (Mode Line Basics): Clarifications. + (Mode Line Variables): Clarify intro paragraph. + (%-Constructs): Clarify intro paragraph. + (Mode Line Format): Update menu. + +2005-12-28 Luc Teirlinck + + * minibuf.texi (Basic Completion): Update lazy-completion-table + examples for removal of ARGS argument. + +2005-12-23 Richard M. Stallman + + * text.texi (Undo): Restore some explanation from the version + that was deleted. + +2005-12-23 Eli Zaretskii + + * text.texi (Undo): Remove duplicate descriptions of `apply + funname' and `apply delta' elements of the undo list. + +2005-12-20 Richard M. Stallman + + * help.texi (Help Functions): Update documentation of `apropos'. + +2005-12-20 Luc Teirlinck + + * customize.texi (Type Keywords): Delete xref to "Text help-echo", + because it is confusing. If the :help-echo keyword is a function, + it is not directly used as the :help-echo overlay property, as the + xref seems to suggest (it does not take the appropriate args). + +2005-12-19 Luc Teirlinck + + * customize.texi (Common Keywords): Fix Texinfo usage. + (Group Definitions, Variable Definitions): Update for new + conventions for using `*' in docstrings. + + * tips.texi (Documentation Tips): Update for new conventions for + using `*' in docstrings. + +2005-12-16 Richard M. Stallman + + * minibuf.texi (Minibuffer Contents): Minor cleanup. + +2005-12-16 Juri Linkov + + * minibuf.texi (Minibuffer Contents): Add minibuffer-completion-contents. + +2005-12-14 Romain Francoise + + * modes.texi (Customizing Keywords): Rename `append' to `how'. + Fix typo. + +2005-12-11 Juri Linkov + + * minibuf.texi (Completion Commands): Add mention of read-file-name + for filename completion keymaps. + (Reading File Names): Add mention of filename completion keymaps + for read-file-name and xref to `Completion Commands'. + +2005-12-10 Richard M. Stallman + + * customize.texi (Common Keywords): State caveats for use of :tag. + +2005-12-08 Richard M. Stallman + + * minibuf.texi (Intro to Minibuffers): Replace list of local maps + with xrefs and better explanation. + (Completion Commands): Add the filename completion maps. + + * objects.texi (Character Type): Clarify that \s is not space + if a dash follows. + +2005-12-05 Richard M. Stallman + + * windows.texi (Resizing Windows): Delete preserve-before args. + +2005-12-05 Stefan Monnier + + * keymaps.texi (Format of Keymaps): Remove mention of a quirk + in full keymaps, since the quirk has been fixed. + +2005-12-03 Eli Zaretskii + + * hooks.texi (Standard Hooks): Add index entries. Mention + `compilation-finish-functions'. + +2005-11-27 Richard M. Stallman + + * windows.texi (Resizing Windows): Add adjust-window-trailing-edge. + +2005-11-21 Juri Linkov + + * customize.texi (Common Keywords): Update links types + custom-manual and url-link. Add link types emacs-library-link, + file-link, function-link, variable-link, custom-group-link. + +2005-11-20 Chong Yidong + + * display.texi: Revert 2005-11-20 change. + +2005-11-20 Thien-Thi Nguyen + + * processes.texi (Bindat Functions): + Say "third" to refer to zero-based index "2". + +2005-11-18 Luc Teirlinck + + * loading.texi (Library Search): Update the default value of + `load-suffixes'. + +2005-11-17 Chong Yidong + + * display.texi (Attribute Functions): Mention :ignore-defface. + +2005-11-16 Stefan Monnier + + * modes.texi (Minor Mode Conventions): Use custom-set-minor-mode. + (Minor Mode Conventions): Mention the use of a hook. + +2005-11-06 Richard M. Stallman + + * files.texi (Magic File Names): find-file-name-handler checks the + `operations' property of the handler. + +2005-11-03 Richard M. Stallman + + * variables.texi (Frame-Local Variables): Small clarification. + +2005-10-29 Chong Yidong + + * os.texi (Init File): Document ~/.emacs.d/init.el. + +2005-10-29 Richard M. Stallman + + * internals.texi (Garbage Collection): Document memory-full. + +2005-10-28 Bill Wohler + + * tips.texi (Documentation Tips): Help mode now creates hyperlinks + for URLs. + +2005-10-28 Richard M. Stallman + + * minibuf.texi (Completion Commands): Clean up prev change. + +2005-10-26 Kevin Ryde + + * compile.texi (Eval During Compile): Explain recommended uses + of eval-when-compile and eval-and-compile. + +2005-10-27 Masatake YAMATO + + * minibuf.texi (Completion Commands): + Write about new optional argument for `display-completion-list'. + +2005-10-23 Richard M. Stallman + + * display.texi (Overlay Arrow): Clarify about local bindings of + overlay-arrow-position. + +2005-10-22 Eli Zaretskii + + * internals.texi (Building Emacs): Fix last change. + +2005-10-22 Richard M. Stallman + + * internals.texi (Building Emacs): Document eval-at-startup. + +2005-10-21 Richard M. Stallman + + * loading.texi (Where Defined): load-history contains abs file names. + symbol-file returns abs file names. + +2005-10-19 Kim F. Storm + + * display.texi (Showing Images): Add max-image-size integer value. + +2005-10-18 Chong Yidong + + * display.texi (Showing Images): Document max-image-size. + +2005-10-17 Richard M. Stallman + + * commands.texi (Quitting): Minor clarification. + + * processes.texi (Sentinels): Clarify about output and quitting. + (Filter Functions): Mention with-local-quit. + +2005-10-17 Juri Linkov + + * buffers.texi (Current Buffer): + * commands.texi (Event Input Misc): + * compile.texi (Eval During Compile, Compiler Errors): + * customize.texi (Group Definitions): + * display.texi (Progress, Defining Faces): + * files.texi (Writing to Files): + * modes.texi (Mode Hooks, Defining Minor Modes): + * streams.texi (Output Functions): + * syntax.texi (Syntax Table Functions): + * text.texi (Change Hooks): + Replace `...' with `@dots{}' in `@defmac' and `@defspec'. + + * commands.texi (Quitting): Replace arg `forms' with `body' in + `with-local-quit'. + + * positions.texi (Excursions): Replace arg `forms' with `body' in + `save-excursion'. + +2005-10-08 Kim F. Storm + + * windows.texi (Window Tree): Rename window-split-tree to window-tree. + Rename manual section accordingly. + +2005-10-04 Kim F. Storm + + * windows.texi (Window Split Tree): New section describing + new function window-split-tree function. + +2005-10-03 Nick Roberts + + * display.texi (Fringe Size/Pos): Simplify and add detail. + +2005-09-30 Romain Francoise + + * minibuf.texi (High-Level Completion): Explain that the prompt + given to `read-buffer' should end with a colon and a space. + Update usage examples. + +2005-09-29 Juri Linkov + + * display.texi (Displaying Messages): Rename argument name + `string' to `format-string' in functions `message', `message-box', + `message-or-box'. + +2005-09-26 Chong Yidong + + * errors.texi (Standard Errors): Correct xrefs. + +2005-09-18 Chong Yidong + + * display.texi (Defining Images): Update documentation for + `image-load-path'. + +2005-09-17 Richard M. Stallman + + * display.texi (Defining Images): Clean up previous change. + +2005-09-16 Romain Francoise + + * elisp.texi: Specify GFDL version 1.2. + + * doclicense.texi (GNU Free Documentation License): Update to + version 1.2. + +2005-09-15 Chong Yidong + + * display.texi (Defining Images): Document `image-load-path'. + +2005-09-15 Richard M. Stallman + + * objects.texi (Printed Representation): Minor cleanup. + (Box Diagrams): Minor fix. + (Cons Cell Type): Move (...) index item here. + (Box Diagrams): From here. + (Array Type): Minor fix. + (Type Predicates): Delete index "predicates". + (Hash Table Type): Clarify xref. + (Dotted Pair Notation): Minor fix. + +2005-09-10 Chong Yidong + + * files.texi (Saving Buffers): Fix typo. + +2005-09-08 Richard M. Stallman + + * tips.texi (Programming Tips): Correct the "default" prompt spec. + +2005-09-08 Chong Yidong + + * locals.texi (Standard Buffer-Local Variables): Don't include + mode variables for minor modes. + Fix xrefs for buffer-display-count, buffer-display-table, + buffer-offer-save, buffer-saved-size, cache-long-line-scans, + enable-multibyte-characters, fill-column, header-line-format, + left-fringe-width, left-margin, and right-fringe-width. + + * hooks.texi (Standard Hooks): All hooks should conform to the + standard naming convention now. + Fix xref for `echo-area-clear-hook'. + + * display.texi (Usual Display): Note that indicate-empty-lines and + tab-width are buffer-local. + + * files.texi (Saving Buffers): Add xref to `Killing Buffers'. + + * modes.texi (Mode Help): Note that major-mode is buffer-local. + + * nonascii.texi (Encoding and I/O): Note that + buffer-file-coding-system is buffer-local. + + * positions.texi (List Motion): Note that defun-prompt-regexp is + buffer-local. + + * text.texi (Auto Filling): Note that auto-fill-function is + buffer-local. + (Undo): Note that buffer-undo-list is buffer-local. + + * windows.texi (Buffers and Windows): Document + buffer-display-count. + +2005-09-06 Richard M. Stallman + + * tips.texi (Coding Conventions): Sometimes it is ok to put the + package prefix elsewhere than at the start of the name. + +2005-09-03 Richard M. Stallman + + * tips.texi (Programming Tips): Add conventions for minibuffer + questions and prompts. + +2005-09-03 Joshua Varner (tiny change) + + * intro.texi (nil and t): Minor cleanup. + Delete spurious mention of keyword symbols. + (Evaluation Notation): Add index entry. + (A Sample Function Description): Minor cleanup. + (A Sample Variable Description): Not all vars can be set. + +2005-09-03 Thien-Thi Nguyen + + * text.texi (Buffer Contents): Use "\n" in examples' result strings. + + (Insertion): Document precise type of `insert-char' arg COUNT. + +2005-09-02 Stefan Monnier + + * modes.texi (Other Font Lock Variables): Sync the default of + font-lock-lines-before. + +2005-08-31 Michael Albinus + + * files.texi (Magic File Names): Add `make-auto-save-file-name'. + +2005-08-29 Richard M. Stallman + + * elisp.texi (Top): Update subnode menu. + + * searching.texi (Searching and Matching): Move node. + Rearrange contents and add overall explanation. + (Searching and Case): Move node. + (Searching and Matching): Update menu. + +2005-08-27 Eli Zaretskii + + * os.texi (Startup Summary): Fix the description of the initial + startup message display. + +2005-08-25 Richard M. Stallman + + * searching.texi (Search and Replace): Add replace-regexp-in-string. + +2005-08-25 Emilio C. Lopes + + * display.texi (Finding Overlays): Fix `find-overlay-prop' in + `next-overlay-change' example. + +2005-08-22 Juri Linkov + + * display.texi (Attribute Functions): Add set-face-inverse-video-p. + Fix invert-face. Fix args of face-background. + + * display.texi (Standard Faces): Delete node. + (Faces): Add xref to `(emacs)Standard Faces'. + (Displaying Faces): Fix xref to `Standard Faces'. + + * modes.texi (Mode Line Data): Fix xref to Standard Faces. + +2005-08-20 Alan Mackenzie + + * buffers.texi (The Buffer List): Clarify the manipulation of the + buffer list. + +2005-08-14 Richard M. Stallman + + * modes.texi (Auto Major Mode): interpreter-mode-alist key is not + a regexp. + +2005-08-11 Richard M. Stallman + + * elisp.texi (Top): Update subnode lists. + + * display.texi (Inverse Video): Node deleted. + + * tips.texi (Key Binding Conventions, Programming Tips, Warning Tips): + New nodes split out of Coding Conventions. + + * searching.texi (Regular Expressions): Document re-builder. + + * os.texi (Time Parsing): New node split out of Time Conversion. + + * processes.texi (Misc Network, Network Feature Testing) + (Network Options, Make Network): New nodes split out of + Low-Level Network. + +2005-08-09 Richard M. Stallman + + * frames.texi (Geometry): New node, split from Size and Position. + (Frame Parameters): Refer to Geometry. + + * buffers.texi (The Buffer List): Fix xrefs. + + * windows.texi (Splitting Windows): Fix xref. + + * frames.texi (Layout Parameters): Add xref. + + * display.texi (Line Height, Scroll Bars): Fix xrefs. + + * keymaps.texi (Menu Bar): Fix xref. + + * locals.texi (Standard Buffer-Local Variables): Fix xref. + + * modes.texi (%-Constructs): Fix xref. + + * frames.texi (Window Frame Parameters): Node split up. + (Basic Parameters, Position Parameters, Size Parameters) + (Layout Parameters, Buffer Parameters, Management Parameters) + (Cursor Parameters, Color Parameters): New subnodes. + +2005-08-09 Luc Teirlinck + + * positions.texi (Screen Lines): Update xref for previous change + in minibuf.texi. + + * minibuf.texi (Intro to Minibuffers): Update pxref for previous + change in minibuf.texi. + +2005-08-09 Richard M. Stallman + + * tips.texi (Coding Conventions): Minor cleanup. + + * modes.texi (Defining Minor Modes): Explain when init-value + can be non-nil. + + * elisp.texi (Top): Update submenu for Minibuffer. + + * minibuf.texi (Minibuffer Misc): Node split up. + (Minibuffer Commands, Minibuffer Windows, Minibuffer Contents) + (Recursive Mini): New nodes split out from Minibuffer Misc. + (Minibuffer Misc): Document max-mini-window-height. + + * hash.texi (Defining Hash): Delete stray paren in example. + + * display.texi (Echo Area Customization): Don't define + max-mini-window-height here; xref instead. + + * commands.texi (Event Input Misc): Update while-no-input. + + * advice.texi (Advising Functions): Explain when to use advice + and when to use a hook. + +2005-07-30 Eli Zaretskii + + * makefile.w32-in (info): Don't run install-info. + ($(infodir)/dir): New target, produced by running install-info. + +2005-07-27 Luc Teirlinck + + * modes.texi (Defining Minor Modes): The keyword for the initial + value is :init-value, not :initial-value. + +2005-07-23 Eli Zaretskii + + * loading.texi (Autoload): Make the `doctor' example be consistent + with what's in current loaddefs.el. Describe the "fn" magic in + the usage portion of the doc string. + +2005-07-22 Richard M. Stallman + + * internals.texi (Garbage Collection): Clarify previous change. + +2005-07-21 Stefan Monnier + + * internals.texi (Garbage Collection): Add gc-cons-percentage. + +2005-07-18 Juri Linkov + + * commands.texi (Accessing Events): + * frames.texi (Text Terminal Colors, Resources): + * markers.texi (The Mark): + * modes.texi (Defining Minor Modes): + Delete duplicate duplicate words. + +2005-07-16 Richard M. Stallman + + * display.texi (Managing Overlays): Clarify make-overlay + args for insertion types. + +2005-07-13 Luc Teirlinck + + * customize.texi (Variable Definitions): + Add `custom-initialize-safe-set' and `custom-initialize-safe-default'. + `standard-value' is a list too. + (Defining New Types): Use @key{RET} instead of @key{ret}. + +2005-07-13 Francis Litterio (tiny change) + + * os.texi (Translating Input): Fix typo. + +2005-07-08 Richard M. Stallman + + * README: Update edition number and size estimate. + + * elisp.texi (VERSION): Set to 2.9. + +2005-07-07 Richard M. Stallman + + * book-spine.texinfo: Update Emacs version. + + * display.texi (Inverse Video): Delete mode-line-inverse-video. + +2005-07-06 Richard M. Stallman + + * searching.texi (Regexp Search): Clarify what re-search-forward + does when the search fails. + +2005-07-05 Lute Kamstra + + * Update FSF's address in GPL notices. + + * doclicense.texi (GNU Free Documentation License): + * gpl.texi (GPL): + * tips.texi (Coding Conventions, Library Headers): + * vol1.texi: + * vol2.texi: Update FSF's address. + +2005-07-04 Richard M. Stallman + + * hooks.texi (Standard Hooks): Add occur-hook. + +2005-07-03 Luc Teirlinck + + * display.texi (The Echo Area): Correct menu. + +2005-07-03 Richard M. Stallman + + * elisp.texi (Top): Update subnode menu for Display. + + * display.texi (Displaying Messages): New node, with most + of what was in The Echo Area. + (Progress): Moved under The Echo Area. + (Logging Messages): New node with new text. + (Echo Area Customization): New node, the rest of what was + in The Echo Area. Document message-truncate-lines with @defvar. + (Display): Update menu. + + * windows.texi (Textual Scrolling): Doc 3 values for + scroll-preserve-screen-position. + + * text.texi (Special Properties): Change hook functions + should bind inhibit-modification-hooks around altering buffer text. + + * keymaps.texi (Key Binding Commands): Call binding BINDING + rather than DEFINITION. + +2005-06-29 Juanma Barranquero + + * variables.texi (Defining Variables): `user-variable-p' returns t + for aliases of user options, nil for alias loops. + +2005-06-28 Richard M. Stallman + + * keymaps.texi (Creating Keymaps): Put make-sparse-keymap before + make-keymap. + +2005-06-27 Luc Teirlinck + + * variables.texi (Setting Variables): Correct and clarify + description of `add-to-ordered-list'. + +2005-06-26 Richard M. Stallman + + * display.texi (Faces): Minor cleanup. + +2005-06-25 Luc Teirlinck + + * display.texi (Faces): `facep' returns t for strings that are + face names. + +2005-06-25 Richard M. Stallman + + * objects.texi (Equality Predicates): Clarify meaning of equal. + + * windows.texi (Selecting Windows): save-selected-window + and with-selected-window save and restore the current buffer. + +2005-06-24 Richard M. Stallman + + * numbers.texi (Float Basics): Explain how to test for NaN, + and printing the sign of NaNs. + +2005-06-24 Eli Zaretskii + + * makefile.w32-in (MAKEINFO): Use --force. + +2005-06-23 Richard M. Stallman + + * display.texi (Face Functions): Correct Texinfo usage. + +2005-06-23 Luc Teirlinck + + * lists.texi (Rings): `ring-elements' now returns the elements of + RING in order. + +2005-06-23 Juanma Barranquero + + * markers.texi (The Mark): Texinfo usage fix. + +2005-06-23 Kim F. Storm + + * searching.texi (Entire Match Data): Remove evaporate option for + match-data. Do not mention evaporate option for set-match-data. + +2005-06-22 Glenn Morris + + * display.texi (Face Functions): Mention face aliases. + +2005-06-21 Richard M. Stallman + + * anti.texi (Antinews): Texinfo usage fix. + +2005-06-21 Karl Berry + + * elisp.texi: Use @copying. + + * elisp.texi: Put @summarycontents and @contents before the Top + node, instead of the end of the file, so that the contents appear + in the right place in the dvi/pdf output. + +2005-06-21 Juri Linkov + + * display.texi (Defining Faces): Add `customized-face'. + +2005-06-20 Kim F. Storm + + * variables.texi (Setting Variables): Any type of element can be + given order in add-to-ordered-list. Compare elements with eq. + + * lists.texi (Rearrangement): Sort predicate may just return non-nil. + +2005-06-20 Karl Berry + + * syntax.texi (Syntax Flags): Make last column very slightly wider + to avoid "generic comment" breaking on two lines and causing an + underfull box. + +2005-06-19 Luc Teirlinck + + * lists.texi (Rings): Various minor clarifications and corrections. + +2005-06-18 Richard M. Stallman + + * functions.texi (Obsolete Functions): Simplify. + + * variables.texi (Variable Aliases): Simplify. + + * anti.texi, backups.texi, compile.texi, customization.texi: + * debugging.texi, display.texi, edebug.texi, errors.texi, frames.texi: + * functions.texi, help.texi, keymaps.texi, modes.texi, nonascii.texi: + * os.texi, processes.texi, searching.texi, strings.texi, text.texi: + * variables.texi: Fix formatting ugliness. + + * elisp.texi: Add links to Rings and Byte Packing. + Update version and copyright years. + + * minibuf.texi: Fix formatting ugliness. + (Completion Commands): Move keymap vars to the end + and vars completing-read binds to the top. + +2005-06-17 Luc Teirlinck + + * processes.texi: Fix typos. + (Bindat Spec): Correct Texinfo error. + (Byte Packing): Fix ungrammatical sentence. + +2005-06-17 Thien-Thi Nguyen + + * lists.texi (Rings): New node. + (Lists): Add it to menu. + + * processes.texi (Byte Packing): New node. + (Processes): Add it to menu. + +2005-06-17 Richard M. Stallman + + * syntax.texi (Parsing Expressions): Fix texinfo usage. + + * help.texi (Documentation Basics): Explain the xref to + Documentation Tips. + + * debugging.texi (Debugger Commands): Minor fix. + +2005-06-16 Luc Teirlinck + + * edebug.texi (Instrumenting): Eliminate duplicate link. + (Specification List): Replace references to "below", referring to + a later node, with one @ref to that node. + + * os.texi (Timers): Timers should save and restore the match data + if they change it. + + * debugging.texi (Debugger Commands): Mention that the Lisp + debugger can not step through primitive functions. + +2005-06-16 Juanma Barranquero + + * functions.texi (Obsolete Functions): Update argument names of + `make-obsolete' and `define-obsolete-function-alias'. + + * variables.texi (Variable Aliases): Update argument names of + `defvaralias', `make-obsolete-variable' and + `define-obsolete-variable-alias'. + +2005-06-15 Kim F. Storm + + * searching.texi (Entire Match Data): Rephrase warnings about + evaporate arg to match-data and set-match-data. + +2005-06-14 Luc Teirlinck + + * elisp.texi (Top): Update detailed menu. + + * edebug.texi (Edebug): Update menu. + (Instrumenting): Update xrefs. + (Edebug Execution Modes): Correct xref. + (Jumping): Clarify description of `h' command. + Eliminate redundant @ref. + (Breaks): New node. + (Breakpoints): Is now a subsubsection. + (Global Break Condition): Mention `C-x X X'. + (Edebug Views): Clarify `v' and `p'. Mention `C-x X w'. + (Trace Buffer): Clarify STRING arg of `edebug-tracing'. + (Edebug Display Update): Correct pxref. + (Edebug and Macros): New node. + (Instrumenting Macro Calls): Is now a subsubsection. + Neither arg of `def-edebug-spec' is evaluated. + (Instrumenting Macro Calls): Mention `edebug-eval-macro-args'. + (Specification Examples): Fix typo. + +2005-06-14 Lute Kamstra + + * debugging.texi (Function Debugging): Primitives can break on + entry too. + +2005-06-14 Kim F. Storm + + * variables.texi (Setting Variables): Add add-to-ordered-list. + +2005-06-13 Stefan Monnier + + * syntax.texi (Parsing Expressions): Document aux functions and vars of + syntax-ppss: syntax-ppss-flush-cache and syntax-begin-function. + +2005-06-13 Lute Kamstra + + * text.texi (Special Properties): Fix cross reference. + +2005-06-11 Luc Teirlinck + + * debugging.texi (Function Debugging): Delete mention of empty + string argument to `cancel-debug-on-entry'. Delete inaccurate + description of the return value of that command. + +2005-06-11 Alan Mackenzie + + * text.texi (Adaptive Fill): Amplify the description of + fill-context-prefix. + +2005-06-10 Luc Teirlinck + + * syntax.texi (Parsing Expressions): Fix Texinfo error. + +2005-06-10 Stefan Monnier + + * syntax.texi (Parsing Expressions): Document syntax-ppss. + +2005-06-10 Luc Teirlinck + + * debugging.texi (Error Debugging): Minor rewording. + (Function Debugging): FUNCTION-NAME arg to `cancel-debug-on-entry' + is optional. + +2005-06-10 Lute Kamstra + + * elisp.texi: Use EMACSVER to refer to the current version of Emacs. + (Top): Give it a title. Correct version number. Give the + detailed node listing a more prominent header. + * intro.texi: Don't set VERSION here a second time. + Mention Emacs's version too. + * anti.texi (Antinews): Use EMACSVER to refer to the current + version of Emacs. + +2005-06-09 Kim F. Storm + + * searching.texi (Entire Match Data): Explain new `reseat' argument to + match-data and set-match-data. + +2005-06-08 Richard M. Stallman + + * searching.texi (Entire Match Data): Clarify when match-data + returns markers and when integers. + + * display.texi (Defining Faces): Explain that face name should not + end in `-face'. + + * modes.texi (Mode Line Data): Minor cleanup. + (Customizing Keywords): Node split out of Search-based Fontification. + Add example of using font-lock-add-keywords from a hook. + Clarify when MODE should be non-nil, and when nil. + +2005-06-06 Richard M. Stallman + + * modes.texi (Mode Line Data): Explain what happens when the car + of a list is a void symbol. + (Search-based Fontification): Explain MODE arg to + font-lock-add-keywords and warn about calls from major modes. + +2005-06-08 Juri Linkov + + * display.texi (Standard Faces): Add `shadow' face. + +2005-05-29 Luc Teirlinck + + * modes.texi (Major Mode Conventions): A derived mode only needs + to put the call to the parent mode inside `delay-mode-hooks'. + +2005-05-29 Richard M. Stallman + + * modes.texi (Mode Hooks): Explain that after-change-major-mode-hook is + new, and what that implies. Clarify. + + * files.texi (Locating Files): Clean up the text. + + * frames.texi (Window Frame Parameters): Document user-size. + Shorten entry for top by referring to left. + +2005-05-26 Richard M. Stallman + + * modes.texi (Mode Hooks): Explain that after-change-major-mode-hook + is new, and what the implications are. Other clarifications. + +2005-05-24 Richard M. Stallman + + * frames.texi (Dialog Boxes): Minor fixes. + +2005-05-25 Masatake YAMATO + + * display.texi (Standard Faces): Write about `mode-line-highlight'. + +2005-05-24 Luc Teirlinck + + * frames.texi (Dialog Boxes): HEADER argument to `x-popup-dialog' + is optional. + +2005-05-24 Nick Roberts + + * frames.texi (Dialog Boxes): Descibe new optional argument. + +2005-05-23 Lute Kamstra + + * modes.texi (Font Lock Basics, Syntactic Font Lock): Recommend + syntax-begin-function over font-lock-beginning-of-syntax-function. + +2005-05-21 Luc Teirlinck + + * minibuf.texi (Reading File Names): Update description of + `read-directory-name'. + + * modes.texi (Derived Modes): Clarify :group keyword. + +2005-05-21 Eli Zaretskii + + * files.texi (Locating Files): New subsection. + Describe locate-file and executable-find. + +2005-05-21 Kevin Ryde + + * frames.texi (Initial Parameters): Update cross reference to + "Emacs Invocation". + +2005-05-19 Luc Teirlinck + + * keymaps.texi (Active Keymaps): Add anchor. + + * modes.texi (Hooks): Delete confusing and unnecessary sentence. + (Major Mode Conventions): Refer to `Auto Major Mode' in more + appropriate place. + (Derived Modes): Small clarifications. + (Minor Mode Conventions, Keymaps and Minor Modes): + Replace references to nodes with references to anchors. + (Mode Line Data): Warn that `(:eval FORM)' should not load any files. + Clarify description of lists whose first element is an integer. + (Mode Line Variables): Add anchor. + (%-Constructs): Clarify description of integer after %. + (Emulating Mode Line): Describe nil value for FACE. + +2005-05-18 Luc Teirlinck + + * modes.texi (Derived Modes): Correct references to non-existing + variable standard-syntax-table. + +2005-05-17 Lute Kamstra + + * modes.texi (Defining Minor Modes): Mention the mode hook. + +2005-05-15 Kim F. Storm + + * processes.texi (Network): Remove open-network-stream-nowait. + (Network Servers): Remove open-network-stream-server. + +2005-05-15 Luc Teirlinck + + * elisp.texi (Top): Update detailed menu. + + * variables.texi: Reorder nodes. + (Variables): Update menu. + (File Local Variables): Do not refer to the `-*-' line as + a "local variables list". Add pxref. + +2005-05-14 Luc Teirlinck + + * elisp.texi (Top): Update detailed menu for node changes. + + * modes.texi (Modes): Update Menu. + (Hooks): Move to beginning of chapter. + Most minor modes run mode hooks too. + `add-hook' can handle void hooks or hooks whose value is a single + function. + (Major Modes): Update Menu. + (Major Mode Basics): New node, split off from `Major Modes'. + (Major Mode Conventions): Correct xref. Explain how to handle + auto-mode-alist if the major mode command has an autoload cookie. + (Auto Major Mode): Major update. Add magic-mode-alist. + (Derived Modes): Major update. + (Mode Line Format): Update Menu. + (Mode Line Basics): New node, split off from `Mode Line Format'. + + * loading.texi (Autoload): Mention `autoload cookie' as synonym + for `magic autoload comment'. Add index entries and anchor. + +2005-05-14 Richard M. Stallman + + * tips.texi (Coding Conventions): Explain how important it is + that just loading certain files not change Emacs behavior. + + * modes.texi (Defining Minor Modes): Define define-global-minor-mode. + +2005-05-12 Lute Kamstra + + * modes.texi (Generic Modes): Update. + (Major Modes): Refer to node "Generic Modes". + + * elisp.texi (Top): Update to the current structure of the manual. + * processes.texi (Processes): Add menu description. + * customize.texi (Customization): Add menu descriptions. + +2005-05-11 Thien-Thi Nguyen + + * processes.texi (Signals to Processes) + (Low-Level Network): Fix typos. + +2005-05-11 Lute Kamstra + + * elisp.texi (Top): Add some nodes from the chapter "Major and + Minor Modes" to the detailed node listing. + +2005-05-10 Richard M. Stallman + + * keymaps.texi (Extended Menu Items): Menu item filter functions + can be called at any time. + +2005-05-08 Luc Teirlinck + + * variables.texi (File Local Variables): `(hack-local-variables t)' + now also checks whether a mode is specified in the local variables + list. + +2005-05-05 Kevin Ryde + + * display.texi (The Echo Area): Correct format function cross + reference. + +2005-05-05 Luc Teirlinck + + * variables.texi (Variable Aliases): Change description of + `define-obsolete-variable-alias'. + + * functions.texi (Functions): Add "Obsolete Functions" to menu. + (Defining Functions): Add xref. + (Obsolete Functions): New node. + (Function Safety): Standardize capitalization of section title. + + * frames.texi (Pop-Up Menus): Complete description of `x-popup-menu'. + (Dialog Boxes): Complete description of `x-popup-dialog'. + +2005-05-04 Richard M. Stallman + + * commands.texi (Interactive Codes): Fix Texinfo usage. + Document U more clearly. + +2005-05-01 Luc Teirlinck + + * variables.texi (Variable Aliases): `make-obsolete-variable' is a + function and not a macro. + + * frames.texi (Pop-Up Menus): Correct and clarify description of + `x-popup-menu'. + (Dialog Boxes): Clarify description of `x-popup-dialog'. + +2005-05-01 Richard M. Stallman + + * edebug.texi (Checking Whether to Stop): Fix previous change. + +2005-05-01 Luc Teirlinck + + * display.texi: Fix typos and Texinfo usage. + + * edebug.texi (Checking Whether to Stop): executing-macro -> + executing-kbd-macro. + +2005-05-01 Richard M. Stallman + + * display.texi (Invisible Text): Correct add-to-invisibility-spec. + +2005-04-30 Richard M. Stallman + + * files.texi (Magic File Names): Document `operations' property. + +2005-04-29 Lute Kamstra + + * modes.texi (Generic Modes): New node. + (Major Modes): Add it to the menu. + (Derived Modes): Add "derived mode" to concept index. + +2005-04-28 Lute Kamstra + + * modes.texi (Defining Minor Modes): Fix previous change. + (Font Lock Mode): Simplify. + (Font Lock Basics): Say that font-lock-defaults is buffer-local + when set and that some parts are optional. Add cross references. + (Search-based Fontification): Say how to specify font-lock-keywords. + Add cross references. Add font-lock-multiline to index. + Move font-lock-keywords-case-fold-search here from node "Other Font + Lock Variables". Document font-lock-add-keywords and + font-lock-remove-keywords. + (Other Font Lock Variables): Move font-lock-keywords-only, + font-lock-syntax-table, font-lock-beginning-of-syntax-function, + and font-lock-syntactic-face-function to node "Syntactic Font + Lock". Move font-lock-keywords-case-fold-search to node + "Search-based Fontification". Document font-lock-inhibit-thing-lock + and font-lock-{,un}fontify-{buffer,region}-function. + (Precalculated Fontification): Remove reference to deleted variable + font-lock-core-only. + (Faces for Font Lock): Add font-lock-comment-delimiter-face. + (Syntactic Font Lock): Add intro. Move font-lock-keywords-only, + font-lock-syntax-table, font-lock-beginning-of-syntax-function, + and font-lock-syntactic-face-function here from node "Other Font + Lock Variables". Move font-lock-syntactic-keywords to "Setting + Syntax Properties". Add cross references. + (Setting Syntax Properties): New node. + Move font-lock-syntactic-keywords here from "Syntactic Font Lock". + * syntax.texi (Syntax Properties): Add cross reference. + * hooks.texi (Standard Hooks): Add Font-Lock hooks. + +2005-04-26 Richard M. Stallman + + * display.texi (Defining Faces): + Document `default' elements of defface spec. + + * modes.texi (Major Mode Conventions): Explain customizing ElDoc mode. + + * variables.texi (Variable Aliases): Clarify text. + +2005-04-25 Chong Yidong + + * windows.texi (Window Hooks): Remove reference to obsolete Lazy Lock. + +2005-04-25 Luc Teirlinck + + * hooks.texi (Standard Hooks): Most minor modes have mode hooks too. + +2005-04-24 Eli Zaretskii + + * syntax.texi (Syntax Table Internals): Elaborate documentation of + syntax-after and syntax-class. + + * files.texi (Changing Files): Fix last change's cross-reference. + (Unique File Names): Don't mention "numbers" in the documentation + of make-temp-file and make-temp-name. + +2005-04-23 Richard M. Stallman + + * files.texi (Changing Files): Document MUSTBENEW arg in copy-file. + +2005-04-22 Nick Roberts + + * windows.texi (Cyclic Window Ordering): Clarify window-list. + +2005-04-22 Nick Roberts + + * variables.texi (Variable Aliases): Describe make-obsolete-variable + and define-obsolete-variable-alias. + +2005-04-22 Kim F. Storm + + * symbols.texi (Symbol Plists): Remove safe-get, as get is now safe. + (Other Plists): Remove safe-plist-get, as plist-get is now safe. + +2005-04-21 Lute Kamstra + + * lists.texi (Association Lists): Document rassq-delete-all. + +2005-04-19 Richard M. Stallman + + * modes.texi (Search-based Fontification): Explain that + facespec is an expression to be evaluated. + +2005-04-19 Kevin Ryde + + * streams.texi (Output Functions): Fix xref. + * strings.texi (String Conversion): Fix xref. + +2005-04-19 Kim F. Storm + + * symbols.texi (Symbol Plists): Add safe-get. + Mention that `get' may signal an error. + +2005-04-18 Nick Roberts + + * customize.texi (Variable Definitions): Replace tooltip-mode + example with save-place. + +2005-04-17 Richard M. Stallman + + * buffers.texi (Indirect Buffers): Clarify. + + * positions.texi (Positions): Clarify converting marker to integer. + + * strings.texi (String Basics): Mention string-match; clarify. + +2005-04-08 Lute Kamstra + + * modes.texi (Search-based Fontification): Fix cross references. + Use consistent terminology. Document anchored highlighting. + +2005-04-05 Lute Kamstra + + * modes.texi (Defining Minor Modes): Document :group keyword + argument and its default value. + +2005-04-03 Lute Kamstra + + * hooks.texi (Standard Hooks): Add some hooks. Add cross + references and/or descriptions. Delete major mode hooks; mention + them as a category instead. Rename or delete obsolete hooks. + +2005-04-02 Richard M. Stallman + + * nonascii.texi (Coding System Basics): Another wording cleanup. + +2005-04-01 Richard M. Stallman + + * nonascii.texi (Coding System Basics): Clarify previous change. + +2005-04-01 Kenichi Handa + + * nonascii.texi (Coding System Basics): Describe about rondtrip + identity of coding systems. + +2005-03-29 Chong Yidong + + * text.texi (Buffer Contents): Add filter-buffer-substring and + buffer-substring-filters. + +2005-03-26 Chong Yidong + + * anti.texi (Antinews): Mention `G' interactive code. + + * tips.texi (Compilation Tips): Mention benchmark.el. + +2005-03-27 Luc Teirlinck + + * 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 + + * 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 + + * display.texi (Standard Faces, Fringe Bitmaps, Customizing Bitmaps): + Cleanup previous change. + +2005-03-25 Chong Yidong + + * 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 + + * display.texi (Standard Faces): Other faces used in the fringe + implicitly inherits from the fringe face. + (Fringe Bitmaps): FACE in right-fringe and left-fringe display + properties implicitly inherits from fringe face. + (Customizing Bitmaps): Likewise for set-fringe-bitmap-face. + +2005-03-20 Chong Yidong + + * display.texi (Invisible Text): State default value of + line-move-ignore-invisible. + (Managing Overlays): Document remove-overlays. + (Standard Faces): Document escape-glyph face. + + * minibuf.texi (Reading File Names): Document read-file-name-function. + + * modes.texi (Other Font Lock Variables): + Document font-lock-lines-before. + + * positions.texi (Skipping Characters): skip-chars-forward allows + character classes. + +2005-03-18 Lute Kamstra + + * edebug.texi (Instrumenting Macro Calls): Fix another typo. + +2005-03-17 Richard M. Stallman + + * text.texi (Undo): Document extensible undo entries. + + * searching.texi (String Search, Regexp Search): Cleanups. + + * nonascii.texi (Character Codes): Minor fix. + + * display.texi (Display Property): Explain the significance + of having text properties that are eq. + (Other Display Specs): Explain string as display spec. + + * commands.texi (Interactive Codes): Document G option. + +2005-03-17 Chong Yidong + + * text.texi (Filling): Add sentence-end-without-period and + sentence-end-without-space. + (Changing Properties): Minor fix. + + * anti.texi: Total rewrite. + +2005-03-15 Lute Kamstra + + * edebug.texi (Instrumenting Macro Calls): Fix typos. + +2005-03-08 Kim F. Storm + + * display.texi (Specified Space): Property :width is support on + non-graphic terminals, :height is not. + +2005-03-07 Richard M. Stallman + + * display.texi (Overlay Arrow, Fringe Bitmaps, Customizing Bitmaps): + Now subnodes of Fringes. + (Overlay Arrow): Document overlay-arrow-variable-list. + (Fringe Size/Pos): New node, broken out of Fringes. + (Display): Explain clearing vs redisplay better. + (Truncation): Clarify use of bitmaps. + (The Echo Area): Clarify the uses of the echo area. + Add max-mini-window-height. + (Progress): Clarify. + (Invisible Text): Explain that main loop moves point out. + (Selective Display): Say "hidden", not "invisible". + (Managing Overlays): Move up. Describe relation to Undo here. + (Overlay Properties): Clarify intro. + (Finding Overlays): Explain return values when nothing found. + (Width): truncate-string-to-width has added arg. + (Displaying Faces): Clarify and update mode line face handling. + (Face Functions): Minor cleanup. + (Conditional Display): Merge into Other Display Specs. + (Pixel Specification, Other Display Specs): Minor cleanups. + (Images, Image Descriptors): Minor cleanups. + (GIF Images): Patents have expired. + (Showing Images): Explain default text for insert-image. + (Manipulating Button Types): Merge into Manipulating Buttons. + (Making Buttons): Explain return values. + (Button Buffer Commands): Add xref. + (Inverse Video): Update mode-line-inverse-video. + (Display Table Format): Clarify. + (Active Display Table): Give defaults for window-display-table. + + * calendar.texi (Calendar Customizing): calendar-holiday-marker + and calendar-today-marker are strings, not chars. + (Holiday Customizing): Minor fix. + + * internals.texi (Writing Emacs Primitives): Update `or' example. + Update limit on # args of subr. + + * edebug.texi (Using Edebug): Arrow is in fringe. + (Instrumenting): Arg to eval-defun works without loading edebug. + (Edebug Execution Modes): Add xref. + + * customize.texi (Common Keywords): Clarify :require. + Mention :version here. + (Variable Definitions, Group Definitions): Not here. + (Variable Definitions): Clarify symbol arg to :initialize and :set fns. + +2005-03-07 Chong Yidong + * nonascii.texi (Text Representations): Clarify position-bytes. + (Character Sets): Add list-charset-chars. + (Scanning Charsets): Add charset-after. + (Encoding and I/O): Minor fix. + +2005-03-06 Richard M. Stallman + + * windows.texi (Vertical Scrolling): Get rid of "Emacs 21". + (Resizing Windows): Likewise. + + * text.texi (Change Hooks): Get rid of "Emacs 21". + + * strings.texi (Formatting Strings): Get rid of "Emacs 21". + + * streams.texi (Output Variables): Get rid of "Emacs 21". + + * searching.texi (Regexp Special, Char Classes): Get rid of "Emacs 21". + + * os.texi (Translating Input): Replace flow-control example + with a less obsolete example that uses `keyboard-translate'. + + * objects.texi (Hash Table Type, Circular Objects): + Get rid of "Emacs 21". + + * modes.texi (Mode Line Format): Get rid of "Emacs 21". + (Mode Line Data, Properties in Mode, Header Lines): Likewise. + + * minibuf.texi (Minibuffer Misc): Get rid of "Emacs 21". + + * lists.texi (List Elements, Building Lists): Get rid of "Emacs 21". + + * keymaps.texi (Menu Separators, Tool Bar): Get rid of "Emacs 21". + (Menu Bar): Fix when menu-bar-update-hook is called. + + * hash.texi (Hash Tables): Get rid of "Emacs 21". + + * frames.texi (Text Terminal Colors): Get rid of "Emacs 21", + and make it read better. + + * files.texi (Writing to Files): Get rid of "Emacs 21". + (Unique File Names): Likewise. + + * elisp.texi: Update Emacs version to 22. + + * display.texi (Forcing Redisplay): Get rid of "Emacs 21". + (Overlay Properties, Face Attributes): Likewise. + (Managing Overlays): Fix punctuation. + (Attribute Functions): Clarify set-face-font; get rid of + info about old Emacs versions. + (Auto Faces, Font Lookup, Display Property, Images): + Get rid of "Emacs 21". + + * calendar.texi (Calendar Customizing): Get rid of "Emacs 21". + +2005-03-05 Richard M. Stallman + + * debugging.texi (Error Debugging): Remove stack-trace-on-error. + +2005-03-04 Lute Kamstra + + * debugging.texi (Error Debugging): Document stack-trace-on-error. + +2005-03-03 Lute Kamstra + + * edebug.texi (Instrumenting Macro Calls): Fix typo. + +2005-03-01 Lute Kamstra + + * debugging.texi (Debugger Commands): Update `j'. + +2005-02-28 Lute Kamstra + + * debugging.texi (Debugging): Fix typo. + (Error Debugging): Document eval-expression-debug-on-error. + (Function Debugging): Update example. + (Using Debugger): Mention starred stack frames. + (Debugger Commands): Document `j' and `l'. + (Invoking the Debugger): `d' and `j' exit recursive edit too. + Update the messages that the debugger displays. + (Internals of Debugger): Add cross reference. Update example. + (Excess Open): Minor improvement. + (Excess Close): Minor improvement. + +2005-02-26 Richard M. Stallman + + * tips.texi (Coding Conventions): Clarify. + Put all the major mode key reservations together. + Mention the Mouse-1 => Mouse-2 conventions. + + * syntax.texi (Syntax Class Table): Clarify. + (Syntax Table Functions): syntax-after moved from here. + (Syntax Table Internals): syntax-after moved to here. + (Parsing Expressions): Update info on number of values + and what's meaningful in the STATE argument. + (Categories): Fix typo. + + * sequences.texi (Arrays): Cleanup. + (Char-Tables): Clarify. + + * processes.texi (Deleting Processes): Cleanups, add xref. + (Subprocess Creation): Explain nil in exec-path. Cleanup. + (Process Information): set-process-coding-system, some args optional. + (Input to Processes): Explain various types for PROCESS args. + Rename them from PROCESS-NAME to PROCESS. + (Signals to Processes): Likewise. + (Decoding Output): Cleanup. + (Query Before Exit): Clarify. + + * os.texi (Startup Summary): Correct the options; add missing ones. + (Terminal Output, Batch Mode): Clarify. + (Flow Control): Node deleted. + + * markers.texi (The Mark): Clarify. + + * macros.texi (Expansion): Cleanup. + (Indenting Macros): indent-spec allows ints, not floats. + + * keymaps.texi (Keymaps): Clarify. + (Format of Keymaps): Update lisp-mode-map example. + (Active Keymaps, Key Lookup): Clarify. + (Changing Key Bindings): Add xref to `kbd'. + (Key Binding Commands, Simple Menu Items): Clarify. + (Mouse Menus, Menu Bar): Clarify. + (Menu Example): Replace print example with menu-bar-replace-menu. + + * help.texi (Documentation Basics): Add function-documentation prop. + + * elisp.texi (Top): Don't refer to Flow Control node. + + * commands.texi (Command Overview): Improve xrefs. + (Adjusting Point): Adjusting point applies to intangible and invis. + (Key Sequence Input): Doc extra read-key-sequence args. + Likewise for read-key-sequence-vector. + + * backups.texi (Rename or Copy): Minor fix. + (Numbered Backups): For version-control, say the default. + (Auto-Saving): make-auto-save-file-name example is simplified. + + * advice.texi (Advising Functions): Don't imply one part of Emacs + should advise another part. Markup changes. + (Defining Advice): Move transitional para. + (Activation of Advice): Cleanup. + Explain if COMPILE is nil or negative. + + * abbrevs.texi (Abbrev Expansion): Clarify, fix typo. + +2005-02-24 Lute Kamstra + + * modes.texi (Defining Minor Modes): Explain that INIT-VALUE, + LIGHTER, and KEYMAP can be omitted when KEYWORD-ARGS are used. + +2005-02-23 Lute Kamstra + + * modes.texi (Defining Minor Modes): define-minor-mode can be used + to define global minor modes as well. + + * display.texi (Managing Overlays): overlay-buffer returns nil for + deleted overlays. + +2005-02-22 Kim F. Storm + + * minibuf.texi (Basic Completion): Allow symbols in addition to + strings in try-completion and all-completions. + +2005-02-14 Lute Kamstra + + * elisp.texi (Top): Remove reference to deleted node. + + * lists.texi (Lists): Remove reference to deleted node. + (Cons Cells): Fix typo. + + * loading.texi (Where Defined): Fix typo. + +2005-02-14 Richard M. Stallman + + * variables.texi (Creating Buffer-Local): change-major-mode-hook + is useful for discarding some minor modes. + + * symbols.texi (Symbol Components): Reorder examples. + + * streams.texi (Input Functions): State standard-input default. + (Output Variables): State standard-output default. + + * objects.texi (Printed Representation): Clarify read syntax vs print. + (Floating Point Type): Explain meaning better. + (Symbol Type): Explain uniqueness better. + (Cons Cell Type): Explain empty list sooner. CAR and CDR later. + List examples sooner. + (Box Diagrams): New subnode broken out. + Some examples moved from old Lists as Boxes node. + (Dotted Pair Notation): Clarify intro. + (Array Type): Clarify. + (Type Predicates): Add hash-table-p. + + * numbers.texi (Integer Basics): Clarify radix explanation. + (Predicates on Numbers): Minor clarification. + (Comparison of Numbers): Minor clarification. Clarify eql. + Typos in min, max. + (Math Functions): Clarify overflow in expt. + + * minibuf.texi (Text from Minibuffer): Minor clarification. + Mention arrow keys. + + * loading.texi (Autoload): defun's doc string overrides autoload's + doc string. + (Repeated Loading): Modernize "add to list" examples. + (Where Defined): Finish updating table of load-history elts. + + * lists.texi (List-related Predicates): Minor wording improvement. + (Lists as Boxes): Node deleted. + (Building Lists): Explain trivial cases of number-sequence. + + * hash.texi (Hash Tables): Add desc to menu items. + (Creating Hash): Expain "full" means "make larger", + (Hash Access): Any object can be a key. + State value of maphash. + + * functions.texi (What Is a Function): Wording cleanup. + (Function Documentation): Minor cleanup. + Explain purpose of calling convention at end of doc string. + (Function Names): Wording cleanup. + (Calling Functions): Wording cleanup. + Explain better how funcall calls the function. + (Function Cells): Delete example of saving and redefining function. + + * control.texi (Combining Conditions): Wording cleanup. + (Iteration): dolist and dotimes bind VAR locally. + (Cleanups): Xref to Atomic Changes. + + * compile.texi (Byte Compilation): Delete 19.29 info. + (Compilation Functions): Macros' difficulties don't affect defsubst. + (Docs and Compilation): Delete 19.29 info. + +2005-02-10 Richard M. Stallman + + * objects.texi (Symbol Type): Minor correction. + +2005-02-06 Lute Kamstra + + * modes.texi (Example Major Modes): Fix typos. + +2005-02-06 Richard M. Stallman + + * text.texi (Margins): fill-nobreak-predicate can be one function. + + * strings.texi (Modifying Strings): clear-string can make unibyte. + (Formatting Strings): format gives error if values missing. + + * positions.texi (Character Motion): Mention default arg + for forward-char. backward-char refers to forward-char. + (Word Motion): Mention default arg for forward-word. + (Buffer End Motion): Mention default arg for beginning-of-buffer. + Simplify end-of-buffer. + (Text Lines): Mention default arg for forward-line. + (List Motion): Mention default arg for beginning/end-of-defun. + (Skipping Characters): Minor fixes in explaining character-set. + + * modes.texi (Major Mode Conventions): Mention "system abbrevs". + Mode inheritance applies only when default-major-mode is nil. + Clarifications. + (Example Major Modes): Update Text mode and Lisp mode examples. + (Minor Mode Conventions): Mention define-minor-mode at top. + (Defining Minor Modes): In Hungry example, don't define C-M-DEL. + (Mode Line Format): Update mode line face display info. + (Properties in Mode): Mention effect of risky vars. + (Imenu): Define imenu-add-to-menubar. + (Font Lock Mode): Add descriptions to menu lines. + (Faces for Font Lock): Add font-lock-doc-face. + +2005-02-05 Lute Kamstra + + * text.texi (Maintaining Undo): Remove obsolete function. + +2005-02-05 Eli Zaretskii + + * frames.texi (Color Names): Add pointer to the X docs about RGB + color specifications. Improve indexing + (Text Terminal Colors): Replace the description of RGB values by + an xref to "Color Names". + +2005-02-03 Richard M. Stallman + + * windows.texi (Basic Windows): Add cursor-in-non-selected-windows. + Clarify. + (Selecting Windows): Clarify save-selected-window. + (Cyclic Window Ordering): Clarify walk-windows. + (Window Point): Clarify. + (Window Start): Add comment to example. + (Resizing Windows): Add `interactive' specs in examples. + Document fit-window-to-buffer. + + * text.texi (User-Level Deletion): just-one-space takes numeric arg. + (Undo, Maintaining Undo): Clarify last change. + (Sorting): In sort-numeric-fields, explain about octal and hex. + Mention sort-numeric-base. + (Format Properties): Add xref for hard newlines. + + * frames.texi (Window Frame Parameters): Explain pixel=char on tty. + (Pop-Up Menus): Fix typo. + (Color Names): Explain all types of color names. + Explain color-values on B&W terminal. + (Text Terminal Colors): Explain "rgb values" are lists. Fix arg names. + + * files.texi (File Locks): Not supported on MS systems. + (Testing Accessibility): Clarify. + + * edebug.texi (Printing in Edebug): Fix edebug-print-circle. + (Coverage Testing): Fix typo. + + * commands.texi (Misc Events): Remove stray space. + + * buffers.texi (Buffer Names): Clarify generate-new-buffer-name. + (Modification Time): Clarify when visited-file-modtime returns 0. + (The Buffer List): Clarify bury-buffer. + (Killing Buffers): Clarify. + (Indirect Buffers): Add clone-indirect-buffer. + +2005-02-02 Matt Hodges + + * edebug.texi (Printing in Edebug): Fix default value of + edebug-print-circle. + (Coverage Testing): Fix displayed frequency count data. + +2005-02-02 Luc Teirlinck + + * text.texi (Maintaining Undo): Add `undo-outer-limit'. + +2005-02-02 Kim F. Storm + + * text.texi (Undo) : Describe `apply' elements. + +2005-01-29 Eli Zaretskii + + * commands.texi (Misc Events): Describe the help-echo event. + + * text.texi (Special Properties) : Use `pos' + consistently in description of the help-echo property. + Use @code{nil} instead of @var{nil}. + + * display.texi (Overlay Properties): Fix the index entry for + help-echo overlay property. + + * customize.texi (Type Keywords): Uncomment the xref to the + help-echo property documentation. + +2005-01-23 Kim F. Storm + + * windows.texi (Window Start): Fix `pos-visible-in-window-p' + return value. Third element FULLY replaced by PARTIAL which + specifies number of invisible pixels if row is only partially visible. + (Textual Scrolling): Mention auto-window-vscroll. + (Vertical Scrolling): New defvar auto-window-vscroll. + +2005-01-16 Luc Teirlinck + + * keymaps.texi (Changing Key Bindings): `suppress-keymap' now uses + command remapping. + +2005-01-15 Richard M. Stallman + + * display.texi (Defining Images): Mention DATA-P arg of create-image. + +2005-01-14 Kim F. Storm + + * commands.texi (Accessing Events): Add WHOLE arg to posn-at-x-y. + + * text.texi (Links and Mouse-1): Fix string and vector item. + +2005-01-13 Richard M. Stallman + + * keymaps.texi (Active Keymaps): Rewrite the text, and update the + descriptions of overriding-local-map and overriding-terminal-local-map. + + * text.texi (Links and Mouse-1): Clarify text. + +2005-01-13 Kim F. Storm + + * modes.texi (Emulating Mode Line): Update format-mode-line entry. + +2005-01-13 Francis Litterio (tiny change) + + * keymaps.texi (Active Keymaps): Fix overriding-local-map description. + +2005-01-12 Kim F. Storm + + * text.texi (Links and Mouse-1): Rename section from Enabling + Mouse-1 to Following Links. Change xrefs. + Add examples for define-button-type and define-widget. + + * display.texi (Button Properties, Button Buffer Commands): + Clarify mouse-1 and follow-link functionality. + +2005-01-12 Richard M. Stallman + + * text.texi (Enabling Mouse-1 to Follow Links): Redo prev. change. + + * display.texi (Beeping): Fix Texinfo usage. + + * modes.texi (Emulating Mode Line): Doc FACE arg in format-header-line. + +2005-01-11 Kim F. Storm + + * display.texi (Button Properties, Button Buffer Commands): + Mention mouse-1 binding. Add follow-link keyword. + + * text.texi (Text Properties): Add "Enable Mouse-1" to submenu. + (Enabling Mouse-1 to Follow Links): New subsection. + +2005-01-06 Richard M. Stallman + + * text.texi (Special Properties): Minor change. + + * os.texi (Timers): Clarify previous change. + + * modes.texi (Emulating Mode Line): format-mode-line requires 1 arg. + +2005-01-01 Luc Teirlinck + + * display.texi (Face Attributes): Correct xref to renamed node. + +2005-01-01 Richard M. Stallman + + * display.texi (Face Attributes): Describe hex color specs. + +2004-12-31 Richard M. Stallman + + * os.texi (Timers): Update previous change. + +2004-12-30 Kim F. Storm + + * display.texi (Line Height): Total line-height is now specified + in line-height property of form (HEIGHT TOTAL). Swap (FACE . RATIO) + in cons cells. (nil . RATIO) is relative to actual line height. + Use line-height `t' instead of `0' to get minimum height. + +2004-12-29 Richard M. Stallman + + * os.texi (Timers): Discuss timers vs editing the buffer and undo. + +2004-12-28 Richard M. Stallman + + * commands.texi (Quitting): Clarify value of with-local-quit. + + * elisp.texi (Top): Fix previous change. + + * loading.texi (Loading): Fix previous change. + +2004-12-27 Richard M. Stallman + + * Makefile.in (MAKEINFO): Specify --force. + + * buffers.texi (Killing Buffers): Add buffer-save-without-query. + + * modes.texi (Emulating Mode Line): Document format's BUFFER arg. + + * display.texi (Line Height): Further clarify. + + * elisp.texi (Top): Update Loading submenu. + + * loading.texi (Where Defined): New node. + (Unloading): load-history moved to Where Defined. + +2004-12-21 Richard M. Stallman + + * commands.texi (Event Input Misc): Add while-no-input. + +2004-12-11 Richard M. Stallman + + * display.texi (Line Height): Rewrite text for clarity. + +2004-12-11 Kim F. Storm + + * display.texi (Display): Add node "Line Height" to menu. + (Line Height): New node. Move full description of line-spacing + and line-height text properties here from text.texi. + (Scroll Bars): Add vertical-scroll-bar variable. + + * frames.texi (Window Frame Parameters): Remove line-height defvar. + + * locals.texi (Standard Buffer-Local Variables): Fix xref for + line-spacing and vertical-scroll-bar. + + * text.texi (Special Properties): Just mention line-spacing and + line-height here, add xref to new "Line Height" node. + +2004-12-09 Thien-Thi Nguyen + + * frames.texi (Window Frame Parameters): New @defvar for `line-spacing'. + + * locals.texi (Standard Buffer-Local Variables): + Add @xref for `line-spacing'. + +2004-12-05 Richard M. Stallman + + * Makefile.in (maintainer-clean): Remove the info files + in $(infodir) where they are created. + +2004-12-03 Richard M. Stallman + + * windows.texi (Selecting Windows): get-lru-window and + get-largest-window don't consider dedicated windows. + + * text.texi (Undo): Document undo-in-progress. + +2004-11-26 Richard M. Stallman + + * locals.texi (Standard Buffer-Local Variables): Undo prev change. + Remove a few vars that are not always buffer-local. + +2004-11-24 Luc Teirlinck + + * locals.texi (Standard Buffer-Local Variables): Comment out + xref's to non-existent node `Yet to be written'. + +2004-11-24 Richard M. Stallman + + * processes.texi (Synchronous Processes): Grammar fix. + + * numbers.texi (Comparison of Numbers): Add eql. + + * locals.texi (Standard Buffer-Local Variables): Add many vars. + + * intro.texi (Printing Notation): Fix previous change. + + * display.texi (Customizing Bitmaps): Move indicate-buffer-boundaries + and default-indicate-buffer-boundaries from here. + (Usual Display): To here. + (Scroll Bars): Add scroll-bar-mode and scroll-bar-width. + (Usual Display): Move tab-width up. + + * customize.texi (Variable Definitions): Replace + show-paren-mode example with tooltip-mode. + (Simple Types, Composite Types, Defining New Types): + Minor cleanups. + +2004-11-21 Jesper Harder + + * processes.texi (Synchronous Processes, Output from Processes): + Markup fix. + +2004-11-20 Richard M. Stallman + + * positions.texi (Skipping Characters): skip-chars-forward + now handles char classes. + + * intro.texi (Printing Notation): Avoid confusion of `print' + when explaining @print. + + * macros.texi (Argument Evaluation): Fix 1st `for' expansion example. + + * display.texi (Display Table Format): Minor fix. + + * streams.texi (Output Functions): Fix print example. + + * Makefile.in (elisp): New target. + (dist): Depend on $(infodir)/elisp, not elisp. + Copy the info files from $(infodir). + + * minibuf.texi (Text from Minibuffer): Document KEEP-ALL arg in + read-from-minibuffer. + + * searching.texi (Regexp Search): Rename that to search-spaces-regexp. + +2004-11-19 Richard M. Stallman + + * searching.texi (Regexp Search): Add search-whitespace-regexp. + +2004-11-19 CHENG Gao (tiny change) + + * tips.texi (Coding Conventions): Fix typo. + +2004-11-16 Richard M. Stallman + + * tips.texi (Coding Conventions): Separate defvar and require + methods to avoid warnings. Use require only when there are many + functions and variables from that package. + + * minibuf.texi (Minibuffer Completion): When ignoring case, + predicate must not be case-sensitive. + + * debugging.texi (Function Debugging, Explicit Debug): Clarified. + (Test Coverage): Don't talk about "splotches". Clarified. + +2004-11-16 Thien-Thi Nguyen + + * frames.texi (Window Frame Parameters): Fix typo. + +2004-11-15 Kim F. Storm + + * symbols.texi (Other Plists): Note that plist-get may signal error. + Add safe-plist-get. + +2004-11-15 Thien-Thi Nguyen + + * modes.texi (Font Lock Basics): Fix typo. + +2004-11-08 Richard M. Stallman + + * syntax.texi (Syntax Table Functions): Add syntax-after. + +2004-11-06 Lars Brinkhoff + + * os.texi (Processor Run Time): New section documenting + get-internal-run-time. + +2004-11-06 Eli Zaretskii + + * Makefile.in (install, maintainer-clean): Don't use "elisp-*" as + it nukes elisp-cover.texi. + (dist): Change elisp-[0-9] to elisp-[1-9], as there could be no + elisp-0 etc. + +2004-11-05 Luc Teirlinck + + * commands.texi (Keyboard Macros): Document `append' return value + of `defining-kbd-macro'. + +2004-11-01 Richard M. Stallman + + * commands.texi (Interactive Call): Add called-interactively-p. + +2004-10-29 Simon Josefsson + + * minibuf.texi (Reading a Password): Revert. + +2004-10-28 Richard M. Stallman + + * frames.texi (Display Feature Testing): Explain about "vendor". + +2004-10-27 Richard M. Stallman + + * commands.texi (Interactive Codes): `N' uses numeric prefix, + not raw. Clarify `n'. + (Interactive Call): Rewrite interactive-p, focusing on when + and how to use it. + (Misc Events): Clarify previous change. + + * advice.texi (Simple Advice): Clarify what job the example does. + (Around-Advice): Clarify ad-do-it. + (Activation of Advice): An option of ad-default-compilation-action + is `never', not `nil'. + +2004-10-26 Kim F. Storm + + * commands.texi (Interactive Codes): Add U code letter. + +2004-10-25 Simon Josefsson + + * minibuf.texi (Reading a Password): Add. + +2004-10-24 Jason Rumney + + * commands.texi (Misc Events): Remove mouse-wheel. Add wheel-up + and wheel-down. + +2004-10-24 Kai Grossjohann + + * processes.texi (Synchronous Processes): Document process-file. + +2004-10-22 Kenichi Handa + + * text.texi (translate-region): Document that it accepts also a + char-table. + +2004-10-22 David Ponce + + * windows.texi (Resizing Windows): Document the `preserve-before' + argument of the functions `enlarge-window' and `shrink-window'. + +2004-10-19 Jason Rumney + + * makefile.w32-in (elisp): Change order of arguments to makeinfo. + +2004-10-09 Luc Teirlinck + + * text.texi (Filling): Add anchor for definition of + `sentence-end-double-space'. + + * searching.texi (Regexp Example): Update description of how + Emacs currently recognizes the end of a sentence. + (Standard Regexps): Update definition of the variable + `sentence-end'. Add definition of the function `sentence-end'. + +2004-10-08 Paul Pogonyshev + + * display.texi (Progress): New node. + +2004-10-05 Kim F. Storm + + * display.texi (Fringe Bitmaps): Update fringe-bitmaps-at-pos. + +2004-09-29 Kim F. Storm + + * display.texi (Fringe Bitmaps): Use symbols rather than numbers + to identify bitmaps. Remove -fringe-bitmap suffix for standard + fringe bitmap symbols, as they now have their own namespace. + (Customizing Bitmaps) : Clarify bit ordering + vs. pixels. Signal error if no free bitmap slots. + (Pixel Specification): Change IMAGE to @var{image}. + +2004-09-28 Richard M. Stallman + + * text.texi (Special Properties): Clarify line-spacing and line-height. + + * searching.texi (Regexp Search): Add looking-back. + +2004-09-25 Luc Teirlinck + + * display.texi: Correct typos. + (Image Descriptors): Correct xref's. + +2004-09-25 Richard M. Stallman + + * text.texi (Special Properties): Cleanups in `cursor'. + Rewrites in `line-height' and `line-spacing'; exchange them. + + * display.texi (Fringes): Rewrite previous change. + (Fringe Bitmaps): Merge text from Display Fringe Bitmaps. Rewrite. + (Display Fringe Bitmaps): Node deleted, text moved. + (Customizing Bitmaps): Split off from Fringe Bitmaps. Rewrite. + (Scroll Bars): Clarify set-window-scroll-bars. + (Pointer Shape): Rewrite. + (Specified Space): Clarify :align-to, etc. + (Pixel Specification): Use @var. Clarify new text. + (Other Display Specs): Clarify `slice'. + (Image Descriptors): Cleanups. + (Showing Images): Cleanups. + +2004-09-24 Luc Teirlinck + + * hooks.texi (Standard Hooks): Add `after-change-major-mode-hook'. + + * modes.texi: Various minor changes in addition to: + (Major Mode Conventions): Final call to `run-mode-hooks' should + not be inside the `delay-mode-hooks' form. + (Mode Hooks): New node. + (Hooks): Delete obsolete example. + Move definitions of `run-mode-hooks' and `delay-mode-hooks' to new + node "Mode Hooks". + +2004-09-22 Luc Teirlinck + + * display.texi: Correct various typos. + (Display): Rename node "Pointer Shapes" to "Pointer + Shape". (There is already a node called "Pointer Shapes" in + frames.texi.) + (Images): Remove non-existent node "Image Slices" from menu. + +2004-09-23 Kim F. Storm + + * text.texi (Special Properties): Add `cursor', `pointer', + `line-height', and `line-spacing' properties. + + * display.texi (Display): Add 'Fringe Bitmaps' and 'Pointer + Shapes' to menu. + (Standard Faces): Doc fix for fringe face. + (Fringes): Add `overflow-newline-into-fringe' and + 'indicate-buffer-boundaries'. + (Fringe Bitmaps, Pointer Shapes): New nodes. + (Display Property): Add 'Pixel Specification' and 'Display Fringe + Bitmaps' to menu. + (Specified Space): Describe pixel width and height. + (Pixel Specification): New node. + (Other Display Specs): Add `slice' property. + (Display Fringe Bitmaps): New node. + (Images): Add 'Image Slices' to menu. + (Image Descriptors): Add `:pointer' and `:map' properties. + (Showing Images): Add slice arg to `insert-image'. Add + 'insert-sliced-image'. + +2004-09-20 Richard M. Stallman + + * commands.texi (Key Sequence Input): + Clarify downcasing in read-key-sequence. + +2004-09-08 Juri Linkov + + * minibuf.texi (Minibuffer History): Add `history-delete-duplicates'. + +2004-09-07 Luc Teirlinck + + * locals.texi (Standard Buffer-Local Variables): Add + `buffer-auto-save-file-format'. + * internals.texi (Buffer Internals): Describe new + auto_save_file_format field of the buffer structure. + * files.texi (Format Conversion): `auto-save-file-format' has been + renamed `buffer-auto-save-file-format'. + +2004-08-27 Luc Teirlinck + + * abbrevs.texi (Abbrev Expansion): `abbrev-start-location' can be + an integer or a marker. + (Abbrev Expansion): Replace example for `pre-abbrev-expand-hook'. + +2004-08-22 Richard M. Stallman + + * modes.texi (Major Mode Conventions): Discuss rebinding of + standard key bindings. + +2004-08-18 Kim F. Storm + + * processes.texi (Accepting Output): Add `just-this-one' arg to + `accept-process-output'. + (Output from Processes): New var `process-adaptive-read-buffering'. + +2004-08-10 Luc Teirlinck + + * keymaps.texi: Various changes in addition to: + (Keymap Terminology): `kbd' uses same syntax as Edit Macro mode. + Give more varied examples for `kbd'. + (Creating Keymaps): Char tables have slots for all characters + without modifiers. + (Active Keymaps): `overriding-local-map' and + `overriding-terminal-local-map' also override text property and + overlay keymaps. + (Functions for Key Lookup): Mention OLP arg to `current-active-maps'. + (Scanning Keymaps): `accessible-keymaps' uses `[]' instead of `""' + to denote a prefix of no events. + `map-keymap' includes parent's bindings _recursively_. + Clarify and correct description of `where-is-internal'. + Mention BUFFER-OR-NAME arg to `describe-bindings'. + (Menu Example): For menus intended for use with the keyboard, the + menu items should be bound to characters or real function keys. + +2004-08-08 Luc Teirlinck + + * objects.texi (Character Type): Reposition `@anchor' to prevent + double space inside sentence in Info. + + * hooks.texi (Standard Hooks): `disabled-command-hook' has been + renamed to `disabled-command-function'. + * commands.texi (Key Sequence Input): Remove unnecessary anchor. + (Command Loop Info): Replace reference to it. + (Disabling Commands): `disabled-command-hook' has been renamed to + `disabled-command-function'. + +2004-08-07 Luc Teirlinck + + * os.texi (Translating Input): Only non-prefix bindings in + `key-translation-map' override actual key bindings. Warn about + possible indirect effect of actual key bindings on non-prefix + bindings in `key-translation-map'. + +2004-08-06 Luc Teirlinck + + * minibuf.texi (High-Level Completion): Add anchor for definition + of `read-variable'. + + * commands.texi: Various changes in addition to: + (Using Interactive): Clarify description of `interactive-form'. + (Interactive Call): Mention default for KEYS argument to + `call-interactively'. + (Command Loop Info): Clarify description of `this-command-keys'. + Mention KEEP-RECORD argument to `clear-this-command-keys'. + Value of `last-event-frame' can be `macro'. + (Repeat Events): `double-click-fuzz' is also used to distinguish + clicks and drags. + (Classifying Events): Clarify descriptions of `event-modifiers' + `event-basic-type' and `event-convert-list'. + (Accessing Events): `posn-timestamp' takes POSITION argument. + (Quoted Character Input): Clarify description of + `read-quoted-char' and fix example. + (Quitting): Add `with-local-quit'. + (Disabling Commands): Correct and clarify descriptions of + `enable-command' and `disable-command'. + Mention what happens if `disabled-command-hook' is nil. + (Keyboard Macros): Mention LOOPFUNC arg to `execute-kbd-macro'. + Describe `executing-kbd-macro' instead of obsolete `executing-macro'. + +2004-07-24 Luc Teirlinck + + * frames.texi: Various changes in addition to: + (Creating Frames): Expand and clarify description of `make-frame'. + (Window Frame Parameters): Either none or both of the `icon-left' + and `icon-top' parameters must be specified. Put descriptions of + `menu-bar-lines' and `toolbar-lines' closer together and change + them accordingly. + (Frame Titles): `multiple-frames' is not guaranteed to be accurate + except while processing `frame-title-format' or `icon-title-format'. + (Deleting Frames): Correct description of `delete-frame'. + Non-nil return values of `frame-live-p' are like those of `framep'. + (Frames and Windows): Mention return value of + `set-frame-selected-window'. + (Visibility of Frames): Mention `force' argument to + `make-frame-invisible'. `frame-visible-p' returns t for all + frames on text-only terminals. + (Frame Configurations): Restoring a frame configuration does not + restore deleted frames. + (Window System Selections): `x-set-selection' returns DATA. + (Resources): Add example. + (Display Feature Testing): Clarify descriptions of + `display-pixel-height', `display-pixel-width', `x-server-version' + and `x-server-vendor'. + + * windows.texi (Choosing Window): Add anchor. + * minibuf.texi (Minibuffer Misc): Add anchor. + +2004-07-23 John Paul Wallington + + * macros.texi (Defining Macros): Declaration keyword for setting + Edebug spec is `debug' not `edebug'. + +2004-07-19 Luc Teirlinck + + * windows.texi: Various small changes in addition to: + (Window Point): Mention return value of `set-window-point'. + (Window Start): `pos-visible-in-window-p' disregards horizontal + scrolling. Explain return value if PARTIALLY is non-nil. + (Vertical Scrolling): Mention PIXELS-P argument to `window-vscroll' + and `set-window-vscroll'. + (Size of Window): The argument WINDOW to `window-inside-edges', + `window-pixel-edges' and `window-inside-pixel-edges' is optional. + (Resizing Windows): Explain return value of + `shrink-window-if-larger-than-buffer'. + `window-size-fixed' automatically becomes buffer local when set. + (Window Configurations): Explain return value of + `set-window-configuration'. + + * minibuf.texi (Minibuffer Misc): Add anchor for + `minibuffer-scroll-window'. + + * positions.texi (Text Lines): Add anchor for `count-lines'. + +2004-07-17 Richard M. Stallman + + * display.texi (Overlay Properties): Adding `evaporate' prop + deletes empty overlay immediately. + + * abbrevs.texi (Abbrev Expansion): Clarify pre-abbrev-expand-hook, + fix example. + +2004-07-16 Jim Blandy + + * searching.texi (Regexp Backslash): Document new \_< and \_> + operators. + +2004-07-16 Juanma Barranquero + + * display.texi (Images): Fix Texinfo usage. + +2004-07-14 Luc Teirlinck + + * buffers.texi (Modification Time): `visited-file-modtime' now + returns a list of two integers, instead of a cons. + +2004-07-13 Luc Teirlinck + + * windows.texi: Various changes in addition to: + (Splitting Windows): Add `split-window-keep-point'. + +2004-07-09 Richard M. Stallman + + * frames.texi (Input Focus): Minor fix. + +2004-07-07 Luc Teirlinck + + * frames.texi (Input Focus): Clarify descriptions of + `select-frame-set-input-focus' and `select-frame'. + +2004-07-06 Luc Teirlinck + + * os.texi: Various small changes in addition to: + (Killing Emacs): Expand and clarify description of + `kill-emacs-query-functions' and `kill-emacs-hook'. + (System Environment): Expand and clarify description of `getenv' + and `setenv'. + (Timers): Clarify description of `run-at-time'. + (Translating Input): Correct description of + `extra-keyboard-modifiers'. + (Flow Control): Correct description of `enable-flow-control'. + +2004-07-06 Thien-Thi Nguyen + + * os.texi: Update copyright. + (Session Management): Grammar fix. + Clarify which Emacs does the restarting. + Use @samp for *scratch* buffer. + +2004-07-04 Alan Mackenzie + + * frames.texi (Input Focus): Add documentation for + `select-frame-set-input-focus'. Replace refs to non-existent + `switch-frame' with `select-frame'. Minor corrections and tidying + up of text-only terminal stuff. + +2004-07-02 Richard M. Stallman + + * files.texi (Saving Buffers): Cleanup write-contents-function. + (Magic File Names): Cleanup file-remote-p. + +2004-07-02 Kai Grossjohann + + * files.texi (Magic File Names): `file-remote-p' returns an + identifier of the remote system, not just t. + +2004-07-02 David Kastrup + + * searching.texi (Entire Match Data): Add explanation about new + match-data behavior when @var{integers} is non-nil. + +2004-06-24 Richard M. Stallman + + * commands.texi (Misc Events): Describe usr1-signal, usr2-signal event. + + * customize.texi (Variable Definitions): Note about doc strings + and :set. + + * keymaps.texi (Keymap Terminology): Document `kbd'. + (Changing Key Bindings, Key Binding Commands): Use kbd in examples. + + * display.texi (Invisible Text): Setting buffer-invisibility-spec + makes it buffer-local. + + * files.texi (Saving Buffers): Correct previous change. + + * commands.texi (Accessing Events): + Clarify posn-col-row and posn-actual-col-row. + +2004-06-24 David Ponce + + * commands.texi (Accessing Events): New functions + posn-at-point and posn-at-x-y. Add example to posn-x-y. + +2004-06-23 Luc Teirlinck + + * lists.texi, files.texi, processes.texi, macros.texi, hash.texi: + * frames.texi, buffers.texi, backups.texi, variables.texi: + * loading.texi, eval.texi, functions.texi, control.texi: + * symbols.texi, minibuf.texi: Reposition @anchor's. + + * help.texi: Various small changes in addition to the following. + (Describing Characters): Describe PREFIX argument to + `key-description'. Correct and clarify definition of + `text-char-description'. Describe NEED-VECTOR argument to + `read-kbd-macro'. + (Help Functions): Clarify definition of `apropos'. + +2004-06-23 Lars Hansen + + * files.texi (Saving Buffers): Correct description of + `write-contents-functions'. + +2004-06-21 Juanma Barranquero + + * display.texi (Images): Remove redundant @vindex directives. + Rewrite `image-library-alist' doc in active voice. + +2004-06-14 Juanma Barranquero + + * display.texi (Images): Document new delayed library loading, + variable `image-library-alist' and (existing but undocumented) + function `image-type-available-p'. + +2004-06-05 Richard M. Stallman + + * minibuf.texi (Minibuffer Completion): For INITIAL arg, + refer the user to the Initial Input node. + (Text from Minibuffer): Likewise. + (Initial Input): New node. Document this feature + and say it is mostly deprecated. + +2004-05-30 Richard M. Stallman + + * loading.texi (Named Features): Clarify return value + and meaning of NOERROR. + + * variables.texi (File Local Variables): Minor cleanup. + +2004-05-30 Michael Albinus + + * files.texi (Magic File Names): Add `file-remote-p' as operation + of file name handlers. + +2004-05-29 Richard M. Stallman + + * modes.texi (Minor Mode Conventions): (-) has no special meaning + as arg to a minor mode command. + +2004-05-22 Richard M. Stallman + + * syntax.texi (Syntax Class Table): Word syntax not just for English. + + * streams.texi (Output Variables): Doc float-output-format. + + * searching.texi (Regexp Special): Nested repetition can be infloop. + + * eval.texi (Eval): Increasing max-lisp-eval-depth can cause + real stack overflow. + + * compile.texi: Minor cleanups. + +2004-05-22 Luc Teirlinck + + * lists.texi (Cons Cells): Explain dotted lists, true lists, + circular lists. + (List Elements): Explain handling of circular and dotted lists. + +2004-05-19 Thien-Thi Nguyen + + * modes.texi (Search-based Fontification): Fix typo. + +2004-05-10 Juanma Barranquero + + * modes.texi (Mode Line Variables): Fix description of + global-mode-string, which is now after which-func-mode, not the + buffer name. + +2004-05-07 Lars Hansen + + * modes.texi (Desktop Save Mode): Add. + (Modes): Add menu entry Desktop Save Mode. + + * hooks.texi: Add desktop-after-read-hook, + desktop-no-desktop-file-hook and desktop-save-hook. + + * locals.texi: Add desktop-save-buffer. + +2004-04-30 Jesper Harder + + * display.texi: emacs -> Emacs. + +2004-04-27 Matthew Mundell + + * files.texi (Changing Files): Document set-file-times. + +2004-04-23 Juanma Barranquero + + * makefile.w32-in: Add "-*- makefile -*-" mode tag. + +2004-04-18 Jesper Harder + + * tips.texi (Coding Conventions): defopt -> defcustom. + +2004-04-16 Luc Teirlinck + + * sequences.texi: Various clarifications. + +2004-04-14 Luc Teirlinck + + * buffers.texi (Read Only Buffers): Mention optional ARG to + `toggle-read-only'. + +2004-04-14 Nick Roberts + + * windows.texi (Selecting Windows): Note that get-lru-window + returns a full-width window if possible. + +2004-04-13 Luc Teirlinck + + * buffers.texi: Various changes in addition to: + (Buffer File Name): Add `find-buffer-visiting'. + (Buffer Modification): Mention optional ARG to `not-modified'. + (Indirect Buffers): Mention optional CLONE argument to + `make-indirect-buffer'. + + * files.texi: Various changes in addition to: + (Visiting Functions): `find-file-hook' is now a normal hook. + (File Name Expansion): Explain difference between the way that + `expand-file-name' and `file-truename' treat `..'. + (Contents of Directories): Mention optional ID-FORMAT argument to + `directory-files-and-attributes'. + (Format Conversion): Mention new optional CONFIRM argument to + `format-write-file'. + +2004-04-12 Miles Bader + + * macros.texi (Expansion): Add description of `macroexpand-all'. + +2004-04-05 Jesper Harder + + * variables.texi (Variable Aliases): Mention + cyclic-variable-indirection. + + * errors.texi (Standard Errors): Ditto. + +2004-04-04 Luc Teirlinck + + * backups.texi: Various small changes in addition to: + (Making Backups): Mention return value of `backup-buffer'. + (Auto-Saving): Mention optional FORCE argument to + `delete-auto-save-file-if-necessary'. + (Reverting): Mention optional PRESERVE-MODES argument to + `revert-buffer'. Correct description of `revert-buffer-function'. + +2004-03-22 Juri Linkov + + * sequences.texi (Sequence Functions): Replace xref to `Vectors' + with `Vector Functions'. + + * text.texi (Sorting): Add missing quote. + +2004-03-14 Luc Teirlinck + + * intro.texi (Lisp History): Replace xref to `cl' manual with + inforef. + +2004-03-12 Richard M. Stallman + + * intro.texi (Version Info): Add arg to emacs-version. + (Lisp History): Change xref to CL manual. + +2004-03-09 Luc Teirlinck + + * minibuf.texi (Completion Commands): Add xref to Emacs manual + for Partial Completion mode. + +2004-03-07 Thien-Thi Nguyen + + * customize.texi: Fix typo. Remove eol whitespace. + +2004-03-04 Richard M. Stallman + + * processes.texi: Fix typos. + + * lists.texi (Building Lists): Minor clarification. + + * hash.texi (Creating Hash): Correct the meaning of t for WEAK + in make-hash-table. + +2004-02-29 Juanma Barranquero + + * makefile.w32-in (clean, maintainer-clean): Use $(DEL) instead of + rm, and ignore exit code. + +2004-02-27 Dan Nicolaescu + + * display.texi (Defining Faces): Add description for min-colors. + Update example. + +2004-02-23 Luc Teirlinck + + * abbrevs.texi: Various corrections and clarifications in addition + to the following: + (Abbrev Tables): Delete add-abbrev (as suggested by RMS). + +2004-02-22 Matthew Mundell (tiny change) + + * calendar.texi (Holiday Customizing): Quote arg of holiday-sexp. + +2004-02-21 Luc Teirlinck + + * text.texi: Various small changes in addition to the following: + (User-Level Deletion): Mention optional BACKWARD-ONLY argument + to delete-horizontal-space. + (Kill Functions, Yanking, Low-Level Kill Ring): Clarify and correct + description of yank-handler text property at various places. + + * frames.texi (Window System Selections): Add anchor. + + * syntax.texi (Syntax Table Functions): Clarify and correct + descriptions of make-syntax-table and copy-syntax-table. + (Motion and Syntax): Clarify SYNTAXES argument to + skip-syntax-forward. + (Parsing Expressions): Mention that the return value of + parse-partial-sexp is currently a list of ten rather than nine + elements. + (Categories): Various corrections and clarifications. + +2004-02-17 Luc Teirlinck + + * markers.texi (Marker Insertion Types): Minor change. + + * locals.texi (Standard Buffer-Local Variables): + * commands.texi (Interactive Codes, Using Interactive): + * functions.texi (Related Topics): Fix xrefs. + +2004-02-16 Luc Teirlinck + + * lists.texi (Sets And Lists): Update description of delete-dups. + +2004-02-16 Jesper Harder (tiny change) + + * keymaps.texi (Tool Bar): tool-bar-item => tool-bar-button. + +2004-02-16 Jan Dj,Ad(Brv + + * frames.texi (Parameter Access): frame-parameters arg is optional. + modify-frame-parameters handles nil for FRAME. + (Window Frame Parameters): menu-bar-lines and tool-bar-lines + are all-or-nothing for certain toolkits. + Mention parameter wait-for-wm. + (Frames and Windows): In frame-first-window and frame-selected-window + the arg is optional. + (Input Focus): In redirect-frame-focus the second arg is optional. + (Window System Selections): Mention selection type CLIPBOARD. + Mention data-type UTF8_STRING. + Mention numbering of cut buffers. + (Resources): Describe x-resource-name. + +2004-02-16 Richard M. Stallman + + * windows.texi (Buffers and Windows): Delete false table + about all-frames. + + * syntax.texi (Parsing Expressions): Delete old caveat + about parse-sexp-ignore-comments. + + * streams.texi (Output Variables): Add print-quoted. + + * lists.texi (Building Lists): Minor cleanup. + + * hash.texi (Creating Hash): Correct and clarify doc of WEAK values. + + * display.texi (Overlays): Explain overlays use markers. + (Managing Overlays): Explain front-advance and rear-advance + in more detail. + + * loading.texi (Unloading): Document unload-feature-special-hooks. + Get rid of fns-NNN.el file. + +2004-02-16 Matthew Mundell (tiny change) + + * help.texi (Describing Characters): Fix text-char-description + example output. + + * edebug.texi (Using Edebug): Fix example. + + * debugging.texi (Internals of Debugger): Fix return value. + + * files.texi (Changing Files): Fix argname. + + * calendar.texi: Fix parens, and default values. + + * display.texi, frames.texi, internals.texi, modes.texi: Minor fixes. + * nonascii.texi, objects.texi, os.texi: Minor fixes. + * searching.texi, text.texi, tips.texi, windows.text: Minor fixes. + + * positions.texi (Text Lines): Don't add -1 in current-line. + +2004-02-16 Richard M. Stallman + + * compile.texi (Compiler Errors): if-boundp feature applies to cond. + +2004-02-16 Jesper Harder (tiny change) + + * processes.texi (Low-Level Network): Fix a typo. + +2004-02-12 Kim F. Storm + + * display.texi (Fringes): Use consistent wording. + Note that window-fringe's window arg is optional. + (Scroll Bars): Use consistent wording. + +2004-02-11 Luc Teirlinck + + * tips.texi (Comment Tips): Document the new conventions for + commenting out code. + +2004-02-07 Jan Dj,Ad(Brv + + * positions.texi (Text Lines): Added missing end defun. + +2004-02-07 Kim F. Storm + + * positions.texi (Text Lines): Add line-number-at-pos. + +2004-02-06 John Paul Wallington + + * display.texi (Button Properties, Button Buffer Commands): + mouse-2 invokes button, not down-mouse-1. + +2004-02-04 Jason Rumney + + * makefile.w32-in: Sync with Makefile.in changes. + +2004-02-03 Luc Teirlinck + + * minibuf.texi (Text from Minibuffer): Various corrections and + clarifications. + (Object from Minibuffer): Correct Lisp description of + read-minibuffer. + (Minibuffer History): Clarify description of cons values for + HISTORY arguments. + (Basic Completion): Various corrections and clarifications. Add + completion-regexp-list. + (Minibuffer Completion): Correct and clarify description of + completing-read. + (Completion Commands): Mention Partial Completion mode. Various + other minor changes. + (High-Level Completion): Various corrections and clarifications. + (Reading File Names): Ditto. + (Minibuffer Misc): Ditto. + +2004-01-26 Luc Teirlinck + + * strings.texi (Text Comparison): assoc-string also matches + elements of alists that are strings instead of conses. + (Formatting Strings): Standardize Texinfo usage. Update index + entries. + +2004-01-20 Luc Teirlinck + + * lists.texi (Sets And Lists): Add delete-dups. + +2004-01-15 Luc Teirlinck + + * edebug.texi (Instrumenting Macro Calls): `declare' is not a + special form. + * macros.texi (Defining Macros): Update description of `declare', + which now is a macro. + (Wrong Time): Fix typos. + +2004-01-14 Luc Teirlinck + + * compile.texi (Compilation Functions): Expand descriptions of + `compile-defun', `byte-compile-file', `byte-recompile-directory' + and `batch-byte-compile'. In particular, mention and describe + all optional arguments. + (Disassembly): Correct and clarify the description of `disassemble'. + +2004-01-11 Luc Teirlinck + + * searching.texi: Various small changes in addition to the + following. + (Regexp Example): Adapt to new value of `sentence-end'. + (Regexp Functions): The PAREN argument to `regexp-opt' can be + `words'. + (Search and Replace): Add usage note for `perform-replace'. + (Entire Match Data): Mention INTEGERS and REUSE arguments to + `match-data'. + (Standard Regexps): Update for new values of `paragraph-start' + and `sentence-end'. + +2004-01-07 Luc Teirlinck + + * files.texi (Saving Buffers): Clarify descriptions of + `write-contents-functions' and `before-save-hook'. + Make the defvar's for `before-save-hook' and `after-save-hook' + into defopt's. + +2004-01-07 Kim F. Storm + + * commands.texi (Click Events): Describe new image and + width/height elements of click events. + (Accessing Events): Add posn-string, posn-image, and + posn-object-width-height. Change posn-object to return either + image or string object. + +2004-01-01 Simon Josefsson + + * hooks.texi (Standard Hooks): Add before-save-hook. + * files.texi (Saving Buffers): Likewise. + +2004-01-03 Richard M. Stallman + + * frames.texi (Frames and Windows): Delete frame-root-window. + +2004-01-03 Luc Teirlinck + + * eval.texi, hash.texi, help.texi, symbols.texi: Add anchors. + + * functions.texi: Various small changes in addition to the + following. + (What Is a Function): `functionp' returns nil for macros. Clarify + behavior of this and following functions for symbol arguments. + (Function Documentation): Add `\' in front of (fn @var{arglist}) + and explain why. + (Defining Functions): Mention DOCSTRING argument to `defalias'. + Add anchor. + (Mapping Functions): Add anchor. Unquote nil in mapcar* example. + +2004-01-01 Miles Bader + + * display.texi (Buttons): New section. + +2003-12-31 Andreas Schwab + + * numbers.texi (Math Functions): sqrt reports a domain-error + error. + (Float Basics): Use `(/ 0.0 0.0)' instead of `(sqrt -1.0)'. + +2003-12-30 Luc Teirlinck + + * tips.texi (Documentation Tips): Update item on hyperlinks in + documentation strings. + + * errors.texi (Standard Errors): Various small corrections and + additions. + + * control.texi: Various small changes in addition to the + following. + (Signaling Errors): Provide some more details on how `signal' + constructs the error message. Add anchor to the definition of + `signal'. + (Error Symbols): Describe special treatment of `quit'. + (Cleanups): Rename BODY argument of `unwind-protect' to BODY-FORM + to emphasize that it has to be a single form. + + * buffers.texi: Add anchor. + +2003-12-29 Richard M. Stallman + + * windows.texi (Choosing Window): Add same-window-p, special-display-p. + (Window Configurations): Add window-configuration-frame. + + * variables.texi (Creating Buffer-Local): Add local-variable-if-set-p. + + * text.texi (Examining Properties): Add get-char-property-and-overlay. + Change arg name in get-char-property. + (Special Properties): Update handling of keymap property. + + * strings.texi (Modifying Strings): Add clear-string. + (Text Comparison): Add assoc-string and remove + assoc-ignore-case, assoc-ignore-representation. + + * os.texi (Time of Day): Add set-time-zone-rule. + + * numbers.texi (Math Functions): asin, acos, log, log10 + report domain-error errors. + + * nonascii.texi (Converting Representations): + Add multibyte-char-to-unibyte and unibyte-char-to-multibyte. + (Encoding and I/O): Add file-name-coding-system. + + * modes.texi (Search-based Fontification): Explain that + face specs are symbols with face names as values. + + * minibuf.texi (Minibuffer Misc): Add set-minibuffer-window. + + * lists.texi (Building Lists): remq moved elsewhere. + (Sets And Lists): remq moved here. + (Association Lists): Refer to assoc-string. + + * internals.texi (Garbage Collection): Add memory-use-counts. + + * frames.texi (Frames and Windows): Add set-frame-selected-window + and frame-root-window. + + * files.texi (Contents of Directories): + Add directory-files-and-attributes. + + * display.texi (Refresh Screen): Add force-window-update. + (Invisible Text): Explain about moving point out of invis text. + (Overlay Properties): Add overlay-properties. + (Managing Overlays): Add overlayp. + (GIF Images): Invalid image number displays a hollow box. + + * buffers.texi (Buffer Modification): Add restore-buffer-modified-p. + (Killing Buffers): Add buffer-live-p. + +2003-12-25 Markus Rost + + * display.texi (Fringes): Fix typo "set-buffer-window". + +2003-12-24 Luc Teirlinck + + * display.texi, eval.texi, help.texi, internals.texi, loading.texi: + * nonascii.texi, processes.texi, tips.texi, variables.texi: + Add or change various xrefs and anchors. + + * commands.texi: Replace all occurrences of @acronym{CAR} with + @sc{car}, for consistency with the rest of the Elisp manual. + `car' and `cdr' are historically acronyms, but are no longer + widely thought of as such. + + * internals.texi (Pure Storage): Mention that `purecopy' does not + copy text properties. + (Object Internals): Now 29 bits are used (in most implementations) + to address Lisp objects. + + * variables.texi (Variables with Restricted Values): New node. + + * objects.texi (Lisp Data Types): Mention that certain variables + can only take on a restricted set of values and add an xref to + the new node "Variables with Restricted Values". + + * eval.texi (Function Indirection): Describe the errors that + `indirect-function' can signal. + (Eval): Clarify the descriptions of `eval-region' and `values'. + Describe `eval-buffer' instead of `eval-current-buffer' and + mention `eval-current-buffer' as an alias for `current-buffer'. + Correct the description and mention all optional arguments. + + * nonascii.texi: Various small changes in addition to the + following. + (Converting Representations): Clarify behavior of + `string-make-multibyte' and `string-to-multibyte' for unibyte all + ASCII arguments. + (Character Sets): Document the variable `charset-list' and adapt + the definition of the function `charset-list' accordingly. + (Translation of Characters): Clarify use of generic characters in + `make-translation-table'. Clarify and correct the description of + the use of translation tables in encoding and decoding. + (User-Chosen Coding Systems): Correct and clarify the description + of `select-safe-coding-system'. + (Default Coding Systems): Clarify description of + `file-coding-system-alist'. + +2003-11-30 Luc Teirlinck + + * strings.texi (Text Comparison): Correctly describe when two + strings are `equal'. Combine and clarify descriptions of + `assoc-ignore-case' and `assoc-ignore-representation'. + + * objects.texi (Non-ASCII in Strings): Clarify description of + when a string is unibyte or multibyte. + (Bool-Vector Type): Update examples. + (Equality Predicates): Correctly describe when two strings are + `equal'. + +2003-11-29 Luc Teirlinck + + * lists.texi (Building Lists): `append' no longer accepts integer + arguments. Update the description of `number-sequence' to reflect + recent changes. + (Sets And Lists): Describe `member-ignore-case' after `member'. + +2003-11-27 Kim F. Storm + + * commands.texi (Click Events): Click object may be an images. + Describe (dx . dy) element of click positions. + (Accessing Events): Remove duplicate posn-timestamp. + New functions posn-object and posn-object-x-y. + +2003-11-23 Kim F. Storm + + * commands.texi (Click Events): Describe enhancements to event + position lists, including new text-pos and (col . row) items. + Mention left-fringe and right-fringe area events. + (Accessing Events): New functions posn-area and + posn-actual-col-row. Mention posn-timestamp. Mention that + posn-point in non-text area still returns buffer position. + Clarify posn-col-row. + +2003-11-21 Lars Hansen + + * files.texi (File Attributes): Describe new parameter ID-FORMAT. + * anti.texi (File Attributes): Describe removed parameter + ID-FORMAT. + +2003-11-20 Luc Teirlinck + + * positions.texi (Positions): Mention that, if a marker is used as + a position, its buffer is ignored. + + * markers.texi (Overview of Markers): Mention it here too. + +2003-11-12 Luc Teirlinck + + * numbers.texi (Numeric Conversions): Not just `floor', but also + `truncate', `ceiling' and `round' accept optional argument DIVISOR. + +2003-11-10 Luc Teirlinck + + * markers.texi (Creating Markers): Specify insertion type of + created markers. Add xref to `Marker Insertion Types'. + Second argument to `copy-marker' is optional. + (Marker Insertion Types): Mention that most markers are created + with insertion type nil. + (The Mark): Correctly describe when `mark' signals an error. + (The Region): Correctly describe when `region-beginning' and + `region-end' signal an error. + +2003-11-08 Luc Teirlinck + + * hash.texi (Creating Hash): Clarify description of `eql'. + `makehash' is obsolete. + (Hash Access): Add Common Lisp notes for `remhash' and `clrhash'. + + * positions.texi (Point): Change description of `buffer-end', so + that it is also correct for floating point arguments. + (List Motion): Correct argument lists of `beginning-of-defun' and + `end-of-defun'. + (Excursions): Add xref to `Marker Insertion Types'. + (Narrowing): Argument to `narrow-to-page' is optional. + +2003-11-06 Luc Teirlinck + + * streams.texi (Output Streams): Clarify behavior of point for + marker output streams. + +2003-11-04 Luc Teirlinck + + * variables.texi (Defining Variables): Second argument to + `defconst' is not optional. + (Setting Variables): Mention optional argument APPEND to + `add-to-list'. + (Creating Buffer-Local): Expand description of + `make-variable-buffer-local'. + (Frame-Local Variables): Expand description of + `make-variable-frame-local'. + (Variable Aliases): Correct description of optional argument + DOCSTRING to `defvaralias'. Mention return value of + `defvaralias'. + (File Local Variables): Add xref to `File variables' in Emacs + Manual. Correct description of `hack-local-variables'. Mention + `safe-local-variable' property. Mention optional second argument + to `risky-local-variable-p'. + +2003-11-03 Luc Teirlinck + + * symbols.texi (Symbol Plists): Mention return value of `setplist'. + +2003-11-02 Jesper Harder (tiny change) + + * lispref/anti.texi, lispref/backups.texi, lispref/commands.texi + lispref/customize.texi, lispref/display.texi, lispref/files.texi, + lispref/internals.texi, lispref/keymaps.texi, lispref/loading.texi, + lispref/modes.texi, lispref/nonascii.texi, lispref/numbers.texi, + lispref/objects.texi, lispref/os.texi, lispref/positions.texi, + lispref/processes.texi, lispref/searching.texi, + lispref/sequences.texi, lispref/streams.texi, lispref/strings.texi, + lispref/syntax.texi, lispref/text.texi: Replace @sc{foo} with + @acronym{FOO}. + +2003-10-27 Luc Teirlinck + + * strings.texi (Creating Strings): Argument START to `substring' + can not be `nil'. Expand description of + `substring-no-properties'. Correct description of `split-string', + especially with respect to empty matches. Prevent very bad line + break in definition of `split-string-default-separators'. + (Text Comparison): `string=' and `string<' also accept symbols as + arguments. + (String Conversion): More completely describe argument BASE in + `string-to-number'. + (Formatting Strings): `%s' and `%S' in `format' do require + corresponding object. Clarify behavior of numeric prefix after + `%' in `format'. + (Case Conversion): The argument to `upcase-initials' can be a + character. + +2003-10-27 Kenichi Handa + + * display.texi (Fontsets): Fix texinfo usage. + +2003-10-25 Kenichi Handa + + * display.texi (Fontsets): Add description of the function + set-fontset-font. + +2003-10-23 Luc Teirlinck + + * display.texi (Temporary Displays): Add xref to `Documentation + Tips'. + + * functions.texi (Function Safety): Use inforef instead of pxref + for SES. + +2003-10-23 Andreas Schwab + + * Makefile.in (TEX, texinputdir): Don't define. + (TEXI2DVI): Define. + (srcs): Remove $(srcdir)/index.perm and $(srcdir)/index.unperm, + add $(srcdir)/index.texi. + ($(infodir)/elisp): Remove index.texi dependency. + (elisp.dvi): Likewise. Use $(TEXI2DVI). + (index.texi): Remove target. + (dist): Don't link $(srcdir)/permute-index. + (clean): Don't remove index.texi. + + * permute-index, index.perm: Remove. + * index.texi: Rename from index.unperm. + +2003-10-22 Luc Teirlinck + + * tips.texi (Documentation Tips): Document new behavior for face + and variable hyperlinks in Help mode. + +2003-10-21 Luc Teirlinck + + * objects.texi (Integer Type): Update for extra bit of integer range. + (Character Type): Ditto. + +2003-10-16 Eli Zaretskii + + * numbers.texi (Integer Basics): Add index entries for reading + numbers in hex, octal, and binary. + +2003-10-16 Lute Kamstra + + * modes.texi (Mode Line Format): Mention force-mode-line-update's + argument. + +2003-10-13 Luc Teirlinck + + * windows.texi (Choosing Window): Fix typo. + * edebug.texi (Edebug Execution Modes): Fix typo. + +2003-10-13 Richard M. Stallman + + * windows.texi (Basic Windows): A window has fringe settings, + display margins and scroll-bar settings. + (Splitting Windows): Doc split-window return value. + Clean up one-window-p. + (Selecting Windows): Fix typo. + (Cyclic Window Ordering): Explain frame as ALL-FRAMES in next-window. + (Buffers and Windows): In set-window-buffer, explain effect + on fringe settings and scroll bar settings. + (Displaying Buffers): In pop-to-buffer, explain nil as buffer arg. + (Choosing Window): Use defopt for pop-up-frame-function. + For special-display-buffer-names, explain same-window and same-frame. + Clarify window-dedicated-p return value. + (Textual Scrolling): scroll-up and scroll-down can get an error. + (Horizontal Scrolling): Clarify auto-hscroll-mode. + Clarify set-window-hscroll. + (Size of Window): Don't mention tool bar in window-height. + (Coordinates and Windows): Explain what coordinates-in-window-p + returns for fringes and display margins. + (Window Configurations): Explain saving fringes, etc. + + * tips.texi (Library Headers): Clean up Documentation. + + * syntax.texi (Parsing Expressions): Clean up forward-comment + and parse-sexp-lookup-properties. + + * sequences.texi (Sequence Functions): sequencep accepts bool-vectors. + + * os.texi (System Environment): Clean up text for load-average errors. + + * modes.texi (Hooks): Don't explain local hook details at front. + Clarify run-hooks and run-hook-with-args a little. + Clean up add-hook and remove-hook. + + * edebug.texi (Edebug Execution Modes): Clarify t. + Document edebug-sit-for-seconds. + (Coverage Testing): Document C-x X = and =. + (Instrumenting Macro Calls): Fix typo. + (Specification List): Don't index the specification keywords. + +2003-10-10 Kim F. Storm + + * processes.texi (Network): Introduce make-network-process. + +2003-10-09 Luc Teirlinck + + * tips.texi (Library Headers): Fix typo. + +2003-10-07 Juri Linkov + + * modes.texi (Imenu): Mention imenu-create-index-function's + default value. Explain submenus better. + +2003-10-07 Lute Kamstra + + * modes.texi (Faces for Font Lock): Fix typo. + (Hooks): Explain how buffer-local hook variables can refer to + global hook variables. + Various minor clarifications. + +2003-10-06 Lute Kamstra + + * tips.texi (Coding Conventions): Mention naming conventions for + hooks. + +2003-10-05 Luc Teirlinck + + * loading.texi (Library Search): Correct default value of + load-suffixes. + (Named Features): Fix typo. + +2003-10-05 Richard M. Stallman + + * loading.texi (Named Features): In `provide', + say how to test for subfeatures. + (Unloading): In unload-feature, use new var name + unload-feature-special-hooks. + +2003-10-03 Lute Kamstra + + * modes.texi (Major Mode Conventions): Mention third way to set up + Imenu. + (Imenu): A number of small fixes. + Delete documentation of internal variable imenu--index-alist. + Document the return value format of imenu-create-index-function + functions. + +2003-09-30 Richard M. Stallman + + * processes.texi (Network): Say what stopped datagram connections do. + + * lists.texi (Association Lists): Clarify `assq-delete-all'. + + * display.texi (Overlay Properties): Clarify `evaporate' property. + +2003-09-29 Lute Kamstra + + * modes.texi (Mode Line Data): Explain when symbols in mode-line + constructs should be marked as risky. + Change cons cell into proper list. + (Mode Line Variables): Change cons cell into proper list. + +2003-09-26 Lute Kamstra + + * modes.texi (Mode Line Data): Document the :propertize construct. + (Mode Line Variables): Reorder the descriptions of the variables + to match their order in the default mode-line-format. + Describe the new variables mode-line-position and mode-line-modes. + Update the default values of mode-line-frame-identification, + minor-mode-alist, and default-mode-line-format. + (Properties in Mode): Mention the :propertize construct. + +2003-09-26 Richard M. Stallman + + * buffers.texi, commands.texi, debugging.texi, eval.texi: + * loading.texi, minibuf.texi, text.texi, variables.texi: + Avoid @strong{Note:}. + +2003-09-26 Richard M. Stallman + + * keymaps.texi (Remapping Commands): Fix typo. + +2003-09-23 Luc Teirlinck + + * processes.texi (Low-Level Network): Fix typo. + +2003-09-23 Kim F. Storm + + * processes.texi (Network, Network Servers): Fix typos. + (Low-Level Network): Add timeout value for :server keyword. + Add new option keywords to make-network-process. + Add set-network-process-options. + Explain how to test availability of network options. + +2003-09-19 Richard M. Stallman + + * text.texi (Motion by Indent): Arg to + backward-to-indentation and forward-to-indentation is optional. + + * strings.texi (Creating Strings): Add substring-no-properties. + + * processes.texi + (Process Information): Add list-processes arg QUERY-ONLY. + Delete process-contact from here. + Add new status values for process-status. + Add process-get, process-put, process-plist, set-process-plist. + (Synchronous Processes): Add call-process-shell-command. + (Signals to Processes): signal-process allows process objects. + (Network): Complete rewrite. + (Network Servers, Datagrams, Low-Level Network): New nodes. + + * positions.texi (Word Motion): forward-word, backward-word + arg is optional. Reword. + + * abbrevs.texi (Defining Abbrevs): Index no-self-insert. + + * variables.texi (Creating Buffer-Local): + Delete duplicate definition of buffer-local-value. + (File Local Variables): Explain about discarding text props. + +2003-09-11 Richard M. Stallman + + * minibuf.texi (Intro to Minibuffers): Explain that the minibuffer + changes variables that record input events. + (Minibuffer Misc): Add minibuffer-selected-window. + + * lists.texi (Building Lists): Add copy-tree. + + * display.texi (Fontsets): Add char-displayable-p. + (Scroll Bars): New node. + +2003-09-08 Lute Kamstra + + * modes.texi (%-Constructs): Document new `%i' and `%I' + constructs. + +2003-09-03 Peter Runestig + + * makefile.w32-in: New file. + +2003-08-29 Richard M. Stallman + + * display.texi (Overlay Properties): Clarify how priorities + affect use of the properties. + +2003-08-19 Luc Teirlinck + + * customize.texi (Type Keywords): Correct the description of + `:help-echo' in the case where `motion-doc' is a function. + +2003-08-14 John Paul Wallington + + * modes.texi (Emulating Mode Line): Subsection, not section. + +2003-08-13 Richard M. Stallman + + * elisp.texi (Top): Update subnode lists in menu. + + * text.texi (Insertion): Add insert-buffer-substring-no-properties. + (Kill Functions): kill-region has new arg yank-handler. + (Yanking): New node. + (Yank Commands): Add yank-undo-function. + (Low-Level Kill Ring): + kill-new and kill-append have new arg yank-handler. + (Changing Properties): Add remove-list-of-text-properties. + (Atomic Changes): New node. + + * symbols.texi (Other Plists): Add lax-plist-get, lax-plist-put. + + * streams.texi (Output Variables): Add eval-expression-print-length + and eval-expression-print-level. + + * os.texi (Time Conversion): For encode-time, explain limits on year. + + * objects.texi (Character Type): Define anchor "modifier bits". + + * modes.texi (Emulating Mode Line): New node. + (Search-based Fontification): Font Lock uses font-lock-face property. + (Other Font Lock Variables): Likewise. + + * keymaps.texi (Format of Keymaps): Keymaps contain char tables, + not vectors. + (Active Keymaps): Add emulation-mode-map-alists. + (Functions for Key Lookup): key-binding has new arg no-remap. + (Remapping Commands): New node. + (Scanning Keymaps): where-is-internal has new arg no-remap. + (Tool Bar): Add tool-bar-local-item-from-menu. + Clarify when to use tool-bar-add-item-from-menu. + + * commands.texi (Interactive Call): commandp has new arg. + (Command Loop Info): Add this-original-command. + +2003-08-06 John Paul Wallington + + * compile.texi (Compiler Errors): Say `@end defmac' after `@defmac'. + + * display.texi (Warning Basics): Fix typo. + (Fringes): Add closing curly bracket and fix typo. + + * elisp.texi (Top): Fix typo. + +2003-08-05 Richard M. Stallman + + * elisp.texi: Update lists of subnodes. + + * windows.texi (Buffers and Windows): set-window-buffer has new arg. + + * variables.texi (Local Variables): Use lc for example variable names. + + * tips.texi (Library Headers): Explain where to put -*-. + + * strings.texi (Creating Strings): Fix xref for vconcat. + + * sequences.texi (Vector Functions): + vconcat no longer allows integer args. + + * minibuf.texi (Reading File Names): read-file-name has new + arg PREDICATE. New function read-directory-name. + + * macros.texi (Defining Macros): Give definition of `declare' + (Indenting Macros): New node. + + * frames.texi (Parameter Access): Add modify-all-frames-parameters. + (Window Frame Parameters): Make separate table of parameters + that are coupled with specific face attributes. + (Deleting Frames): delete-frame-hooks renamed to + delete-frame-functions. + + * files.texi (Magic File Names): Add file-remote-p. + Clarify file-local-copy. + + * edebug.texi (Instrumenting Macro Calls): Don't define `declare' + here; instead xref Defining Macros. + + * display.texi (Warnings): New node, and subnodes. + (Fringes): New node. + + * debugging.texi (Test Coverage): New node. + + * compile.texi (Compiler Errors): Explain with-no-warnings + and other ways to suppress warnings. + + * commands.texi (Interactive Call): Minor clarification. + + * buffers.texi (Buffer File Name): set-visited-file-name + renames the buffer too. + + * abbrevs.texi (Abbrev Tables): Add copy-abbrev-table. + +2003-07-24 Markus Rost + + * abbrevs.texi (Abbrev Expansion): Use \s syntax in example. + +2003-07-22 Markus Rost + + * internals.texi (Garbage Collection): Fix previous change. + +2003-07-22 Richard M. Stallman + + * files.texi (Truenames): Add LIMIT arg to file-chase-links. + + * display.texi (Width): Use \s syntax in example. + (Font Selection): Add face-font-rescale-alist. + + * modes.texi (Imenu): Add xref to Emacs Manual node on Imenu. + Remove spurious indent in example. + + * lists.texi (Building Lists): Add number-sequence. + + * internals.texi (Garbage Collection): Add gcs-done, gc-elapsed. + + * functions.texi (Function Documentation): Explain how to + show calling convention explicitly in the doc string. + + * windows.texi (Selecting Windows): save-selected-window saves + selected window of each frame. + (Window Configurations): Minor change. + + * syntax.texi (Syntax Table Functions): Use \s syntax in examples. + + * streams.texi (Output Variables): Add print-continuous-numbering + and print-number-table. + + * processes.texi (Decoding Output): New node. + + * os.texi (Time Conversion): decode-time arg is optional. + + * objects.texi (Character Type): Don't use space as example for \. + Make list of char names and \-sequences correspond. + Explain that \s is not used in strings. `\ ' needs space after. + + * nonascii.texi (Converting Representations): Add string-to-multibyte. + (Translation of Characters): Add translation-table-for-input. + (Default Coding Systems): Add auto-coding-functions. + (Explicit Encoding): Add decode-coding-inserted-region. + (Locales): Add locale-info. + + * minibuf.texi (Basic Completion): Describe test-completion. + Collections can be lists of strings. + Clean up lazy-completion-table. + (Programmed Completion): Mention test-completion. + Clarify why lambda expressions are not accepted. + (Minibuffer Misc): Describe minibufferp. + +2003-07-14 Richard M. Stallman + + * buffers.texi (Killing Buffers): kill-buffer-hook is perm local. + + * windows.texi (Selecting Windows): New arg to select-window. + (Selecting Windows): Add with-selected-window. + (Size of Window): Add window-inside-edges, etc. + + * internals.texi (Garbage Collection): Add post-gc-hook. + + * processes.texi (Subprocess Creation): Add exec-suffixes. + + * keymaps.texi (Functions for Key Lookup): Add current-active-maps. + (Scanning Keymaps): Add map-keymaps. + (Defining Menus): Add keymap-prompt. + + * numbers.texi (Integer Basics): Add most-positive-fixnum, + most-negative-fixnum. + + * compile.texi (Byte Compilation): Explain no-byte-compile + (Compiler Errors): New node. + + * os.texi (User Identification): user-uid, user-real-uid + can return float. + + * modes.texi (Major Mode Conventions): Explain about run-mode-hooks + and about derived modes. + (Minor Modes): Add minor-mode-list. + (Defining Minor Modes): Keyword args for define-minor-mode. + (Search-based Fontification): Explain managing other properties. + (Other Font Lock Variables): Add font-lock-extra-managed-props. + (Faces for Font Lock): Add font-locl-preprocessor-face. + (Hooks): Add run-mode-hooks and delay-mode-hooks. + + * variables.texi (Creating Buffer-Local): Add buffer-local-value. + (Variable Aliases): Clarify defvaralias. + + * loading.texi (Library Search): Add load-suffixes. + + * minibuf.texi (Basic Completion): Add lazy-completion-table. + (Programmed Completion): Add dynamic-completion-table. + + * files.texi (Changing Files): copy-file allows dir as NEWNAME. + (Magic File Names): Specify precedence order of handlers. + + * commands.texi (Command Overview): Emacs server runs pre-command-hook + and post-command-hook. + (Waiting): New calling convention for sit-for. + + * text.texi (Special Properties): local-map and keymap properties + apply based on their stickiness. + +2003-07-07 Richard M. Stallman + + * modes.texi (Minor Mode Conventions): Specify only some kinds + of list values as args to minor modes. + + * files.texi (File Name Expansion): Warn about iterative use + of substitute-in-file-name. + + * advice.texi (Activation of Advice): Clean up previous change. + +2003-07-06 Markus Rost + + * advice.texi (Activation of Advice): Note that ad-start-advice is + turned on by default. + +2003-06-30 Richard M. Stallman + + * text.texi (Buffer Contents): Document current-word. + (Change Hooks): Not called for *Messages*. + + * functions.texi (Defining Functions): Explain about redefining + primitives. + (Function Safety): Renamed. Minor changes. + Comment out the detailed criteria for what is safe. + +2003-06-22 Andreas Schwab + + * objects.texi (Symbol Type): Fix description of examples. + +2003-06-16 Andreas Schwab + + * hash.texi (Creating Hash): Fix description of :weakness. + +2003-06-13 Kai Gro,A_(Bjohann + + * files.texi (Changing Files): copy-file copies file modes, too. + +2003-05-28 Richard M. Stallman + + * strings.texi (Creating Strings): Clarify split-string. + +2003-05-22 Stephen J. Turnbull + + * strings.texi (Creating Strings): Update split-string specification + and examples. + +2003-05-19 Richard M. Stallman + + * elisp.texi: Correct invariant section names. + +2003-04-20 Richard M. Stallman + + * os.texi (Timers): Explain about timers and quitting. + +2003-04-19 Richard M. Stallman + + * internals.texi (Writing Emacs Primitives): Strings are + no longer special for GCPROs. Mention GCPRO5, GCPRO6. + Explain GCPRO convention for varargs function args. + +2003-04-16 Richard M. Stallman + + * minibuf.texi (Minibuffer Misc): Document fn minibuffer-message. + +2003-04-08 Richard M. Stallman + + * files.texi (Kinds of Files): Correct return value of file-symlink-p. + +2003-02-13 Kim F. Storm + + * objects.texi (Character Type): New \s escape for space. + +2003-01-31 Joe Buehler + + * os.texi (System Environment): Added cygwin system-type. + +2003-01-25 Richard M. Stallman + + * keymaps.texi: Document that a symbol can act as a keymap. + +2003-01-13 Richard M. Stallman + + * text.texi (Changing Properties): Say string indices are origin-0. + + * positions.texi (Screen Lines) : + Correct order of elts in return value. + + * keymaps.texi (Changing Key Bindings) : Mention + how to define a default binding. + +2002-12-07 Markus Rost + + * loading.texi (Unloading): Fix recent change for load-history. + + * customize.texi (Simple Types): Clarify description of custom + type 'number. Describe new custom type 'float. + +2002-12-04 Markus Rost + + * variables.texi (File Local Variables): Fix typo. + +2002-10-23 Kai Gro,A_(Bjohann + + From Michael Albinus . + + * README: Target for Info file is `make info'. + + * files.texi (File Name Components): Fixed typos in + `file-name-sans-extension'. + (Magic File Names): Complete list of operations for magic file + name handlers. + +2002-09-16 Jonathan Yavner + + * variables.texi (File Local Variables): New function + risky-local-variable-p. + +2002-09-15 Jonathan Yavner + + * functions.texi (Function safety): New node about unsafep. + +2002-08-05 Per Abrahamsen + + * customize.texi (Splicing into Lists): Fixed example. + Reported by Fabrice Bauzac + +2002-06-17 Juanma Barranquero + + * frames.texi (Display Feature Testing): Fix typo. + +2002-06-12 Andreas Schwab + + * frames.texi (Initial Parameters, Resources): Fix references to + the Emacs manual. + +2002-05-13 Kim F. Storm + + * variables.texi (Intro to Buffer-Local): Updated warning and + example relating to changing buffer inside let. + +2002-03-10 Jan Dj,Ad(Brv + + * os.texi (Session Management): New node about X Session management. + +2002-01-18 Eli Zaretskii + + * elisp.texi (VERSION): Set to 2.9. Update the version of Emacs + to which the manual corresponds, and the copyright years. + + * Makefile.in (VERSION): Set to 2.9. + +2001-11-29 Eli Zaretskii + + * elisp.texi: Change the category in @dircategory to "Emacs", to + make it consistent with info/dir. + +2001-11-25 Miles Bader + + * text.texi (Fields): Describe new `limit' arg in + field-beginning/field-end. + +2001-11-17 Eli Zaretskii + + * permute-index: Don't depend on csh-specific features. Replace + the interpreter name with /bin/sh. + + * two-volume-cross-refs.txt: New file. + * two.el: New file. + * spellfile: New file. + +2001-11-16 Eli Zaretskii + + * permute-index: New file. + + * vol1.texi, vol2.texi: Renamed from elisp-vol1.texi and + elisp-vol2.texi, respectively, to avoid file-name clashes in DOS + 8+3 restricted namespace. + + * Makefile.in (infodir): Define relative to $(srcdir). + ($(infodir)/elisp): Don't chdir into $(srcdir), but add it to the + include directories list via -I switch to makeinfo. + (index.texi): Use cp if both hard and symbolic links fail. + +2001-11-10 Eli Zaretskii + + * Makefile.in (distclean): Add. + + The following changes make ELisp manual part of the Emacs + distribution: + + * Makefile.in: Add Copyright notice. + (prefix): Remove. + (infodir): Change value to "../info". + (VPATH): New variable. + (MAKE): Don't define. + (texmacrodir): Don't define. + (texinputdir): Append the existing value of TEXINPUTS. + ($(infodir)/elisp): Instead of just "elisp". Reformat the + command to be compatible with man/Makefile.in, and to put the + output into ../info. + (info): Add target. + (installall): Target removed. + +2001-10-31 Pavel Jan,Am(Bk + + * tips.texi (Coding Conventions): Fix typo. + +2001-10-23 Gerd Moellmann + + * Makefile.in (srcs): Add gpl.texi and doclicense.texi. + +2001-10-22 Eli Zaretskii + + * files.texi (File Name Components): Update the description of + file-name-sans-extension and file-name-extension, as they now + ignore leading dots. + +2001-10-20 Gerd Moellmann + + * (Version 21.1 released.) + +2001-10-19 Miles Bader + + * positions.texi (Text Lines): Describe behavior of + `beginning-of-line'/`end-of-line' in the presence of field properties. + +2001-10-17 Gerd Moellmann + + * Makefile.in (VERSION): Set to 2.8. + (manual): Use `manual-21'. + + * elisp.texi (VERSION): Add and use it where the version + number was used. Set it to 2.8. + + * intro.texi: Likewise. + +2001-10-13 Eli Zaretskii + + * files.texi (File Name Completion): Document the significance of + a trailing slash in elements of completion-ignored-extensions. + +2001-10-06 Miles Bader + + * variables.texi (Variable Aliases): It's `@defmac', not `@defmacro'. + +2001-10-04 Gerd Moellmann + + * variables.texi (Variable Aliases): New node. + +2001-10-04 Gerd Moellmann + + * Branch for 21.1. + +2001-10-02 Miles Bader + + * minibuf.texi (Minibuffer Misc): Add entries for + `minibuffer-contents', `minibuffer-contents-no-properties', and + `delete-minibuffer-contents'. + Correct description for `minibuffer-prompt-end'. + + * text.texi (Property Search): Correct descriptions of + `next-char-property-change' and `previous-char-property-change'. + Add entries for `next-single-char-property-change' and + `previous-single-char-property-change'. + Make operand names a bit more consistent. + +2001-09-30 Eli Zaretskii + + * frames.texi (Finding All Frames): Document that next-frame and + previous-frame are local to current terminal. + +2001-09-26 Eli Zaretskii + + * keymaps.texi (Creating Keymaps): Fix the description of the + result of make-keymap. + +2001-09-23 Eli Zaretskii + + * display.texi (Font Lookup, Attribute Functions) + (Image Descriptors): Add cross-references to the definition of + selected frame. + + * buffers.texi (The Buffer List): Add cross-references to the + definition of selected frame. + + * frames.texi (Input Focus): Clarify which frame is _the_ selected + frame at any given time. + (Multiple Displays, Size and Position): Add a cross-reference to + the definition of the selected frame. + +2001-09-08 Eli Zaretskii + + * strings.texi (String Conversion) : Document + that a float is returned for integers that are too large. + + * frames.texi (Mouse Position): Document mouse-position-function. + (Display Feature Testing): Document display-images-p. + (Window Frame Parameters): Document the cursor-type variable. + + * numbers.texi (Integer Basics): Document CL style read syntax for + integers in bases other than 10. + + * positions.texi (List Motion): Document + open-paren-in-column-0-is-defun-start. + + * lists.texi (Sets And Lists): Document member-ignore-case. + + * internals.texi (Garbage Collection): Document the used and free + strings report. + (Memory Usage): Document strings-consed. + + * os.texi (Time of Day): Document float-time. + (Recording Input): Document that clear-this-command-keys clears + the vector to be returned by recent-keys. + + * keymaps.texi (Scanning Keymaps) : The + argument keymap can be a list. + + * nonascii.texi (User-Chosen Coding Systems) + : Document the new argument + accept-default-p and the variable + select-safe-coding-system-accept-default-p. Tell what happens if + buffer-file-coding-system is undecided. + (Default Coding Systems): Document auto-coding-regexp-alist. + + * display.texi (The Echo Area) : Document + message-truncate-lines. + (Glyphs): Document that the glyph table is unused on windowed + displays. + + * help.texi (Describing Characters) : + Document the new argument no-angles. + (Accessing Documentation) : Document that + a non-string property is evaluated. + : Document that the function-documentation property + is looked for. + + * windows.texi (Selecting Windows): Document some-window. + + * text.texi (MD5 Checksum): New node, documents the md5 primitive. + + * hooks.texi (Standard Hooks): Add kbd-macro-termination-hook and + apropos-mode-hook. + + * commands.texi (Using Interactive): Document interactive-form. + (Keyboard Macros): Document kbd-macro-termination-hook. + (Command Loop Info): Document that clear-this-command-keys clears + the vector to be returned by recent-keys. + +2001-09-04 Werner LEMBERG + + * Makefile.in (srcdir, texinputdir): New variables. + (srcs, index.texi, install): Use $(srcdir). + (.PHONY): Remove elisp.dvi. + (elisp): Use -I switch for makeinfo. + (elisp.dvi): Use $(srcdir) and $(texinputdir). + (installall, dist): Use $(srcdir). + Fix path to texinfo.tex. + (maintainer-clean): Add elisp.dvi and elisp.oaux. + +2001-08-30 Gerd Moellmann + + * display.texi (Conditional Display): Adjust to API change. + + * configure: New file. + +2001-07-30 Gerd Moellmann + + * commands.texi (Repeat Events): Add description of + double-click-fuzz. + +2001-05-08 Stefan Monnier + + * syntax.texi (Syntax Class Table): Add the missing designator for + comment and string fences. + (Syntax Properties): Add a xref to syntax table internals. + (Syntax Table Internals): Document string-to-syntax. + +2001-05-07 Gerd Moellmann + + * Makefile.in (install): Use install-info command line options + like in Emacs' Makefile.in. + +2000-12-09 Miles Bader + + * windows.texi (Window Start): Update documentation for + `pos-visible-in-window-p'. + +2000-11-12 Stefan Monnier + + * lists.texi (Building Lists): Add footnote to explain how to add + to the end of a list. + +2000-10-25 Gerd Moellmann + + * files.texi (Visiting Functions): Typos. + +2000-10-25 Kenichi Handa + + * files.texi (Visiting Functions): Return value of + find-file-noselect may be a list of buffers if wildcards are used. + +2000-10-24 Miles Bader + + * display.texi (Defining Faces): Document `graphic' display type + in face specs. + +2000-10-18 Kai Grossjohann + + * hooks.texi (Standard Hooks): Replace obsolete + `after-make-frame-hook' with `after-make-frame-functions'. + + * frames.texi (Creating Frames): Ditto. + + * variables.texi (Future Local Variables): Ditto. + +2000-10-16 Gerd Moellmann + + * display.texi (Other Image Types): Add description of :foreground + and :background properties of mono PBM images. + +2000-08-17 Werner LEMBERG + + * .cvsignore: New file. + +2000-01-05 Gerd Moellmann + + * tindex.pl: New script. + +1999-12-03 Dave Love + + * Makefile.in (MAKEINFO): New parameter. + +1999-09-17 Richard Stallman + + * Makefile.in (srcs): Add hash.texi. + (VERSION): Update to 20.6. + +1999-09-13 Richard Stallman + + * Makefile.in (index.texi): If cannot make a symlink, make a hard link. + +1998-08-29 Karl Heuer + + * configure.in: New file. + * Makefile.in: Renamed from Makefile. + (prefix, infodir): Use value obtained from configure. + (emacslibdir): Obsolete variable deleted. + (dist): Distribute configure.in, configure, Makefile.in. + +1998-06-12 Richard Stallman + + * Makefile (INSTALL_INFO): New variable. + (install): Run install-info. + +1998-05-09 Richard Stallman + + * Makefile (elisp.dvi): Add missing backslash. + +1998-05-02 Richard Stallman + + * Makefile (elisp.dvi): Don't depend on texindex or on elisp.tps. + Run texindex without `./'. Always run texindex on elisp.tp. + (elisp.tps): Target deleted. + +1998-04-05 Richard Stallman + + * Makefile (srcs): Add nonascii.texi and customize.texi. + (dist): Start by deleting `temp'. + +1998-02-17 Richard Stallman + + * Makefile (makeinfo, texindex): Targets deleted. + (makeinfo.o, texindex.o): Targets deleted. + (clean, dist): Don't do anything with them or with getopt*. + +1998-01-30 Richard Stallman + + * Makefile (SHELL): Defined. + +1998-01-27 Richard Stallman + + * Makefile (elisp.tps): New target. + (elisp.dvi): Depend on elisp.tps. + +Wed Apr 3 15:24:25 1996 Karl Heuer + + * README: Update phone number. + + * Makefile (elisp): Make this be the default target. + Depend on makeinfo.c instead of makeinfo. + (install): Don't depend on elisp.dvi, since we don't install that. + Use mkinstalldirs. + (dist): Add mkinstalldirs. + +Mon Jun 19 14:35:26 1995 Richard Stallman + + * Makefile (VERSION): Update version number. + (maintainer-clean): Renamed from realclean. + +Wed Jun 7 17:04:59 1995 Karl Heuer + + * Makefile (realclean): New target. + (elisp): Remove any old elisp-* files first. + +Tue Nov 23 19:59:40 1993 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) + + * Makefile (VERSION): New variable. + (dist): Make packaged directory name `elisp-manual-19-$(VERSION)'. + Compressed file suffix should be `.gz', not `.z'. + +Mon Nov 22 15:06:19 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile (elisp): Depend on makeinfo. + +Fri Nov 19 02:29:33 1993 Noah Friedman (friedman@gnu.ai.mit.edu) + + * Makefile (srcs): Add anti.texi. + +Fri May 28 18:04:53 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile (infodir, prefix): New vars. + (install): Use infodir. + (emacsinfodir): Deleted. + +Thu May 27 02:11:25 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile (srcs): Add calendar.texi. + + * Makefile (dist): Copy texindex.c and makeinfo.c. + Limit elisp-* files to those with one or two digits. + +Sun May 16 17:58:21 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * Makefile (dist): Changed to use Gzip instead of compress. + +Fri Apr 23 01:05:23 1993 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) + + * loading.texi (Unloading): define-function changed back to + defalias. It may not stay this way, but at least it's + consistent with the known-good version of the code patch. + +Fri Mar 26 21:14:54 1993 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) + + * modes.texi (Hooks): Document new optional arg of add-hook. + +Wed Mar 17 08:48:24 1993 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) + + * variables.texi: Document nil initial value of buffer-local variables. + + * tips.texi: Add new section on standard library headers. + +Sat Feb 27 18:00:25 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * Makefile (srcs): Add frame.texi to the list of sources. + +Tue Feb 23 10:50:25 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * Makefile (dist): Don't bother excluding autosave files; they'll + never make it into the temp directory anyway, and the hash marks + in the name are problematic for make and the Bourne shell. + (srcs): + +Fri Feb 12 16:54:38 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * Makefile (dist): Don't include backup files or autosave files in + the distribution tar file. + +Tue Nov 26 21:10:34 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile (srcs): Added index.perm. + (elisp.dvi): Remove erroneous shell comment. + Expect output of permute-index in permuted.fns. + Save old elisp.aux in elisp.oaux. + (clean): Added index.texi to be deleted. + +Sat Aug 11 17:39:10 1990 Richard Stallman (rms@sugar-bombs.ai.mit.edu) + + * Makefile (elisp.dvi, index.texi): Use shell if instead of ifdef. + +Tue Jun 26 09:57:26 1990 David Lawrence (tale@geech) + + * files.texi: Noted that completion-ignored-extensions is ignored + when making *Completions*. + +Fri Jun 8 16:44:44 EDT 1990 Jay Fenlason (hack@ai.mit.edu) + + * Makefile make dist now depends on elisp.dvi, since it tries + to include it in the dist file. + +Wed Mar 28 22:57:35 1990 Jim Kingdon (kingdon@mole.ai.mit.edu) + + * functions.texinfo (Mapping Functions): Add missing quote + +Mon Jun 19 18:09:24 1989 Richard Stallman (rms@sugar-bombs.ai.mit.edu) + + * texinfo.tex (frenchspacing): Use decimal codes for char to be set. + (defunargs): Turn off \hyphenchar of \sl font temporarily. + +Wed May 10 18:01:17 1989 Robert J. Chassell (bob@rice-chex.ai.mit.edu) + + * @result{}, @expansion{}, @print{}, @quiv{}, @point{}, + and @error{} are the terms now being used. The files in the + directory have been changed to reflect this. + + * All instances of @indentedresultt{} have been changed to + ` @result{}', using 5 spaces at the begining of the line. + +Mon Apr 24 21:02:55 1989 Robert J. Chassell (bob@rice-chex.ai.mit.edu) + + * @result{}, @expandsto{}, @prints{}, @quiv{}, @error{}, and the + experimental @indentedresult{}, @indentedexpandsto{} are part of + the texinfo.tex in this directory. These TeX macros are not + stable yet. + +Mon Apr 17 18:56:50 1989 Robert J. Chassell (bob@rice-chex.ai.mit.edu) + + * texinfo.tex: Temporarily added + \let\result=\dblarrow + \def\error{{\it ERROR} \longdblarrow} + We need to do this better soon. + +Tue Apr 11 12:23:28 1989 Robert J. Chassell (bob@rice-chex.ai.mit.edu) + + * Applied Karl Berry's patches to *.texinfo files, but not to + texinfo.tex; those diffs are in `berry-texinfo-tex-diffs'. (Karl's + new title page format is also not applied, since it requires + texinfo.tex changes.) + + * Cleaned up `Makefile' and defined the `emacslibdir' directory + for the Project GNU development environment. + +;; Local Variables: +;; coding: iso-2022-7bit +;; add-log-time-zone-rule: t +;; End: + + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, + 2005, 2006, 2007 Free Software Foundation, Inc. + + This file is part of GNU Emacs. + + GNU Emacs is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + GNU Emacs is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU Emacs; see the file COPYING. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + +;;; arch-tag: 985ae0ce-df29-475b-b3f8-4bbcbf6f7fda diff --cc doc/lispref/customize.texi index b97ce20fc22,00000000000..d971d5b6db2 mode 100644,000000..100644 --- a/doc/lispref/customize.texi +++ b/doc/lispref/customize.texi @@@ -1,1266 -1,0 +1,1268 @@@ +@c -*-texinfo-*- +@c This is part of the GNU Emacs Lisp Reference Manual. +@c Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +@c 2005, 2006, 2007 Free Software Foundation, Inc. +@c See the file elisp.texi for copying conditions. +@setfilename ../../info/customize +@node Customization, Loading, Macros, Top +@chapter Writing Customization Definitions + +@cindex customization definitions + This chapter describes how to declare user options for customization, +and also customization groups for classifying them. We use the term +@dfn{customization item} to include both kinds of customization +definitions---as well as face definitions (@pxref{Defining Faces}). + +@menu +* Common Keywords:: Common keyword arguments for all kinds of + customization declarations. +* Group Definitions:: Writing customization group definitions. +* Variable Definitions:: Declaring user options. +* Customization Types:: Specifying the type of a user option. +@end menu + +@node Common Keywords +@section Common Item Keywords + +@cindex customization keywords + All kinds of customization declarations (for variables and groups, and +for faces) accept keyword arguments for specifying various information. +This section describes some keywords that apply to all kinds. + + All of these keywords, except @code{:tag}, can be used more than once +in a given item. Each use of the keyword has an independent effect. +The keyword @code{:tag} is an exception because any given item can only +display one name. + +@table @code +@item :tag @var{label} +@kindex tag@r{, customization keyword} +Use @var{label}, a string, instead of the item's name, to label the +item in customization menus and buffers. @strong{Don't use a tag +which is substantially different from the item's real name; that would +cause confusion.} One legitimate case for use of @code{:tag} is to +specify a dash where normally a hyphen would be converted to a space: + +@example +(defcustom cursor-in-non-selected-windows @dots{} + :tag "Cursor In Non-selected Windows" +@end example + +@kindex group@r{, customization keyword} +@item :group @var{group} +Put this customization item in group @var{group}. When you use +@code{:group} in a @code{defgroup}, it makes the new group a subgroup of +@var{group}. + +If you use this keyword more than once, you can put a single item into +more than one group. Displaying any of those groups will show this +item. Please don't overdo this, since the result would be annoying. + +@item :link @var{link-data} +@kindex link@r{, customization keyword} +Include an external link after the documentation string for this item. +This is a sentence containing an active field which references some +other documentation. + +There are several alternatives you can use for @var{link-data}: + +@table @code +@item (custom-manual @var{info-node}) +Link to an Info node; @var{info-node} is a string which specifies the +node name, as in @code{"(emacs)Top"}. The link appears as +@samp{[Manual]} in the customization buffer and enters the built-in +Info reader on @var{info-node}. + +@item (info-link @var{info-node}) +Like @code{custom-manual} except that the link appears +in the customization buffer with the Info node name. + +@item (url-link @var{url}) +Link to a web page; @var{url} is a string which specifies the +@acronym{URL}. The link appears in the customization buffer as +@var{url} and invokes the WWW browser specified by +@code{browse-url-browser-function}. + +@item (emacs-commentary-link @var{library}) +Link to the commentary section of a library; @var{library} is a string +which specifies the library name. + +@item (emacs-library-link @var{library}) +Link to an Emacs Lisp library file; @var{library} is a string which +specifies the library name. + +@item (file-link @var{file}) +Link to a file; @var{file} is a string which specifies the name of the +file to visit with @code{find-file} when the user invokes this link. + +@item (function-link @var{function}) +Link to the documentation of a function; @var{function} is a string +which specifies the name of the function to describe with +@code{describe-function} when the user invokes this link. + +@item (variable-link @var{variable}) +Link to the documentation of a variable; @var{variable} is a string +which specifies the name of the variable to describe with +@code{describe-variable} when the user invokes this link. + +@item (custom-group-link @var{group}) +Link to another customization group. Invoking it creates a new +customization buffer for @var{group}. +@end table + +You can specify the text to use in the customization buffer by adding +@code{:tag @var{name}} after the first element of the @var{link-data}; +for example, @code{(info-link :tag "foo" "(emacs)Top")} makes a link to +the Emacs manual which appears in the buffer as @samp{foo}. + +An item can have more than one external link; however, most items have +none at all. + +@item :load @var{file} +@kindex load@r{, customization keyword} +Load file @var{file} (a string) before displaying this customization +item. Loading is done with @code{load-library}, and only if the file is +not already loaded. + +@item :require @var{feature} +@kindex require@r{, customization keyword} +Execute @code{(require '@var{feature})} when your saved customizations +set the value of this item. @var{feature} should be a symbol. + +The most common reason to use @code{:require} is when a variable enables +a feature such as a minor mode, and just setting the variable won't have +any effect unless the code which implements the mode is loaded. + +@item :version @var{version} +@kindex version@r{, customization keyword} +This keyword specifies that the item was first introduced in Emacs +version @var{version}, or that its default value was changed in that +version. The value @var{version} must be a string. + +@item :package-version '(@var{package} . @var{version}) +@kindex package-version@r{, customization keyword} +This keyword specifies that the item was first introduced in +@var{package} version @var{version}, or that its meaning or default +value was changed in that version. The value of @var{package} is a +symbol and @var{version} is a string. + +This keyword takes priority over @code{:version}. + +@var{package} should be the official name of the package, such as MH-E +or Gnus. If the package @var{package} is released as part of Emacs, +@var{package} and @var{version} should appear in the value of +@code{customize-package-emacs-version-alist}. +@end table + +Packages distributed as part of Emacs that use the +@code{:package-version} keyword must also update the +@code{customize-package-emacs-version-alist} variable. + +@defvar customize-package-emacs-version-alist +This alist provides a mapping for the versions of Emacs that are +associated with versions of a package listed in the +@code{:package-version} keyword. Its elements look like this: + +@example +(@var{package} (@var{pversion} . @var{eversion})@dots{}) +@end example + +For each @var{package}, which is a symbol, there are one or more +elements that contain a package version @var{pversion} with an +associated Emacs version @var{eversion}. These versions are strings. +For example, the MH-E package updates this alist with the following: + +@smallexample +(add-to-list 'customize-package-emacs-version-alist + '(MH-E ("6.0" . "22.1") ("6.1" . "22.1") ("7.0" . "22.1") + ("7.1" . "22.1") ("7.2" . "22.1") ("7.3" . "22.1") + ("7.4" . "22.1") ("8.0" . "22.1"))) +@end smallexample + +The value of @var{package} needs to be unique and it needs to match +the @var{package} value appearing in the @code{:package-version} +keyword. Since the user might see the value in a error message, a good +choice is the official name of the package, such as MH-E or Gnus. +@end defvar + +@node Group Definitions +@section Defining Customization Groups +@cindex define customization group +@cindex customization groups, defining + + Each Emacs Lisp package should have one main customization group which +contains all the options, faces and other groups in the package. If the +package has a small number of options and faces, use just one group and +put everything in it. When there are more than twelve or so options and +faces, then you should structure them into subgroups, and put the +subgroups under the package's main customization group. It is OK to +put some of the options and faces in the package's main group alongside +the subgroups. + + The package's main or only group should be a member of one or more of +the standard customization groups. (To display the full list of them, +use @kbd{M-x customize}.) Choose one or more of them (but not too +many), and add your group to each of them using the @code{:group} +keyword. + + The way to declare new customization groups is with @code{defgroup}. + +@defmac defgroup group members doc [keyword value]@dots{} +Declare @var{group} as a customization group containing @var{members}. +Do not quote the symbol @var{group}. The argument @var{doc} specifies +the documentation string for the group. + +The argument @var{members} is a list specifying an initial set of +customization items to be members of the group. However, most often +@var{members} is @code{nil}, and you specify the group's members by +using the @code{:group} keyword when defining those members. + +If you want to specify group members through @var{members}, each element +should have the form @code{(@var{name} @var{widget})}. Here @var{name} +is a symbol, and @var{widget} is a widget type for editing that symbol. +Useful widgets are @code{custom-variable} for a variable, +@code{custom-face} for a face, and @code{custom-group} for a group. + +When you introduce a new group into Emacs, use the @code{:version} +keyword in the @code{defgroup}; then you need not use it for +the individual members of the group. + +In addition to the common keywords (@pxref{Common Keywords}), you can +also use this keyword in @code{defgroup}: + +@table @code +@item :prefix @var{prefix} +@kindex prefix@r{, @code{defgroup} keyword} +If the name of an item in the group starts with @var{prefix}, then the +tag for that item is constructed (by default) by omitting @var{prefix}. + +One group can have any number of prefixes. +@end table +@end defmac + + The prefix-discarding feature is currently turned off, which means +that @code{:prefix} currently has no effect. We did this because we +found that discarding the specified prefixes often led to confusing +names for options. This happened because the people who wrote the +@code{defgroup} definitions for various groups added @code{:prefix} +keywords whenever they make logical sense---that is, whenever the +variables in the library have a common prefix. + + In order to obtain good results with @code{:prefix}, it would be +necessary to check the specific effects of discarding a particular +prefix, given the specific items in a group and their names and +documentation. If the resulting text is not clear, then @code{:prefix} +should not be used in that case. + + It should be possible to recheck all the customization groups, delete +the @code{:prefix} specifications which give unclear results, and then +turn this feature back on, if someone would like to do the work. + +@node Variable Definitions +@section Defining Customization Variables +@cindex define customization options +@cindex customization variables, how to define + + Use @code{defcustom} to declare user-customizable variables. + +@defmac defcustom option standard doc [keyword value]@dots{} +This construct declares @var{option} as a customizable user option +variable. You should not quote @var{option}. The argument @var{doc} +specifies the documentation string for the variable. There is no need +to start it with a @samp{*}, because @code{defcustom} automatically +marks @var{option} as a @dfn{user option} (@pxref{Defining +Variables}). + +The argument @var{standard} is an expression that specifies the +standard value for @var{option}. Evaluating the @code{defcustom} form +evaluates @var{standard}, but does not necessarily install the +standard value. If @var{option} already has a default value, +@code{defcustom} does not change it. If the user has saved a +customization for @var{option}, @code{defcustom} installs the user's +customized value as @var{option}'s default value. If neither of those +cases applies, @code{defcustom} installs the result of evaluating +@var{standard} as the default value. + +The expression @var{standard} can be evaluated at various other times, +too---whenever the customization facility needs to know @var{option}'s +standard value. So be sure to use an expression which is harmless to +evaluate at any time. We recommend avoiding backquotes in +@var{standard}, because they are not expanded when editing the value, +so list values will appear to have the wrong structure. + +Every @code{defcustom} should specify @code{:group} at least once. + +If you specify the @code{:set} keyword, to make the variable take other +special actions when set through the customization buffer, the +variable's documentation string should tell the user specifically how +to do the same job in hand-written Lisp code. + +When you evaluate a @code{defcustom} form with @kbd{C-M-x} in Emacs Lisp +mode (@code{eval-defun}), a special feature of @code{eval-defun} +arranges to set the variable unconditionally, without testing whether +its value is void. (The same feature applies to @code{defvar}.) +@xref{Defining Variables}. +@end defmac + + @code{defcustom} accepts the following additional keywords: + +@table @code +@item :type @var{type} +Use @var{type} as the data type for this option. It specifies which +values are legitimate, and how to display the value. +@xref{Customization Types}, for more information. + +@item :options @var{value-list} +@kindex options@r{, @code{defcustom} keyword} +Specify the list of reasonable values for use in this +option. The user is not restricted to using only these values, but they +are offered as convenient alternatives. + +This is meaningful only for certain types, currently including +@code{hook}, @code{plist} and @code{alist}. See the definition of the +individual types for a description of how to use @code{:options}. + +@item :set @var{setfunction} +@kindex set@r{, @code{defcustom} keyword} +Specify @var{setfunction} as the way to change the value of this +option. The function @var{setfunction} should take two arguments, a +symbol (the option name) and the new value, and should do whatever is +necessary to update the value properly for this option (which may not +mean simply setting the option as a Lisp variable). The default for +@var{setfunction} is @code{set-default}. + +@item :get @var{getfunction} +@kindex get@r{, @code{defcustom} keyword} +Specify @var{getfunction} as the way to extract the value of this +option. The function @var{getfunction} should take one argument, a +symbol, and should return whatever customize should use as the +``current value'' for that symbol (which need not be the symbol's Lisp +value). The default is @code{default-value}. + +You have to really understand the workings of Custom to use +@code{:get} correctly. It is meant for values that are treated in +Custom as variables but are not actually stored in Lisp variables. It +is almost surely a mistake to specify @code{getfunction} for a value +that really is stored in a Lisp variable. + +@item :initialize @var{function} +@kindex initialize@r{, @code{defcustom} keyword} +@var{function} should be a function used to initialize the variable +when the @code{defcustom} is evaluated. It should take two arguments, +the option name (a symbol) and the value. Here are some predefined +functions meant for use in this way: + +@table @code +@item custom-initialize-set +Use the variable's @code{:set} function to initialize the variable, but +do not reinitialize it if it is already non-void. + +@item custom-initialize-default +Like @code{custom-initialize-set}, but use the function +@code{set-default} to set the variable, instead of the variable's +@code{:set} function. This is the usual choice for a variable whose +@code{:set} function enables or disables a minor mode; with this choice, +defining the variable will not call the minor mode function, but +customizing the variable will do so. + +@item custom-initialize-reset +Always use the @code{:set} function to initialize the variable. If +the variable is already non-void, reset it by calling the @code{:set} +function using the current value (returned by the @code{:get} method). +This is the default @code{:initialize} function. + +@item custom-initialize-changed +Use the @code{:set} function to initialize the variable, if it is +already set or has been customized; otherwise, just use +@code{set-default}. + +@item custom-initialize-safe-set +@itemx custom-initialize-safe-default +These functions behave like @code{custom-initialize-set} +(@code{custom-initialize-default}, respectively), but catch errors. +If an error occurs during initialization, they set the variable to +@code{nil} using @code{set-default}, and throw no error. + +These two functions are only meant for options defined in pre-loaded +files, where some variables or functions used to compute the option's +value may not yet be defined. The option normally gets updated in +@file{startup.el}, ignoring the previously computed value. Because of +this typical usage, the value which these two functions compute +normally only matters when, after startup, one unsets the option's +value and then reevaluates the defcustom. By that time, the necessary +variables and functions will be defined, so there will not be an error. +@end table + +@item :risky @var{value} +@kindex risky@r{, @code{defcustom} keyword} +Set this variable's @code{risky-local-variable} property to @var{value}. + +@item :safe @var{function} +@kindex safe@r{, @code{defcustom} keyword} +Set this variable's @code{safe-local-variable} property to @var{function}. + +@item :set-after @var{variables} +@kindex set-after@r{, @code{defcustom} keyword} +When setting variables according to saved customizations, make sure to +set the variables @var{variables} before this one; in other words, delay +setting this variable until after those others have been handled. Use +@code{:set-after} if setting this variable won't work properly unless +those other variables already have their intended values. +@end table + + The @code{:require} keyword is useful for an option that turns on the +operation of a certain feature. Assuming that the package is coded to +check the value of the option, you still need to arrange for the package +to be loaded. You can do that with @code{:require}. @xref{Common +Keywords}. Here is an example, from the library @file{saveplace.el}: + +@example +(defcustom save-place nil + "Non-nil means automatically save place in each file..." + :type 'boolean + :require 'saveplace + :group 'save-place) +@end example + +If a customization item has a type such as @code{hook} or +@code{alist}, which supports @code{:options}, you can add additional +values to the list from outside the @code{defcustom} declaration by +calling @code{custom-add-frequent-value}. For example, if you define a +function @code{my-lisp-mode-initialization} intended to be called from +@code{emacs-lisp-mode-hook}, you might want to add that to the list of +reasonable values for @code{emacs-lisp-mode-hook}, but not by editing +its definition. You can do it thus: + +@example +(custom-add-frequent-value 'emacs-lisp-mode-hook + 'my-lisp-mode-initialization) +@end example + +@defun custom-add-frequent-value symbol value +For the customization option @var{symbol}, add @var{value} to the +list of reasonable values. + +The precise effect of adding a value depends on the customization type +of @var{symbol}. +@end defun + +Internally, @code{defcustom} uses the symbol property +@code{standard-value} to record the expression for the standard value, +and @code{saved-value} to record the value saved by the user with the +customization buffer. Both properties are actually lists whose car is +an expression which evaluates to the value. + +@node Customization Types +@section Customization Types + +@cindex customization types + When you define a user option with @code{defcustom}, you must specify +its @dfn{customization type}. That is a Lisp object which describes (1) +which values are legitimate and (2) how to display the value in the +customization buffer for editing. + +@kindex type@r{, @code{defcustom} keyword} + You specify the customization type in @code{defcustom} with the +@code{:type} keyword. The argument of @code{:type} is evaluated, but +only once when the @code{defcustom} is executed, so it isn't useful +for the value to vary. Normally we use a quoted constant. For +example: + +@example +(defcustom diff-command "diff" + "The command to use to run diff." + :type '(string) + :group 'diff) +@end example + + In general, a customization type is a list whose first element is a +symbol, one of the customization type names defined in the following +sections. After this symbol come a number of arguments, depending on +the symbol. Between the type symbol and its arguments, you can +optionally write keyword-value pairs (@pxref{Type Keywords}). + + Some of the type symbols do not use any arguments; those are called +@dfn{simple types}. For a simple type, if you do not use any +keyword-value pairs, you can omit the parentheses around the type +symbol. For example just @code{string} as a customization type is +equivalent to @code{(string)}. + +@menu +* Simple Types:: +* Composite Types:: +* Splicing into Lists:: +* Type Keywords:: +* Defining New Types:: +@end menu + +All customization types are implemented as widgets; see @ref{Top, , +Introduction, widget, The Emacs Widget Library}, for details. + +@node Simple Types +@subsection Simple Types + + This section describes all the simple customization types. + +@table @code +@item sexp +The value may be any Lisp object that can be printed and read back. You +can use @code{sexp} as a fall-back for any option, if you don't want to +take the time to work out a more specific type to use. + +@item integer +The value must be an integer, and is represented textually +in the customization buffer. + +@item number +The value must be a number (floating point or integer), and is +represented textually in the customization buffer. + +@item float +The value must be a floating point number, and is represented +textually in the customization buffer. + +@item string +The value must be a string, and the customization buffer shows just the +contents, with no delimiting @samp{"} characters and no quoting with +@samp{\}. + +@item regexp +Like @code{string} except that the string must be a valid regular +expression. + +@item character +The value must be a character code. A character code is actually an +integer, but this type shows the value by inserting the character in the +buffer, rather than by showing the number. + +@item file +The value must be a file name, and you can do completion with +@kbd{M-@key{TAB}}. + +@item (file :must-match t) +The value must be a file name for an existing file, and you can do +completion with @kbd{M-@key{TAB}}. + +@item directory +The value must be a directory name, and you can do completion with +@kbd{M-@key{TAB}}. + +@item hook +The value must be a list of functions (or a single function, but that is +obsolete usage). This customization type is used for hook variables. +You can use the @code{:options} keyword in a hook variable's +@code{defcustom} to specify a list of functions recommended for use in +the hook; see @ref{Variable Definitions}. + +@item alist +The value must be a list of cons-cells, the @sc{car} of each cell +representing a key, and the @sc{cdr} of the same cell representing an +associated value. The user can add and delete key/value pairs, and +edit both the key and the value of each pair. + +You can specify the key and value types like this: + +@smallexample +(alist :key-type @var{key-type} :value-type @var{value-type}) +@end smallexample + +@noindent +where @var{key-type} and @var{value-type} are customization type +specifications. The default key type is @code{sexp}, and the default +value type is @code{sexp}. + +The user can add any key matching the specified key type, but you can +give some keys a preferential treatment by specifying them with the +@code{:options} (see @ref{Variable Definitions}). The specified keys +will always be shown in the customize buffer (together with a suitable +value), with a checkbox to include or exclude or disable the key/value +pair from the alist. The user will not be able to edit the keys +specified by the @code{:options} keyword argument. + +The argument to the @code{:options} keywords should be a list of +specifications for reasonable keys in the alist. Ordinarily, they are +simply atoms, which stand for themselves as. For example: + +@smallexample +:options '("foo" "bar" "baz") +@end smallexample + +@noindent +specifies that there are three ``known'' keys, namely @code{"foo"}, +@code{"bar"} and @code{"baz"}, which will always be shown first. + +You may want to restrict the value type for specific keys, for +example, the value associated with the @code{"bar"} key can only be an +integer. You can specify this by using a list instead of an atom in +the list. The first element will specify the key, like before, while +the second element will specify the value type. For example: + +@smallexample +:options '("foo" ("bar" integer) "baz") +@end smallexample + +Finally, you may want to change how the key is presented. By default, +the key is simply shown as a @code{const}, since the user cannot change +the special keys specified with the @code{:options} keyword. However, +you may want to use a more specialized type for presenting the key, like +@code{function-item} if you know it is a symbol with a function binding. +This is done by using a customization type specification instead of a +symbol for the key. + +@smallexample +:options '("foo" ((function-item some-function) integer) + "baz") +@end smallexample + +Many alists use lists with two elements, instead of cons cells. For +example, + +@smallexample +(defcustom list-alist '(("foo" 1) ("bar" 2) ("baz" 3)) + "Each element is a list of the form (KEY VALUE).") +@end smallexample + +@noindent +instead of + +@smallexample +(defcustom cons-alist '(("foo" . 1) ("bar" . 2) ("baz" . 3)) + "Each element is a cons-cell (KEY . VALUE).") +@end smallexample + +Because of the way lists are implemented on top of cons cells, you can +treat @code{list-alist} in the example above as a cons cell alist, where +the value type is a list with a single element containing the real +value. + +@smallexample +(defcustom list-alist '(("foo" 1) ("bar" 2) ("baz" 3)) + "Each element is a list of the form (KEY VALUE)." + :type '(alist :value-type (group integer))) +@end smallexample + +The @code{group} widget is used here instead of @code{list} only because +the formatting is better suited for the purpose. + +Similarly, you can have alists with more values associated with each +key, using variations of this trick: + +@smallexample +(defcustom person-data '(("brian" 50 t) + ("dorith" 55 nil) + ("ken" 52 t)) + "Alist of basic info about people. +Each element has the form (NAME AGE MALE-FLAG)." + :type '(alist :value-type (group integer boolean))) + +(defcustom pets '(("brian") + ("dorith" "dog" "guppy") + ("ken" "cat")) + "Alist of people's pets. +In an element (KEY . VALUE), KEY is the person's name, +and the VALUE is a list of that person's pets." + :type '(alist :value-type (repeat string))) +@end smallexample + +@item plist +The @code{plist} custom type is similar to the @code{alist} (see above), +except that the information is stored as a property list, i.e. a list of +this form: + +@smallexample +(@var{key} @var{value} @var{key} @var{value} @var{key} @var{value} @dots{}) +@end smallexample + +The default @code{:key-type} for @code{plist} is @code{symbol}, +rather than @code{sexp}. + +@item symbol +The value must be a symbol. It appears in the customization buffer as +the name of the symbol. + +@item function +The value must be either a lambda expression or a function name. When +it is a function name, you can do completion with @kbd{M-@key{TAB}}. + +@item variable +The value must be a variable name, and you can do completion with +@kbd{M-@key{TAB}}. + +@item face +The value must be a symbol which is a face name, and you can do +completion with @kbd{M-@key{TAB}}. + +@item boolean +The value is boolean---either @code{nil} or @code{t}. Note that by +using @code{choice} and @code{const} together (see the next section), +you can specify that the value must be @code{nil} or @code{t}, but also +specify the text to describe each value in a way that fits the specific +meaning of the alternative. + +@item coding-system +The value must be a coding-system name, and you can do completion with +@kbd{M-@key{TAB}}. + +@item color +The value must be a valid color name, and you can do completion with +@kbd{M-@key{TAB}}. A sample is provided. +@end table + +@node Composite Types +@subsection Composite Types +@cindex Composite Types (customization) + + When none of the simple types is appropriate, you can use composite +types, which build new types from other types or from specified data. +The specified types or data are called the @dfn{arguments} of the +composite type. The composite type normally looks like this: + +@example +(@var{constructor} @var{arguments}@dots{}) +@end example + +@noindent +but you can also add keyword-value pairs before the arguments, like +this: + +@example +(@var{constructor} @r{@{}@var{keyword} @var{value}@r{@}}@dots{} @var{arguments}@dots{}) +@end example + + Here is a table of constructors and how to use them to write +composite types: + +@table @code +@item (cons @var{car-type} @var{cdr-type}) +The value must be a cons cell, its @sc{car} must fit @var{car-type}, and +its @sc{cdr} must fit @var{cdr-type}. For example, @code{(cons string +symbol)} is a customization type which matches values such as +@code{("foo" . foo)}. + +In the customization buffer, the @sc{car} and the @sc{cdr} are +displayed and edited separately, each according to the type +that you specify for it. + +@item (list @var{element-types}@dots{}) +The value must be a list with exactly as many elements as the +@var{element-types} given; and each element must fit the +corresponding @var{element-type}. + +For example, @code{(list integer string function)} describes a list of +three elements; the first element must be an integer, the second a +string, and the third a function. + +In the customization buffer, each element is displayed and edited +separately, according to the type specified for it. + +@item (group @var{element-types}@dots{}) +This works like @code{list} except for the formatting +of text in the Custom buffer. @code{list} labels each +element value with its tag; @code{group} does not. + +@item (vector @var{element-types}@dots{}) +Like @code{list} except that the value must be a vector instead of a +list. The elements work the same as in @code{list}. + +@item (choice @var{alternative-types}@dots{}) +The value must fit at least one of @var{alternative-types}. +For example, @code{(choice integer string)} allows either an +integer or a string. + +In the customization buffer, the user selects an alternative +using a menu, and can then edit the value in the usual way for that +alternative. + +Normally the strings in this menu are determined automatically from the +choices; however, you can specify different strings for the menu by +including the @code{:tag} keyword in the alternatives. For example, if +an integer stands for a number of spaces, while a string is text to use +verbatim, you might write the customization type this way, + +@example +(choice (integer :tag "Number of spaces") + (string :tag "Literal text")) +@end example + +@noindent +so that the menu offers @samp{Number of spaces} and @samp{Literal text}. + +In any alternative for which @code{nil} is not a valid value, other than +a @code{const}, you should specify a valid default for that alternative +using the @code{:value} keyword. @xref{Type Keywords}. + +If some values are covered by more than one of the alternatives, +customize will choose the first alternative that the value fits. This +means you should always list the most specific types first, and the +most general last. Here's an example of proper usage: + +@example +(choice (const :tag "Off" nil) + symbol (sexp :tag "Other")) +@end example + +@noindent +This way, the special value @code{nil} is not treated like other +symbols, and symbols are not treated like other Lisp expressions. + +@item (radio @var{element-types}@dots{}) +This is similar to @code{choice}, except that the choices are displayed +using `radio buttons' rather than a menu. This has the advantage of +displaying documentation for the choices when applicable and so is often +a good choice for a choice between constant functions +(@code{function-item} customization types). + +@item (const @var{value}) +The value must be @var{value}---nothing else is allowed. + +The main use of @code{const} is inside of @code{choice}. For example, +@code{(choice integer (const nil))} allows either an integer or +@code{nil}. + +@code{:tag} is often used with @code{const}, inside of @code{choice}. +For example, + +@example +(choice (const :tag "Yes" t) + (const :tag "No" nil) + (const :tag "Ask" foo)) +@end example + +@noindent +describes a variable for which @code{t} means yes, @code{nil} means no, +and @code{foo} means ``ask.'' + +@item (other @var{value}) +This alternative can match any Lisp value, but if the user chooses this +alternative, that selects the value @var{value}. + +The main use of @code{other} is as the last element of @code{choice}. +For example, + +@example +(choice (const :tag "Yes" t) + (const :tag "No" nil) + (other :tag "Ask" foo)) +@end example + +@noindent +describes a variable for which @code{t} means yes, @code{nil} means no, +and anything else means ``ask.'' If the user chooses @samp{Ask} from +the menu of alternatives, that specifies the value @code{foo}; but any +other value (not @code{t}, @code{nil} or @code{foo}) displays as +@samp{Ask}, just like @code{foo}. + +@item (function-item @var{function}) +Like @code{const}, but used for values which are functions. This +displays the documentation string as well as the function name. +The documentation string is either the one you specify with +@code{:doc}, or @var{function}'s own documentation string. + +@item (variable-item @var{variable}) +Like @code{const}, but used for values which are variable names. This +displays the documentation string as well as the variable name. The +documentation string is either the one you specify with @code{:doc}, or +@var{variable}'s own documentation string. + +@item (set @var{types}@dots{}) +The value must be a list, and each element of the list must match one of +the @var{types} specified. + +This appears in the customization buffer as a checklist, so that each of +@var{types} may have either one corresponding element or none. It is +not possible to specify two different elements that match the same one +of @var{types}. For example, @code{(set integer symbol)} allows one +integer and/or one symbol in the list; it does not allow multiple +integers or multiple symbols. As a result, it is rare to use +nonspecific types such as @code{integer} in a @code{set}. + +Most often, the @var{types} in a @code{set} are @code{const} types, as +shown here: + +@example +(set (const :bold) (const :italic)) +@end example + +Sometimes they describe possible elements in an alist: + +@example +(set (cons :tag "Height" (const height) integer) + (cons :tag "Width" (const width) integer)) +@end example + +@noindent +That lets the user specify a height value optionally +and a width value optionally. + +@item (repeat @var{element-type}) +The value must be a list and each element of the list must fit the type +@var{element-type}. This appears in the customization buffer as a +list of elements, with @samp{[INS]} and @samp{[DEL]} buttons for adding +more elements or removing elements. + +@item (restricted-sexp :match-alternatives @var{criteria}) +This is the most general composite type construct. The value may be +any Lisp object that satisfies one of @var{criteria}. @var{criteria} +should be a list, and each element should be one of these +possibilities: + +@itemize @bullet +@item +A predicate---that is, a function of one argument that has no side +effects, and returns either @code{nil} or non-@code{nil} according to +the argument. Using a predicate in the list says that objects for which +the predicate returns non-@code{nil} are acceptable. + +@item +A quoted constant---that is, @code{'@var{object}}. This sort of element +in the list says that @var{object} itself is an acceptable value. +@end itemize + +For example, + +@example +(restricted-sexp :match-alternatives + (integerp 't 'nil)) +@end example + +@noindent +allows integers, @code{t} and @code{nil} as legitimate values. + +The customization buffer shows all legitimate values using their read +syntax, and the user edits them textually. +@end table + + Here is a table of the keywords you can use in keyword-value pairs +in a composite type: + +@table @code +@item :tag @var{tag} +Use @var{tag} as the name of this alternative, for user communication +purposes. This is useful for a type that appears inside of a +@code{choice}. + +@item :match-alternatives @var{criteria} +@kindex match-alternatives@r{, customization keyword} +Use @var{criteria} to match possible values. This is used only in +@code{restricted-sexp}. + +@item :args @var{argument-list} +@kindex args@r{, customization keyword} +Use the elements of @var{argument-list} as the arguments of the type +construct. For instance, @code{(const :args (foo))} is equivalent to +@code{(const foo)}. You rarely need to write @code{:args} explicitly, +because normally the arguments are recognized automatically as +whatever follows the last keyword-value pair. +@end table + +@node Splicing into Lists +@subsection Splicing into Lists + + The @code{:inline} feature lets you splice a variable number of +elements into the middle of a list or vector. You use it in a +@code{set}, @code{choice} or @code{repeat} type which appears among the +element-types of a @code{list} or @code{vector}. + + Normally, each of the element-types in a @code{list} or @code{vector} +describes one and only one element of the list or vector. Thus, if an +element-type is a @code{repeat}, that specifies a list of unspecified +length which appears as one element. + + But when the element-type uses @code{:inline}, the value it matches is +merged directly into the containing sequence. For example, if it +matches a list with three elements, those become three elements of the +overall sequence. This is analogous to using @samp{,@@} in the backquote +construct. + + For example, to specify a list whose first element must be @code{baz} +and whose remaining arguments should be zero or more of @code{foo} and +@code{bar}, use this customization type: + +@example +(list (const baz) (set :inline t (const foo) (const bar))) +@end example + +@noindent +This matches values such as @code{(baz)}, @code{(baz foo)}, @code{(baz bar)} +and @code{(baz foo bar)}. + + When the element-type is a @code{choice}, you use @code{:inline} not +in the @code{choice} itself, but in (some of) the alternatives of the +@code{choice}. For example, to match a list which must start with a +file name, followed either by the symbol @code{t} or two strings, use +this customization type: + +@example +(list file + (choice (const t) + (list :inline t string string))) +@end example + +@noindent +If the user chooses the first alternative in the choice, then the +overall list has two elements and the second element is @code{t}. If +the user chooses the second alternative, then the overall list has three +elements and the second and third must be strings. + +@node Type Keywords +@subsection Type Keywords + +You can specify keyword-argument pairs in a customization type after the +type name symbol. Here are the keywords you can use, and their +meanings: + +@table @code +@item :value @var{default} +This is used for a type that appears as an alternative inside of +@code{choice}; it specifies the default value to use, at first, if and +when the user selects this alternative with the menu in the +customization buffer. + +Of course, if the actual value of the option fits this alternative, it +will appear showing the actual value, not @var{default}. + +If @code{nil} is not a valid value for the alternative, then it is +essential to specify a valid default with @code{:value}. + +@item :format @var{format-string} +@kindex format@r{, customization keyword} +This string will be inserted in the buffer to represent the value +corresponding to the type. The following @samp{%} escapes are available +for use in @var{format-string}: + +@table @samp +@item %[@var{button}%] +Display the text @var{button} marked as a button. The @code{:action} +attribute specifies what the button will do if the user invokes it; +its value is a function which takes two arguments---the widget which +the button appears in, and the event. + +There is no way to specify two different buttons with different +actions. + +@item %@{@var{sample}%@} +Show @var{sample} in a special face specified by @code{:sample-face}. + +@item %v +Substitute the item's value. How the value is represented depends on +the kind of item, and (for variables) on the customization type. + +@item %d +Substitute the item's documentation string. + +@item %h +Like @samp{%d}, but if the documentation string is more than one line, +add an active field to control whether to show all of it or just the +first line. + +@item %t +Substitute the tag here. You specify the tag with the @code{:tag} +keyword. + +@item %% +Display a literal @samp{%}. +@end table + +@item :action @var{action} +@kindex action@r{, customization keyword} +Perform @var{action} if the user clicks on a button. + +@item :button-face @var{face} +@kindex button-face@r{, customization keyword} +Use the face @var{face} (a face name or a list of face names) for button +text displayed with @samp{%[@dots{}%]}. + +@item :button-prefix @var{prefix} +@itemx :button-suffix @var{suffix} +@kindex button-prefix@r{, customization keyword} +@kindex button-suffix@r{, customization keyword} +These specify the text to display before and after a button. +Each can be: + +@table @asis +@item @code{nil} +No text is inserted. + +@item a string +The string is inserted literally. + +@item a symbol +The symbol's value is used. +@end table + +@item :tag @var{tag} +Use @var{tag} (a string) as the tag for the value (or part of the value) +that corresponds to this type. + +@item :doc @var{doc} +@kindex doc@r{, customization keyword} +Use @var{doc} as the documentation string for this value (or part of the +value) that corresponds to this type. In order for this to work, you +must specify a value for @code{:format}, and use @samp{%d} or @samp{%h} +in that value. + +The usual reason to specify a documentation string for a type is to +provide more information about the meanings of alternatives inside a +@code{:choice} type or the parts of some other composite type. + +@item :help-echo @var{motion-doc} +@kindex help-echo@r{, customization keyword} +When you move to this item with @code{widget-forward} or +@code{widget-backward}, it will display the string @var{motion-doc} in +the echo area. In addition, @var{motion-doc} is used as the mouse +@code{help-echo} string and may actually be a function or form evaluated +to yield a help string. If it is a function, it is called with one +argument, the widget. + +@item :match @var{function} +@kindex match@r{, customization keyword} +Specify how to decide whether a value matches the type. The +corresponding value, @var{function}, should be a function that accepts +two arguments, a widget and a value; it should return non-@code{nil} if +the value is acceptable. + ++@item :validate @var{function} ++Specify a validation function for input. @var{function} takes a ++widget as an argument, and should return @code{nil} if the widget's ++current value is valid for the widget. Otherwise, it should return ++the widget containing the invalid data, and set that widget's ++@code{:error} property to a string explaining the error. ++ ++In many cases you can use the function @code{widget-children-validate} ++for this job; it tests that all children of @var{widget} are valid. ++ +@ignore +@item :indent @var{columns} +Indent this item by @var{columns} columns. The indentation is used for +@samp{%n}, and automatically for group names, for checklists and radio +buttons, and for editable lists. It affects the whole of the +item except for the first line. + - @item :offset @var{columns} - An integer indicating how many extra spaces to indent the subitems of - this item. By default, subitems are indented the same as their parent. ++@item :offset @var{extra} ++Indent the subitems of this item @var{extra} columns more than this ++item itself. By default, subitems are indented the same as their ++parent. + - @item :extra-offset - An integer indicating how many extra spaces to add to this item's - indentation, compared to its parent. ++@item :extra-offset @var{n} ++Add @var{n} extra spaces to this item's indentation, compared to its ++parent's indentation. + - @item :notify - A function called each time the item or a subitem is changed. The - function is called with two or three arguments. The first argument is - the item itself, the second argument is the item that was changed, and - the third argument is the event leading to the change, if any. ++@item :notify @var{function} ++Call @var{function} each time the item or a subitem is changed. The ++function gets two or three arguments. The first argument is the item ++itself, the second argument is the item that was changed, and the ++third argument is the event leading to the change, if any. + - @item :menu-tag - A tag used in the menu when the widget is used as an option in a - @code{menu-choice} widget. ++@item :menu-tag @var{tag-string} ++Use @var{tag-string} in the menu when the widget is used as an option ++in a @code{menu-choice} widget. + +@item :menu-tag-get +A function used for finding the tag when the widget is used as an option +in a @code{menu-choice} widget. By default, the tag used will be either the +@code{:menu-tag} or @code{:tag} property if present, or the @code{princ} +representation of the @code{:value} property if not. + - @item :validate - A function which takes a widget as an argument, and return @code{nil} - if the widget's current value is valid for the widget. Otherwise, it - should return the widget containing the invalid data, and set that - widget's @code{:error} property to a string explaining the error. - - You can use the function @code{widget-children-validate} for this job; - it tests that all children of @var{widget} are valid. - +@item :tab-order +Specify the order in which widgets are traversed with +@code{widget-forward} or @code{widget-backward}. This is only partially +implemented. + +@enumerate a +@item +Widgets with tabbing order @code{-1} are ignored. + +@item +(Unimplemented) When on a widget with tabbing order @var{n}, go to the +next widget in the buffer with tabbing order @var{n+1} or @code{nil}, +whichever comes first. + +@item +When on a widget with no tabbing order specified, go to the next widget +in the buffer with a positive tabbing order, or @code{nil} +@end enumerate + +@item :parent +The parent of a nested widget (e.g., a @code{menu-choice} item or an +element of a @code{editable-list} widget). + +@item :sibling-args +This keyword is only used for members of a @code{radio-button-choice} or +@code{checklist}. The value should be a list of extra keyword +arguments, which will be used when creating the @code{radio-button} or +@code{checkbox} associated with this item. +@end ignore +@end table + +@node Defining New Types +@subsection Defining New Types + +In the previous sections we have described how to construct elaborate +type specifications for @code{defcustom}. In some cases you may want +to give such a type specification a name. The obvious case is when +you are using the same type for many user options: rather than repeat +the specification for each option, you can give the type specification +a name, and use that name each @code{defcustom}. The other case is +when a user option's value is a recursive data structure. To make it +possible for a datatype to refer to itself, it needs to have a name. + +Since custom types are implemented as widgets, the way to define a new +customize type is to define a new widget. We are not going to describe +the widget interface here in details, see @ref{Top, , Introduction, +widget, The Emacs Widget Library}, for that. Instead we are going to +demonstrate the minimal functionality needed for defining new customize +types by a simple example. + +@example +(define-widget 'binary-tree-of-string 'lazy + "A binary tree made of cons-cells and strings." + :offset 4 + :tag "Node" + :type '(choice (string :tag "Leaf" :value "") + (cons :tag "Interior" + :value ("" . "") + binary-tree-of-string + binary-tree-of-string))) + +(defcustom foo-bar "" + "Sample variable holding a binary tree of strings." + :type 'binary-tree-of-string) +@end example + +The function to define a new widget is called @code{define-widget}. The +first argument is the symbol we want to make a new widget type. The +second argument is a symbol representing an existing widget, the new +widget is going to be defined in terms of difference from the existing +widget. For the purpose of defining new customization types, the +@code{lazy} widget is perfect, because it accepts a @code{:type} keyword +argument with the same syntax as the keyword argument to +@code{defcustom} with the same name. The third argument is a +documentation string for the new widget. You will be able to see that +string with the @kbd{M-x widget-browse @key{RET} binary-tree-of-string +@key{RET}} command. + +After these mandatory arguments follow the keyword arguments. The most +important is @code{:type}, which describes the data type we want to match +with this widget. Here a @code{binary-tree-of-string} is described as +being either a string, or a cons-cell whose car and cdr are themselves +both @code{binary-tree-of-string}. Note the reference to the widget +type we are currently in the process of defining. The @code{:tag} +attribute is a string to name the widget in the user interface, and the +@code{:offset} argument is there to ensure that child nodes are +indented four spaces relative to the parent node, making the tree +structure apparent in the customization buffer. + +The @code{defcustom} shows how the new widget can be used as an ordinary +customization type. + +The reason for the name @code{lazy} is that the other composite +widgets convert their inferior widgets to internal form when the +widget is instantiated in a buffer. This conversion is recursive, so +the inferior widgets will convert @emph{their} inferior widgets. If +the data structure is itself recursive, this conversion is an infinite +recursion. The @code{lazy} widget prevents the recursion: it convert +its @code{:type} argument only when needed. + +@ignore + arch-tag: d1b8fad3-f48c-4ce4-a402-f73b5ef19bd2 +@end ignore diff --cc doc/lispref/frames.texi index cd29d44ab76,00000000000..ab9a6e8291c mode 100644,000000..100644 --- a/doc/lispref/frames.texi +++ b/doc/lispref/frames.texi @@@ -1,2217 -1,0 +1,2223 @@@ +@c -*-texinfo-*- +@c This is part of the GNU Emacs Lisp Reference Manual. +@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001, +@c 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +@c See the file elisp.texi for copying conditions. +@setfilename ../../info/frames +@node Frames, Positions, Windows, Top +@chapter Frames +@cindex frame + + In Emacs editing, A @dfn{frame} is a screen object that contains one +or more Emacs windows. It's the kind of object that is called a +``window'' in the terminology of graphical environments; but we can't +call it a ``window'' here, because Emacs uses that word in a different +way. + + A frame initially contains a single main window and/or a minibuffer +window; you can subdivide the main window vertically or horizontally +into smaller windows. In Emacs Lisp, a @dfn{frame object} is a Lisp +object that represents a frame on the screen. + +@cindex terminal frame + When Emacs runs on a text-only terminal, it starts with one +@dfn{terminal frame}. If you create additional ones, Emacs displays +one and only one at any given time---on the terminal screen, of course. + +@cindex window frame + When Emacs communicates directly with a supported window system, such +as X, it does not have a terminal frame; instead, it starts with +a single @dfn{window frame}, but you can create more, and Emacs can +display several such frames at once as is usual for window systems. + +@defun framep object +This predicate returns a non-@code{nil} value if @var{object} is a +frame, and @code{nil} otherwise. For a frame, the value indicates which +kind of display the frame uses: + +@table @code +@item x +The frame is displayed in an X window. +@item t +A terminal frame on a character display. +@item mac +The frame is displayed on a Macintosh. +@item w32 +The frame is displayed on MS-Windows 9X/NT. +@item pc +The frame is displayed on an MS-DOS terminal. +@end table +@end defun + +@menu +* Creating Frames:: Creating additional frames. +* Multiple Displays:: Creating frames on other displays. +* Frame Parameters:: Controlling frame size, position, font, etc. +* Frame Titles:: Automatic updating of frame titles. +* Deleting Frames:: Frames last until explicitly deleted. +* Finding All Frames:: How to examine all existing frames. +* Frames and Windows:: A frame contains windows; + display of text always works through windows. +* Minibuffers and Frames:: How a frame finds the minibuffer to use. +* Input Focus:: Specifying the selected frame. +* Visibility of Frames:: Frames may be visible or invisible, or icons. +* Raising and Lowering:: Raising a frame makes it hide other windows; + lowering it makes the others hide it. +* Frame Configurations:: Saving the state of all frames. +* Mouse Tracking:: Getting events that say when the mouse moves. +* Mouse Position:: Asking where the mouse is, or moving it. +* Pop-Up Menus:: Displaying a menu for the user to select from. +* Dialog Boxes:: Displaying a box to ask yes or no. +* Pointer Shape:: Specifying the shape of the mouse pointer. +* Window System Selections:: Transferring text to and from other X clients. +* Drag and Drop:: Internals of Drag-and-Drop implementation. +* Color Names:: Getting the definitions of color names. +* Text Terminal Colors:: Defining colors for text-only terminals. +* Resources:: Getting resource values from the server. +* Display Feature Testing:: Determining the features of a terminal. +@end menu + + @xref{Display}, for information about the related topic of +controlling Emacs redisplay. + +@node Creating Frames +@section Creating Frames + +To create a new frame, call the function @code{make-frame}. + +@defun make-frame &optional alist +This function creates and returns a new frame, displaying the current +buffer. If you are using a supported window system, it makes a window +frame; otherwise, it makes a terminal frame. + +The argument is an alist specifying frame parameters. Any parameters +not mentioned in @var{alist} default according to the value of the +variable @code{default-frame-alist}; parameters not specified even there +default from the standard X resources or whatever is used instead on +your system. + +The set of possible parameters depends in principle on what kind of +window system Emacs uses to display its frames. @xref{Window Frame +Parameters}, for documentation of individual parameters you can specify. + +This function itself does not make the new frame the selected frame. +@xref{Input Focus}. The previously selected frame remains selected. +However, the window system may select the new frame for its own reasons, +for instance if the frame appears under the mouse pointer and your +setup is for focus to follow the pointer. +@end defun + +@defvar before-make-frame-hook +A normal hook run by @code{make-frame} before it actually creates the +frame. +@end defvar + +@defvar after-make-frame-functions +An abnormal hook run by @code{make-frame} after it creates the frame. +Each function in @code{after-make-frame-functions} receives one argument, the +frame just created. +@end defvar + +@node Multiple Displays +@section Multiple Displays +@cindex multiple X displays +@cindex displays, multiple + + A single Emacs can talk to more than one X display. +Initially, Emacs uses just one display---the one chosen with the +@code{DISPLAY} environment variable or with the @samp{--display} option +(@pxref{Initial Options,,, emacs, The GNU Emacs Manual}). To connect to +another display, use the command @code{make-frame-on-display} or specify +the @code{display} frame parameter when you create the frame. + + Emacs treats each X server as a separate terminal, giving each one its +own selected frame and its own minibuffer windows. However, only one of +those frames is ``@emph{the} selected frame'' at any given moment, see +@ref{Input Focus}. + + A few Lisp variables are @dfn{terminal-local}; that is, they have a +separate binding for each terminal. The binding in effect at any time +is the one for the terminal that the currently selected frame belongs +to. These variables include @code{default-minibuffer-frame}, +@code{defining-kbd-macro}, @code{last-kbd-macro}, and +@code{system-key-alist}. They are always terminal-local, and can never +be buffer-local (@pxref{Buffer-Local Variables}). + + A single X server can handle more than one screen. A display name +@samp{@var{host}:@var{server}.@var{screen}} has three parts; the last +part specifies the screen number for a given server. When you use two +screens belonging to one server, Emacs knows by the similarity in their +names that they share a single keyboard, and it treats them as a single +terminal. + + Note that some graphical terminals can output to more than a one +monitor (or other output device) at the same time. On these +``multi-monitor'' setups, a single @var{display} value controls the +output to all the physical monitors. In this situation, there is +currently no platform-independent way for Emacs to distinguish between +the different physical monitors. + +@deffn Command make-frame-on-display display &optional parameters +This creates and returns a new frame on display @var{display}, taking +the other frame parameters from @var{parameters}. Aside from the +@var{display} argument, it is like @code{make-frame} (@pxref{Creating +Frames}). +@end deffn + +@defun x-display-list +This returns a list that indicates which X displays Emacs has a +connection to. The elements of the list are strings, and each one is +a display name. +@end defun + +@defun x-open-connection display &optional xrm-string must-succeed +This function opens a connection to the X display @var{display}. It +does not create a frame on that display, but it permits you to check +that communication can be established with that display. + +The optional argument @var{xrm-string}, if not @code{nil}, is a +string of resource names and values, in the same format used in the +@file{.Xresources} file. The values you specify override the resource +values recorded in the X server itself; they apply to all Emacs frames +created on this display. Here's an example of what this string might +look like: + +@example +"*BorderWidth: 3\n*InternalBorder: 2\n" +@end example + +@xref{X Resources,, X Resources, emacs, The GNU Emacs Manual}. + +If @var{must-succeed} is non-@code{nil}, failure to open the connection +terminates Emacs. Otherwise, it is an ordinary Lisp error. +@end defun + +@defun x-close-connection display +This function closes the connection to display @var{display}. Before +you can do this, you must first delete all the frames that were open on +that display (@pxref{Deleting Frames}). +@end defun + +@node Frame Parameters +@section Frame Parameters +@cindex frame parameters + + A frame has many parameters that control its appearance and behavior. +Just what parameters a frame has depends on what display mechanism it +uses. + + Frame parameters exist mostly for the sake of window systems. A +terminal frame has a few parameters, mostly for compatibility's sake; +only the @code{height}, @code{width}, @code{name}, @code{title}, +@code{menu-bar-lines}, @code{buffer-list} and @code{buffer-predicate} +parameters do something special. If the terminal supports colors, the +parameters @code{foreground-color}, @code{background-color}, +@code{background-mode} and @code{display-type} are also meaningful. + +@menu +* Parameter Access:: How to change a frame's parameters. +* Initial Parameters:: Specifying frame parameters when you make a frame. +* Window Frame Parameters:: List of frame parameters for window systems. +* Size and Position:: Changing the size and position of a frame. +* Geometry:: Parsing geometry specifications. +@end menu + +@node Parameter Access +@subsection Access to Frame Parameters + +These functions let you read and change the parameter values of a +frame. + +@defun frame-parameter frame parameter +This function returns the value of the parameter @var{parameter} (a +symbol) of @var{frame}. If @var{frame} is @code{nil}, it returns the +selected frame's parameter. If @var{frame} has no setting for +@var{parameter}, this function returns @code{nil}. +@end defun + +@defun frame-parameters &optional frame +The function @code{frame-parameters} returns an alist listing all the +parameters of @var{frame} and their values. If @var{frame} is +@code{nil} or omitted, this returns the selected frame's parameters +@end defun + +@defun modify-frame-parameters frame alist +This function alters the parameters of frame @var{frame} based on the +elements of @var{alist}. Each element of @var{alist} has the form +@code{(@var{parm} . @var{value})}, where @var{parm} is a symbol naming a +parameter. If you don't mention a parameter in @var{alist}, its value +doesn't change. If @var{frame} is @code{nil}, it defaults to the selected +frame. +@end defun + +@defun modify-all-frames-parameters alist +This function alters the frame parameters of all existing frames +according to @var{alist}, then modifies @code{default-frame-alist} +(and, if necessary, @code{initial-frame-alist}) to apply the same +parameter values to frames that will be created henceforth. +@end defun + +@node Initial Parameters +@subsection Initial Frame Parameters + +You can specify the parameters for the initial startup frame +by setting @code{initial-frame-alist} in your init file (@pxref{Init File}). + +@defvar initial-frame-alist +This variable's value is an alist of parameter values used when creating +the initial window frame. You can set this variable to specify the +appearance of the initial frame without altering subsequent frames. +Each element has the form: + +@example +(@var{parameter} . @var{value}) +@end example + +Emacs creates the initial frame before it reads your init +file. After reading that file, Emacs checks @code{initial-frame-alist}, +and applies the parameter settings in the altered value to the already +created initial frame. + +If these settings affect the frame geometry and appearance, you'll see +the frame appear with the wrong ones and then change to the specified +ones. If that bothers you, you can specify the same geometry and +appearance with X resources; those do take effect before the frame is +created. @xref{X Resources,, X Resources, emacs, The GNU Emacs Manual}. + +X resource settings typically apply to all frames. If you want to +specify some X resources solely for the sake of the initial frame, and +you don't want them to apply to subsequent frames, here's how to achieve +this. Specify parameters in @code{default-frame-alist} to override the +X resources for subsequent frames; then, to prevent these from affecting +the initial frame, specify the same parameters in +@code{initial-frame-alist} with values that match the X resources. +@end defvar + +If these parameters specify a separate minibuffer-only frame with +@code{(minibuffer . nil)}, and you have not created one, Emacs creates +one for you. + +@defvar minibuffer-frame-alist +This variable's value is an alist of parameter values used when creating +an initial minibuffer-only frame---if such a frame is needed, according +to the parameters for the main initial frame. +@end defvar + +@defvar default-frame-alist +This is an alist specifying default values of frame parameters for all +Emacs frames---the first frame, and subsequent frames. When using the X +Window System, you can get the same results by means of X resources +in many cases. + +Setting this variable does not affect existing frames. +@end defvar + +See also @code{special-display-frame-alist}. @xref{Definition of +special-display-frame-alist}. + +If you use options that specify window appearance when you invoke Emacs, +they take effect by adding elements to @code{default-frame-alist}. One +exception is @samp{-geometry}, which adds the specified position to +@code{initial-frame-alist} instead. @xref{Emacs Invocation,, Command +Line Arguments for Emacs Invocation, emacs, The GNU Emacs Manual}. + +@node Window Frame Parameters +@subsection Window Frame Parameters + + Just what parameters a frame has depends on what display mechanism +it uses. This section describes the parameters that have special +meanings on some or all kinds of terminals. Of these, @code{name}, +@code{title}, @code{height}, @code{width}, @code{buffer-list} and +@code{buffer-predicate} provide meaningful information in terminal +frames, and @code{tty-color-mode} is meaningful @emph{only} in +terminal frames. + +@menu +* Basic Parameters:: Parameters that are fundamental. +* Position Parameters:: The position of the frame on the screen. +* Size Parameters:: Frame's size. +* Layout Parameters:: Size of parts of the frame, and + enabling or disabling some parts. +* Buffer Parameters:: Which buffers have been or should be shown. +* Management Parameters:: Communicating with the window manager. +* Cursor Parameters:: Controlling the cursor appearance. +* Color Parameters:: Colors of various parts of the frame. +@end menu + +@node Basic Parameters +@subsubsection Basic Parameters + + These frame parameters give the most basic information about the +frame. @code{title} and @code{name} are meaningful on all terminals. + +@table @code +@item display +The display on which to open this frame. It should be a string of the +form @code{"@var{host}:@var{dpy}.@var{screen}"}, just like the +@code{DISPLAY} environment variable. + +@item display-type +This parameter describes the range of possible colors that can be used +in this frame. Its value is @code{color}, @code{grayscale} or +@code{mono}. + +@item title - If a frame has a non-@code{nil} title, it appears in the window system's - border for the frame, and also in the mode line of windows in that frame - if @code{mode-line-frame-identification} uses @samp{%F} - (@pxref{%-Constructs}). This is normally the case when Emacs is not - using a window system, and can only display one frame at a time. - @xref{Frame Titles}. ++If a frame has a non-@code{nil} title, it appears in the window ++system's title bar at the top of the frame, and also in the mode line ++of windows in that frame if @code{mode-line-frame-identification} uses ++@samp{%F} (@pxref{%-Constructs}). This is normally the case when ++Emacs is not using a window system, and can only display one frame at ++a time. @xref{Frame Titles}. + +@item name +The name of the frame. The frame name serves as a default for the frame +title, if the @code{title} parameter is unspecified or @code{nil}. If +you don't specify a name, Emacs sets the frame name automatically +(@pxref{Frame Titles}). + +If you specify the frame name explicitly when you create the frame, the +name is also used (instead of the name of the Emacs executable) when +looking up X resources for the frame. + +@item display-environment-variable +The value of the @code{DISPLAY} environment variable for the frame. It +is passed to child processes. + +@item term-environment-variable +The value of the @code{TERM} environment variable for the frame. It +is passed to child processes. +@end table + +@node Position Parameters +@subsubsection Position Parameters + + Position parameters' values are normally measured in pixels, but on +text-only terminals they count characters or lines instead. + +@table @code +@item left +The screen position of the left edge, in pixels, with respect to the +left edge of the screen. The value may be a positive number @var{pos}, +or a list of the form @code{(+ @var{pos})} which permits specifying a +negative @var{pos} value. + +A negative number @minus{}@var{pos}, or a list of the form @code{(- +@var{pos})}, actually specifies the position of the right edge of the +window with respect to the right edge of the screen. A positive value +of @var{pos} counts toward the left. @strong{Reminder:} if the +parameter is a negative integer @minus{}@var{pos}, then @var{pos} is +positive. + +Some window managers ignore program-specified positions. If you want to +be sure the position you specify is not ignored, specify a +non-@code{nil} value for the @code{user-position} parameter as well. + +@item top +The screen position of the top edge, in pixels, with respect to the +top edge of the screen. It works just like @code{left}, except vertically +instead of horizontally. + +@item icon-left +The screen position of the left edge @emph{of the frame's icon}, in +pixels, counting from the left edge of the screen. This takes effect if +and when the frame is iconified. + +If you specify a value for this parameter, then you must also specify +a value for @code{icon-top} and vice versa. The window manager may +ignore these two parameters. + +@item icon-top +The screen position of the top edge @emph{of the frame's icon}, in +pixels, counting from the top edge of the screen. This takes effect if +and when the frame is iconified. + +@item user-position +When you create a frame and specify its screen position with the +@code{left} and @code{top} parameters, use this parameter to say whether +the specified position was user-specified (explicitly requested in some +way by a human user) or merely program-specified (chosen by a program). +A non-@code{nil} value says the position was user-specified. + +Window managers generally heed user-specified positions, and some heed +program-specified positions too. But many ignore program-specified +positions, placing the window in a default fashion or letting the user +place it with the mouse. Some window managers, including @code{twm}, +let the user specify whether to obey program-specified positions or +ignore them. + +When you call @code{make-frame}, you should specify a non-@code{nil} +value for this parameter if the values of the @code{left} and @code{top} +parameters represent the user's stated preference; otherwise, use +@code{nil}. +@end table + +@node Size Parameters +@subsubsection Size Parameters + + Size parameters' values are normally measured in pixels, but on +text-only terminals they count characters or lines instead. + +@table @code +@item height +The height of the frame contents, in characters. (To get the height in +pixels, call @code{frame-pixel-height}; see @ref{Size and Position}.) + +@item width - The width of the frame contents, in characters. (To get the height in ++The width of the frame contents, in characters. (To get the width in +pixels, call @code{frame-pixel-width}; see @ref{Size and Position}.) + +@item user-size +This does for the size parameters @code{height} and @code{width} what +the @code{user-position} parameter (see above) does for the position +parameters @code{top} and @code{left}. + +@item fullscreen +Specify that width, height or both shall be set to the size of the screen. +The value @code{fullwidth} specifies that width shall be the size of the +screen. The value @code{fullheight} specifies that height shall be the +size of the screen. The value @code{fullboth} specifies that both the +width and the height shall be set to the size of the screen. +@end table + +@node Layout Parameters +@subsubsection Layout Parameters + + These frame parameters enable or disable various parts of the +frame, or control their sizes. + +@table @code +@item border-width +The width in pixels of the frame's border. + +@item internal-border-width +The distance in pixels between text (or fringe) and the frame's border. + +@item vertical-scroll-bars +Whether the frame has scroll bars for vertical scrolling, and which side +of the frame they should be on. The possible values are @code{left}, +@code{right}, and @code{nil} for no scroll bars. + +@ignore +@item horizontal-scroll-bars +Whether the frame has scroll bars for horizontal scrolling +(non-@code{nil} means yes). Horizontal scroll bars are not currently +implemented. +@end ignore + +@item scroll-bar-width +The width of vertical scroll bars, in pixels, or @code{nil} meaning to +use the default width. + +@item left-fringe +@itemx right-fringe +The default width of the left and right fringes of windows in this +frame (@pxref{Fringes}). If either of these is zero, that effectively +removes the corresponding fringe. A value of @code{nil} stands for +the standard fringe width, which is the width needed to display the +fringe bitmaps. + +The combined fringe widths must add up to an integral number of +columns, so the actual default fringe widths for the frame may be +larger than the specified values. The extra width needed to reach an +acceptable total is distributed evenly between the left and right +fringe. However, you can force one fringe or the other to a precise +width by specifying that width as a negative integer. If both widths are +negative, only the left fringe gets the specified width. + +@item menu-bar-lines +The number of lines to allocate at the top of the frame for a menu +bar. The default is 1. A value of @code{nil} means don't display a +menu bar. @xref{Menu Bar}. (The X toolkit and GTK allow at most one +menu bar line; they treat larger values as 1.) + +@item tool-bar-lines +The number of lines to use for the tool bar. A value of @code{nil} +means don't display a tool bar. (GTK allows at most one tool bar line; +it treats larger values as 1.) + +@item line-spacing +Additional space to leave below each text line, in pixels (a positive +integer). @xref{Line Height}, for more information. +@end table + +@node Buffer Parameters +@subsubsection Buffer Parameters + + These frame parameters, meaningful on all kinds of terminals, deal +with which buffers have been, or should, be displayed in the frame. + +@table @code +@item minibuffer +Whether this frame has its own minibuffer. The value @code{t} means +yes, @code{nil} means no, @code{only} means this frame is just a +minibuffer. If the value is a minibuffer window (in some other frame), +the new frame uses that minibuffer. + +@item buffer-predicate +The buffer-predicate function for this frame. The function +@code{other-buffer} uses this predicate (from the selected frame) to +decide which buffers it should consider, if the predicate is not +@code{nil}. It calls the predicate with one argument, a buffer, once for +each buffer; if the predicate returns a non-@code{nil} value, it +considers that buffer. + +@item buffer-list +A list of buffers that have been selected in this frame, +ordered most-recently-selected first. + +@item unsplittable +If non-@code{nil}, this frame's window is never split automatically. +@end table + +@node Management Parameters +@subsubsection Window Management Parameters +@cindex window manager, and frame parameters + + These frame parameters, meaningful only on window system displays, +interact with the window manager. + +@table @code +@item visibility +The state of visibility of the frame. There are three possibilities: +@code{nil} for invisible, @code{t} for visible, and @code{icon} for +iconified. @xref{Visibility of Frames}. + +@item auto-raise +Whether selecting the frame raises it (non-@code{nil} means yes). + +@item auto-lower +Whether deselecting the frame lowers it (non-@code{nil} means yes). + +@item icon-type +The type of icon to use for this frame when it is iconified. If the +value is a string, that specifies a file containing a bitmap to use. +Any other non-@code{nil} value specifies the default bitmap icon (a +picture of a gnu); @code{nil} specifies a text icon. + +@item icon-name +The name to use in the icon for this frame, when and if the icon +appears. If this is @code{nil}, the frame's title is used. + +@item window-id +The number of the window-system window used by the frame +to contain the actual Emacs windows. + +@item outer-window-id +The number of the outermost window-system window used for the whole frame. + +@item wait-for-wm +If non-@code{nil}, tell Xt to wait for the window manager to confirm +geometry changes. Some window managers, including versions of Fvwm2 +and KDE, fail to confirm, so Xt hangs. Set this to @code{nil} to +prevent hanging with those window managers. + +@ignore +@item parent-id +@c ??? Not yet working. +The X window number of the window that should be the parent of this one. +Specifying this lets you create an Emacs window inside some other +application's window. (It is not certain this will be implemented; try +it and see if it works.) +@end ignore +@end table + +@node Cursor Parameters +@subsubsection Cursor Parameters + + This frame parameter controls the way the cursor looks. + +@table @code +@item cursor-type +How to display the cursor. Legitimate values are: + +@table @code +@item box +Display a filled box. (This is the default.) +@item hollow +Display a hollow box. +@item nil +Don't display a cursor. +@item bar +Display a vertical bar between characters. +@item (bar . @var{width}) +Display a vertical bar @var{width} pixels wide between characters. +@item hbar +Display a horizontal bar. +@item (hbar . @var{height}) +Display a horizontal bar @var{height} pixels high. +@end table +@end table + +@vindex cursor-type +The buffer-local variable @code{cursor-type} overrides the value of +the @code{cursor-type} frame parameter, but if it is @code{t}, that +means to use the cursor specified for the frame. + +@defvar blink-cursor-alist +This variable specifies how to blink the cursor. Each element has the +form @code{(@var{on-state} . @var{off-state})}. Whenever the cursor +type equals @var{on-state} (comparing using @code{equal}), the +corresponding @var{off-state} specifies what the cursor looks like +when it blinks ``off.'' Both @var{on-state} and @var{off-state} +should be suitable values for the @code{cursor-type} frame parameter. + +There are various defaults for how to blink each type of cursor, if +the type is not mentioned as an @var{on-state} here. Changes in this +variable do not take effect immediately, only when you specify the +@code{cursor-type} frame parameter. +@end defvar + +@defvar cursor-in-non-selected-windows +This variable controls how the cursor looks in a window that is not +selected. It supports the same values as the @code{cursor-type} frame +parameter; also, @code{nil} means don't display a cursor in +nonselected windows, and @code{t} (the default) means use a standard +modificatoin of the usual cursor type (solid box becomes hollow box, +and bar becomes a narrower bar). +@end defvar + +@node Color Parameters +@subsubsection Color Parameters + + These frame parameters control the use of colors. + +@table @code +@item background-mode +This parameter is either @code{dark} or @code{light}, according +to whether the background color is a light one or a dark one. + +@item tty-color-mode +@cindex standard colors for character terminals +This parameter overrides the terminal's color support as given by the +system's terminal capabilities database in that this parameter's value +specifies the color mode to use in terminal frames. The value can be +either a symbol or a number. A number specifies the number of colors +to use (and, indirectly, what commands to issue to produce each +color). For example, @code{(tty-color-mode . 8)} specifies use of the +ANSI escape sequences for 8 standard text colors. A value of -1 turns +off color support. + +If the parameter's value is a symbol, it specifies a number through +the value of @code{tty-color-mode-alist}, and the associated number is +used instead. + +@item screen-gamma +@cindex gamma correction +If this is a number, Emacs performs ``gamma correction'' which adjusts +the brightness of all colors. The value should be the screen gamma of +your display, a floating point number. + +Usual PC monitors have a screen gamma of 2.2, so color values in +Emacs, and in X windows generally, are calibrated to display properly +on a monitor with that gamma value. If you specify 2.2 for +@code{screen-gamma}, that means no correction is needed. Other values +request correction, designed to make the corrected colors appear on +your screen the way they would have appeared without correction on an +ordinary monitor with a gamma value of 2.2. + +If your monitor displays colors too light, you should specify a +@code{screen-gamma} value smaller than 2.2. This requests correction +that makes colors darker. A screen gamma value of 1.5 may give good +results for LCD color displays. +@end table + +These frame parameters are semi-obsolete in that they are automatically +equivalent to particular face attributes of particular faces. +@xref{Standard Faces,,, emacs, The Emacs Manual}. + +@table @code +@item font +The name of the font for displaying text in the frame. This is a +string, either a valid font name for your system or the name of an Emacs +fontset (@pxref{Fontsets}). It is equivalent to the @code{font} +attribute of the @code{default} face. + +@item foreground-color +The color to use for the image of a character. It is equivalent to +the @code{:foreground} attribute of the @code{default} face. + +@item background-color +The color to use for the background of characters. It is equivalent to +the @code{:background} attribute of the @code{default} face. + +@item mouse-color +The color for the mouse pointer. It is equivalent to the @code{:background} +attribute of the @code{mouse} face. + +@item cursor-color +The color for the cursor that shows point. It is equivalent to the +@code{:background} attribute of the @code{cursor} face. + +@item border-color +The color for the border of the frame. It is equivalent to the +@code{:background} attribute of the @code{border} face. + +@item scroll-bar-foreground +If non-@code{nil}, the color for the foreground of scroll bars. It is +equivalent to the @code{:foreground} attribute of the +@code{scroll-bar} face. + +@item scroll-bar-background +If non-@code{nil}, the color for the background of scroll bars. It is +equivalent to the @code{:background} attribute of the +@code{scroll-bar} face. +@end table + +@node Size and Position +@subsection Frame Size And Position +@cindex size of frame +@cindex screen size +@cindex frame size +@cindex resize frame + + You can read or change the size and position of a frame using the +frame parameters @code{left}, @code{top}, @code{height}, and +@code{width}. Whatever geometry parameters you don't specify are chosen +by the window manager in its usual fashion. + + Here are some special features for working with sizes and positions. +(For the precise meaning of ``selected frame'' used by these functions, +see @ref{Input Focus}.) + +@defun set-frame-position frame left top +This function sets the position of the top left corner of @var{frame} to +@var{left} and @var{top}. These arguments are measured in pixels, and +normally count from the top left corner of the screen. + +Negative parameter values position the bottom edge of the window up from +the bottom edge of the screen, or the right window edge to the left of +the right edge of the screen. It would probably be better if the values +were always counted from the left and top, so that negative arguments +would position the frame partly off the top or left edge of the screen, +but it seems inadvisable to change that now. +@end defun + +@defun frame-height &optional frame +@defunx frame-width &optional frame +These functions return the height and width of @var{frame}, measured in +lines and columns. If you don't supply @var{frame}, they use the +selected frame. +@end defun + +@defun screen-height +@defunx screen-width +These functions are old aliases for @code{frame-height} and +@code{frame-width}. When you are using a non-window terminal, the size +of the frame is normally the same as the size of the terminal screen. +@end defun + +@defun frame-pixel-height &optional frame +@defunx frame-pixel-width &optional frame - These functions return the height and width of @var{frame}, measured in - pixels. If you don't supply @var{frame}, they use the selected frame. ++These functions return the height and width of the main display area ++of @var{frame}, measured in pixels. If you don't supply @var{frame}, ++they use the selected frame. ++ ++These values include the internal borders, and windows' scroll bars ++and fringes (which belong to individual windows, not to the frame ++itself), but do not include menu bars or tool bars (except when using ++X without an X toolkit). +@end defun + +@defun frame-char-height &optional frame +@defunx frame-char-width &optional frame +These functions return the height and width of a character in +@var{frame}, measured in pixels. The values depend on the choice of +font. If you don't supply @var{frame}, these functions use the selected +frame. +@end defun + +@defun set-frame-size frame cols rows +This function sets the size of @var{frame}, measured in characters; +@var{cols} and @var{rows} specify the new width and height. + +To set the size based on values measured in pixels, use +@code{frame-char-height} and @code{frame-char-width} to convert +them to units of characters. +@end defun + +@defun set-frame-height frame lines &optional pretend +This function resizes @var{frame} to a height of @var{lines} lines. The +sizes of existing windows in @var{frame} are altered proportionally to +fit. + +If @var{pretend} is non-@code{nil}, then Emacs displays @var{lines} +lines of output in @var{frame}, but does not change its value for the +actual height of the frame. This is only useful for a terminal frame. +Using a smaller height than the terminal actually implements may be +useful to reproduce behavior observed on a smaller screen, or if the +terminal malfunctions when using its whole screen. Setting the frame +height ``for real'' does not always work, because knowing the correct +actual size may be necessary for correct cursor positioning on a +terminal frame. +@end defun + +@defun set-frame-width frame width &optional pretend +This function sets the width of @var{frame}, measured in characters. +The argument @var{pretend} has the same meaning as in +@code{set-frame-height}. +@end defun + +@findex set-screen-height +@findex set-screen-width + The older functions @code{set-screen-height} and +@code{set-screen-width} were used to specify the height and width of the +screen, in Emacs versions that did not support multiple frames. They +are semi-obsolete, but still work; they apply to the selected frame. + +@node Geometry +@subsection Geometry + + Here's how to examine the data in an X-style window geometry +specification: + +@defun x-parse-geometry geom +@cindex geometry specification +The function @code{x-parse-geometry} converts a standard X window +geometry string to an alist that you can use as part of the argument to +@code{make-frame}. + +The alist describes which parameters were specified in @var{geom}, and +gives the values specified for them. Each element looks like +@code{(@var{parameter} . @var{value})}. The possible @var{parameter} +values are @code{left}, @code{top}, @code{width}, and @code{height}. + +For the size parameters, the value must be an integer. The position +parameter names @code{left} and @code{top} are not totally accurate, +because some values indicate the position of the right or bottom edges +instead. These are the @var{value} possibilities for the position +parameters: + +@table @asis +@item an integer +A positive integer relates the left edge or top edge of the window to +the left or top edge of the screen. A negative integer relates the +right or bottom edge of the window to the right or bottom edge of the +screen. + +@item @code{(+ @var{position})} +This specifies the position of the left or top edge of the window +relative to the left or top edge of the screen. The integer +@var{position} may be positive or negative; a negative value specifies a +position outside the screen. + +@item @code{(- @var{position})} +This specifies the position of the right or bottom edge of the window +relative to the right or bottom edge of the screen. The integer +@var{position} may be positive or negative; a negative value specifies a +position outside the screen. +@end table + +Here is an example: + +@example +(x-parse-geometry "35x70+0-0") + @result{} ((height . 70) (width . 35) + (top - 0) (left . 0)) +@end example +@end defun + +@node Frame Titles +@section Frame Titles +@cindex frame title + + Every frame has a @code{name} parameter; this serves as the default +for the frame title which window systems typically display at the top of +the frame. You can specify a name explicitly by setting the @code{name} +frame property. + + Normally you don't specify the name explicitly, and Emacs computes the +frame name automatically based on a template stored in the variable +@code{frame-title-format}. Emacs recomputes the name each time the +frame is redisplayed. + +@defvar frame-title-format +This variable specifies how to compute a name for a frame when you have +not explicitly specified one. The variable's value is actually a mode +line construct, just like @code{mode-line-format}, except that the +@samp{%c} and @samp{%l} constructs are ignored. @xref{Mode Line +Data}. +@end defvar + +@defvar icon-title-format +This variable specifies how to compute the name for an iconified frame, +when you have not explicitly specified the frame title. This title +appears in the icon itself. +@end defvar + +@defvar multiple-frames +This variable is set automatically by Emacs. Its value is @code{t} when +there are two or more frames (not counting minibuffer-only frames or +invisible frames). The default value of @code{frame-title-format} uses +@code{multiple-frames} so as to put the buffer name in the frame title +only when there is more than one frame. + +The value of this variable is not guaranteed to be accurate except +while processing @code{frame-title-format} or +@code{icon-title-format}. +@end defvar + +@node Deleting Frames +@section Deleting Frames +@cindex deleting frames + +Frames remain potentially visible until you explicitly @dfn{delete} +them. A deleted frame cannot appear on the screen, but continues to +exist as a Lisp object until there are no references to it. + +@deffn Command delete-frame &optional frame force +@vindex delete-frame-functions +This function deletes the frame @var{frame}. Unless @var{frame} is a +tooltip, it first runs the hook @code{delete-frame-functions} (each +function gets one argument, @var{frame}). By default, @var{frame} is +the selected frame. + +A frame cannot be deleted if its minibuffer is used by other frames. +Normally, you cannot delete a frame if all other frames are invisible, +but if the @var{force} is non-@code{nil}, then you are allowed to do so. +@end deffn + +@defun frame-live-p frame +The function @code{frame-live-p} returns non-@code{nil} if the frame +@var{frame} has not been deleted. The possible non-@code{nil} return +values are like those of @code{framep}. @xref{Frames}. +@end defun + + Some window managers provide a command to delete a window. These work +by sending a special message to the program that operates the window. +When Emacs gets one of these commands, it generates a +@code{delete-frame} event, whose normal definition is a command that +calls the function @code{delete-frame}. @xref{Misc Events}. + +@node Finding All Frames +@section Finding All Frames +@cindex frames, scanning all + +@defun frame-list +The function @code{frame-list} returns a list of all the frames that +have not been deleted. It is analogous to @code{buffer-list} for +buffers, and includes frames on all terminals. The list that you get is +newly created, so modifying the list doesn't have any effect on the +internals of Emacs. +@end defun + +@defun visible-frame-list +This function returns a list of just the currently visible frames. +@xref{Visibility of Frames}. (Terminal frames always count as +``visible,'' even though only the selected one is actually displayed.) +@end defun + +@defun next-frame &optional frame minibuf +The function @code{next-frame} lets you cycle conveniently through all +the frames on the current display from an arbitrary starting point. It +returns the ``next'' frame after @var{frame} in the cycle. If +@var{frame} is omitted or @code{nil}, it defaults to the selected frame +(@pxref{Input Focus}). + +The second argument, @var{minibuf}, says which frames to consider: + +@table @asis +@item @code{nil} +Exclude minibuffer-only frames. +@item @code{visible} +Consider all visible frames. +@item 0 +Consider all visible or iconified frames. +@item a window +Consider only the frames using that particular window as their +minibuffer. +@item anything else +Consider all frames. +@end table +@end defun + +@defun previous-frame &optional frame minibuf +Like @code{next-frame}, but cycles through all frames in the opposite +direction. +@end defun + + See also @code{next-window} and @code{previous-window}, in @ref{Cyclic +Window Ordering}. + +@node Frames and Windows +@section Frames and Windows + + Each window is part of one and only one frame; you can get the frame +with @code{window-frame}. + +@defun window-frame window +This function returns the frame that @var{window} is on. +@end defun + + All the non-minibuffer windows in a frame are arranged in a cyclic +order. The order runs from the frame's top window, which is at the +upper left corner, down and to the right, until it reaches the window at +the lower right corner (always the minibuffer window, if the frame has +one), and then it moves back to the top. @xref{Cyclic Window Ordering}. + +@defun frame-first-window &optional frame +This returns the topmost, leftmost window of frame @var{frame}. +If omitted or @code{nil}, @var{frame} defaults to the selected frame. +@end defun + +At any time, exactly one window on any frame is @dfn{selected within the +frame}. The significance of this designation is that selecting the +frame also selects this window. You can get the frame's current +selected window with @code{frame-selected-window}. + +@defun frame-selected-window &optional frame +This function returns the window on @var{frame} that is selected +within @var{frame}. If omitted or @code{nil}, @var{frame} defaults to +the selected frame. +@end defun + +@defun set-frame-selected-window frame window +This sets the selected window of frame @var{frame} to @var{window}. +If @var{frame} is @code{nil}, it operates on the selected frame. If +@var{frame} is the selected frame, this makes @var{window} the +selected window. This function returns @var{window}. +@end defun + + Conversely, selecting a window for Emacs with @code{select-window} also +makes that window selected within its frame. @xref{Selecting Windows}. + + Another function that (usually) returns one of the windows in a given +frame is @code{minibuffer-window}. @xref{Definition of minibuffer-window}. + +@node Minibuffers and Frames +@section Minibuffers and Frames + +Normally, each frame has its own minibuffer window at the bottom, which +is used whenever that frame is selected. If the frame has a minibuffer, +you can get it with @code{minibuffer-window} (@pxref{Definition of +minibuffer-window}). + +However, you can also create a frame with no minibuffer. Such a frame +must use the minibuffer window of some other frame. When you create the +frame, you can specify explicitly the minibuffer window to use (in some +other frame). If you don't, then the minibuffer is found in the frame +which is the value of the variable @code{default-minibuffer-frame}. Its +value should be a frame that does have a minibuffer. + +If you use a minibuffer-only frame, you might want that frame to raise +when you enter the minibuffer. If so, set the variable +@code{minibuffer-auto-raise} to @code{t}. @xref{Raising and Lowering}. + +@defvar default-minibuffer-frame +This variable specifies the frame to use for the minibuffer window, by +default. It does not affect existing frames. It is always local to +the current terminal and cannot be buffer-local. @xref{Multiple +Displays}. +@end defvar + +@node Input Focus +@section Input Focus +@cindex input focus +@c @cindex selected frame Duplicates selected-frame + +At any time, one frame in Emacs is the @dfn{selected frame}. The selected +window always resides on the selected frame. + +When Emacs displays its frames on several terminals (@pxref{Multiple +Displays}), each terminal has its own selected frame. But only one of +these is ``@emph{the} selected frame'': it's the frame that belongs to +the terminal from which the most recent input came. That is, when Emacs +runs a command that came from a certain terminal, the selected frame is +the one of that terminal. Since Emacs runs only a single command at any +given time, it needs to consider only one selected frame at a time; this +frame is what we call @dfn{the selected frame} in this manual. The +display on which the selected frame is displayed is the @dfn{selected +frame's display}. + +@defun selected-frame +This function returns the selected frame. +@end defun + +Some window systems and window managers direct keyboard input to the +window object that the mouse is in; others require explicit clicks or +commands to @dfn{shift the focus} to various window objects. Either +way, Emacs automatically keeps track of which frame has the focus. To +switch to a different frame from a Lisp function, call +@code{select-frame-set-input-focus}. + +Lisp programs can also switch frames ``temporarily'' by calling the +function @code{select-frame}. This does not alter the window system's +concept of focus; rather, it escapes from the window manager's control +until that control is somehow reasserted. + +When using a text-only terminal, only one frame can be displayed at a +time on the terminal, so after a call to @code{select-frame}, the next +redisplay actually displays the newly selected frame. This frame +remains selected until a subsequent call to @code{select-frame} or +@code{select-frame-set-input-focus}. Each terminal frame has a number +which appears in the mode line before the buffer name (@pxref{Mode +Line Variables}). + +@defun select-frame-set-input-focus frame +This function makes @var{frame} the selected frame, raises it (should +it happen to be obscured by other frames) and tries to give it the X +server's focus. On a text-only terminal, the next redisplay displays +the new frame on the entire terminal screen. The return value of this +function is not significant. +@end defun + +@c ??? This is not yet implemented properly. +@defun select-frame frame +This function selects frame @var{frame}, temporarily disregarding the +focus of the X server if any. The selection of @var{frame} lasts until +the next time the user does something to select a different frame, or +until the next time this function is called. (If you are using a +window system, the previously selected frame may be restored as the +selected frame after return to the command loop, because it still may +have the window system's input focus.) The specified @var{frame} +becomes the selected frame, as explained above, and the terminal that +@var{frame} is on becomes the selected terminal. This function +returns @var{frame}, or @code{nil} if @var{frame} has been deleted. + +In general, you should never use @code{select-frame} in a way that could +switch to a different terminal without switching back when you're done. +@end defun + +Emacs cooperates with the window system by arranging to select frames as +the server and window manager request. It does so by generating a +special kind of input event, called a @dfn{focus} event, when +appropriate. The command loop handles a focus event by calling +@code{handle-switch-frame}. @xref{Focus Events}. + +@deffn Command handle-switch-frame frame +This function handles a focus event by selecting frame @var{frame}. + +Focus events normally do their job by invoking this command. +Don't call it for any other reason. +@end deffn + +@defun redirect-frame-focus frame &optional focus-frame +This function redirects focus from @var{frame} to @var{focus-frame}. +This means that @var{focus-frame} will receive subsequent keystrokes and +events intended for @var{frame}. After such an event, the value of +@code{last-event-frame} will be @var{focus-frame}. Also, switch-frame +events specifying @var{frame} will instead select @var{focus-frame}. + +If @var{focus-frame} is omitted or @code{nil}, that cancels any existing +redirection for @var{frame}, which therefore once again receives its own +events. + +One use of focus redirection is for frames that don't have minibuffers. +These frames use minibuffers on other frames. Activating a minibuffer +on another frame redirects focus to that frame. This puts the focus on +the minibuffer's frame, where it belongs, even though the mouse remains +in the frame that activated the minibuffer. + +Selecting a frame can also change focus redirections. Selecting frame +@code{bar}, when @code{foo} had been selected, changes any redirections +pointing to @code{foo} so that they point to @code{bar} instead. This +allows focus redirection to work properly when the user switches from +one frame to another using @code{select-window}. + +This means that a frame whose focus is redirected to itself is treated +differently from a frame whose focus is not redirected. +@code{select-frame} affects the former but not the latter. + +The redirection lasts until @code{redirect-frame-focus} is called to +change it. +@end defun + +@defopt focus-follows-mouse +This option is how you inform Emacs whether the window manager transfers +focus when the user moves the mouse. Non-@code{nil} says that it does. +When this is so, the command @code{other-frame} moves the mouse to a +position consistent with the new selected frame. (This option has no +effect on MS-Windows, where the mouse pointer is always automatically +moved by the OS to the selected frame.) +@end defopt + +@node Visibility of Frames +@section Visibility of Frames +@cindex visible frame +@cindex invisible frame +@cindex iconified frame +@cindex frame visibility + +A window frame may be @dfn{visible}, @dfn{invisible}, or +@dfn{iconified}. If it is visible, you can see its contents, unless +other windows cover it. If it is iconified, the frame's contents do +not appear on the screen, but an icon does. If the frame is +invisible, it doesn't show on the screen, not even as an icon. + +Visibility is meaningless for terminal frames, since only the selected +one is actually displayed in any case. + +@deffn Command make-frame-visible &optional frame +This function makes frame @var{frame} visible. If you omit +@var{frame}, it makes the selected frame visible. This does not raise +the frame, but you can do that with @code{raise-frame} if you wish +(@pxref{Raising and Lowering}). +@end deffn + +@deffn Command make-frame-invisible &optional frame force +This function makes frame @var{frame} invisible. If you omit +@var{frame}, it makes the selected frame invisible. + +Unless @var{force} is non-@code{nil}, this function refuses to make +@var{frame} invisible if all other frames are invisible.. +@end deffn + +@deffn Command iconify-frame &optional frame +This function iconifies frame @var{frame}. If you omit @var{frame}, it +iconifies the selected frame. +@end deffn + +@defun frame-visible-p frame +This returns the visibility status of frame @var{frame}. The value is +@code{t} if @var{frame} is visible, @code{nil} if it is invisible, and +@code{icon} if it is iconified. + +On a text-only terminal, all frames are considered visible, whether +they are currently being displayed or not, and this function returns +@code{t} for all frames. +@end defun + + The visibility status of a frame is also available as a frame +parameter. You can read or change it as such. @xref{Management +Parameters}. + + The user can iconify and deiconify frames with the window manager. +This happens below the level at which Emacs can exert any control, but +Emacs does provide events that you can use to keep track of such +changes. @xref{Misc Events}. + +@node Raising and Lowering +@section Raising and Lowering Frames + + Most window systems use a desktop metaphor. Part of this metaphor is +the idea that windows are stacked in a notional third dimension +perpendicular to the screen surface, and thus ordered from ``highest'' +to ``lowest.'' Where two windows overlap, the one higher up covers +the one underneath. Even a window at the bottom of the stack can be +seen if no other window overlaps it. + +@c @cindex raising a frame redundant with raise-frame +@cindex lowering a frame + A window's place in this ordering is not fixed; in fact, users tend +to change the order frequently. @dfn{Raising} a window means moving +it ``up,'' to the top of the stack. @dfn{Lowering} a window means +moving it to the bottom of the stack. This motion is in the notional +third dimension only, and does not change the position of the window +on the screen. + + You can raise and lower Emacs frame Windows with these functions: + +@deffn Command raise-frame &optional frame +This function raises frame @var{frame} (default, the selected frame). +If @var{frame} is invisible or iconified, this makes it visible. +@end deffn + +@deffn Command lower-frame &optional frame +This function lowers frame @var{frame} (default, the selected frame). +@end deffn + +@defopt minibuffer-auto-raise +If this is non-@code{nil}, activation of the minibuffer raises the frame +that the minibuffer window is in. +@end defopt + +You can also enable auto-raise (raising automatically when a frame is +selected) or auto-lower (lowering automatically when it is deselected) +for any frame using frame parameters. @xref{Management Parameters}. + +@node Frame Configurations +@section Frame Configurations +@cindex frame configuration + + A @dfn{frame configuration} records the current arrangement of frames, +all their properties, and the window configuration of each one. +(@xref{Window Configurations}.) + +@defun current-frame-configuration +This function returns a frame configuration list that describes +the current arrangement of frames and their contents. +@end defun + +@defun set-frame-configuration configuration &optional nodelete +This function restores the state of frames described in +@var{configuration}. However, this function does not restore deleted +frames. + +Ordinarily, this function deletes all existing frames not listed in +@var{configuration}. But if @var{nodelete} is non-@code{nil}, the +unwanted frames are iconified instead. +@end defun + +@node Mouse Tracking +@section Mouse Tracking +@cindex mouse tracking +@c @cindex tracking the mouse Duplicates track-mouse + + Sometimes it is useful to @dfn{track} the mouse, which means to display +something to indicate where the mouse is and move the indicator as the +mouse moves. For efficient mouse tracking, you need a way to wait until +the mouse actually moves. + + The convenient way to track the mouse is to ask for events to represent +mouse motion. Then you can wait for motion by waiting for an event. In +addition, you can easily handle any other sorts of events that may +occur. That is useful, because normally you don't want to track the +mouse forever---only until some other event, such as the release of a +button. + +@defspec track-mouse body@dots{} +This special form executes @var{body}, with generation of mouse motion +events enabled. Typically @var{body} would use @code{read-event} to +read the motion events and modify the display accordingly. @xref{Motion +Events}, for the format of mouse motion events. + +The value of @code{track-mouse} is that of the last form in @var{body}. +You should design @var{body} to return when it sees the up-event that +indicates the release of the button, or whatever kind of event means +it is time to stop tracking. +@end defspec + +The usual purpose of tracking mouse motion is to indicate on the screen +the consequences of pushing or releasing a button at the current +position. + +In many cases, you can avoid the need to track the mouse by using +the @code{mouse-face} text property (@pxref{Special Properties}). +That works at a much lower level and runs more smoothly than +Lisp-level mouse tracking. + +@ignore +@c These are not implemented yet. + +These functions change the screen appearance instantaneously. The +effect is transient, only until the next ordinary Emacs redisplay. That +is OK for mouse tracking, since it doesn't make sense for mouse tracking +to change the text, and the body of @code{track-mouse} normally reads +the events itself and does not do redisplay. + +@defun x-contour-region window beg end +This function draws lines to make a box around the text from @var{beg} +to @var{end}, in window @var{window}. +@end defun + +@defun x-uncontour-region window beg end +This function erases the lines that would make a box around the text +from @var{beg} to @var{end}, in window @var{window}. Use it to remove +a contour that you previously made by calling @code{x-contour-region}. +@end defun + +@defun x-draw-rectangle frame left top right bottom +This function draws a hollow rectangle on frame @var{frame} with the +specified edge coordinates, all measured in pixels from the inside top +left corner. It uses the cursor color, the one used for indicating the +location of point. +@end defun + +@defun x-erase-rectangle frame left top right bottom +This function erases a hollow rectangle on frame @var{frame} with the +specified edge coordinates, all measured in pixels from the inside top +left corner. Erasure means redrawing the text and background that +normally belong in the specified rectangle. +@end defun +@end ignore + +@node Mouse Position +@section Mouse Position +@cindex mouse position +@cindex position of mouse + + The functions @code{mouse-position} and @code{set-mouse-position} +give access to the current position of the mouse. + +@defun mouse-position +This function returns a description of the position of the mouse. The +value looks like @code{(@var{frame} @var{x} . @var{y})}, where @var{x} +and @var{y} are integers giving the position in characters relative to +the top left corner of the inside of @var{frame}. +@end defun + +@defvar mouse-position-function +If non-@code{nil}, the value of this variable is a function for +@code{mouse-position} to call. @code{mouse-position} calls this +function just before returning, with its normal return value as the +sole argument, and it returns whatever this function returns to it. + +This abnormal hook exists for the benefit of packages like +@file{xt-mouse.el} that need to do mouse handling at the Lisp level. +@end defvar + +@defun set-mouse-position frame x y +This function @dfn{warps the mouse} to position @var{x}, @var{y} in +frame @var{frame}. The arguments @var{x} and @var{y} are integers, +giving the position in characters relative to the top left corner of the +inside of @var{frame}. If @var{frame} is not visible, this function +does nothing. The return value is not significant. +@end defun + +@defun mouse-pixel-position +This function is like @code{mouse-position} except that it returns +coordinates in units of pixels rather than units of characters. +@end defun + +@defun set-mouse-pixel-position frame x y +This function warps the mouse like @code{set-mouse-position} except that +@var{x} and @var{y} are in units of pixels rather than units of +characters. These coordinates are not required to be within the frame. + +If @var{frame} is not visible, this function does nothing. The return +value is not significant. +@end defun + +@need 3000 + +@node Pop-Up Menus +@section Pop-Up Menus + + When using a window system, a Lisp program can pop up a menu so that +the user can choose an alternative with the mouse. + +@defun x-popup-menu position menu +This function displays a pop-up menu and returns an indication of +what selection the user makes. + +The argument @var{position} specifies where on the screen to put the +top left corner of the menu. It can be either a mouse button event +(which says to put the menu where the user actuated the button) or a +list of this form: + +@example +((@var{xoffset} @var{yoffset}) @var{window}) +@end example + +@noindent +where @var{xoffset} and @var{yoffset} are coordinates, measured in +pixels, counting from the top left corner of @var{window}. @var{window} +may be a window or a frame. + +If @var{position} is @code{t}, it means to use the current mouse +position. If @var{position} is @code{nil}, it means to precompute the +key binding equivalents for the keymaps specified in @var{menu}, +without actually displaying or popping up the menu. + +The argument @var{menu} says what to display in the menu. It can be a +keymap or a list of keymaps (@pxref{Menu Keymaps}). In this case, the +return value is the list of events corresponding to the user's choice. +(This list has more than one element if the choice occurred in a +submenu.) Note that @code{x-popup-menu} does not actually execute the +command bound to that sequence of events. + +Alternatively, @var{menu} can have the following form: + +@example +(@var{title} @var{pane1} @var{pane2}...) +@end example + +@noindent +where each pane is a list of form + +@example +(@var{title} @var{item1} @var{item2}...) +@end example + +Each item should normally be a cons cell @code{(@var{line} . @var{value})}, +where @var{line} is a string, and @var{value} is the value to return if +that @var{line} is chosen. An item can also be a string; this makes a +non-selectable line in the menu. + +If the user gets rid of the menu without making a valid choice, for +instance by clicking the mouse away from a valid choice or by typing +keyboard input, then this normally results in a quit and +@code{x-popup-menu} does not return. But if @var{position} is a mouse +button event (indicating that the user invoked the menu with the +mouse) then no quit occurs and @code{x-popup-menu} returns @code{nil}. +@end defun + + @strong{Usage note:} Don't use @code{x-popup-menu} to display a menu +if you could do the job with a prefix key defined with a menu keymap. +If you use a menu keymap to implement a menu, @kbd{C-h c} and @kbd{C-h +a} can see the individual items in that menu and provide help for them. +If instead you implement the menu by defining a command that calls +@code{x-popup-menu}, the help facilities cannot know what happens inside +that command, so they cannot give any help for the menu's items. + + The menu bar mechanism, which lets you switch between submenus by +moving the mouse, cannot look within the definition of a command to see +that it calls @code{x-popup-menu}. Therefore, if you try to implement a +submenu using @code{x-popup-menu}, it cannot work with the menu bar in +an integrated fashion. This is why all menu bar submenus are +implemented with menu keymaps within the parent menu, and never with +@code{x-popup-menu}. @xref{Menu Bar}. + + If you want a menu bar submenu to have contents that vary, you should +still use a menu keymap to implement it. To make the contents vary, add +a hook function to @code{menu-bar-update-hook} to update the contents of +the menu keymap as necessary. + +@node Dialog Boxes +@section Dialog Boxes +@cindex dialog boxes + + A dialog box is a variant of a pop-up menu---it looks a little +different, it always appears in the center of a frame, and it has just +one level and one or more buttons. The main use of dialog boxes is +for asking questions that the user can answer with ``yes,'' ``no,'' +and a few other alternatives. With a single button, they can also +force the user to acknowledge important information. The functions +@code{y-or-n-p} and @code{yes-or-no-p} use dialog boxes instead of the +keyboard, when called from commands invoked by mouse clicks. + +@defun x-popup-dialog position contents &optional header +This function displays a pop-up dialog box and returns an indication of +what selection the user makes. The argument @var{contents} specifies +the alternatives to offer; it has this format: + +@example +(@var{title} (@var{string} . @var{value})@dots{}) +@end example + +@noindent +which looks like the list that specifies a single pane for +@code{x-popup-menu}. + +The return value is @var{value} from the chosen alternative. + +As for @code{x-popup-menu}, an element of the list may be just a +string instead of a cons cell @code{(@var{string} . @var{value})}. +That makes a box that cannot be selected. + +If @code{nil} appears in the list, it separates the left-hand items from +the right-hand items; items that precede the @code{nil} appear on the +left, and items that follow the @code{nil} appear on the right. If you +don't include a @code{nil} in the list, then approximately half the +items appear on each side. + +Dialog boxes always appear in the center of a frame; the argument +@var{position} specifies which frame. The possible values are as in +@code{x-popup-menu}, but the precise coordinates or the individual +window don't matter; only the frame matters. + +If @var{header} is non-@code{nil}, the frame title for the box is +@samp{Information}, otherwise it is @samp{Question}. The former is used +for @code{message-box} (@pxref{message-box}). + +In some configurations, Emacs cannot display a real dialog box; so +instead it displays the same items in a pop-up menu in the center of the +frame. + +If the user gets rid of the dialog box without making a valid choice, +for instance using the window manager, then this produces a quit and +@code{x-popup-dialog} does not return. +@end defun + +@node Pointer Shape +@section Pointer Shape +@cindex pointer shape +@cindex mouse pointer shape + + You can specify the mouse pointer style for particular text or +images using the @code{pointer} text property, and for images with the +@code{:pointer} and @code{:map} image properties. The values you can +use in these properties are @code{text} (or @code{nil}), @code{arrow}, +@code{hand}, @code{vdrag}, @code{hdrag}, @code{modeline}, and +@code{hourglass}. @code{text} stands for the usual mouse pointer +style used over text. + + Over void parts of the window (parts that do not correspond to any +of the buffer contents), the mouse pointer usually uses the +@code{arrow} style, but you can specify a different style (one of +those above) by setting @code{void-text-area-pointer}. + +@defvar void-text-area-pointer +This variable specifies the mouse pointer style for void text areas. +These include the areas after the end of a line or below the last line +in the buffer. The default is to use the @code{arrow} (non-text) +pointer style. +@end defvar + + You can specify what the @code{text} pointer style really looks like +by setting the variable @code{x-pointer-shape}. + +@defvar x-pointer-shape +This variable specifies the pointer shape to use ordinarily in the +Emacs frame, for the @code{text} pointer style. +@end defvar + +@defvar x-sensitive-text-pointer-shape +This variable specifies the pointer shape to use when the mouse +is over mouse-sensitive text. +@end defvar + + These variables affect newly created frames. They do not normally +affect existing frames; however, if you set the mouse color of a +frame, that also installs the current value of those two variables. +@xref{Color Parameters}. + + The values you can use, to specify either of these pointer shapes, are +defined in the file @file{lisp/term/x-win.el}. Use @kbd{M-x apropos +@key{RET} x-pointer @key{RET}} to see a list of them. + +@node Window System Selections +@section Window System Selections +@cindex selection (for window systems) + +The X server records a set of @dfn{selections} which permit transfer of +data between application programs. The various selections are +distinguished by @dfn{selection types}, represented in Emacs by +symbols. X clients including Emacs can read or set the selection for +any given type. + +@deffn Command x-set-selection type data +This function sets a ``selection'' in the X server. It takes two +arguments: a selection type @var{type}, and the value to assign to it, +@var{data}. If @var{data} is @code{nil}, it means to clear out the +selection. Otherwise, @var{data} may be a string, a symbol, an integer +(or a cons of two integers or list of two integers), an overlay, or a +cons of two markers pointing to the same buffer. An overlay or a pair +of markers stands for text in the overlay or between the markers. + +The argument @var{data} may also be a vector of valid non-vector +selection values. + +Each possible @var{type} has its own selection value, which changes +independently. The usual values of @var{type} are @code{PRIMARY}, +@code{SECONDARY} and @code{CLIPBOARD}; these are symbols with upper-case +names, in accord with X Window System conventions. If @var{type} is +@code{nil}, that stands for @code{PRIMARY}. + +This function returns @var{data}. +@end deffn + +@defun x-get-selection &optional type data-type +This function accesses selections set up by Emacs or by other X +clients. It takes two optional arguments, @var{type} and +@var{data-type}. The default for @var{type}, the selection type, is +@code{PRIMARY}. + +The @var{data-type} argument specifies the form of data conversion to +use, to convert the raw data obtained from another X client into Lisp +data. Meaningful values include @code{TEXT}, @code{STRING}, +@code{UTF8_STRING}, @code{TARGETS}, @code{LENGTH}, @code{DELETE}, +@code{FILE_NAME}, @code{CHARACTER_POSITION}, @code{NAME}, +@code{LINE_NUMBER}, @code{COLUMN_NUMBER}, @code{OWNER_OS}, +@code{HOST_NAME}, @code{USER}, @code{CLASS}, @code{ATOM}, and +@code{INTEGER}. (These are symbols with upper-case names in accord +with X conventions.) The default for @var{data-type} is +@code{STRING}. +@end defun + +@cindex cut buffer +The X server also has a set of eight numbered @dfn{cut buffers} which can +store text or other data being moved between applications. Cut buffers +are considered obsolete, but Emacs supports them for the sake of X +clients that still use them. Cut buffers are numbered from 0 to 7. + +@defun x-get-cut-buffer &optional n +This function returns the contents of cut buffer number @var{n}. +If omitted @var{n} defaults to 0. +@end defun + +@defun x-set-cut-buffer string &optional push +@anchor{Definition of x-set-cut-buffer} +This function stores @var{string} into the first cut buffer (cut buffer +0). If @var{push} is @code{nil}, only the first cut buffer is changed. +If @var{push} is non-@code{nil}, that says to move the values down +through the series of cut buffers, much like the way successive kills in +Emacs move down the kill ring. In other words, the previous value of +the first cut buffer moves into the second cut buffer, and the second to +the third, and so on through all eight cut buffers. +@end defun + +@defvar selection-coding-system +This variable specifies the coding system to use when reading and +writing selections or the clipboard. @xref{Coding +Systems}. The default is @code{compound-text-with-extensions}, which +converts to the text representation that X11 normally uses. +@end defvar + +@cindex clipboard support (for MS-Windows) +When Emacs runs on MS-Windows, it does not implement X selections in +general, but it does support the clipboard. @code{x-get-selection} +and @code{x-set-selection} on MS-Windows support the text data type +only; if the clipboard holds other types of data, Emacs treats the +clipboard as empty. + +@cindex scrap support (for Mac OS) +On Mac OS, selection-like data transfer between applications is +performed through a mechanism called @dfn{scraps}. The clipboard is a +particular scrap named @code{com.apple.scrap.clipboard}. Types of scrap +data are called @dfn{scrap flavor types}, which are identified by +four-char codes such as @code{TEXT}. Emacs associates a selection with +a scrap, and a selection type with a scrap flavor type via +@code{mac-scrap-name} and @code{mac-ostype} properties, respectively. + +@example +(get 'CLIPBOARD 'mac-scrap-name) + @result{} "com.apple.scrap.clipboard" +(get 'com.apple.traditional-mac-plain-text 'mac-ostype) + @result{} "TEXT" +@end example + +Conventionally, selection types for scrap flavor types on Mac OS have +the form of @acronym{UTI, Uniform Type Identifier} such as +@code{com.apple.traditional-mac-plain-text}, +@code{public.utf16-plain-text}, and @code{public.file-url}. + +@defopt x-select-enable-clipboard +If this is non-@code{nil}, the Emacs yank functions consult the +clipboard before the primary selection, and the kill functions store in +the clipboard as well as the primary selection. Otherwise they do not +access the clipboard at all. The default is @code{nil} on most systems, +but @code{t} on MS-Windows and Mac. +@end defopt + +@node Drag and Drop +@section Drag and Drop + +@vindex x-dnd-test-function +@vindex x-dnd-known-types + When a user drags something from another application over Emacs, that other +application expects Emacs to tell it if Emacs can handle the data that is +dragged. The variable @code{x-dnd-test-function} is used by Emacs to determine +what to reply. The default value is @code{x-dnd-default-test-function} +which accepts drops if the type of the data to be dropped is present in +@code{x-dnd-known-types}. You can customize @code{x-dnd-test-function} and/or +@code{x-dnd-known-types} if you want Emacs to accept or reject drops based +on some other criteria. + +@vindex x-dnd-types-alist + If you want to change the way Emacs handles drop of different types +or add a new type, customize @code{x-dnd-types-alist}. This requires +detailed knowledge of what types other applications use for drag and +drop. + +@vindex dnd-protocol-alist + When an URL is dropped on Emacs it may be a file, but it may also be +another URL type (ftp, http, etc.). Emacs first checks +@code{dnd-protocol-alist} to determine what to do with the URL. If +there is no match there and if @code{browse-url-browser-function} is +an alist, Emacs looks for a match there. If no match is found the +text for the URL is inserted. If you want to alter Emacs behavior, +you can customize these variables. + +@node Color Names +@section Color Names + +@cindex color names +@cindex specify color +@cindex numerical RGB color specification + A color name is text (usually in a string) that specifies a color. +Symbolic names such as @samp{black}, @samp{white}, @samp{red}, etc., +are allowed; use @kbd{M-x list-colors-display} to see a list of +defined names. You can also specify colors numerically in forms such +as @samp{#@var{rgb}} and @samp{RGB:@var{r}/@var{g}/@var{b}}, where +@var{r} specifies the red level, @var{g} specifies the green level, +and @var{b} specifies the blue level. You can use either one, two, +three, or four hex digits for @var{r}; then you must use the same +number of hex digits for all @var{g} and @var{b} as well, making +either 3, 6, 9 or 12 hex digits in all. (See the documentation of the +X Window System for more details about numerical RGB specification of +colors.) + + These functions provide a way to determine which color names are +valid, and what they look like. In some cases, the value depends on the +@dfn{selected frame}, as described below; see @ref{Input Focus}, for the +meaning of the term ``selected frame.'' + +@defun color-defined-p color &optional frame +This function reports whether a color name is meaningful. It returns +@code{t} if so; otherwise, @code{nil}. The argument @var{frame} says +which frame's display to ask about; if @var{frame} is omitted or +@code{nil}, the selected frame is used. + +Note that this does not tell you whether the display you are using +really supports that color. When using X, you can ask for any defined +color on any kind of display, and you will get some result---typically, +the closest it can do. To determine whether a frame can really display +a certain color, use @code{color-supported-p} (see below). + +@findex x-color-defined-p +This function used to be called @code{x-color-defined-p}, +and that name is still supported as an alias. +@end defun + +@defun defined-colors &optional frame +This function returns a list of the color names that are defined +and supported on frame @var{frame} (default, the selected frame). +If @var{frame} does not support colors, the value is @code{nil}. + +@findex x-defined-colors +This function used to be called @code{x-defined-colors}, +and that name is still supported as an alias. +@end defun + +@defun color-supported-p color &optional frame background-p +This returns @code{t} if @var{frame} can really display the color +@var{color} (or at least something close to it). If @var{frame} is +omitted or @code{nil}, the question applies to the selected frame. + +Some terminals support a different set of colors for foreground and +background. If @var{background-p} is non-@code{nil}, that means you are +asking whether @var{color} can be used as a background; otherwise you +are asking whether it can be used as a foreground. + +The argument @var{color} must be a valid color name. +@end defun + +@defun color-gray-p color &optional frame +This returns @code{t} if @var{color} is a shade of gray, as defined on +@var{frame}'s display. If @var{frame} is omitted or @code{nil}, the +question applies to the selected frame. If @var{color} is not a valid +color name, this function returns @code{nil}. +@end defun + +@defun color-values color &optional frame +@cindex rgb value +This function returns a value that describes what @var{color} should +ideally look like on @var{frame}. If @var{color} is defined, the +value is a list of three integers, which give the amount of red, the +amount of green, and the amount of blue. Each integer ranges in +principle from 0 to 65535, but some displays may not use the full +range. This three-element list is called the @dfn{rgb values} of the +color. + +If @var{color} is not defined, the value is @code{nil}. + +@example +(color-values "black") + @result{} (0 0 0) +(color-values "white") + @result{} (65280 65280 65280) +(color-values "red") + @result{} (65280 0 0) +(color-values "pink") + @result{} (65280 49152 51968) +(color-values "hungry") + @result{} nil +@end example + +The color values are returned for @var{frame}'s display. If +@var{frame} is omitted or @code{nil}, the information is returned for +the selected frame's display. If the frame cannot display colors, the +value is @code{nil}. + +@findex x-color-values +This function used to be called @code{x-color-values}, +and that name is still supported as an alias. +@end defun + +@node Text Terminal Colors +@section Text Terminal Colors +@cindex colors on text-only terminals + + Text-only terminals usually support only a small number of colors, +and the computer uses small integers to select colors on the terminal. +This means that the computer cannot reliably tell what the selected +color looks like; instead, you have to inform your application which +small integers correspond to which colors. However, Emacs does know +the standard set of colors and will try to use them automatically. + + The functions described in this section control how terminal colors +are used by Emacs. + + Several of these functions use or return @dfn{rgb values}, described +in @ref{Color Names}. + + These functions accept a display (either a frame or the name of a +terminal) as an optional argument. We hope in the future to make Emacs +support more than one text-only terminal at one time; then this argument +will specify which terminal to operate on (the default being the +selected frame's terminal; @pxref{Input Focus}). At present, though, +the @var{frame} argument has no effect. + +@defun tty-color-define name number &optional rgb frame +This function associates the color name @var{name} with +color number @var{number} on the terminal. + +The optional argument @var{rgb}, if specified, is an rgb value, a list +of three numbers that specify what the color actually looks like. +If you do not specify @var{rgb}, then this color cannot be used by +@code{tty-color-approximate} to approximate other colors, because +Emacs will not know what it looks like. +@end defun + +@defun tty-color-clear &optional frame +This function clears the table of defined colors for a text-only terminal. +@end defun + +@defun tty-color-alist &optional frame +This function returns an alist recording the known colors supported by a +text-only terminal. + +Each element has the form @code{(@var{name} @var{number} . @var{rgb})} +or @code{(@var{name} @var{number})}. Here, @var{name} is the color +name, @var{number} is the number used to specify it to the terminal. +If present, @var{rgb} is a list of three color values (for red, green, +and blue) that says what the color actually looks like. +@end defun + +@defun tty-color-approximate rgb &optional frame +This function finds the closest color, among the known colors +supported for @var{display}, to that described by the rgb value +@var{rgb} (a list of color values). The return value is an element of +@code{tty-color-alist}. +@end defun + +@defun tty-color-translate color &optional frame +This function finds the closest color to @var{color} among the known +colors supported for @var{display} and returns its index (an integer). +If the name @var{color} is not defined, the value is @code{nil}. +@end defun + +@node Resources +@section X Resources + +@defun x-get-resource attribute class &optional component subclass +The function @code{x-get-resource} retrieves a resource value from the X +Window defaults database. + +Resources are indexed by a combination of a @dfn{key} and a @dfn{class}. +This function searches using a key of the form +@samp{@var{instance}.@var{attribute}} (where @var{instance} is the name +under which Emacs was invoked), and using @samp{Emacs.@var{class}} as +the class. + +The optional arguments @var{component} and @var{subclass} add to the key +and the class, respectively. You must specify both of them or neither. +If you specify them, the key is +@samp{@var{instance}.@var{component}.@var{attribute}}, and the class is +@samp{Emacs.@var{class}.@var{subclass}}. +@end defun + +@defvar x-resource-class +This variable specifies the application name that @code{x-get-resource} +should look up. The default value is @code{"Emacs"}. You can examine X +resources for application names other than ``Emacs'' by binding this +variable to some other string, around a call to @code{x-get-resource}. +@end defvar + +@defvar x-resource-name +This variable specifies the instance name that @code{x-get-resource} +should look up. The default value is the name Emacs was invoked with, +or the value specified with the @samp{-name} or @samp{-rn} switches. +@end defvar + +To illustrate some of the above, suppose that you have the line: + +@example +xterm.vt100.background: yellow +@end example + +@noindent +in your X resources file (whose name is usually @file{~/.Xdefaults} +or @file{~/.Xresources}). Then: + +@example +@group +(let ((x-resource-class "XTerm") (x-resource-name "xterm")) + (x-get-resource "vt100.background" "VT100.Background")) + @result{} "yellow" +@end group +@group +(let ((x-resource-class "XTerm") (x-resource-name "xterm")) + (x-get-resource "background" "VT100" "vt100" "Background")) + @result{} "yellow" +@end group +@end example + + @xref{X Resources,, X Resources, emacs, The GNU Emacs Manual}. + +@node Display Feature Testing +@section Display Feature Testing +@cindex display feature testing + + The functions in this section describe the basic capabilities of a +particular display. Lisp programs can use them to adapt their behavior +to what the display can do. For example, a program that ordinarily uses +a popup menu could use the minibuffer if popup menus are not supported. + + The optional argument @var{display} in these functions specifies which +display to ask the question about. It can be a display name, a frame +(which designates the display that frame is on), or @code{nil} (which +refers to the selected frame's display, @pxref{Input Focus}). + + @xref{Color Names}, @ref{Text Terminal Colors}, for other functions to +obtain information about displays. + +@defun display-popup-menus-p &optional display +This function returns @code{t} if popup menus are supported on +@var{display}, @code{nil} if not. Support for popup menus requires that +the mouse be available, since the user cannot choose menu items without +a mouse. +@end defun + +@defun display-graphic-p &optional display +This function returns @code{t} if @var{display} is a graphic display +capable of displaying several frames and several different fonts at +once. This is true for displays that use a window system such as X, and +false for text-only terminals. +@end defun + +@defun display-mouse-p &optional display +@cindex mouse, availability +This function returns @code{t} if @var{display} has a mouse available, +@code{nil} if not. +@end defun + +@defun display-color-p &optional display +@findex x-display-color-p +This function returns @code{t} if the screen is a color screen. +It used to be called @code{x-display-color-p}, and that name +is still supported as an alias. +@end defun + +@defun display-grayscale-p &optional display +This function returns @code{t} if the screen can display shades of gray. +(All color displays can do this.) +@end defun + +@defun display-supports-face-attributes-p attributes &optional display +@anchor{Display Face Attribute Testing} +This function returns non-@code{nil} if all the face attributes in +@var{attributes} are supported (@pxref{Face Attributes}). + +The definition of `supported' is somewhat heuristic, but basically +means that a face containing all the attributes in @var{attributes}, +when merged with the default face for display, can be represented in a +way that's + +@enumerate +@item +different in appearance than the default face, and + +@item +`close in spirit' to what the attributes specify, if not exact. +@end enumerate + +Point (2) implies that a @code{:weight black} attribute will be +satisfied by any display that can display bold, as will +@code{:foreground "yellow"} as long as some yellowish color can be +displayed, but @code{:slant italic} will @emph{not} be satisfied by +the tty display code's automatic substitution of a `dim' face for +italic. +@end defun + +@defun display-selections-p &optional display +This function returns @code{t} if @var{display} supports selections. +Windowed displays normally support selections, but they may also be +supported in some other cases. +@end defun + +@defun display-images-p &optional display +This function returns @code{t} if @var{display} can display images. +Windowed displays ought in principle to handle images, but some +systems lack the support for that. On a display that does not support +images, Emacs cannot display a tool bar. +@end defun + +@defun display-screens &optional display +This function returns the number of screens associated with the display. +@end defun + +@defun display-pixel-height &optional display +This function returns the height of the screen in pixels. +On a character terminal, it gives the height in characters. + +For graphical terminals, note that on ``multi-monitor'' setups this +refers to the pixel width for all physical monitors associated with +@var{display}. @xref{Multiple Displays}. +@end defun + +@defun display-pixel-width &optional display +This function returns the width of the screen in pixels. +On a character terminal, it gives the width in characters. + +For graphical terminals, note that on ``multi-monitor'' setups this +refers to the pixel width for all physical monitors associated with +@var{display}. @xref{Multiple Displays}. +@end defun + +@defun display-mm-height &optional display +This function returns the height of the screen in millimeters, +or @code{nil} if Emacs cannot get that information. +@end defun + +@defun display-mm-width &optional display +This function returns the width of the screen in millimeters, +or @code{nil} if Emacs cannot get that information. +@end defun + +@defvar display-mm-dimensions-alist +This variable allows the user to specify the dimensions of graphical +displays returned by @code{display-mm-height} and +@code{display-mm-width} in case the system provides incorrect values. +@end defvar + +@defun display-backing-store &optional display +This function returns the backing store capability of the display. +Backing store means recording the pixels of windows (and parts of +windows) that are not exposed, so that when exposed they can be +displayed very quickly. + +Values can be the symbols @code{always}, @code{when-mapped}, or +@code{not-useful}. The function can also return @code{nil} +when the question is inapplicable to a certain kind of display. +@end defun + +@defun display-save-under &optional display +This function returns non-@code{nil} if the display supports the +SaveUnder feature. That feature is used by pop-up windows +to save the pixels they obscure, so that they can pop down +quickly. +@end defun + +@defun display-planes &optional display +This function returns the number of planes the display supports. +This is typically the number of bits per pixel. +For a tty display, it is log to base two of the number of colors supported. +@end defun + +@defun display-visual-class &optional display +This function returns the visual class for the screen. The value is one +of the symbols @code{static-gray}, @code{gray-scale}, +@code{static-color}, @code{pseudo-color}, @code{true-color}, and +@code{direct-color}. +@end defun + +@defun display-color-cells &optional display +This function returns the number of color cells the screen supports. +@end defun + + These functions obtain additional information specifically +about X displays. + +@defun x-server-version &optional display +This function returns the list of version numbers of the X server +running the display. The value is a list of three integers: the major +and minor version numbers of the X protocol, and the +distributor-specific release number of the X server software itself. +@end defun + +@defun x-server-vendor &optional display +This function returns the ``vendor'' that provided the X server +software (as a string). Really this means whoever distributes the X +server. + +When the developers of X labelled software distributors as +``vendors,'' they showed their false assumption that no system could +ever be developed and distributed noncommercially. +@end defun + +@ignore +@defvar x-no-window-manager +This variable's value is @code{t} if no X window manager is in use. +@end defvar +@end ignore + +@ignore +@item +The functions @code{x-pixel-width} and @code{x-pixel-height} return the +width and height of an X Window frame, measured in pixels. +@end ignore + +@ignore + arch-tag: 94977df6-3dca-4730-b57b-c6329e9282ba +@end ignore diff --cc doc/misc/cc-mode.texi index 7c9a2ac1f1b,00000000000..80c9332996a mode 100644,000000..100644 --- a/doc/misc/cc-mode.texi +++ b/doc/misc/cc-mode.texi @@@ -1,6998 -1,0 +1,6998 @@@ +\input texinfo +@c Notes to self regarding line handling: +@c +@c Empty lines are often significant before @end directives; avoid them. +@c +@c Empty lines before and after @example directives are significant in +@c info output but not in TeX. Empty lines inside @example directives +@c are significant. + +@c Conventions for formatting examples: +@c o If the example contains empty lines then put the surrounding empty +@c lines inside the @example directives. Put them outside otherwise. +@c o Use @group inside the example only if it shows indentation where +@c the relation between lines inside is relevant. +@c o Format line number columns like this: +@c 1: foo +@c 2: bar +@c ^ one space +@c ^^ two columns, right alignment +@c o Check line lengths in TeX output; they can typically be no longer +@c than 70 chars, 60 if the paragraph is indented. + +@comment TBD: Document the finer details of statement anchoring? + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@comment %**start of header (This is for running Texinfo on a region) +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@comment How to make the various output formats: +@comment (Thanks to Robert Chassell for supplying this information.) +@comment Note that Texinfo 4.7 (or later) is needed. +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@ignore +In each of the following pairs of commands, the first generates a +version with cross references pointing to the GNU Emacs manuals, +the second with them pointing to the XEmacs manuals. + ## Info output + makeinfo cc-mode.texi + makeinfo -DXEMACS cc-mode.texi + + ## DVI output + ## You may need to set up the environment variable TEXINPUTS so + ## that tex can find the file texinfo.tex - See the tex + ## manpage. + texi2dvi cc-mode.texi + texi2dvi -t "@set XEMACS " cc-mode.texi + + ## HTML output. (The --no-split parameter is optional) + makeinfo --html --no-split cc-mode.texi + makeinfo --html --no-split -DXEMACS cc-mode.texi + + ## Plain text output + makeinfo --fill-column=70 --no-split --paragraph-indent=0 \ + --no-headers --output=cc-mode.txt cc-mode.texi + makeinfo --fill-column=70 --no-split --paragraph-indent=0 \ + --no-headers --output=cc-mode.txt -DXEMACS cc-mode.texi + + ## DocBook output + makeinfo --docbook --no-split --paragraph-indent=0 \ + cc-mode.texi + makeinfo --docbook --no-split --paragraph-indent=0 \ + -DXEMACS cc-mode.texi + + ## XML output + makeinfo --xml --no-split --paragraph-indent=0 \ + cc-mode.texi + makeinfo --xml --no-split --paragraph-indent=0 \ + -DXEMACS cc-mode.texi + + #### (You must be in the same directory as the viewed file.) + + ## View DVI output + xdvi cc-mode.dvi & + + ## View HTML output + mozilla cc-mode.html +@end ignore + +@comment No overfull hbox marks in the dvi file. +@finalout + +@setfilename ../../info/ccmode +@settitle CC Mode Manual +@footnotestyle end + +@c The following four macros generate the filenames and titles of the +@c main (X)Emacs manual and the Elisp/Lispref manual. Leave the +@c Texinfo variable `XEMACS' unset to generate a GNU Emacs version, set it +@c to generate an XEmacs version, e.g. with +@c "makeinfo -DXEMACS cc-mode.texi". +@ifset XEMACS +@macro emacsman +xemacs +@end macro +@macro emacsmantitle +XEmacs User's Manual +@end macro +@macro lispref +lispref +@end macro +@macro lispreftitle +XEmacs Lisp Reference Manual +@end macro +@end ifset + +@ifclear XEMACS +@macro emacsman +emacs +@end macro +@macro emacsmantitle +GNU Emacs Manual +@end macro +@macro lispref +elisp +@end macro +@macro lispreftitle +GNU Emacs Lisp Reference Manual +@end macro +@end ifclear + + +@macro ccmode +CC Mode +@end macro + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@comment @setchapternewpage odd !! we don't want blank pages !! +@comment %**end of header (This is for running Texinfo on a region) +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@comment +@comment Texinfo manual for CC Mode +@comment Generated from the original README file by Krishna Padmasola +@comment +@comment +@comment Authors: +@comment Barry A. Warsaw +@comment Martin Stjernholm +@comment Alan Mackenzie +@comment +@comment Maintained by Martin Stjernholm and Alan Mackenzie +@comment +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@comment Define an index for syntactic symbols. +@ifnottex @c In texi2dvi, the @defindex would create an empty cc-mode.ss + @c For Info, unlike tex, @syncodeindex needs a matching @defindex. +@defindex ss +@end ifnottex + +@comment Combine key, syntactic symbol and concept indices into one. +@syncodeindex ss cp +@syncodeindex ky cp + +@copying +This manual is for CC Mode in Emacs. + +Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. + +@quotation +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with the +Invariant Sections being ``The GNU Manifesto'', ``Distribution'' and +``GNU GENERAL PUBLIC LICENSE'', with the Front-Cover texts being ``A GNU +Manual'', and with the Back-Cover Texts as in (a) below. A copy of the +license is included in the section entitled ``GNU Free Documentation +License'' in the Emacs manual. + +(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify +this GNU Manual, like GNU software. Copies published by the Free +Software Foundation raise funds for GNU development.'' + +This document is part of a collection distributed under the GNU Free +Documentation License. If you want to distribute this document +separately from the collection, you can do so by adding a copy of the +license to the document, as described in section 6 of the license. +@end quotation +@end copying + +@comment Info directory entry for use by install-info. The indentation +@comment here is by request from the FSF folks. +@dircategory Emacs +@direntry +* CC Mode: (ccmode). Emacs mode for editing C, C++, Objective-C, + Java, Pike, AWK, and CORBA IDL code. +@end direntry + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@comment TeX title page +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@titlepage +@sp 10 + +@center @titlefont{CC Mode 5.31} +@sp 2 +@center @subtitlefont{A GNU Emacs mode for editing C and C-like languages} +@sp 2 +@center Barry A. Warsaw, Martin Stjernholm, Alan Mackenzie + +@page +@vskip 0pt plus 1filll +@insertcopying + +This manual was generated from cc-mode.texi, which can be downloaded +from +@url{http://cvs.savannah.gnu.org/viewcvs/emacs/emacs/doc/misc/cc-mode.texi}. +@end titlepage + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@comment The Top node contains the master menu for the Info file. +@comment This appears only in the Info file, not the printed manual. +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@node Top, Introduction, (dir), (dir) +@comment node-name, next, previous, up + +@ifinfo +@top @ccmode{} + +@ccmode{} is a GNU Emacs mode for editing files containing C, C++, +Objective-C, Java, CORBA IDL (and the variants PSDL and CIDL), Pike +and AWK code. It provides syntax-based indentation, font locking, and +has several handy commands and some minor modes to make the editing +easier. It does not provide tools to look up and navigate between +functions, classes etc - there are other packages for that. +@end ifinfo + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@menu +* Introduction:: +* Overview:: +* Getting Started:: +* Commands:: +* Font Locking:: +* Config Basics:: +* Custom Filling and Breaking:: +* Custom Auto-newlines:: +* Clean-ups:: +* Indentation Engine Basics:: +* Customizing Indentation:: +* Custom Macros:: +* Odds and Ends:: +* Sample .emacs File:: +* Performance Issues:: +* Limitations and Known Bugs:: +* FAQ:: +* Updating CC Mode:: +* Mailing Lists and Bug Reports:: +* GNU Free Documentation License:: +* Command and Function Index:: +* Variable Index:: +* Concept and Key Index:: + +@detailmenu + --- The Detailed Node Listing --- + +Commands + +* Indentation Commands:: +* Comment Commands:: +* Movement Commands:: +* Filling and Breaking:: +* Minor Modes:: +* Electric Keys:: +* Auto-newlines:: +* Hungry WS Deletion:: +* Subword Movement:: +* Other Commands:: + +Font Locking + +* Font Locking Preliminaries:: +* Faces:: +* Doc Comments:: +* AWK Mode Font Locking:: + +Configuration Basics + +* CC Hooks:: +* Style Variables:: +* Styles:: + +Styles + +* Built-in Styles:: +* Choosing a Style:: +* Adding Styles:: +* File Styles:: + +Customizing Auto-newlines + +* Hanging Braces:: +* Hanging Colons:: +* Hanging Semicolons and Commas:: + +Hanging Braces + +* Custom Braces:: + +Indentation Engine Basics + +* Syntactic Analysis:: +* Syntactic Symbols:: +* Indentation Calculation:: + +Syntactic Symbols + +* Function Symbols:: +* Class Symbols:: +* Conditional Construct Symbols:: +* Switch Statement Symbols:: +* Brace List Symbols:: +* External Scope Symbols:: +* Paren List Symbols:: +* Literal Symbols:: +* Multiline Macro Symbols:: +* Objective-C Method Symbols:: +* Anonymous Class Symbol:: +* Statement Block Symbols:: +* K&R Symbols:: + +Customizing Indentation + +* c-offsets-alist:: +* Interactive Customization:: +* Line-Up Functions:: +* Custom Line-Up:: +* Other Indentation:: + +Line-Up Functions + +* Brace/Paren Line-Up:: +* List Line-Up:: +* Operator Line-Up:: +* Comment Line-Up:: +* Misc Line-Up:: + +@end detailmenu +@end menu + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Introduction, Overview, Top, Top +@comment node-name, next, previous, up +@chapter Introduction +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@cindex BOCM +@cindex history +@cindex awk-mode.el +@cindex c-mode.el +@cindex c++-mode.el + +Welcome to @ccmode{}, a GNU Emacs mode for editing files containing C, +C++, Objective-C, Java, CORBA IDL (and the variants CORBA PSDL and +CIDL), Pike and AWK code. This incarnation of the mode is descended +from @file{c-mode.el} (also called ``Boring Old C Mode'' or BOCM +@t{:-)}, @file{c++-mode.el} version 2, which Barry Warsaw had been +maintaining since 1992, and @file{awk-mode.el}, a long neglected mode +in the (X)Emacs base. + +Late in 1997, Martin Stjernholm joined Barry on the @ccmode{} +Maintainers Team, and implemented the Pike support. In 2000 Martin +took over as the sole maintainer. In 2001 Alan Mackenzie joined the +team, implementing AWK support in version 5.30. @ccmode{} did not +originally contain the font lock support for its languages --- that +was added in version 5.30. + +This manual describes @ccmode{} +@comment The following line must appear on its own, so that the +version 5.31. +@comment Release.py script can update the version number automatically + +@ccmode{} supports the editing of K&R and ANSI C, C++, Objective-C, +Java, CORBA's Interface Definition Language, Pike@footnote{A C-like +scripting language with its roots in the LPC language used in some MUD +engines. See @uref{http://pike.ida.liu.se/}.} and AWK files. In this +way, you can easily set up consistent font locking and coding styles for +use in editing all of these languages, although AWK is not yet as +uniformly integrated as the other languages. + +@findex c-mode +@findex c++-mode +@findex objc-mode +@findex java-mode +@findex idl-mode +@findex pike-mode +@findex awk-mode +Note that the name of this package is ``@ccmode{}'', but there is no top +level @code{cc-mode} entry point. All of the variables, commands, and +functions in @ccmode{} are prefixed with @code{c-@var{thing}}, and +@code{c-mode}, @code{c++-mode}, @code{objc-mode}, @code{java-mode}, +@code{idl-mode}, @code{pike-mode}, and @code{awk-mode} entry points are +provided. This package is intended to be a replacement for +@file{c-mode.el}, @file{c++-mode.el} and @file{awk-mode.el}. + +A special word of thanks goes to Krishna Padmasola for his work in +converting the original @file{README} file to Texinfo format. I'd +also like to thank all the @ccmode{} victims who help enormously +during the early beta stages of @ccmode{}'s development. + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Overview, Getting Started, Introduction, Top +@comment node-name, next, previous, up@cindex organization of the manual +@chapter Overview of the Manual +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@noindent +The manual starts with several introductory chapters (including this +one). + +@noindent +The next chunk of the manual describes the day to day @emph{use} of +@ccmode{} (as contrasted with how to customize it). + +@itemize @bullet +@item +The chapter ``Commands'' describes in detail how to use (nearly) all +of @ccmode{}'s features. There are extensive cross-references from +here to the corresponding sections later in the manual which tell you +how to customize these features. + +@item +``Font Locking'' describes how ``syntax highlighting'' is applied to +your buffers. It is mainly background information and can be skipped +over at a first reading. +@end itemize + +@noindent +The next chunk of the manual describes how to @emph{customize} +@ccmode{}. Typically, an overview of a topic is given at the chapter +level, then the sections and subsections describe the material in +increasing detail. + +@itemize @bullet +@item +The chapter ``Configuration Basics'' tells you @emph{how} to write +customizations - whether in hooks, in styles, in both, or in neither, +depending on your needs. It describes the @ccmode{} style system and +lists the standard styles that @ccmode{} supplies. + +@item +The next few chapters describe in detail how to customize the various +features of @ccmode{}. + +@item +Finally, there is a sample @file{.emacs} fragment, which might help you +in creating your own customization. +@end itemize + +@noindent +The manual ends with ``this and that'', things that don't fit cleanly +into any of the previous chunks. + +@itemize @bullet +@item +Two chapters discuss the performance of @ccmode{} and known +bugs/limitations. + +@item +The FAQ contains a list of common problems and questions. + +@item +The next two chapters tell you how to get in touch with the @ccmode{} +project - whether for updating @ccmode{} or submitting bug reports. +@end itemize + +@noindent +Finally, there are the customary indices. + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Getting Started, Commands, Overview, Top +@comment node-name, next, previous, up +@chapter Getting Started +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +If you got this version of @ccmode{} with Emacs or XEmacs, it should +work just fine right out of the box. Note however that you might not +have the latest @ccmode{} release and might want to upgrade your copy +(see below). + - You should probably start by skimming through the entire chapter - @ref{Commands} to get an overview of @ccmode{}'s capabilities. ++You should probably start by skimming through the entire Commands chapter ++(@pxref{Commands}) to get an overview of @ccmode{}'s capabilities. + +After trying out some commands, you may dislike some aspects of +@ccmode{}'s default configuration. Here is an outline of how to +change some of the settings that newcomers to @ccmode{} most often +want to change: + +@table @asis +@item c-basic-offset +This Lisp variable holds an integer, the number of columns @ccmode{} +indents nested code. To set this value to 6, customize +@code{c-basic-offset} or put this into your @file{.emacs}: + +@example +(setq c-basic-offset 6) +@end example + +@item The (indentation) style +The basic ``shape'' of indentation created by @ccmode{}---by default, +this is @code{gnu} style (except for Java and AWK buffers). A list of +the available styles and their descriptions can be found in +@ref{Built-in Styles}. A complete specification of the @ccmode{} +style system, including how to create your own style, can be found in +the chapter @ref{Styles}. To set your style to @code{linux}, either +customize @code{c-default-style} or put this into your @file{.emacs}: + +@example +(setq c-default-style '((java-mode . "java") + (awk-mode . "awk") + (other . "linux"))) +@end example + +@item Electric Indentation +Normally, when you type ``punctuation'' characters such as @samp{;} or +@samp{@{}, @ccmode{} instantly reindents the current line. This can +be disconcerting until you get used to it. To disable @dfn{electric +indentation} in the current buffer, type @kbd{C-c C-l}. Type the same +thing to enable it again. To have electric indentation disabled by +default, put the following into your @file{.emacs} file@footnote{There +is no ``easy customization'' facility for making this change.}: + +@example +(setq-default c-electric-flag nil) +@end example + +@noindent +Details of this and other similar ``Minor Modes'' appear in the +section @ref{Minor Modes}. + +@item Making the @key{RET} key indent the new line +The standard Emacs binding for @key{RET} just adds a new line. If you +want it to reindent the new line as well, rebind the key. Note that +the action of rebinding would fail if the pertinent keymap didn't yet +exist---we thus need to delay the action until after @ccmode{} has +been loaded. Put the following code into your @file{.emacs}: + +@example +(defun my-make-CR-do-indent () + (define-key c-mode-base-map "\C-m" 'c-context-line-break)) +(add-hook 'c-initialization-hook 'my-make-CR-do-indent) +@end example + +@noindent +This example demonstrates the use of a very powerful @ccmode{} (and +Emacs) facility, the hook. The use of @ccmode{}'s hooks is described +in @ref{CC Hooks}. +@end table + +All these settings should occur in your @file{.emacs} @emph{before} +any @ccmode{} buffers get loaded---in particular, before any call of +@code{desktop-read}. + +As you get to know the mode better, you may want to make more +ambitious changes to your configuration. For this, you should start +reading the chapter @ref{Config Basics}. + +If you are upgrading an existing @ccmode{} installation, please see +the @file{README} file for installation details. In particular, if +you are going to be editing AWK files, @file{README} describes how to +configure your (X)Emacs so that @ccmode{} will supersede the obsolete +@code{awk-mode.el} which might have been supplied with your (X)Emacs. +@ccmode{} might not work with older versions of Emacs or XEmacs. See +the @ccmode{} release notes at @uref{http://cc-mode.sourceforge.net} +for the latest information on Emacs version and package compatibility +(@pxref{Updating CC Mode}). + +@deffn Command c-version +@findex version (c-) +You can find out what version of @ccmode{} you are using by visiting a C +file and entering @kbd{M-x c-version RET}. You should see this message in +the echo area: + +@example +Using CC Mode version 5.XX +@end example + +@noindent +where @samp{XX} is the minor release number. +@end deffn + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Commands, Font Locking, Getting Started, Top +@comment node-name, next, previous, up +@chapter Commands +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +This chapter specifies all of CC Mode's commands, and thus contains +nearly everything you need to know to @emph{use} @ccmode{} (as +contrasted with configuring it). @dfn{Commands} here means both +control key sequences and @dfn{electric keys}, these being characters +such as @samp{;} which, as well as inserting themselves into the +buffer, also do other things. + +You might well want to review +@ifset XEMACS +@ref{Lists,,,@emacsman{}, @emacsmantitle{}}, +@end ifset +@ifclear XEMACS +@ref{Moving by Parens,,,@emacsman{}, @emacsmantitle{}}, +@end ifclear +which describes commands for moving around brace and parenthesis +structures. + + +@menu +* Indentation Commands:: +* Comment Commands:: +* Movement Commands:: +* Filling and Breaking:: +* Minor Modes:: +* Electric Keys:: +* Auto-newlines:: +* Hungry WS Deletion:: +* Subword Movement:: +* Other Commands:: +@end menu + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Indentation Commands, Comment Commands, Commands, Commands +@comment node-name, next, previous,up +@section Indentation Commands +@cindex indentation +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +The following commands reindent C constructs. Note that when you +change your coding style, either interactively or through some other +means, your file does @emph{not} automatically get reindented. You +will need to execute one of the following commands to see the effects +of your changes. + +@cindex GNU indent program +Also, variables like @code{c-hanging-*} and @code{c-cleanup-list} +(@pxref{Custom Auto-newlines}) only affect how on-the-fly code is +formatted. Changing the ``hanginess'' of a brace and then +reindenting, will not move the brace to a different line. For this, +you're better off getting an external program like GNU @code{indent}, +which will rearrange brace location, amongst other things. + +Preprocessor directives are handled as syntactic whitespace from other +code, i.e. they can be interspersed anywhere without affecting the +indentation of the surrounding code, just like comments. + +The code inside macro definitions is, by default, still analyzed +syntactically so that you get relative indentation there just as you'd +get if the same code was outside a macro. However, since there is no +hint about the syntactic context, i.e. whether the macro expands to an +expression, to some statements, or perhaps to whole functions, the +syntactic recognition can be wrong. @ccmode{} manages to figure it +out correctly most of the time, though. + +Reindenting large sections of code can take a long time. When +@ccmode{} reindents a region of code, it is essentially equivalent to +hitting @key{TAB} on every line of the region. + +These commands indent code: + +@table @asis +@item @kbd{@key{TAB}} (@code{c-indent-command}) +@kindex TAB +@findex c-indent-command +@findex indent-command (c-) +This command indents the current line. That is all you need to know +about it for normal use. + +@code{c-indent-command} does different things, depending on the +setting of @code{c-syntactic-indentation} (@pxref{Indentation Engine +Basics}): + +@itemize @bullet +@item +When it's non-@code{nil} (which it normally is), the command indents +the line according to its syntactic context. With a prefix argument +(@kbd{C-u @key{TAB}}), it will re-indent the entire +expression@footnote{this is only useful for a line starting with a +comment opener or an opening brace, parenthesis, or string quote.} +that begins at the line's left margin. + +@item +When it's @code{nil}, the command indents the line by an extra +@code{c-basic-offset} columns. A prefix argument acts as a +multiplier. A bare prefix (@kbd{C-u @key{TAB}}) is equivalent to -1, +removing @code{c-basic-offset} columns from the indentation. +@end itemize + +The precise behavior is modified by several variables: With +@code{c-tab-always-indent}, you can make @key{TAB} insert whitespace +in some circumstances---@code{c-insert-tab-function} then defines +precisely what sort of ``whitespace'' this will be. Set the standard +Emacs variable @code{indent-tabs-mode} to @code{t} if you want real +@samp{tab} characters to be used in the indentation, to @code{nil} if +you want only spaces. @xref{Just Spaces,,, @emacsman{}, +@emacsmantitle{}}. + +@defopt c-tab-always-indent +@vindex tab-always-indent (c-) +@cindex literal +This variable modifies how @key{TAB} operates. +@itemize @bullet +@item +When it is @code{t} (the default), @key{TAB} simply indents the +current line. +@item +When it is @code{nil}, @key{TAB} (re)indents the line only if point is +to the left of the first non-whitespace character on the line. +Otherwise it inserts some whitespace (a tab or an equivalent number of +spaces - see below) at point. +@item +With some other value, the line is reindented. Additionally, if point +is within a string or comment, some whitespace is inserted. +@end itemize +@end defopt + +@defopt c-insert-tab-function +@vindex insert-tab-function (c-) +@findex tab-to-tab-stop +When ``some whitespace'' is inserted as described above, what actually +happens is that the function stored in @code{c-insert-tab-function} is +called. Normally, this is @code{insert-tab}, which inserts a real tab +character or the equivalent number of spaces (depending on +@code{indent-tabs-mode}). Some people, however, set +@code{c-insert-tab-function} to @code{tab-to-tab-stop} so as to get +hard tab stops when indenting. +@end defopt +@end table + +@noindent +The kind of indentation the next five commands do depends on the +setting of @code{c-syntactic-indentation} (@pxref{Indentation Engine +Basics}): +@itemize @bullet +@item +when it is non-@code{nil} (the default), the commands indent lines +according to their syntactic context; +@item +when it is @code{nil}, they just indent each line the same amount as +the previous non-blank line. The commands that indent a region aren't +very useful in this case. +@end itemize + +@table @asis +@item @kbd{C-j} (@code{newline-and-indent}) +@kindex C-j +@findex newline-and-indent +Inserts a newline and indents the new blank line, ready to start +typing. This is a standard (X)Emacs command. + +@item @kbd{C-M-q} (@code{c-indent-exp}) +@kindex C-M-q +@findex c-indent-exp +@findex indent-exp (c-) +Indents an entire balanced brace or parenthesis expression. Note that +point must be on the opening brace or parenthesis of the expression +you want to indent. + +@item @kbd{C-c C-q} (@code{c-indent-defun}) +@kindex C-c C-q +@findex c-indent-defun +@findex indent-defun (c-) +Indents the entire top-level function, class or macro definition +encompassing point. It leaves point unchanged. This function can't be +used to reindent a nested brace construct, such as a nested class or +function, or a Java method. The top-level construct being reindented +must be complete, i.e. it must have both a beginning brace and an ending +brace. + +@item @kbd{C-M-\} (@code{indent-region}) +@kindex C-M-\ +@findex indent-region +Indents an arbitrary region of code. This is a standard Emacs command, +tailored for C code in a @ccmode{} buffer. Note, of course, that point +and mark must delineate the region you want to indent. + +@item @kbd{C-M-h} (@code{c-mark-function}) +@kindex C-M-h +@findex c-mark-function +@findex mark-function (c-) +While not strictly an indentation command, this is useful for marking +the current top-level function or class definition as the current +region. As with @code{c-indent-defun}, this command operates on +top-level constructs, and can't be used to mark say, a Java method. +@end table + +These variables are also useful when indenting code: + +@defopt indent-tabs-mode +This is a standard Emacs variable that controls how line indentation +is composed. When it's non-@code{nil}, tabs can be used in a line's +indentation, otherwise only spaces are used. +@end defopt + +@defopt c-progress-interval +@vindex progress-interval (c-) +When indenting large regions of code, this variable controls how often a +progress message is displayed. Set this variable to @code{nil} to +inhibit the progress messages, or set it to an integer which is how +often (in seconds) progress messages are to be displayed. +@end defopt + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Comment Commands, Movement Commands, Indentation Commands, Commands +@comment node-name, next, previous, up +@section Comment Commands +@cindex comments (insertion of) +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@table @asis +@item @kbd{C-c C-c} (@code{comment-region}) +@kindex C-c C-c +@findex comment-region +This command comments out the lines that start in the region. With a +negative argument, it does the opposite - it deletes the comment +delimiters from these lines. @xref{Multi-Line Comments,,, emacs, GNU +Emacs Manual}, for fuller details. @code{comment-region} isn't +actually part of @ccmode{} - it is given a @ccmode{} binding for +convenience. + +@item @kbd{M-;} (@code{comment-dwim} or @code{indent-for-comment} @footnote{The name of this command varies between (X)Emacs versions.}) +@kindex M-; +@findex comment-dwim +@findex indent-for-comment +Insert a comment at the end of the current line, if none is there +already. Then reindent the comment according to @code{comment-column} +@ifclear XEMACS +(@pxref{Options for Comments,,, emacs, GNU Emacs Manual}) +@end ifclear +@ifset XEMACS +(@pxref{Comments,,, xemacs, XEmacs User's Manual}) +@end ifset +and the variables below. Finally, position the point after the +comment starter. @kbd{C-u M-;} kills any comment on the current line, +together with any whitespace before it. This is a standard Emacs +command, but @ccmode{} enhances it a bit with two variables: + +@defopt c-indent-comment-alist +@vindex indent-comment-alist (c-) +@vindex comment-column +This style variable allows you to vary the column that @kbd{M-;} puts +the comment at, depending on what sort of code is on the line, and +possibly the indentation of any similar comment on the preceding line. +It is an association list that maps different types of lines to +actions describing how they should be handled. If a certain line type +isn't present on the list then the line is indented to the column +specified by @code{comment-column}. + +See the documentation string for a full description of this +variable (use @kbd{C-h v c-indent-comment-alist}). +@end defopt + +@defopt c-indent-comments-syntactically-p +@vindex indent-comments-syntactically-p (c-) +Normally, when this style variable is @code{nil}, @kbd{M-;} will +indent comment-only lines according to @code{c-indent-comment-alist}, +just as it does with lines where other code precede the comments. +However, if you want it to act just like @key{TAB} for comment-only +lines you can get that by setting +@code{c-indent-comments-syntactically-p} to non-@code{nil}. + +If @code{c-indent-comments-syntactically-p} is non-@code{nil} then +@code{c-indent-comment-alist} won't be consulted at all for comment-only +lines. +@end defopt +@end table + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Movement Commands, Filling and Breaking, Comment Commands, Commands +@comment node-name, next, previous, up +@section Movement Commands +@cindex movement +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@ccmode{} contains some useful commands for moving around in C code. + +@table @asis +@item @kbd{C-M-a} (@code{c-beginning-of-defun}) +@itemx @kbd{C-M-e} (@code{c-end-of-defun}) +@findex c-beginning-of-defun +@findex c-end-of-defun + +Move to the beginning or end of the current or next function. Other +constructs (such as a structs or classes) which have a brace block +also count as ``functions'' here. To move over several functions, you +can give these commands a repeat count. + +The start of a function is at its header. The end of the function is +after its closing brace, or after the semicolon of a construct (such +as a @code{struct}) which doesn't end at the brace. These two +commands try to leave point at the beginning of a line near the actual +start or end of the function. This occasionally causes point not to +move at all. + +These functions are analogous to the Emacs built-in commands +@code{beginning-of-defun} and @code{end-of-defun}, except they +eliminate the constraint that the top-level opening brace of the defun +must be in column zero. See @ref{Defuns,,,@emacsman{}, +@emacsmantitle{}}, for more information. + +@item @kbd{C-M-a} (AWK Mode) (@code{c-awk-beginning-of-defun}) +@itemx @kbd{C-M-e} (AWK Mode) (@code{c-awk-end-of-defun}) +@kindex C-M-a (AWK Mode) +@kindex C-M-e (AWK Mode) +@findex c-awk-beginning-of-defun +@findex awk-beginning-of-defun (c-) +@findex c-awk-end-of-defun +@findex awk-end-of-defun (c-) +Move to the beginning or end of the current or next AWK defun. These +commands can take prefix-arguments, their functionality being entirely +equivalent to @code{beginning-of-defun} and @code{end-of-defun}. + +AWK Mode @dfn{defuns} are either pattern/action pairs (either of which +might be implicit) or user defined functions. Having the @samp{@{} and +@samp{@}} (if there are any) in column zero, as is suggested for some +modes, is neither necessary nor helpful in AWK mode. + +@item @kbd{M-a} (@code{c-beginning-of-statement}) +@itemx @kbd{M-e} (@code{c-end-of-statement}) +@kindex M-a +@kindex M-e +@findex c-beginning-of-statement +@findex c-end-of-statement +@findex beginning-of-statement (c-) +@findex end-of-statement (c-) +Move to the beginning or end of the innermost C statement. If point +is already there, move to the next beginning or end of a statement, +even if that means moving into a block. (Use @kbd{C-M-b} or +@kbd{C-M-f} to move over a balanced block.) A prefix argument @var{n} +means move over @var{n} statements. + +If point is within or next to a comment or a string which spans more +than one line, these commands move by sentences instead of statements. + +When called from a program, these functions take three optional +arguments: the repetition count, a buffer position limit which is the +farthest back to search for the syntactic context, and a flag saying +whether to do sentence motion in or near comments and multiline +strings. + +@item @kbd{C-c C-u} (@code{c-up-conditional}) +@kindex C-c C-u +@findex c-up-conditional +@findex up-conditional (c-) +Move back to the containing preprocessor conditional, leaving the mark +behind. A prefix argument acts as a repeat count. With a negative +argument, move forward to the end of the containing preprocessor +conditional. + +@samp{#elif} is treated like @samp{#else} followed by @samp{#if}, so the +function stops at them when going backward, but not when going +forward. + +This key sequence is not bound in AWK Mode, which doesn't have +preprocessor statements. + +@item @kbd{M-x c-up-conditional-with-else} +@findex c-up-conditional-with-else +@findex up-conditional-with-else (c-) +A variety of @code{c-up-conditional} that also stops at @samp{#else} +lines. Normally those lines are ignored. + +@item @kbd{M-x c-down-conditional} +@findex c-down-conditional +@findex down-conditional (c-) +Move forward into the next nested preprocessor conditional, leaving +the mark behind. A prefix argument acts as a repeat count. With a +negative argument, move backward into the previous nested preprocessor +conditional. + +@samp{#elif} is treated like @samp{#else} followed by @samp{#if}, so the +function stops at them when going forward, but not when going backward. + +@item @kbd{M-x c-down-conditional-with-else} +@findex c-down-conditional-with-else +@findex down-conditional-with-else (c-) +A variety of @code{c-down-conditional} that also stops at @samp{#else} +lines. Normally those lines are ignored. + +@item @kbd{C-c C-p} (@code{c-backward-conditional}) +@itemx @kbd{C-c C-n} (@code{c-forward-conditional}) +@kindex C-c C-p +@kindex C-c C-n +@findex c-backward-conditional +@findex c-forward-conditional +@findex backward-conditional (c-) +@findex forward-conditional (c-) +Move backward or forward across a preprocessor conditional, leaving +the mark behind. A prefix argument acts as a repeat count. With a +negative argument, move in the opposite direction. + +These key sequences are not bound in AWK Mode, which doesn't have +preprocessor statements. + +@item @kbd{M-x c-backward-into-nomenclature} +@itemx @kbd{M-x c-forward-into-nomenclature} +@findex c-backward-into-nomenclature +@findex c-forward-into-nomenclature +@findex backward-into-nomenclature (c-) +@findex forward-into-nomenclature (c-) +A popular programming style, especially for object-oriented languages +such as C++ is to write symbols in a mixed case format, where the +first letter of each word is capitalized, and not separated by +underscores. E.g. @samp{SymbolsWithMixedCaseAndNoUnderlines}. + +These commands move backward or forward to the beginning of the next +capitalized word. With prefix argument @var{n}, move @var{n} times. +If @var{n} is negative, move in the opposite direction. + +Note that these two commands have been superseded by +@code{c-subword-mode}, which you should use instead. @xref{Subword +Movement}. They might be removed from a future release of @ccmode{}. +@end table + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Filling and Breaking, Minor Modes, Movement Commands, Commands +@comment node-name, next, previous, up +@section Filling and Line Breaking Commands +@cindex text filling +@cindex line breaking +@cindex comment handling +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +Since there's a lot of normal text in comments and string literals, +@ccmode{} provides features to edit these like in text mode. The goal +is to do it seamlessly, i.e. you can use auto fill mode, sentence and +paragraph movement, paragraph filling, adaptive filling etc. wherever +there's a piece of normal text without having to think much about it. +@ccmode{} keeps the indentation, fixes suitable comment line prefixes, +and so on. + +You can configure the exact way comments get filled and broken, and +where Emacs does auto-filling (see @pxref{Custom Filling and +Breaking}). Typically, the style system (@pxref{Styles}) will have +set this up for you, so you probably won't have to bother. + +@findex auto-fill-mode +@cindex Auto Fill mode +@cindex paragraph filling +Line breaks are by default handled (almost) the same regardless of +whether they are made by auto fill mode (@pxref{Auto Fill,,, +@emacsman{}, @emacsmantitle{}}), by paragraph filling (e.g. with +@kbd{M-q}), or explicitly with @kbd{M-j} or similar methods. In +string literals, the new line gets the same indentation as the +previous nonempty line.@footnote{You can change this default by +setting the @code{string} syntactic symbol (@pxref{Syntactic Symbols} +and @pxref{Customizing Indentation})}. + +@table @asis +@item @kbd{M-q} (@code{c-fill-paragraph}) +@kindex M-q +@findex c-fill-paragraph +@findex fill-paragraph (c-) +@cindex Javadoc markup +@cindex Pike autodoc markup +This command fills multiline string literals and both block +and line style comments. In Java buffers, the Javadoc markup words +are recognized as paragraph starters. The line oriented Pike autodoc +markup words are recognized in the same way in Pike mode. + +The formatting of the starters (@code{/*}) and enders (@code{*/}) of +block comments are kept as they were before the filling. I.e., if +either the starter or ender were on a line of its own, then it stays +on its own line; conversely, if the delimiter has comment text on its +line, it keeps at least one word of that text with it on the line. + +This command is the replacement for @code{fill-paragraph} in @ccmode{} +buffers. + +@item @kbd{M-j} (@code{c-indent-new-comment-line}) +@kindex M-j +@findex c-indent-new-comment-line +@findex indent-new-comment-line (c-) +This breaks the current line at point and indents the new line. If +point was in a comment, the new line gets the proper comment line +prefix. If point was inside a macro, a backslash is inserted before +the line break. It is the replacement for +@code{indent-new-comment-line}. + +@item @kbd{M-x c-context-line-break} +@findex c-context-line-break +@findex context-line-break (c-) +Insert a line break suitable to the context: If the point is inside a +comment, the new line gets the suitable indentation and comment line +prefix like @code{c-indent-new-comment-line}. In normal code it's +indented like @code{newline-and-indent} would do. In macros it acts +like @code{newline-and-indent} but additionally inserts and optionally +aligns the line ending backslash so that the macro remains unbroken. +@xref{Custom Macros}, for details about the backslash alignment. In a +string, a backslash is inserted only if the string is within a +macro@footnote{In GCC, unescaped line breaks within strings are +valid.}. + +This function is not bound to a key by default, but it's intended to be +used on the @kbd{RET} key. If you like the behavior of +@code{newline-and-indent} on @kbd{RET}, you should consider switching to +this function. @xref{Sample .emacs File}. + +@item @kbd{M-x c-context-open-line} +@findex c-context-open-line +@findex context-open-line (c-) +This is to @kbd{C-o} (@kbd{M-x open-line}) as +@code{c-context-line-break} is to @kbd{RET}. I.e. it works just like +@code{c-context-line-break} but leaves the point before the inserted +line break. +@end table + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Minor Modes, Electric Keys, Filling and Breaking, Commands +@comment node-name, next, previous, up +@section Minor Modes +@cindex Minor Modes +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@ccmode{} contains several minor-mode-like features that you might +find useful while writing new code or editing old code: + +@table @asis +@item electric mode +When this is enabled, certain visible characters cause reformatting as +they are typed. This is normally helpful, but can be a nuisance when +editing chaotically formatted code. It can also be disconcerting, +especially for users who are new to @ccmode{}. +@item auto-newline mode +This automatically inserts newlines where you'd probably want to type +them yourself, e.g. after typing @samp{@}}s. Its action is suppressed +when electric mode is disabled. +@item hungry-delete mode +This lets you delete a contiguous block of whitespace with a single +key - for example, the newline and indentation just inserted by +auto-newline when you want to back up and write a comment after the +last statement. +@item subword mode +This mode makes basic word movement commands like @kbd{M-f} +(@code{forward-word}) and @kbd{M-b} (@code{backward-word}) treat the +parts of sillycapsed symbols as different words. +E.g. @samp{NSGraphicsContext} is treated as three words @samp{NS}, +@samp{Graphics}, and @samp{Context}. +@item syntactic-indentation mode +When this is enabled (which it normally is), indentation commands such +as @kbd{C-j} indent lines of code according to their syntactic +structure. Otherwise, a line is simply indented to the same level as +the previous one and @kbd{@key{TAB}} adjusts the indentation in steps +of `c-basic-offset'. +@end table + +Full details on how these minor modes work are at @ref{Electric Keys}, +@ref{Auto-newlines}, @ref{Hungry WS Deletion}, @ref{Subword Movement}, +and @ref{Indentation Engine Basics}. + +You can toggle each of these minor modes on and off, and you can +configure @ccmode{} so that it starts up with your favourite +combination of them (@pxref{Sample .emacs File}). By default, when +you initialize a buffer, electric mode and syntactic-indentation mode +are enabled but the other two modes are disabled. + +@ccmode{} displays the current state of the first four of these minor +modes on the modeline by appending letters to the major mode's name, +one letter for each enabled minor mode - @samp{l} for electric mode, +@samp{a} for auto-newline mode, @samp{h} for hungry delete mode, and +@samp{w} for subword mode. If all these modes were enabled, you'd see +@samp{C/lahw}@footnote{The @samp{C} would be replaced with the name of +the language in question for the other languages @ccmode{} supports.}. + +Here are the commands to toggle these modes: + +@table @asis +@item @kbd{C-c C-l} (@code{c-toggle-electric-state}) +@kindex C-c C-l +@findex c-toggle-electric-state +@findex toggle-electric-state (c-) +Toggle electric minor mode. When the command turns the mode off, it +also suppresses auto-newline mode. + +@item @kbd{C-c C-a} (@code{c-toggle-auto-newline}) +@kindex C-c C-a +@findex c-toggle-auto-newline +@findex toggle-auto-newline (c-) +Toggle auto-newline minor mode. When the command turns the mode on, +it also enables electric minor mode. + +@item @kbd{M-x c-toggle-hungry-state}@footnote{Prior to @ccmode{} 5.31, this command was bound to @kbd{C-c C-d}.} +@findex c-toggle-hungry-state +@findex toggle-hungry-state (c-) +Toggle hungry-delete minor mode. + +@item @kbd{M-x c-toggle-auto-hungry-state}@footnote{Prior to @ccmode{} 5.31, this command was bound to @kbd{C-c C-t}.} +@findex c-toggle-auto-hungry-state +@findex toggle-auto-hungry-state (c-) +Toggle both auto-newline and hungry delete minor modes. + +@item @kbd{C-c C-w} (@code{M-x c-subword-mode}) +@kindex C-c C-w +@findex c-subword-mode +@findex subword-mode (c-) +Toggle subword mode. + +@item @kbd{M-x c-toggle-syntactic-indentation} +@findex c-toggle-syntactic-indentation +@findex toggle-syntactic-indentation (c-) +Toggle syntactic-indentation mode. +@end table + +Common to all the toggle functions above is that if they are called +programmatically, they take an optional numerical argument. A +positive value will turn on the minor mode (or both of them in the +case of @code{c-toggle-auto-hungry-state}) and a negative value will +turn it (or them) off. + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Electric Keys, Auto-newlines, Minor Modes, Commands +@comment node-name, next, previous, up +@section Electric Keys and Keywords +@cindex electric characters +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +Most punctuation keys provide @dfn{electric} behavior - as well as +inserting themselves they perform some other action, such as +reindenting the line. This reindentation saves you from having to +reindent a line manually after typing, say, a @samp{@}}. A few +keywords, such as @code{else}, also trigger electric action. + +You can inhibit the electric behavior described here by disabling +electric minor mode (@pxref{Minor Modes}). + +Common to all these keys is that they only behave electrically when +used in normal code (as contrasted with getting typed in a string +literal or comment). Those which cause re-indentation do so only when +@code{c-syntactic-indentation} has a non-@code{nil} value (which it +does by default). + +These keys and keywords are: +@c ACM, 2004/8/24: c-electric-pound doesn't check c-s-i: this is more +@c like a bug in the code than a bug in this document. It'll get +@c fixed in the code sometime. + +@table @kbd +@item # +@kindex # +@findex c-electric-pound +@findex electric-pound (c-) +@vindex c-electric-pound-behavior +@vindex electric-pound-behavior (c-) +Pound (bound to @code{c-electric-pound}) is electric when typed as the +first non-whitespace character on a line and not within a macro +definition. In this case, the variable @code{c-electric-pound-behavior} +is consulted for the electric behavior. This variable takes a list +value, although the only element currently defined is @code{alignleft}, +which tells this command to force the @samp{#} character into column +zero. This is useful for entering preprocessor macro definitions. + +Pound is not electric in AWK buffers, where @samp{#} starts a comment, +and is bound to @code{self-insert-command} like any typical printable +character. +@c ACM, 2004/8/24: Change this (and the code) to do AWK comment +@c reindentation. + +@item * +@kindex * +@itemx / +@kindex / +@findex c-electric-star +@findex electric-star (c-) +@findex c-electric-slash +@findex electric-slash (c-) +A star (bound to @code{c-electric-star}) or a slash +(@code{c-electric-slash}) causes reindentation when you type it as the +second component of a C style block comment opener (@samp{/*}) or a +C++ line comment opener (@samp{//}) respectively, but only if the +comment opener is the first thing on the line (i.e. there's only +whitespace before it). + +Additionally, you can configure @ccmode{} so that typing a slash at +the start of a line within a block comment will terminate the +comment. You don't need to have electric minor mode enabled to get +this behavior. @xref{Clean-ups}. + +In AWK mode, @samp{*} and @samp{/} do not delimit comments and are not +electric. + +@item < +@kindex < +@itemx > +@kindex > +@findex c-electric-lt-gt +@findex electric-lt-gt (c-) +A less-than or greater-than sign (bound to @code{c-electric-lt-gt}) is +electric in two circumstances: when it is an angle bracket in a C++ +@samp{template} declaration (and similar constructs in other +languages) and when it is the second of two @kbd{<} or @kbd{>} +characters in a C++ style stream operator. In either case, the line +is reindented. Angle brackets in C @samp{#include} directives are not +electric. + +@item ( +@kindex ( +@itemx ) +@kindex ) +@findex c-electric-paren +@findex electric-paren (c-) +The normal parenthesis characters @samp{(} and @samp{)} (bound to +@code{c-electric-paren}) reindent the current line. This is useful +for getting the closing parenthesis of an argument list aligned +automatically. + +You can also configure @ccmode{} to insert a space automatically +between a function name and the @samp{(} you've just typed, and to +remove it automatically after typing @samp{)}, should the argument +list be empty. You don't need to have electric minor mode enabled to +get these actions. @xref{Clean-ups}. + +@item @{ +@kindex @{ +@itemx @} +@kindex @} +@findex c-electric-brace +@findex electric-brace (c-) +Typing a brace (bound to @code{c-electric-brace}) reindents the +current line. Also, one or more newlines might be inserted if +auto-newline minor mode is enabled. @xref{Auto-newlines}. +Additionally, you can configure @ccmode{} to compact excess whitespace +inserted by auto-newline mode in certain circumstances. +@xref{Clean-ups}. + +@item : +@kindex : +@findex c-electric-colon +@findex electric-colon (c-) +Typing a colon (bound to @code{c-electric-colon}) reindents the +current line. Additionally, one or more newlines might be inserted if +auto-newline minor mode is enabled. @xref{Auto-newlines}. If you +type a second colon immediately after such an auto-newline, by default +the whitespace between the two colons is removed, leaving a C++ scope +operator. @xref{Clean-ups}. + +If you prefer, you can insert @samp{::} in a single operation, +avoiding all these spurious reindentations, newlines, and clean-ups. +@xref{Other Commands}. + +@item ; +@kindex ; +@itemx , +@kindex , +@findex c-electric-semi&comma +@findex electric-semi&comma (c-) +Typing a semicolon or comma (bound to @code{c-electric-semi&comma}) +reindents the current line. Also, a newline might be inserted if +auto-newline minor mode is enabled. @xref{Auto-newlines}. +Additionally, you can configure @ccmode{} so that when auto-newline +has inserted whitespace after a @samp{@}}, it will be removed again +when you type a semicolon or comma just after it. @xref{Clean-ups}. + +@end table + +@deffn Command c-electric-continued-statement +@findex electric-continued-statement (c-) + +Certain keywords are electric, causing reindentation when they are +preceded only by whitespace on the line. The keywords are those that +continue an earlier statement instead of starting a new one: +@code{else}, @code{while}, @code{catch} (only in C++ and Java) and +@code{finally} (only in Java). + +An example: + +@example +@group +for (i = 0; i < 17; i++) + if (a[i]) + res += a[i]->offset; +else +@end group +@end example + +Here, the @code{else} should be indented like the preceding @code{if}, +since it continues that statement. @ccmode{} will automatically +reindent it after the @code{else} has been typed in full, since only +then is it possible to decide whether it's a new statement or a +continuation of the preceding @code{if}. + +@vindex abbrev-mode +@findex abbrev-mode +@cindex Abbrev mode +@ccmode{} uses Abbrev mode (@pxref{Abbrevs,,, @emacsman{}, @emacsmantitle{}}) +to accomplish this. It's therefore turned on by default in all language +modes except IDL mode, since CORBA IDL doesn't have any statements. +@end deffn + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Auto-newlines, Hungry WS Deletion, Electric Keys, Commands +@comment node-name, next, previous, up +@section Auto-newline Insertion +@cindex auto-newline +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +When you have @dfn{Auto-newline minor mode} enabled (@pxref{Minor +Modes}), @ccmode{} inserts newlines for you automatically (in certain +syntactic contexts) when you type a left or right brace, a colon, a +semicolon, or a comma. Sometimes a newline appears before the +character you type, sometimes after it, sometimes both. + +Auto-newline only triggers when the following conditions hold: + +@itemize @bullet +@item +Auto-newline minor mode is enabled, as evidenced by the indicator +@samp{a} after the mode name on the modeline (e.g. @samp{C/a} or +@samp{C/la}). + +@item +The character was typed at the end of a line, or with only whitespace +after it, and possibly a @samp{\} escaping the newline. + +@item +The character is not on its own line already. (This applies only to +insertion of a newline @emph{before} the character.) + +@item +@cindex literal +@cindex syntactic whitespace +The character was not typed inside of a literal @footnote{A +@dfn{literal} is defined as any comment, string, or preprocessor macro +definition. These constructs are also known as @dfn{syntactic +whitespace} since they are usually ignored when scanning C code.}. + +@item +No numeric argument was supplied to the command (i.e. it was typed as +normal, with no @kbd{C-u} prefix). +@end itemize + +You can configure the precise circumstances in which newlines get +inserted (see @pxref{Custom Auto-newlines}). Typically, the style +system (@pxref{Styles}) will have set this up for you, so you probably +won't have to bother. + +Sometimes @ccmode{} inserts an auto-newline where you don't want one, +such as after a @samp{@}} when you're about to type a @samp{;}. +Hungry deletion can help here (@pxref{Hungry WS Deletion}), or you can +activate an appropriate @dfn{clean-up}, which will remove the excess +whitespace after you've typed the @samp{;}. See @ref{Clean-ups} for a +full description. See also @ref{Electric Keys} for a summary of +clean-ups listed by key. + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Hungry WS Deletion, Subword Movement, Auto-newlines, Commands +@comment node-name, next, previous, up +@section Hungry Deletion of Whitespace +@cindex hungry-deletion +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +If you want to delete an entire block of whitespace at point, you can +use @dfn{hungry deletion}. This deletes all the contiguous whitespace +either before point or after point in a single operation. +``Whitespace'' here includes tabs and newlines, but not comments or +preprocessor commands. Hungry deletion can markedly cut down on the +number of times you have to hit deletion keys when, for example, +you've made a mistake on the preceding line and have already pressed +@kbd{C-j}. + +Hungry deletion is a simple feature that some people find extremely +useful. In fact, you might find yourself wanting it in @strong{all} +your editing modes! + +Loosely speaking, in what follows, @dfn{@key{DEL}} means ``the +backspace key'' and @dfn{@key{DELETE}} means ``the forward delete +key''. This is discussed in more detail below. + +There are two different ways you can use hungry deletion: + +@table @asis +@item Using @dfn{Hungry Delete Mode} with @kbd{@key{DEL}} and @kbd{C-d} +Here you toggle Hungry Delete minor mode with @kbd{M-x +c-toggle-hungry-state}@footnote{Prior to @ccmode{} 5.31, this command +was bound to @kbd{C-c C-d}. @kbd{C-c C-d} is now the default binding +for @code{c-hungry-delete-forward}.} (@pxref{Minor Modes}.) This +makes @kbd{@key{DEL}} and @kbd{C-d} do backwards and forward hungry +deletion. + +@table @asis +@item @kbd{@key{DEL}} (@code{c-electric-backspace}) +@kindex DEL +@findex c-electric-backspace +@findex electric-backspace (c-) +This command is run by default when you hit the @kbd{DEL} key. When +hungry delete mode is enabled, it deletes any amount of whitespace in +the backwards direction. Otherwise, or when used with a prefix +argument or in a literal (@pxref{Auto-newlines}), the command just +deletes backwards in the usual way. (More precisely, it calls the +function contained in the variable @code{c-backspace-function}, +passing it the prefix argument, if any.) + +@item @code{c-backspace-function} +@vindex c-backspace-function +@vindex backspace-function (c-) +@findex backward-delete-char-untabify +Hook that gets called by @code{c-electric-backspace} when it doesn't +do an ``electric'' deletion of the preceding whitespace. The default +value is @code{backward-delete-char-untabify} +(@pxref{Deletion,,,@lispref{}, @lispreftitle{}}, the function which +deletes a single character. + +@item @kbd{C-d} (@code{c-electric-delete-forward}) +@kindex C-d +@findex c-electric-delete-forward +@findex electric-delete-forward (c-) +This function, which is bound to @kbd{C-d} by default, works just like +@code{c-electric-backspace} but in the forward direction. When it +doesn't do an ``electric'' deletion of the following whitespace, it +just does @code{delete-char}, more or less. (Strictly speaking, it +calls the function in @code{c-delete-function} with the prefix +argument.) + +@item @code{c-delete-function} +@vindex c-delete-function +@vindex delete-function (c-) +@findex delete-char +Hook that gets called by @code{c-electric-delete-forward} when it +doesn't do an ``electric'' deletion of the following whitespace. The +default value is @code{delete-char}. +@end table + +@item Using Distinct Bindings +The other (newer and recommended) way to use hungry deletion is to +perform @code{c-hungry-delete-backwards} and +@code{c-hungry-delete-forward} directly through their key sequences +rather than using the minor mode toggling. + +@table @asis +@item @kbd{C-c C-@key{DEL}}, or @kbd{C-c @key{DEL}} (@code{c-hungry-delete-backwards})@footnote{This command was formerly known as @code{c-hungry-backspace}.} +@kindex C-c C- +@kindex C-c +@kindex C-c C-DEL +@kindex C-c DEL +@findex c-hungry-delete-backwards +@findex hungry-delete-backwards (c-) +Delete any amount of whitespace in the backwards direction (regardless +whether hungry-delete mode is enabled or not). This command is bound +to both @kbd{C-c C-@key{DEL}} and @kbd{C-c @key{DEL}}, since the more +natural one, @kbd{C-c C-@key{DEL}}, is sometimes difficult to type at +a character terminal. + +@item @kbd{C-c C-d}, @kbd{C-c C-@key{DELETE}}, or @kbd{C-c @key{DELETE}} (@code{c-hungry-delete-forward}) +@kindex C-c C-d +@kindex C-c C- +@kindex C-c +@findex c-hungry-delete-forward +@findex hungry-delete-forward (c-) +Delete any amount of whitespace in the forward direction (regardless +whether hungry-delete mode is enabled or not). This command is bound +to both @kbd{C-c C-@key{DELETE}} and @kbd{C-c @key{DELETE}} for the +same reason as for @key{DEL} above. +@end table +@end table + +@kindex +@kindex + +When we talk about @kbd{@key{DEL}}, and @kbd{@key{DELETE}} above, we +actually do so without connecting them to the physical keys commonly +known as @key{Backspace} and @key{Delete}. The default bindings to +those two keys depends on the flavor of (X)Emacs you are using. + +@findex c-electric-delete +@findex electric-delete (c-) +@findex c-hungry-delete +@findex hungry-delete (c-) +@vindex delete-key-deletes-forward +In XEmacs 20.3 and beyond, the @key{Backspace} key is bound to +@code{c-electric-backspace} and the @key{Delete} key is bound to +@code{c-electric-delete}. You control the direction it deletes in by +setting the variable @code{delete-key-deletes-forward}, a standard +XEmacs variable. +@c This variable is encapsulated by XEmacs's (defsubst delete-forward-p ...). +When this variable is non-@code{nil}, @code{c-electric-delete} will do +forward deletion with @code{c-electric-delete-forward}, otherwise it +does backward deletion with @code{c-electric-backspace}. Similarly, +@kbd{C-c @key{Delete}} and @kbd{C-c C-@key{Delete}} are bound to +@code{c-hungry-delete} which is controlled in the same way by +@code{delete-key-deletes-forward}. + +@findex normal-erase-is-backspace-mode + +Emacs 21 and later automatically binds @key{Backspace} and +@key{Delete} to @kbd{DEL} and @kbd{C-d} according to your environment, +and @ccmode{} extends those bindings to @kbd{C-c C-@key{Backspace}} +etc. If you need to change the bindings through +@code{normal-erase-is-backspace-mode} then @ccmode{} will also adapt +its extended bindings accordingly. + +In earlier (X)Emacs versions, @ccmode{} doesn't bind either +@key{Backspace} or @key{Delete} directly. Only the key codes +@kbd{DEL} and @kbd{C-d} are bound, and it's up to the default bindings +to map the physical keys to them. You might need to modify this +yourself if the defaults are unsuitable. + +Getting your @key{Backspace} and @key{Delete} keys properly set up can +sometimes be tricky. The information in @ref{DEL Does Not +Delete,,,emacs, GNU Emacs Manual}, might be helpful if you're having +trouble with this in GNU Emacs. + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Subword Movement, Other Commands, Hungry WS Deletion, Commands +@comment node-name, next, previous, up +@section Subword Movement and Editing +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@cindex nomenclature +@cindex subword +In spite of the GNU Coding Standards, it is popular to name a symbol +by mixing uppercase and lowercase letters, e.g. @samp{GtkWidget}, +@samp{EmacsFrameClass}, or @samp{NSGraphicsContext}. Here we call +these mixed case symbols @dfn{nomenclatures}. Also, each capitalized +(or completely uppercase) part of a nomenclature is called a +@dfn{subword}. Here are some examples: + +@multitable {@samp{NSGraphicsContext}} {@samp{NS}, @samp{Graphics}, and @samp{Context}} +@c This could be converted to @headitem when we require Texinfo 4.7 +@iftex +@item @b{Nomenclature} + @tab @b{Subwords} +@end iftex +@ifnottex +@item Nomenclature + @tab Subwords +@item --------------------------------------------------------- +@end ifnottex +@item @samp{GtkWindow} + @tab @samp{Gtk} and @samp{Window} +@item @samp{EmacsFrameClass} + @tab @samp{Emacs}, @samp{Frame}, and @samp{Class} +@item @samp{NSGraphicsContext} + @tab @samp{NS}, @samp{Graphics}, and @samp{Context} +@end multitable + +The subword minor mode replaces the basic word oriented movement and +editing commands with variants that recognize subwords in a +nomenclature and treat them as separate words: + +@findex c-forward-subword +@findex forward-subword (c-) +@findex c-backward-subword +@findex backward-subword (c-) +@findex c-mark-subword +@findex mark-subword (c-) +@findex c-kill-subword +@findex kill-subword (c-) +@findex c-backward-kill-subword +@findex backward-kill-subword (c-) +@findex c-transpose-subwords +@findex transpose-subwords (c-) +@findex c-capitalize-subword +@findex capitalize-subword (c-) +@findex c-upcase-subword +@findex upcase-subword (c-) +@findex c-downcase-subword +@findex downcase-subword (c-) +@multitable @columnfractions .20 .40 .40 +@c This could be converted to @headitem when we require Texinfo 4.7 +@iftex +@item @b{Key} @tab @b{Word oriented command} @tab @b{Subword oriented command} +@end iftex +@ifnottex +@item Key @tab Word oriented command @tab Subword oriented command +@item ---------------------------------------------------------------------------- +@end ifnottex +@item @kbd{M-f} @tab @code{forward-word} @tab @code{c-forward-subword} +@item @kbd{M-b} @tab @code{backward-word} @tab @code{c-backward-subword} +@item @kbd{M-@@} @tab @code{mark-word} @tab @code{c-mark-subword} +@item @kbd{M-d} @tab @code{kill-word} @tab @code{c-kill-subword} +@item @kbd{M-DEL} @tab @code{backward-kill-word} @tab @code{c-backward-kill-subword} +@item @kbd{M-t} @tab @code{transpose-words} @tab @code{c-transpose-subwords} +@item @kbd{M-c} @tab @code{capitalize-word} @tab @code{c-capitalize-subword} +@item @kbd{M-u} @tab @code{upcase-word} @tab @code{c-upcase-subword} +@item @kbd{M-l} @tab @code{downcase-word} @tab @code{c-downcase-subword} +@end multitable + +Note that if you have changed the key bindings for the word oriented +commands in your @file{.emacs} or a similar place, the keys you have +configured are also used for the corresponding subword oriented +commands. + +Type @kbd{C-c C-w} to toggle subword mode on and off. To make the +mode turn on automatically, put the following code in your +@file{.emacs}: + +@example +(add-hook 'c-mode-common-hook + (lambda () (c-subword-mode 1))) +@end example + +As a bonus, you can also use @code{c-subword-mode} in non-@ccmode{} +buffers by typing @kbd{M-x c-subword-mode}. + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Other Commands, , Subword Movement, Commands +@comment node-name, next, previous, up +@section Other Commands +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +Here are the various other commands that didn't fit anywhere else: + +@table @asis +@item @kbd{C-c .} (@code{c-set-style}) +@kindex C-c . +@findex c-set-style +@findex set-style (c-) +Switch to the specified style in the current buffer. Use like this: + +@example +@kbd{C-c . @var{style-name} @key{RET}} +@end example + +You can use the @key{TAB} in the normal way to do completion on the +style name. Note that all style names are case insensitive, even the +ones you define yourself. + +Setting a style in this way does @emph{not} automatically reindent your +file. For commands that you can use to view the effect of your changes, +see @ref{Indentation Commands} and @ref{Filling and Breaking}. + +For details of the @ccmode{} style system, see @ref{Styles}. +@item @kbd{C-c :} (@code{c-scope-operator}) +@kindex C-c : +@findex c-scope-operator +@findex scope-operator (c-) +In C++, it is also sometimes desirable to insert the double-colon scope +operator without performing the electric behavior of colon insertion. +@kbd{C-c :} does just this. + +@item @kbd{C-c C-\} (@code{c-backslash-region}) +@kindex C-c C-\ +@findex c-backslash-region +@findex backslash-region (c-) +This function inserts and aligns or deletes end-of-line backslashes in +the current region. These are typically used in multi-line macros. + +With no prefix argument, it inserts any missing backslashes and aligns +them according to the @code{c-backslash-column} and +@code{c-backslash-max-column} variables. With a prefix argument, it +deletes any backslashes. + +The function does not modify blank lines at the start of the region. If +the region ends at the start of a line, it always deletes the backslash +(if any) at the end of the previous line. + +To customize the precise workings of this command, @ref{Custom Macros}. +@end table + +@noindent +The recommended line breaking function, @code{c-context-line-break} +(@pxref{Filling and Breaking}), is especially nice if you edit +multiline macros frequently. When used inside a macro, it +automatically inserts and adjusts the mandatory backslash at the end +of the line to keep the macro together, and it leaves the point at the +right indentation column for the code. Thus you can write code inside +macros almost exactly as you can elsewhere, without having to bother +with the trailing backslashes. + +@table @asis +@item @kbd{C-c C-e} (@code{c-macro-expand}) +@kindex C-c C-e +@findex c-macro-expand +@findex macro-expand (c-) +This command expands C, C++, Objective C or Pike macros in the region, +using an appropriate external preprocessor program. Normally it +displays its output in a temporary buffer, but if you give it a prefix +arg (with @kbd{C-u C-c C-e}) it will overwrite the original region +with the expansion. + +The command does not work in any of the other modes, and the key +sequence is not bound in these other modes. + +@code{c-macro-expand} isn't actually part of @ccmode{}, even though it +is bound to a @ccmode{} key sequence. If you need help setting it up +or have other problems with it, you can either read its source code or +ask for help in the standard (X)Emacs forums. +@end table + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Font Locking, Config Basics, Commands, Top +@comment node-name, next, previous, up +@chapter Font Locking +@cindex font locking +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@cindex Font Lock mode + +@ccmode{} provides font locking for its supported languages by +supplying patterns for use with Font Lock mode. This means that you +get distinct faces on the various syntactic parts such as comments, +strings, keywords and types, which is very helpful in telling them +apart at a glance and discovering syntactic errors. @xref{Font +Lock,,, emacs, GNU Emacs Manual}, for ways to enable font locking in +@ccmode{} buffers. + +@strong{Please note:} The font locking in AWK mode is currently not +integrated with the rest of @ccmode{}. Only the last section of this +chapter, @ref{AWK Mode Font Locking}, applies to AWK. The other +sections apply to the other languages. + +@menu +* Font Locking Preliminaries:: +* Faces:: +* Doc Comments:: +* AWK Mode Font Locking:: +@end menu + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Font Locking Preliminaries, Faces, Font Locking, Font Locking +@comment node-name, next, previous, up +@section Font Locking Preliminaries +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +The font locking for most of the @ccmode{} languages were provided +directly by the Font Lock package prior to version 5.30 of @ccmode{}. +In the transition to @ccmode{} the patterns have been reworked +completely and are applied uniformly across all the languages except AWK +mode, just like the indentation rules (although each language still has +some peculiarities of its own, of course). Since the languages +previously had completely separate font locking patterns, this means +that it's a bit different in most languages now. + +The main goal for the font locking in @ccmode{} is accuracy, to provide +a dependable aid in recognizing the various constructs. Some, like +strings and comments, are easy to recognize while others, like +declarations and types, can be very tricky. @ccmode{} can go to great +lengths to recognize declarations and casts correctly, especially when +the types aren't recognized by standard patterns. This is a fairly +demanding analysis which can be slow on older hardware, and it can +therefore be disabled by choosing a lower decoration level with the +variable @code{font-lock-maximum-decoration} (@pxref{Font Lock,,, +emacs, GNU Emacs Manual}). + +@vindex font-lock-maximum-decoration + +The decoration levels are used as follows: + +@enumerate +@comment 1 +@item +Minimal font locking: Fontify only comments, strings and preprocessor +directives (in the languages that use cpp). + +@comment 2 +@item +Fast font locking: In addition to level 1, fontify keywords, simple +types and declarations that are easy to recognize. The variables +@code{*-font-lock-extra-types} (where @samp{*} is the name of the +language) are used to recognize types (see below). Documentation +comments like Javadoc are fontified according to +@code{c-doc-comment-style} (@pxref{Doc Comments}). + +Use this if you think the font locking is too slow. It's the closest +corresponding level to level 3 in the old font lock patterns. + +@comment 3 +@item +Accurate font locking: Like level 2 but uses a different approach that +can recognize types and declarations much more accurately. The +@code{*-font-lock-extra-types} variables are still used, but user +defined types are recognized correctly anyway in most cases. Therefore +those variables should be fairly restrictive and not contain patterns +that are uncertain. + +@cindex Lazy Lock mode +@cindex Just-in-time Lock mode + +This level is designed for fairly modern hardware and a font lock +support mode like Lazy Lock or Just-in-time Lock mode that only +fontifies the parts that are actually shown. Fontifying the whole +buffer at once can easily get bothersomely slow even on contemporary +hardware. @xref{Font Lock,,,@emacsman{}, @emacsmantitle{}}. +@end enumerate + +@cindex user defined types +@cindex types, user defined + +Since user defined types are hard to recognize you can provide +additional regexps to match those you use: + +@defopt c-font-lock-extra-types +@defoptx c++-font-lock-extra-types +@defoptx objc-font-lock-extra-types +@defoptx java-font-lock-extra-types +@defoptx idl-font-lock-extra-types +@defoptx pike-font-lock-extra-types +For each language there's a variable @code{*-font-lock-extra-types}, +where @samp{*} stands for the language in question. It contains a list +of regexps that matches identifiers that should be recognized as types, +e.g. @samp{\\sw+_t} to recognize all identifiers ending with @samp{_t} +as is customary in C code. Each regexp should not match more than a +single identifier. + +The default values contain regexps for many types in standard runtime +libraries that are otherwise difficult to recognize, and patterns for +standard type naming conventions like the @samp{_t} suffix in C and C++. +Java, Objective-C and Pike have as a convention to start class names +with capitals, so there are patterns for that in those languages. + +Despite the names of these variables, they are not only used for +fontification but in other places as well where @ccmode{} needs to +recognize types. +@end defopt + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Faces, Doc Comments, Font Locking Preliminaries, Font Locking +@comment node-name, next, previous, up +@section Faces +@cindex faces +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@ccmode{} attempts to use the standard faces for programming languages +in accordance with their intended purposes as far as possible. No extra +faces are currently provided, with the exception of a replacement face +@code{c-invalid-face} for emacsen that don't provide +@code{font-lock-warning-face}. + +@itemize @bullet +@item +@vindex font-lock-comment-face +Normal comments are fontified in @code{font-lock-comment-face}. + +@item +@vindex font-lock-doc-face +@vindex font-lock-doc-string-face +@vindex font-lock-comment-face +Comments that are recognized as documentation (@pxref{Doc Comments}) +get @code{font-lock-doc-face} (Emacs) or +@code{font-lock-doc-string-face} (XEmacs) if those faces exist. If +they don't then @code{font-lock-comment-face} is used. + +@item +@vindex font-lock-string-face +String and character literals are fontified in +@code{font-lock-string-face}. + +@item +@vindex font-lock-keyword-face +Keywords are fontified with @code{font-lock-keyword-face}. + +@item +@vindex font-lock-function-name-face +@code{font-lock-function-name-face} is used for function names in +declarations and definitions, and classes in those contexts. It's also +used for preprocessor defines with arguments. + +@item +@vindex font-lock-variable-name-face +Variables in declarations and definitions, and other identifiers in such +variable contexts, get @code{font-lock-variable-name-face}. It's also +used for preprocessor defines without arguments. + +@item +@vindex font-lock-constant-face +@vindex font-lock-reference-face +Builtin constants are fontified in @code{font-lock-constant-face} if it +exists, @code{font-lock-reference-face} otherwise. As opposed to the +preceding two faces, this is used on the names in expressions, and it's +not used in declarations, even if there happen to be a @samp{const} in +them somewhere. + +@item +@vindex font-lock-type-face +@code{font-lock-type-face} is put on types (both predefined and user +defined) and classes in type contexts. + +@item +@vindex font-lock-constant-face +@vindex font-lock-reference-face +Label identifiers get @code{font-lock-constant-face} if it exists, +@code{font-lock-reference-face} otherwise. + +@item +Name qualifiers and identifiers for scope constructs are fontified like +labels. + +@item +Special markup inside documentation comments are also fontified like +labels. + +@item +@vindex font-lock-preprocessor-face +@vindex font-lock-builtin-face +@vindex font-lock-reference-face +Preprocessor directives get @code{font-lock-preprocessor-face} if it +exists (i.e. XEmacs). In Emacs they get @code{font-lock-builtin-face} +or @code{font-lock-reference-face}, for lack of a closer equivalent. + +@item +@vindex font-lock-warning-face +@vindex c-invalid-face +@vindex invalid-face (c-) +Some kinds of syntactic errors are fontified with +@code{font-lock-warning-face} in Emacs. In older XEmacs versions +there's no corresponding standard face, so there a special +@code{c-invalid-face} is used, which is defined to stand out sharply by +default. + +Note that it's not used for @samp{#error} or @samp{#warning} directives, +since those aren't syntactic errors in themselves. +@end itemize + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Doc Comments, AWK Mode Font Locking, Faces, Font Locking +@comment node-name, next, previous, up +@section Documentation Comments +@cindex documentation comments +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +There are various tools to supply documentation in the source as +specially structured comments, e.g. the standard Javadoc tool in Java. +@ccmode{} provides an extensible mechanism to fontify such comments and +the special markup inside them. + +@defopt c-doc-comment-style +@vindex doc-comment-style (c-) +This is a style variable that specifies which documentation comment +style to recognize, e.g. @code{javadoc} for Javadoc comments. + +The value may also be a list of styles, in which case all of them are +recognized simultaneously (presumably with markup cues that don't +conflict). + +The value may also be an association list to specify different comment +styles for different languages. The symbol for the major mode is then +looked up in the alist, and the value of that element is interpreted as +above if found. If it isn't found then the symbol `other' is looked up +and its value is used instead. + +The default value for @code{c-doc-comment-style} is +@w{@code{((java-mode . javadoc) (pike-mode . autodoc) (c-mode . gtkdoc))}}. + +Note that @ccmode{} uses this variable to set other variables that +handle fontification etc. That's done at mode initialization or when +you switch to a style which sets this variable. Thus, if you change it +in some other way, e.g. interactively in a CC Mode buffer, you will need +to do @kbd{M-x java-mode} (or whatever mode you're currently using) to +reinitialize. + +@findex c-setup-doc-comment-style +@findex setup-doc-comment-style (c-) +Note also that when @ccmode{} starts up, the other variables are +modified before the mode hooks are run. If you change this variable in +a mode hook, you'll have to call @code{c-setup-doc-comment-style} +afterwards to redo that work. +@end defopt + +@ccmode{} currently provides handing of the following doc comment +styles: + +@table @code +@item javadoc +@cindex Javadoc markup +Javadoc comments, the standard tool in Java. + +@item autodoc +@cindex Pike autodoc markup +For Pike autodoc markup, the standard in Pike. + +@item gtkdoc +@cindex GtkDoc markup +For GtkDoc markup, widely used in the Gnome community. +@end table + +The above is by no means complete. If you'd like to see support for +other doc comment styles, please let us know (@pxref{Mailing Lists and +Bug Reports}). + +You can also write your own doc comment fontification support to use +with @code{c-doc-comment-style}: Supply a variable or function +@code{*-font-lock-keywords} where @samp{*} is the name you want to use +in @code{c-doc-comment-style}. If it's a variable, it's prepended to +@code{font-lock-keywords}. If it's a function, it's called at mode +initialization and the result is prepended. For an example, see +@code{javadoc-font-lock-keywords} in @file{cc-fonts.el}. + +If you add support for another doc comment style, please consider +contributing it - send a note to @email{bug-cc-mode@@gnu.org}. + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node AWK Mode Font Locking, , Doc Comments, Font Locking +@comment node-name, next, previous, up +@section AWK Mode Font Locking +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +The general appearance of font-locking in AWK mode is much like in any +other programming mode. @xref{Faces For Font Lock,,,elisp, GNU Emacs +Lisp Reference Manual}. + +The following faces are, however, used in a non-standard fashion in +AWK mode: + +@table @asis +@item @code{font-lock-variable-name-face} +This face was intended for variable declarations. Since variables are +not declared in AWK, this face is used instead for AWK system +variables (such as @code{NF}) and ``Special File Names'' (such as +@code{"/dev/stderr"}). + +@item @code{font-lock-builtin-face} (Emacs)/@code{font-lock-preprocessor-face} (XEmacs) +This face is normally used for preprocessor directives in @ccmode{}. +There are no such things in AWK, so this face is used instead for +standard functions (such as @code{match}). + +@item @code{font-lock-string-face} +As well as being used for strings, including localizable strings, +(delimited by @samp{"} and @samp{_"}), this face is also used for AWK +regular expressions (delimited by @samp{/}). + +@item @code{font-lock-warning-face} (Emacs)/@code{c-invalid-face} (XEmacs) +This face highlights the following syntactically invalid AWK +constructs: + +@itemize @bullet +@item +An unterminated string or regular expression. Here the opening +delimiter (@samp{"} or @samp{/} or @samp{_"}) is displayed in +@code{font-lock-warning-face}. This is most noticeable when typing in a +new string/regular expression into a buffer, when the warning-face +serves as a continual reminder to terminate the construct. + +AWK mode fontifies unterminated strings/regular expressions +differently from other modes: Only the text up to the end of the line +is fontified as a string (escaped newlines being handled correctly), +rather than the text up to the next string quote. + +@item +A space between the function name and opening parenthesis when calling +a user function. The last character of the function name and the +opening parenthesis are highlighted. This font-locking rule will +spuriously highlight a valid concatenation expression where an +identifier precedes a parenthesised expression. Unfortunately. + +@item +Whitespace following the @samp{\} in what otherwise looks like an +escaped newline. The @samp{\} is highlighted. +@end itemize +@end table + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Config Basics, Custom Filling and Breaking, Font Locking, Top +@comment node-name, next, previous, up +@chapter Configuration Basics +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@cindex Emacs Initialization File +@cindex Configuration +You configure @ccmode{} by setting Lisp variables and calling (and +perhaps writing) Lisp functions@footnote{DON'T PANIC!!! This isn't +difficult.}, which is usually done by adding code to an Emacs +initialization file. This file might be @file{site-start.el} or +@file{.emacs} or @file{init.el} or @file{default.el} or perhaps some +other file. @xref{Init File,,,@emacsman{}, @emacsmantitle{}}. For +the sake of conciseness, we just call this file ``your @file{.emacs}'' +throughout the rest of the manual. + +Several of these variables (currently 16), are known collectively as +@dfn{style variables}. @ccmode{} provides a special mechanism, known +as @dfn{styles} to make it easier to set these variables as a group, +to ``inherit'' settings from one style into another, and so on. Style +variables remain ordinary Lisp variables, whose values can be read and +changed independently of the style system. @xref{Style Variables}. + +There are several ways you can write the code, depending on the +precise effect you want---they are described further down on this page. +If you are new to @ccmode{}, we suggest you begin with the simplest +method, ``Top-level commands or the customization interface''. + +If you make conflicting settings in several of these ways, the way +that takes precedence is the one that appears latest in this list: +@itemize @asis +@item +@table @asis +@item Style +@itemx Top-level command or ``customization interface'' +@itemx Hook +@itemx File Style +@end table +@end itemize + +Here is a summary of the different ways of writing your configuration +settings: + +@table @asis +@item Top-level commands or the ``customization interface'' +Most simply, you can write @code{setq} and similar commands at the top +level of your @file{.emacs} file. When you load a @ccmode{} buffer, +it initializes its configuration from these global values (at least, +for those settings you have given values to), so it makes sense to +have these @code{setq} commands run @emph{before} @ccmode{} is first +initialized---in particular, before any call to @code{desktop-read} +(@pxref{Saving Emacs Sessions,,, emacs, GNU Emacs Manual}). For +example, you might set c-basic-offset thus: + +@example +(setq c-basic-offset 4) +@end example + +You can use the more user friendly Customization interface instead, +but this manual does not cover in detail how that works. To do this, +start by typing @kbd{M-x customize-group @key{RET} c @key{RET}}. +@xref{Easy Customization,,,@emacsman{}, @emacsmantitle{}}. +@c The following note really belongs in the Emacs manual. +Emacs normally writes the customizations at the end of your +@file{.emacs} file. If you use @code{desktop-read}, you should edit +your @file{.emacs} to place the call to @code{desktop-read} @emph{after} +the customizations. + +The first initialization of @ccmode{} puts a snapshot of the +configuration settings into the special style @code{user}. +@xref{Built-in Styles}. + +For basic use of Emacs, either of these ways of configuring is +adequate. However, the settings are then the same in all @ccmode{} +buffers and it can be clumsy to communicate them between programmers. +For more flexibility, you'll want to use one (or both) of @ccmode{}'s +more sophisticated facilities, hooks and styles. + +@item Hooks +An Emacs @dfn{hook} is a place to put Lisp functions that you want +Emacs to execute later in specific circumstances. +@xref{Hooks,,,@lispref{}, @lispreftitle{}}. @ccmode{} supplies a main +hook and a language-specific hook for each language it supports - any +functions you put onto these hooks get executed as the last part of a +buffer's initialization. Typically you put most of your customization +within the main hook, and use the language-specific hooks to vary the +customization settings between language modes. For example, if you +wanted different (non-standard) values of @code{c-basic-offset} in C +Mode and Java Mode buffers, you could do it like this: + +@example +@group +(defun my-c-mode-hook () + (setq c-basic-offset 3)) +(add-hook 'c-mode-hook 'my-c-mode-hook) + +(defun my-java-mode-hook () + (setq c-basic-offset 6)) +(add-hook 'java-mode-hook 'my-java-mode-hook) +@end group +@end example + +See @ref{CC Hooks} for more details on the use of @ccmode{} hooks. + +@item Styles +A @ccmode{} @dfn{style} is a coherent collection of customizations +with a name. At any time, exactly one style is active in each +@ccmode{} buffer, either the one you have selected or a default. +@ccmode{} is delivered with several existing styles. Additionally, +you can create your own styles, possibly based on these existing +styles. If you worked in a programming team called the ``Free +Group'', which had its own coding standards, you might well have this +in your @file{.emacs} file: + +@example +(setq c-default-style '((java-mode . "java") + (awk-mode . "awk") + (other . "free-group-style"))) +@end example + +See @ref{Styles} for fuller details on using @ccmode{} styles and how +to create them. + +@item File Styles +A @dfn{file style} is a rarely used variant of the ``style'' mechanism +described above, which applies to an individual source file. To use +it, you set certain Emacs local variables in a special block at the +end of the source file. @xref{File Styles}. + +@item Hooks with Styles +For ultimate flexibility, you can use hooks and styles together. For +example, if your team were developing a product which required a +Linux driver, you'd probably want to use the ``linux'' style for the +driver, and your own team's style for the rest of the code. You +could achieve this with code like this in your @file{.emacs}: + +@example +@group +(defun my-c-mode-hook () + (c-set-style + (if (and (buffer-file-name) + (string-match "/usr/src/linux" (buffer-file-name))) + "linux" + "free-group-style"))) +(add-hook 'c-mode-hook 'my-c-mode-hook) +@end group +@end example + +In a programming team, a hook is a also a good place for each member +to put his own personal preferences. For example, you might be the +only person in your team who likes Auto-newline minor mode. You could +have it enabled by default by placing the following in your +@file{.emacs}: + +@example +@group +(defun my-turn-on-auto-newline () + (c-toggle-auto-newline 1)) +(add-hook 'c-mode-common-hook 'my-turn-on-auto-newline) +@end group +@end example +@end table + +@menu +* CC Hooks:: +* Style Variables:: +* Styles:: +@end menu + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node CC Hooks, Style Variables, Config Basics, Config Basics +@comment node-name, next, previous, up +@section Hooks +@cindex mode hooks +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@c The node name is "CC Hooks" rather than "Hooks" because of a bug in +@c some older versions of Info, e.g. the info.el in GNU Emacs 21.3. +@c If you go to "Config Basics" and hit on the xref to "CC +@c Hooks" the function Info-follow-reference searches for "*Note: CC +@c Hooks" from the beginning of the page. If this node were instead +@c named "Hooks", that search would spuriously find "*Note: +@c Hooks(elisp)" and go to the wrong node. + +@ccmode{} provides several hooks that you can use to customize the +mode for your coding style. The main hook is +@code{c-mode-common-hook}; typically, you'll put the bulk of your +customizations here. In addition, each language mode has its own +hook, allowing you to fine tune your settings individually for the +different @ccmode{} languages, and there is a package initialization +hook. Finally, there is @code{c-special-indent-hook}, which enables +you to solve anomalous indentation problems. It is described in +@ref{Other Indentation}, not here. All these hooks adhere to the +standard Emacs conventions. + +When you open a buffer, @ccmode{} first initializes it with the +currently active style (@pxref{Styles}). Then it calls +@code{c-mode-common-hook}, and finally it calls the language-specific +hook. Thus, any style settings done in these hooks will override +those set by @code{c-default-style}. + +@defvar c-initialization-hook +@vindex initialization-hook (c-) +Hook run only once per Emacs session, when @ccmode{} is initialized. +This is a good place to change key bindings (or add new ones) in any +of the @ccmode{} key maps. @xref{Sample .emacs File}. +@end defvar + +@defvar c-mode-common-hook +@vindex mode-common-hook (c-) +Common hook across all languages. It's run immediately before the +language specific hook. +@end defvar + +@defvar c-mode-hook +@defvarx c++-mode-hook +@defvarx objc-mode-hook +@defvarx java-mode-hook +@defvarx idl-mode-hook +@defvarx pike-mode-hook +@defvarx awk-mode-hook +The language specific mode hooks. The appropriate one is run as the +last thing when you enter that language mode. +@end defvar + +Although these hooks are variables defined in @ccmode{}, you can give +them values before @ccmode{}'s code is loaded---indeed, this is the +only way to use @code{c-initialization-hook}. Their values aren't +overwritten when @ccmode{} gets loaded. + +Here's a simplified example of what you can add to your @file{.emacs} +file to do things whenever any @ccmode{} language is edited. See the +Emacs manuals for more information on customizing Emacs via hooks. +@xref{Sample .emacs File}, for a more complete sample @file{.emacs} +file. + +@example +(defun my-c-mode-common-hook () + ;; my customizations for all of c-mode and related modes + (no-case-fold-search) + ) +(add-hook 'c-mode-common-hook 'my-c-mode-common-hook) +@end example + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Style Variables, Styles, CC Hooks, Config Basics +@comment node-name, next, previous, up +@section Style Variables +@cindex styles +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@cindex style variables +The variables that @ccmode{}'s style system control are called +@dfn{style variables}. Note that style variables are ordinary Lisp +variables, which the style system initializes; you can change their +values at any time (e.g. in a hook function). The style system can +also set other variables, to some extent. @xref{Styles}. + +@dfn{Style variables} are handled specially in several ways: + +@itemize @bullet +@item +Style variables are by default buffer-local variables. However, they +can instead be made global by setting +@code{c-style-variables-are-local-p} to @code{nil} before @ccmode{} is +initialized. + +@item +@vindex c-old-style-variable-behavior +@vindex old-style-variable-behavior (c-) +The default global binding of any style variable (with two exceptions +- see below) is the special symbol @code{set-from-style}. When the +style system initializes a buffer-local copy of a style variable for a +@ccmode{} buffer, if its global binding is still that symbol then it +will be set from the current style. Otherwise it will retain its +global default@footnote{This is a big change from versions of +@ccmode{} earlier than 5.26, where such settings would get overridden +by the style system unless special precautions were taken. That was +changed since it was counterintuitive and confusing, especially to +novice users. If your configuration depends on the old overriding +behavior, you can set the variable +@code{c-old-style-variable-behavior} to non-@code{nil}.}. This +``otherwise'' happens, for example, when you've set the variable with +@code{setq} at the top level of your @file{.emacs} (@pxref{Config +Basics}). + +@item +The style variable @code{c-offsets-alist} (@pxref{c-offsets-alist}) is +an association list with an element for each syntactic symbol. It's +handled a little differently from the other style variables. It's +default global binding is the empty list @code{nil}, rather than +@code{set-from-style}. Before the style system is initialized, you +can add individual elements to @code{c-offsets-alist} by calling +@code{c-set-offset}(@pxref{c-offsets-alist}) just like you would set +other style variables with @code{setq}. Those elements will then +prevail when the style system later initializes a buffer-local copy of +@code{c-offsets-alist}. + +@item +The style variable @code{c-special-indent-hook} is also handled in a +special way. Styles can only add functions to this hook, not remove +them, so any global settings you put on it are always +preserved@footnote{This did not change in version 5.26.}. The value +you give this variable in a style definition can be either a function +or a list of functions. + +@item +The global bindings of the style variables get captured in the special +@code{user} style when the style system is first initialized. +@xref{Built-in Styles}, for details. +@end itemize + +The style variables are:@* +@code{c-indent-comment-alist}, +@code{c-indent-comments-syntactically-p} (@pxref{Indentation +Commands});@* +@code{c-doc-comment-style} (@pxref{Doc Comments});@* +@code{c-block-comment-prefix}, @code{c-comment-prefix-regexp} +(@pxref{Custom Filling and Breaking});@* +@code{c-hanging-braces-alist} (@pxref{Hanging Braces});@* +@code{c-hanging-colons-alist} (@pxref{Hanging Colons});@* +@code{c-hanging-semi&comma-criteria} (@pxref{Hanging Semicolons and +Commas});@* +@code{c-cleanup-list} (@pxref{Clean-ups});@* +@code{c-basic-offset} (@pxref{Customizing Indentation});@* +@code{c-offsets-alist} (@pxref{c-offsets-alist});@* +@code{c-comment-only-line-offset} (@pxref{Comment Line-Up});@* +@code{c-special-indent-hook}, @code{c-label-minimum-indentation} +(@pxref{Other Indentation});@* +@code{c-backslash-column}, @code{c-backslash-max-column} +(@pxref{Custom Macros}). + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Styles, , Style Variables, Config Basics +@comment node-name, next, previous, up +@section Styles +@cindex styles +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +By @dfn{style} we mean the layout of the code---things like how many +columns to indent a block of code, whether an opening brace gets +indented to the level of the code it encloses, or of the construct +that introduces it, or ``hangs'' at the end of a line. + +Most people only need to edit code formatted in just a few well-defined +and consistent styles. For example, their organization might impose a +``blessed'' style that all its programmers must conform to. Similarly, +people who work on GNU software will have to use the GNU coding style. +Some shops are more lenient, allowing a variety of coding styles, and as +programmers come and go, there could be a number of styles in use. For +this reason, @ccmode{} makes it convenient for you to set up logical +groupings of customizations called @dfn{styles}, associate a single name +for any particular style, and pretty easily start editing new or +existing code using these styles. + +@menu +* Built-in Styles:: +* Choosing a Style:: +* Adding Styles:: +* File Styles:: +@end menu + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Built-in Styles, Choosing a Style, Styles, Styles +@comment node-name, next, previous, up +@subsection Built-in Styles +@cindex styles, built-in +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +If you're lucky, one of @ccmode{}'s built-in styles might be just +what you're looking for. These are: + +@table @code +@item gnu +@cindex GNU style +Coding style blessed by the Free Software Foundation +for C code in GNU programs. + +@item k&r +@cindex K&R style +The classic Kernighan and Ritchie style for C code. + +@item bsd +@cindex BSD style +Also known as ``Allman style'' after Eric Allman. + +@item whitesmith +@cindex Whitesmith style +Popularized by the examples that came with Whitesmiths C, an early +commercial C compiler. + +@item stroustrup +@cindex Stroustrup style +The classic Stroustrup style for C++ code. + +@item ellemtel +@cindex Ellemtel style +Popular C++ coding standards as defined by ``Programming in C++, Rules +and Recommendations,'' Erik Nyquist and Mats Henricson, +Ellemtel@footnote{This document is available at +@uref{http://www.doc.ic.ac.uk/lab/cplus/c++.rules/} among other +places.}. +@c N.B. This URL was still valid at 2005/8/28 (ACM). + +@item linux +@cindex Linux style +C coding standard for Linux (the kernel). + +@item python +@cindex Python style +C coding standard for Python extension modules@footnote{Python is a +high level scripting language with a C/C++ foreign function interface. +For more information, see @uref{http://www.python.org/}.}. + +@item java +@cindex Java style +The style for editing Java code. Note that the default +value for @code{c-default-style} installs this style when you enter +@code{java-mode}. + +@item awk +@cindex AWK style +The style for editing AWK code. Note that the default value for +@code{c-default-style} installs this style when you enter +@code{awk-mode}. + +@item user +@cindex User style +This is a special style created by you. It consists of the factory +defaults for all the style variables as modified by the customizations +you do either with the Customization interface or by writing +@code{setq}s and @code{c-set-offset}s at the top level of your +@file{.emacs} file (@pxref{Config Basics}). The style system creates +this style as part of its initialization and doesn't modify it +afterwards. +@end table + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Choosing a Style, Adding Styles, Built-in Styles, Styles +@comment node-name, next, previous, up +@subsection Choosing a Style +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +When you create a new buffer, its style will be set from +@code{c-default-style}. The factory default is the style @code{gnu}, +except in Java and AWK modes where it's @code{java} and @code{awk}. + +Remember that if you set a style variable with the Customization +interface or at the top level of your @file{.emacs} file before the +style system is initialised (@pxref{Config Basics}), this setting will +override the one that the style system would have given the variable. + +To set a buffer's style interactively, use the command @kbd{C-c .} +(@pxref{Other Commands}). To set it from a file's local variable +list, @ref{File Styles}. + +@defopt c-default-style +@vindex default-style (c-) +This variable specifies which style to install by default in new +buffers. It takes either a style name string, or an association list +of major mode symbols to style names: + +@enumerate +@item +When @code{c-default-style} is a string, it must be an existing style +name. This style is then used for all modes. + +@item +When @code{c-default-style} is an association list, the mode language +is looked up to find a style name string. + +@item +If @code{c-default-style} is an association list where the mode +language mode isn't found then the special symbol @samp{other} is +looked up. If it's found then the associated style is used. + +@item +If @samp{other} is not found then the @samp{gnu} style is used. +@end enumerate + +In all cases, the style described in @code{c-default-style} is installed +@emph{before} the language hooks are run, so you can always override +this setting by including an explicit call to @code{c-set-style} in your +language mode hook, or in @code{c-mode-common-hook}. + +The standard value of @code{c-default-style} is @w{@code{((java-mode +. "java") (awk-mode . "awk") (other . "gnu"))}}. +@end defopt + +@defvar c-indentation-style +@vindex indentation-style (c-) +This variable always contains the buffer's current style name, as a +string. +@end defvar + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Adding Styles, File Styles, Choosing a Style, Styles +@comment node-name, next, previous, up +@subsection Adding and Amending Styles +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +If none of the built-in styles is appropriate, you'll probably want to +create a new @dfn{style definition}, possibly based on an existing +style. To do this, put the new style's settings into a list with the +following format - the list can then be passed as an argument to the +function @code{c-add-style}. You can see an example of a style +definition in @ref{Sample .emacs File}. + +@cindex style definition +@c @defvr {List} style definition +@table @asis +@item Structure of a Style Definition List +([@var{base-style}] [(@var{variable} . @var{value}) @dots{}]) + +Optional @var{base-style}, if present, must be a string which is the +name of the @dfn{base style} from which this style inherits. At most +one @var{base-style} is allowed in a style definition. If +@var{base-style} is not specified, the style inherits from the table +of factory default values@footnote{This table is stored internally in +the variable c-fallback-style.} instead. All styles eventually +inherit from this internal table. Style loops generate errors. The +list of pre-existing styles can be seen in @ref{Built-in Styles}. + +The dotted pairs (@var{variable} . @var{value}) each consist of a +variable and the value it is to be set to when the style is later +activated.@footnote{Note that if the variable has been given a value +by the Customization interface or a @code{setq} at the top level of +your @file{.emacs}, this value will override the one the style system +tries to give it. @xref{Config Basics}.} The variable can be either a +@ccmode{} style variable or an arbitrary Emacs variable. In the +latter case, it is @emph{not} made buffer-local by the @ccmode{} style +system. +@c @end defvr + +Two variables are treated specially in the dotted pair list: + +@table @code +@item c-offsets-alist +The value is in turn a list of dotted pairs of the form + +@example +(@r{@var{syntactic-symbol}} . @r{@var{offset}}) +@end example + +as described in @ref{c-offsets-alist}. These are passed to +@code{c-set-offset} so there is no need to set every syntactic symbol +in your style, only those that are different from the inherited style. + +@item c-special-indent-hook +The value is added to @code{c-special-indent-hook} using +@code{add-hook}, so any functions already on it are kept. If the value +is a list, each element of the list is added with @code{add-hook}. +@end table +@end table + +Styles are kept in the @code{c-style-alist} variable, but you +should never modify this variable directly. Instead, @ccmode{} +provides the function @code{c-add-style} for this purpose. + +@defun c-add-style stylename description &optional set-p +@findex add-style (c-) +Add or update a style called @var{stylename}, a string. +@var{description} is the new style definition in the form described +above. If @var{stylename} already exists in @code{c-style-alist} then +it is replaced by @var{description}. (Note, this replacement is +total. The old style is @emph{not} merged into the new one.) +Otherwise, a new style is added. + +If the optional @var{set-p} is non-@code{nil} then the new style is +applied to the current buffer as well. The use of this facility is +deprecated and it might be removed from @ccmode{} in a future release. +You should use @code{c-set-style} instead. + +The sample @file{.emacs} file provides a concrete example of how a new +style can be added and automatically set. @xref{Sample .emacs File}. +@end defun + +@defvar c-style-alist +@vindex style-alist (c-) +This is the variable that holds the definitions for the styles. It +should not be changed directly; use @code{c-add-style} instead. +@end defvar + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node File Styles, , Adding Styles, Styles +@comment node-name, next, previous, up +@subsection File Styles +@cindex styles, file local +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@cindex file local variables + +The Emacs manual describes how you can customize certain variables on a +per-file basis by including a @dfn{file local variable} block at the end +of the file (@pxref{File Variables,, Local Variables in Files, @emacsman{}, +@emacsmantitle{}}). + +So far, you've only seen a functional interface for setting styles in +@ccmode{}, and this can't be used here. @ccmode{} fills the gap by +providing two variables for use in a file's local variable list. +Don't use them anywhere else! These allow you to customize the style +on a per-file basis: + +@defvar c-file-style +@vindex file-style (c-) +Set this variable to a style name string in the Local Variables list. +From now on, when you visit the file, @ccmode{} will automatically set +the file's style to this one using @code{c-set-style}. +@end defvar + +@defvar c-file-offsets +@vindex file-offsets (c-) +Set this variable (in the Local Variables list) to an association list +of the same format as @code{c-offsets-alist}. From now on, when you +visit the file, @ccmode{} will automatically institute these offsets +using @code{c-set-offset}. +@end defvar + +Note that file style settings (i.e. @code{c-file-style}) are applied +before file offset settings +(i.e. @code{c-file-offsets})@footnote{Also, if either of these are set +in a file's local variable section, all the style variable values are +made local to that buffer, even if +@code{c-style-variables-are-local-p} is @code{nil}. Since this +variable is virtually always non-@code{nil} anyhow, you're unlikely to +notice this effect.}. + +If you set any variables, including style variables, by the file local +variables mechanism, these settings take priority over all other +settings, even those in your mode hooks (@pxref{CC Hooks}). If you +use @code{c-file-style} or @code{c-file-offsets} and also explicitly +set a style variable in a local variable block, the explicit setting +will take priority. + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Custom Filling and Breaking, Custom Auto-newlines, Config Basics, Top +@comment node-name, next, previous, up +@chapter Customizing Filling and Line Breaking +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +Since there's a lot of normal text in comments and string literals, +@ccmode{} provides features to edit these like in text mode. It does +this by hooking in on the different line breaking functions and tuning +relevant variables as necessary. + +@vindex c-comment-prefix-regexp +@vindex comment-prefix-regexp (c-) +@cindex comment line prefix +@vindex comment-start +@vindex comment-end +@vindex comment-start-skip +@vindex paragraph-start +@vindex paragraph-separate +@vindex paragraph-ignore-fill-prefix +@vindex adaptive-fill-mode +@vindex adaptive-fill-regexp +@vindex adaptive-fill-first-line-regexp +To make Emacs recognize comments and treat text in them as normal +paragraphs, @ccmode{} makes several standard +variables@footnote{@code{comment-start}, @code{comment-end}, +@code{comment-start-skip}, @code{paragraph-start}, +@code{paragraph-separate}, @code{paragraph-ignore-fill-prefix}, +@code{adaptive-fill-mode}, @code{adaptive-fill-regexp}, and +@code{adaptive-fill-first-line-regexp}.} buffer-local and modifies them +according to the language syntax and the comment line prefix. + +@defopt c-comment-prefix-regexp +@vindex comment-prefix-regexp (c-) +This style variable contains the regexp used to recognize the +@dfn{comment line prefix}, which is the line decoration that starts +every line in a comment. The variable is either the comment line +prefix itself, or (more usually) an association list with different +values for different languages. The symbol for the major mode is +looked up in the alist to get the regexp for the language, and if it +isn't found then the special symbol @samp{other} is looked up instead. + +When a comment line gets divided by @kbd{M-j} or the like, @ccmode{} +inserts the comment line prefix from a neighbouring line at the start +of the new line. The default value of c-comment-prefix-regexp is +@samp{//+\\|\\**}, which matches C++ style line comments like + +@example +// blah blah +@end example + +@noindent +with two or more slashes in front of them, and the second and +subsequent lines of C style block comments like + +@example +@group +/* + * blah blah + */ +@end group +@end example + +@noindent +with zero or more stars at the beginning of every line. If you change +this variable, please make sure it still matches the comment starter +(i.e. @code{//}) of line comments @emph{and} the line prefix inside +block comments. + +@findex c-setup-paragraph-variables +@findex setup-paragraph-variables (c-) +Also note that since @ccmode{} uses the value of +@code{c-comment-prefix-regexp} to set up several other variables at +mode initialization, there won't be any effect if you just change it +inside a @ccmode{} buffer. You need to call the command +@code{c-setup-paragraph-variables} too, to update those other +variables. That's also the case if you modify +@code{c-comment-prefix-regexp} in a mode hook, since @ccmode{} will +already have set up these variables before calling the hook. +@end defopt + +In comments, @ccmode{} uses @code{c-comment-prefix-regexp} to adapt +the line prefix from the other lines in the comment. + +@vindex adaptive-fill-mode +@cindex Adaptive Fill mode +@ccmode{} uses adaptive fill mode (@pxref{Adaptive Fill,,, emacs, GNU +Emacs Manual}) to make Emacs correctly keep the line prefix when +filling paragraphs. That also makes Emacs preserve the text +indentation @emph{inside} the comment line prefix. E.g. in the +following comment, both paragraphs will be filled with the left +margins of the texts kept intact: + +@example +@group +/* Make a balanced b-tree of the nodes in the incoming + * stream. But, to quote the famous words of Donald E. + * Knuth, + * + * Beware of bugs in the above code; I have only + * proved it correct, not tried it. + */ +@end group +@end example + +@findex c-setup-filladapt +@findex setup-filladapt (c-) +@findex filladapt-mode +@vindex filladapt-mode +@cindex Filladapt mode +It's also possible to use other adaptive filling packages, notably Kyle +E. Jones' Filladapt package@footnote{It's available from +@uref{http://www.wonderworks.com/}. As of version 2.12, it does however +lack a feature that makes it work suboptimally when +@code{c-comment-prefix-regexp} matches the empty string (which it does +by default). A patch for that is available from +@uref{http://cc-mode.sourceforge.net/,, the CC Mode web site}.}, +@c 2005/11/22: The above is still believed to be the case. +which handles things like bulleted lists nicely. There's a convenience +function @code{c-setup-filladapt} that tunes the relevant variables in +Filladapt for use in @ccmode{}. Call it from a mode hook, e.g. with +something like this in your @file{.emacs}: + +@example +(defun my-c-mode-common-hook () + (c-setup-filladapt) + (filladapt-mode 1)) +(add-hook 'c-mode-common-hook 'my-c-mode-common-hook) +@end example + +@defopt c-block-comment-prefix +@vindex block-comment-prefix (c-) +@vindex c-comment-continuation-stars +@vindex comment-continuation-stars (c-) +Normally the comment line prefix inserted for a new line inside a +comment is deduced from other lines in it. However there's one +situation when there's no hint about what the prefix should look like, +namely when a block comment is broken for the first time. This style +variable@footnote{In versions before 5.26, this variable was called +@code{c-comment-continuation-stars}. As a compatibility measure, +@ccmode{} still uses the value on that variable if it's set.} is used +then as the comment prefix. It defaults to @samp{* +}@footnote{Actually, this default setting of +@code{c-block-comment-prefix} typically gets overridden by the default +style @code{gnu}, which sets it to blank. You can see the line +splitting effect described here by setting a different style, +e.g. @code{k&r} @xref{Choosing a Style}.}, which makes a comment + +@example +/* Got O(n^2) here, which is a Bad Thing. */ +@end example + +@noindent +break into + +@example +@group +/* Got O(n^2) here, which + * is a Bad Thing. */ +@end group +@end example + +Note that it won't work to adjust the indentation by putting leading +spaces in @code{c-block-comment-prefix}, since @ccmode{} still uses the +normal indentation engine to indent the line. Thus, the right way to +fix the indentation is by customizing the @code{c} syntactic symbol. It +defaults to @code{c-lineup-C-comments}, which handles the indentation of +most common comment styles, see @ref{Line-Up Functions}. +@end defopt + +@defopt c-ignore-auto-fill +@vindex ignore-auto-fill (c-) +When auto fill mode is enabled, @ccmode{} can selectively ignore it +depending on the context the line break would occur in, e.g. to never +break a line automatically inside a string literal. This variable +takes a list of symbols for the different contexts where auto-filling +never should occur: + +@table @code +@item string +Inside a string or character literal. +@item c +Inside a C style block comment. +@item c++ +Inside a C++ style line comment. +@item cpp +Inside a preprocessor directive. +@item code +Anywhere else, i.e. in normal code. +@end table + +By default, @code{c-ignore-auto-fill} is set to @code{(string cpp +code)}, which means that when auto-fill mode is activated, +auto-filling only occurs in comments. In literals, it's often +desirable to have explicit control over newlines. In preprocessor +directives, the necessary @samp{\} escape character before the newline +is not automatically inserted, so an automatic line break would +produce invalid code. In normal code, line breaks are normally +dictated by some logical structure in the code rather than the last +whitespace character, so automatic line breaks there will produce poor +results in the current implementation. +@end defopt + +@vindex comment-multi-line +If inside a comment and @code{comment-multi-line} (@pxref{Auto Fill,,, +@emacsman{}, @emacsmantitle{}} is non-@code{nil}, the indentation and +line prefix are preserved. If inside a comment and +@code{comment-multi-line} is @code{nil}, a new comment of the same +type is started on the next line and indented as appropriate for +comments. + +Note that @ccmode{} sets @code{comment-multi-line} to @code{t} at +startup. The reason is that @kbd{M-j} could otherwise produce sequences +of single line block comments for texts that should logically be treated +as one comment, and the rest of the paragraph handling code +(e.g. @kbd{M-q} and @kbd{M-a}) can't cope with that, which would lead to +inconsistent behavior. + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Custom Auto-newlines, Clean-ups, Custom Filling and Breaking, Top +@comment node-name, next, previous, up +@chapter Customizing Auto-newlines +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@ccmode{} determines whether to insert auto-newlines in two basically +different ways, depending on the character just typed: + +@table @asis +@item Braces and Colons +@ccmode{} first determines the syntactic context of the brace or colon +(@pxref{Syntactic Symbols}), then looks for a corresponding element in +an alist. This element specifies where to put newlines - this is any +combination of before and after the brace or colon. If no alist +element is found, newlines are inserted both before and after a brace, +but none are inserted around a colon. See @ref{Hanging Braces} and +@ref{Hanging Colons}. + +@item Semicolons and Commas +The variable @code{c-hanging-semi&comma-criteria} contains a list of +functions which determine whether to insert a newline after a newly +typed semicolon or comma. @xref{Hanging Semicolons and Commas}. +@end table + +The names of these configuration variables contain @samp{hanging} +because they let you @dfn{hang} the pertinent characters. A character +which introduces a C construct is said to @dfn{hang on the right} when +it appears at the end of a line after other code, being separated by a +line break from the construct it introduces, like the opening brace in: + +@example +@group +while (i < MAX) @{ + total += entry[i]; + entry [i++] = 0; +@} +@end group +@end example + +@noindent +A character @dfn{hangs on the left} when it appears at the start of +the line after the construct it closes off, like the above closing +brace. + +The next chapter, ``Clean-ups'', describes how to configure @ccmode{} +to remove these automatically added newlines in certain specific +circumstances. @xref{Clean-ups}. + +@menu +* Hanging Braces:: +* Hanging Colons:: +* Hanging Semicolons and Commas:: +@end menu + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Hanging Braces, Hanging Colons, Custom Auto-newlines, Custom Auto-newlines +@comment node-name, next, previous, up +@section Hanging Braces +@cindex hanging braces +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +To specify which kinds of braces you want auto-newlines put around, +you set the style variable @code{c-hanging-braces-alist}. Its +structure and semantics are described in this section. Details of how +to set it up, and its relationship to CC Mode's style system are given +in @ref{Style Variables}. + +Say you wanted an auto-newline after (but not before) the following +@samp{@{}: + +@example +if (foo < 17) @{ +@end example + +@noindent +First you need to find the @dfn{syntactic context} of the brace---type +a @key{RET} before the brace to get it on a line of its +own@footnote{Also insert a @samp{\} at the end of the previous line if +you're in AWK Mode.}, then type @kbd{C-c C-s}. That will tell you +something like: + +@example +((substatement-open 1061)) +@end example + +@noindent +So here you need to put the entry @code{(substatement-open . (after))} +into @code{c-hanging-braces-alist}. + +If you don't want any auto-newlines for a particular syntactic symbol, +put this into @code{c-hanging-braces-alist}: + +@example +(brace-entry-open) +@end example + +If some brace syntactic symbol is not in @code{c-hanging-brace-alist}, +its entry is taken by default as @code{(before after)}---insert a +newline both before and after the brace. In place of a +``before/after'' list you can specify a function in this alist---this +is useful when the auto newlines depend on the code around the brace. + +@defopt c-hanging-braces-alist +@vindex hanging-braces-alist (c-) + +This variable is an association list which maps syntactic symbols to +lists of places to insert a newline. @xref{Association +Lists,,,@lispref{}, @lispreftitle{}}. The key of each element is the +syntactic symbol, the associated value is either @code{nil}, a list, +or a function. + +@table @asis +@item The Key - the syntactic symbol +The syntactic symbols that are useful as keys in this list are +@code{brace-list-intro}, @code{statement-cont}, +@code{inexpr-class-open}, @code{inexpr-class-close}, and all the +@code{*-open} and @code{*-close} symbols. @xref{Syntactic Symbols}, +for a more detailed description of these syntactic symbols, except for +@code{inexpr-class-open} and @code{inexpr-class-close}, which aren't +actual syntactic symbols. Elements with any other value as a key get +ignored. + +The braces of anonymous inner classes in Java are given the special +symbols @code{inexpr-class-open} and @code{inexpr-class-close}, so that +they can be distinguished from the braces of normal classes@footnote{The +braces of anonymous classes produce a combination of +@code{inexpr-class}, and @code{class-open} or @code{class-close} in +normal indentation analysis.}. + +Note that the aggregate constructs in Pike mode, @samp{(@{}, @samp{@})}, +@samp{([}, @samp{])}, and @samp{(<}, @samp{>)}, do not count as brace +lists in this regard, even though they do for normal indentation +purposes. It's currently not possible to set automatic newlines on +these constructs. + +@item The associated value - the ``ACTION'' list or function +The value associated with each syntactic symbol in this association +list is called an @var{action}, which can be either a list or a +function which returns a list. @xref{Custom Braces}, for how to use +a function as a brace hanging @var{action}. + +The list @var{action} (or the list returned by @var{action} when it's +a function) contains some combination of the symbols @code{before} and +@code{after}, directing @ccmode{} where to put newlines in +relationship to the brace being inserted. Thus, if the list contains +only the symbol @code{after}, then the brace hangs on the right side +of the line, as in: + +@example +// here, open braces always `hang' +void spam( int i ) @{ + if( i == 7 ) @{ + dosomething(i); + @} +@} +@end example + +When the list contains both @code{after} and @code{before}, the braces +will appear on a line by themselves, as shown by the close braces in +the above example. The list can also be empty, in which case newlines +are added neither before nor after the brace. +@end table + +If a syntactic symbol is missing entirely from +@code{c-hanging-braces-alist}, it's treated in the same way as an +@var{action} with a list containing @code{before} and @code{after}, so +that braces by default end up on their own line. + +For example, the default value of @code{c-hanging-braces-alist} is: + +@example +((brace-list-open) + (brace-entry-open) + (statement-cont) + (substatement-open after) + (block-close . c-snug-do-while) + (extern-lang-open after) + (namespace-open after) + (module-open after) + (composition-open after) + (inexpr-class-open after) + (inexpr-class-close before)) +@end example + +@noindent which says that @code{brace-list-open}, +@code{brace-entry-open} and @code{statement-cont}@footnote{Brace lists +inside statements, such as initializers for static array variables +inside functions in C, are recognized as @code{statement-cont}. All +normal substatement blocks are recognized with other symbols.} braces +should both hang on the right side and allow subsequent text to follow +on the same line as the brace. Also, @code{substatement-open}, +@code{extern-lang-open}, and @code{inexpr-class-open} braces should hang +on the right side, but subsequent text should follow on the next line. +The opposite holds for @code{inexpr-class-close} braces; they won't +hang, but the following text continues on the same line. Here, in the +@code{block-close} entry, you also see an example of using a function as +an @var{action}. In all other cases, braces are put on a line by +themselves. +@end defopt + +@menu +* Custom Braces:: +@end menu + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Custom Braces, , Hanging Braces, Hanging Braces +@comment node-name, next, previous, up +@subsection Custom Brace Hanging +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@vindex c-hanging-braces-alist +@vindex hanging-braces-alist (c-) +@cindex action functions +Syntactic symbols aren't the only place where you can customize +@ccmode{} with the lisp equivalent of callback functions. Remember +that @var{action}s are usually a list containing some combination of +the symbols @code{before} and @code{after} (@pxref{Hanging Braces}). +For more flexibility, you can instead specify brace ``hanginess'' by +giving a syntactic symbol an @dfn{action function} in +@code{c-hanging-braces-alist}; this function determines the +``hanginess'' of a brace, usually by looking at the code near it. + +@cindex customization, brace hanging +An action function is called with two arguments: the syntactic symbol +for the brace (e.g. @code{substatement-open}), and the buffer position +where the brace has been inserted. Point is undefined on entry to an +action function, but the function must preserve it (e.g. by using +@code{save-excursion}). The return value should be a list containing +some combination of @code{before} and @code{after}, including neither +of them (i.e. @code{nil}). + +@defvar c-syntactic-context +@vindex syntactic-context (c-) +During the call to the indentation or brace hanging @var{action} +function, this variable is bound to the full syntactic analysis list. +This might be, for example, @samp{((block-close 73))}. Don't ever +give @code{c-syntactic-context} a value yourself---this would disrupt +the proper functioning of @ccmode{}. + +This variable is also bound in three other circumstances: +(i)@w{ }when calling a c-hanging-semi&comma-criteria function +(@pxref{Hanging Semicolons and Commas}); (ii)@w{ }when calling a +line-up function (@pxref{Custom Line-Up}); (iii)@w{ }when calling a +c-special-indent-hook function (@pxref{Other Indentation}). +@end defvar + +As an example, @ccmode{} itself uses this feature to dynamically +determine the hanginess of braces which close ``do-while'' +constructs: + +@example +void do_list( int count, char** atleast_one_string ) +@{ + int i=0; + do @{ + handle_string( atleast_one_string[i] ); + i++; + @} while( i < count ); +@} +@end example + +@ccmode{} assigns the @code{block-close} syntactic symbol to the +brace that closes the @code{do} construct, and normally we'd like the +line that follows a @code{block-close} brace to begin on a separate +line. However, with ``do-while'' constructs, we want the +@code{while} clause to follow the closing brace. To do this, we +associate the @code{block-close} symbol with the @var{action} function +@code{c-snug-do-while}: + +@example +(defun c-snug-do-while (syntax pos) + "Dynamically calculate brace hanginess for do-while statements." + (save-excursion + (let (langelem) + (if (and (eq syntax 'block-close) + (setq langelem (assq 'block-close c-syntactic-context)) + (progn (goto-char (cdr langelem)) + (if (= (following-char) ?@{) + (forward-sexp -1)) + (looking-at "\\[^_]"))) + '(before) + '(before after))))) +@end example + +@findex c-snug-do-while +@findex snug-do-while (c-) +This function simply looks to see if the brace closes a ``do-while'' +clause and if so, returns the list @samp{(before)} indicating +that a newline should be inserted before the brace, but not after it. +In all other cases, it returns the list @samp{(before after)} so +that the brace appears on a line by itself. + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Hanging Colons, Hanging Semicolons and Commas, Hanging Braces, Custom Auto-newlines +@comment node-name, next, previous, up +@section Hanging Colons +@cindex hanging colons +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@cindex customization, colon hanging +@vindex c-hanging-colons-alist +@vindex hanging-colons-alist (c-) + +Using a mechanism similar to brace hanging (@pxref{Hanging Braces}), +colons can also be made to hang using the style variable +@code{c-hanging-colons-alist} - When a colon is typed, @ccmode +determines its syntactic context, looks this up in the alist +@code{c-changing-colons-alist} and inserts up to two newlines +accordingly. Here, however, If @ccmode fails to find an entry for a +syntactic symbol in the alist, no newlines are inserted around the +newly typed colon. + +@defopt c-hanging-colons-alist +@vindex hanging-colons-alist (c-) + +@table @asis +@item The Key - the syntactic symbol +The syntactic symbols appropriate as keys in this association list +are: @code{case-label}, @code{label}, @code{access-label}, +@code{member-init-intro}, and @code{inher-intro}. @xref{Syntactic +Symbols}. Elements with any other value as a key get ignored. + +@item The associate value - the ``ACTION'' list +The @var{action} here is simply a list containing a combination of the +symbols @code{before} and @code{after}. Unlike in +@code{c-hanging-braces-alist}, functions as @var{actions} are not +supported - there doesn't seem to be any need for them. +@end table +@end defopt + +In C++, double-colons are used as a scope operator but because these +colons always appear right next to each other, newlines before and after +them are controlled by a different mechanism, called @dfn{clean-ups} in +@ccmode{}. @xref{Clean-ups}, for details. + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Hanging Semicolons and Commas, , Hanging Colons, Custom Auto-newlines +@comment node-name, next, previous, up +@section Hanging Semicolons and Commas +@cindex hanging semicolons +@cindex hanging commas +@cindex customization, semicolon newlines +@cindex customization, comma newlines +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@defopt c-hanging-semi&comma-criteria +@vindex hanging-semi&comma-criteria (c-) +This style variable takes a list of functions; these get called when +you type a semicolon or comma. The functions are called in order +without arguments. When these functions are entered, point is just +after the newly inserted @samp{;} or @samp{,} and they must preserve +point (e.g., by using @code{save-excursion}). During the call, the +variable @code{c-syntactic-context} is bound to the syntactic context +of the current line@footnote{This was first introduced in @ccmode{} +5.31.} @pxref{Custom Braces}. These functions don't insert newlines +themselves, rather they direct @ccmode{} whether or not to do so. +They should return one of the following values: + +@table @code +@item t +A newline is to be inserted after the @samp{;} or @samp{,}, and no +more functions from the list are to be called. +@item stop +No more functions from the list are to be called, and no newline is to +be inserted. +@item nil +No determination has been made, and the next function in the list is +to be called. +@end table + +Note that auto-newlines are never inserted @emph{before} a semicolon +or comma. If every function in the list is called without a +determination being made, then no newline is added. + +In AWK mode, this variable is set by default to @code{nil}. In the +other modes, the default value is a list containing a single function, +@code{c-semi&comma-inside-parenlist}. This inserts newlines after all +semicolons, apart from those separating @code{for}-clause statements. +@end defopt + +@defun c-semi&comma-no-newlines-before-nonblanks +@findex semi&comma-no-newlines-before-nonblanks (c-) +This is an example of a criteria function, provided by @ccmode{}. It +prevents newlines from being inserted after semicolons when there is a +non-blank following line. Otherwise, it makes no determination. To +use, add this function to the front of the +@code{c-hanging-semi&comma-criteria} list. + +@example +(defun c-semi&comma-no-newlines-before-nonblanks () + (save-excursion + (if (and (eq last-command-char ?\;) + (zerop (forward-line 1)) + (not (looking-at "^[ \t]*$"))) + 'stop + nil))) +@end example +@end defun + +@defun c-semi&comma-inside-parenlist +@findex semi&comma-inside-parenlist (c-) +@defunx c-semi&comma-no-newlines-for-oneline-inliners +@findex semi&comma-no-newlines-for-oneline-inliners (c-) +The function @code{c-semi&comma-inside-parenlist} is what prevents +newlines from being inserted inside the parenthesis list of @code{for} +statements. In addition to +@code{c-semi&comma-no-newlines-before-nonblanks} described above, +@ccmode{} also comes with the criteria function +@code{c-semi&comma-no-newlines-for-oneline-inliners}, which suppresses +newlines after semicolons inside one-line inline method definitions +(e.g. in C++ or Java). +@end defun + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Clean-ups, Indentation Engine Basics, Custom Auto-newlines, Top +@comment node-name, next, previous, up +@chapter Clean-ups +@cindex clean-ups +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@dfn{Clean-ups} are mechanisms which remove (or exceptionally, add) +whitespace in specific circumstances and are complementary to colon +and brace hanging. You enable a clean-up by adding its symbol into +@code{c-cleanup-list}, e.g. like this: + +@example +(add-to-list 'c-cleanup-list 'space-before-funcall) +@end example + +On the surface, it would seem that clean-ups overlap the functionality +provided by the @code{c-hanging-*-alist} variables. Clean-ups, +however, are used to adjust code ``after-the-fact'', i.e. to adjust +the whitespace in constructs later than when they were typed. + +Most of the clean-ups remove automatically inserted newlines, and are +only active when auto-newline minor mode is turned on. Others will +work all the time. Note that clean-ups are only performed when there +is nothing but whitespace appearing between the individual components +of the construct, and (apart from @code{comment-close-slash}) when the +construct does not occur within a literal (@pxref{Auto-newlines}). + +@defopt c-cleanup-list +@vindex cleanup-list (c-) +@cindex literal + +You configure @ccmode{}'s clean-ups by setting the style variable +@code{c-cleanup-list}, which is a list of clean-up symbols. By +default, @ccmode{} cleans up only the @code{scope-operator} construct, +which is necessary for proper C++ support. +@end defopt + +These are the clean-ups that are only active when electric and +auto-newline minor modes are enabled: + +@c TBD: Would like to use some sort of @deffoo here; @table indents a +@c bit too much in dvi output. +@table @code +@item brace-else-brace +Clean up @samp{@} else @{} constructs by placing the entire construct on +a single line. Clean up occurs when the open brace after the +@samp{else} is typed. So for example, this: + +@example +@group +void spam(int i) +@{ + if( i==7 ) @{ + dosomething(); + @} + else + @{ +@end group +@end example + +@noindent +appears like this after the last open brace is typed: + +@example +@group +void spam(int i) +@{ + if( i==7 ) @{ + dosomething(); + @} else @{ +@end group +@end example + +@item brace-elseif-brace +Similar to the @code{brace-else-brace} clean-up, but this cleans up +@samp{@} else if (...) @{} constructs. For example: + +@example +@group +void spam(int i) +@{ + if( i==7 ) @{ + dosomething(); + @} + else if( i==3 ) + @{ +@end group +@end example + +@noindent +appears like this after the last open parenthesis is typed: + +@example +@group +void spam(int i) +@{ + if( i==7 ) @{ + dosomething(); + @} else if( +@end group +@end example + +@noindent +and like this after the last open brace is typed: + +@example +@group +void spam(int i) +@{ + if( i==7 ) @{ + dosomething(); + @} else if( i==3 ) @{ +@end group +@end example + +@item brace-catch-brace +Analogous to @code{brace-elseif-brace}, but cleans up @samp{@} catch +(...) @{} in C++ and Java mode. + +@item empty-defun-braces +Clean up braces following a top-level function or class definition that +contains no body. Clean up occurs when the closing brace is typed. +Thus the following: + +@example +@group +class Spam +@{ +@} +@end group +@end example + +@noindent +is transformed into this when the close brace is typed: + +@example +@group +class Spam +@{@} +@end group +@end example + +@item defun-close-semi +Clean up the terminating semicolon on top-level function or class +definitions when they follow a close brace. Clean up occurs when the +semicolon is typed. So for example, the following: + +@example +@group +class Spam +@{ +... +@} +; +@end group +@end example + +@noindent +is transformed into this when the semicolon is typed: + +@example +@group +class Spam +@{ +... +@}; +@end group +@end example + +@item list-close-comma +Clean up commas following braces in array and aggregate initializers. +Clean up occurs when the comma is typed. The space before the comma +is zapped just like the space before the semicolon in +@code{defun-close-semi}. + +@item scope-operator +Clean up double colons which might designate a C++ scope operator split +across multiple lines@footnote{Certain C++ constructs introduce +ambiguous situations, so @code{scope-operator} clean-ups might not +always be correct. This usually only occurs when scoped identifiers +appear in switch label tags.}. Clean up occurs when the second colon is +typed. You will always want @code{scope-operator} in the +@code{c-cleanup-list} when you are editing C++ code. + +@item one-liner-defun +Clean up a single line of code enclosed by defun braces by removing +the whitespace before and after the code. The clean-up happens when +the closing brace is typed. If the variable +@code{c-max-one-liner-length} is set, the cleanup is only done if the +resulting line would be no longer than the value of that variable. + +For example, consider this AWK code: + +@example +@group +BEGIN @{ + FS = "\t" # use as a field separator +@} +@end group +@end example + +@noindent +It gets compacted to the following when the closing brace is typed: + +@example +@group +BEGIN @{FS = "\t"@} # use as a field separator +@end group +@end example + +@defopt c-max-one-liner-length +@vindex max-one-liner-length (c-) +The maximum length of the resulting line for which the clean-up +@code{one-liner-defun} will be triggered. This length is that of the entire +line, including any leading whitespace and any trailing comment. Its +default value is 80. If the value is zero or @code{nil}, no limit +applies. +@end defopt +@end table + +The following clean-ups are always active when they occur on +@code{c-cleanup-list}, regardless of whether Electric minor mode or +Auto-newline minor mode are enabled: + +@table @code +@item space-before-funcall +Insert a space between the function name and the opening parenthesis +of a function call. This produces function calls in the style +mandated by the GNU coding standards, e.g. @samp{signal@w{ }(SIGINT, +SIG_IGN)} and @samp{abort@w{ }()}. Clean up occurs when the opening +parenthesis is typed. This clean-up should never be active in AWK +Mode, since such a space is syntactically invalid for user defined +functions. + +@item compact-empty-funcall +Clean up any space between the function name and the opening parenthesis +of a function call that has no arguments. This is typically used +together with @code{space-before-funcall} if you prefer the GNU function +call style for functions with arguments but think it looks ugly when +it's only an empty parenthesis pair. I.e. you will get @samp{signal +(SIGINT, SIG_IGN)}, but @samp{abort()}. Clean up occurs when the +closing parenthesis is typed. + +@item comment-close-slash +When inside a block comment, terminate the comment when you type a slash +at the beginning of a line (i.e. immediately after the comment prefix). +This clean-up removes whitespace preceding the slash and if needed, +inserts a star to complete the token @samp{*/}. Type @kbd{C-q /} in this +situation if you just want a literal @samp{/} inserted. +@end table + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Indentation Engine Basics, Customizing Indentation, Clean-ups, Top +@comment node-name, next, previous, up +@chapter Indentation Engine Basics +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +This chapter will briefly cover how @ccmode{} indents lines of code. +It is helpful to understand the indentation model being used so that +you will know how to customize @ccmode{} for your personal coding +style. All the details are in @ref{Customizing Indentation}. + +@ccmode{} has an indentation engine that provides a flexible and +general mechanism for customizing indentation. When @ccmode{} indents +a line of code, it separates its calculations into two steps: + +@enumerate +@item +@cindex syntactic symbol +@cindex anchor position +It analyzes the line to determine its @dfn{syntactic symbol(s)} (the +kind of language construct it's looking at) and its @dfn{anchor +position} (the position earlier in the file that @ccmode{} will indent +the line relative to). The anchor position might be the location of +an opening brace in the previous line, for example. @xref{Syntactic +Analysis}. +@item +@cindex offsets +@cindex indentation offset specifications +It looks up the syntactic symbol(s) in the configuration to get the +corresponding @dfn{offset(s)}. The symbol @code{+}, which means +``indent this line one more level'' is a typical offset. @ccmode{} +then applies these offset(s) to the anchor position, giving the +indentation for the line. The different sorts of offsets are +described in @ref{c-offsets-alist}. +@end enumerate + +In exceptional circumstances, the syntax directed indentation +described here may be a nuisance rather than a help. You can disable +it by setting @code{c-syntactic-indentation} to @code{nil}. (To set +the variable interactively, @ref{Minor Modes}). + +@defopt c-syntactic-indentation +@vindex syntactic-indentation (c-) +When this is non-@code{nil} (which it is by default), the indentation +of code is done according to its syntactic structure. When it's +@code{nil}, every line is just indented to the same level as the +previous one, and @kbd{TAB} (@code{c-indent-command}) adjusts the +indentation in steps of @code{c-basic-offset}. The current style +(@pxref{Config Basics}) then has no effect on indentation, nor do any +of the variables associated with indentation, not even +@code{c-special-indent-hook}. +@end defopt + +@menu +* Syntactic Analysis:: +* Syntactic Symbols:: +* Indentation Calculation:: +@end menu + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Syntactic Analysis, Syntactic Symbols, Indentation Engine Basics, Indentation Engine Basics +@comment node-name, next, previous, up +@section Syntactic Analysis +@cindex syntactic analysis +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@cindex syntactic element +@cindex syntactic context +The first thing @ccmode{} does when indenting a line of code, is to +analyze the line, determining the @dfn{syntactic context} of the +(first) construct on that line. It's a list of @dfn{syntactic +elements}, where each syntactic element in turn is a list@footnote{In +@ccmode 5.28 and earlier, a syntactic element was a dotted pair; the +cons was the syntactic symbol and the cdr was the anchor position. +For compatibility's sake, the parameter passed to a line-up function +still has this dotted pair form (@pxref{Custom Line-Up}).} Here is a +brief and typical example: + +@example +((defun-block-intro 1959)) +@end example + +@cindex syntactic symbol +@noindent +The first thing inside each syntactic element is always a +@dfn{syntactic symbol}. It describes the kind of construct that was +recognized, e.g. @code{statement}, @code{substatement}, +@code{class-open}, @code{class-close}, etc. @xref{Syntactic Symbols}, +for a complete list of currently recognized syntactic symbols and +their semantics. The remaining entries are various data associated +with the recognized construct - there might be zero or more. + +@cindex anchor position +Conceptually, a line of code is always indented relative to some +position higher up in the buffer (typically the indentation of the +previous line). That position is the @dfn{anchor position} in the +syntactic element. If there is an entry after the syntactic symbol in +the syntactic element list then it's either nil or that anchor position. + +Here is an example. Suppose we had the following code as the only thing +in a C++ buffer @footnote{The line numbers in this and future examples +don't actually appear in the buffer, of course!}: + +@example + 1: void swap( int& a, int& b ) + 2: @{ + 3: int tmp = a; + 4: a = b; + 5: b = tmp; + 6: @} +@end example + +@noindent +We can use @kbd{C-c C-s} (@code{c-show-syntactic-information}) to +report what the syntactic analysis is for the current line: + +@table @asis +@item @kbd{C-c C-s} (@code{c-show-syntactic-information}) +@kindex C-c C-s +@findex c-show-syntactic-information +@findex show-syntactic-information (c-) +This command calculates the syntactic analysis of the current line and +displays it in the minibuffer. The command also highlights the anchor +position(s). +@end table + + Running this command on line 4 of this example, we'd see in the echo +area@footnote{With a universal argument (i.e. @kbd{C-u C-c C-s}) the +analysis is inserted into the buffer as a comment on the current +line.}: + +@example +((statement 35)) +@end example + +@noindent +and the @samp{i} of @code{int} on line 3 would be highlighted. This +tells us that the line is a statement and it is indented relative to +buffer position 35, the highlighted position. If you were to move +point to line 3 and hit @kbd{C-c C-s}, you would see: + +@example +((defun-block-intro 29)) +@end example + +@noindent +This indicates that the @samp{int} line is the first statement in a top +level function block, and is indented relative to buffer position 29, +which is the brace just after the function header. + +Here's another example: + +@example + 1: int add( int val, int incr, int doit ) + 2: @{ + 3: if( doit ) + 4: @{ + 5: return( val + incr ); + 6: @} + 7: return( val ); + 8: @} +@end example + +@noindent +Hitting @kbd{C-c C-s} on line 4 gives us: + +@example +((substatement-open 46)) +@end example + +@cindex substatement +@cindex substatement block +@noindent +which tells us that this is a brace that @emph{opens} a substatement +block. @footnote{A @dfn{substatement} is the line after a +conditional statement, such as @code{if}, @code{else}, @code{while}, +@code{do}, @code{switch}, etc. A @dfn{substatement +block} is a brace block following one of these conditional statements.} + +@cindex comment-only line +Syntactic contexts can contain more than one element, and syntactic +elements need not have anchor positions. The most common example of +this is a @dfn{comment-only line}: + +@example + 1: void draw_list( List& drawables ) + 2: @{ + 3: // call the virtual draw() method on each element in list + 4: for( int i=0; i < drawables.count(), ++i ) + 5: @{ + 6: drawables[i].draw(); + 7: @} + 8: @} +@end example + +@noindent +Hitting @kbd{C-c C-s} on line 3 of this example gives: + +@example +((comment-intro) (defun-block-intro 46)) +@end example + +@noindent +and you can see that the syntactic context contains two syntactic +elements. Notice that the first element, @samp{(comment-intro)}, has no +anchor position. + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Syntactic Symbols, Indentation Calculation, Syntactic Analysis, Indentation Engine Basics +@comment node-name, next, previous, up +@section Syntactic Symbols +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@cindex syntactic symbols, brief list +@vindex c-offsets-alist +@vindex offsets-alist (c-) +This section is a complete list of the syntactic symbols which appear +in the @code{c-offsets-alist} style variable, along with brief +descriptions. The previous section (@pxref{Syntactic Analysis}) +states what syntactic symbols are and how the indentation engine uses +them. + +More detailed descriptions of these symbols, together with snippets of +source code to which they apply, appear in the examples in the +subsections below. Note that, in the interests of brevity, the anchor +position associated with most syntactic symbols is @emph{not} +specified. In cases of doubt, type @kbd{C-c C-s} on a pertinent +line---this highlights the anchor position. + +@ssindex -open symbols +@ssindex -close symbols +@ssindex -block-intro symbols +The syntactic symbols which indicate brace constructs follow a general +naming convention. When a line begins with an open or close brace, +its syntactic symbol will contain the suffix @code{-open} or +@code{-close} respectively. The first line within the brace block +construct will contain the suffix @code{-block-intro}. + +@ssindex -intro symbols +@ssindex -cont symbols +In constructs which can span several lines, a distinction is usually +made between the first line that introduces the construct and the +lines that continue it. The syntactic symbols that indicate these +lines will contain the suffixes @code{-intro} or @code{-cont} +respectively. + +The best way to understand how all this works is by looking at some +examples. Remember that you can see the syntax of any source code +line by using @kbd{C-c C-s}. + +@table @code +@item string +Inside a multiline string. @ref{Literal Symbols}. +@item c +Inside a multiline C style block comment. @ref{Literal Symbols}. +@item defun-open +Brace that opens a top-level function definition. @ref{Function +Symbols}. +@item defun-close +Brace that closes a top-level function definition. @ref{Function +Symbols}. +@item defun-block-intro +The first line in a top-level defun. @ref{Function Symbols}. +@item class-open +Brace that opens a class definition. @ref{Class Symbols}. +@item class-close +Brace that closes a class definition. @ref{Class Symbols}. +@item inline-open +Brace that opens an in-class inline method. @ref{Class Symbols}. +@item inline-close +Brace that closes an in-class inline method. @ref{Class Symbols}. +@item func-decl-cont +The region between a function definition's argument list and the +function opening brace (excluding K&R argument declarations). In C, +you cannot put anything but whitespace and comments in this region, +however in C++ and Java, @code{throws} declarations and other things +can appear here. @ref{Literal Symbols}. @c @emph{FIXME!!! Can it not +@c go somewhere better?} +@item knr-argdecl-intro +First line of a K&R C argument declaration. @ref{K&R Symbols}. +@item knr-argdecl +Subsequent lines in a K&R C argument declaration. @ref{K&R Symbols}. +@item topmost-intro +The first line in a ``topmost'' definition. @ref{Function Symbols}. +@item topmost-intro-cont +Topmost definition continuation lines. This is only used in the parts +that aren't covered by other symbols such as @code{func-decl-cont} and +@code{knr-argdecl}. @ref{Function Symbols}. +@item member-init-intro +First line in a member initialization list. @ref{Class Symbols}. +@item member-init-cont +Subsequent member initialization list lines. @ref{Class Symbols}. +@item inher-intro +First line of a multiple inheritance list. @ref{Class Symbols}. +@item inher-cont +Subsequent multiple inheritance lines. @ref{Class Symbols}. +@item block-open +Statement block open brace. @ref{Literal Symbols}. +@item block-close +Statement block close brace. @ref{Conditional Construct Symbols}. +@item brace-list-open +Open brace of an enum or static array list. @ref{Brace List Symbols}. +@item brace-list-close +Close brace of an enum or static array list. @ref{Brace List Symbols}. +@item brace-list-intro +First line in an enum or static array list. @ref{Brace List Symbols}. +@item brace-list-entry +Subsequent lines in an enum or static array list. @ref{Brace List +Symbols}. +@item brace-entry-open +Subsequent lines in an enum or static array list where the line begins +with an open brace. @ref{Brace List Symbols}. +@item statement +A statement. @ref{Function Symbols}. +@item statement-cont +A continuation of a statement. @ref{Function Symbols}. +@item statement-block-intro +The first line in a new statement block. @ref{Conditional Construct +Symbols}. +@item statement-case-intro +The first line in a case block. @ref{Switch Statement Symbols}. +@item statement-case-open +The first line in a case block that starts with a brace. @ref{Switch +Statement Symbols}. +@item substatement +The first line after a conditional or loop construct. +@ref{Conditional Construct Symbols}. +@item substatement-open +The brace that opens a substatement block. @ref{Conditional Construct +Symbols}. +@item substatement-label +The first line after a conditional or loop construct if it's a label. +@ref{Conditional Construct Symbols}. +@item case-label +A label in a @code{switch} block. @ref{Switch Statement Symbols}. +@item access-label +C++ access control label. @ref{Class Symbols}. +@item label +Any other label. @ref{Literal Symbols}. +@item do-while-closure +The @code{while} line that ends a @code{do}-@code{while} construct. +@ref{Conditional Construct Symbols}. +@item else-clause +The @code{else} line of an @code{if}-@code{else} construct. +@ref{Conditional Construct Symbols}. +@item catch-clause +The @code{catch} or @code{finally} (in Java) line of a +@code{try}-@code{catch} construct. @ref{Conditional Construct +Symbols}. +@item comment-intro +A line containing only a comment introduction. @ref{Literal Symbols}. +@item arglist-intro +The first line in an argument list. @ref{Paren List Symbols}. +@item arglist-cont +Subsequent argument list lines when no arguments follow on the same +line as the arglist opening paren. @ref{Paren List Symbols}. +@item arglist-cont-nonempty +Subsequent argument list lines when at least one argument follows on +the same line as the arglist opening paren. @ref{Paren List Symbols}. +@item arglist-close +The solo close paren of an argument list. @ref{Paren List Symbols}. +@item stream-op +Lines continuing a stream operator (C++ only). @ref{Literal +Symbols}. @c @emph{FIXME!!! Can this not be moved somewhere better?} +@item inclass +The line is nested inside a class definition. @ref{Class Symbols}. +@item cpp-macro +The start of a preprocessor macro definition. @ref{Literal Symbols}. +@item cpp-define-intro +The first line inside a multiline preprocessor macro if +@code{c-syntactic-indentation-in-macros} is set. @ref{Multiline Macro +Symbols}. +@item cpp-macro-cont +All lines inside multiline preprocessor macros if +@code{c-syntactic-indentation-in-macros} is @code{nil}. +@ref{Multiline Macro Symbols}. +@item friend +A C++ friend declaration. @ref{Class Symbols}. +@item objc-method-intro +The first line of an Objective-C method definition. @ref{Objective-C +Method Symbols}. +@item objc-method-args-cont +Lines continuing an Objective-C method definition. @ref{Objective-C +Method Symbols}. +@item objc-method-call-cont +Lines continuing an Objective-C method call. @ref{Objective-C Method +Symbols}. +@item extern-lang-open +Brace that opens an @code{extern} block (e.g. @code{extern "C" +@{...@}}). @ref{External Scope Symbols}. +@item extern-lang-close +Brace that closes an @code{extern} block. @ref{External Scope +Symbols}. +@item inextern-lang +Analogous to @code{inclass} syntactic symbol, but used inside +@code{extern} blocks. @ref{External Scope Symbols}. +@item namespace-open +@itemx namespace-close +@itemx innamespace +These are analogous to the three @code{extern-lang} symbols above, but +are returned for C++ namespace blocks. @ref{External Scope Symbols}. +@item module-open +@itemx module-close +@itemx inmodule +Analogous to the above, but for CORBA IDL @code{module} blocks. +@ref{External Scope Symbols}. +@item composition-open +@itemx composition-close +@itemx incomposition +Analogous to the above, but for CORBA CIDL @code{composition} blocks. +@ref{External Scope Symbols}. +@item template-args-cont +C++ template argument list continuations. @ref{Class Symbols}. +@item inlambda +Analogous to @code{inclass} syntactic symbol, but used inside lambda +(i.e. anonymous) functions. Only used in Pike mode. @ref{Statement +Block Symbols}. +@item lambda-intro-cont +Lines continuing the header of a lambda function, i.e. between the +@code{lambda} keyword and the function body. Only used in Pike mode. +@ref{Statement Block Symbols}. +@item inexpr-statement +A statement block inside an expression. The gcc C and C++ extension +for this is recognized. It's also used for the special functions that +take a statement block as an argument in Pike. @ref{Statement Block +Symbols}. +@item inexpr-class +A class definition inside an expression. This is used for anonymous +classes in Java. It's also used for anonymous array initializers in +Java. @ref{Anonymous Class Symbol}. +@end table + +@menu +* Function Symbols:: +* Class Symbols:: +* Conditional Construct Symbols:: +* Switch Statement Symbols:: +* Brace List Symbols:: +* External Scope Symbols:: +* Paren List Symbols:: +* Literal Symbols:: +* Multiline Macro Symbols:: +* Objective-C Method Symbols:: +* Anonymous Class Symbol:: +* Statement Block Symbols:: +* K&R Symbols:: +@end menu + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Function Symbols, Class Symbols, Syntactic Symbols, Syntactic Symbols +@comment node-name, next, previous, up +@subsection Function Symbols +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +This example shows a typical function declaration. + +@example + 1: void + 2: swap( int& a, int& b ) + 3: @{ + 4: int tmp = a; + 5: a = b; + 6: b = tmp; + 7: int ignored = + 8: a + b; + 9: @} +@end example + +@ssindex topmost-intro +@ssindex topmost-intro-cont +@ssindex defun-open +@ssindex defun-close +@ssindex defun-block-intro +Line 1 shows a @code{topmost-intro} since it is the first line that +introduces a top-level construct. Line 2 is a continuation of the +top-level construct introduction so it has the syntax +@code{topmost-intro-cont}. Line 3 shows a @code{defun-open} since it is +the brace that opens a top-level function definition. Line 9 is the +corresponding +@code{defun-close} since it contains the brace that closes the top-level +function definition. Line 4 is a @code{defun-block-intro}, i.e. it is +the first line of a brace-block, enclosed in a +top-level function definition. + +@ssindex statement +@ssindex statement-cont +Lines 5, 6, and 7 are all given @code{statement} syntax since there +isn't much special about them. Note however that line 8 is given +@code{statement-cont} syntax since it continues the statement begun +on the previous line. + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Class Symbols, Conditional Construct Symbols, Function Symbols, Syntactic Symbols +@comment node-name, next, previous, up +@subsection Class related Symbols +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +Here's an example which illustrates some C++ class syntactic symbols: + +@example + 1: class Bass + 2: : public Guitar, + 3: public Amplifiable + 4: @{ + 5: public: + 6: Bass() + 7: : eString( new BassString( 0.105 )), + 8: aString( new BassString( 0.085 )), + 9: dString( new BassString( 0.065 )), +10: gString( new BassString( 0.045 )) +11: @{ +12: eString.tune( 'E' ); +13: aString.tune( 'A' ); +14: dString.tune( 'D' ); +15: gString.tune( 'G' ); +16: @} +17: friend class Luthier; +18: @}; +@end example + +@ssindex class-open +@ssindex class-close +As in the previous example, line 1 has the @code{topmost-intro} syntax. +Here however, the brace that opens a C++ class definition on line 4 is +assigned the @code{class-open} syntax. Note that in C++, classes, +structs, and unions are essentially equivalent syntactically (and are +very similar semantically), so replacing the @code{class} keyword in the +example above with @code{struct} or @code{union} would still result in a +syntax of @code{class-open} for line 4 @footnote{This is the case even +for C and Objective-C. For consistency, structs in all supported +languages are syntactically equivalent to classes. Note however that +the keyword @code{class} is meaningless in C and Objective-C.}. +Similarly, line 18 is assigned @code{class-close} syntax. + +@ssindex inher-intro +@ssindex inher-cont +Line 2 introduces the inheritance list for the class so it is assigned +the @code{inher-intro} syntax, and line 3, which continues the +inheritance list is given @code{inher-cont} syntax. + +@ssindex access-label +@ssindex inclass +Hitting @kbd{C-c C-s} on line 5 shows the following analysis: + +@example +((inclass 58) (access-label 58)) +@end example + +@noindent +The primary syntactic symbol for this line is @code{access-label} as +this a label keyword that specifies access protection in C++. However, +because this line is also a top-level construct inside a class +definition, the analysis actually shows two syntactic symbols. The +other syntactic symbol assigned to this line is @code{inclass}. +Similarly, line 6 is given both @code{inclass} and @code{topmost-intro} +syntax: + +@example +((inclass 58) (topmost-intro 60)) +@end example + +@ssindex member-init-intro +@ssindex member-init-cont +Line 7 introduces a C++ member initialization list and as such is given +@code{member-init-intro} syntax. Note that in this case it is +@emph{not} assigned @code{inclass} since this is not considered a +top-level construct. Lines 8 through 10 are all assigned +@code{member-init-cont} since they continue the member initialization +list started on line 7. + +@cindex in-class inline methods +@ssindex inline-open +@ssindex inline-close +Line 11's analysis is a bit more complicated: + +@example +((inclass 58) (inline-open)) +@end example + +This line is assigned a syntax of both @code{inline-open} and +@code{inclass} because it opens an @dfn{in-class} C++ inline method +definition. This is distinct from, but related to, the C++ notion of an +inline function in that its definition occurs inside an enclosing class +definition, which in C++ implies that the function should be inlined. +However, if the definition of the @code{Bass} constructor appeared +outside the class definition, the construct would be given the +@code{defun-open} syntax, even if the keyword @code{inline} appeared +before the method name, as in: + +@example + 1: class Bass + 2: : public Guitar, + 3: public Amplifiable + 4: @{ + 5: public: + 6: Bass(); + 7: @}; + 8: + 9: inline +10: Bass::Bass() +11: : eString( new BassString( 0.105 )), +12: aString( new BassString( 0.085 )), +13: dString( new BassString( 0.065 )), +14: gString( new BassString( 0.045 )) +15: @{ +16: eString.tune( 'E' ); +17: aString.tune( 'A' ); +18: dString.tune( 'D' ); +19: gString.tune( 'G' ); +20: @} +@end example + +@ssindex friend +Returning to the previous example, line 16 is given @code{inline-close} +syntax, while line 12 is given @code{defun-block-open} syntax, and lines +13 through 15 are all given @code{statement} syntax. Line 17 is +interesting in that its syntactic analysis list contains three +elements: + +@example +((inclass 58) (topmost-intro 380) (friend)) +@end example + +The @code{friend} and @code{inline-open} syntactic symbols are +modifiers that do not have anchor positions. + +@ssindex template-args-cont +Template definitions introduce yet another syntactic symbol: + +@example + 1: ThingManager framework_callbacks; +@end example + +Here, line 1 is analyzed as a @code{topmost-intro}, but lines 2 and 3 +are both analyzed as @code{template-args-cont} lines. + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Conditional Construct Symbols, Switch Statement Symbols, Class Symbols, Syntactic Symbols +@comment node-name, next, previous, up +@subsection Conditional Construct Symbols +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +Here is a (totally contrived) example which illustrates how syntax is +assigned to various conditional constructs: + +@example + 1: void spam( int index ) + 2: @{ + 3: for( int i=0; i 0 ); +15: @} +@end example + +Only the lines that illustrate new syntactic symbols will be discussed. + +@ssindex substatement-open +@ssindex statement-block-intro +@ssindex block-close +Line 4 has a brace which opens a conditional's substatement block. It +is thus assigned @code{substatement-open} syntax, and since line 5 is +the first line in the substatement block, it is assigned +@code{statement-block-intro} syntax. Line 10 contains the brace +that closes the inner substatement block, and is therefore given the +syntax @code{block-close}@footnote{@code{block-open} is used only for +``free-standing'' blocks, and is somewhat rare (@pxref{Literal +Symbols} for an example.)}. Line 13 is treated the same way. + +@ssindex substatement +Lines 6 and 9 are also substatements of conditionals, but since they +don't start blocks they are given @code{substatement} syntax +instead of @code{substatement-open}. + +@ssindex substatement-label +Line 8 contains a label, which is normally given @code{label} syntax. +This one is however a bit special since it's between a conditional and +its substatement. It's analyzed as @code{substatement-label} to let you +handle this rather odd case differently from normal labels. + +@ssindex else-clause +@ssindex catch-clause +Line 7 start with an @code{else} that matches the @code{if} statement on +line 5. It is therefore given the @code{else-clause} syntax and is +anchored on the matching @code{if}. The @code{try}-@code{catch} +constructs in C++ and Java are treated this way too, except that +@code{catch} and (in Java) @code{finally}, are marked with +@code{catch-clause}. + +@ssindex do-while-closure +The @code{while} construct on line 14 that closes a @code{do} +conditional is given the special syntax @code{do-while-closure} if it +appears on a line by itself. Note that if the @code{while} appeared on +the same line as the preceding close brace, that line would still have +@code{block-close} syntax. + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Switch Statement Symbols, Brace List Symbols, Conditional Construct Symbols, Syntactic Symbols +@comment node-name, next, previous, up +@subsection Switch Statement Symbols +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +Switch statements have their own set of syntactic symbols. Here's an +example: + +@example + 1: void spam( enum Ingredient i ) + 2: @{ + 3: switch( i ) @{ + 4: case Ham: + 5: be_a_pig(); + 6: break; + 7: case Salt: + 8: drink_some_water(); + 9: break; +10: default: +11: @{ +12: what_is_it(); +13: break; +14: @} +15: @} +14: @} +@end example + +@ssindex case-label +@ssindex statement-case-intro +@ssindex statement-case-open +Here, lines 4, 7, and 10 are all assigned @code{case-label} syntax, +while lines 5 and 8 are assigned @code{statement-case-intro}. Line 11 +is treated slightly differently since it contains a brace that opens a +block --- it is given @code{statement-case-open} syntax. + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Brace List Symbols, External Scope Symbols, Switch Statement Symbols, Syntactic Symbols +@comment node-name, next, previous, up +@subsection Brace List Symbols +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@cindex brace lists +There are a set of syntactic symbols that are used to recognize +constructs inside of brace lists. A brace list is defined as an +@code{enum} or aggregate initializer list, such as might statically +initialize an array of structs. The three special aggregate constructs +in Pike, @code{(@{ @})}, @code{([ ])} and @code{(< >)}, are treated as +brace lists too. An example: + +@example + 1: static char* ingredients[] = + 2: @{ + 3: "Ham", + 4: "Salt", + 5: NULL + 6: @}; +@end example + +@ssindex brace-list-open +@ssindex brace-list-intro +@ssindex brace-list-close +@ssindex brace-list-entry +Following convention, line 2 in this example is assigned +@code{brace-list-open} syntax, and line 3 is assigned +@code{brace-list-intro} syntax. Likewise, line 6 is assigned +@code{brace-list-close} syntax. Lines 4 and 5 however, are assigned +@code{brace-list-entry} syntax, as would all subsequent lines in this +initializer list. + +@ssindex brace-entry-open +Your static initializer might be initializing nested structures, for +example: + +@example + 1: struct intpairs[] = + 2: @{ + 3: @{ 1, 2 @}, + 4: @{ + 5: 3, + 6: 4 + 7: @} + 8: @{ 1, + 9: 2 @}, +10: @{ 3, 4 @} +11: @}; +@end example + +Here, you've already seen the analysis of lines 1, 2, 3, and 11. On +line 4, things get interesting; this line is assigned +@code{brace-entry-open} syntactic symbol because it's a bracelist entry +line that starts with an open brace. Lines 5 and 6 (and line 9) are +pretty standard, and line 7 is a @code{brace-list-close} as you'd +expect. Once again, line 8 is assigned as @code{brace-entry-open} as is +line 10. + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node External Scope Symbols, Paren List Symbols, Brace List Symbols, Syntactic Symbols +@comment node-name, next, previous, up +@subsection External Scope Symbols +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +External language definition blocks also have their own syntactic +symbols. In this example: + +@example + 1: extern "C" + 2: @{ + 3: int thing_one( int ); + 4: int thing_two( double ); + 5: @} +@end example + +@ssindex extern-lang-open +@ssindex extern-lang-close +@ssindex inextern-lang +@ssindex inclass +@noindent +line 2 is given the @code{extern-lang-open} syntax, while line 5 is given +the @code{extern-lang-close} syntax. The analysis for line 3 yields: + +@example +((inextern-lang) (topmost-intro 14)) +@end example + +@noindent +where @code{inextern-lang} is a modifier similar in purpose to +@code{inclass}. + +There are various other top level blocks like @code{extern}, and they +are all treated in the same way except that the symbols are named after +the keyword that introduces the block. E.g. C++ namespace blocks get +the three symbols @code{namespace-open}, @code{namespace-close} and +@code{innamespace}. The currently recognized top level blocks are: + +@table @asis +@item @code{extern-lang-open}, @code{extern-lang-close}, @code{inextern-lang} +@code{extern} blocks in C and C++.@footnote{These should logically be +named @code{extern-open}, @code{extern-close} and @code{inextern}, but +that isn't the case for historical reasons.} + +@item @code{namespace-open}, @code{namespace-close}, @code{innamespace} +@ssindex namespace-open +@ssindex namespace-close +@ssindex innamespace +@code{namespace} blocks in C++. + +@item @code{module-open}, @code{module-close}, @code{inmodule} +@ssindex module-open +@ssindex module-close +@ssindex inmodule +@code{module} blocks in CORBA IDL. + +@item @code{composition-open}, @code{composition-close}, @code{incomposition} +@ssindex composition-open +@ssindex composition-close +@ssindex incomposition +@code{composition} blocks in CORBA CIDL. +@end table + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Paren List Symbols, Literal Symbols, External Scope Symbols, Syntactic Symbols +@comment node-name, next, previous, up +@subsection Parenthesis (Argument) List Symbols +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +A number of syntactic symbols are associated with parenthesis lists, +a.k.a argument lists, as found in function declarations and function +calls. This example illustrates these: + +@example + 1: void a_function( int line1, + 2: int line2 ); + 3: + 4: void a_longer_function( + 5: int line1, + 6: int line2 + 7: ); + 8: + 9: void call_them( int line1, int line2 ) +10: @{ +11: a_function( +12: line1, +13: line2 +14: ); +15: +16: a_longer_function( line1, +17: line2 ); +18: @} +@end example + +@ssindex arglist-intro +@ssindex arglist-close +Lines 5 and 12 are assigned @code{arglist-intro} syntax since they are +the first line following the open parenthesis, and lines 7 and 14 are +assigned @code{arglist-close} syntax since they contain the parenthesis +that closes the argument list. + +@ssindex arglist-cont-nonempty +@ssindex arglist-cont +Lines that continue argument lists can be assigned one of two syntactic +symbols. For example, Lines 2 and 17 +are assigned @code{arglist-cont-nonempty} syntax. What this means +is that they continue an argument list, but that the line containing the +parenthesis that opens the list is @emph{not empty} following the open +parenthesis. Contrast this against lines 6 and 13 which are assigned +@code{arglist-cont} syntax. This is because the parenthesis that opens +their argument lists is the last character on that line. + +Syntactic elements with @code{arglist-intro}, +@code{arglist-cont-nonempty}, and @code{arglist-close} contain two +buffer positions: the anchor position (the beginning of the +declaration or statement) and the position of the open parenthesis. +The latter position can be used in a line-up function (@pxref{Line-Up +Functions}). + +Note that there is no @code{arglist-open} syntax. This is because any +parenthesis that opens an argument list, appearing on a separate line, +is assigned the @code{statement-cont} syntax instead. + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Literal Symbols, Multiline Macro Symbols, Paren List Symbols, Syntactic Symbols +@comment node-name, next, previous, up +@subsection Comment String Label and Macro Symbols +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +A few miscellaneous syntactic symbols that haven't been previously +covered are illustrated by this C++ example: + +@example + 1: void Bass::play( int volume ) + 2: const + 3: @{ + 4: /* this line starts a multiline + 5: * comment. This line should get `c' syntax */ + 6: + 7: char* a_multiline_string = "This line starts a multiline \ + 8: string. This line should get `string' syntax."; + 9: +10: note: +11: @{ +12: #ifdef LOCK +13: Lock acquire(); +14: #endif // LOCK +15: slap_pop(); +16: cout << "I played " +17: << "a note\n"; +18: @} +19: @} +@end example + +The lines to note in this example include: + +@itemize @bullet +@item +@ssindex func-decl-cont +Line 2 is assigned the @code{func-decl-cont} syntax. + +@item +@ssindex comment-intro +Line 4 is assigned both @code{defun-block-intro} @emph{and} +@code{comment-intro} syntax. A syntactic element with +@code{comment-intro} has no anchor point --- It is always accompanied +by another syntactic element which does have one. + +@item +@ssindex c +Line 5 is assigned @code{c} syntax. + +@item +@cindex syntactic whitespace +Line 6 which, even though it contains nothing but whitespace, is +assigned @code{defun-block-intro}. Note that the appearance of the +comment on lines 4 and 5 do not cause line 6 to be assigned +@code{statement} syntax because comments are considered to be +@dfn{syntactic whitespace}, which are ignored when analyzing +code. + +@item +@ssindex string +Line 8 is assigned @code{string} syntax. + +@item +@ssindex label +Line 10 is assigned @code{label} syntax. + +@item +@ssindex block-open +Line 11 is assigned @code{block-open} as well as @code{statement} +syntax. A @code{block-open} syntactic element doesn't have an anchor +position, since it always appears with another syntactic element which +does have one. + +@item +@ssindex cpp-macro +Lines 12 and 14 are assigned @code{cpp-macro} syntax in addition to the +normal syntactic symbols (@code{statement-block-intro} and +@code{statement}, respectively). Normally @code{cpp-macro} is +configured to cancel out the normal syntactic context to make all +preprocessor directives stick to the first column, but that's easily +changed if you want preprocessor directives to be indented like the rest +of the code. Like @code{comment-intro}, a syntactic element with +@code{cpp-macro} doesn't contain an anchor position. + +@item +@ssindex stream-op +Line 17 is assigned @code{stream-op} syntax. +@end itemize + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Multiline Macro Symbols, Objective-C Method Symbols, Literal Symbols, Syntactic Symbols +@comment node-name, next, previous, up +@subsection Multiline Macro Symbols +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@cindex multiline macros +@cindex syntactic whitespace +@ssindex cpp-define-intro +@ssindex cpp-macro-cont +Multiline preprocessor macro definitions are normally handled just like +other code, i.e. the lines inside them are indented according to the +syntactic analysis of the preceding lines inside the macro. The first +line inside a macro definition (i.e. the line after the starting line of +the cpp directive itself) gets @code{cpp-define-intro}. In this example: + +@example + 1: #define LIST_LOOP(cons, listp) \ + 2: for (cons = listp; !NILP (cons); cons = XCDR (cons)) \ + 3: if (!CONSP (cons)) \ + 4: signal_error ("Invalid list format", listp); \ + 5: else +@end example + +@noindent +line 1 is given the syntactic symbol @code{cpp-macro}. The first line +of a cpp directive is always given that symbol. Line 2 is given +@code{cpp-define-intro}, so that you can give the macro body as a whole +some extra indentation. Lines 3 through 5 are then analyzed as normal +code, i.e. @code{substatement} on lines 3 and 4, and @code{else-clause} +on line 5. + +The syntactic analysis inside macros can be turned off with +@code{c-syntactic-indentation-in-macros} (@pxref{Custom Macros}). In +that case, lines 2 through 5 would all be given @code{cpp-macro-cont} +with an anchor position pointing to the @code{#} which starts the cpp +directive@footnote{This is how @ccmode{} 5.28 and earlier analyzed +macros.}. + +@xref{Custom Macros}, for more info about the treatment of macros. + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Objective-C Method Symbols, Anonymous Class Symbol, Multiline Macro Symbols, Syntactic Symbols +@comment node-name, next, previous, up +@subsection Objective-C Method Symbols +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +In Objective-C buffers, there are three additional syntactic symbols +assigned to various message calling constructs. Here's an example +illustrating these: + +@example + 1: - (void)setDelegate:anObject + 2: withStuff:stuff + 3: @{ + 4: [delegate masterWillRebind:self + 5: toDelegate:anObject + 6: withExtraStuff:stuff]; + 7: @} +@end example + +@ssindex objc-method-intro +@ssindex objc-method-args-cont +@ssindex objc-method-call-cont +Here, line 1 is assigned @code{objc-method-intro} syntax, and line 2 is +assigned @code{objc-method-args-cont} syntax. Lines 5 and 6 are both +assigned @code{objc-method-call-cont} syntax. + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Anonymous Class Symbol, Statement Block Symbols, Objective-C Method Symbols, Syntactic Symbols +@comment node-name, next, previous, up +@subsection Anonymous Class Symbol (Java) +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +Java has a concept of anonymous classes which can look something like +this: + +@example + 1: public void watch(Observable o) @{ + 2: o.addObserver(new Observer() @{ + 3: public void update(Observable o, Object arg) @{ + 4: history.addElement(arg); + 5: @} + 6: @}); + 7: @} +@end example + +@ssindex inexpr-class +The brace following the @code{new} operator opens the anonymous class. +Lines 3 and 6 are assigned the @code{inexpr-class} syntax, besides the +@code{inclass} symbol used in normal classes. Thus, the class will be +indented just like a normal class, with the added indentation given to +@code{inexpr-class}. An @code{inexpr-class} syntactic element doesn't +have an anchor position. + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Statement Block Symbols, K&R Symbols, Anonymous Class Symbol, Syntactic Symbols +@comment node-name, next, previous, up +@subsection Statement Block Symbols +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +There are a few occasions where a statement block might be used inside +an expression. One is in C or C++ code using the gcc extension for +this, e.g: + +@example + 1: int res = (@{ + 2: int y = foo (); int z; + 3: if (y > 0) z = y; else z = - y; + 4: z; + 5: @}); +@end example + +@ssindex inexpr-statement +Lines 2 and 5 get the @code{inexpr-statement} syntax, besides the +symbols they'd get in a normal block. Therefore, the indentation put on +@code{inexpr-statement} is added to the normal statement block +indentation. An @code{inexpr-statement} syntactic element doesn't +contain an anchor position. + +In Pike code, there are a few other situations where blocks occur inside +statements, as illustrated here: + +@example + 1: array itgob() + 2: @{ + 3: string s = map (backtrace()[-2][3..], + 4: lambda + 5: (mixed arg) + 6: @{ + 7: return sprintf ("%t", arg); + 8: @}) * ", " + "\n"; + 9: return catch @{ +10: write (s + "\n"); +11: @}; +12: @} +@end example + +@ssindex inlambda +@ssindex lambda-intro-cont +Lines 4 through 8 contain a lambda function, which @ccmode{} recognizes +by the @code{lambda} keyword. If the function argument list is put +on a line of its own, as in line 5, it gets the @code{lambda-intro-cont} +syntax. The function body is handled as an inline method body, with the +addition of the @code{inlambda} syntactic symbol. This means that line +6 gets @code{inlambda} and @code{inline-open}, and line 8 gets +@code{inline-close}@footnote{You might wonder why it doesn't get +@code{inlambda} too. It's because the closing brace is relative to the +opening brace, which stands on its own line in this example. If the +opening brace was hanging on the previous line, then the closing brace +would get the @code{inlambda} syntax too to be indented correctly.}. + +@ssindex inexpr-statement +On line 9, @code{catch} is a special function taking a statement block +as its argument. The block is handled as an in-expression statement +with the @code{inexpr-statement} syntax, just like the gcc extended C +example above. The other similar special function, @code{gauge}, is +handled like this too. + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node K&R Symbols, , Statement Block Symbols, Syntactic Symbols +@comment node-name, next, previous, up +@subsection K&R Symbols +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@ssindex knr-argdecl-intro +@ssindex knr-argdecl +Two other syntactic symbols can appear in old style, non-prototyped C +code @footnote{a.k.a. K&R C, or Kernighan & Ritchie C}: + +@example + 1: int add_three_integers(a, b, c) + 2: int a; + 3: int b; + 4: int c; + 5: @{ + 6: return a + b + c; + 7: @} +@end example + +Here, line 2 is the first line in an argument declaration list and so is +given the @code{knr-argdecl-intro} syntactic symbol. Subsequent lines +(i.e. lines 3 and 4 in this example), are given @code{knr-argdecl} +syntax. + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Indentation Calculation, , Syntactic Symbols, Indentation Engine Basics +@comment node-name, next, previous, up +@section Indentation Calculation +@cindex indentation +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +Indentation for a line is calculated from the syntactic context +(@pxref{Syntactic Analysis}). + +First, a buffer position is found whose column will be the base for the +indentation calculation. It's the anchor position in the first +syntactic element that provides one that is used. If no syntactic +element has an anchor position then column zero is used. + +Second, the syntactic symbols in each syntactic element are looked up +in the @code{c-offsets-alist} style variable +(@pxref{c-offsets-alist}), which is an association list of syntactic +symbols and the offsets to apply for those symbols. These offsets are +added together with the base column to produce the new indentation +column. + +Let's use our two code examples above to see how this works. Here is +our first example again: + +@example + 1: void swap( int& a, int& b ) + 2: @{ + 3: int tmp = a; + 4: a = b; + 5: b = tmp; + 6: @} +@end example + +Let's say point is on line 3 and we hit the @key{TAB} key to reindent +the line. The syntactic context for that line is: + +@example +((defun-block-intro 29)) +@end example + +@noindent +Since buffer position 29 is the first and only anchor position in the +list, @ccmode{} goes there and asks for the current column. This brace +is in column zero, so @ccmode{} uses @samp{0} as the base column. + +Next, @ccmode{} looks up @code{defun-block-intro} in the +@code{c-offsets-alist} style variable. Let's say it finds the value +@samp{4}; it adds this to the base column @samp{0}, yielding a running +total indentation of 4 spaces. + +Since there is only one syntactic element on the list for this line, +indentation calculation is complete, and the total indentation for the +line is 4 spaces. + +Here's another example: + +@example + 1: int add( int val, int incr, int doit ) + 2: @{ + 3: if( doit ) + 4: @{ + 5: return( val + incr ); + 6: @} + 7: return( val ); + 8: @} +@end example + +If we were to hit @kbd{TAB} on line 4 in the above example, the same +basic process is performed, despite the differences in the syntactic +context. The context for this line is: + +@example +((substatement-open 46)) +@end example + +Here, @ccmode{} goes to buffer position 46, which is the @samp{i} in +@code{if} on line 3. This character is in the fourth column on that +line so the base column is @samp{4}. Then @ccmode{} looks up the +@code{substatement-open} symbol in @code{c-offsets-alist}. Let's say it +finds the value @samp{4}. It's added with the base column and yields an +indentation for the line of 8 spaces. + +Simple, huh? + +Actually, it's a bit more complicated than that since the entries on +@code{c-offsets-alist} can be much more than plain offsets. +@xref{c-offsets-alist}, for the full story. + +Anyway, the mode usually just does The Right Thing without you having to +think about it in this much detail. But when customizing indentation, +it's helpful to understand the general indentation model being used. + +As you configure @ccmode{}, you might want to set the variable +@code{c-echo-syntactic-information-p} to non-@code{nil} so that the +syntactic context and calculated offset always is echoed in the +minibuffer when you hit @kbd{TAB}. + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Customizing Indentation, Custom Macros, Indentation Engine Basics, Top +@comment node-name, next, previous, up +@chapter Customizing Indentation +@cindex customization, indentation +@cindex indentation +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +The principal variable for customizing indentation is the style +variable @code{c-offsets-alist}, which gives an @dfn{offset} (an +indentation rule) for each syntactic symbol. Its structure and +semantics are completely described in @ref{c-offsets-alist}. The +various ways you can set the variable, including the use of the +@ccmode{} style system, are described in @ref{Config Basics} and its +sections, in particular @ref{Style Variables}. + +The simplest and most used kind of ``offset'' setting in +@code{c-offsets-alist} is in terms of multiples of +@code{c-basic-offset}: + +@defopt c-basic-offset +@vindex basic-offset (c-) +This style variable holds the basic offset between indentation levels. +It's factory default is 4, but all the built-in styles set it +themselves, to some value between 2 (for @code{gnu} style) and 8 (for +@code{bsd}, @code{linux}, and @code{python} styles). +@end defopt + +The most flexible ``offset'' setting you can make in +@code{c-offsets-alist} is a line-up function (or even a list of them), +either one supplied by @ccmode{} (@pxref{Line-Up Functions}) or one +you write yourself (@pxref{Custom Line-Up}). + +Finally, in @ref{Other Indentation} you'll find the tool of last +resort: a hook which is called after a line has been indented. You +can install functions here to make ad-hoc adjustments to any line's +indentation. + +@menu +* c-offsets-alist:: +* Interactive Customization:: +* Line-Up Functions:: +* Custom Line-Up:: +* Other Indentation:: +@end menu + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node c-offsets-alist, Interactive Customization, Customizing Indentation, Customizing Indentation +@comment node-name, next, previous, up +@section c-offsets-alist +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +This section explains the structure and semantics of the style +variable @code{c-offset-alist}, the principal variable for configuring +indentation. Details of how to set it up, and its relationship to +@ccmode{}'s style system are given in @ref{Style Variables}. + +@defopt c-offsets-alist +@vindex offsets-alist (c-) +This is an alist which associates an offset with each syntactic +symbol. This @dfn{offset} is a rule specifying how to indent a line +whose syntactic context matches the symbol. @xref{Syntactic +Analysis}. + +Note that the buffer-local binding of this alist in a @ccmode{} buffer +contains an entry for @emph{every} syntactic symbol. Its global +binding and its settings within style specifications usually contain +only a few entries. @xref{Style Variables}. + +The offset specification associated with any particular syntactic +symbol can be an integer, a variable name, a vector, a function or +lambda expression, a list, or one of the following special symbols: +@code{+}, @code{-}, @code{++}, @code{--}, @code{*}, or @code{/}. The +meanings of these values are described in detail below. + +Here is an example fragment of a @code{c-offsets-alist}, showing some +of these kinds of offsets: + +@example +((statement . 0) + (substatement . +) + (cpp-macro . [0]) + (topmost-intro-cont . c-lineup-topmost-intro-cont) + (statement-block-intro . (add c-lineup-whitesmith-in-block + c-indent-multi-line-block)) + @dots{} +@*) +@end example +@end defopt + +@deffn Command c-set-offset (@kbd{C-c C-o}) +@findex set-offset (c-) +@kindex C-c C-o +This command changes the entry for a syntactic symbol in the current +binding of @code{c-offsets-alist}, or it inserts a new entry if there +isn't already one for that syntactic symbol. + +You can use @code{c-set-offsets} interactively within a @ccmode{} +buffer to make experimental changes to your indentation settings. +@kbd{C-c C-o} prompts you for the syntactic symbol to change +(defaulting to that of the current line) and the new offset +(defaulting to the current offset). + +@code{c-set-offsets} takes two arguments when used programmatically: +@var{symbol}, the syntactic element symbol to change and @var{offset}, +the new offset for that syntactic element. You can call the command +in your @file{.emacs} to change the global binding of +@code{c-offsets-alist} (@pxref{Style Variables}); you can use it in a +hook function to make changes from the current style. @ccmode{} +itself uses this function when initializing styles. +@end deffn + +@cindex offset specification +The ``offset specifications'' in @code{c-offsets-alist} can be any of +the following: + +@table @asis +@item An integer +The integer specifies a relative offset. All relative +offsets@footnote{The syntactic context @code{@w{((defun-block-intro +2724) (comment-intro))}} would likely have two relative offsets.} will +be added together and used to calculate the indentation relative to an +anchor position earlier in the buffer. @xref{Indentation +Calculation}, for details. Most of the time, it's probably better to +use one of the special symbols like @code{+} than an integer (apart +from zero). + +@item One of the symbols @code{+}, @code{-}, @code{++}, @code{--}, @code{*}, or @code{/} +These special symbols describe a relative offset in multiples of +@code{c-basic-offset}: + +By defining a style's indentation in terms of @code{c-basic-offset}, +you can change the amount of whitespace given to an indentation level +while maintaining the same basic shape of your code. Here are the +values that the special symbols correspond to: + +@table @code +@item + +@code{c-basic-offset} times 1 +@item - +@code{c-basic-offset} times -1 +@item ++ +@code{c-basic-offset} times 2 +@item -- +@code{c-basic-offset} times -2 +@item * +@code{c-basic-offset} times 0.5 +@item / +@code{c-basic-offset} times -0.5 +@end table + +@item A vector +The first element of the vector, an integer, sets the absolute +indentation column. This will override any previously calculated +indentation, but won't override relative indentation calculated from +syntactic elements later on in the syntactic context of the line being +indented. @xref{Indentation Calculation}. Any elements in the vector +beyond the first will be ignored. + +@item A function or lambda expression +The function will be called and its return value will in turn be +evaluated as an offset specification. Functions are useful when more +context than just the syntactic symbol is needed to get the desired +indentation. @xref{Line-Up Functions}, and @ref{Custom Line-Up}, for +details about them. + +@item A symbol with a variable binding +If the symbol also has a function binding, the function takes +precedence over the variable. Otherwise the value of the variable is +used. It must be an integer (which is used as relative offset) or a +vector (an absolute offset). + +@item A list +The offset can also be a list containing several offset +specifications; these are evaluated recursively and combined. A list +is typically only useful when some of the offsets are line-up +functions. A common strategy is calling a sequence of functions in +turn until one of them recognizes that it is appropriate for the +source line and returns a non-@code{nil} value. + +@code{nil} values are always ignored when the offsets are combined. +The first element of the list specifies the method of combining the +non-@code{nil} offsets from the remaining elements: + +@table @code +@item first +Use the first offset that doesn't evaluate to @code{nil}. Subsequent +elements of the list don't get evaluated. +@item min +Use the minimum of all the offsets. All must be either relative or +absolute - they can't be mixed. +@item max +Use the maximum of all the offsets. All must be either relative or +absolute - they can't be mixed. +@item add +Add all the evaluated offsets together. Exactly one of them may be +absolute, in which case the result is absolute. Any relative offsets +that preceded the absolute one in the list will be ignored in that case. +@end table + +As a compatibility measure, if the first element is none of the above +then it too will be taken as an offset specification and the whole list +will be combined according to the method @code{first}. +@end table + +@vindex c-strict-syntax-p +@vindex strict-syntax-p (c-) +If an offset specification evaluates to @code{nil}, then a relative +offset of 0 (zero) is used@footnote{There is however a variable +@code{c-strict-syntax-p} that when set to non-@code{nil} will cause an +error to be signaled in that case. It's now considered obsolete since +it doesn't work well with some of the alignment functions that return +@code{nil} instead of zero. You should therefore leave +@code{c-strict-syntax-p} set to @code{nil}.}. + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Interactive Customization, Line-Up Functions, c-offsets-alist, Customizing Indentation +@comment node-name, next, previous, up +@section Interactive Customization +@cindex customization, interactive +@cindex interactive customization +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +As an example of how to customize indentation, let's change the +style of this example@footnote{In this and subsequent examples, the +original code is formatted using the @samp{gnu} style unless otherwise +indicated. @xref{Styles}.}: + +@example +@group + 1: int add( int val, int incr, int doit ) + 2: @{ + 3: if( doit ) + 4: @{ + 5: return( val + incr ); + 6: @} + 7: return( val ); + 8: @} +@end group +@end example + +@noindent +to: + +@example +@group + 1: int add( int val, int incr, int doit ) + 2: @{ + 3: if( doit ) + 4: @{ + 5: return( val + incr ); + 6: @} + 7: return( val ); + 8: @} +@end group +@end example + +In other words, we want to change the indentation of braces that open a +block following a condition so that the braces line up under the +conditional, instead of being indented. Notice that the construct we +want to change starts on line 4. To change the indentation of a line, +we need to see which syntactic symbols affect the offset calculations +for that line. Hitting @kbd{C-c C-s} on line 4 yields: + +@example +((substatement-open 44)) +@end example + +@noindent +so we know that to change the offset of the open brace, we need to +change the indentation for the @code{substatement-open} syntactic +symbol. + +To do this interactively, just hit @kbd{C-c C-o}. This prompts +you for the syntactic symbol to change, providing a reasonable default. +In this case, the default is @code{substatement-open}, which is just the +syntactic symbol we want to change! + +After you hit return, @ccmode{} will then prompt you for the new +offset value, with the old value as the default. The default in this +case is @samp{+}, but we want no extra indentation so enter +@samp{0} and @kbd{RET}. This will associate the offset 0 with the +syntactic symbol @code{substatement-open}. + +To check your changes quickly, just hit @kbd{C-c C-q} +(@code{c-indent-defun}) to reindent the entire function. The example +should now look like: + +@example +@group + 1: int add( int val, int incr, int doit ) + 2: @{ + 3: if( doit ) + 4: @{ + 5: return( val + incr ); + 6: @} + 7: return( val ); + 8: @} +@end group +@end example + +Notice how just changing the open brace offset on line 4 is all we +needed to do. Since the other affected lines are indented relative to +line 4, they are automatically indented the way you'd expect. For more +complicated examples, this might not always work. The general approach +to take is to always start adjusting offsets for lines higher up in the +file, then reindent and see if any following lines need further +adjustments. + +@c Move this bit to "Styles" (2005/10/7) +@deffn Command c-set-offset symbol offset +@findex set-offset (c-) +@kindex C-c C-o +This is the command bound to @kbd{C-c C-o}. It provides a convenient +way to set offsets on @code{c-offsets-alist} both interactively (see +the example above) and from your mode hook. + +It takes two arguments when used programmatically: @var{symbol} is the +syntactic element symbol to change and @var{offset} is the new offset +for that syntactic element. +@end deffn +@c End of MOVE THIS BIT. + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Line-Up Functions, Custom Line-Up, Interactive Customization, Customizing Indentation +@comment node-name, next, previous, up +@section Line-Up Functions +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@cindex line-up function +@cindex indentation function +Often there are cases when a simple offset setting on a syntactic +symbol isn't enough to get the desired indentation---for example, you +might want to line up a closing parenthesis with the matching opening +one rather than indenting relative to its ``anchor point''. @ccmode{} +provides this flexibility with @dfn{line-up functions}. + +The way you associate a line-up function with a syntactic symbol is +described in @ref{c-offsets-alist}. @ccmode{} comes with many +predefined line-up functions for common situations. If none of these +does what you want, you can write your own. @xref{Custom Line-Up}. +Sometimes, it is easier to tweak the standard indentation by adding a +function to @code{c-special-indent-hook} (@pxref{Other Indentation}). + +The line-up functions haven't been adapted for AWK buffers or tested +with them. Some of them might work serendipitously. There shouldn't be +any problems writing custom line-up functions for AWK mode. + +The calling convention for line-up functions is described fully in +@ref{Custom Line-Up}. Roughly speaking, the return value is either an +offset itself (such as @code{+} or @code{[0]}) or it's @code{nil}, +meaning ``this function is inappropriate in this case - try a +different one''. @xref{c-offsets-alist}. + +The subsections below describe all the standard line-up functions, +categorized by the sort of token the lining-up centers around. For +each of these functions there is a ``works with'' list that indicates +which syntactic symbols the function is intended to be used with. + +@macro workswith +@emph{Works with:@ } +@end macro +@ifinfo +@unmacro workswith +@macro workswith +Works with: +@end macro +@end ifinfo + +@macro sssTBasicOffset +<--> @i{c-basic-offset}@c +@end macro + +@macro sssTsssTBasicOffset +<--><--> @i{c-basic-offset}@c +@end macro + +@macro hereFn{func} +<- @i{\func\}@c +@end macro + +@c The TeX backend seems to insert extra spaces around the argument. :P +@iftex +@unmacro hereFn +@macro hereFn{func} +<-@i{\func\}@c +@end macro +@end iftex + +@menu +* Brace/Paren Line-Up:: +* List Line-Up:: +* Operator Line-Up:: +* Comment Line-Up:: +* Misc Line-Up:: +@end menu + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Brace/Paren Line-Up, List Line-Up, Line-Up Functions, Line-Up Functions +@comment node-name, next, previous, up +@subsection Brace and Parenthesis Line-Up Functions +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +The line-up functions here calculate the indentation for braces, +parentheses and statements within brace blocks. + +@defun c-lineup-close-paren +@findex lineup-close-paren (c-) +Line up the closing paren under its corresponding open paren if the +open paren is followed by code. If the open paren ends its line, no +indentation is added. E.g: + +@example +@group +main (int, + char ** + ) @hereFn{c-lineup-close-paren} +@end group +@end example + +@noindent +and + +@example +@group +main ( + int, char ** +) @hereFn{c-lineup-close-paren} +@end group +@end example + +As a special case, if a brace block is opened at the same line as the +open parenthesis of the argument list, the indentation is +@code{c-basic-offset} instead of the open paren column. See +@code{c-lineup-arglist} for further discussion of this ``DWIM'' measure. + +@workswith All @code{*-close} symbols. +@end defun + +@comment ------------------------------------------------------------ + +@anchor{c-lineup-arglist-close-under-paren} +@defun c-lineup-arglist-close-under-paren +@findex lineup-arglist-close-under-paren (c-) +Set your @code{arglist-close} syntactic symbol to this line-up function +so that parentheses that close argument lists will line up under the +parenthesis that opened the argument list. It can also be used with +@code{arglist-cont} and @code{arglist-cont-nonempty} to line up all +lines inside a parenthesis under the open paren. + +As a special case, if a brace block is opened at the same line as the +open parenthesis of the argument list, the indentation is +@code{c-basic-offset} only. See @code{c-lineup-arglist} for further +discussion of this ``DWIM'' measure. + +@workswith Almost all symbols, but are typically most useful on +@code{arglist-close}, @code{brace-list-close}, @code{arglist-cont} and +@code{arglist-cont-nonempty}. +@end defun + +@comment ------------------------------------------------------------ + +@defun c-indent-one-line-block +@findex indent-one-line-block (c-) +Indent a one line block @code{c-basic-offset} extra. E.g: + +@example +@group +if (n > 0) + @{m+=n; n=0;@} @hereFn{c-indent-one-line-block} +@sssTBasicOffset{} +@end group +@end example + +@noindent +and + +@example +@group +if (n > 0) +@{ @hereFn{c-indent-one-line-block} + m+=n; n=0; +@} +@end group +@end example + +The block may be surrounded by any kind of parenthesis characters. +@code{nil} is returned if the line doesn't start with a one line block, +which makes the function usable in list expressions. + +@workswith Almost all syntactic symbols, but most useful on the +@code{-open} symbols. +@end defun + +@comment ------------------------------------------------------------ + +@defun c-indent-multi-line-block +@findex indent-multi-line-block (c-) +Indent a multiline block @code{c-basic-offset} extra. E.g: + +@example +@group +int *foo[] = @{ + NULL, + @{17@}, @hereFn{c-indent-multi-line-block} +@end group +@end example + +@noindent +and + +@example +@group +int *foo[] = @{ + NULL, + @{ @hereFn{c-indent-multi-line-block} + 17 + @}, + @sssTBasicOffset{} +@end group +@end example + +The block may be surrounded by any kind of parenthesis characters. +@code{nil} is returned if the line doesn't start with a multiline +block, which makes the function usable in list expressions. + +@workswith Almost all syntactic symbols, but most useful on the +@code{-open} symbols. +@end defun + +@comment ------------------------------------------------------------ + +@defun c-lineup-runin-statements +@findex lineup-runin-statements (c-) +Line up statements for coding standards which place the first statement +in a block on the same line as the block opening brace@footnote{Run-in +style doesn't really work too well. You might need to write your own +custom line-up functions to better support this style.}. E.g: + +@example +@group +int main() +@{ puts ("Hello!"); + return 0; @hereFn{c-lineup-runin-statements} +@} +@end group +@end example + +If there is no statement after the opening brace to align with, +@code{nil} is returned. This makes the function usable in list +expressions. + +@workswith The @code{statement} syntactic symbol. +@end defun + +@comment ------------------------------------------------------------ + +@defun c-lineup-inexpr-block +@findex lineup-inexpr-block (c-) +This can be used with the in-expression block symbols to indent the +whole block to the column where the construct is started. E.g. for Java +anonymous classes, this lines up the class under the @samp{new} keyword, +and in Pike it lines up the lambda function body under the @samp{lambda} +keyword. Returns @code{nil} if the block isn't part of such a +construct. + +@workswith @code{inlambda}, @code{inexpr-statement}, +@code{inexpr-class}. +@end defun + +@comment ------------------------------------------------------------ + +@defun c-lineup-after-whitesmith-blocks +@findex lineup-after-whitesmith-blocks (c-) +Compensate for Whitesmith style indentation of blocks. Due to the way +@ccmode{} calculates anchor positions for normal lines inside blocks, +this function is necessary for those lines to get correct Whitesmith +style indentation. Consider the following examples: + +@example +@group +int foo() + @{ + a; + x; @hereFn{c-lineup-after-whitesmith-blocks} +@end group +@end example + +@example +@group +int foo() + @{ + @{ + a; + @} + x; @hereFn{c-lineup-after-whitesmith-blocks} +@end group +@end example + +The fact that the line with @code{x} is preceded by a Whitesmith style +indented block in the latter case and not the first should not affect +its indentation. But since CC Mode in cases like this uses the +indentation of the preceding statement as anchor position, the @code{x} +would in the second case be indented too much if the offset for +@code{statement} was set simply to zero. + +This lineup function corrects for this situation by detecting if the +anchor position is at an open paren character. In that case, it instead +indents relative to the surrounding block just like +@code{c-lineup-whitesmith-in-block}. + +@workswith @code{brace-list-entry}, @code{brace-entry-open}, +@code{statement}, @code{arglist-cont}. +@end defun + +@comment ------------------------------------------------------------ + +@defun c-lineup-whitesmith-in-block +@findex lineup-whitesmith-in-block (c-) +Line up lines inside a block in Whitesmith style. It's done in a way +that works both when the opening brace hangs and when it doesn't. E.g: + +@example +@group +something + @{ + foo; @hereFn{c-lineup-whitesmith-in-block} + @} +@end group +@end example + +@noindent +and + +@example +@group +something @{ + foo; @hereFn{c-lineup-whitesmith-in-block} + @} +@sssTBasicOffset{} +@end group +@end example + +In the first case the indentation is kept unchanged, in the second +@code{c-basic-offset} is added. + +@workswith @code{defun-close}, @code{defun-block-intro}, +@code{inline-close}, @code{block-close}, @code{brace-list-close}, +@code{brace-list-intro}, @code{statement-block-intro}, +@code{arglist-intro}, @code{arglist-cont-nonempty}, +@code{arglist-close}, and all @code{in*} symbols, e.g. @code{inclass} +and @code{inextern-lang}. +@end defun + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node List Line-Up, Operator Line-Up, Brace/Paren Line-Up, Line-Up Functions +@comment node-name, next, previous, up +@subsection List Line-Up Functions +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +The line-up functions here calculate the indentation for lines which +form lists of items, usually separated by commas. + +The function @ref{c-lineup-arglist-close-under-paren}, which is mainly +for indenting a close parenthesis, is also useful for the lines +contained within parentheses. + +@defun c-lineup-arglist +@findex lineup-arglist (c-) +Line up the current argument line under the first argument. + +As a special case, if an argument on the same line as the open +parenthesis starts with a brace block opener, the indentation is +@code{c-basic-offset} only. This is intended as a ``DWIM'' measure in +cases like macros that contain statement blocks, e.g: + +@example +@group +A_VERY_LONG_MACRO_NAME (@{ + some (code, with + long, lines * in[it]); + @}); +@sssTBasicOffset{} +@end group +@end example + +This is motivated partly because it's more in line with how code +blocks are handled, and partly since it approximates the behavior of +earlier CC Mode versions, which due to inaccurate analysis tended to +indent such cases this way. + +@workswith @code{arglist-cont-nonempty}, @code{arglist-close}. +@end defun + +@comment ------------------------------------------------------------ + +@defun c-lineup-arglist-intro-after-paren +@findex lineup-arglist-intro-after-paren (c-) +Line up a line to just after the open paren of the surrounding paren or +brace block. + +@workswith @code{defun-block-intro}, @code{brace-list-intro}, +@code{statement-block-intro}, @code{statement-case-intro}, +@code{arglist-intro}. +@end defun + +@comment ------------------------------------------------------------ + +@defun c-lineup-multi-inher +@findex lineup-multi-inher (c-) +Line up the classes in C++ multiple inheritance clauses and member +initializers under each other. E.g: + +@example +@group +Foo::Foo (int a, int b): + Cyphr (a), + Bar (b) @hereFn{c-lineup-multi-inher} +@end group +@end example + +@noindent +and + +@example +@group +class Foo + : public Cyphr, + public Bar @hereFn{c-lineup-multi-inher} +@end group +@end example + +@noindent +and + +@example +@group +Foo::Foo (int a, int b) + : Cyphr (a) + , Bar (b) @hereFn{c-lineup-multi-inher} +@end group +@end example + +@workswith @code{inher-cont}, @code{member-init-cont}. +@end defun + +@comment ------------------------------------------------------------ + +@defun c-lineup-java-inher +@findex lineup-java-inher (c-) +Line up Java implements and extends declarations. If class names +follow on the same line as the @samp{implements}/@samp{extends} +keyword, they are lined up under each other. Otherwise, they are +indented by adding @code{c-basic-offset} to the column of the keyword. +E.g: + +@example +@group +class Foo + extends + Bar @hereFn{c-lineup-java-inher} + @sssTBasicOffset{} +@end group +@end example + +@noindent +and + +@example +@group +class Foo + extends Cyphr, + Bar @hereFn{c-lineup-java-inher} +@end group +@end example + +@workswith @code{inher-cont}. +@end defun + +@comment ------------------------------------------------------------ + +@defun c-lineup-java-throws +@findex lineup-java-throws (c-) +Line up Java throws declarations. If exception names follow on the +same line as the throws keyword, they are lined up under each other. +Otherwise, they are indented by adding @code{c-basic-offset} to the +column of the @samp{throws} keyword. The @samp{throws} keyword itself +is also indented by @code{c-basic-offset} from the function declaration +start if it doesn't hang. E.g: + +@example +@group +int foo() + throws @hereFn{c-lineup-java-throws} + Bar @hereFn{c-lineup-java-throws} +@sssTsssTBasicOffset{} +@end group +@end example + +@noindent +and + +@example +@group +int foo() throws Cyphr, + Bar, @hereFn{c-lineup-java-throws} + Vlod @hereFn{c-lineup-java-throws} +@end group +@end example + +@workswith @code{func-decl-cont}. +@end defun + +@comment ------------------------------------------------------------ + +@defun c-lineup-template-args +@findex lineup-template-args (c-) +Line up the arguments of a template argument list under each other, but +only in the case where the first argument is on the same line as the +opening @samp{<}. + +To allow this function to be used in a list expression, @code{nil} is +returned if there's no template argument on the first line. + +@workswith @code{template-args-cont}. +@end defun + +@comment ------------------------------------------------------------ + +@defun c-lineup-ObjC-method-call +@findex lineup-ObjC-method-call (c-) +For Objective-C code, line up selector args as Emacs Lisp mode does +with function args: go to the position right after the message receiver, +and if you are at the end of the line, indent the current line +c-basic-offset columns from the opening bracket; otherwise you are +looking at the first character of the first method call argument, so +lineup the current line with it. + +@workswith @code{objc-method-call-cont}. +@end defun + +@comment ------------------------------------------------------------ + +@defun c-lineup-ObjC-method-args +@findex lineup-ObjC-method-args (c-) +For Objective-C code, line up the colons that separate args. The colon +on the current line is aligned with the one on the first line. + +@workswith @code{objc-method-args-cont}. +@end defun + +@comment ------------------------------------------------------------ + +@defun c-lineup-ObjC-method-args-2 +@findex lineup-ObjC-method-args-2 (c-) +Similar to @code{c-lineup-ObjC-method-args} but lines up the colon on +the current line with the colon on the previous line. + +@workswith @code{objc-method-args-cont}. +@end defun + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Operator Line-Up, Comment Line-Up, List Line-Up, Line-Up Functions +@comment node-name, next, previous, up +@subsection Operator Line-Up Functions +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +The line-up functions here calculate the indentation for lines which +start with an operator, by lining it up with something on the previous +line. + +@defun c-lineup-argcont +@findex lineup-argcont (c-) +Line up a continued argument. E.g: + +@example +@group +foo (xyz, aaa + bbb + ccc + + ddd + eee + fff); @hereFn{c-lineup-argcont} +@end group +@end example + +Only continuation lines like this are touched, @code{nil} is returned on +lines which are the start of an argument. + +Within a gcc @code{asm} block, @code{:} is recognised as an argument +separator, but of course only between operand specifications, not in the +expressions for the operands. + +@workswith @code{arglist-cont}, @code{arglist-cont-nonempty}. +@end defun + +@comment ------------------------------------------------------------ + +@defun c-lineup-arglist-operators +@findex lineup-arglist-operators (c-) +Line up lines starting with an infix operator under the open paren. +Return @code{nil} on lines that don't start with an operator, to leave +those cases to other line-up functions. Example: + +@example +@group +if ( x < 10 + || at_limit (x, @hereFn{c-lineup-arglist-operators} + list) @hereFn{c-lineup-arglist-operators@r{ returns nil}} + ) +@end group +@end example + +Since this function doesn't do anything for lines without an infix +operator you typically want to use it together with some other lineup +settings, e.g. as follows (the @code{arglist-close} setting is just a +suggestion to get a consistent style): + +@example +(c-set-offset 'arglist-cont + '(c-lineup-arglist-operators 0)) +(c-set-offset 'arglist-cont-nonempty + '(c-lineup-arglist-operators c-lineup-arglist)) +(c-set-offset 'arglist-close + '(c-lineup-arglist-close-under-paren)) +@end example + +@workswith @code{arglist-cont}, @code{arglist-cont-nonempty}. +@end defun + +@comment ------------------------------------------------------------ + +@defun c-lineup-assignments +@findex lineup-assignments (c-) +Line up the current line after the assignment operator on the first line +in the statement. If there isn't any, return nil to allow stacking with +other line-up functions. If the current line contains an assignment +operator too, try to align it with the first one. + +@workswith @code{topmost-intro-cont}, @code{statement-cont}, +@code{arglist-cont}, @code{arglist-cont-nonempty}. + +@end defun + +@comment ------------------------------------------------------------ + +@defun c-lineup-math +@findex lineup-math (c-) +Like @code{c-lineup-assignments} but indent with @code{c-basic-offset} +if no assignment operator was found on the first line. I.e. this +function is the same as specifying a list @code{(c-lineup-assignments ++)}. It's provided for compatibility with old configurations. + +@workswith @code{topmost-intro-cont}, @code{statement-cont}, +@code{arglist-cont}, @code{arglist-cont-nonempty}. +@end defun + +@comment ------------------------------------------------------------ + +@defun c-lineup-cascaded-calls +@findex lineup-cascaded-calls (c-) +Line up ``cascaded calls'' under each other. If the line begins with +@code{->} or @code{.} and the preceding line ends with one or more +function calls preceded by the same token, then the arrow is lined up +with the first of those tokens. E.g: + +@example +@group +r = proc->add(17)->add(18) + ->add(19) + @hereFn{c-lineup-cascaded-calls} + offset; @hereFn{c-lineup-cascaded-calls@r{ (inactive)}} +@end group +@end example + +In any other situation @code{nil} is returned to allow use in list +expressions. + +@workswith @code{topmost-intro-cont}, @code{statement-cont}, +@code{arglist-cont}, @code{arglist-cont-nonempty}. +@end defun + +@comment ------------------------------------------------------------ + +@defun c-lineup-streamop +@findex lineup-streamop (c-) +Line up C++ stream operators (i.e. @samp{<<} and @samp{>>}). + +@workswith @code{stream-op}. +@end defun + +@comment ------------------------------------------------------------ + +@defun c-lineup-string-cont +@findex lineup-string-cont (c-) +Line up a continued string under the one it continues. A continued +string in this sense is where a string literal follows directly after +another one. E.g: + +@example +@group +result = prefix + "A message " + "string."; @hereFn{c-lineup-string-cont} +@end group +@end example + +@code{nil} is returned in other situations, to allow stacking with other +lineup functions. + +@workswith @code{topmost-intro-cont}, @code{statement-cont}, +@code{arglist-cont}, @code{arglist-cont-nonempty}. +@end defun + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Comment Line-Up, Misc Line-Up, Operator Line-Up, Line-Up Functions +@comment node-name, next, previous, up +@subsection Comment Line-Up Functions +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +The lineup functions here calculate the indentation for several types +of comment structure. + +@defun c-lineup-C-comments +@findex lineup-C-comments (c-) +Line up C block comment continuation lines. Various heuristics are used +to handle most of the common comment styles. Some examples: + +@example +@group +/* /** /* + * text * text text + */ */ */ +@end group +@end example + +@example +@group +/* text /* /** + text ** text ** text +*/ */ */ +@end group +@end example + +@example +@group +/************************************************** + * text + *************************************************/ +@end group +@end example + +@vindex comment-start-skip +@example +@group +/************************************************** + Free form text comments: + In comments with a long delimiter line at the + start, the indentation is kept unchanged for lines + that start with an empty comment line prefix. The + delimiter line is whatever matches the + @code{comment-start-skip} regexp. +**************************************************/ +@end group +@end example + +The style variable @code{c-comment-prefix-regexp} is used to recognize +the comment line prefix, e.g. the @samp{*} that usually starts every +line inside a comment. + +@workswith The @code{c} syntactic symbol. +@end defun + +@comment ------------------------------------------------------------ + +@defun c-lineup-comment +@findex lineup-comment (c-) +Line up a comment-only line according to the style variable +@code{c-comment-only-line-offset}. If the comment is lined up with a +comment starter on the previous line, that alignment is preserved. + +@defopt c-comment-only-line-offset +@vindex comment-only-line-offset (c-) +This style variable specifies the extra offset for the line. It can +contain an integer or a cons cell of the form + +@example +(@r{@var{non-anchored-offset}} . @r{@var{anchored-offset}}) +@end example + +@noindent +where @var{non-anchored-offset} is the amount of offset given to +non-column-zero anchored lines, and @var{anchored-offset} is the amount +of offset to give column-zero anchored lines. Just an integer as value +is equivalent to @code{(@r{@var{value}} . -1000)}. +@end defopt + +@workswith @code{comment-intro}. +@end defun + +@comment ------------------------------------------------------------ + +@defun c-lineup-knr-region-comment +@findex lineup-knr-region-comment (c-) +Line up a comment in the ``K&R region'' with the declaration. That is +the region between the function or class header and the beginning of the +block. E.g: + +@example +@group +int main() +/* Called at startup. */ @hereFn{c-lineup-knr-region-comment} +@{ + return 0; +@} +@end group +@end example + +Return @code{nil} if called in any other situation, to be useful in list +expressions. + +@workswith @code{comment-intro}. +@end defun + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Misc Line-Up, , Comment Line-Up, Line-Up Functions +@comment node-name, next, previous, up +@subsection Miscellaneous Line-Up Functions +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +The line-up functions here are the odds and ends which didn't fit into +any earlier category. + +@defun c-lineup-dont-change +@findex lineup-dont-change (c-) +This lineup function makes the line stay at whatever indentation it +already has; think of it as an identity function for lineups. + +@workswith Any syntactic symbol. +@end defun + +@comment ------------------------------------------------------------ + +@defun c-lineup-cpp-define +@findex lineup-cpp-define (c-) +Line up macro continuation lines according to the indentation of the +construct preceding the macro. E.g: + +@example +@group +const char msg[] = @hereFn{@r{The beginning of the preceding construct.}} + \"Some text.\"; + +#define X(A, B) \ +do @{ \ @hereFn{c-lineup-cpp-define} + printf (A, B); \ +@} while (0) +@end group +@end example + +@noindent +and: + +@example +@group +int dribble() @{ + if (!running) @hereFn{@r{The beginning of the preceding construct.}} + error(\"Not running!\"); + +#define X(A, B) \ + do @{ \ @hereFn{c-lineup-cpp-define} + printf (A, B); \ + @} while (0) +@end group +@end example + +If @code{c-syntactic-indentation-in-macros} is non-@code{nil}, the +function returns the relative indentation to the macro start line to +allow accumulation with other offsets. E.g. in the following cases, +@code{cpp-define-intro} is combined with the +@code{statement-block-intro} that comes from the @samp{do @{} that hangs +on the @samp{#define} line: + +@example +@group +const char msg[] = + \"Some text.\"; + +#define X(A, B) do @{ \ + printf (A, B); \ @hereFn{c-lineup-cpp-define} + this->refs++; \ +@} while (0) @hereFn{c-lineup-cpp-define} +@end group +@end example + +@noindent +and: + +@example +@group +int dribble() @{ + if (!running) + error(\"Not running!\"); + +#define X(A, B) do @{ \ + printf (A, B); \ @hereFn{c-lineup-cpp-define} + this->refs++; \ + @} while (0) @hereFn{c-lineup-cpp-define} +@end group +@end example + +The relative indentation returned by @code{c-lineup-cpp-define} is zero +and two, respectively, on the two lines in each of these examples. They +are then added to the two column indentation that +@code{statement-block-intro} gives in both cases here. + +If the relative indentation is zero, then @code{nil} is returned +instead. That is useful in a list expression to specify the default +indentation on the top level. + +If @code{c-syntactic-indentation-in-macros} is @code{nil} then this +function keeps the current indentation, except for empty lines (ignoring +the ending backslash) where it takes the indentation from the closest +preceding nonempty line in the macro. If there's no such line in the +macro then the indentation is taken from the construct preceding it, as +described above. + +@workswith @code{cpp-define-intro}. +@end defun + +@comment ------------------------------------------------------------ + +@defun c-lineup-gcc-asm-reg +@findex lineup-gcc-asm-reg (c-) +Line up a gcc asm register under one on a previous line. + +@example +@group + asm ("foo %1, %0\n" + "bar %0, %1" + : "=r" (w), + "=r" (x) + : "0" (y), + "1" (z)); +@end group +@end example + +The @samp{x} line is aligned to the text after the @samp{:} on the +@samp{w} line, and similarly @samp{z} under @samp{y}. + +This is done only in an @samp{asm} or @samp{__asm__} block, and only to +those lines mentioned. Anywhere else @code{nil} is returned. The usual +arrangement is to have this routine as an extra feature at the start of +arglist lineups, e.g. + +@example +(c-lineup-gcc-asm-reg c-lineup-arglist) +@end example + +@workswith @code{arglist-cont}, @code{arglist-cont-nonempty}. +@end defun + +@comment ------------------------------------------------------------ + +@defun c-lineup-topmost-intro-cont +@findex lineup-topmost-intro-cont (c-) +Line up declaration continuation lines zero or one indentation +step@footnote{This function is mainly provided to mimic the behavior of +CC Mode 5.28 and earlier where this case wasn't handled consistently so +that those lines could be analyzed as either topmost-intro-cont or +statement-cont. It's used for @code{topmost-intro-cont} by default, but +you might consider using @code{+} instead.}. For lines preceding a +definition, zero is used. For other lines, @code{c-basic-offset} is +added to the indentation. E.g: + +@example +@group +int +neg (int i) @hereFn{c-lineup-topmost-intro-cont} +@{ + return -i; +@} +@end group +@end example + +@noindent +and + +@example +@group +struct +larch @hereFn{c-lineup-topmost-intro-cont} +@{ + double height; +@} + the_larch, @hereFn{c-lineup-topmost-intro-cont} + another_larch; @hereFn{c-lineup-topmost-intro-cont} +@sssTBasicOffset{} +@end group +@end example + +@noindent +and + +@example +@group +struct larch +the_larch, @hereFn{c-lineup-topmost-intro-cont} + another_larch; @hereFn{c-lineup-topmost-intro-cont} +@end group +@end example + +@workswith @code{topmost-intro-cont}. +@end defun + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Custom Line-Up, Other Indentation, Line-Up Functions, Customizing Indentation +@comment node-name, next, previous, up +@section Custom Line-Up Functions +@cindex customization, indentation functions +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +The most flexible way to customize indentation is by writing custom +line-up functions, and associating them with specific syntactic +symbols (@pxref{c-offsets-alist}). Depending on the effect you want, +it might be better to write a @code{c-special-indent-hook} function +rather than a line-up function (@pxref{Other Indentation}). + +@ccmode{} comes with an extensive set of predefined line-up functions, +not all of which are used by the default styles. So there's a good +chance the function you want already exists. @xref{Line-Up +Functions}, for a list of them. If you write your own line-up +function, it's probably a good idea to start working from one of these +predefined functions, which can be found in the file +@file{cc-align.el}. If you have written a line-up function that you +think is generally useful, you're very welcome to contribute it; +please contact @email{bug-cc-mode@@gnu.org}. + + Line-up functions are passed a single argument, the syntactic +element (see below). The return value is a @code{c-offsets-alist} +offset specification: for example, an integer, a symbol such as +@code{+}, a vector, @code{nil}@footnote{Returning @code{nil} is useful +when the offset specification for a syntactic element is a list +containing the line-up function (@pxref{c-offsets-alist}).}, or even +another line-up function. Full details of these are in +@ref{c-offsets-alist}. + +Line-up functions must not move point or change the content of the +buffer (except temporarily). They are however allowed to do +@dfn{hidden buffer changes}, i.e. setting text properties for caching +purposes etc. Buffer undo recording is disabled while they run. + +The syntactic element passed as the parameter to a line-up function is +a cons cell of the form + +@example +(@r{@var{syntactic-symbol}} . @r{@var{anchor-position}}) +@end example + +@noindent +@c FIXME!!! The following sentence might be better omitted, since the +@c information is in the cross reference "Syntactic Analysis". 2005/10/2. +where @var{syntactic-symbol} is the symbol that the function was +called for, and @var{anchor-position} is the anchor position (if any) +for the construct that triggered the syntactic symbol +(@pxref{Syntactic Analysis}). This cons cell is how the syntactic +element of a line used to be represented in @ccmode{} 5.28 and +earlier. Line-up functions are still passed this cons cell, so as to +preserve compatibility with older configurations. In the future, we +may decide to convert to using the full list format---you can prepare +your setup for this by using the access functions +(@code{c-langelem-sym}, etc.) described below. + +@vindex c-syntactic-element +@vindex syntactic-element (c-) +@vindex c-syntactic-context +@vindex syntactic-context (c-) +Some syntactic symbols, e.g. @code{arglist-cont-nonempty}, have more +info in the syntactic element - typically other positions that can be +interesting besides the anchor position. That info can't be accessed +through the passed argument, which is a cons cell. Instead, you can +get this information from the variable @code{c-syntactic-element}, +which is dynamically bound to the complete syntactic element. The +variable @code{c-syntactic-context} might also be useful - it gets +dynamically bound to the complete syntactic context. @xref{Custom +Braces}. + +@ccmode{} provides a few functions to access parts of syntactic +elements in a more abstract way. Besides making the code easier to +read, they also hide the difference between the old cons cell form +used in the line-up function argument and the new list form used in +@code{c-syntactic-element} and everywhere else. The functions are: + +@defun c-langelem-sym langelem +@findex langelem-sym (c-) +Return the syntactic symbol in @var{langelem}. +@end defun + +@defun c-langelem-pos langelem +@findex langelem-pos (c-) +Return the anchor position in @var{langelem}, or nil if there is none. +@end defun + +@defun c-langelem-col langelem &optional preserve-point +@findex langelem-col (c-) +Return the column of the anchor position in @var{langelem}. Also move +the point to that position unless @var{preserve-point} is +non-@code{nil}. +@end defun + +@defun c-langelem-2nd-pos langelem +@findex langelem-2nd-pos (c-) +Return the secondary position in @var{langelem}, or @code{nil} if there +is none. + +Note that the return value of this function is always @code{nil} if +@var{langelem} is in the old cons cell form. Thus this function is +only meaningful when used on syntactic elements taken from +@code{c-syntactic-element} or @code{c-syntactic-context}. +@end defun + +Custom line-up functions can be as simple or as complex as you like, and +any syntactic symbol that appears in @code{c-offsets-alist} can have a +custom line-up function associated with it. + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Other Indentation, , Custom Line-Up, Customizing Indentation +@comment node-name, next, previous, up +@section Other Special Indentations +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +Here are the remaining odds and ends regarding indentation: + +@defopt c-label-minimum-indentation +@vindex label-minimum-indentation (c-) +In @samp{gnu} style (@pxref{Built-in Styles}), a minimum indentation is +imposed on lines inside code blocks. This minimum indentation is +controlled by this style variable. The default value is 1. + +@findex c-gnu-impose-minimum +@findex gnu-impose-minimum (c-) +It's the function @code{c-gnu-impose-minimum} that enforces this minimum +indentation. It must be present on @code{c-special-indent-hook} to +work. +@end defopt + +@defopt c-special-indent-hook +@vindex special-indent-hook (c-) +This style variable is a standard hook variable that is called after +every line is indented by @ccmode{}. It is called only if +@code{c-syntactic-indentation} is non-@code{nil} (which it is by +default (@pxref{Indentation Engine Basics})). You can put a function +on this hook to do any special indentation or ad hoc line adjustments +your style dictates, such as adding extra indentation to constructors +or destructor declarations in a class definition, etc. Sometimes it +is better to write a custom Line-up Function instead (@pxref{Custom +Line-Up}). + +When the indentation engine calls this hook, the variable +@code{c-syntactic-context} is bound to the current syntactic context +(i.e. what you would get by typing @kbd{C-c C-s} on the source line. +@xref{Custom Braces}.). Note that you should not change point or mark +inside a @code{c-special-indent-hook} function, i.e. you'll probably +want to wrap your function in a @code{save-excursion}@footnote{The +numerical value returned by @code{point} will change if you change the +indentation of the line within a @code{save-excursion} form, but point +itself will still be over the same piece of text.}. + +Setting @code{c-special-indent-hook} in style definitions is handled +slightly differently from other variables---A style can only add +functions to this hook, not remove them. @xref{Style Variables}. +@end defopt + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Custom Macros, Odds and Ends, Customizing Indentation, Top +@comment node-name, next, previous, up +@chapter Customizing Macros +@cindex macros +@cindex preprocessor directives +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +Normally, the lines in a multi-line macro are indented relative to +each other as though they were code. You can suppress this behavior +by setting the following user option: + +@defopt c-syntactic-indentation-in-macros +@vindex syntactic-indentation-in-macros (c-) +Enable syntactic analysis inside macros, which is the default. If this +is @code{nil}, all lines inside macro definitions are analyzed as +@code{cpp-macro-cont}. +@end defopt + +@ccmode{} provides some tools to help keep the line continuation +backslashes in macros neat and tidy. Their precise action is +customized with these variables: + +@defopt c-backslash-column +@vindex backslash-column (c-) +@defoptx c-backslash-max-column +@vindex backslash-max-column (c-) +These variables control the alignment columns for line continuation +backslashes in multiline macros. They are used by the functions that +automatically insert or align such backslashes, +e.g. @code{c-backslash-region} and @code{c-context-line-break}. + +@code{c-backslash-column} specifies the minimum column for the +backslashes. If any line in the macro goes past this column, then the +next tab stop (i.e. next multiple of @code{tab-width}) in that line is +used as the alignment column for all the backslashes, so that they +remain in a single column. However, if any lines go past +@code{c-backslash-max-column} then the backslashes in the rest of the +macro will be kept at that column, so that the lines which are too +long ``stick out'' instead. + +Don't ever set these variables to @code{nil}. If you want to disable +the automatic alignment of backslashes, use +@code{c-auto-align-backslashes}. +@end defopt + +@defopt c-auto-align-backslashes +@vindex auto-align-backslashes (c-) +Align automatically inserted line continuation backslashes if +non-@code{nil}. When line continuation backslashes are inserted +automatically for line breaks in multiline macros, e.g. by +@code{c-context-line-break}, they are aligned with the other +backslashes in the same macro if this flag is set. + +If @code{c-auto-align-backslashes} is @code{nil}, automatically +inserted backslashes are preceded by a single space, and backslashes +get aligned only when you explicitly invoke the command +@code{c-backslash-region} (@kbd{C-c C-\}). +@end defopt + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Odds and Ends, Sample .emacs File, Custom Macros, Top +@comment node-name, next, previous, up +@chapter Odds and Ends +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +The stuff that didn't fit in anywhere else is documented here. + +@defopt c-require-final-newline +@vindex require-final-newline (c-) +Controls whether a final newline is enforced when the file is saved. +The value is an association list that for each language mode specifies +the value to give to @code{require-final-newline} (@pxref{Saving +Buffers,,, @lispref{}, @lispreftitle{}}) at mode initialization. If a +language isn't present on the association list, CC Mode won't touch +@code{require-final-newline} in buffers for that language. + +The default is to set @code{require-final-newline} to @code{t} in the +languages that mandate that source files should end with newlines. +These are C, C++ and Objective-C. +@end defopt + +@defopt c-echo-syntactic-information-p +@vindex echo-syntactic-information-p (c-) +If non-@code{nil}, the syntactic analysis for the current line is shown +in the echo area when it's indented (unless +@code{c-syntactic-indentation} is @code{nil}). That's useful when +finding out which syntactic symbols to modify to get the indentation you +want. +@end defopt + +@defopt c-report-syntactic-errors +@vindex report-syntactic-errors (c-) +If non-@code{nil}, certain syntactic errors are reported with a ding and +a message, for example when an @code{else} is indented for which there +is no corresponding @code{if}. + +Note however that @ccmode{} doesn't make any special effort to check for +syntactic errors; that's the job of the compiler. The reason it can +report cases like the one above is that it can't find the correct +anchoring position to indent the line in that case. +@end defopt + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Sample .emacs File, Performance Issues, Odds and Ends, Top +@comment node-name, next, previous, up +@appendix Sample .emacs File +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +Here's a sample .emacs file fragment that might help you along the way. +Just copy this region and paste it into your .emacs file. You might want +to change some of the actual values. + +@verbatim +;; Make a non-standard key binding. We can put this in +;; c-mode-base-map because c-mode-map, c++-mode-map, and so on, +;; inherit from it. +(defun my-c-initialization-hook () + (define-key c-mode-base-map "\C-m" 'c-context-line-break)) +(add-hook 'c-initialization-hook 'my-c-initialization-hook) + +;; offset customizations not in my-c-style +;; This will take precedence over any setting of the syntactic symbol +;; made by a style. +(setq c-offsets-alist '((member-init-intro . ++))) + +;; Create my personal style. +(defconst my-c-style + '((c-tab-always-indent . t) + (c-comment-only-line-offset . 4) + (c-hanging-braces-alist . ((substatement-open after) + (brace-list-open))) + (c-hanging-colons-alist . ((member-init-intro before) + (inher-intro) + (case-label after) + (label after) + (access-label after))) + (c-cleanup-list . (scope-operator + empty-defun-braces + defun-close-semi)) + (c-offsets-alist . ((arglist-close . c-lineup-arglist) + (substatement-open . 0) + (case-label . 4) + (block-open . 0) + (knr-argdecl-intro . -))) + (c-echo-syntactic-information-p . t)) + "My C Programming Style") +(c-add-style "PERSONAL" my-c-style) + +;; Customizations for all modes in CC Mode. +(defun my-c-mode-common-hook () + ;; set my personal style for the current buffer + (c-set-style "PERSONAL") + ;; other customizations + (setq tab-width 8 + ;; this will make sure spaces are used instead of tabs + indent-tabs-mode nil) + ;; we like auto-newline, but not hungry-delete + (c-toggle-auto-newline 1)) +(add-hook 'c-mode-common-hook 'my-c-mode-common-hook) +@end verbatim + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Performance Issues, Limitations and Known Bugs, Sample .emacs File, Top +@comment node-name, next, previous, up +@chapter Performance Issues +@cindex performance +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@comment FIXME: (ACM, 2003/5/24). Check whether AWK needs mentioning here. + +C and its derivative languages are highly complex creatures. Often, +ambiguous code situations arise that require @ccmode{} to scan large +portions of the buffer to determine syntactic context. Such +pathological code can cause @ccmode{} to perform fairly badly. This +section gives some insight in how @ccmode{} operates, how that interacts +with some coding styles, and what you can use to improve performance. + +The overall goal is that @ccmode{} shouldn't be overly slow (i.e. take +more than a fraction of a second) in any interactive operation. +I.e. it's tuned to limit the maximum response time in single operations, +which is sometimes at the expense of batch-like operations like +reindenting whole blocks. If you find that @ccmode{} gradually gets +slower and slower in certain situations, perhaps as the file grows in +size or as the macro or comment you're editing gets bigger, then chances +are that something isn't working right. You should consider reporting +it, unless it's something that's mentioned in this section. + +Because @ccmode{} has to scan the buffer backwards from the current +insertion point, and because C's syntax is fairly difficult to parse in +the backwards direction, @ccmode{} often tries to find the nearest +position higher up in the buffer from which to begin a forward scan +(it's typically an opening or closing parenthesis of some kind). The +farther this position is from the current insertion point, the slower it +gets. + +@findex beginning-of-defun +In earlier versions of @ccmode{}, we used to recommend putting the +opening brace of a top-level construct@footnote{E.g. a function in C, +or outermost class definition in C++ or Java.} into the leftmost +column. Earlier still, this used to be a rigid Emacs constraint, as +embodied in the @code{beginning-of-defun} function. @ccmode now +caches syntactic information much better, so that the delay caused by +searching for such a brace when it's not in column 0 is minimal, +except perhaps when you've just moved a long way inside the file. + +@findex defun-prompt-regexp +@vindex c-Java-defun-prompt-regexp +@vindex Java-defun-prompt-regexp (c-) +A special note about @code{defun-prompt-regexp} in Java mode: The common +style is to hang the opening braces of functions and classes on the +right side of the line, and that doesn't work well with the Emacs +approach. @ccmode{} comes with a constant +@code{c-Java-defun-prompt-regexp} which tries to define a regular +expression usable for this style, but there are problems with it. In +some cases it can cause @code{beginning-of-defun} to hang@footnote{This +has been observed in Emacs 19.34 and XEmacs 19.15.}. For this reason, +it is not used by default, but if you feel adventurous, you can set +@code{defun-prompt-regexp} to it in your mode hook. In any event, +setting and relying on @code{defun-prompt-regexp} will definitely slow +things down because (X)Emacs will be doing regular expression searches a +lot, so you'll probably be taking a hit either way! + +@ccmode{} maintains a cache of the opening parentheses of the blocks +surrounding the point, and it adapts that cache as the point is moved +around. That means that in bad cases it can take noticeable time to +indent a line in a new surrounding, but after that it gets fast as long +as the point isn't moved far off. The farther the point is moved, the +less useful is the cache. Since editing typically is done in ``chunks'' +rather than on single lines far apart from each other, the cache +typically gives good performance even when the code doesn't fit the +Emacs approach to finding the defun starts. + +@vindex c-enable-xemacs-performance-kludge-p +@vindex enable-xemacs-performance-kludge-p (c-) +XEmacs users can set the variable +@code{c-enable-xemacs-performance-kludge-p} to non-@code{nil}. This +tells @ccmode{} to use XEmacs-specific built-in functions which, in some +circumstances, can locate the top-most opening brace much more quickly than +@code{beginning-of-defun}. Preliminary testing has shown that for +styles where these braces are hung (e.g. most JDK-derived Java styles), +this hack can improve performance of the core syntax parsing routines +from 3 to 60 times. However, for styles which @emph{do} conform to +Emacs' recommended style of putting top-level braces in column zero, +this hack can degrade performance by about as much. Thus this variable +is set to @code{nil} by default, since the Emacs-friendly styles should +be more common (and encouraged!). Note that this variable has no effect +in Emacs since the necessary built-in functions don't exist (in Emacs +22.1 as of this writing in February 2007). + +Text properties are used to speed up skipping over syntactic whitespace, +i.e. comments and preprocessor directives. Indenting a line after a +huge macro definition can be slow the first time, but after that the +text properties are in place and it should be fast (even after you've +edited other parts of the file and then moved back). + +Font locking can be a CPU hog, especially the font locking done on +decoration level 3 which tries to be very accurate. Note that that +level is designed to be used with a font lock support mode that only +fontifies the text that's actually shown, i.e. Lazy Lock or Just-in-time +Lock mode, so make sure you use one of them. Fontification of a whole +buffer with some thousand lines can often take over a minute. That is +a known weakness; the idea is that it never should happen. + +The most effective way to speed up font locking is to reduce the +decoration level to 2 by setting @code{font-lock-maximum-decoration} +appropriately. That level is designed to be as pretty as possible +without sacrificing performance. @xref{Font Locking Preliminaries}, for +more info. + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Limitations and Known Bugs, FAQ, Performance Issues, Top +@comment node-name, next, previous, up +@chapter Limitations and Known Bugs +@cindex limitations +@cindex bugs +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@itemize @bullet +@item +@ccmode{} doesn't support trigraphs. (These are character sequences +such as @samp{??(}, which represents @samp{[}. They date from a time +when some character sets didn't have all the characters that C needs, +and are now utterly obsolete.) + +@item +There is no way to apply auto newline settings (@pxref{Auto-newlines}) +on already typed lines. That's only a feature to ease interactive +editing. + +To generalize this issue a bit: @ccmode{} is not intended to be used as +a reformatter for old code in some more or less batch-like way. With +the exception of some functions like @code{c-indent-region}, it's only +geared to be used interactively to edit new code. There's currently no +intention to change this goal. + +If you want to reformat old code, you're probably better off using some +other tool instead, e.g. @ref{Top, , GNU indent, indent, The `indent' +Manual}, which has more powerful reformatting capabilities than +@ccmode{}. + +@item +The support for C++ templates (in angle brackets) is not yet complete. +When a non-nested template is used in a declaration, @ccmode{} indents +it and font-locks it OK. Templates used in expressions, and nested +templates do not fare so well. Sometimes a workaround is to refontify +the expression after typing the closing @samp{>}. + +@item +On loading @ccmode{}, sometimes this error message appears: + +@example +File mode specification error: (void-variable c-font-lock-keywords-3) +@end example + +This is due to a bug in the function @code{eval-after-load} in some +versions of (X)Emacs. It can manifest itself when there is a symbolic +link in the path of the directory which contains (X)Emacs. As a +workaround, put the following into your @file{.emacs} file, fairly +early on: + +@example +(defun my-load-cc-fonts () + (require "cc-fonts")) +(add-hook 'c-initialization-hook 'my-load-cc-fonts) +@end example +@end itemize + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node FAQ, Updating CC Mode, Limitations and Known Bugs, Top +@comment node-name, next, previous, up +@appendix Frequently Asked Questions +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@itemize @bullet +@item +@emph{How can I change the indent level from 4 spaces to 2 spaces?} + +Set the variable @code{c-basic-offset}. @xref{Getting Started}. + +@item +@kindex RET +@kindex C-j +@emph{Why doesn't the @kbd{RET} key indent the new line?} + +Emacs' convention is that @kbd{RET} just adds a newline, and that +@kbd{C-j} adds a newline and indents it. You can make @kbd{RET} do this +too by adding this to your @code{c-initialization-hook}: + +@example +(define-key c-mode-base-map "\C-m" 'c-context-line-break) +@end example + +@xref{Getting Started}. This is a very common question. If you want +this to be the default behavior, don't lobby us, lobby RMS! @t{:-)} + +@item +@emph{How do I stop my code jumping all over the place when I type?} + +Deactivate ``electric minor mode'' with @kbd{C-c C-l}. @xref{Getting +Started}. + +@item +@kindex C-x h +@kindex C-M-\ +@emph{How do I reindent the whole file?} + +Visit the file and hit @kbd{C-x h} to mark the whole buffer. Then hit +@kbd{C-M-\}. @xref{Indentation Commands}. + +@item +@kindex C-M-q +@kindex C-M-u +@emph{How do I reindent the current block?} + +First move to the brace which opens the block with @kbd{C-M-u}, then +reindent that expression with @kbd{C-M-q}. @xref{Indentation +Commands}. + +@item +@emph{I put @code{(c-set-offset 'substatement-open 0)} in my +@file{.emacs} file but I get an error saying that @code{c-set-offset}'s +function definition is void. What's wrong?} + +This means that @ccmode{} hasn't yet been loaded into your Emacs +session by the time the @code{c-set-offset} call is reached, most +likely because @ccmode{} is being autoloaded. Instead of putting the +@code{c-set-offset} line in your top-level @file{.emacs} file, put it +in your @code{c-initialization-hook} (@pxref{CC Hooks}), or simply +modify @code{c-offsets-alist} directly: + +@example +(setq c-offsets-alist '((substatement-open . 0))) +@end example + +@item +@cindex open paren in column zero +@emph{I have an open paren character at column zero inside a comment or +multiline string literal, and it causes the fontification and/or +indentation to go haywire. What gives?} + +It's due to the ad-hoc rule in (X)Emacs that such open parens always +start defuns (which translates to functions, classes, namespaces or any +other top-level block constructs in the @ccmode{} languages). +@ifset XEMACS +@xref{Defuns,,, xemacs, XEmacs User's Manual}, for details. +@end ifset +@ifclear XEMACS +@xref{Left Margin Paren,,, emacs, GNU Emacs Manual}, for details +(@xref{Defuns,,, emacs, GNU Emacs Manual}, in the Emacs 20 manual). +@end ifclear + +This heuristic is built into the core syntax analysis routines in +(X)Emacs, so it's not really a @ccmode{} issue. However, in Emacs +21.1 it became possible to turn it off@footnote{Using the variable +@code{open-paren-in-column-0-is-defun-start}.} and @ccmode{} does so +there since it's got its own system to keep track of blocks. + +@end itemize + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Updating CC Mode, Mailing Lists and Bug Reports, FAQ, Top +@comment node-name, next, previous, up +@appendix Getting the Latest CC Mode Release +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@ccmode{} has been standard with all versions of Emacs since 19.34 and +of XEmacs since 19.16. + +@cindex web site +Due to release schedule skew, it is likely that all of these Emacsen +have old versions of @ccmode{} and so should be upgraded. Access to the +@ccmode{} source code, as well as more detailed information on Emacsen +compatibility, etc. are all available on the web site: + +@quotation +@uref{http://cc-mode.sourceforge.net/} +@end quotation + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Mailing Lists and Bug Reports, GNU Free Documentation License, Updating CC Mode, Top +@comment node-name, next, previous, up +@appendix Mailing Lists and Submitting Bug Reports +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@kindex C-c C-b +@findex c-submit-bug-report +@findex submit-bug-report (c-) +To report bugs, use the @kbd{C-c C-b} (bound to +@code{c-submit-bug-report}) command. This provides vital information +we need to reproduce your problem. Make sure you include a concise, +but complete code example. Please try to boil your example down to +just the essential code needed to reproduce the problem, and include +an exact recipe of steps needed to expose the bug. Be especially sure +to include any code that appears @emph{before} your bug example, if +you think it might affect our ability to reproduce it. + +Please try to produce the problem in an Emacs instance without any +customizations loaded (i.e. start it with the @samp{-q --no-site-file} +arguments). If it works correctly there, the problem might be caused +by faulty customizations in either your own or your site +configuration. In that case, we'd appreciate it if you isolate the +Emacs Lisp code that triggers the bug and include it in your report. + +@cindex bug report mailing list +Bug reports should be sent to @email{bug-cc-mode@@gnu.org}. You can +also send other questions and suggestions (kudos? @t{;-)} to that +address. It's a mailing list which you can join or browse an archive +of; see the web site at @uref{http://cc-mode.sourceforge.net/} for +further details. + +@cindex announcement mailing list +If you want to get announcements of new @ccmode{} releases, send the +word @emph{subscribe} in the body of a message to +@email{cc-mode-announce-request@@lists.sourceforge.net}. It's possible +to subscribe from the web site too. Announcements will also be posted +to the Usenet newsgroups @code{gnu.emacs.sources}, @code{comp.emacs}, +@code{comp.emacs.xemacs}, @code{comp.lang.c}, @code{comp.lang.c++}, +@code{comp.lang.objective-c}, @code{comp.lang.java.softwaretools}, +@code{comp.lang.idl}, and @code{comp.lang.awk}. +@c There is no newsgroup for Pike. :-( + + +@node GNU Free Documentation License, Command and Function Index, Mailing Lists and Bug Reports, Top +@appendix GNU Free Documentation License +@include doclicense.texi + + +@c Removed the tentative node "Mode Initialization" from here, 2005/8/27. +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Command and Function Index, Variable Index, GNU Free Documentation License, Top +@comment node-name, next, previous, up +@unnumbered Command and Function Index +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +Since most @ccmode{} commands are prepended with the string +@samp{c-}, each appears under its @code{c-@var{thing}} name and its +@code{@var{thing} (c-)} name. +@iftex +@sp 2 +@end iftex +@printindex fn + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Variable Index, Concept and Key Index, Command and Function Index, Top +@comment node-name, next, previous, up +@unnumbered Variable Index +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +Since most @ccmode{} variables are prepended with the string +@samp{c-}, each appears under its @code{c-@var{thing}} name and its +@code{@var{thing} (c-)} name. +@iftex +@sp 2 +@end iftex +@printindex vr + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Concept and Key Index, , Variable Index, Top +@comment node-name, next, previous, up +@unnumbered Concept and Key Index +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@printindex cp + + +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@comment Epilogue. +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +@iftex +@page +@summarycontents +@contents +@end iftex + +@bye + +@ignore + arch-tag: c4cab162-5e57-4366-bdce-4a9db2fc97f0 +@end ignore diff --cc etc/NEWS.22 index ccabf7d4faf,00000000000..824da8932ed mode 100644,000000..100644 --- a/etc/NEWS.22 +++ b/etc/NEWS.22 @@@ -1,5509 -1,0 +1,5514 @@@ +GNU Emacs NEWS -- history of user-visible changes. + +Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 + Free Software Foundation, Inc. +See the end of the file for license conditions. + +Please send Emacs bug reports to bug-gnu-emacs@gnu.org. +If possible, use M-x report-emacs-bug. + +This file is about changes in Emacs version 22. + +See files NEWS.21, NEWS.20, NEWS.19, NEWS.18, and NEWS.1-17 for changes +in older Emacs versions. + +You can narrow news to a specific version by calling `view-emacs-news' +with a prefix argument or by typing C-u C-h C-n. + +* About external Lisp packages + +When you upgrade to Emacs 22 from a previous version, some older +versions of external Lisp packages are known to behave badly. +So in general, it is recommended that you upgrade to the latest +versions of any external Lisp packages that you are using. + +You should also be aware that many Lisp packages have been included +with Emacs 22 (see the extensive list below), and you should remove +any older versions of these packages to ensure that the Emacs 22 +version is used. You can use M-x list-load-path-shadows to find such +older packages. + +Some specific packages that are known to cause problems are given +below. Emacs tries to warn you about these through `bad-packages-alist'. + +** Semantic (used by CEDET, ECB, JDEE): upgrade to latest version. + +** cua.el, cua-mode.el: remove old versions. + + +* Installation Changes in Emacs 22.2 + +** Emacs is now licensed under the GNU GPL version 3 (or later). + +** Support for GNU/kFreeBSD (GNU userland and FreeBSD kernel) was added. + +* Changes in Emacs 22.2 + ++** `find-name-dired' now uses -iname rather than -name ++for case-insensitive filesystems. The default behavior is determined ++by the value of `read-file-name-completion-ignore-case'; if you don't ++like that, customize the value of the new option `find-name-arg'. ++ +** In Image mode, whenever the displayed image is wider and/or higher +than the window, the usual keys for moving the cursor cause the image +to be scrolled horizontally or vertically instead. + +** Scrollbars follow the system theme on Windows XP and later. +Windows XP introduced themed scrollbars, but applications have to take +special steps to use them. Emacs now has the appropriate resources linked +in to make it use the scrollbars from the system theme. + +** focus-follows-mouse defaults to nil on MS Windows. +Previously this variable was incorrectly documented as having no effect +on MS Windows, and the default was inappropriate for the majority of +Windows installations. Users of software which modifies the behaviour of +Windows to cause focus to follow the mouse will now need to explicitly set +this variable. + +** `bad-packages-alist' will warn about external packages that are known +to cause problems in this version of Emacs. + +** The values of `dired-recursive-deletes' and `dired-recursive-copies' +have been changed to `top'. This means that the user is asked once, +before deleting/copying the indicated directory recursively. + +** `browse-url-emacs' loads a URL into an Emacs buffer. Handy for *.el URLs. + +** The command gdba has been removed as gdb works now for those cases where it +was needed. In text command mode, if you have problems before execution has +started, use M-x gud-gdb. + +** desktop.el now detects conflicting uses of the desktop file. +When loading the desktop, desktop.el can now detect that the file is already +in use. The default behavior is to ask the user what to do, but you can +customize it with the new option `desktop-load-locked-desktop'. When saving, +desktop.el warns about attempts to overwrite a desktop file if it determines +that the desktop being saved is not an update of the one on disk. + +* New Modes and Packages in Emacs 22.2 + +** bibtex-style-mode helps you write BibTeX's *.bst files. + +** The new package css-mode.el provides a major mode for editing CSS files. + +** The new package vera-mode.el provides a major mode for editing Vera files. + +** The new package verilog-mode.el provides a major mode for editing Verilog files. + +** The new package socks.el implements the SOCKS v5 protocol. + +** VC + +*** VC backends can provide completion of revision names. + +*** VC backends can provide extra menu entries to be added to the "Version Control" menu. +This can be used to add menu entries for backend specific functions. + +*** VC has some support for Mercurial (Hg). + +*** VC has some support for Monotone (Mtn). + +*** VC has some support for Bazaar (Bzr). + +*** VC has some support for Git. + +* Lisp Changes in Emacs 22.2. + +** Frame-local variables are deprecated and are slated for removal. +Use frame parameters instead. + +** The function invisible-p returns non-nil if the character +after a specified position is invisible. + ++++ +** inhibit-modification-hooks is bound to t while running modification hooks. +As a happy consequence, after-change-functions and before-change-functions +are not bound to nil any more while running an (after|before)-change-function. + +** New function `window-full-width-p' returns t if a window is as wide +as its frame. + +** The new function `image-refresh' refreshes all images associated +with a given image specification. + +** The new function `combine-and-quote-strings' concatenates a list of strings +using a specified separator. If a string contains double quotes, they +are escaped in the output. + +** The new function `split-string-and-unquote' performs the inverse operation to +`combine-and-quote-strings', i.e. splits a single string into a list +of strings, undoing any quoting added by `combine-and-quote-strings'. +(For some separator/string combinations, the original strings cannot +be recovered.) + + +* Installation Changes in Emacs 22.1 + +** You can build Emacs with Gtk+ widgets by specifying `--with-x-toolkit=gtk' +when you run configure. This requires Gtk+ 2.4 or newer. This port +provides a way to display multilingual text in menus (with some caveats). + +** The Emacs Lisp Reference Manual is now part of the distribution. + +The Emacs Lisp Reference Manual in Info format is built as part of the +Emacs build procedure and installed together with the Emacs User +Manual. A menu item was added to the menu bar to make it easily +accessible (Help->More Manuals->Emacs Lisp Reference). + +** The Introduction to Programming in Emacs Lisp manual is now part of +the distribution. + +This manual is now part of the standard distribution and is installed, +together with the Emacs User Manual, into the Info directory. A menu +item was added to the menu bar to make it easily accessible +(Help->More Manuals->Introduction to Emacs Lisp). + +** Leim is now part of the Emacs distribution. +You no longer need to download a separate tarball in order to build +Emacs with Leim. + +** Support for MacOS X was added. +See the files mac/README and mac/INSTALL for build instructions. + +** Mac OS 9 port now uses the Carbon API by default. You can also +create a non-Carbon build by specifying `NonCarbon' as a target. See +the files mac/README and mac/INSTALL for build instructions. + +** Support for a Cygwin build of Emacs was added. + +** Support for GNU/Linux systems on X86-64 machines was added. + +** Support for GNU/Linux systems on S390 machines was added. + +** Support for GNU/Linux systems on Tensilica Xtensa machines was added. + +** Support for FreeBSD/Alpha has been added. + +** New translations of the Emacs Tutorial are available in the +following languages: Brasilian Portuguese, Bulgarian, Chinese (both +with simplified and traditional characters), French, Russian, and +Italian. Type `C-u C-h t' to choose one of them in case your language +setup doesn't automatically select the right one. + +** New translations of the Emacs reference card are available in the +Brasilian Portuguese and Russian. The corresponding PostScript files +are also included. + +** A French translation of the `Emacs Survival Guide' is available. + +** Emacs now supports new configure options `--program-prefix', +`--program-suffix' and `--program-transform-name' that affect the names of +installed programs. + +** By default, Emacs now uses a setgid helper program to update game +scores. The directory ${localstatedir}/games/emacs is the normal +place for game scores to be stored. You can control this with the +configure option `--with-game-dir'. The specific user that Emacs uses +to own the game scores is controlled by `--with-game-user'. If access +to a game user is not available, then scores will be stored separately +in each user's home directory. + +** Emacs now includes support for loading image libraries on demand. +(Currently this feature is only used on MS Windows.) You can configure +the supported image types and their associated dynamic libraries by +setting the variable `image-library-alist'. + +** Emacs can now be built without sound support. + +** Emacs Lisp source files are compressed by default if `gzip' is available. + +** All images used in Emacs have been consolidated in etc/images and subdirs. +See also the changes to `find-image', documented below. + +** Emacs comes with a new set of icons. +These icons are displayed on the taskbar and/or titlebar when Emacs +runs in a graphical environment. Source files for these icons can be +found in etc/images/icons. (You can't change the icons displayed by +Emacs by changing these files directly. On X, the icon is compiled +into the Emacs executable; see gnu.h in the source tree. On MS +Windows, see nt/icons/emacs.ico.) + +** The `emacsserver' program has been removed, replaced with Lisp code. + +** The `yow' program has been removed. +Use the corresponding Emacs feature instead. + +** The Emacs terminal emulation in term.el uses a different terminfo name. +The Emacs terminal emulation in term.el now uses "eterm-color" as its +terminfo name, since term.el now supports color. + +** The script etc/emacs-buffer.gdb can be used with gdb to retrieve the +contents of buffers from a core dump and save them to files easily, should +Emacs crash. + +** Building with -DENABLE_CHECKING does not automatically build with union +types any more. Add -DUSE_LISP_UNION_TYPE if you want union types. + +** When pure storage overflows while dumping, Emacs now prints how +much pure storage it will approximately need. + + +* Startup Changes in Emacs 22.1 + +** Init file changes +If the init file ~/.emacs does not exist, Emacs will try +~/.emacs.d/init.el or ~/.emacs.d/init.elc. Likewise, if the shell init file +~/.emacs_SHELL is not found, Emacs will try ~/.emacs.d/init_SHELL.sh. + +** Emacs can now be invoked in full-screen mode on a windowed display. +When Emacs is invoked on a window system, the new command-line options +`--fullwidth', `--fullheight', and `--fullscreen' produce a frame +whose width, height, or both width and height take up the entire +screen size. (For now, this does not work with some window managers.) + +** Emacs now displays a splash screen by default even if command-line +arguments were given. The new command-line option --no-splash +disables the splash screen; see also the variable +`inhibit-splash-screen' (which is also aliased as +`inhibit-startup-message'). + +** New user option `inhibit-startup-buffer-menu'. +When loading many files, for instance with `emacs *', Emacs normally +displays a buffer menu. This option turns the buffer menu off. + +** New command line option -nbc or --no-blinking-cursor disables +the blinking cursor on graphical terminals. + +** The option --script FILE runs Emacs in batch mode and loads FILE. +It is useful for writing Emacs Lisp shell script files, because they +can start with this line: + + #!/usr/bin/emacs --script + +** The -f option, used from the command line to call a function, +now reads arguments for the function interactively if it is +an interactively callable function. + +** The option --directory DIR now modifies `load-path' immediately. +Directories are added to the front of `load-path' in the order they +appear on the command line. For example, with this command line: + + emacs -batch -L .. -L /tmp --eval "(require 'foo)" + +Emacs looks for library `foo' in the parent directory, then in /tmp, then +in the other directories in `load-path'. (-L is short for --directory.) + +** When you specify a frame size with --geometry, the size applies to +all frames you create. A position specified with --geometry only +affects the initial frame. + +** Emacs built for MS-Windows now behaves like Emacs on X does, +with respect to its frame position: if you don't specify a position +(in your .emacs init file, in the Registry, or with the --geometry +command-line option), Emacs leaves the frame position to the Windows' +window manager. + +** The command line option --no-windows has been changed to +--no-window-system. The old one still works, but is deprecated. + +** If the environment variable DISPLAY specifies an unreachable X display, +Emacs will now startup as if invoked with the --no-window-system option. + +** Emacs now reads the standard abbrevs file ~/.abbrev_defs +automatically at startup, if it exists. When Emacs offers to save +modified buffers, it saves the abbrevs too if they have changed. It +can do this either silently or asking for confirmation first, +according to the value of `save-abbrevs'. + +** New command line option -Q or --quick. +This is like using -q --no-site-file, but in addition it also disables +the fancy startup screen. + +** New command line option -D or --basic-display. +Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and +the blinking cursor. + +** The default is now to use a bitmap as the icon. +The command-line options --icon-type, -i have been replaced with +options --no-bitmap-icon, -nbi to turn the bitmap icon off. + +** If the environment variable EMAIL is defined, Emacs now uses its value +to compute the default value of `user-mail-address', in preference to +concatenation of `user-login-name' with the name of your host machine. + + +* Incompatible Editing Changes in Emacs 22.1 + +** You can now follow links by clicking Mouse-1 on the link. + +See below for more details. + +** When the undo information of the current command gets really large +(beyond the value of `undo-outer-limit'), Emacs discards it and warns +you about it. + +** When Emacs prompts for file names, SPC no longer completes the file name. +This is so filenames with embedded spaces could be input without the +need to quote the space with a C-q. The underlying changes in the +keymaps that are active in the minibuffer are described below under +"New keymaps for typing file names". + +If you want the old behavior back, add these two key bindings to your +~/.emacs init file: + + (define-key minibuffer-local-filename-completion-map + " " 'minibuffer-complete-word) + (define-key minibuffer-local-must-match-filename-map + " " 'minibuffer-complete-word) + +** The completion commands TAB, SPC and ? in the minibuffer apply only +to the text before point. If there is text in the buffer after point, +it remains unchanged. + +** In incremental search, C-w is changed. M-%, C-M-w and C-M-y are special. + +See below under "incremental search changes". + +** M-g is now a prefix key. +M-g g and M-g M-g run goto-line. +M-g n and M-g M-n run next-error (like C-x `). +M-g p and M-g M-p run previous-error. + +** C-u M-g M-g switches to the most recent previous buffer, +and goes to the specified line in that buffer. + +When goto-line starts to execute, if there's a number in the buffer at +point then it acts as the default argument for the minibuffer. + +** M-o now is the prefix key for setting text properties; +M-o M-o requests refontification. + +** C-x C-f RET (find-file), typing nothing in the minibuffer, is no longer +a special case. + +Since the default input is the current directory, this has the effect +of specifying the current directory. Normally that means to visit the +directory with Dired. + +You can get the old behavior by typing C-x C-f M-n RET, which fetches +the actual file name into the minibuffer. + +** In Dired's ! command (dired-do-shell-command), `*' and `?' now +control substitution of the file names only when they are surrounded +by whitespace. This means you can now use them as shell wildcards +too. If you want to use just plain `*' as a wildcard, type `*""'; the +doublequotes make no difference in the shell, but they prevent +special treatment in `dired-do-shell-command'. + +** The info-search bindings on C-h C-f, C-h C-k and C-h C-i +have been moved to C-h F, C-h K and C-h S. + +** `apply-macro-to-region-lines' now operates on all lines that begin +in the region, rather than on all complete lines in the region. + +** line-move-ignore-invisible now defaults to t. + +** Adaptive filling misfeature removed. +It no longer treats `NNN.' or `(NNN)' as a prefix. + +** The old bindings C-M-delete and C-M-backspace have been deleted, +since there are situations where one or the other will shut down +the operating system or your X server. + +** The register compatibility key bindings (deprecated since Emacs 19) +have been removed: + C-x / point-to-register (Use: C-x r SPC) + C-x j jump-to-register (Use: C-x r j) + C-x x copy-to-register (Use: C-x r s) + C-x g insert-register (Use: C-x r i) + + +* Editing Changes in Emacs 22.1 + +** The max size of buffers and integers has been doubled. +On 32bit machines, it is now 256M (i.e. 268435455). + +** !MEM FULL! at the start of the mode line indicates that Emacs +cannot get any more memory for Lisp data. This often means it could +crash soon if you do things that use more memory. On most systems, +killing buffers will get out of this state. If killing buffers does +not make !MEM FULL! disappear, you should save your work and start +a new Emacs. + +** `undo-only' does an undo which does not redo any previous undo. + +** Yanking text now discards certain text properties that can +be inconvenient when you did not expect them. The variable +`yank-excluded-properties' specifies which ones. Insertion +of register contents and rectangles also discards these properties. + +** New command `kill-whole-line' kills an entire line at once. +By default, it is bound to C-S-. + +** M-SPC (just-one-space) when given a numeric argument N +converts whitespace around point to N spaces. + +** You can now switch buffers in a cyclic order with C-x C-left +(previous-buffer) and C-x C-right (next-buffer). C-x left and +C-x right can be used as well. The functions keep a different buffer +cycle for each frame, using the frame-local buffer list. + +** C-x 5 C-o displays a specified buffer in another frame +but does not switch to that frame. It's the multi-frame +analogue of C-x 4 C-o. + +** `special-display-buffer-names' and `special-display-regexps' now +understand two new boolean pseudo-frame-parameters `same-frame' and +`same-window'. + +** New commands to operate on pairs of open and close characters: +`insert-pair', `delete-pair', `raise-sexp'. + +** M-x setenv now expands environment variable references. + +Substrings of the form `$foo' and `${foo}' in the specified new value +now refer to the value of environment variable foo. To include a `$' +in the value, use `$$'. + +** The default values of paragraph-start and indent-line-function have +been changed to reflect those used in Text mode rather than those used +in Paragraph-Indent Text mode. + +** The default for the paper size (variable ps-paper-type) is taken +from the locale. + +** Help command changes: + +*** Changes in C-h bindings: + +C-h e displays the *Messages* buffer. + +C-h d runs apropos-documentation. + +C-h r visits the Emacs Manual in Info. + +C-h followed by a control character is used for displaying files + that do not change: + +C-h C-f displays the FAQ. +C-h C-e displays the PROBLEMS file. + +The info-search bindings on C-h C-f, C-h C-k and C-h C-i +have been moved to C-h F, C-h K and C-h S. + +C-h c, C-h k, C-h w, and C-h f now handle remapped interactive commands. +- C-h c and C-h k report the actual command (after possible remapping) + run by the key sequence. +- C-h w and C-h f on a command which has been remapped now report the + command it is remapped to, and the keys which can be used to run + that command. + +For example, if C-k is bound to kill-line, and kill-line is remapped +to new-kill-line, these commands now report: +- C-h c and C-h k C-k reports: + C-k runs the command new-kill-line +- C-h w and C-h f kill-line reports: + kill-line is remapped to new-kill-line which is on C-k, +- C-h w and C-h f new-kill-line reports: + new-kill-line is on C-k + +*** The apropos commands now accept a list of words to match. +When more than one word is specified, at least two of those words must +be present for an item to match. Regular expression matching is still +available. + +*** The new option `apropos-sort-by-scores' causes the matching items +to be sorted according to their score. The score for an item is a +number calculated to indicate how well the item matches the words or +regular expression that you entered to the apropos command. The best +match is listed first, and the calculated score is shown for each +matching item. + +*** Help commands `describe-function' and `describe-key' now show function +arguments in lowercase italics on displays that support it. To change the +default, customize face `help-argument-name' or redefine the function +`help-default-arg-highlight'. + +*** C-h v and C-h f commands now include a hyperlink to the C source for +variables and functions defined in C (if the C source is available). + +*** Help mode now only makes hyperlinks for faces when the face name is +preceded or followed by the word `face'. It no longer makes +hyperlinks for variables without variable documentation, unless +preceded by one of the words `variable' or `option'. It now makes +hyperlinks to Info anchors (or nodes) if the anchor (or node) name is +enclosed in single quotes and preceded by `info anchor' or `Info +anchor' (in addition to earlier `info node' and `Info node'). In +addition, it now makes hyperlinks to URLs as well if the URL is +enclosed in single quotes and preceded by `URL'. + +*** The new command `describe-char' (C-u C-x =) pops up a buffer with +description various information about a character, including its +encodings and syntax, its text properties, how to input, overlays, and +widgets at point. You can get more information about some of them, by +clicking on mouse-sensitive areas or moving there and pressing RET. + +*** The command `list-text-properties-at' has been deleted because +C-u C-x = gives the same information and more. + +*** New command `display-local-help' displays any local help at point +in the echo area. It is bound to `C-h .'. It normally displays the +same string that would be displayed on mouse-over using the +`help-echo' property, but, in certain cases, it can display a more +keyboard oriented alternative. + +*** New user option `help-at-pt-display-when-idle' allows you to +automatically show the help provided by `display-local-help' on +point-over, after suitable idle time. The amount of idle time is +determined by the user option `help-at-pt-timer-delay' and defaults +to one second. This feature is turned off by default. + +** Mark command changes: + +*** A prefix argument is no longer required to repeat a jump to a +previous mark if you set `set-mark-command-repeat-pop' to t. I.e. C-u +C-SPC C-SPC C-SPC ... cycles through the mark ring. Use C-u C-u C-SPC +to set the mark immediately after a jump. + +*** Marking commands extend the region when invoked multiple times. + +If you type C-M-SPC (mark-sexp), M-@ (mark-word), M-h +(mark-paragraph), or C-M-h (mark-defun) repeatedly, the marked region +extends each time, so you can mark the next two sexps with M-C-SPC +M-C-SPC, for example. This feature also works for +mark-end-of-sentence, if you bind that to a key. It also extends the +region when the mark is active in Transient Mark mode, regardless of +the last command. To start a new region with one of marking commands +in Transient Mark mode, you can deactivate the active region with C-g, +or set the new mark with C-SPC. + +*** Some commands do something special in Transient Mark mode when the +mark is active--for instance, they limit their operation to the +region. Even if you don't normally use Transient Mark mode, you might +want to get this behavior from a particular command. There are two +ways you can enable Transient Mark mode and activate the mark, for one +command only. + +One method is to type C-SPC C-SPC; this enables Transient Mark mode +and sets the mark at point. The other method is to type C-u C-x C-x. +This enables Transient Mark mode temporarily but does not alter the +mark or the region. + +After these commands, Transient Mark mode remains enabled until you +deactivate the mark. That typically happens when you type a command +that alters the buffer, but you can also deactivate the mark by typing +C-g. + +*** Movement commands `beginning-of-buffer', `end-of-buffer', +`beginning-of-defun', `end-of-defun' do not set the mark if the mark +is already active in Transient Mark mode. + +*** M-h (mark-paragraph) now accepts a prefix arg. + +With positive arg, M-h marks the current and the following paragraphs; +if the arg is negative, it marks the current and the preceding +paragraphs. + +** Incremental Search changes: + +*** M-% typed in isearch mode invokes `query-replace' or +`query-replace-regexp' (depending on search mode) with the current +search string used as the string to replace. + +*** C-w in incremental search now grabs either a character or a word, +making the decision in a heuristic way. This new job is done by the +command `isearch-yank-word-or-char'. To restore the old behavior, +bind C-w to `isearch-yank-word' in `isearch-mode-map'. + +*** C-y in incremental search now grabs the next line if point is already +at the end of a line. + +*** C-M-w deletes and C-M-y grabs a character in isearch mode. +Another method to grab a character is to enter the minibuffer by `M-e' +and to type `C-f' at the end of the search string in the minibuffer. + +*** Vertical scrolling is now possible within incremental search. +To enable this feature, customize the new user option +`isearch-allow-scroll'. User written commands which satisfy stringent +constraints can be marked as "scrolling commands". See the Emacs manual +for details. + +*** Isearch no longer adds `isearch-resume' commands to the command +history by default. To enable this feature, customize the new +user option `isearch-resume-in-command-history'. + +** Replace command changes: + +*** When used interactively, the commands `query-replace-regexp' and +`replace-regexp' allow \,expr to be used in a replacement string, +where expr is an arbitrary Lisp expression evaluated at replacement +time. `\#' in a replacement string now refers to the count of +replacements already made by the replacement command. All regular +expression replacement commands now allow `\?' in the replacement +string to specify a position where the replacement string can be +edited for each replacement. `query-replace-regexp-eval' is now +deprecated since it offers no additional functionality. + +*** query-replace uses isearch lazy highlighting when the new user option +`query-replace-lazy-highlight' is non-nil. + +*** The current match in query-replace is highlighted in new face +`query-replace' which by default inherits from isearch face. + +*** New user option `query-replace-skip-read-only': when non-nil, +`query-replace' and related functions simply ignore +a match if part of it has a read-only property. + +** Local variables lists: + +*** If the local variables list contains any variable-value pairs that +are not known to be safe, Emacs shows a prompt asking whether to apply +the local variables list as a whole. In earlier versions, a prompt +was only issued for variables explicitly marked as risky (for the +definition of risky variables, see `risky-local-variable-p'). + +At the prompt, you can choose to save the contents of this local +variables list to `safe-local-variable-values'. This new customizable +option is a list of variable-value pairs that are known to be safe. +Variables can also be marked as safe with the existing +`safe-local-variable' property (see `safe-local-variable-p'). +However, risky variables will not be added to +`safe-local-variable-values' in this way. + +*** The variable `enable-local-variables' controls how local variable +lists are handled. t, the default, specifies the standard querying +behavior. :safe means use only safe values, and ignore the rest. +:all means set all variables, whether or not they are safe. +nil means ignore them all. Anything else means always query. + +*** The variable `safe-local-eval-forms' specifies a list of forms that +are ok to evaluate when they appear in an `eval' local variables +specification. Normally Emacs asks for confirmation before evaluating +such a form, but if the form appears in this list, no confirmation is +needed. + +*** If a function has a non-nil `safe-local-eval-function' property, +that means it is ok to evaluate some calls to that function when it +appears in an `eval' local variables specification. If the property +is t, then any form calling that function with constant arguments is +ok. If the property is a function or list of functions, they are called +with the form as argument, and if any returns t, the form is ok to call. + +If the form is not "ok to call", that means Emacs asks for +confirmation as before. + +*** In processing a local variables list, Emacs strips the prefix and +suffix from every line before processing all the lines. + +*** Text properties in local variables. + +A file local variables list cannot specify a string with text +properties--any specified text properties are discarded. + +** File operation changes: + +*** Unquoted `$' in file names do not signal an error any more when +the corresponding environment variable does not exist. +Instead, the `$ENVVAR' text is left as is, so that `$$' quoting +is only rarely needed. + +*** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case. + +Since the default input is the current directory, this has the effect +of specifying the current directory. Normally that means to visit the +directory with Dired. + +*** C-x s (save-some-buffers) now offers an option `d' to diff a buffer +against its file, so you can see what changes you would be saving. + +*** Auto Compression mode is now enabled by default. + +*** If the user visits a file larger than `large-file-warning-threshold', +Emacs asks for confirmation. + +*** The commands copy-file, rename-file, make-symbolic-link and +add-name-to-file, when given a directory as the "new name" argument, +convert it to a file name by merging in the within-directory part of +the existing file's name. (This is the same convention that shell +commands cp, mv, and ln follow.) Thus, M-x copy-file RET ~/foo RET +/tmp RET copies ~/foo to /tmp/foo. + +*** require-final-newline now has two new possible values: + +`visit' means add a newline (as an undoable change) if it's needed +when visiting the file. + +`visit-save' means add a newline (as an undoable change) if it's +needed when visiting the file, and also add a newline if it's needed +when saving the file. + +*** The new option mode-require-final-newline controls how certain +major modes enable require-final-newline. Any major mode that's +designed for a kind of file that should normally end in a newline +sets require-final-newline based on mode-require-final-newline. +So you can customize mode-require-final-newline to control what these +modes do. + +*** When you are root, and you visit a file whose modes specify +read-only, the Emacs buffer is now read-only too. Type C-x C-q if you +want to make the buffer writable. (As root, you can in fact alter the +file.) + +*** find-file-read-only visits multiple files in read-only mode, +when the file name contains wildcard characters. + +*** find-alternate-file replaces the current file with multiple files, +when the file name contains wildcard characters. It now asks if you +wish save your changes and not just offer to kill the buffer. + +*** When used interactively, `format-write-file' now asks for confirmation +before overwriting an existing file, unless a prefix argument is +supplied. This behavior is analogous to `write-file'. + +*** The variable `auto-save-file-name-transforms' now has a third element that +controls whether or not the function `make-auto-save-file-name' will +attempt to construct a unique auto-save name (e.g. for remote files). + +*** The new option `write-region-inhibit-fsync' disables calls to fsync +in `write-region'. This can be useful on laptops to avoid spinning up +the hard drive upon each file save. Enabling this variable may result +in data loss, use with care. + +** Minibuffer changes: + +*** The completion commands TAB, SPC and ? in the minibuffer apply only +to the text before point. If there is text in the buffer after point, +it remains unchanged. + +*** The new file-name-shadow-mode is turned ON by default, so that when +entering a file name, any prefix which Emacs will ignore is dimmed. + +*** There's a new face `minibuffer-prompt'. +Emacs adds this face to the list of text properties stored in the +variable `minibuffer-prompt-properties', which is used to display the +prompt string. + +*** Enhanced visual feedback in `*Completions*' buffer. + +Completions lists use faces to highlight what all completions +have in common and where they begin to differ. + +The common prefix shared by all possible completions uses the face +`completions-common-part', while the first character that isn't the +same uses the face `completions-first-difference'. By default, +`completions-common-part' inherits from `default', and +`completions-first-difference' inherits from `bold'. The idea of +`completions-common-part' is that you can use it to make the common +parts less visible than normal, so that the rest of the differing +parts is, by contrast, slightly highlighted. + +Above fontification is always done when listing completions is +triggered at minibuffer. If you want to fontify completions whose +listing is triggered at the other normal buffer, you have to pass +the common prefix of completions to `display-completion-list' as +its second argument. + +*** File-name completion can now ignore specified directories. +If an element of the list in `completion-ignored-extensions' ends in a +slash `/', it indicates a subdirectory that should be ignored when +completing file names. Elements of `completion-ignored-extensions' +which do not end in a slash are never considered when a completion +candidate is a directory. + +*** New user option `history-delete-duplicates'. +If set to t when adding a new history element, all previous identical +elements are deleted from the history list. + +** Redisplay changes: + +*** The new face `mode-line-inactive' is used to display the mode line +of non-selected windows. The `mode-line' face is now used to display +the mode line of the currently selected window. + +The new variable `mode-line-in-non-selected-windows' controls whether +the `mode-line-inactive' face is used. + +*** The mode line position information now comes before the major mode. +When the file is maintained under version control, that information +appears between the position information and the major mode. + +*** You can now customize the use of window fringes. To control this +for all frames, use M-x fringe-mode or the Show/Hide submenu of the +top-level Options menu, or customize the `fringe-mode' variable. To +control this for a specific frame, use the command M-x +set-fringe-style. + +*** Angle icons in the fringes can indicate the buffer boundaries. In +addition, up and down arrow bitmaps in the fringe indicate which ways +the window can be scrolled. + +This behavior is activated by setting the buffer-local variable +`indicate-buffer-boundaries' to a non-nil value. The default value of +this variable is found in `default-indicate-buffer-boundaries'. + +If value is `left' or `right', both angle and arrow bitmaps are +displayed in the left or right fringe, resp. + +The value can also be an alist which specifies the presence and +position of each bitmap individually. + +For example, ((top . left) (t . right)) places the top angle bitmap +in left fringe, the bottom angle bitmap in right fringe, and both +arrow bitmaps in right fringe. To show just the angle bitmaps in the +left fringe, but no arrow bitmaps, use ((top . left) (bottom . left)). + +*** On window systems, lines which are exactly as wide as the window +(not counting the final newline character) are no longer broken into +two lines on the display (with just the newline on the second line). +Instead, the newline now "overflows" into the right fringe, and the +cursor will be displayed in the fringe when positioned on that newline. + +The new user option 'overflow-newline-into-fringe' can be set to nil to +revert to the old behavior of continuing such lines. + +*** A window can now have individual fringe and scroll-bar settings, +in addition to the individual display margin settings. + +Such individual settings are now preserved when windows are split +horizontally or vertically, a saved window configuration is restored, +or when the frame is resized. + +*** When a window has display margin areas, the fringes are now +displayed between the margins and the buffer's text area, rather than +outside those margins. + +*** New face `escape-glyph' highlights control characters and escape glyphs. + +*** Non-breaking space and hyphens are now displayed with a special +face, either nobreak-space or escape-glyph. You can turn this off or +specify a different mode by setting the variable `nobreak-char-display'. + +*** The parameters of automatic hscrolling can now be customized. +The variable `hscroll-margin' determines how many columns away from +the window edge point is allowed to get before automatic hscrolling +will horizontally scroll the window. The default value is 5. + +The variable `hscroll-step' determines how many columns automatic +hscrolling scrolls the window when point gets too close to the +window edge. If its value is zero, the default, Emacs scrolls the +window so as to center point. If its value is an integer, it says how +many columns to scroll. If the value is a floating-point number, it +gives the fraction of the window's width to scroll the window. + +The variable `automatic-hscrolling' was renamed to +`auto-hscroll-mode'. The old name is still available as an alias. + +*** Moving or scrolling through images (and other lines) taller than +the window now works sensibly, by automatically adjusting the window's +vscroll property. + +*** Preemptive redisplay now adapts to current load and bandwidth. + +To avoid preempting redisplay on fast computers, networks, and displays, +the arrival of new input is now performed at regular intervals during +redisplay. The new variable `redisplay-preemption-period' specifies +the period; the default is to check for input every 0.1 seconds. + +*** The %c and %l constructs are now ignored in frame-title-format. +Due to technical limitations in how Emacs interacts with windowing +systems, these constructs often failed to render properly, and could +even cause Emacs to crash. + +*** If value of `auto-resize-tool-bars' is `grow-only', the tool bar +will expand as needed, but not contract automatically. To contract +the tool bar, you must type C-l. + +*** New customize option `overline-margin' controls the space between +overline and text. + +*** New variable `x-underline-at-descent-line' controls the relative +position of the underline. When set, it overrides the +`x-use-underline-position-properties' variables. + +** New faces: + +*** `mode-line-highlight' is the standard face indicating mouse sensitive +elements on mode-line (and header-line) like `highlight' face on text +areas. + +*** `mode-line-buffer-id' is the standard face for buffer identification +parts of the mode line. + +*** `shadow' face defines the appearance of the "shadowed" text, i.e. +the text which should be less noticeable than the surrounding text. +This can be achieved by using shades of grey in contrast with either +black or white default foreground color. This generic shadow face +allows customization of the appearance of shadowed text in one place, +so package-specific faces can inherit from it. + +*** `vertical-border' face is used for the vertical divider between windows. + +** Font-Lock (syntax highlighting) changes: + +*** All modes now support using M-x font-lock-mode to toggle +fontification, even those such as Occur, Info, and comint-derived +modes that do their own fontification in a special way. + +The variable `Info-fontify' is no longer applicable; to disable +fontification in Info, remove `turn-on-font-lock' from +`Info-mode-hook'. + +*** New standard font-lock face `font-lock-comment-delimiter-face'. + +*** New standard font-lock face `font-lock-preprocessor-face'. + +*** Easy to overlook single character negation can now be font-locked. +You can use the new variable `font-lock-negation-char-face' and the face of +the same name to customize this. Currently the cc-modes, sh-script-mode, +cperl-mode and make-mode support this. + +*** Font-Lock mode: in major modes such as Lisp mode, where some Emacs +features assume that an open-paren in column 0 is always outside of +any string or comment, Font-Lock now highlights any such open-paren in +bold-red if it is inside a string or a comment, to indicate that it +can cause trouble. You should rewrite the string or comment so that +the open-paren is not in column 0. + +*** M-o now is the prefix key for setting text properties; +M-o M-o requests refontification. + +*** The default settings for JIT stealth lock parameters are changed. +The default value for the user option jit-lock-stealth-time is now nil +instead of 3. This setting of jit-lock-stealth-time disables stealth +fontification: on today's machines, it may be a bug in font lock +patterns if fontification otherwise noticeably degrades interactivity. +If you find movement in infrequently visited buffers sluggish (and the +major mode maintainer has no better idea), customizing +jit-lock-stealth-time to a non-nil value will let Emacs fontify +buffers in the background when it considers the system to be idle. +jit-lock-stealth-nice is now 0.5 instead of 0.125 which is supposed to +cause less load than the old defaults. + +*** jit-lock can now be delayed with `jit-lock-defer-time'. + +If this variable is non-nil, its value should be the amount of Emacs +idle time in seconds to wait before starting fontification. For +example, if you set `jit-lock-defer-time' to 0.25, fontification will +only happen after 0.25s of idle time. + +*** contextual refontification is now separate from stealth fontification. + +jit-lock-defer-contextually is renamed jit-lock-contextually and +jit-lock-context-time determines the delay after which contextual +refontification takes place. + +*** lazy-lock is considered obsolete. + +The `lazy-lock' package is superseded by `jit-lock' and is considered +obsolete. `jit-lock' is activated by default; if you wish to continue +using `lazy-lock', activate it in your ~/.emacs like this: + (setq font-lock-support-mode 'lazy-lock-mode) + +If you invoke `lazy-lock-mode' directly rather than through +`font-lock-support-mode', it now issues a warning: + "Use font-lock-support-mode rather than calling lazy-lock-mode" + +** Menu support: + +*** A menu item "Show/Hide" was added to the top-level menu "Options". +This menu allows you to turn various display features on and off (such +as the fringes, the tool bar, the speedbar, and the menu bar itself). +You can also move the vertical scroll bar to either side here or turn +it off completely. There is also a menu-item to toggle displaying of +current date and time, current line and column number in the mode-line. + +*** Speedbar has moved from the "Tools" top level menu to "Show/Hide". + +*** The menu item "Open File..." has been split into two items, "New File..." +and "Open File...". "Open File..." now opens only existing files. This is +to support existing GUI file selection dialogs better. + +*** The file selection dialog for Gtk+, Mac, W32 and Motif/LessTif can be +disabled by customizing the variable `use-file-dialog'. + +*** The pop up menus for Lucid now stay up if you do a fast click and can +be navigated with the arrow keys (like Gtk+, Mac and W32). + +*** The menu bar for Motif/LessTif/Lucid/Gtk+ can be navigated with keys. +Pressing F10 shows the first menu in the menu bar. Navigation is done with +the arrow keys, select with the return key and cancel with the escape keys. + +*** The Lucid menus can display multilingual text in your locale. You have +to explicitly specify a fontSet resource for this to work, for example +`-xrm "Emacs*fontSet: -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*"'. + +*** Dialogs for Lucid/Athena and LessTif/Motif now pop down on pressing +ESC, like they do for Gtk+, Mac and W32. + +*** For the Gtk+ version, you can make Emacs use the old file dialog +by setting the variable `x-gtk-use-old-file-dialog' to t. Default is to use +the new dialog. + +*** You can exit dialog windows and menus by typing C-g. + +** Buffer Menu changes: + +*** The new options `buffers-menu-show-directories' and +`buffers-menu-show-status' let you control how buffers are displayed +in the menu dropped down when you click "Buffers" from the menu bar. + +`buffers-menu-show-directories' controls whether the menu displays +leading directories as part of the file name visited by the buffer. +If its value is `unless-uniquify', the default, directories are +shown unless uniquify-buffer-name-style' is non-nil. The value of nil +and t turn the display of directories off and on, respectively. + +`buffers-menu-show-status' controls whether the Buffers menu includes +the modified and read-only status of the buffers. By default it is +t, and the status is shown. + +Setting these variables directly does not take effect until next time +the Buffers menu is regenerated. + +*** New command `Buffer-menu-toggle-files-only' toggles display of file +buffers only in the Buffer Menu. It is bound to T in Buffer Menu +mode. + +*** `buffer-menu' and `list-buffers' now list buffers whose names begin +with a space, when those buffers are visiting files. Normally buffers +whose names begin with space are omitted. + +** Mouse changes: + +*** You can now follow links by clicking Mouse-1 on the link. + +Traditionally, Emacs uses a Mouse-1 click to set point and a Mouse-2 +click to follow a link, whereas most other applications use a Mouse-1 +click for both purposes, depending on whether you click outside or +inside a link. Now the behavior of a Mouse-1 click has been changed +to match this context-sensitive dual behavior. (If you prefer the old +behavior, set the user option `mouse-1-click-follows-link' to nil.) + +Depending on the current mode, a Mouse-2 click in Emacs can do much +more than just follow a link, so the new Mouse-1 behavior is only +activated for modes which explicitly mark a clickable text as a "link" +(see the new function `mouse-on-link-p' for details). The Lisp +packages that are included in release 22.1 have been adapted to do +this, but external packages may not yet support this. However, there +is no risk in using such packages, as the worst thing that could +happen is that you get the original Mouse-1 behavior when you click +on a link, which typically means that you set point where you click. + +If you want to get the original Mouse-1 action also inside a link, you +just need to press the Mouse-1 button a little longer than a normal +click (i.e. press and hold the Mouse-1 button for half a second before +you release it). + +Dragging the Mouse-1 inside a link still performs the original +drag-mouse-1 action, typically copy the text. + +You can customize the new Mouse-1 behavior via the new user options +`mouse-1-click-follows-link' and `mouse-1-click-in-non-selected-windows'. + +*** If you set the new variable `mouse-autoselect-window' to a non-nil +value, windows are automatically selected as you move the mouse from +one Emacs window to another, even within a frame. A minibuffer window +can be selected only when it is active. + +*** On X, when the window manager requires that you click on a frame to +select it (give it focus), the selected window and cursor position +normally changes according to the mouse click position. If you set +the variable x-mouse-click-focus-ignore-position to t, the selected +window and cursor position do not change when you click on a frame +to give it focus. + +*** Emacs normally highlights mouse sensitive text whenever the mouse +is over the text. By setting the new variable `mouse-highlight', you +can optionally enable mouse highlighting only after you move the +mouse, so that highlighting disappears when you press a key. You can +also disable mouse highlighting. + +*** You can now customize if selecting a region by dragging the mouse +shall not copy the selected text to the kill-ring by setting the new +variable mouse-drag-copy-region to nil. + +*** Under X, mouse-wheel-mode is turned on by default. + +*** Emacs ignores mouse-2 clicks while the mouse wheel is being moved. + +People tend to push the mouse wheel (which counts as a mouse-2 click) +unintentionally while turning the wheel, so these clicks are now +ignored. You can customize this with the mouse-wheel-click-event and +mouse-wheel-inhibit-click-time variables. + +*** mouse-wheels can now scroll a specific fraction of the window +(rather than a fixed number of lines) and the scrolling is `progressive'. + +** Multilingual Environment (Mule) changes: + +*** You can disable character translation for a file using the -*- +construct. Include `enable-character-translation: nil' inside the +-*-...-*- to disable any character translation that may happen by +various global and per-coding-system translation tables. You can also +specify it in a local variable list at the end of the file. For +shortcut, instead of using this long variable name, you can append the +character "!" at the end of coding-system name specified in -*- +construct or in a local variable list. For example, if a file has the +following header, it is decoded by the coding system `iso-latin-1' +without any character translation: +;; -*- coding: iso-latin-1!; -*- + +*** Language environment and various default coding systems are setup +more correctly according to the current locale name. If the locale +name doesn't specify a charset, the default is what glibc defines. +This change can result in using the different coding systems as +default in some locale (e.g. vi_VN). + +*** The keyboard-coding-system is now automatically set based on your +current locale settings if you are not using a window system. This +can mean that the META key doesn't work but generates non-ASCII +characters instead, depending on how the terminal (or terminal +emulator) works. Use `set-keyboard-coding-system' (or customize +keyboard-coding-system) if you prefer META to work (the old default) +or if the locale doesn't describe the character set actually generated +by the keyboard. See Info node `Unibyte Mode'. + +*** The new command `set-file-name-coding-system' (C-x RET F) sets +coding system for encoding and decoding file names. A new menu item +(Options->Mule->Set Coding Systems->For File Name) invokes this +command. + +*** The new command `revert-buffer-with-coding-system' (C-x RET r) +revisits the current file using a coding system that you specify. + +*** New command `recode-region' decodes the region again by a specified +coding system. + +*** The new command `recode-file-name' changes the encoding of the name +of a file. + +*** New command `ucs-insert' inserts a character specified by its +unicode. + +*** New command quail-show-key shows what key (or key sequence) to type +in the current input method to input a character at point. + +*** Limited support for character `unification' has been added. +Emacs now knows how to translate between different representations of +the same characters in various Emacs charsets according to standard +Unicode mappings. This applies mainly to characters in the ISO 8859 +sets plus some other 8-bit sets, but can be extended. For instance, +translation works amongst the Emacs ...-iso8859-... charsets and the +mule-unicode-... ones. + +By default this translation happens automatically on encoding. +Self-inserting characters are translated to make the input conformant +with the encoding of the buffer in which it's being used, where +possible. + +You can force a more complete unification with the user option +unify-8859-on-decoding-mode. That maps all the Latin-N character sets +into Unicode characters (from the latin-iso8859-1 and +mule-unicode-0100-24ff charsets) on decoding. Note that this mode +will often effectively clobber data with an iso-2022 encoding. + +*** New language environments (set up automatically according to the +locale): Belarusian, Bulgarian, Chinese-EUC-TW, Croatian, Esperanto, +French, Georgian, Italian, Latin-7, Latvian, Lithuanian, Malayalam, +Russian, Russian, Slovenian, Swedish, Tajik, Tamil, UTF-8,Ukrainian, +Welsh,Latin-6, Windows-1255. + +*** New input methods: latin-alt-postfix, latin-postfix, latin-prefix, +belarusian, bulgarian-bds, bulgarian-phonetic, chinese-sisheng (for +Chinese Pinyin characters), croatian, dutch, georgian, latvian-keyboard, +lithuanian-numeric, lithuanian-keyboard, malayalam-inscript, rfc1345, +russian-computer, sgml, slovenian, tamil-inscript, ukrainian-computer, +ucs, vietnamese-telex, welsh. + +*** There is support for decoding Greek and Cyrillic characters into +either Unicode (the mule-unicode charsets) or the iso-8859 charsets, +when possible. The latter are more space-efficient. + This is controlled by user option utf-fragment-on-decoding. + +*** Improved Thai support. A new minor mode `thai-word-mode' (which is +automatically activated if you select Thai as a language +environment) changes key bindings of most word-oriented commands to +versions which recognize Thai words. Affected commands are + M-f (forward-word) + M-b (backward-word) + M-d (kill-word) + M-DEL (backward-kill-word) + M-t (transpose-words) + M-q (fill-paragraph) + +*** Indian support has been updated. +The in-is13194 coding system is now Unicode-based. CDAC fonts are +assumed. There is a framework for supporting various Indian scripts, +but currently only Devanagari, Malayalam and Tamil are supported. + +*** The utf-8/16 coding systems have been enhanced. +By default, untranslatable utf-8 sequences are simply composed into +single quasi-characters. User option `utf-translate-cjk-mode' (it is +turned on by default) arranges to translate many utf-8 CJK character +sequences into real Emacs characters in a similar way to the Mule-UCS +system. As this loads a fairly big data on demand, people who are not +interested in CJK characters may want to customize it to nil. +You can augment/amend the CJK translation via hash tables +`ucs-mule-cjk-to-unicode' and `ucs-unicode-to-mule-cjk'. The utf-8 +coding system now also encodes characters from most of Emacs's +one-dimensional internal charsets, specifically the ISO-8859 ones. +The utf-16 coding system is affected similarly. + +*** A UTF-7 coding system is available in the library `utf-7'. + +*** A new coding system `euc-tw' has been added for traditional Chinese +in CNS encoding; it accepts both Big 5 and CNS as input; on saving, +Big 5 is then converted to CNS. + +*** Many new coding systems are available in the `code-pages' library. +These include complete versions of most of those in codepage.el, based +on Unicode mappings. `codepage-setup' is now obsolete and is used +only in the MS-DOS port of Emacs. All coding systems defined in +`code-pages' are auto-loaded. + +*** New variable `utf-translate-cjk-unicode-range' controls which +Unicode characters to translate in `utf-translate-cjk-mode'. + +*** iso-10646-1 (`Unicode') fonts can be used to display any range of +characters encodable by the utf-8 coding system. Just specify the +fontset appropriately. + +** Customize changes: + +*** Custom themes are collections of customize options. Create a +custom theme with M-x customize-create-theme. Use M-x load-theme to +load and enable a theme, and M-x disable-theme to disable it. Use M-x +enable-theme to enable a disabled theme. + +*** The commands M-x customize-face and M-x customize-face-other-window +now look at the character after point. If a face or faces are +specified for that character, the commands by default customize those +faces. + +*** The face-customization widget has been reworked to be less confusing. +In particular, when you enable a face attribute using the corresponding +check-box, there's no longer a redundant `*' option in value selection +for that attribute; the values you can choose are only those which make +sense for the attribute. When an attribute is de-selected by unchecking +its check-box, then the (now ignored, but still present temporarily in +case you re-select the attribute) value is hidden. + +*** When you set or reset a variable's value in a Customize buffer, +the previous value becomes the "backup value" of the variable. +You can go back to that backup value by selecting "Use Backup Value" +under the "[State]" button. + +** Dired mode: + +*** In Dired's ! command (dired-do-shell-command), `*' and `?' now +control substitution of the file names only when they are surrounded +by whitespace. This means you can now use them as shell wildcards +too. If you want to use just plain `*' as a wildcard, type `*""'; the +double quotes make no difference in the shell, but they prevent +special treatment in `dired-do-shell-command'. + +*** The Dired command `dired-goto-file' is now bound to j, not M-g. +This is to avoid hiding the global key binding of M-g. + +*** New faces dired-header, dired-mark, dired-marked, dired-flagged, +dired-ignored, dired-directory, dired-symlink, dired-warning +introduced for Dired mode instead of font-lock faces. + +*** New Dired command `dired-compare-directories' marks files +with different file attributes in two dired buffers. + +*** New Dired command `dired-do-touch' (bound to T) changes timestamps +of marked files with the value entered in the minibuffer. + +*** In Dired, the w command now stores the current line's file name +into the kill ring. With a zero prefix arg, it stores the absolute file name. + +*** In Dired-x, Omitting files is now a minor mode, dired-omit-mode. + +The mode toggling command is bound to M-o. A new command +dired-mark-omitted, bound to * O, marks omitted files. The variable +dired-omit-files-p is obsoleted, use the mode toggling function +instead. + +*** The variables dired-free-space-program and dired-free-space-args +have been renamed to directory-free-space-program and +directory-free-space-args, and they now apply whenever Emacs puts a +directory listing into a buffer. + +** Comint changes: + +*** The new INSIDE_EMACS environment variable is set to "t" in subshells +running inside Emacs. This supersedes the EMACS environment variable, +which will be removed in a future Emacs release. Programs that need +to know whether they are started inside Emacs should check INSIDE_EMACS +instead of EMACS. + +*** The comint prompt can now be made read-only, using the new user +option `comint-prompt-read-only'. This is not enabled by default, +except in IELM buffers. The read-only status of IELM prompts can be +controlled with the new user option `ielm-prompt-read-only', which +overrides `comint-prompt-read-only'. + +The new commands `comint-kill-whole-line' and `comint-kill-region' +support editing comint buffers with read-only prompts. + +`comint-kill-whole-line' is like `kill-whole-line', but ignores both +read-only and field properties. Hence, it always kill entire +lines, including any prompts. + +`comint-kill-region' is like `kill-region', except that it ignores +read-only properties, if it is safe to do so. This means that if any +part of a prompt is deleted, then the entire prompt must be deleted +and that all prompts must stay at the beginning of a line. If this is +not the case, then `comint-kill-region' behaves just like +`kill-region' if read-only properties are involved: it copies the text +to the kill-ring, but does not delete it. + +*** The new command `comint-insert-previous-argument' in comint-derived +modes (shell-mode, etc.) inserts arguments from previous command lines, +like bash's `ESC .' binding. It is bound by default to `C-c .', but +otherwise behaves quite similarly to the bash version. + +*** `comint-use-prompt-regexp-instead-of-fields' has been renamed +`comint-use-prompt-regexp'. The old name has been kept as an alias, +but declared obsolete. + +** M-x Compile changes: + +*** M-x compile has become more robust and reliable + +Quite a few more kinds of messages are recognized. Messages that are +recognized as warnings or informational come in orange or green, instead of +red. Informational messages are by default skipped with `next-error' +(controlled by `compilation-skip-threshold'). + +Location data is collected on the fly as the *compilation* buffer changes. +This means you could modify messages to make them point to different files. +This also means you can not go to locations of messages you may have deleted. + +The variable `compilation-error-regexp-alist' has now become customizable. If +you had added your own regexps to this, you'll probably need to include a +leading `^', otherwise they'll match anywhere on a line. There is now also a +`compilation-mode-font-lock-keywords' and it nicely handles all the checks +that configure outputs and -o options so you see at a glance where you are. + +The new file etc/compilation.txt gives examples of each type of message. + +*** New user option `compilation-environment'. +This option allows you to specify environment variables for inferior +compilation processes without affecting the environment that all +subprocesses inherit. + +*** New user option `compilation-disable-input'. +If this is non-nil, send end-of-file as compilation process input. + +*** New options `next-error-highlight' and `next-error-highlight-no-select' +specify the method of highlighting of the corresponding source line +in new face `next-error'. + +*** A new minor mode `next-error-follow-minor-mode' can be used in +compilation-mode, grep-mode, occur-mode, and diff-mode (i.e. all the +modes that can use `next-error'). In this mode, cursor motion in the +buffer causes automatic display in another window of the corresponding +matches, compilation errors, etc. This minor mode can be toggled with +C-c C-f. + +*** When the left fringe is displayed, an arrow points to current message in +the compilation buffer. + +*** The new variable `compilation-context-lines' controls lines of leading +context before the current message. If nil and the left fringe is displayed, +it doesn't scroll the compilation output window. If there is no left fringe, +no arrow is displayed and a value of nil means display the message at the top +of the window. + +** Occur mode changes: + +*** The new command `multi-occur' is just like `occur', except it can +search multiple buffers. There is also a new command +`multi-occur-in-matching-buffers' which allows you to specify the +buffers to search by their filenames or buffer names. Internally, +Occur mode has been rewritten, and now uses font-lock, among other +changes. + +*** You can now use next-error (C-x `) and previous-error to advance to +the next/previous matching line found by M-x occur. + +*** In the *Occur* buffer, `o' switches to it in another window, and +C-o displays the current line's occurrence in another window without +switching to it. + +** Grep changes: + +*** Grep has been decoupled from compilation mode setup. + +There's a new separate package grep.el, with its own submenu and +customization group. + +*** `grep-find' is now also available under the name `find-grep' where +people knowing `find-grep-dired' would probably expect it. + +*** New commands `lgrep' (local grep) and `rgrep' (recursive grep) are +more user-friendly versions of `grep' and `grep-find', which prompt +separately for the regular expression to match, the files to search, +and the base directory for the search. Case sensitivity of the +search is controlled by the current value of `case-fold-search'. + +These commands build the shell commands based on the new variables +`grep-template' (lgrep) and `grep-find-template' (rgrep). + +The files to search can use aliases defined in `grep-files-aliases'. + +Subdirectories listed in `grep-find-ignored-directories' such as those +typically used by various version control systems, like CVS and arch, +are automatically skipped by `rgrep'. + +*** The grep commands provide highlighting support. + +Hits are fontified in green, and hits in binary files in orange. Grep buffers +can be saved and automatically revisited. + +*** New option `grep-highlight-matches' highlights matches in *grep* +buffer. It uses a special feature of some grep programs which accept +--color option to output markers around matches. When going to the next +match with `next-error' the exact match is highlighted in the source +buffer. Otherwise, if `grep-highlight-matches' is nil, the whole +source line is highlighted. + +*** New key bindings in grep output window: +SPC and DEL scrolls window up and down. C-n and C-p moves to next and +previous match in the grep window. RET jumps to the source line of +the current match. `n' and `p' shows next and previous match in +other window, but does not switch buffer. `{' and `}' jumps to the +previous or next file in the grep output. TAB also jumps to the next +file. + +*** M-x grep now tries to avoid appending `/dev/null' to the command line +by using GNU grep `-H' option instead. M-x grep automatically +detects whether this is possible or not the first time it is invoked. +When `-H' is used, the grep command line supplied by the user is passed +unchanged to the system to execute, which allows more complicated +command lines to be used than was possible before. + +*** The new variables `grep-window-height' and `grep-scroll-output' override +the corresponding compilation mode settings, for grep commands only. + +** Cursor display changes: + +*** Emacs can produce an underscore-like (horizontal bar) cursor. +The underscore cursor is set by putting `(cursor-type . hbar)' in +default-frame-alist. It supports variable heights, like the `bar' +cursor does. + +*** The variable `cursor-in-non-selected-windows' can now be set to any +of the recognized cursor types. + +*** Display of hollow cursors now obeys the buffer-local value (if any) +of `cursor-in-non-selected-windows' in the buffer that the cursor +appears in. + +*** On text terminals, the variable `visible-cursor' controls whether Emacs +uses the "very visible" cursor (the default) or the normal cursor. + +*** The X resource cursorBlink can be used to turn off cursor blinking. + +*** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is +now controlled by the variable `blink-cursor-alist'. + +** X Windows Support: + +*** Emacs now supports drag and drop for X. Dropping a file on a window +opens it, dropping text inserts the text. Dropping a file on a dired +buffer copies or moves the file to that directory. + +*** Under X11, it is possible to swap Alt and Meta (and Super and Hyper). +The new variables `x-alt-keysym', `x-hyper-keysym', `x-meta-keysym', +and `x-super-keysym' can be used to choose which keysyms Emacs should +use for the modifiers. For example, the following two lines swap +Meta and Alt: + (setq x-alt-keysym 'meta) + (setq x-meta-keysym 'alt) + +*** The X resource useXIM can be used to turn off use of XIM, which can +speed up Emacs with slow networking to the X server. + +If the configure option `--without-xim' was used to turn off use of +XIM by default, the X resource useXIM can be used to turn it on. + +*** The new variable `x-select-request-type' controls how Emacs +requests X selection. The default value is nil, which means that +Emacs requests X selection with types COMPOUND_TEXT and UTF8_STRING, +and use the more appropriately result. + +*** The scrollbar under LessTif or Motif has a smoother drag-scrolling. +On the other hand, the size of the thumb does not represent the actual +amount of text shown any more (only a crude approximation of it). + +** Xterm support: + +*** If you enable Xterm Mouse mode, Emacs will respond to mouse clicks +on the mode line, header line and display margin, when run in an xterm. + +*** Improved key bindings support when running in an xterm. +When Emacs is running in an xterm more key bindings are available. +The following should work: +{C,S,C-S,A}-{right,left,up,down,prior,next,delete,insert,F1-12}. +These key bindings work on xterm from X.org 6.8 (and later versions), +they might not work on some older versions of xterm, or on some +proprietary versions. +The various keys generated by xterm when the "modifyOtherKeys" +resource is set are also supported. + +** Character terminal color support changes: + +*** The new command-line option --color=MODE lets you specify a standard +mode for a tty color support. It is meant to be used on character +terminals whose capabilities are not set correctly in the terminal +database, or with terminal emulators which support colors, but don't +set the TERM environment variable to a name of a color-capable +terminal. "emacs --color" uses the same color commands as GNU `ls' +when invoked with "ls --color", so if your terminal can support colors +in "ls --color", it will support "emacs --color" as well. See the +user manual for the possible values of the MODE parameter. + +*** Emacs now supports several character terminals which provide more +than 8 colors. For example, for `xterm', 16-color, 88-color, and +256-color modes are supported. Emacs automatically notes at startup +the extended number of colors, and defines the appropriate entries for +all of these colors. + +*** Emacs now uses the full range of available colors for the default +faces when running on a color terminal, including 16-, 88-, and +256-color xterms. This means that when you run "emacs -nw" on an +88-color or 256-color xterm, you will see essentially the same face +colors as on X. + +*** There's a new support for colors on `rxvt' terminal emulator. + +** ebnf2ps changes: + +*** New option `ebnf-arrow-extra-width' which specify extra width for arrow +shape drawing. +The extra width is used to avoid that the arrowhead and the terminal border +overlap. It depends on `ebnf-arrow-shape' and `ebnf-line-width'. + +*** New option `ebnf-arrow-scale' which specify the arrow scale. +Values lower than 1.0, shrink the arrow. +Values greater than 1.0, expand the arrow. + +* New Modes and Packages in Emacs 22.1 + +** CUA mode is now part of the Emacs distribution. + +The new cua package provides CUA-like keybindings using C-x for +cut (kill), C-c for copy, C-v for paste (yank), and C-z for undo. +With cua, the region can be set and extended using shifted movement +keys (like pc-selection-mode) and typed text replaces the active +region (like delete-selection-mode). Do not enable these modes with +cua-mode. Customize the variable `cua-mode' to enable cua. + +The cua-selection-mode enables the CUA keybindings for the region but +does not change the bindings for C-z/C-x/C-c/C-v. It can be used as a +replacement for pc-selection-mode. + +In addition, cua provides unified rectangle support with visible +rectangle highlighting: Use C-return to start a rectangle, extend it +using the movement commands (or mouse-3), and cut or copy it using C-x +or C-c (using C-w and M-w also works). + +Use M-o and M-c to `open' or `close' the rectangle, use M-b or M-f, to +fill it with blanks or another character, use M-u or M-l to upcase or +downcase the rectangle, use M-i to increment the numbers in the +rectangle, use M-n to fill the rectangle with a numeric sequence (such +as 10 20 30...), use M-r to replace a regexp in the rectangle, and use +M-' or M-/ to restrict command on the rectangle to a subset of the +rows. See the commentary in cua-base.el for more rectangle commands. + +Cua also provides unified support for registers: Use a numeric +prefix argument between 0 and 9, i.e. M-0 .. M-9, for C-x, C-c, and +C-v to cut or copy into register 0-9, or paste from register 0-9. + +The last text deleted (not killed) is automatically stored in +register 0. This includes text deleted by typing text. + +Finally, cua provides a global mark which is set using S-C-space. +When the global mark is active, any text which is cut or copied is +automatically inserted at the global mark position. See the +commentary in cua-base.el for more global mark related commands. + +The features of cua also works with the standard Emacs bindings for +kill, copy, yank, and undo. If you want to use cua mode, but don't +want the C-x, C-c, C-v, and C-z bindings, you can customize the +`cua-enable-cua-keys' variable. + +Note: This version of cua mode is not backwards compatible with older +versions of cua.el and cua-mode.el. To ensure proper operation, you +must remove older versions of cua.el or cua-mode.el as well as the +loading and customization of those packages from the .emacs file. + +** Tramp is now part of the distribution. + +This package is similar to Ange-FTP: it allows you to edit remote +files. But whereas Ange-FTP uses FTP to access the remote host, +Tramp uses a shell connection. The shell connection is always used +for filename completion and directory listings and suchlike, but for +the actual file transfer, you can choose between the so-called +`inline' methods (which transfer the files through the shell +connection using base64 or uu encoding) and the `out-of-band' methods +(which invoke an external copying program such as `rcp' or `scp' or +`rsync' to do the copying). + +Shell connections can be acquired via `rsh', `ssh', `telnet' and also +`su' and `sudo'. Ange-FTP is still supported via the `ftp' method. + +If you want to disable Tramp you should set + + (setq tramp-default-method "ftp") + +Removing Tramp, and re-enabling Ange-FTP, can be achieved by M-x +tramp-unload-tramp. + +** The image-dired.el package allows you to easily view, tag and in +other ways manipulate image files and their thumbnails, using dired as +the main interface. Image-Dired provides functionality to generate +simple image galleries. + +** Image files are normally visited in Image mode, which lets you toggle +between viewing the image and viewing the text using C-c C-c. + +** The new python.el package is used to edit Python and Jython programs. + +** The URL package (which had been part of W3) is now part of Emacs. + +** Calc is now part of the Emacs distribution. + +Calc is an advanced desk calculator and mathematical tool written in +Emacs Lisp. The prefix for Calc has been changed to `C-x *' and Calc +can be started with `C-x * *'. The Calc manual is separate from the +Emacs manual; within Emacs, type "C-h i m calc RET" to read the +manual. A reference card is available in `etc/calccard.tex' and +`etc/calccard.ps'. + +** Org mode is now part of the Emacs distribution + +Org mode is a mode for keeping notes, maintaining ToDo lists, and +doing project planning with a fast and effective plain-text system. +It also contains a plain-text table editor with spreadsheet-like +capabilities. + +The Org mode table editor can be integrated into any major mode by +activating the minor mode, Orgtbl mode. + +The documentation for org-mode is in a separate manual; within Emacs, +type "C-h i m org RET" to read that manual. A reference card is +available in `etc/orgcard.tex' and `etc/orgcard.ps'. + +** ERC is now part of the Emacs distribution. + +ERC is a powerful, modular, and extensible IRC client for Emacs. + +To see what modules are available, type +M-x customize-option erc-modules RET. + +To start an IRC session with ERC, type M-x erc, and follow the prompts +for server, port, and nick. + +** Rcirc is now part of the Emacs distribution. + +Rcirc is an Internet relay chat (IRC) client. It supports +simultaneous connections to multiple IRC servers. Each discussion +takes place in its own buffer. For each connection you can join +several channels (many-to-many) and participate in private +(one-to-one) chats. Both channel and private chats are contained in +separate buffers. + +To start an IRC session using the default parameters, type M-x irc. +If you type C-u M-x irc, it prompts you for the server, nick, port and +startup channel parameters before connecting. + +** The new package ibuffer provides a powerful, completely +customizable replacement for buff-menu.el. + +** Newsticker is now part of the Emacs distribution. + +Newsticker asynchronously retrieves headlines (RSS) from a list of news +sites, prepares these headlines for reading, and allows for loading the +corresponding articles in a web browser. Its documentation is in a +separate manual. + +** The wdired.el package allows you to use normal editing commands on Dired +buffers to change filenames, permissions, etc... + +** Ido mode is now part of the Emacs distribution. + +The ido (interactively do) package is an extension of the iswitchb +package to do interactive opening of files and directories in addition +to interactive buffer switching. Ido is a superset of iswitchb (with +a few exceptions), so don't enable both packages. + +** The new global minor mode `file-name-shadow-mode' modifies the way +filenames being entered by the user in the minibuffer are displayed, so +that it's clear when part of the entered filename will be ignored due to +Emacs' filename parsing rules. The ignored portion can be made dim, +invisible, or otherwise less visually noticeable. The display method can +be displayed by customizing the variable `file-name-shadow-properties'. + +** Emacs' keyboard macro facilities have been enhanced by the new +kmacro package. + +Keyboard macros are now defined and executed via the F3 and F4 keys: +F3 starts a macro, F4 ends the macro, and pressing F4 again executes +the last macro. While defining the macro, F3 inserts a counter value +which automatically increments every time the macro is executed. + +There is now a keyboard macro ring which stores the most recently +defined macros. + +The C-x C-k sequence is now a prefix for the kmacro keymap which +defines bindings for moving through the keyboard macro ring, +C-x C-k C-p and C-x C-k C-n, editing the last macro C-x C-k C-e, +manipulating the macro counter and format via C-x C-k C-c, +C-x C-k C-a, and C-x C-k C-f. See the commentary in kmacro.el +for more commands. + +The original macro bindings C-x (, C-x ), and C-x e are still +available, but they now interface to the keyboard macro ring too. + +The C-x e command now automatically terminates the current macro +before calling it, if used while defining a macro. + +In addition, when ending or calling a macro with C-x e, the macro can +be repeated immediately by typing just the `e'. You can customize +this behavior via the variables kmacro-call-repeat-key and +kmacro-call-repeat-with-arg. + +Keyboard macros can now be debugged and edited interactively. +C-x C-k SPC steps through the last keyboard macro one key sequence +at a time, prompting for the actions to take. + +** The new keypad setup package provides several common bindings for +the numeric keypad which is available on most keyboards. The numeric +keypad typically has the digits 0 to 9, a decimal point, keys marked ++, -, /, and *, an Enter key, and a NumLock toggle key. The keypad +package only controls the use of the digit and decimal keys. + +By customizing the variables `keypad-setup', `keypad-shifted-setup', +`keypad-numlock-setup', and `keypad-numlock-shifted-setup', or by +using the function `keypad-setup', you can rebind all digit keys and +the decimal key of the keypad in one step for each of the four +possible combinations of the Shift key state (not pressed/pressed) and +the NumLock toggle state (off/on). + +The choices for the keypad keys in each of the above states are: +`Plain numeric keypad' where the keys generates plain digits, +`Numeric keypad with decimal key' where the character produced by the +decimal key can be customized individually (for internationalization), +`Numeric Prefix Arg' where the keypad keys produce numeric prefix args +for Emacs editing commands, `Cursor keys' and `Shifted Cursor keys' +where the keys work like (shifted) arrow keys, home/end, etc., and +`Unspecified/User-defined' where the keypad keys (kp-0, kp-1, etc.) +are left unspecified and can be bound individually through the global +or local keymaps. + +** The printing package is now part of the Emacs distribution. + +If you enable the printing package by including (require 'printing) in +the .emacs file, the normal Print item on the File menu is replaced +with a Print sub-menu which allows you to preview output through +ghostview, use ghostscript to print (if you don't have a PostScript +printer) or send directly to printer a PostScript code generated by +`ps-print' package. Use M-x pr-help for more information. + +** The new package longlines.el provides a minor mode for editing text +files composed of long lines, based on the `use-hard-newlines' +mechanism. The long lines are broken up by inserting soft newlines, +which are automatically removed when saving the file to disk or +copying into the kill ring, clipboard, etc. By default, Longlines +mode inserts soft newlines automatically during editing, a behavior +referred to as "soft word wrap" in other text editors. This is +similar to Refill mode, but more reliable. To turn the word wrap +feature off, set `longlines-auto-wrap' to nil. + +** SES mode (ses-mode) is a new major mode for creating and editing +spreadsheet files. Besides the usual Emacs features (intuitive command +letters, undo, cell formulas in Lisp, plaintext files, etc.) it also offers +viral immunity and import/export of tab-separated values. + +** The new package table.el implements editable, WYSIWYG, embedded +`text tables' in Emacs buffers. It simulates the effect of putting +these tables in a special major mode. The package emulates WYSIWYG +table editing available in modern word processors. The package also +can generate a table source in typesetting and markup languages such +as latex and html from the visually laid out text table. + +** Filesets are collections of files. You can define a fileset in +various ways, such as based on a directory tree or based on +program files that include other program files. + +Once you have defined a fileset, you can perform various operations on +all the files in it, such as visiting them or searching and replacing +in them. + +** The minor mode Reveal mode makes text visible on the fly as you +move your cursor into hidden regions of the buffer. +It should work with any package that uses overlays to hide parts +of a buffer, such as outline-minor-mode, hs-minor-mode, hide-ifdef-mode, ... + +There is also Global Reveal mode which affects all buffers. + +** New minor mode, Visible mode, toggles invisibility in the current buffer. +When enabled, it makes all invisible text visible. When disabled, it +restores the previous value of `buffer-invisibility-spec'. + +** The new package flymake.el does on-the-fly syntax checking of program +source files. See the Flymake's Info manual for more details. + +** savehist saves minibuffer histories between sessions. +To use this feature, turn on savehist-mode in your `.emacs' file. + +** The ruler-mode.el library provides a minor mode for displaying an +"active" ruler in the header line. You can use the mouse to visually +change the `fill-column', `window-margins' and `tab-stop-list' +settings. + +** The file t-mouse.el is now part of Emacs and provides access to mouse +events from the console. It still requires gpm to work but has been updated +for Emacs 22. In particular, the mode-line is now position sensitive. + +** The new package scroll-lock.el provides the Scroll Lock minor mode +for pager-like scrolling. Keys which normally move point by line or +paragraph will scroll the buffer by the respective amount of lines +instead and point will be kept vertically fixed relative to window +boundaries during scrolling. + +** The new global minor mode `size-indication-mode' (off by default) +shows the size of accessible part of the buffer on the mode line. + +** The new package conf-mode.el handles thousands of configuration files, with +varying syntaxes for comments (;, #, //, /* */ or !), assignment (var = value, +var : value, var value or keyword var value) and sections ([section] or +section { }). Many files under /etc/, or with suffixes like .cf through +.config, .properties (Java), .desktop (KDE/Gnome), .ini and many others are +recognized. + +** GDB-Script-mode is used for files like .gdbinit. + +** The new package dns-mode.el adds syntax highlighting of DNS master files. +It is a modern replacement for zone-mode.el, which is now obsolete. + +** `cfengine-mode' is a major mode for editing GNU Cfengine +configuration files. + +** The TCL package tcl-mode.el was replaced by tcl.el. +This was actually done in Emacs-21.1, and was not documented. + +* Changes in Specialized Modes and Packages in Emacs 22.1: + +** Changes in Dired + +*** Bindings for Image-Dired added. +Several new keybindings, all starting with the C-t prefix, have been +added to Dired. They are all bound to commands in Image-Dired. As a +starting point, mark some image files in a dired buffer and do C-t d +to display thumbnails of them in a separate buffer. + +** Info mode changes + +*** Images in Info pages are supported. + +Info pages show embedded images, in Emacs frames with image support. +Info documentation that includes images, processed with makeinfo +version 4.7 or newer, compiles to Info pages with embedded images. + +*** `Info-index' offers completion. + +*** http and ftp links in Info are now operational: they look like cross +references and following them calls `browse-url'. + +*** isearch in Info uses Info-search and searches through multiple nodes. + +Before leaving the initial Info node isearch fails once with the error +message [initial node], and with subsequent C-s/C-r continues through +other nodes. When isearch fails for the rest of the manual, it wraps +around the whole manual to the top/final node. The user option +`Info-isearch-search' controls whether to use Info-search for isearch, +or the default isearch search function that wraps around the current +Info node. + +*** New search commands: `Info-search-case-sensitively' (bound to S), +`Info-search-backward', and `Info-search-next' which repeats the last +search without prompting for a new search string. + +*** New command `info-apropos' searches the indices of the known +Info files on your system for a string, and builds a menu of the +possible matches. + +*** New command `Info-history-forward' (bound to r and new toolbar icon) +moves forward in history to the node you returned from after using +`Info-history-back' (renamed from `Info-last'). + +*** New command `Info-history' (bound to L) displays a menu of visited nodes. + +*** New command `Info-toc' (bound to T) creates a node with table of contents +from the tree structure of menus of the current Info file. + +*** New command `Info-copy-current-node-name' (bound to w) copies +the current Info node name into the kill ring. With a zero prefix +arg, puts the node name inside the `info' function call. + +*** New face `info-xref-visited' distinguishes visited nodes from unvisited +and a new option `Info-fontify-visited-nodes' to control this. + +*** A numeric prefix argument of `info' selects an Info buffer +with the number appended to the `*info*' buffer name (e.g. "*info*<2>"). + +*** Info now hides node names in menus and cross references by default. + +If you prefer the old behavior, you can set the new user option +`Info-hide-note-references' to nil. + +*** The default value for `Info-scroll-prefer-subnodes' is now nil. + +** Emacs server changes + +*** You can have several Emacs servers on the same machine. + + % emacs --eval '(setq server-name "foo")' -f server-start & + % emacs --eval '(setq server-name "bar")' -f server-start & + % emacsclient -s foo file1 + % emacsclient -s bar file2 + +*** The `emacsclient' command understands the options `--eval' and +`--display' which tell Emacs respectively to evaluate the given Lisp +expression and to use the given display when visiting files. + +*** User option `server-mode' can be used to start a server process. + +** Locate changes + +*** By default, reverting the *Locate* buffer now just runs the last +`locate' command back over again without offering to update the locate +database (which normally only works if you have root privileges). If +you prefer the old behavior, set the new customizable option +`locate-update-when-revert' to t. + +** Desktop package + +*** Desktop saving is now a minor mode, `desktop-save-mode'. + +*** The variable `desktop-enable' is obsolete. + +Customize `desktop-save-mode' to enable desktop saving. + +*** Buffers are saved in the desktop file in the same order as that in the +buffer list. + +*** The desktop package can be customized to restore only some buffers +immediately, remaining buffers are restored lazily (when Emacs is +idle). + +*** New command line option --no-desktop + +*** New commands: + - desktop-revert reverts to the last loaded desktop. + - desktop-change-dir kills current desktop and loads a new. + - desktop-save-in-desktop-dir saves desktop in the directory from which + it was loaded. + - desktop-lazy-complete runs the desktop load to completion. + - desktop-lazy-abort aborts lazy loading of the desktop. + +*** New customizable variables: + - desktop-save. Determines whether the desktop should be saved when it is + killed. + - desktop-file-name-format. Format in which desktop file names should be saved. + - desktop-path. List of directories in which to lookup the desktop file. + - desktop-locals-to-save. List of local variables to save. + - desktop-globals-to-clear. List of global variables that `desktop-clear' will clear. + - desktop-clear-preserve-buffers-regexp. Regexp identifying buffers that `desktop-clear' + should not delete. + - desktop-restore-eager. Number of buffers to restore immediately. Remaining buffers are + restored lazily (when Emacs is idle). + - desktop-lazy-verbose. Verbose reporting of lazily created buffers. + - desktop-lazy-idle-delay. Idle delay before starting to create buffers. + +*** New hooks: + - desktop-after-read-hook run after a desktop is loaded. + - desktop-no-desktop-file-hook run when no desktop file is found. + +** Recentf changes + +The recent file list is now automatically cleaned up when recentf mode is +enabled. The new option `recentf-auto-cleanup' controls when to do +automatic cleanup. + +The ten most recent files can be quickly opened by using the shortcut +keys 1 to 9, and 0, when the recent list is displayed in a buffer via +the `recentf-open-files', or `recentf-open-more-files' commands. + +The `recentf-keep' option replaces `recentf-keep-non-readable-files-p' +and provides a more general mechanism to customize which file names to +keep in the recent list. + +With the more advanced option `recentf-filename-handlers', you can +specify functions that successively transform recent file names. For +example, if set to `file-truename' plus `abbreviate-file-name', the +same file will not be in the recent list with different symbolic +links, and the file name will be abbreviated. + +To follow naming convention, `recentf-menu-append-commands-flag' +replaces the misnamed option `recentf-menu-append-commands-p'. The +old name remains available as alias, but has been marked obsolete. + +** Auto-Revert changes + +*** You can now use Auto Revert mode to `tail' a file. + +If point is at the end of a file buffer before reverting, Auto Revert +mode keeps it at the end after reverting. Similarly if point is +displayed at the end of a file buffer in any window, it stays at the end +of the buffer in that window. This allows you to "tail" a file: just +put point at the end of the buffer and it stays there. This rule +applies to file buffers. For non-file buffers, the behavior can be mode +dependent. + +If you are sure that the file will only change by growing at the end, +then you can tail the file more efficiently by using the new minor +mode Auto Revert Tail mode. The function `auto-revert-tail-mode' +toggles this mode. + +*** Auto Revert mode is now more careful to avoid excessive reverts and +other potential problems when deciding which non-file buffers to +revert. This matters especially if Global Auto Revert mode is enabled +and `global-auto-revert-non-file-buffers' is non-nil. Auto Revert +mode only reverts a non-file buffer if the buffer has a non-nil +`revert-buffer-function' and a non-nil `buffer-stale-function', which +decides whether the buffer should be reverted. Currently, this means +that auto reverting works for Dired buffers (although this may not +work properly on all operating systems) and for the Buffer Menu. + +*** If the new user option `auto-revert-check-vc-info' is non-nil, Auto +Revert mode reliably updates version control info (such as the version +control number in the mode line), in all version controlled buffers in +which it is active. If the option is nil, the default, then this info +only gets updated whenever the buffer gets reverted. + +** Changes in Shell Mode + +*** Shell output normally scrolls so that the input line is at the +bottom of the window -- thus showing the maximum possible text. (This +is similar to the way sequential output to a terminal works.) + +** Changes in Hi Lock + +*** hi-lock-mode now only affects a single buffer, and a new function +`global-hi-lock-mode' enables Hi Lock in all buffers. By default, if +hi-lock-mode is used in what appears to be the initialization file, a +warning message suggests to use global-hi-lock-mode instead. However, +if the new variable `hi-lock-archaic-interface-deduce' is non-nil, +using hi-lock-mode in an initialization file will turn on Hi Lock in all +buffers and no warning will be issued (for compatibility with the +behavior in older versions of Emacs). + +** Changes in Allout + +*** Topic cryptography added, enabling easy gpg topic encryption and +decryption. Per-topic basis enables interspersing encrypted-text and +clear-text within a single file to your heart's content, using symmetric +and/or public key modes. Time-limited key caching, user-provided +symmetric key hinting and consistency verification, auto-encryption of +pending topics on save, and more, make it easy to use encryption in +powerful ways. Encryption behavior customization is collected in the +allout-encryption customization group. + +*** Default command prefix was changed to "\C-c " (control-c space), to +avoid intruding on user's keybinding space. Customize the +`allout-command-prefix' variable to your preference. + +*** Some previously rough topic-header format edge cases are reconciled. +Level 1 topics use the mode's comment format, and lines starting with the +asterisk - for instance, the comment close of some languages (eg, c's "*/" +or mathematica's "*)") - at the beginning of line are no longer are +interpreted as level 1 topics in those modes. + +*** Many or most commonly occurring "accidental" topics are disqualified. +Text in item bodies that looks like a low-depth topic is no longer mistaken +for one unless its first offspring (or that of its next sibling with +offspring) is only one level deeper. + +For example, pasting some text with a bunch of leading asterisks into a +topic that's followed by a level 3 or deeper topic will not cause the +pasted text to be mistaken for outline structure. + +The same constraint is applied to any level 2 or 3 topics. + +This settles an old issue where typed or pasted text needed to be carefully +reviewed, and sometimes doctored, to avoid accidentally disrupting the +outline structure. Now that should be generally unnecessary, as the most +prone-to-occur accidents are disqualified. + +*** Allout now refuses to create "containment discontinuities", where a +topic is shifted deeper than the offspring-depth of its container. On the +other hand, allout now operates gracefully with existing containment +discontinuities, revealing excessively contained topics rather than either +leaving them hidden or raising an error. + +*** Navigation within an item is easier. Repeated beginning-of-line and +end-of-line key commands (usually, ^A and ^E) cycle through the +beginning/end-of-line and then beginning/end of topic, etc. See new +customization vars `allout-beginning-of-line-cycles' and +`allout-end-of-line-cycles'. + +*** New or revised allout-mode activity hooks enable creation of +cooperative enhancements to allout mode without changes to the mode, +itself. + +See `allout-exposure-change-hook', `allout-structure-added-hook', +`allout-structure-deleted-hook', and `allout-structure-shifted-hook'. + +`allout-exposure-change-hook' replaces the existing +`allout-view-change-hook', which is being deprecated. Both are still +invoked, but `allout-view-change-hook' will eventually be ignored. +`allout-exposure-change-hook' is called with explicit arguments detailing +the specifics of each change (as are the other new hooks), making it easier +to use than the old version. + +There is a new mode deactivation hook, `allout-mode-deactivate-hook', for +coordinating with deactivation of allout-mode. Both that and the mode +activation hook, `allout-mode-hook' are now run after the `allout-mode' +variable is changed, rather than before. + +*** Allout now uses text overlay's `invisible' property for concealed text, +instead of selective-display. This simplifies the code, in particular +avoiding the need for kludges for isearch dynamic-display, discretionary +handling of edits of concealed text, undo concerns, etc. + +*** There are many other fixes and refinements, including: + + - repaired inhibition of inadvertent edits to concealed text, without + inhibiting undo; we now reveal undo changes within concealed text. + - auto-fill-mode is now left inactive when allout-mode starts, if it + already was inactive. also, `allout-inhibit-auto-fill' custom + configuration variable makes it easy to disable auto fill in allout + outlines in general or on a per-buffer basis. + - allout now tolerates fielded text in outlines without disruption. + - hot-spot navigation now is modularized with a new function, + `allout-hotspot-key-handler', enabling easier use and enhancement of + the functionality in allout addons. + - repaired retention of topic body hanging indent upon topic depth shifts + - bulleting variation is simpler and more accommodating, both in the + default behavior and in ability to vary when creating new topics + - mode deactivation now does cleans up effectively, more properly + restoring affected variables and hooks to former state, removing + overlays, etc. see `allout-add-resumptions' and + `allout-do-resumptions', which replace the old `allout-resumptions'. + - included a few unit-tests for interior functionality. developers can + have them automatically run at the end of module load by customizing + the option `allout-run-unit-tests-on-load'. + - many, many other, more minor tweaks, fixes, and refinements. + - version number incremented to 2.2 + +** Hideshow mode changes + +*** New variable `hs-set-up-overlay' allows customization of the overlay +used to effect hiding for hideshow minor mode. Integration with isearch +handles the overlay property `display' specially, preserving it during +temporary overlay showing in the course of an isearch operation. + +*** New variable `hs-allow-nesting' non-nil means that hiding a block does +not discard the hidden state of any "internal" blocks; when the parent +block is later shown, the internal blocks remain hidden. Default is nil. + +** FFAP changes + +*** New ffap commands and keybindings: + +C-x C-r (`ffap-read-only'), +C-x C-v (`ffap-alternate-file'), C-x C-d (`ffap-list-directory'), +C-x 4 r (`ffap-read-only-other-window'), C-x 4 d (`ffap-dired-other-window'), +C-x 5 r (`ffap-read-only-other-frame'), C-x 5 d (`ffap-dired-other-frame'). + +*** FFAP accepts wildcards in a file name by default. + +C-x C-f passes the file name to `find-file' with non-nil WILDCARDS +argument, which visits multiple files, and C-x d passes it to `dired'. + +** Changes in Skeleton + +*** In skeleton.el, `-' marks the `skeleton-point' without interregion interaction. + +`@' has reverted to only setting `skeleton-positions' and no longer +sets `skeleton-point'. Skeletons which used @ to mark +`skeleton-point' independent of `_' should now use `-' instead. The +updated `skeleton-insert' docstring explains these new features along +with other details of skeleton construction. + +*** The variables `skeleton-transformation', `skeleton-filter', and +`skeleton-pair-filter' have been renamed to +`skeleton-transformation-function', `skeleton-filter-function', and +`skeleton-pair-filter-function'. The old names are still available +as aliases. + +** HTML/SGML changes + +*** Emacs now tries to set up buffer coding systems for HTML/XML files +automatically. + +*** SGML mode has indentation and supports XML syntax. +The new variable `sgml-xml-mode' tells SGML mode to use XML syntax. +When this option is enabled, SGML tags are inserted in XML style, +i.e., there is always a closing tag. +By default, its setting is inferred on a buffer-by-buffer basis +from the file name or buffer contents. + +*** The variable `sgml-transformation' has been renamed to +`sgml-transformation-function'. The old name is still available as +alias. + +*** `xml-mode' is now an alias for `sgml-mode', which has XML support. + +** TeX modes + +*** New major mode Doctex mode, for *.dtx files. + +*** C-c C-c prompts for a command to run, and tries to offer a good default. + +*** The user option `tex-start-options-string' has been replaced +by two new user options: `tex-start-options', which should hold +command-line options to feed to TeX, and `tex-start-commands' which should hold +TeX commands to use at startup. + +*** verbatim environments are now highlighted in courier by font-lock +and super/sub-scripts are made into super/sub-scripts. + +** RefTeX mode changes + +*** Changes to RefTeX's table of contents + +The new command keys "<" and ">" in the TOC buffer promote/demote the +section at point or all sections in the current region, with full +support for multifile documents. + +The new command `reftex-toc-recenter' (`C-c -') shows the current +section in the TOC buffer without selecting the TOC window. +Recentering can happen automatically in idle time when the option +`reftex-auto-recenter-toc' is turned on. The highlight in the TOC +buffer stays when the focus moves to a different window. A dedicated +frame can show the TOC with the current section always automatically +highlighted. The frame is created and deleted from the toc buffer +with the `d' key. + +The toc window can be split off horizontally instead of vertically. +See new option `reftex-toc-split-windows-horizontally'. + +Labels can be renamed globally from the table of contents using the +key `M-%'. + +The new command `reftex-goto-label' jumps directly to a label +location. + +*** Changes related to citations and BibTeX database files + +Commands that insert a citation now prompt for optional arguments when +called with a prefix argument. Related new options are +`reftex-cite-prompt-optional-args' and `reftex-cite-cleanup-optional-args'. + +The new command `reftex-create-bibtex-file' creates a BibTeX database +with all entries referenced in the current document. The keys "e" and +"E" allow to produce a BibTeX database file from entries marked in a +citation selection buffer. + +The command `reftex-citation' uses the word in the buffer before the +cursor as a default search string. + +The support for chapterbib has been improved. Different chapters can +now use BibTeX or an explicit `thebibliography' environment. + +The macros which specify the bibliography file (like \bibliography) +can be configured with the new option `reftex-bibliography-commands'. + +Support for jurabib has been added. + +*** Global index matched may be verified with a user function. + +During global indexing, a user function can verify an index match. +See new option `reftex-index-verify-function'. + +*** Parsing documents with many labels can be sped up. + +Operating in a document with thousands of labels can be sped up +considerably by allowing RefTeX to derive the type of a label directly +from the label prefix like `eq:' or `fig:'. The option +`reftex-trust-label-prefix' needs to be configured in order to enable +this feature. While the speed-up is significant, this may reduce the +quality of the context offered by RefTeX to describe a label. + +*** Miscellaneous changes + +The macros which input a file in LaTeX (like \input, \include) can be +configured in the new option `reftex-include-file-commands'. + +RefTeX supports global incremental search. + +** BibTeX mode + +*** The new command `bibtex-url' browses a URL for the BibTeX entry at +point (bound to C-c C-l and mouse-2, RET on clickable fields). + +*** The new command `bibtex-entry-update' (bound to C-c C-u) updates +an existing BibTeX entry by inserting fields that may occur but are not +present. + +*** New `bibtex-entry-format' option `required-fields', enabled by default. + +*** `bibtex-maintain-sorted-entries' can take values `plain', +`crossref', and `entry-class' which control the sorting scheme used +for BibTeX entries. `bibtex-sort-entry-class' controls the sorting +scheme `entry-class'. TAB completion for reference keys and +automatic detection of duplicates does not require anymore that +`bibtex-maintain-sorted-entries' is non-nil. + +*** The new command `bibtex-complete' completes word fragment before +point according to context (bound to M-tab). + +*** In BibTeX mode the command `fill-paragraph' (M-q) fills +individual fields of a BibTeX entry. + +*** The new variable `bibtex-autofill-types' contains a list of entry +types for which fields are filled automatically (if possible). + +*** The new commands `bibtex-find-entry' and `bibtex-find-crossref' +locate entries and crossref'd entries (bound to C-c C-s and C-c C-x). +Crossref fields are clickable (bound to mouse-2, RET). + +*** The new variables `bibtex-files' and `bibtex-file-path' define a set +of BibTeX files that are searched for entry keys. + +*** The new command `bibtex-validate-globally' checks for duplicate keys +in multiple BibTeX files. + +*** If the new variable `bibtex-autoadd-commas' is non-nil, +automatically add missing commas at end of BibTeX fields. + +*** The new command `bibtex-copy-summary-as-kill' pushes summary +of BibTeX entry to kill ring (bound to C-c C-t). + +*** If the new variable `bibtex-parse-keys-fast' is non-nil, +use fast but simplified algorithm for parsing BibTeX keys. + +*** The new variables bibtex-expand-strings and +bibtex-autokey-expand-strings control the expansion of strings when +extracting the content of a BibTeX field. + +*** The variables `bibtex-autokey-name-case-convert' and +`bibtex-autokey-titleword-case-convert' have been renamed to +`bibtex-autokey-name-case-convert-function' and +`bibtex-autokey-titleword-case-convert-function'. The old names are +still available as aliases. + +** GUD changes + +*** The new package gdb-ui.el provides an enhanced graphical interface to +GDB. You can interact with GDB through the GUD buffer in the usual way, but +there are also further buffers which control the execution and describe the +state of your program. It can separate the input/output of your program from +that of GDB and watches expressions in the speedbar. It also uses features of +Emacs 21/22 such as the toolbar, and bitmaps in the fringe to indicate +breakpoints. + +To use this package just type M-x gdb. See the Emacs manual if you want the +old behaviour. + +*** GUD mode has its own tool bar for controlling execution of the inferior +and other common debugger commands. + +*** In GUD mode, when talking to GDB, C-x C-a C-j "jumps" the program +counter to the specified source line (the one where point is). + +*** The variable tooltip-gud-tips-p has been removed. GUD tooltips can now be +toggled independently of normal tooltips with the minor mode +`gud-tooltip-mode'. + +*** In graphical mode, with a C program, GUD Tooltips have been extended to +display the #define directive associated with an identifier when program is +not executing. + +*** GUD mode improvements for jdb: + +**** Search for source files using jdb classpath and class information. +Fast startup since there is no need to scan all source files up front. +There is also no need to create and maintain lists of source +directories to scan. Look at `gud-jdb-use-classpath' and +`gud-jdb-classpath' customization variables documentation. + +**** The previous method of searching for source files has been +preserved in case someone still wants/needs to use it. +Set `gud-jdb-use-classpath' to nil. + +**** Supports the standard breakpoint (gud-break, gud-clear) +set/clear operations from Java source files under the classpath, stack +traversal (gud-up, gud-down), and run until current stack finish +(gud-finish). + +**** Supports new jdb (Java 1.2 and later) in addition to oldjdb +(Java 1.1 jdb). + +*** Added jdb Customization Variables + +**** `gud-jdb-command-name'. What command line to use to invoke jdb. + +**** `gud-jdb-use-classpath'. Allows selection of java source file searching +method: set to t for new method, nil to scan `gud-jdb-directories' for +java sources (previous method). + +**** `gud-jdb-directories'. List of directories to scan and search for Java +classes using the original gud-jdb method (if `gud-jdb-use-classpath' +is nil). + +*** Minor Improvements + +**** The STARTTLS wrapper (starttls.el) can now use GNUTLS +instead of the OpenSSL based `starttls' tool. For backwards +compatibility, it prefers `starttls', but you can toggle +`starttls-use-gnutls' to switch to GNUTLS (or simply remove the +`starttls' tool). + +**** Do not allow debugger output history variable to grow without bounds. + +** Lisp mode changes + +*** Lisp mode now uses `font-lock-doc-face' for doc strings. + +*** C-u C-M-q in Emacs Lisp mode pretty-prints the list after point. + +*** New features in evaluation commands + +**** The function `eval-defun' (C-M-x) called on defface reinitializes +the face to the value specified in the defface expression. + +**** Typing C-x C-e twice prints the value of the integer result +in additional formats (octal, hexadecimal, character) specified +by the new function `eval-expression-print-format'. The same +function also defines the result format for `eval-expression' (M-:), +`eval-print-last-sexp' (C-j) and some edebug evaluation functions. + +** Changes to cmuscheme + +*** Emacs now offers to start Scheme if the user tries to +evaluate a Scheme expression but no Scheme subprocess is running. + +*** If the file ~/.emacs_NAME or ~/.emacs.d/init_NAME.scm (where NAME +is the name of the Scheme interpreter) exists, its contents are sent +to the Scheme subprocess upon startup. + +*** There are new commands to instruct the Scheme interpreter to trace +procedure calls (`scheme-trace-procedure') and to expand syntactic forms +(`scheme-expand-current-form'). The commands actually sent to the Scheme +subprocess are controlled by the user options `scheme-trace-command', +`scheme-untrace-command' and `scheme-expand-current-form'. + +** Ewoc changes + +*** The new function `ewoc-delete' deletes specified nodes. + +*** `ewoc-create' now takes optional arg NOSEP, which inhibits insertion of +a newline after each pretty-printed entry and after the header and footer. +This allows you to create multiple-entry ewocs on a single line and to +effect "invisible" nodes by arranging for the pretty-printer to not print +anything for those nodes. + +For example, these two sequences of expressions behave identically: + +;; NOSEP nil +(defun PP (data) (insert (format "%S" data))) +(ewoc-create 'PP "start\n") + +;; NOSEP t +(defun PP (data) (insert (format "%S\n" data))) +(ewoc-create 'PP "start\n\n" "\n" t) + +** CC mode changes + +*** The CC Mode manual has been extensively revised. +The information about using CC Mode has been separated from the larger +and more difficult chapters about configuration. + +*** New Minor Modes +**** Electric Minor Mode toggles the electric action of non-alphabetic keys. +The new command c-toggle-electric-mode is bound to C-c C-l. Turning the +mode off can be helpful for editing chaotically indented code and for +users new to CC Mode, who sometimes find electric indentation +disconcerting. Its current state is displayed in the mode line with an +'l', e.g. "C/al". + +**** Subword Minor Mode makes Emacs recognize word boundaries at upper case +letters in StudlyCapsIdentifiers. You enable this feature by C-c C-w. It can +also be used in non-CC Mode buffers. :-) Contributed by Masatake YAMATO. + +*** Support for the AWK language. +Support for the AWK language has been introduced. The implementation is +based around GNU AWK version 3.1, but it should work pretty well with +any AWK. As yet, not all features of CC Mode have been adapted for AWK. +Here is a summary: + +**** Indentation Engine +The CC Mode indentation engine fully supports AWK mode. + +AWK mode handles code formatted in the conventional AWK fashion: `{'s +which start actions, user-defined functions, or compound statements are +placed on the same line as the associated construct; the matching `}'s +are normally placed under the start of the respective pattern, function +definition, or structured statement. + +The predefined line-up functions haven't yet been adapted for AWK +mode, though some of them may work serendipitously. There shouldn't +be any problems writing custom indentation functions for AWK mode. + +**** Font Locking +There is a single level of font locking in AWK mode, rather than the +three distinct levels the other modes have. There are several +idiosyncrasies in AWK mode's font-locking due to the peculiarities of +the AWK language itself. + +**** Comment and Movement Commands +These commands all work for AWK buffers. The notion of "defun" has +been augmented to include AWK pattern-action pairs - the standard +"defun" commands on key sequences C-M-a, C-M-e, and C-M-h use this +extended definition. + +**** "awk" style, Auto-newline Insertion and Clean-ups +A new style, "awk" has been introduced, and this is now the default +style for AWK code. With auto-newline enabled, the clean-up +c-one-liner-defun (see above) is useful. + +*** Font lock support. +CC Mode now provides font lock support for all its languages. This +supersedes the font lock patterns that have been in the core font lock +package for C, C++, Java and Objective-C. Like indentation, font +locking is done in a uniform way across all languages (except the new +AWK mode - see below). That means that the new font locking will be +different from the old patterns in various details for most languages. + +The main goal of the font locking in CC Mode is accuracy, to provide a +dependable aid in recognizing the various constructs. Some, like +strings and comments, are easy to recognize while others like +declarations and types can be very tricky. CC Mode can go to great +lengths to recognize declarations and casts correctly, especially when +the types aren't recognized by standard patterns. This is a fairly +demanding analysis which can be slow on older hardware, and it can +therefore be disabled by choosing a lower decoration level with the +variable font-lock-maximum-decoration. + +Note that the most demanding font lock level has been tuned with lazy +fontification in mind; Just-In-Time-Lock mode should be enabled for +the highest font lock level (by default, it is). Fontifying a file +with several thousand lines in one go can take the better part of a +minute. + +**** The (c|c++|objc|java|idl|pike)-font-lock-extra-types variables +are now used by CC Mode to recognize identifiers that are certain to +be types. (They are also used in cases that aren't related to font +locking.) At the maximum decoration level, types are often recognized +properly anyway, so these variables should be fairly restrictive and +not contain patterns for uncertain types. + +**** Support for documentation comments. +There is a "plugin" system to fontify documentation comments like +Javadoc and the markup within them. It's independent of the host +language, so it's possible to e.g. turn on Javadoc font locking in C +buffers. See the variable c-doc-comment-style for details. + +Currently three kinds of doc comment styles are recognized: Sun's +Javadoc, Autodoc (which is used in Pike) and GtkDoc (used in C). (The +last was contributed by Masatake YAMATO). This is by no means a +complete list of the most common tools; if your doc comment extractor +of choice is missing then please drop a note to bug-cc-mode@gnu.org. + +**** Better handling of C++ templates. +As a side effect of the more accurate font locking, C++ templates are +now handled much better. The angle brackets that delimit them are +given parenthesis syntax so that they can be navigated like other +parens. + +This also improves indentation of templates, although there still is +work to be done in that area. E.g. it's required that multiline +template clauses are written in full and then refontified to be +recognized, and the indentation of nested templates is a bit odd and +not as configurable as it ought to be. + +**** Improved handling of Objective-C and CORBA IDL. +Especially the support for Objective-C and IDL has gotten an overhaul. +The special "@" declarations in Objective-C are handled correctly. +All the keywords used in CORBA IDL, PSDL, and CIDL are recognized and +handled correctly, also wrt indentation. + +*** Changes in Key Sequences +**** c-toggle-auto-hungry-state is no longer bound to C-c C-t. + +**** c-toggle-hungry-state is no longer bound to C-c C-d. +This binding has been taken over by c-hungry-delete-forwards. + +**** c-toggle-auto-state (C-c C-t) has been renamed to c-toggle-auto-newline. +c-toggle-auto-state remains as an alias. + +**** The new commands c-hungry-backspace and c-hungry-delete-forwards +have key bindings C-c C-DEL (or C-c DEL, for the benefit of TTYs) and +C-c C-d (or C-c C- or C-c ) respectively. These +commands delete entire blocks of whitespace with a single +key-sequence. [N.B. "DEL" is the key.] + +**** The new command c-toggle-electric-mode is bound to C-c C-l. + +**** The new command c-subword-mode is bound to C-c C-w. + +*** C-c C-s (`c-show-syntactic-information') now highlights the anchor +position(s). + +*** New syntactic symbols in IDL mode. +The top level constructs "module" and "composition" (from CIDL) are +now handled like "namespace" in C++: They are given syntactic symbols +module-open, module-close, inmodule, composition-open, +composition-close, and incomposition. + +*** New functions to do hungry delete without enabling hungry delete mode. +The new functions `c-hungry-backspace' and `c-hungry-delete-forward' +provide hungry deletion without having to toggle a mode. They are +bound to C-c C-DEL and C-c C-d (and several variants, for the benefit +of different keyboard setups. See "Changes in key sequences" above). + +*** Better control over `require-final-newline'. + +The variable `c-require-final-newline' specifies which of the modes +implemented by CC mode should insert final newlines. Its value is a +list of modes, and only those modes should do it. By default the list +includes C, C++ and Objective-C modes. + +Whichever modes are in this list will set `require-final-newline' +based on `mode-require-final-newline'. + +*** Format change for syntactic context elements. + +The elements in the syntactic context returned by `c-guess-basic-syntax' +and stored in `c-syntactic-context' has been changed somewhat to allow +attaching more information. They are now lists instead of single cons +cells. E.g. a line that previously had the syntactic analysis + +((inclass . 11) (topmost-intro . 13)) + +is now analyzed as + +((inclass 11) (topmost-intro 13)) + +In some cases there are more than one position given for a syntactic +symbol. + +This change might affect code that calls `c-guess-basic-syntax' +directly, and custom lineup functions if they use +`c-syntactic-context'. However, the argument given to lineup +functions is still a single cons cell with nil or an integer in the +cdr. + +*** API changes for derived modes. + +There have been extensive changes "under the hood" which can affect +derived mode writers. Some of these changes are likely to cause +incompatibilities with existing derived modes, but on the other hand +care has now been taken to make it possible to extend and modify CC +Mode with less risk of such problems in the future. + +**** New language variable system. +These are variables whose values vary between CC Mode's different +languages. See the comment blurb near the top of cc-langs.el. + +**** New initialization functions. +The initialization procedure has been split up into more functions to +give better control: `c-basic-common-init', `c-font-lock-init', and +`c-init-language-vars'. + +*** Changes in analysis of nested syntactic constructs. +The syntactic analysis engine has better handling of cases where +several syntactic constructs appear nested on the same line. They are +now handled as if each construct started on a line of its own. + +This means that CC Mode now indents some cases differently, and +although it's more consistent there might be cases where the old way +gave results that's more to one's liking. So if you find a situation +where you think that the indentation has become worse, please report +it to bug-cc-mode@gnu.org. + +**** New syntactic symbol substatement-label. +This symbol is used when a label is inserted between a statement and +its substatement. E.g: + + if (x) + x_is_true: + do_stuff(); + +*** Better handling of multiline macros. + +**** Syntactic indentation inside macros. +The contents of multiline #define's are now analyzed and indented +syntactically just like other code. This can be disabled by the new +variable `c-syntactic-indentation-in-macros'. A new syntactic symbol +`cpp-define-intro' has been added to control the initial indentation +inside `#define's. + +**** New lineup function `c-lineup-cpp-define'. + +Now used by default to line up macro continuation lines. The behavior +of this function closely mimics the indentation one gets if the macro +is indented while the line continuation backslashes are temporarily +removed. If syntactic indentation in macros is turned off, it works +much line `c-lineup-dont-change', which was used earlier, but handles +empty lines within the macro better. + +**** Automatically inserted newlines continues the macro if used within one. +This applies to the newlines inserted by the auto-newline mode, and to +`c-context-line-break' and `c-context-open-line'. + +**** Better alignment of line continuation backslashes. +`c-backslash-region' tries to adapt to surrounding backslashes. New +variable `c-backslash-max-column' puts a limit on how far out +backslashes can be moved. + +**** Automatic alignment of line continuation backslashes. +This is controlled by the new variable `c-auto-align-backslashes'. It +affects `c-context-line-break', `c-context-open-line' and newlines +inserted in Auto-Newline mode. + +**** Line indentation works better inside macros. +Regardless whether syntactic indentation and syntactic indentation +inside macros are enabled or not, line indentation now ignores the +line continuation backslashes. This is most noticeable when syntactic +indentation is turned off and there are empty lines (save for the +backslash) in the macro. + +*** indent-for-comment is more customizable. +The behavior of M-; (indent-for-comment) is now configurable through +the variable `c-indent-comment-alist'. The indentation behavior is +based on the preceding code on the line, e.g. to get two spaces after +#else and #endif but indentation to `comment-column' in most other +cases (something which was hardcoded earlier). + +*** New function `c-context-open-line'. +It's the open-line equivalent of `c-context-line-break'. + +*** New clean-ups + +**** `comment-close-slash'. +With this clean-up, a block (i.e. c-style) comment can be terminated by +typing a slash at the start of a line. + +**** `c-one-liner-defun' +This clean-up compresses a short enough defun (for example, an AWK +pattern/action pair) onto a single line. "Short enough" is configurable. + +*** New lineup functions + +**** `c-lineup-string-cont' +This lineup function lines up a continued string under the one it +continues. E.g: + +result = prefix + "A message " + "string."; <- c-lineup-string-cont + +**** `c-lineup-cascaded-calls' +Lines up series of calls separated by "->" or ".". + +**** `c-lineup-knr-region-comment' +Gives (what most people think is) better indentation of comments in +the "K&R region" between the function header and its body. + +**** `c-lineup-gcc-asm-reg' +Provides better indentation inside asm blocks. + +**** `c-lineup-argcont' +Lines up continued function arguments after the preceding comma. + +*** Added toggle for syntactic indentation. +The function `c-toggle-syntactic-indentation' can be used to toggle +syntactic indentation. + +*** Better caching of the syntactic context. +CC Mode caches the positions of the opening parentheses (of any kind) +of the lists surrounding the point. Those positions are used in many +places as anchor points for various searches. The cache is now +improved so that it can be reused to a large extent when the point is +moved. The less it moves, the less needs to be recalculated. + +The effect is that CC Mode should be fast most of the time even when +opening parens are hung (i.e. aren't in column zero). It's typically +only the first time after the point is moved far down in a complex +file that it'll take noticeable time to find out the syntactic +context. + +*** Statements are recognized in a more robust way. +Statements are recognized most of the time even when they occur in an +"invalid" context, e.g. in a function argument. In practice that can +happen when macros are involved. + +*** Improved the way `c-indent-exp' chooses the block to indent. +It now indents the block for the closest sexp following the point +whose closing paren ends on a different line. This means that the +point doesn't have to be immediately before the block to indent. +Also, only the block and the closing line is indented; the current +line is left untouched. + +** Changes in Makefile mode + +*** Makefile mode has submodes for automake, gmake, makepp, BSD make and imake. + +The former two couldn't be differentiated before, and the latter three +are new. Font-locking is robust now and offers new customizable +faces. + +*** The variable `makefile-query-one-target-method' has been renamed +to `makefile-query-one-target-method-function'. The old name is still +available as alias. + +** Sql changes + +*** The variable `sql-product' controls the highlighting of different +SQL dialects. This variable can be set globally via Customize, on a +buffer-specific basis via local variable settings, or for the current +session using the new SQL->Product submenu. (This menu replaces the +SQL->Highlighting submenu.) + +The following values are supported: + + ansi ANSI Standard (default) + db2 DB2 + informix Informix + ingres Ingres + interbase Interbase + linter Linter + ms Microsoft + mysql MySQL + oracle Oracle + postgres Postgres + solid Solid + sqlite SQLite + sybase Sybase + +The current product name will be shown on the mode line following the +SQL mode indicator. + +The technique of setting `sql-mode-font-lock-defaults' directly in +your `.emacs' will no longer establish the default highlighting -- Use +`sql-product' to accomplish this. + +ANSI keywords are always highlighted. + +*** The function `sql-add-product-keywords' can be used to add +font-lock rules to the product specific rules. For example, to have +all identifiers ending in `_t' under MS SQLServer treated as a type, +you would use the following line in your .emacs file: + + (sql-add-product-keywords 'ms + '(("\\<\\w+_t\\>" . font-lock-type-face))) + +*** Oracle support includes keyword highlighting for Oracle 9i. + +Most SQL and PL/SQL keywords are implemented. SQL*Plus commands are +highlighted in `font-lock-doc-face'. + +*** Microsoft SQLServer support has been significantly improved. + +Keyword highlighting for SqlServer 2000 is implemented. +sql-interactive-mode defaults to use osql, rather than isql, because +osql flushes its error stream more frequently. Thus error messages +are displayed when they occur rather than when the session is +terminated. + +If the username and password are not provided to `sql-ms', osql is +called with the `-E' command line argument to use the operating system +credentials to authenticate the user. + +*** Postgres support is enhanced. +Keyword highlighting of Postgres 7.3 is implemented. Prompting for +the username and the pgsql `-U' option is added. + +*** MySQL support is enhanced. +Keyword highlighting of MySql 4.0 is implemented. + +*** Imenu support has been enhanced to locate tables, views, indexes, +packages, procedures, functions, triggers, sequences, rules, and +defaults. + +*** Added SQL->Start SQLi Session menu entry which calls the +appropriate `sql-interactive-mode' wrapper for the current setting of +`sql-product'. + +*** sql.el supports the SQLite interpreter--call 'sql-sqlite'. + +** Fortran mode changes + +*** F90 mode and Fortran mode have support for `hs-minor-mode' (hideshow). +It cannot deal with every code format, but ought to handle a sizeable +majority. + +*** F90 mode and Fortran mode have new navigation commands +`f90-end-of-block', `f90-beginning-of-block', `f90-next-block', +`f90-previous-block', `fortran-end-of-block', +`fortran-beginning-of-block'. + +*** Fortran mode does more font-locking by default. Use level 3 +highlighting for the old default. + +*** Fortran mode has a new variable `fortran-directive-re'. +Adapt this to match the format of any compiler directives you use. +Lines that match are never indented, and are given distinctive font-locking. + +*** The new function `f90-backslash-not-special' can be used to change +the syntax of backslashes in F90 buffers. + +** Miscellaneous programming mode changes + +*** In sh-script, a continuation line is only indented if the backslash was +preceded by a SPC or a TAB. + +*** Perl mode has a new variable `perl-indent-continued-arguments'. + +*** The old Octave mode bindings C-c f and C-c i have been changed +to C-c C-f and C-c C-i. The C-c C-i subcommands now have duplicate +bindings on control characters--thus, C-c C-i C-b is the same as +C-c C-i b, and so on. + +*** Prolog mode has a new variable `prolog-font-lock-keywords' +to support use of font-lock. + +** VC Changes + +*** New backends for Subversion and Meta-CVS. + +*** The new variable `vc-cvs-global-switches' specifies switches that +are passed to any CVS command invoked by VC. + +These switches are used as "global options" for CVS, which means they +are inserted before the command name. For example, this allows you to +specify a compression level using the `-z#' option for CVS. + +*** The key C-x C-q only changes the read-only state of the buffer +(toggle-read-only). It no longer checks files in or out. + +We made this change because we held a poll and found that many users +were unhappy with the previous behavior. If you do prefer this +behavior, you can bind `vc-toggle-read-only' to C-x C-q in your +`.emacs' file: + + (global-set-key "\C-x\C-q" 'vc-toggle-read-only) + +The function `vc-toggle-read-only' will continue to exist. + +*** VC-Annotate mode enhancements + +In VC-Annotate mode, you can now use the following key bindings for +enhanced functionality to browse the annotations of past revisions, or +to view diffs or log entries directly from vc-annotate-mode: + + P: annotates the previous revision + N: annotates the next revision + J: annotates the revision at line + A: annotates the revision previous to line + D: shows the diff of the revision at line with its previous revision + L: shows the log of the revision at line + W: annotates the workfile (most up to date) version + +** pcl-cvs changes + +*** In pcl-cvs mode, there is a new `d y' command to view the diffs +between the local version of the file and yesterday's head revision +in the repository. + +*** In pcl-cvs mode, there is a new `d r' command to view the changes +anyone has committed to the repository since you last executed +`checkout', `update' or `commit'. That means using cvs diff options +-rBASE -rHEAD. + +** Diff changes + +*** M-x diff uses Diff mode instead of Compilation mode. + +*** Diff mode key bindings changed. + +These are the new bindings: + +C-c C-e diff-ediff-patch (old M-A) +C-c C-n diff-restrict-view (old M-r) +C-c C-r diff-reverse-direction (old M-R) +C-c C-u diff-context->unified (old M-U) +C-c C-w diff-refine-hunk (old C-c C-r) + +To convert unified to context format, use C-u C-c C-u. +In addition, C-c C-u now operates on the region +in Transient Mark mode when the mark is active. + +** EDiff changes. + +*** When comparing directories. +Typing D brings up a buffer that lists the differences between the contents of +directories. Now it is possible to use this buffer to copy the missing files +from one directory to another. + +*** When comparing files or buffers. +Typing the = key now offers to perform the word-by-word comparison of the +currently highlighted regions in an inferior Ediff session. If you answer 'n' +then it reverts to the old behavior and asks the user to select regions for +comparison. + +*** The new command `ediff-backup' compares a file with its most recent +backup using `ediff'. If you specify the name of a backup file, +`ediff-backup' compares it with the file of which it is a backup. + +** Etags changes. + +*** New regular expressions features + +**** New syntax for regular expressions, multi-line regular expressions. + +The syntax --ignore-case-regexp=/regex/ is now undocumented and retained +only for backward compatibility. The new equivalent syntax is +--regex=/regex/i. More generally, it is --regex=/TAGREGEX/TAGNAME/MODS, +where `/TAGNAME' is optional, as usual, and MODS is a string of 0 or +more characters among `i' (ignore case), `m' (multi-line) and `s' +(single-line). The `m' and `s' modifiers behave as in Perl regular +expressions: `m' allows regexps to match more than one line, while `s' +(which implies `m') means that `.' matches newlines. The ability to +span newlines allows writing of much more powerful regular expressions +and rapid prototyping for tagging new languages. + +**** Regular expressions can use char escape sequences as in GCC. + +The escaped character sequence \a, \b, \d, \e, \f, \n, \r, \t, \v, +respectively, stand for the ASCII characters BEL, BS, DEL, ESC, FF, NL, +CR, TAB, VT. + +**** Regular expressions can be bound to a given language. + +The syntax --regex={LANGUAGE}REGEX means that REGEX is used to make tags +only for files of language LANGUAGE, and ignored otherwise. This is +particularly useful when storing regexps in a file. + +**** Regular expressions can be read from a file. + +The --regex=@regexfile option means read the regexps from a file, one +per line. Lines beginning with space or tab are ignored. + +*** New language parsing features + +**** New language HTML. + +Tags are generated for `title' as well as `h1', `h2', and `h3'. Also, +when `name=' is used inside an anchor and whenever `id=' is used. + +**** New language PHP. + +Functions, classes and defines are tags. If the --members option is +specified to etags, variables are tags also. + +**** New language Lua. + +All functions are tagged. + +**** The `::' qualifier triggers C++ parsing in C file. + +Previously, only the `template' and `class' keywords had this effect. + +**** The GCC __attribute__ keyword is now recognized and ignored. + +**** In C and derived languages, etags creates tags for #undef + +**** In Makefiles, constants are tagged. + +If you want the old behavior instead, thus avoiding to increase the +size of the tags file, use the --no-globals option. + +**** In Perl, packages are tags. + +Subroutine tags are named from their package. You can jump to sub tags +as you did before, by the sub name, or additionally by looking for +package::sub. + +**** In Prolog, etags creates tags for rules in addition to predicates. + +**** New default keywords for TeX. + +The new keywords are def, newcommand, renewcommand, newenvironment and +renewenvironment. + +*** Honor #line directives. + +When Etags parses an input file that contains C preprocessor's #line +directives, it creates tags using the file name and line number +specified in those directives. This is useful when dealing with code +created from Cweb source files. When Etags tags the generated file, it +writes tags pointing to the source file. + +*** New option --parse-stdin=FILE. + +This option is mostly useful when calling etags from programs. It can +be used (only once) in place of a file name on the command line. Etags +reads from standard input and marks the produced tags as belonging to +the file FILE. + +** Ctags changes. + +*** Ctags now allows duplicate tags + +** Rmail changes + +*** Support for `movemail' from GNU mailutils was added to Rmail. + +This version of `movemail' allows you to read mail from a wide range of +mailbox formats, including remote POP3 and IMAP4 mailboxes with or +without TLS encryption. If GNU mailutils is installed on the system +and its version of `movemail' can be found in exec-path, it will be +used instead of the native one. + +*** The new commands rmail-end-of-message and rmail-summary end-of-message, +by default bound to `/', go to the end of the current mail message in +Rmail and Rmail summary buffers. + +*** Rmail now displays 5-digit message ids in its summary buffer. + +** Gnus package + +*** Gnus now includes Sieve and PGG + +Sieve is a library for managing Sieve scripts. PGG is a library to handle +PGP/MIME. + +*** There are many news features, bug fixes and improvements. + +See the file GNUS-NEWS or the node "Oort Gnus" in the Gnus manual for details. + +** MH-E changes. + +Upgraded to MH-E version 8.0.3. There have been major changes since +version 5.0.2; see MH-E-NEWS for details. + +** Miscellaneous mail changes + +*** The new variable `mail-default-directory' specifies +`default-directory' for mail buffers. This directory is used for +auto-save files of mail buffers. It defaults to "~/". + +*** The mode line can indicate new mail in a directory or file. + +See the documentation of the user option `display-time-mail-directory'. + +** Calendar changes + +*** There is a new calendar package, icalendar.el, that can be used to +convert Emacs diary entries to/from the iCalendar format. + +*** The new package cal-html.el writes HTML files with calendar and +diary entries. + +*** The new functions `diary-from-outlook', `diary-from-outlook-gnus', +and `diary-from-outlook-rmail' can be used to import diary entries +from Outlook-format appointments in mail messages. The variable +`diary-outlook-formats' can be customized to recognize additional +formats. + +*** The procedure for activating appointment reminders has changed: +use the new function `appt-activate'. The new variable +`appt-display-format' controls how reminders are displayed, replacing +`appt-issue-message', `appt-visible', and `appt-msg-window'. + +*** The function `simple-diary-display' now by default sets a header line. +This can be controlled through the variables `diary-header-line-flag' +and `diary-header-line-format'. + +*** Diary sexp entries can have custom marking in the calendar. +Diary sexp functions which only apply to certain days (such as +`diary-block' or `diary-cyclic') now take an optional parameter MARK, +which is the name of a face or a single-character string indicating +how to highlight the day in the calendar display. Specifying a +single-character string as @var{mark} places the character next to the +day in the calendar. Specifying a face highlights the day with that +face. This lets you have different colors or markings for vacations, +appointments, paydays or anything else using a sexp. + +*** The meanings of C-x < and C-x > have been interchanged. +< means to scroll backward in time, and > means to scroll forward. + +*** You can now use < and >, instead of C-x < and C-x >, to scroll +the calendar left or right. + +*** The new function `calendar-goto-day-of-year' (g D) prompts for a +year and day number, and moves to that date. Negative day numbers +count backward from the end of the year. + +*** The new Calendar function `calendar-goto-iso-week' (g w) +prompts for a year and a week number, and moves to the first +day of that ISO week. + +*** The functions `holiday-easter-etc' and `holiday-advent' now take +optional arguments, in order to only report on the specified holiday +rather than all. This makes customization of variables such as +`christian-holidays' simpler. + +*** The new variable `calendar-minimum-window-height' affects the +window generated by the function `generate-calendar-window'. + +** Speedbar changes + +*** Speedbar items can now be selected by clicking mouse-1, based on +the `mouse-1-click-follows-link' mechanism. + +*** The new command `speedbar-toggle-line-expansion', bound to SPC, +contracts or expands the line under the cursor. + +*** New command `speedbar-create-directory', bound to `M'. + +*** The new commands `speedbar-expand-line-descendants' and +`speedbar-contract-line-descendants', bound to `[' and `]' +respectively, expand and contract the line under cursor with all of +its descendents. + +*** The new user option `speedbar-use-tool-tips-flag', if non-nil, +means to display tool-tips for speedbar items. + +*** The new user option `speedbar-query-confirmation-method' controls +how querying is performed for file operations. A value of 'always +means to always query before file operations; 'none-but-delete means +to not query before any file operations, except before a file +deletion. + +*** The new user option `speedbar-select-frame-method' specifies how +to select a frame for displaying a file opened with the speedbar. A +value of 'attached means to use the attached frame (the frame that +speedbar was started from.) A number such as 1 or -1 means to pass +that number to `other-frame'. + +*** SPC and DEL are no longer bound to scroll up/down in the speedbar +keymap. + +*** The frame management code in speedbar.el has been split into a new +`dframe' library. Emacs Lisp code that makes use of the speedbar +should use `dframe-attached-frame' instead of +`speedbar-attached-frame', `dframe-timer' instead of `speedbar-timer', +`dframe-close-frame' instead of `speedbar-close-frame', and +`dframe-activity-change-focus-flag' instead of +`speedbar-activity-change-focus-flag'. The variables +`speedbar-update-speed' and `speedbar-navigating-speed' are also +obsolete; use `dframe-update-speed' instead. + +** battery.el changes + +*** display-battery-mode replaces display-battery. + +*** battery.el now works on recent versions of OS X. + +** Games + +*** The game `mpuz' is enhanced. + +`mpuz' now allows the 2nd factor not to have two identical digits. By +default, all trivial operations involving whole lines are performed +automatically. The game uses faces for better visual feedback. + +** Obsolete and deleted packages + +*** fast-lock.el and lazy-lock.el are obsolete. Use jit-lock.el instead. + +*** iso-acc.el is now obsolete. Use one of the latin input methods instead. + +*** zone-mode.el is now obsolete. Use dns-mode.el instead. + +*** cplus-md.el has been deleted. + +** Miscellaneous + +*** The variable `woman-topic-at-point' is renamed +to `woman-use-topic-at-point' and behaves differently: if this +variable is non-nil, the `woman' command uses the word at point +automatically, without asking for a confirmation. Otherwise, the word +at point is suggested as default, but not inserted at the prompt. + +*** You can now customize `fill-nobreak-predicate' to control where +filling can break lines. The value is now normally a list of +functions, but it can also be a single function, for compatibility. + +Emacs provide two predicates, `fill-single-word-nobreak-p' and +`fill-french-nobreak-p', for use as the value of +`fill-nobreak-predicate'. + +*** M-x view-file and commands that use it now avoid interfering +with special modes such as Tar mode. + +*** `global-whitespace-mode' is a new alias for `whitespace-global-mode'. + +*** The saveplace.el package now filters out unreadable files. + +When you exit Emacs, the saved positions in visited files no longer +include files that aren't readable, e.g. files that don't exist. +Customize the new option `save-place-forget-unreadable-files' to nil +to get the old behavior. The new options `save-place-save-skipped' +and `save-place-skip-check-regexp' allow further fine-tuning of this +feature. + +*** Commands `winner-redo' and `winner-undo', from winner.el, are now +bound to C-c and C-c , respectively. This is an +incompatible change. + +*** The type-break package now allows `type-break-file-name' to be nil +and if so, doesn't store any data across sessions. This is handy if +you don't want the `.type-break' file in your home directory or are +annoyed by the need for interaction when you kill Emacs. + +*** `ps-print' can now print characters from the mule-unicode charsets. + +Printing text with characters from the mule-unicode-* sets works with +`ps-print', provided that you have installed the appropriate BDF +fonts. See the file INSTALL for URLs where you can find these fonts. + +*** New command `strokes-global-set-stroke-string'. +This is like `strokes-global-set-stroke', but it allows you to bind +the stroke directly to a string to insert. This is convenient for +using strokes as an input method. + +*** In Outline mode, `hide-body' no longer hides lines at the top +of the file that precede the first header line. + +*** `hide-ifdef-mode' now uses overlays rather than selective-display +to hide its text. This should be mostly transparent but slightly +changes the behavior of motion commands like C-e and C-p. + +*** In Artist mode the variable `artist-text-renderer' has been +renamed to `artist-text-renderer-function'. The old name is still +available as alias. + +*** In Enriched mode, `set-left-margin' and `set-right-margin' are now +by default bound to `C-c [' and `C-c ]' instead of the former `C-c C-l' +and `C-c C-r'. + +*** `partial-completion-mode' now handles partial completion on directory names. + +*** You can now disable pc-selection-mode after enabling it. + +M-x pc-selection-mode behaves like a proper minor mode, and with no +argument it toggles the mode. Turning off PC-Selection mode restores +the global key bindings that were replaced by turning on the mode. + +*** `uniquify-strip-common-suffix' tells uniquify to prefer +`file|dir1' and `file|dir2' to `file|dir1/subdir' and `file|dir2/subdir'. + +*** New user option `add-log-always-start-new-record'. + +When this option is enabled, M-x add-change-log-entry always +starts a new record regardless of when the last record is. + +*** M-x compare-windows now can automatically skip non-matching text to +resync points in both windows. + +*** PO translation files are decoded according to their MIME headers +when Emacs visits them. + +*** Telnet now prompts you for a port number with C-u M-x telnet. + +*** calculator.el now has radix grouping mode. + +To enable this, set `calculator-output-radix' non-nil. In this mode a +separator character is used every few digits, making it easier to see +byte boundaries etc. For more info, see the documentation of the +variable `calculator-radix-grouping-mode'. + +*** LDAP support now defaults to ldapsearch from OpenLDAP version 2. + +*** The terminal emulation code in term.el has been improved; it can +run most curses applications now. + +*** Support for `magic cookie' standout modes has been removed. + +Emacs still works on terminals that require magic cookies in order to +use standout mode, but they can no longer display mode-lines in +inverse-video. + + +* Changes in Emacs 22.1 on non-free operating systems + +** The HOME directory defaults to Application Data under the user profile. + +If you used a previous version of Emacs without setting the HOME +environment variable and a `.emacs' was saved, then Emacs will continue +using C:/ as the default HOME. But if you are installing Emacs afresh, +the default location will be the "Application Data" (or similar +localized name) subdirectory of your user profile. A typical location +of this directory is "C:\Documents and Settings\USERNAME\Application Data", +where USERNAME is your user name. + +This change means that users can now have their own `.emacs' files on +shared computers, and the default HOME directory is less likely to be +read-only on computers that are administered by someone else. + +** Images are now supported on MS Windows. + +PBM and XBM images are supported out of the box. Other image formats +depend on external libraries. All of these libraries have been ported +to Windows, and can be found in both source and binary form at +http://gnuwin32.sourceforge.net/. Note that libpng also depends on +zlib, and tiff depends on the version of jpeg that it was compiled +against. For additional information, see nt/INSTALL. + +** Sound is now supported on MS Windows. + +WAV format is supported on all versions of Windows, other formats such +as AU, AIFF and MP3 may be supported in the more recent versions of +Windows, or when other software provides hooks into the system level +sound support for those formats. + +** Tooltips now work on MS Windows. + +See the Emacs 21.1 NEWS entry for tooltips for details. + +** Pointing devices with more than 3 buttons are now supported on MS Windows. + +The new variable `w32-pass-extra-mouse-buttons-to-system' controls +whether Emacs should handle the extra buttons itself (the default), or +pass them to Windows to be handled with system-wide functions. + +** Passing resources on the command line now works on MS Windows. + +You can use --xrm to pass resource settings to Emacs, overriding any +existing values. For example: + + emacs --xrm "Emacs.Background:red" --xrm "Emacs.Geometry:100x20" + +will start up Emacs on an initial frame of 100x20 with red background, +irrespective of geometry or background setting on the Windows registry. + +** Emacs takes note of colors defined in Control Panel on MS-Windows. + +The Control Panel defines some default colors for applications in much +the same way as wildcard X Resources do on X. Emacs now adds these +colors to the colormap prefixed by System (eg SystemMenu for the +default Menu background, SystemMenuText for the foreground), and uses +some of them to initialize some of the default faces. +`list-colors-display' shows the list of System color names, in case +you wish to use them in other faces. + +** Running in a console window in Windows now uses the console size. + +Previous versions of Emacs erred on the side of having a usable Emacs +through telnet, even though that was inconvenient if you use Emacs in +a local console window with a scrollback buffer. The default value of +w32-use-full-screen-buffer is now nil, which favors local console +windows. Recent versions of Windows telnet also work well with this +setting. If you are using an older telnet server then Emacs detects +that the console window dimensions that are reported are not sane, and +defaults to 80x25. If you use such a telnet server regularly at a size +other than 80x25, you can still manually set +w32-use-full-screen-buffer to t. + +** Different shaped mouse pointers are supported on MS Windows. + +The mouse pointer changes shape depending on what is under the pointer. + +** On MS Windows, the "system caret" now follows the cursor. + +This enables Emacs to work better with programs that need to track the +cursor, for example screen magnifiers and text to speech programs. +When such a program is in use, the system caret is made visible +instead of Emacs drawing its own cursor. This seems to be required by +some programs. The new variable w32-use-visible-system-caret allows +the caret visibility to be manually toggled. + +** On MS Windows NT/W2K/XP, Emacs uses Unicode for clipboard operations. + +Those systems use Unicode internally, so this allows Emacs to share +multilingual text with other applications. On other versions of +MS Windows, Emacs now uses the appropriate locale coding-system, so +the clipboard should work correctly for your local language without +any customizations. + +** On Mac OS, `keyboard-coding-system' changes based on the keyboard script. + +** The variable `mac-keyboard-text-encoding' and the constants +`kTextEncodingMacRoman', `kTextEncodingISOLatin1', and +`kTextEncodingISOLatin2' are obsolete. + +** The variable `mac-command-key-is-meta' is obsolete. Use +`mac-command-modifier' and `mac-option-modifier' instead. + +* Incompatible Lisp Changes in Emacs 22.1 + +** Mode line display ignores text properties as well as the +:propertize and :eval forms in the value of a variable whose +`risky-local-variable' property is nil. + +The function `comint-send-input' now accepts 3 optional arguments: + + (comint-send-input &optional no-newline artificial) + +Callers sending input not from the user should use bind the 3rd +argument `artificial' to a non-nil value, to prevent Emacs from +deleting the part of subprocess output that matches the input. + +** The `read-file-name' function now returns a null string if the +user just types RET. + +** The variables post-command-idle-hook and post-command-idle-delay have +been removed. Use run-with-idle-timer instead. + +** A hex or octal escape in a string constant forces the string to +be multibyte or unibyte, respectively. + +** The explicit method of creating a display table element by +combining a face number and a character code into a numeric +glyph code is deprecated. + +Instead, the new functions `make-glyph-code', `glyph-char', and +`glyph-face' must be used to create and decode glyph codes in +display tables. + +** `suppress-keymap' now works by remapping `self-insert-command' to +the command `undefined'. (In earlier Emacs versions, it used +`substitute-key-definition' to rebind self inserting characters to +`undefined'.) + +** The third argument of `accept-process-output' is now milliseconds. +It used to be microseconds. + +** The function find-operation-coding-system may be called with a cons +(FILENAME . BUFFER) in the second argument if the first argument +OPERATION is `insert-file-contents', and thus a function registered in +`file-coding-system-alist' is also called with such an argument. + +** When Emacs receives a USR1 or USR2 signal, this generates +input events: sigusr1 or sigusr2. Use special-event-map to +handle these events. + +** The variable `memory-full' now remains t until +there is no longer a shortage of memory. + +** Support for Mocklisp has been removed. + + +* Lisp Changes in Emacs 22.1 + +** General Lisp changes: + +*** New syntax: \s now stands for the SPACE character. + +`?\s' is a new way to write the space character. You must make sure +it is not followed by a dash, since `?\s-...' indicates the "super" +modifier. However, it would be strange to write a character constant +and a following symbol (beginning with `-') with no space between +them. + +`\s' stands for space in strings, too, but it is not really meant for +strings; it is easier and nicer just to write a space. + +*** New syntax: \uXXXX and \UXXXXXXXX specify Unicode code points in hex. + +For instance, you can use "\u0428" to specify a string consisting of +CYRILLIC CAPITAL LETTER SHA, or `"U0001D6E2" to specify one consisting +of MATHEMATICAL ITALIC CAPITAL ALPHA (the latter is greater than +#xFFFF and thus needs the longer syntax). + +This syntax works for both character constants and strings. + +*** New function `unsafep' determines whether a Lisp form is safe. + +It returns nil if the given Lisp form can't possibly do anything +dangerous; otherwise it returns a reason why the form might be unsafe +(calls unknown function, alters global variable, etc.). + +*** The function `eql' is now available without requiring the CL package. + +*** The new function `memql' is like `memq', but uses `eql' for comparison, +that is, floats are compared by value and other elements with `eq'. + +*** New functions `string-or-null-p' and `booleanp'. + +`string-or-null-p' returns non-nil if OBJECT is a string or nil. +`booleanp' returns non-nil if OBJECT is t or nil. + +*** `makehash' is now obsolete. Use `make-hash-table' instead. + +*** Minor change in the function `format'. + +Some flags that were accepted but not implemented (such as "*") are no +longer accepted. + +*** `add-to-list' takes an optional third argument, APPEND. + +If APPEND is non-nil, the new element gets added at the end of the +list instead of at the beginning. This change actually occurred in +Emacs 21.1, but was not documented then. + +*** New function `add-to-ordered-list' is like `add-to-list' but +associates a numeric ordering of each element added to the list. + +*** New function `add-to-history' adds an element to a history list. + +Lisp packages should use this function to add elements to their +history lists. + +If `history-delete-duplicates' is non-nil, it removes duplicates of +the new element from the history list it updates. + +*** New function `copy-tree' makes a copy of a tree. + +It recursively copies through both CARs and CDRs. + +*** New function `delete-dups' deletes `equal' duplicate elements from a list. + +It modifies the list destructively, like `delete'. Of several `equal' +occurrences of an element in the list, the one that's kept is the +first one. + +*** New function `rassq-delete-all'. + +(rassq-delete-all VALUE ALIST) deletes, from ALIST, each element whose +CDR is `eq' to the specified value. + +*** Functions `get' and `plist-get' no longer give errors for bad plists. + +They return nil for a malformed property list or if the list is +cyclic. + +*** New functions `lax-plist-get' and `lax-plist-put'. + +They are like `plist-get' and `plist-put', except that they compare +the property name using `equal' rather than `eq'. + +*** The function `number-sequence' makes a list of equally-separated numbers. + +For instance, (number-sequence 4 9) returns (4 5 6 7 8 9). By +default, the separation is 1, but you can specify a different +separation as the third argument. (number-sequence 1.5 6 2) returns +(1.5 3.5 5.5). + +*** New variables `most-positive-fixnum' and `most-negative-fixnum'. + +They hold the largest and smallest possible integer values. + +*** The function `expt' handles negative exponents differently. +The value for `(expt A B)', if both A and B are integers and B is +negative, is now a float. For example: (expt 2 -2) => 0.25. + +*** The function `atan' now accepts an optional second argument. + +When called with 2 arguments, as in `(atan Y X)', `atan' returns the +angle in radians between the vector [X, Y] and the X axis. (This is +equivalent to the standard C library function `atan2'.) + +*** New macro `with-case-table' + +This executes the body with the case table temporarily set to a given +case table. + +*** New macro `with-local-quit' temporarily allows quitting. + +A quit inside the body of `with-local-quit' is caught by the +`with-local-quit' form itself, but another quit will happen later once +the code that has inhibited quitting exits. + +This is for use around potentially blocking or long-running code +inside timer functions and `post-command-hook' functions. + +*** New macro `define-obsolete-function-alias'. + +This combines `defalias' and `make-obsolete'. + +*** New macro `eval-at-startup' specifies expressions to +evaluate when Emacs starts up. If this is done after startup, +it evaluates those expressions immediately. + +This is useful in packages that can be preloaded. + +*** New function `macroexpand-all' expands all macros in a form. + +It is similar to the Common-Lisp function of the same name. +One difference is that it guarantees to return the original argument +if no expansion is done, which can be tested using `eq'. + +*** A function or macro's doc string can now specify the calling pattern. + +You put this info in the doc string's last line. It should be +formatted so as to match the regexp "\n\n(fn .*)\\'". If you don't +specify this explicitly, Emacs determines it from the actual argument +names. Usually that default is right, but not always. + +*** New variable `print-continuous-numbering'. + +When this is non-nil, successive calls to print functions use a single +numbering scheme for circular structure references. This is only +relevant when `print-circle' is non-nil. + +When you bind `print-continuous-numbering' to t, you should +also bind `print-number-table' to nil. + +*** `list-faces-display' takes an optional argument, REGEXP. + +If it is non-nil, the function lists only faces matching this regexp. + +*** New hook `command-error-function'. + +By setting this variable to a function, you can control +how the editor command loop shows the user an error message. + +*** `debug-on-entry' accepts primitive functions that are not special forms. + +** Lisp code indentation features: + +*** The `defmacro' form can contain indentation and edebug declarations. + +These declarations specify how to indent the macro calls in Lisp mode +and how to debug them with Edebug. You write them like this: + + (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...) + +DECLARATION is a list `(declare DECLARATION-SPECIFIER ...)'. The +possible declaration specifiers are: + +(indent INDENT) + Set NAME's `lisp-indent-function' property to INDENT. + +(edebug DEBUG) + Set NAME's `edebug-form-spec' property to DEBUG. (This is + equivalent to writing a `def-edebug-spec' for the macro, + but this is cleaner.) + +*** cl-indent now allows customization of Indentation of backquoted forms. + +See the new user option `lisp-backquote-indentation'. + +*** cl-indent now handles indentation of simple and extended `loop' forms. + +The new user options `lisp-loop-keyword-indentation', +`lisp-loop-forms-indentation', and `lisp-simple-loop-indentation' can +be used to customize the indentation of keywords and forms in loop +forms. + +** Variable aliases: + +*** New function: defvaralias ALIAS-VAR BASE-VAR [DOCSTRING] + +This function defines the symbol ALIAS-VAR as a variable alias for +symbol BASE-VAR. This means that retrieving the value of ALIAS-VAR +returns the value of BASE-VAR, and changing the value of ALIAS-VAR +changes the value of BASE-VAR. + +DOCSTRING, if present, is the documentation for ALIAS-VAR; else it has +the same documentation as BASE-VAR. + +*** The macro `define-obsolete-variable-alias' combines `defvaralias' and +`make-obsolete-variable'. + +*** New function: indirect-variable VARIABLE + +This function returns the variable at the end of the chain of aliases +of VARIABLE. If VARIABLE is not a symbol, or if VARIABLE is not +defined as an alias, the function returns VARIABLE. + +It might be noteworthy that variables aliases work for all kinds of +variables, including buffer-local and frame-local variables. + +** defcustom changes: + +*** The package-version keyword has been added to provide +`customize-changed-options' functionality to packages in the future. +Developers who make use of this keyword must also update the new +variable `customize-package-emacs-version-alist'. + +*** The new customization type `float' requires a floating point number. + +** String changes: + +*** A hex escape in a string constant forces the string to be multibyte. + +*** An octal escape in a string constant forces the string to be unibyte. + +*** New function `string-to-multibyte' converts a unibyte string to a +multibyte string with the same individual character codes. + +*** `split-string' now includes null substrings in the returned list if +the optional argument SEPARATORS is non-nil and there are matches for +SEPARATORS at the beginning or end of the string. If SEPARATORS is +nil, or if the new optional third argument OMIT-NULLS is non-nil, all +empty matches are omitted from the returned list. + +*** The new function `assoc-string' replaces `assoc-ignore-case' and +`assoc-ignore-representation', which are still available, but have +been declared obsolete. + +*** New function `substring-no-properties' returns a substring without +text properties. + +** Displaying warnings to the user. + +See the functions `warn' and `display-warning', or the Lisp Manual. +If you want to be sure the warning will not be overlooked, this +facility is much better than using `message', since it displays +warnings in a separate window. + +** Progress reporters. + +These provide a simple and uniform way for commands to present +progress messages for the user. + +See the new functions `make-progress-reporter', +`progress-reporter-update', `progress-reporter-force-update', +`progress-reporter-done', and `dotimes-with-progress-reporter'. + +** Buffer positions: + +*** Function `compute-motion' now calculates the usable window +width if the WIDTH argument is nil. If the TOPOS argument is nil, +the usable window height and width is used. + +*** The `line-move', `scroll-up', and `scroll-down' functions will now +modify the window vscroll to scroll through display rows that are +taller that the height of the window, for example in the presence of +large images. To disable this feature, bind the new variable +`auto-window-vscroll' to nil. + +*** The argument to `forward-word', `backward-word' is optional. + +It defaults to 1. + +*** Argument to `forward-to-indentation' and `backward-to-indentation' is optional. + +It defaults to 1. + +*** `field-beginning' and `field-end' take new optional argument, LIMIT. + +This argument tells them not to search beyond LIMIT. Instead they +give up and return LIMIT. + +*** New function `window-line-height' is an efficient way to get +information about a specific text line in a window provided that the +window's display is up-to-date. + +*** New function `line-number-at-pos' returns the line number of a position. + +It an optional buffer position argument that defaults to point. + +*** Function `pos-visible-in-window-p' now returns the pixel coordinates +and partial visibility state of the corresponding row, if the PARTIALLY +arg is non-nil. + +*** New functions `posn-at-point' and `posn-at-x-y' return +click-event-style position information for a given visible buffer +position or for a given window pixel coordinate. + +*** New function `mouse-on-link-p' tests if a position is in a clickable link. + +This is the function used by the new `mouse-1-click-follows-link' +functionality. + +** Text modification: + +*** The new function `buffer-chars-modified-tick' returns a buffer's +tick counter for changes to characters. Each time text in that buffer +is inserted or deleted, the character-change counter is updated to the +tick counter (`buffer-modified-tick'). Text property changes leave it +unchanged. + +*** The new function `insert-for-yank' normally works like `insert', but +removes the text properties in the `yank-excluded-properties' list +and handles the `yank-handler' text property. + +*** The new function `insert-buffer-substring-as-yank' is like +`insert-for-yank' except that it gets the text from another buffer as +in `insert-buffer-substring'. + +*** The new function `insert-buffer-substring-no-properties' is like +`insert-buffer-substring', but removes all text properties from the +inserted substring. + +*** The new function `filter-buffer-substring' extracts a buffer +substring, passes it through a set of filter functions, and returns +the filtered substring. Use it instead of `buffer-substring' or +`delete-and-extract-region' when copying text into a user-accessible +data structure, such as the kill-ring, X clipboard, or a register. + +The list of filter function is specified by the new variable +`buffer-substring-filters'. For example, Longlines mode adds to +`buffer-substring-filters' to remove soft newlines from the copied +text. + +*** Function `translate-region' accepts also a char-table as TABLE +argument. + +*** The new translation table `translation-table-for-input' +is used for customizing self-insertion. The character to +be inserted is translated through it. + +*** Text clones. + +The new function `text-clone-create'. Text clones are chunks of text +that are kept identical by transparently propagating changes from one +clone to the other. + +*** The function `insert-string' is now obsolete. + +** Filling changes. + +*** In determining an adaptive fill prefix, Emacs now tries the function in +`adaptive-fill-function' _before_ matching the buffer line against +`adaptive-fill-regexp' rather than _after_ it. + +** Atomic change groups. + +To perform some changes in the current buffer "atomically" so that +they either all succeed or are all undone, use `atomic-change-group' +around the code that makes changes. For instance: + + (atomic-change-group + (insert foo) + (delete-region x y)) + +If an error (or other nonlocal exit) occurs inside the body of +`atomic-change-group', it unmakes all the changes in that buffer that +were during the execution of the body. The change group has no effect +on any other buffers--any such changes remain. + +If you need something more sophisticated, you can directly call the +lower-level functions that `atomic-change-group' uses. Here is how. + +To set up a change group for one buffer, call `prepare-change-group'. +Specify the buffer as argument; it defaults to the current buffer. +This function returns a "handle" for the change group. You must save +the handle to activate the change group and then finish it. + +Before you change the buffer again, you must activate the change +group. Pass the handle to `activate-change-group' afterward to +do this. + +After you make the changes, you must finish the change group. You can +either accept the changes or cancel them all. Call +`accept-change-group' to accept the changes in the group as final; +call `cancel-change-group' to undo them all. + +You should use `unwind-protect' to make sure the group is always +finished. The call to `activate-change-group' should be inside the +`unwind-protect', in case the user types C-g just after it runs. +(This is one reason why `prepare-change-group' and +`activate-change-group' are separate functions.) Once you finish the +group, don't use the handle again--don't try to finish the same group +twice. + +To make a multibuffer change group, call `prepare-change-group' once +for each buffer you want to cover, then use `nconc' to combine the +returned values, like this: + + (nconc (prepare-change-group buffer-1) + (prepare-change-group buffer-2)) + +You can then activate the multibuffer change group with a single call +to `activate-change-group', and finish it with a single call to +`accept-change-group' or `cancel-change-group'. + +Nested use of several change groups for the same buffer works as you +would expect. Non-nested use of change groups for the same buffer +will lead to undesirable results, so don't let it happen; the first +change group you start for any given buffer should be the last one +finished. + +** Buffer-related changes: + +*** The new function `buffer-local-value' returns the buffer-local +binding of VARIABLE (a symbol) in buffer BUFFER. If VARIABLE does not +have a buffer-local binding in buffer BUFFER, it returns the default +value of VARIABLE instead. + +*** `list-buffers-noselect' now takes an additional argument, BUFFER-LIST. + +If it is non-nil, it specifies which buffers to list. + +*** `kill-buffer-hook' is now a permanent local. + +*** The function `frame-or-buffer-changed-p' now lets you maintain +various status records in parallel. + +It takes a variable (a symbol) as argument. If the variable is non-nil, +then its value should be a vector installed previously by +`frame-or-buffer-changed-p'. If the frame names, buffer names, buffer +order, or their read-only or modified flags have changed, since the +time the vector's contents were recorded by a previous call to +`frame-or-buffer-changed-p', then the function returns t. Otherwise +it returns nil. + +On the first call to `frame-or-buffer-changed-p', the variable's +value should be nil. `frame-or-buffer-changed-p' stores a suitable +vector into the variable and returns t. + +If the variable is itself nil, then `frame-or-buffer-changed-p' uses, +for compatibility, an internal variable which exists only for this +purpose. + +*** The function `read-buffer' follows the convention for reading from +the minibuffer with a default value: if DEF is non-nil, the minibuffer +prompt provided in PROMPT is edited to show the default value provided +in DEF before the terminal colon and space. + +** Searching and matching changes: + +*** New function `looking-back' checks whether a regular expression matches +the text before point. Specifying the LIMIT argument bounds how far +back the match can start; this is a way to keep it from taking too long. + +*** The new variable `search-spaces-regexp' controls how to search +for spaces in a regular expression. If it is non-nil, it should be a +regular expression, and any series of spaces stands for that regular +expression. If it is nil, spaces stand for themselves. + +Spaces inside of constructs such as `[..]' and inside loops such as +`*', `+', and `?' are never replaced with `search-spaces-regexp'. + +*** New regular expression operators, `\_<' and `\_>'. + +These match the beginning and end of a symbol. A symbol is a +non-empty sequence of either word or symbol constituent characters, as +specified by the syntax table. + +*** `skip-chars-forward' and `skip-chars-backward' now handle +character classes such as `[:alpha:]', along with individual +characters and ranges. + +*** In `replace-match', the replacement text no longer inherits +properties from surrounding text. + +*** The list returned by `(match-data t)' now has the buffer as a final +element, if the last match was on a buffer. `set-match-data' +accepts such a list for restoring the match state. + +*** Functions `match-data' and `set-match-data' now have an optional +argument `reseat'. When non-nil, all markers in the match data list +passed to these functions will be reseated to point to nowhere. + +*** rx.el has new corresponding `symbol-start' and `symbol-end' elements. + +*** The default value of `sentence-end' is now defined using the new +variable `sentence-end-without-space', which contains such characters +that end a sentence without following spaces. + +The function `sentence-end' should be used to obtain the value of the +variable `sentence-end'. If the variable `sentence-end' is nil, then +this function returns the regexp constructed from the variables +`sentence-end-without-period', `sentence-end-double-space' and +`sentence-end-without-space'. + +** Undo changes: + +*** `buffer-undo-list' allows programmable elements. + +These elements have the form (apply FUNNAME . ARGS), where FUNNAME is +a symbol other than t or nil. That stands for a high-level change +that should be undone by evaluating (apply FUNNAME ARGS). + +These entries can also have the form (apply DELTA BEG END FUNNAME . ARGS) +which indicates that the change which took place was limited to the +range BEG...END and increased the buffer size by DELTA. + +*** If the buffer's undo list for the current command gets longer than +`undo-outer-limit', garbage collection empties it. This is to prevent +it from using up the available memory and choking Emacs. + +** Killing and yanking changes: + +*** New `yank-handler' text property can be used to control how +previously killed text on the kill ring is reinserted. + +The value of the `yank-handler' property must be a list with one to four +elements with the following format: + (FUNCTION PARAM NOEXCLUDE UNDO). + +The `insert-for-yank' function looks for a yank-handler property on +the first character on its string argument (typically the first +element on the kill-ring). If a `yank-handler' property is found, +the normal behavior of `insert-for-yank' is modified in various ways: + + When FUNCTION is present and non-nil, it is called instead of `insert' +to insert the string. FUNCTION takes one argument--the object to insert. + If PARAM is present and non-nil, it replaces STRING as the object +passed to FUNCTION (or `insert'); for example, if FUNCTION is +`yank-rectangle', PARAM should be a list of strings to insert as a +rectangle. + If NOEXCLUDE is present and non-nil, the normal removal of the +`yank-excluded-properties' is not performed; instead FUNCTION is +responsible for removing those properties. This may be necessary +if FUNCTION adjusts point before or after inserting the object. + If UNDO is present and non-nil, it is a function that will be called +by `yank-pop' to undo the insertion of the current object. It is +called with two arguments, the start and end of the current region. +FUNCTION can set `yank-undo-function' to override the UNDO value. + +*** The functions `kill-new', `kill-append', and `kill-region' now have an +optional argument to specify the `yank-handler' text property to put on +the killed text. + +*** The function `yank-pop' will now use a non-nil value of the variable +`yank-undo-function' (instead of `delete-region') to undo the previous +`yank' or `yank-pop' command (or a call to `insert-for-yank'). The function +`insert-for-yank' automatically sets that variable according to the UNDO +element of the string argument's `yank-handler' text property if present. + +*** The function `insert-for-yank' now supports strings where the +`yank-handler' property does not span the first character of the +string. The old behavior is available if you call +`insert-for-yank-1' instead. + +** Syntax table changes: + +*** The new function `syntax-ppss' provides an efficient way to find the +current syntactic context at point. + +*** The new function `syntax-after' returns the syntax code +of the character after a specified buffer position, taking account +of text properties as well as the character code. + +*** `syntax-class' extracts the class of a syntax code (as returned +by `syntax-after'). + +*** The macro `with-syntax-table' no longer copies the syntax table. + +** File operation changes: + +*** New vars `exec-suffixes' and `load-suffixes' used when +searching for an executable or an Emacs Lisp file. + +*** New function `locate-file' searches for a file in a list of directories. +`locate-file' accepts a name of a file to search (a string), and two +lists: a list of directories to search in and a list of suffixes to +try; typical usage might use `exec-path' and `load-path' for the list +of directories, and `exec-suffixes' and `load-suffixes' for the list +of suffixes. The function also accepts a predicate argument to +further filter candidate files. + +One advantage of using this function is that the list of suffixes in +`exec-suffixes' is OS-dependant, so this function will find +executables without polluting Lisp code with OS dependencies. + +*** The new function `file-remote-p' tests a file name and returns +non-nil if it specifies a remote file (one that Emacs accesses using +its own special methods and not directly through the file system). +The value in that case is an identifier for the remote file system. + +*** The new hook `before-save-hook' is invoked by `basic-save-buffer' +before saving buffers. This allows packages to perform various final +tasks. For example, it can be used by the copyright package to make +sure saved files have the current year in any copyright headers. + +*** `file-chase-links' now takes an optional second argument LIMIT which +specifies the maximum number of links to chase through. If after that +many iterations the file name obtained is still a symbolic link, +`file-chase-links' returns it anyway. + +*** Functions `file-name-sans-extension' and `file-name-extension' now +ignore the leading dots in file names, so that file names such as +`.emacs' are treated as extensionless. + +*** If `buffer-save-without-query' is non-nil in some buffer, +`save-some-buffers' will always save that buffer without asking (if +it's modified). + +*** `buffer-auto-save-file-format' is the new name for what was +formerly called `auto-save-file-format'. It is now a permanent local. + +*** `visited-file-modtime' and `calendar-time-from-absolute' now return +a list of two integers, instead of a cons. + +*** The precedence of file name handlers has been changed. + +Instead of choosing the first handler that matches, +`find-file-name-handler' now gives precedence to a file name handler +that matches nearest the end of the file name. More precisely, the +handler whose (match-beginning 0) is the largest is chosen. In case +of ties, the old "first matched" rule applies. + +*** A file name handler can declare which operations it handles. + +You do this by putting an `operation' property on the handler name +symbol. The property value should be a list of the operations that +the handler really handles. It won't be called for any other +operations. + +This is useful for autoloaded handlers, to prevent them from being +autoloaded when not really necessary. + +*** The function `make-auto-save-file-name' is now handled by file +name handlers. This will be exploited for remote files mainly. + +*** The function `file-name-completion' accepts an optional argument +PREDICATE, and rejects completion candidates that don't satisfy PREDICATE. + +*** The new primitive `set-file-times' sets a file's access and +modification times. Magic file name handlers can handle this +operation. + +** Input changes: + +*** Functions `y-or-n-p', `read-char', `read-key-sequence' and the like, that +display a prompt but don't use the minibuffer, now display the prompt +using the text properties (esp. the face) of the prompt string. + +*** The functions `read-event', `read-char', and `read-char-exclusive' +have a new optional argument SECONDS. If non-nil, this specifies a +maximum time to wait for input, in seconds. If no input arrives after +this time elapses, the functions stop waiting and return nil. + +*** An interactive specification can now use the code letter `U' to get +the up-event that was discarded in case the last key sequence read for a +previous `k' or `K' argument was a down-event; otherwise nil is used. + +*** The new interactive-specification `G' reads a file name +much like `F', but if the input is a directory name (even defaulted), +it returns just the directory name. + +*** (while-no-input BODY...) runs BODY, but only so long as no input +arrives. If the user types or clicks anything, BODY stops as if a +quit had occurred. `while-no-input' returns the value of BODY, if BODY +finishes. It returns nil if BODY was aborted by a quit, and t if +BODY was aborted by arrival of input. + +*** `recent-keys' now returns the last 300 keys. + +** Minibuffer changes: + +*** The new function `minibufferp' returns non-nil if its optional +buffer argument is a minibuffer. If the argument is omitted, it +defaults to the current buffer. + +*** New function `minibuffer-selected-window' returns the window which +was selected when entering the minibuffer. + +*** The `read-file-name' function now takes an additional argument which +specifies a predicate which the file name read must satisfy. The +new variable `read-file-name-predicate' contains the predicate argument +while reading the file name from the minibuffer; the predicate in this +variable is used by read-file-name-internal to filter the completion list. + +*** The new variable `read-file-name-function' can be used by Lisp code +to override the built-in `read-file-name' function. + +*** The new variable `read-file-name-completion-ignore-case' specifies +whether completion ignores case when reading a file name with the +`read-file-name' function. + +*** The new function `read-directory-name' is for reading a directory name. + +It is like `read-file-name' except that the defaulting works better +for directories, and completion inside it shows only directories. + +*** The new variable `history-add-new-input' specifies whether to add new +elements in history. If set to nil, minibuffer reading functions don't +add new elements to the history list, so it is possible to do this +afterwards by calling `add-to-history' explicitly. + +** Completion changes: + +*** The new function `minibuffer-completion-contents' returns the contents +of the minibuffer just before point. That is what completion commands +operate on. + +*** The functions `all-completions' and `try-completion' now accept lists +of strings as well as hash-tables additionally to alists, obarrays +and functions. Furthermore, the function `test-completion' is now +exported to Lisp. The keys in alists and hash tables can be either +strings or symbols, which are automatically converted with to strings. + +*** The new macro `dynamic-completion-table' supports using functions +as a dynamic completion table. + + (dynamic-completion-table FUN) + +FUN is called with one argument, the string for which completion is required, +and it should return an alist containing all the intended possible +completions. This alist can be a full list of possible completions so that FUN +can ignore the value of its argument. If completion is performed in the +minibuffer, FUN will be called in the buffer from which the minibuffer was +entered. `dynamic-completion-table' then computes the completion. + +*** The new macro `lazy-completion-table' initializes a variable +as a lazy completion table. + + (lazy-completion-table VAR FUN) + +If the completion table VAR is used for the first time (e.g., by passing VAR +as an argument to `try-completion'), the function FUN is called with no +arguments. FUN must return the completion table that will be stored in VAR. +If completion is requested in the minibuffer, FUN will be called in the buffer +from which the minibuffer was entered. The return value of +`lazy-completion-table' must be used to initialize the value of VAR. + +** Abbrev changes: + +*** `define-abbrev' now accepts an optional argument SYSTEM-FLAG. + +If non-nil, this marks the abbrev as a "system" abbrev, which means +that it won't be stored in the user's abbrevs file if he saves the +abbrevs. Major modes that predefine some abbrevs should always +specify this flag. + +*** The new function `copy-abbrev-table' copies an abbrev table. + +It returns a new abbrev table that is a copy of a given abbrev table. + +** Enhancements to keymaps. + +*** Cleaner way to enter key sequences. + +You can enter a constant key sequence in a more natural format, the +same one used for saving keyboard macros, using the macro `kbd'. For +example, + +(kbd "C-x C-f") => "\^x\^f" + +Actually, this format has existed since Emacs 20.1. + +*** Interactive commands can be remapped through keymaps. + +This is an alternative to using `defadvice' or `substitute-key-definition' +to modify the behavior of a key binding using the normal keymap +binding and lookup functionality. + +When a key sequence is bound to a command, and that command is +remapped to another command, that command is run instead of the +original command. + +Example: +Suppose that minor mode `my-mode' has defined the commands +`my-kill-line' and `my-kill-word', and it wants C-k (and any other key +bound to `kill-line') to run the command `my-kill-line' instead of +`kill-line', and likewise it wants to run `my-kill-word' instead of +`kill-word'. + +Instead of rebinding C-k and the other keys in the minor mode map, +command remapping allows you to directly map `kill-line' into +`my-kill-line' and `kill-word' into `my-kill-word' using `define-key': + + (define-key my-mode-map [remap kill-line] 'my-kill-line) + (define-key my-mode-map [remap kill-word] 'my-kill-word) + +When `my-mode' is enabled, its minor mode keymap is enabled too. So +when the user types C-k, that runs the command `my-kill-line'. + +Only one level of remapping is supported. In the above example, this +means that if `my-kill-line' is remapped to `other-kill', then C-k still +runs `my-kill-line'. + +The following changes have been made to provide command remapping: + +- Command remappings are defined using `define-key' with a prefix-key + `remap', i.e. `(define-key MAP [remap CMD] DEF)' remaps command CMD + to definition DEF in keymap MAP. The definition is not limited to + another command; it can be anything accepted for a normal binding. + +- The new function `command-remapping' returns the binding for a + remapped command in the current keymaps, or nil if not remapped. + +- `key-binding' now remaps interactive commands unless the optional + third argument NO-REMAP is non-nil. + +- `where-is-internal' now returns nil for a remapped command (e.g. + `kill-line', when `my-mode' is enabled), and the actual key binding for + the command it is remapped to (e.g. C-k for my-kill-line). + It also has a new optional fifth argument, NO-REMAP, which inhibits + remapping if non-nil (e.g. it returns "C-k" for `kill-line', and + "" for `my-kill-line'). + +- The new variable `this-original-command' contains the original + command before remapping. It is equal to `this-command' when the + command was not remapped. + +*** The definition of a key-binding passed to define-key can use XEmacs-style +key-sequences, such as [(control a)]. + +*** New keymaps for typing file names + +Two new keymaps, `minibuffer-local-filename-completion-map' and +`minibuffer-local-must-match-filename-map', apply whenever +Emacs reads a file name in the minibuffer. These key maps override +the usual binding of SPC to `minibuffer-complete-word' (so that file +names with embedded spaces could be typed without the need to quote +the spaces). + +*** New function `current-active-maps' returns a list of currently +active keymaps. + +*** New function `describe-buffer-bindings' inserts the list of all +defined keys and their definitions. + +*** New function `keymap-prompt' returns the prompt string of a keymap. + +*** If text has a `keymap' property, that keymap takes precedence +over minor mode keymaps. + +*** The `keymap' property now also works at the ends of overlays and +text properties, according to their stickiness. This also means that it +works with empty overlays. The same hold for the `local-map' property. + +*** `key-binding' will now look up mouse-specific bindings. The +keymaps consulted by `key-binding' will get adapted if the key +sequence is started with a mouse event. Instead of letting the click +position be determined from the key sequence itself, it is also +possible to specify it with an optional argument explicitly. + +*** `define-key-after' now accepts keys longer than 1. + +*** (map-keymap FUNCTION KEYMAP) applies the function to each binding +in the keymap. + +*** New variable `emulation-mode-map-alists'. + +Lisp packages using many minor mode keymaps can now maintain their own +keymap alist separate from `minor-mode-map-alist' by adding their +keymap alist to this list. + +*** Dense keymaps now handle inheritance correctly. + +Previously a dense keymap would hide all of the simple-char key +bindings of the parent keymap. + +** Enhancements to process support + +*** Adaptive read buffering of subprocess output. + +On some systems, when Emacs reads the output from a subprocess, the +output data is read in very small blocks, potentially resulting in +very poor performance. This behavior can be remedied to some extent +by setting the new variable `process-adaptive-read-buffering' to a +non-nil value (the default), as it will automatically delay reading +from such processes, allowing them to produce more output before +Emacs tries to read it. + +*** Processes now have an associated property list where programs can +maintain process state and other per-process related information. + +Use the new functions `process-get' and `process-put' to access, add, +and modify elements on this property list. Use the new functions +`process-plist' and `set-process-plist' to access and replace the +entire property list of a process. + +*** Function `list-processes' now has an optional argument; if non-nil, +it lists only the processes whose query-on-exit flag is set. + +*** New fns `set-process-query-on-exit-flag' and `process-query-on-exit-flag'. + +These replace the old function `process-kill-without-query'. That +function is still supported, but new code should use the new +functions. + +*** The new function `call-process-shell-command'. + +This executes a shell command synchronously in a separate process. + +*** The new function `process-file' is similar to `call-process', but +obeys file handlers. The file handler is chosen based on +`default-directory'. + +*** Function `signal-process' now accepts a process object or process +name in addition to a process id to identify the signaled process. + +*** Function `accept-process-output' has a new optional fourth arg +JUST-THIS-ONE. If non-nil, only output from the specified process +is handled, suspending output from other processes. If value is an +integer, also inhibit running timers. This feature is generally not +recommended, but may be necessary for specific applications, such as +speech synthesis. + +*** A process filter function gets the output as multibyte string +if the process specifies t for its filter's multibyteness. + +That multibyteness is decided by the value of +`default-enable-multibyte-characters' when the process is created, and +you can change it later with `set-process-filter-multibyte'. + +*** The new function `set-process-filter-multibyte' sets the +multibyteness of the strings passed to the process's filter. + +*** The new function `process-filter-multibyte-p' returns the +multibyteness of the strings passed to the process's filter. + +*** If a process's coding system is `raw-text' or `no-conversion' and its +buffer is multibyte, the output of the process is at first converted +to multibyte by `string-to-multibyte' then inserted in the buffer. +Previously, it was converted to multibyte by `string-as-multibyte', +which was not compatible with the behavior of file reading. + +** Enhanced networking support. + +*** The new `make-network-process' function makes network connections. +It allows opening of stream and datagram connections to a server, as well as +create a stream or datagram server inside Emacs. + +- A server is started using :server t arg. +- Datagram connection is selected using :type 'datagram arg. +- A server can open on a random port using :service t arg. +- Local sockets are supported using :family 'local arg. +- IPv6 is supported (when available). You may explicitly select IPv6 + using :family 'ipv6 arg. +- Non-blocking connect is supported using :nowait t arg. +- The process' property list can be initialized using :plist PLIST arg; + a copy of the server process' property list is automatically inherited + by new client processes created to handle incoming connections. + +To test for the availability of a given feature, use featurep like this: + (featurep 'make-network-process '(:type datagram)) + (featurep 'make-network-process '(:family ipv6)) + +*** The old `open-network-stream' now uses `make-network-process'. + +*** `process-contact' has an optional KEY argument. + +Depending on this argument, you can get the complete list of network +process properties or a specific property. Using :local or :remote as +the KEY, you get the address of the local or remote end-point. + +An Inet address is represented as a 5 element vector, where the first +4 elements contain the IP address and the fifth is the port number. + +*** New functions `stop-process' and `continue-process'. + +These functions stop and restart communication through a network +connection. For a server process, no connections are accepted in the +stopped state. For a client process, no input is received in the +stopped state. + +*** New function `format-network-address'. + +This function reformats the Lisp representation of a network address +to a printable string. For example, an IP address A.B.C.D and port +number P is represented as a five element vector [A B C D P], and the +printable string returned for this vector is "A.B.C.D:P". See the doc +string for other formatting options. + +*** New function `network-interface-list'. + +This function returns a list of network interface names and their +current network addresses. + +*** New function `network-interface-info'. + +This function returns the network address, hardware address, current +status, and other information about a specific network interface. + +*** New functions `process-datagram-address', `set-process-datagram-address'. + +These functions are used with datagram-based network processes to get +and set the current address of the remote partner. + +*** Deleting a network process with `delete-process' calls the sentinel. + +The status message passed to the sentinel for a deleted network +process is "deleted". The message passed to the sentinel when the +connection is closed by the remote peer has been changed to +"connection broken by remote peer". + +** Using window objects: + +*** You can now make a window as short as one line. + +A window that is just one line tall does not display either a mode +line or a header line, even if the variables `mode-line-format' and +`header-line-format' call for them. A window that is two lines tall +cannot display both a mode line and a header line at once; if the +variables call for both, only the mode line actually appears. + +*** The new function `window-inside-edges' returns the edges of the +actual text portion of the window, not including the scroll bar or +divider line, the fringes, the display margins, the header line and +the mode line. + +*** The new functions `window-pixel-edges' and `window-inside-pixel-edges' +return window edges in units of pixels, rather than columns and lines. + +*** New function `window-body-height'. + +This is like `window-height' but does not count the mode line or the +header line. + +*** The new function `adjust-window-trailing-edge' moves the right +or bottom edge of a window. It does not move other window edges. + +*** The new macro `with-selected-window' temporarily switches the +selected window without impacting the order of `buffer-list'. +It saves and restores the current buffer, too. + +*** `select-window' takes an optional second argument NORECORD. + +This is like `switch-to-buffer'. + +*** `save-selected-window' now saves and restores the selected window +of every frame. This way, it restores everything that can be changed +by calling `select-window'. It also saves and restores the current +buffer. + +*** `set-window-buffer' has an optional argument KEEP-MARGINS. + +If non-nil, that says to preserve the window's current margin, fringe, +and scroll-bar settings. + +*** The new function `window-tree' returns a frame's window tree. + +*** The functions `get-lru-window' and `get-largest-window' take an optional +argument `dedicated'. If non-nil, those functions do not ignore +dedicated windows. + +** Customizable fringe bitmaps + +*** There are new display properties, `left-fringe' and `right-fringe', +that can be used to show a specific bitmap in the left or right fringe +bitmap of the display line. + +Format is `display (left-fringe BITMAP [FACE])', where BITMAP is a +symbol identifying a fringe bitmap, either built-in or defined with +`define-fringe-bitmap', and FACE is an optional face name to be used +for displaying the bitmap instead of the default `fringe' face. +When specified, FACE is automatically merged with the `fringe' face. + +*** New buffer-local variables `fringe-indicator-alist' and +`fringe-cursor-alist' maps between logical (internal) fringe indicator +and cursor symbols and the actual fringe bitmaps to be displayed. +This decouples the logical meaning of the fringe indicators from the +physical appearance, as well as allowing different fringe bitmaps to +be used in different windows showing different buffers. + +*** New function `define-fringe-bitmap' can now be used to create new +fringe bitmaps, as well as change the built-in fringe bitmaps. + +*** New function `destroy-fringe-bitmap' deletes a fringe bitmap +or restores a built-in one to its default value. + +*** New function `set-fringe-bitmap-face' specifies the face to be +used for a specific fringe bitmap. The face is automatically merged +with the `fringe' face, so normally, the face should only specify the +foreground color of the bitmap. + +*** New function `fringe-bitmaps-at-pos' returns the current fringe +bitmaps in the display line at a given buffer position. + +** Other window fringe features: + +*** Controlling the default left and right fringe widths. + +The default left and right fringe widths for all windows of a frame +can now be controlled by setting the `left-fringe' and `right-fringe' +frame parameters to an integer value specifying the width in pixels. +Setting the width to 0 effectively removes the corresponding fringe. + +The actual default fringe widths for the frame may deviate from the +specified widths, since the combined fringe widths must match an +integral number of columns. The extra width is distributed evenly +between the left and right fringe. To force a specific fringe width, +specify the width as a negative integer (if both widths are negative, +only the left fringe gets the specified width). + +Setting the width to nil (the default), restores the default fringe +width which is the minimum number of pixels necessary to display any +of the currently defined fringe bitmaps. The width of the built-in +fringe bitmaps is 8 pixels. + +*** Per-window fringe and scrollbar settings + +**** Windows can now have their own individual fringe widths and +position settings. + +To control the fringe widths of a window, either set the buffer-local +variables `left-fringe-width', `right-fringe-width', or call +`set-window-fringes'. + +To control the fringe position in a window, that is, whether fringes +are positioned between the display margins and the window's text area, +or at the edges of the window, either set the buffer-local variable +`fringes-outside-margins' or call `set-window-fringes'. + +The function `window-fringes' can be used to obtain the current +settings. To make `left-fringe-width', `right-fringe-width', and +`fringes-outside-margins' take effect, you must set them before +displaying the buffer in a window, or use `set-window-buffer' to force +an update of the display margins. + +**** Windows can now have their own individual scroll-bar settings +controlling the width and position of scroll-bars. + +To control the scroll-bar of a window, either set the buffer-local +variables `scroll-bar-mode' and `scroll-bar-width', or call +`set-window-scroll-bars'. The function `window-scroll-bars' can be +used to obtain the current settings. To make `scroll-bar-mode' and +`scroll-bar-width' take effect, you must set them before displaying +the buffer in a window, or use `set-window-buffer' to force an update +of the display margins. + +** Redisplay features: + +*** `sit-for' can now be called with args (SECONDS &optional NODISP). + +*** Iconifying or deiconifying a frame no longer makes sit-for return. + +*** New function `redisplay' causes an immediate redisplay if no input is +available, equivalent to (sit-for 0). The call (redisplay t) forces +an immediate redisplay even if input is pending. + +*** New function `force-window-update' can initiate a full redisplay of +one or all windows. Normally, this is not needed as changes in window +contents are detected automatically. However, certain implicit +changes to mode lines, header lines, or display properties may require +forcing an explicit window update. + +*** (char-displayable-p CHAR) returns non-nil if Emacs ought to be able +to display CHAR. More precisely, if the selected frame's fontset has +a font to display the character set that CHAR belongs to. + +Fontsets can specify a font on a per-character basis; when the fontset +does that, this value cannot be accurate. + +*** You can define multiple overlay arrows via the new +variable `overlay-arrow-variable-list'. + +It contains a list of variables which contain overlay arrow position +markers, including the original `overlay-arrow-position' variable. + +Each variable on this list can have individual `overlay-arrow-string' +and `overlay-arrow-bitmap' properties that specify an overlay arrow +string (for non-window terminals) or fringe bitmap (for window +systems) to display at the corresponding overlay arrow position. +If either property is not set, the default `overlay-arrow-string' or +'overlay-arrow-fringe-bitmap' will be used. + +*** New `line-height' and `line-spacing' properties for newline characters + +A newline can now have `line-height' and `line-spacing' text or overlay +properties that control the height of the corresponding display row. + +If the `line-height' property value is t, the newline does not +contribute to the height of the display row; instead the height of the +newline glyph is reduced. Also, a `line-spacing' property on this +newline is ignored. This can be used to tile small images or image +slices without adding blank areas between the images. + +If the `line-height' property value is a positive integer, the value +specifies the minimum line height in pixels. If necessary, the line +height it increased by increasing the line's ascent. + +If the `line-height' property value is a float, the minimum line +height is calculated by multiplying the default frame line height by +the given value. + +If the `line-height' property value is a cons (FACE . RATIO), the +minimum line height is calculated as RATIO * height of named FACE. +RATIO is int or float. If FACE is t, it specifies the current face. + +If the `line-height' property value is a cons (nil . RATIO), the line +height is calculated as RATIO * actual height of the line's contents. + +If the `line-height' value is a cons (HEIGHT . TOTAL), HEIGHT specifies +the line height as described above, while TOTAL is any of the forms +described above and specifies the total height of the line, causing a +varying number of pixels to be inserted after the line to make it line +exactly that many pixels high. + +If the `line-spacing' property value is an positive integer, the value +is used as additional pixels to insert after the display line; this +overrides the default frame `line-spacing' and any buffer local value of +the `line-spacing' variable. + +If the `line-spacing' property is a float or cons, the line spacing +is calculated as specified above for the `line-height' property. + +*** The buffer local `line-spacing' variable can now have a float value, +which is used as a height relative to the default frame line height. + +*** Enhancements to stretch display properties + +The display property stretch specification form `(space PROPS)', where +PROPS is a property list, now allows pixel based width and height +specifications, as well as enhanced horizontal text alignment. + +The value of these properties can now be a (primitive) expression +which is evaluated during redisplay. The following expressions +are supported: + +EXPR ::= NUM | (NUM) | UNIT | ELEM | POS | IMAGE | FORM +NUM ::= INTEGER | FLOAT | SYMBOL +UNIT ::= in | mm | cm | width | height +ELEM ::= left-fringe | right-fringe | left-margin | right-margin + | scroll-bar | text +POS ::= left | center | right +FORM ::= (NUM . EXPR) | (OP EXPR ...) +OP ::= + | - + +The form `NUM' specifies a fractional width or height of the default +frame font size. The form `(NUM)' specifies an absolute number of +pixels. If a symbol is specified, its buffer-local variable binding +is used. The `in', `mm', and `cm' units specifies the number of +pixels per inch, milli-meter, and centi-meter, resp. The `width' and +`height' units correspond to the width and height of the current face +font. An image specification corresponds to the width or height of +the image. + +The `left-fringe', `right-fringe', `left-margin', `right-margin', +`scroll-bar', and `text' elements specify to the width of the +corresponding area of the window. + +The `left', `center', and `right' positions can be used with :align-to +to specify a position relative to the left edge, center, or right edge +of the text area. One of the above window elements (except `text') +can also be used with :align-to to specify that the position is +relative to the left edge of the given area. Once the base offset for +a relative position has been set (by the first occurrence of one of +these symbols), further occurrences of these symbols are interpreted as +the width of the area. + +For example, to align to the center of the left-margin, use + :align-to (+ left-margin (0.5 . left-margin)) + +If no specific base offset is set for alignment, it is always relative +to the left edge of the text area. For example, :align-to 0 in a +header line aligns with the first text column in the text area. + +The value of the form `(NUM . EXPR)' is the value of NUM multiplied by +the value of the expression EXPR. For example, (2 . in) specifies a +width of 2 inches, while (0.5 . IMAGE) specifies half the width (or +height) of the specified image. + +The form `(+ EXPR ...)' adds up the value of the expressions. +The form `(- EXPR ...)' negates or subtracts the value of the expressions. + +*** Normally, the cursor is displayed at the end of any overlay and +text property string that may be present at the current window +position. The cursor can now be placed on any character of such +strings by giving that character a non-nil `cursor' text property. + +*** The display space :width and :align-to text properties are now +supported on text terminals. + +*** Support for displaying image slices + +**** New display property (slice X Y WIDTH HEIGHT) can be used with +an image property to display only a specific slice of the image. + +**** Function `insert-image' has new optional fourth arg to +specify image slice (X Y WIDTH HEIGHT). + +**** New function `insert-sliced-image' inserts a given image as a +specified number of evenly sized slices (rows x columns). + +*** Images can now have an associated image map via the :map property. + +An image map is an alist where each element has the format (AREA ID PLIST). +An AREA is specified as either a rectangle, a circle, or a polygon: +A rectangle is a cons (rect . ((X0 . Y0) . (X1 . Y1))) specifying the +pixel coordinates of the upper left and bottom right corners. +A circle is a cons (circle . ((X0 . Y0) . R)) specifying the center +and the radius of the circle; R can be a float or integer. +A polygon is a cons (poly . [X0 Y0 X1 Y1 ...]) where each pair in the +vector describes one corner in the polygon. + +When the mouse pointer is above a hot-spot area of an image, the +PLIST of that hot-spot is consulted; if it contains a `help-echo' +property it defines a tool-tip for the hot-spot, and if it contains +a `pointer' property, it defines the shape of the mouse cursor when +it is over the hot-spot. See the variable `void-area-text-pointer' +for possible pointer shapes. + +When you click the mouse when the mouse pointer is over a hot-spot, +an event is composed by combining the ID of the hot-spot with the +mouse event, e.g. [area4 mouse-1] if the hot-spot's ID is `area4'. + +*** The function `find-image' now searches in etc/images/ and etc/. +The new variable `image-load-path' is a list of locations in which to +search for image files. The default is to search in etc/images, then +in etc/, and finally in the directories specified by `load-path'. +Subdirectories of etc/ and etc/images are not recursively searched; if +you put an image file in a subdirectory, you have to specify it +explicitly; for example, if an image is put in etc/images/foo/bar.xpm: + + (defimage foo-image '((:type xpm :file "foo/bar.xpm"))) + +Note that all images formerly located in the lisp directory have been +moved to etc/images. + +*** New function `image-load-path-for-library' returns a suitable +search path for images relative to library. This function is useful in +external packages to save users from having to update +`image-load-path'. + +*** The new variable `max-image-size' defines the maximum size of +images that Emacs will load and display. + +*** The new variable `display-mm-dimensions-alist' can be used to +override incorrect graphical display dimensions returned by functions +`display-mm-height' and `display-mm-width'. + +** Mouse pointer features: + +*** The mouse pointer shape in void text areas (i.e. after the end of a +line or below the last line in the buffer) of the text window is now +controlled by the new variable `void-text-area-pointer'. The default +is to use the `arrow' (non-text) pointer. Other choices are `text' +(or nil), `hand', `vdrag', `hdrag', `modeline', and `hourglass'. + +*** The mouse pointer shape over an image can now be controlled by the +:pointer image property. + +*** The mouse pointer shape over ordinary text or images can now be +controlled/overridden via the `pointer' text property. + +** Mouse event enhancements: + +*** All mouse events now include a buffer position regardless of where +you clicked. For mouse clicks in window margins and fringes, this is +a sensible buffer position corresponding to the surrounding text. + +*** Mouse events for clicks on window fringes now specify `left-fringe' +or `right-fringe' as the area. + +*** Mouse events include actual glyph column and row for all event types +and all areas. + +*** Mouse events can now indicate an image object clicked on. + +*** Mouse events include relative X and Y pixel coordinates relative to +the top left corner of the object (image or character) clicked on. + +*** Mouse events include the pixel width and height of the object +(image or character) clicked on. + +*** Function `mouse-set-point' now works for events outside text area. + +*** `posn-point' now returns buffer position for non-text area events. + +*** New function `posn-area' returns window area clicked on (nil means +text area). + +*** New function `posn-actual-col-row' returns the actual glyph coordinates +of the mouse event position. + +*** New functions 'posn-object', 'posn-object-x-y', 'posn-object-width-height'. + +These return the image or string object of a mouse click, the X and Y +pixel coordinates relative to the top left corner of that object, and +the total width and height of that object. + +** Text property and overlay changes: + +*** Arguments for `remove-overlays' are now optional, so that you can +remove all overlays in the buffer with just (remove-overlays). + +*** New variable `char-property-alias-alist'. + +This variable allows you to create alternative names for text +properties. It works at the same level as `default-text-properties', +although it applies to overlays as well. This variable was introduced +to implement the `font-lock-face' property. + +*** New function `get-char-property-and-overlay' accepts the same +arguments as `get-char-property' and returns a cons whose car is the +return value of `get-char-property' called with those arguments and +whose cdr is the overlay in which the property was found, or nil if +it was found as a text property or not found at all. + +*** The new function `remove-list-of-text-properties'. + +It is like `remove-text-properties' except that it takes a list of +property names as argument rather than a property list. + +** Face changes + +*** The variable `facemenu-unlisted-faces' has been removed. +Emacs has a lot more faces than in the past, and nearly all of them +needed to be excluded. The new variable `facemenu-listed-faces' lists +the faces to include in the face menu. + +*** The new face attribute condition `min-colors' can be used to tailor +the face color to the number of colors supported by a display, and +define the foreground and background colors accordingly so that they +look best on a terminal that supports at least this many colors. This +is now the preferred method for defining default faces in a way that +makes a good use of the capabilities of the display. + +*** New function `display-supports-face-attributes-p' can be used to test +whether a given set of face attributes is actually displayable. + +A new predicate `supports' has also been added to the `defface' face +specification language, which can be used to do this test for faces +defined with `defface'. + +*** The special treatment of faces whose names are of the form `fg:COLOR' +or `bg:COLOR' has been removed. Lisp programs should use the +`defface' facility for defining faces with specific colors, or use +the feature of specifying the face attributes :foreground and :background +directly in the `face' property instead of using a named face. + +*** The first face specification element in a defface can specify +`default' instead of frame classification. Then its attributes act as +defaults that apply to all the subsequent cases (and can be overridden +by them). + +*** The function `face-differs-from-default-p' now truly checks +whether the given face displays differently from the default face or +not (previously it did only a very cursory check). + +*** `face-attribute', `face-foreground', `face-background', `face-stipple'. + +These now accept a new optional argument, INHERIT, which controls how +face inheritance is used when determining the value of a face +attribute. + +*** New functions `face-attribute-relative-p' and `merge-face-attribute' +help with handling relative face attributes. + +*** The priority of faces in an :inherit attribute face list is reversed. + +If a face contains an :inherit attribute with a list of faces, earlier +faces in the list override later faces in the list; in previous +releases of Emacs, the order was the opposite. This change was made +so that :inherit face lists operate identically to face lists in text +`face' properties. + +*** The variable `face-font-rescale-alist' specifies how much larger +(or smaller) font we should use. For instance, if the value is +'((SOME-FONTNAME-PATTERN . 1.3)) and a face requests a font of 10 +point, we actually use a font of 13 point if the font matches +SOME-FONTNAME-PATTERN. + +*** On terminals, faces with the :inverse-video attribute are displayed +with swapped foreground and background colors even when one of them is +not specified. In previous releases of Emacs, if either foreground +or background color was unspecified, colors were not swapped. This +was inconsistent with the face behavior under X. + +*** `set-fontset-font', `fontset-info', `fontset-font' now operate on +the default fontset if the argument NAME is nil.. + +** Font-Lock changes: + +*** New special text property `font-lock-face'. + +This property acts like the `face' property, but it is controlled by +M-x font-lock-mode. It is not, strictly speaking, a builtin text +property. Instead, it is implemented inside font-core.el, using the +new variable `char-property-alias-alist'. + +*** font-lock can manage arbitrary text-properties beside `face'. + +**** the FACENAME returned in `font-lock-keywords' can be a list of the +form (face FACE PROP1 VAL1 PROP2 VAL2 ...) so you can set other +properties than `face'. + +**** `font-lock-extra-managed-props' can be set to make sure those +extra properties are automatically cleaned up by font-lock. + +*** jit-lock obeys a new text-property `jit-lock-defer-multiline'. + +If a piece of text with that property gets contextually refontified +(see `jit-lock-defer-contextually'), then all of that text will +be refontified. This is useful when the syntax of a textual element +depends on text several lines further down (and when `font-lock-multiline' +is not appropriate to solve that problem). For example in Perl: + + s{ + foo + }{ + bar + }e + +Adding/removing the last `e' changes the `bar' from being a piece of +text to being a piece of code, so you'd put a `jit-lock-defer-multiline' +property over the second half of the command to force (deferred) +refontification of `bar' whenever the `e' is added/removed. + +*** `font-lock-extend-region-functions' makes it possible to alter the way +the fontification region is chosen. This can be used to prevent rounding +up to whole lines, or to extend the region to include all related lines +of multiline constructs so that such constructs get properly recognized. + +** Major mode mechanism changes: + +*** New variable `magic-mode-alist' determines major mode for a file by +looking at the file contents. It takes precedence over `auto-mode-alist'. + +*** New variable `magic-fallback-mode-alist' determines major mode for a file by +looking at the file contents. It is handled after `auto-mode-alist', +only if `auto-mode-alist' (and `magic-mode-alist') says nothing about the file. + +*** XML or SGML major mode is selected when file starts with an ` ) + (if (boundp 'foo) form +won't produce a warning if it's not defined as a function, and in the +second case, using `foo' as a variable won't produce a warning if it's +unbound. The test must be in exactly one of the above forms (after +macro expansion), but such tests can be nested. Note that `when' and +`unless' expand to `if', but `cond' doesn't. + +*** `(featurep 'xemacs)' is treated by the compiler as nil. This +helps to avoid noisy compiler warnings in code meant to run under both +Emacs and XEmacs and can sometimes make the result significantly more +efficient. Since byte code from recent versions of XEmacs won't +generally run in Emacs and vice versa, this optimization doesn't lose +you anything. + +*** The local variable `no-byte-compile' in Lisp files is now obeyed. + +*** When a Lisp file uses CL functions at run-time, compiling the file +now issues warnings about these calls, unless the file performs +(require 'cl) when loaded. + +** Frame operations: + +*** New functions `frame-current-scroll-bars' and `window-current-scroll-bars'. + +These functions return the current locations of the vertical and +horizontal scroll bars in a frame or window. + +*** The new function `modify-all-frames-parameters' modifies parameters +for all (existing and future) frames. + +*** The new frame parameter `tty-color-mode' specifies the mode to use +for color support on character terminal frames. Its value can be a +number of colors to support, or a symbol. See the Emacs Lisp +Reference manual for more detailed documentation. + +*** When using non-toolkit scroll bars with the default width, +the `scroll-bar-width' frame parameter value is nil. + +** Mode line changes: + +*** New function `format-mode-line'. + +This returns the mode line or header line of the selected (or a +specified) window as a string with or without text properties. + +*** The new mode-line construct `(:propertize ELT PROPS...)' can be +used to add text properties to mode-line elements. + +*** The new `%i' and `%I' constructs for `mode-line-format' can be used +to display the size of the accessible part of the buffer on the mode +line. + +*** Mouse-face on mode-line (and header-line) is now supported. + +** Menu manipulation changes: + +*** To manipulate the File menu using easy-menu, you must specify the +proper name "file". In previous Emacs versions, you had to specify +"files", even though the menu item itself was changed to say "File" +several versions ago. + +*** The dummy function keys made by easy-menu are now always lower case. +If you specify the menu item name "Ada", for instance, it uses `ada' +as the "key" bound by that key binding. + +This is relevant only if Lisp code looks for the bindings that were +made with easy-menu. + +*** `easy-menu-define' now allows you to use nil for the symbol name +if you don't need to give the menu a name. If you install the menu +into other keymaps right away (MAPS is non-nil), it usually doesn't +need to have a name. + +** Mule changes: + +*** Already true in Emacs 21.1, but not emphasized clearly enough: + +Multibyte buffers can now faithfully record all 256 character codes +from 0 to 255. As a result, most of the past reasons to use unibyte +buffers no longer exist. We only know of three reasons to use them +now: + +1. If you prefer to use unibyte text all of the time. + +2. For reading files into temporary buffers, when you want to avoid +the time it takes to convert the format. + +3. For binary files where format conversion would be pointless and +wasteful. + +*** The new variable `auto-coding-functions' lets you specify functions +to examine a file being visited and deduce the proper coding system +for it. (If the coding system is detected incorrectly for a specific +file, you can put a `coding:' tags to override it.) + +*** The new variable `ascii-case-table' stores the case table for the +ascii character set. Language environments (such as Turkish) may +alter the case correspondences of ASCII characters. This variable +saves the original ASCII case table before any such changes. + +*** The new function `merge-coding-systems' fills in unspecified aspects +of one coding system from another coding system. + +*** New coding system property `mime-text-unsuitable' indicates that +the coding system's `mime-charset' is not suitable for MIME text +parts, e.g. utf-16. + +*** New function `decode-coding-inserted-region' decodes a region as if +it is read from a file without decoding. + +*** New CCL functions `lookup-character' and `lookup-integer' access +hash tables defined by the Lisp function `define-translation-hash-table'. + +*** New function `quail-find-key' returns a list of keys to type in the +current input method to input a character. + +*** `set-buffer-file-coding-system' now takes an additional argument, +NOMODIFY. If it is non-nil, it means don't mark the buffer modified. + +** Operating system access: + +*** The new primitive `get-internal-run-time' returns the processor +run time used by Emacs since start-up. + +*** Functions `user-uid' and `user-real-uid' now return floats if the +user UID doesn't fit in a Lisp integer. Function `user-full-name' +accepts a float as UID parameter. + +*** New function `locale-info' accesses locale information. + +*** On MS Windows, locale-coding-system is used to interact with the OS. +The Windows specific variable w32-system-coding-system, which was +formerly used for that purpose is now an alias for locale-coding-system. + +*** New function `redirect-debugging-output' can be used to redirect +debugging output on the stderr file handle to a file. + +** GC changes: + +*** New variable `gc-cons-percentage' automatically grows the GC cons threshold +as the heap size increases. + +*** New variables `gc-elapsed' and `gcs-done' provide extra information +on garbage collection. + +*** The normal hook `post-gc-hook' is run at the end of garbage collection. + +The hook is run with GC inhibited, so use it with care. + +** Miscellaneous: + +*** A number of hooks have been renamed to better follow the conventions: + +`find-file-hooks' to `find-file-hook', +`find-file-not-found-hooks' to `find-file-not-found-functions', +`write-file-hooks' to `write-file-functions', +`write-contents-hooks' to `write-contents-functions', +`x-lost-selection-hooks' to `x-lost-selection-functions', +`x-sent-selection-hooks' to `x-sent-selection-functions', +`delete-frame-hook' to `delete-frame-functions'. + +In each case the old name remains as an alias for the moment. + +*** Variable `local-write-file-hooks' is marked obsolete. + +Use the LOCAL arg of `add-hook'. + +*** New function `x-send-client-message' sends a client message when +running under X. + +* New Packages for Lisp Programming in Emacs 22.1 + +** The new library button.el implements simple and fast `clickable +buttons' in Emacs buffers. Buttons are much lighter-weight than the +`widgets' implemented by widget.el, and can be used by lisp code that +doesn't require the full power of widgets. Emacs uses buttons for +such things as help and apropos buffers. + +** The new library tree-widget.el provides a widget to display a set +of hierarchical data as an outline. For example, the tree-widget is +well suited to display a hierarchy of directories and files. + +** The new library bindat.el provides functions to unpack and pack +binary data structures, such as network packets, to and from Lisp +data structures. + +** master-mode.el implements a minor mode for scrolling a slave +buffer without leaving your current buffer, the master buffer. + +It can be used by sql.el, for example: the SQL buffer is the master +and its SQLi buffer is the slave. This allows you to scroll the SQLi +buffer containing the output from the SQL buffer containing the +commands. + +This is how to use sql.el and master.el together: the variable +sql-buffer contains the slave buffer. It is a local variable in the +SQL buffer. + +(add-hook 'sql-mode-hook + (function (lambda () + (master-mode t) + (master-set-slave sql-buffer)))) +(add-hook 'sql-set-sqli-hook + (function (lambda () + (master-set-slave sql-buffer)))) + +** The new library benchmark.el does timing measurements on Lisp code. + +This includes measuring garbage collection time. + +** The new library testcover.el does test coverage checking. + +This is so you can tell whether you've tested all paths in your Lisp +code. It works with edebug. + +The function `testcover-start' instruments all functions in a given +file. Then test your code. The function `testcover-mark-all' adds +overlay "splotches" to the Lisp file's buffer to show where coverage +is lacking. The command `testcover-next-mark' (bind it to a key!) +will move point forward to the next spot that has a splotch. + +Normally, a red splotch indicates the form was never completely +evaluated; a brown splotch means it always evaluated to the same +value. The red splotches are skipped for forms that can't possibly +complete their evaluation, such as `error'. The brown splotches are +skipped for forms that are expected to always evaluate to the same +value, such as (setq x 14). + +For difficult cases, you can add do-nothing macros to your code to +help out the test coverage tool. The macro `noreturn' suppresses a +red splotch. It is an error if the argument to `noreturn' does +return. The macro `1value' suppresses a brown splotch for its argument. +This macro is a no-op except during test-coverage -- then it signals +an error if the argument actually returns differing values. + + + +---------------------------------------------------------------------- +This file is part of GNU Emacs. + +GNU Emacs is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GNU Emacs is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Emacs; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. + + +Local variables: +mode: outline +paragraph-separate: "[ ]*$" +end: + +arch-tag: 1aca9dfa-2ac4-4d14-bebf-0007cee12793 diff --cc leim/ChangeLog index 1c14d412ec3,5f118f55fc4..c91ae26c1ef --- a/leim/ChangeLog +++ b/leim/ChangeLog @@@ -1,12 -1,15 +1,24 @@@ + 2007-12-15 Richard Stallman + + * quail/latin-post.el ("scandinavian-postfix"): Doc fix. + + * quail/latin-alt.el: Many doc fixes. + ("danish-alt-postfix") + ("esperanto-alt-postfix", "finnish-alt-postfix") + ("german-alt-postfix", "icelandic-alt-postfix") + ("norwegian-alt-postfix", "scandinavian-alt-postfix") + ("spanish-alt-postfix", "swedish-alt-postfix"): + Deleted; they were identical to the non-alt versions. + +2007-12-07 Kenichi Handa + + * quail/lao.el (quail-map-from-table): Allow a tone just after a + consonant. + +2007-11-17 Glenn Morris + + * Makefile.in (check-declare): New target. + 2007-10-31 Glenn Morris * Makefile.in (install): Change ownership of installed files. diff --cc lisp/ChangeLog index 7caab1fc466,a2054ecbf0f..37fe9fa861e --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@@ -1,464 -1,97 +1,533 @@@ -2007-12-28 YAMAMOTO Mitsuharu - - * progmodes/grep.el (rgrep): Fix last change. - -2007-12-27 Richard Stallman ++2007-12-29 Richard Stallman + + * progmodes/compile.el (compilation-start): Set initial visible + point properly even when compilation buffer already current. + -2007-12-26 Richard Stallman ++2007-12-29 Richard Stallman + + * files.el (conf-mode-maybe): New function. + (auto-mode-alist): Use conf-mode-maybe for .conf etc. + -2007-12-26 Martin Rudalics ++2007-12-29 Martin Rudalics + + * textmodes/fill.el (fill-find-break-point): Fix doc-string typo. + -2007-12-25 Dan Nicolaescu ++2007-12-29 Dan Nicolaescu + + * progmodes/asm-mode.el (asm-mode-map): Add a major mode menu. + -2007-12-25 Richard Stallman ++2007-12-29 Richard Stallman + + * comint.el (comint-mode-map): Explicitly bind `delete' and `kp-delete' + so they never do EOF. + -2007-12-23 Richard Stallman - - * dired-aux.el: Load dired.el at run time too. ++2007-12-29 Richard Stallman + + * faces.el (copy-face): Create the new face explicitly if it + does not exist already. + -2007-12-23 Andreas Schwab - - * files.el (switch-to-buffer-other-frame): Return the buffer - switched to. - -2007-12-23 Juri Linkov - - * term/mac-win.el (mac-apple-event-map): Bind About Emacs menu - item to about-emacs instead of display-splash-screen. - -2007-12-22 Eli Zaretskii ++2007-12-29 Eli Zaretskii + + * simple.el (minibuffer-history, shell-command-history) + (set-variable-value-history): + * replace.el (regexp-history): + * international/mule-cmds.el (input-method-history): + * files.el (file-name-history): Add reference to history-length in + the doc string. + -2007-12-22 Richard Stallman ++2007-12-29 Richard Stallman + + * comint.el (comint-password-prompt-regexp): Match `Enter Password'. + -2007-12-21 Jason Rumney ++2007-12-29 Jason Rumney + + * find-dired.el (find-name-arg): New custom variable. + (find-name-dired): Use it. + (find-dired-find-program): Remove. + (find-dired): Use find-program. + (find-grep-dired): Use grep-program. + + * progmodes/grep.el (rgrep): Use find-name-arg. + -2007-12-21 Martin Rudalics - - * autoinsert.el (auto-insert-alist): Remove nonsensical precision - specifier from format-string. Reported by Ye Wenbin. - -2007-12-19 Martin Rudalics - - * cus-start.el: Use correct group name for members of mode-line group. - -2007-12-17 Thien-Thi Nguyen ++2007-12-29 Thien-Thi Nguyen + + * progmodes/cc-vars.el (defcustom-c-stylevar): + Revert to pre-2007-12-12 version. + -2007-12-15 Richard Stallman ++2007-12-29 Richard Stallman + + * emacs-lisp/find-func.el (find-function-after-hook): Add :type. + + * info.el (Info-clone-buffer): Renamed from Info-clone-buffer-hook. + Use changed. + + * startup.el (fancy-splash-help-echo): Var deleted. + (fancy-splash-insert): Get help-echo from (startup-echo-area-message). + (fancy-about-screen): Don't display fancy-splash-help-echo. + + * menu-bar.el (menu-bar-describe-menu): Remove dots from menu text. + +2007-12-28 Eric S. Raymond + + * vc-hooks.el, vc.el: Move vc-directory-exclusion-list from vc.el + to vc-hooks.el so it will be available to other modes, such as + speedbar.el. Also, teach it to recognize monotone state directories. + + * speedbar.el: Remove this mode's fragile assumptions about + version-control systems. Instead, make it use logic from + vc-hooks.el so it will become smarter whenever VC mode does. + + * vc-hooks.el: 'added is a real state, not a future hypothetical one. + Fix the documentation. + + * vc-bzr.el, vc-cvs.el, vc-git.el, vc-hg.el, vc-mcvs.el, vc-svn.el: + Modify all instances of the dir-state back-end method to suppress + keeping undo lists on the buffers holding status output, which + can get extremely large. + + * vc-cvs.el, vc-svn.el: Simplify backend dired-state-info functions + so they don't do work that the default one can do instead. + + * vc-hooks.el (vc-state): Document new 'ignored and 'unregistered + states, and the new return-value convention. These are not + actually used yet, just set. + + * vc-svn.el (vc-svn-parse-status): Set 'ignored and 'unregistered + states when appropriate. + + * vc-hg.el (vc-hg-state, vc-hg-dir-state): Set 'ignored and + 'unregistered when appropriate. + + * vc-git.el: Document that we don't set the new states yet. + + * vc.el (vc-dired-state-info): Display 'added, 'unregistered and + 'ignored states. + + * vc-cvs.el (vc-cvs-parse-status): Set the 'ignored state when + appropriate. + + * vc-bzr.el (vc-bzr-dir-state): Set 'ignored and 'unregistered + when appropriate. + +2007-12-28 Nick Roberts + + * thumbs.el (thumbs-call-convert): Use call-process directly + with thumbs-conversion-program instead of through shell-file-name + for better error reporting. + +2007-12-27 Jay Belanger + + * calc/calc-aent.el (math-remove-percentsigns): + * calc/calccomp.el (math-to-percentsigns): Change placeholder + for percent signs. + +2007-12-27 Eric S. Raymond + + * vc.el (vc-dired-ignorable-p, vc-dired-hook): Speed optimization; + use completion-ignored-extensions to detect files that should be + ignorted in VC-Dired listings, heading off lots of expensive calls + to (vc-state). + + * vc.el (vc-dired-hook): Show unregistered file status as "?" in + non-terse mode. + (vc-dired-ignorable-p): Ignore Makefile when it has a peer named + Makefile.in or Makefile.am + +2007-12-27 Vinicius Jose Latorre + + * ps-print.el (ps-mark-active-p): Fun returned back. + (ps-print-preprint-region): Use `ps-mark-active-p' instead of + `region-active-p' for error checking. + +2007-12-27 Eric S. Raymond + + * vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el: Put + new machinery in place to support editing of change comments + with 'e' in a log-view buffer. Not documented yet as this + only works for SCCS, RCS, and maybe CVS if you have admin + privileges. When we have backend support for Subversion and + more modern systems it will be time to write this up. + +2007-12-27 Kenichi Handa + + * international/mule-cmds.el (select-safe-coding-system): + When a buffer is modified, cancel the writing. + +2007-12-26 Eric S. Raymond + + * log-view.el: Add Subversion and Mercurial log format samples. + + * vc.el (vc-dired-hook): Significantly speed up by arranging for + it to call the backend dir-state hook (if it exists) + exactly *once*, rather than once per each subdirectory (with + dired-state-info calls on all toplevel files slowing it down even + further). For this to work, backend dir-state methods have to + recurse to subdirectories. Most of them already did anyway; a few + needed *non*-recursion switches removed. This change mostly + removed code that was perversely bad and should have been shot + through the head years ago. + + * vc-bzr.el (vc-bzr-dir-state): + * vc-cvs.el (vc-cvs-dir-state): + * vc-mcvs.el (vc-mcvs-dir-state): + * vc-svn.el (vc-svn-dir-state): Recurse in subdirectories. + + * vc-svn.el (vc-svn-print-log): svn log doesn't actually accept + multiple arguments, so generate logs sequentially when we get them. + * vc-hg.el (vc-hg-print-log): Gives this CVS-like "Working file:" + headers so the various log bindings can do the right thing. + * vc-cvs.el (vc-cvs-print-log): Fix a misleading comment. + +2007-12-26 Andreas Schwab + + * font-lock.el (save-buffer-state): Make sure the state of the + buffer is always restored. + +2007-12-26 Jay Belanger + + * calc/calc.el (calc-lang-allow-percentsigns): New variable. + + * calc/calc-lang.el (calc-lang-allow-percentsigns): Declare as + a variable. + + * calc/calccomp.el (math-to-percentsigns): New function. + (math-compose-var): Handle variables with percent signs. + (math-compose-expr): Handle function names with percent signs. + + * calc/calc-aent.el (math-to-percentsigns): Declare as function. + (math-read-exprs): Handle percent signs in languages that + allow them. + (math-restore-underscores): Remove function. + (math-remove-percentsigns, math-restore-placeholders): + New functions. + +2007-12-26 Vinicius Jose Latorre + + * ps-print.el (ps-print-preprint-region): Use `region-active-p' instead + of `mark' for error checking. + +2007-12-26 Tassilo Horn + + * image-mode.el (image-bookmark-make-cell, image-bookmark-jump): + New functions. + (image-mode): Set bookmark-make-cell-function appropriately. + + * doc-view.el (doc-view-bookmark-jump): Correct misspelled arg name. + + * bookmark.el (bookmark-make-cell-function): New variable. + (bookmark-make): Call bookmark-make-cell-function's function + instead of bookmark-make-cell. + (bookmark-get-handler, bookmark-jump-internal): New functions. + (bookmark-jump, bookmark-jump-other-window, bookmark-insert) + (bookmark-bmenu-2-window, bookmark-bmenu-other-window): + Use bookmark-jump-internal. + (bookmark-make-cell-for-text-file): Renamed from bookmark-make-cell. + + * doc-view.el (doc-view-bookmark-make-cell) + (doc-view-bookmark-jump): New functions. + (doc-view-mode): Set bookmark-make-cell-function buffer-locally. + +2007-12-25 Miles Bader + + * indent.el (indent-for-tab-command): Rigidly indent the following + sexp along with the current line when a prefix arg is given in the + non-active-region case. Specify raw prefix in interactive spec. + Simplify main indentation logic to get rid of the conditional call + to `indent-according-to-mode' (it just ended up calling + `indent-line-function' in all cases anyway, which can be done more + simply here). Remove unnecessary test of ARG in active region case. + +2007-12-25 Richard Stallman + + * allout.el (allout-region-active-p): Rename from my-region-active-p. + Use `use-region-p'. + (allout-write-file-hook-handler): Simplify code. + + * ps-print.el (ps-mark-active-p): Function deleted. + (ps-print-preprint-region): Use (mark) for the error check. + + * tooltip.el (tooltip-region-active-p): Use `use-region-p'. + + * winner.el (winner-active-region): Use `mark-active' if it's defined. + + * progmodes/ada-mode.el (ada-region-selected): Use `use-region-p'. + + * textmodes/org.el (org-region-active-p): Use `use-region-p'. + + * progmodes/idlwave.el (idlwave-region-active-p): Use `use-region-p'. + + * textmodes/reftex.el (reftex-region-active-p): Use `use-region-p'. + + * progmodes/cc-defs.el (c-region-is-active-p): + Use `mark-active' if it's defined. + + * progmodes/cc-cmds.el (c-indent-line-or-region): + Pass prefix arg to `c-indent-command'. Use `use-region-p'. + + * simple.el (select-active-regions): New option. + (set-mark): Obey it. + (yank-pop-change-selection): New option. + (current-kill): Obey it. + + * simple.el (use-region-p): Renamed from `region-active-p'. + (region-active-p): New function. + +2007-12-25 David Golden (tiny change) + + * term/x-win.el (x-select-enable-primary): New option. + (x-select-text, x-cut-buffer-or-selection-value): Obey it. + + * mouse.el (mouse-yank-primary): New function (almost same + as mouse-yank-secondary). + +2007-12-25 Dan Nicolaescu + + * calculator.el: + * dframe.el: + * iswitchb.el: + * whitespace.el: + * winner.el: + * emacs-lisp/checkdoc.el: + * mail/feedmail.el: + * net/quickurl.el: + * obsolete/fast-lock.el: + * play/5x5.el: + * progmodes/delphi.el: + * progmodes/idlw-shell.el: + * progmodes/idlwave.el: + * textmodes/artist.el: + * textmodes/ispell.el: + * textmodes/texinfmt.el: + * textmodes/texinfo.el: Remove obsolete definitions of backward + compatibility macros for defcustom, defgroup, defface, when, + unless, with-current-buffer and with-temp-message. + +2007-12-24 Nick Roberts + + * progmodes/verilog-mode.el: Reformat parts to 80 columns. + +2007-12-23 Stefan Monnier + + * server.el (server-save-buffers-kill-terminal): Check the `proc' is + indeed a process. + +2007-12-23 Richard Stallman + + * simple.el (region-active-p): New function. + (use-empty-active-region): New variable. + + * dired-aux.el (dired): Load dired.el at run time too. + +2007-12-23 Juri Linkov + + * man.el (Man-follow-manual-reference): Fill the minibuffer's + default list with a full list of references. + + * files.el (auto-mode-alist): Add \\' to doc-view files regexp. + +2007-12-23 Andreas Schwab + + * files.el (switch-to-buffer-other-frame): Return the buffer + switched to. + +2007-12-23 Michael Albinus + + Sync with Tramp 2.1.12. + + * net/tramp.el: New todo item. + + * net/tramp-smb.el (tramp-smb-handle-insert-directory): Handle "-F" + switch. Reported by Mark T. Kennedy . + + * net/trampver.el: Update release number. + +2007-12-22 Richard Stallman + + * newcomment.el (comment-region-default): Don't triple the + comment starter if the first region line isn't indented enough. + +2007-12-21 Martin Rudalics + + * autoinsert.el (auto-insert-alist): Remove nonsensical precision + specifier from format-string. Reported by Ye Wenbin. + +2007-12-20 Jason Rumney + + * nxml/nxml-mode.el (nxml-faces): Rename from nxml-highlighting-faces. + Parent group is font-lock-faces. + (nxml-light-blue-color, nxml-dark-blue-color, nxml-green-color) + (nxml-sky-blue-color, nxml-dark-green-color, nxml-light-green-color): + (nxml-version): Remove. + (nxml-delimited-data, nxml-name, nxml-ref, nxml-delimiter) + (nxml-text, nxml-comment-content, nxml-comment-delimiter) + (nxml-processing-instruction-delimiter) + (nxml-processing-instruction-target) + (nxml-processing-instruction-content, nxml-cdata-section-delimiter) + (nxml-cdata-section-CDATA, nxml-cdata-section-content) + (nxml-char-ref-number, nxml-char-ref-delimiter, nxml-entity-ref-name) + (nxml-entity-ref-delimiter, nxml-tag-delimiter, nxml-tag-slash) + (nxml-element-prefix, nxml-element-colon, nxml-element-local-name) + (nxml-attribute-prefix, nxml-attribute-colon) + (nxml-attribute-local-name, nxml-namespace-attribute-xmlns) + (nxml-namespace-attribute-colon, nxml-namespace-attribute-prefix) + (nxml-attribute-value, nxml-attribute-value-delimiter) + (nxml-namespace-attibute-value) + (nxml-namespace-attribure-value-delimiter) + (nxml-prolog-literal-delimiter, nxml-prolog-literal-content) + (nxml-prolog-keyword, nxml-markup-declaration-delimiter, nxml-hash) + (nxml-glyph): Rename, removing -face suffix. + Inherit from existing font-lock faces. + (nxml-apply-fontify-rule, nxml-char-ref-display-extra): + Use new face names. + + * nxml/nxml-outln.el (nxml-heading, nxml-outline-indicator) + (nxml-outline-active-indicator, nxml-outline-ellipsis): + Rename, removing -face suffix. + (nxml-highlighted-less-than, nxml-highlighted-greater-than) + (nxml-highlighted-colon, nxml-highlighted-slash) + (nxml-highlighted-ellipsis, nxml-highlighted-inactive-minus) + (nxml-highlighted-active-minus, nxml-highlighted-active-plus) + (nxml-highlighted-qname, nxml-outline-display-heading): + Use new face names. + + * nxml/rng-valid.el (rng-error): Rename from rng-error-face. + + * nxml/rng-nxml.el (rng-nxml-easy-menu): Remove nxml-version. + +2007-12-19 Martin Rudalics + + * cus-start.el (all): Use correct group name for members of + mode-line group. + + * man.el (Man-default-man-entry): When looking for default man + entry title search text preceding point. Use when instead of if. + + * indent.el (indent-for-tab-command): Fix doc-string typo. + + * vc.el (vc-ensure-vc-buffer): Avoid infinite looping when + vc-parent-buffer is the current buffer. + + * info-look.el (info-lookup, info-lookup-setup-mode) + (info-lookup-make-completions): Avoid clobbering Info-history and + Info-history-list. + +2007-12-19 Glenn Morris + + * progmodes/verilog-mode.el (top-level): Don't require compile. + (compilation-error-regexp-alist, compilation-last-buffer): + Define for compiler. + (verilog-insert-1): New function. + (verilog-insert-indices, verilog-generate-numbers): Doc fixes. + Use verilog-insert-1. + (verilog-surelint-off): Use next-error-last-buffer if bound. + Check compile buffer is live. + +2007-12-19 John J Foerch (tiny change) + + * progmodes/compile.el (compilation-start): Don't pass a FRAME + argument to display-buffer. + +2007-12-19 Jason Rumney + + * nxml/rng-maint.el (rng-format-manual): Do not autoload. + (rng-autoload-modules, rng-update-autoloads, rng-compile-modules) + (rng-byte-compile-load, rng-write-version): Remove. + + * nxml/rng-loc.el (rng-schema-locating-files-default) + (rng-schema-locating-file-schema-file): Use files in etc/schemas. + (rng-schema-loader-alist): Use rng-c-load-schema to load rnc files. + +2007-12-18 Michael Albinus + + * files.el (cd-absolute): Set `list-buffers-directory' in order to + show correct path in buffer list. + + * net/tramp.el (tramp-open-connection-setup-interactive-shell) + (tramp-find-shell): Send only single prompt setting commands, in + order to avoid double-prompt. + + * net/tramp-compat.el (top): Require cl only when compiling. + Reported by Glenn Morris . + +2007-12-18 Thien-Thi Nguyen + + * progmodes/cc-vars.el (defcustom-c-stylevar): Eval VAL. + (c-comment-continuation-stars): No longer declare with + cc-bytecomp-obsolete-var and cc-bytecomp-defvar. + (c-block-comment-prefix): Use symbol-value to + access c-comment-continuation-stars. + * progmodes/cc-mode.el (c-initialize-cc-mode): + Use symbol-value to access c-comment-continuation-stars. + +2007-12-18 Mark A. Hershberger + + * xml.el (xml-escape-string): New function. Escape string using + xml-entity-alist. + (xml-debug-print-internal): Use xml-escape-string to escape + characters in attributes and in text children of elements. + +2007-12-18 Glenn Morris + + * progmodes/cc-subword.el (c-subword-mode): Drop support for + systems without define-minor-mode. + + * progmodes/cc-vars.el (defcustom-c-stylevar): Remove debugging message. + + * progmodes/verilog-mode.el: Replace all instances of + string-to-int with string-to-number, insert-string with insert, + and read-input with read-string. + (top-level): No need to require imenu, reporter, dinotrace, vc, + font-lock when compiling. Always require compile. Relegate remaining + compatibility cruft to XEmacs. Don't require font-lock. + (verilog-version): Remove superfluous concat. + (dinotrace-unannotate-all, zmacs-activate-region) + (customize-apropos): No need to define. + (verilog-regexp-opt): On Emacs, just make it an alias for regexp-opt. + (verilog-font-lock-keywords, verilog-font-lock-keywords-1) + (verilog-font-lock-keywords-2, verilog-font-lock-keywords-3) + (verilog-startup-message-displayed): These are variables, not constants. + (verilog-batch-execute-func, verilog-auto-inst) + (verilog-auto-inst-param): Use mapc rather than mapcar. + (sigs-in, sigs-inout, sigs-out): Define for compiler rather than + actually defining. + (verilog-modi-get-decls, verilog-modi-get-sub-decls) + (verilog-modi-get-outputs, verilog-modi-get-inouts) + (verilog-modi-get-inputs, verilog-modi-get-wires) + (verilog-modi-get-regs, verilog-modi-get-assigns) + (verilog-modi-get-consts, verilog-modi-get-gparams) + (verilog-modi-get-sub-outputs, verilog-modi-get-sub-inouts) + (verilog-modi-get-sub-inputs): Move inline functions earlier in + the file. + (sigs-in, sigs-out): Don't declare multiple times. + (got-sig, got-rvalue, uses-delayed): Define for compiler with just + `defvar'. + (verilog-auto): Call dinotrace-unannotate-all only if bound. + (verilog-module-inside-filename-p): No need to wrap fboundp test + in condition-case. + (reporter-submit-bug-report): Autoload it. + (verilog-mark-defun): Call zmacs-activate-region only if bound. + (verilog-font-customize): Call customize-apropos only if bound. + (verilog-getopt-flags, verilog-auto-reeval-locals): Use + make-local-variable rather than make-variable-buffer-local. + (verilog-company, verilog-project, verilog-modi-cache-list): + Move make-variable-buffer-local calls to top-level. + (font-lock-defaults-alist): Don't define it. + (verilog-need-fld): Remove. + (verilog-font-lock-init): Don't set font-lock-defaults-alist. + (verilog-mode): Only call make-local-hook on XEmacs. Set + font-lock-defaults rather than using verilog-font-lock-init. + +2007-12-17 Andreas Schwab + + * progmodes/sh-script.el (sh-font-lock-syntactic-keywords): + Fix comment typo. + +2007-12-16 Michael Albinus + + * net/dbus.el (dbus-name-owner-changed-handler): + Use `dbus-unregister-signal' for removing old rules. + Obey new structure of `dbus-registered-functions-table'. + 2007-12-12 Thien-Thi Nguyen * progmodes/cc-vars.el (defcustom-c-stylevar): Rewrite. diff --cc lisp/progmodes/compile.el index 9a7b3eb5c08,8d2f3a02c00..6781862889c --- a/lisp/progmodes/compile.el +++ b/lisp/progmodes/compile.el @@@ -1163,13 -1055,8 +1163,9 @@@ Returns the compilation buffer created. command "\n") (setq thisdir default-directory)) (set-buffer-modified-p nil)) - ;; If we're already in the compilation buffer, go to the end - ;; of the buffer, so point will track the compilation output. - (if (eq outbuf (current-buffer)) - (goto-char (point-max))) ;; Pop up the compilation buffer. - (setq outwin (display-buffer outbuf nil t)) + ;; http://lists.gnu.org/archive/html/emacs-devel/2007-11/msg01638.html + (setq outwin (display-buffer outbuf)) (with-current-buffer outbuf (let ((process-environment (append @@@ -1202,31 -1097,60 +1206,34 @@@ (funcall compilation-process-setup-function)) (compilation-set-window-height outwin) ;; Start the compilation. - (if (fboundp 'start-process) - (let ((proc (if (eq mode t) - (get-buffer-process - (with-no-warnings - (comint-exec outbuf (downcase mode-name) - shell-file-name nil `("-c" ,command)))) - (start-process-shell-command (downcase mode-name) - outbuf command)))) - ;; Make the buffer's mode line show process state. - (setq mode-line-process '(":%s")) - (set-process-sentinel proc 'compilation-sentinel) - (set-process-filter proc 'compilation-filter) - ;; Use (point-max) here so that output comes in - ;; after the initial text, - ;; regardless of where the user sees point. - (set-marker (process-mark proc) (point-max) outbuf) - (when compilation-disable-input - (condition-case nil - (process-send-eof proc) - ;; The process may have exited already. - (error nil))) - (setq compilation-in-progress - (cons proc compilation-in-progress))) - ;; No asynchronous processes available. - (message "Executing `%s'..." command) - ;; Fake modeline display as if `start-process' were run. - (setq mode-line-process ":run") - (force-mode-line-update) - (sit-for 0) ; Force redisplay - (save-excursion - ;; Insert the output at the end, after the initial text, - ;; regardless of where the user sees point. - (goto-char (point-max)) - (let* ((buffer-read-only nil) ; call-process needs to modify outbuf - (status (call-process shell-file-name nil outbuf nil "-c" - command))) - (cond ((numberp status) - (compilation-handle-exit 'exit status - (if (zerop status) - "finished\n" - (format "\ -exited abnormally with code %d\n" - status)))) - ((stringp status) - (compilation-handle-exit 'signal status - (concat status "\n"))) - (t - (compilation-handle-exit 'bizarre status status))))) - ;; Without async subprocesses, the buffer is not yet - ;; fontified, so fontify it now. - (let ((font-lock-verbose nil)) ; shut up font-lock messages - (font-lock-fontify-buffer)) - (set-buffer-modified-p nil) - (message "Executing `%s'...done" command))) + (let ((proc + (if (eq mode t) + ;; comint uses `start-file-process'. + (get-buffer-process + (with-no-warnings + (comint-exec + outbuf (downcase mode-name) + (if (file-remote-p default-directory) + "/bin/sh" + shell-file-name) + nil `("-c" ,command)))) + (start-file-process-shell-command (downcase mode-name) + outbuf command)))) + ;; Make the buffer's mode line show process state. + (setq mode-line-process '(":%s")) + (set-process-sentinel proc 'compilation-sentinel) + (set-process-filter proc 'compilation-filter) - (set-marker (process-mark proc) (point) outbuf) ++ ;; Use (point-max) here so that output comes in ++ ;; after the initial text, ++ ;; regardless of where the user sees point. ++ (set-marker (process-mark proc) (point-max) outbuf) + (when compilation-disable-input + (condition-case nil + (process-send-eof proc) + ;; The process may have exited already. + (error nil))) + (setq compilation-in-progress + (cons proc compilation-in-progress)))) ;; Now finally cd to where the shell started make/grep/... (setq default-directory thisdir)) (if (buffer-local-value 'compilation-scroll-output outbuf) diff --cc src/ChangeLog index 952f9d7e6e8,c0b86a16593..be2c5824f51 --- a/src/ChangeLog +++ b/src/ChangeLog @@@ -1,3365 -1,28791 +1,3382 @@@ + 2007-12-24 YAMAMOTO Mitsuharu + + * process.c (make_process): Initialize pty_flag to Qnil instead of 0 + as it is not a bit field on Emacs 22 yet. + + * xdisp.c (phys_cursor_in_rect_p): Check if cursor is in fringe area. + -2007-12-23 YAMAMOTO Mitsuharu - - * macmenu.c (fill_menubar) [MAC_OSX]: Add workaround for Mac OS X 10.5 - about not changing Help menu title. - + 2007-12-22 Eli Zaretskii + - * callint.c (syms_of_callint) : Add reference to - history-length in the doc string. - -2007-12-17 Jason Rumney - - * w32fns.c (w32_wnd_proc) : Cast char to unsigned - before passing as wParam. - -2007-12-14 Jason Rumney - - * w32term.c (w32_read_socket): Use MULTIBYTE_CHAR_KEYSTROKE_EVENT - for characters above 127. - -2007-12-13 Jason Rumney - - * w32fns.c (w32_wnd_proc, Fw32_reconstruct_hot_key): Range check - before dereferencing array. - (lookup_vk_code): Remove zero comparison. - -2007-12-02 Magnus Henoch - - * process.c (make_process): Initialize pty_flag to 0. - -2007-12-02 Jason Rumney - - * image.c (xbm_load) [WINDOWSNT]: Shuffle the bits of directly - specified XBMs. - -2007-12-01 Richard Stallman - - * xdisp.c (syms_of_xdisp) : Doc fix. - -2007-11-30 YAMAMOTO Mitsuharu - - * mac.c (cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]: - New variable. - (mac_try_close_socket) [MAC_OSX]: New function. - [MAC_OSX] (sys_select) [SELECT_USE_CFSOCKET]: - Update cfsockets_for_select. Replace invalid CFRunLoop source. - - * sysdep.c (emacs_close) [MAC_OSX && HAVE_CARBON]: - Use mac_try_close_socket. - -2007-11-28 Petr Salinger (tiny change) - - * s/gnu-kfreebsd.h: New file. - -2007-11-27 YAMAMOTO Mitsuharu - - * unexmacosx.c (unrelocate): New argument BASE. Use it instead of - reloc_base. - (copy_dysymtab): Compute relocation base here. - (rebase_reloc_address) [__ppc64__]: New function. - (copy_dysymtab) [__ppc64__]: Use it if relocation base needs to be - changed. - -2007-11-26 Jason Rumney - - * w32proc.c (sys_spawnve): Quote args with wildcards. - -2007-11-26 Andreas Schwab - - * process.c (list_processes_1): Fix indentation level of the - command column. - -2007-11-24 YAMAMOTO Mitsuharu - - * unexmacosx.c (copy_data_segment): Also copy __gcc_except_tab and - __objc_* sections. - (unrelocate) [_LP64]: Set relocation base to address of data segment. - -2007-11-23 Andreas Schwab - - * editfns.c (Fformat): Handle %c specially since it requires the - argument to be of type int. - -2007-11-22 Jan Dj,Ad(Brv - - * gtkutil.c (update_frame_tool_bar): Don't call x-gtk-map-stock if - file for image is nil. - -2007-11-19 Jason Rumney - - * w32bdf.c (w32_init_bdf_font, w32_BDF_to_x_font): CreateFileMapping - returns NULL on failure. - -2007-11-16 Stefan Monnier - - * search.c (Fset_match_data): Remove the `evaporate' feature. - (unwind_set_match_data): Don't use the `evaporate' feature. - -2007-11-15 Andreas Schwab - - * editfns.c (Fformat): Correctly format EMACS_INT values. - Also take precision into account when formatting an integer. - -2007-11-15 Juanma Barranquero - - * macfns.c (Fx_create_frame, Fx_display_pixel_width) - (Fx_display_pixel_height, Fx_display_planes) - (Fx_display_color_cells, Fx_server_max_request_size) - (Fx_server_vendor, Fx_server_version, Fx_display_backing_store) - (Fx_display_visual_class, Fx_display_save_under): - * w32fns.c (Fx_create_frame, Fx_display_pixel_width) - (Fx_display_pixel_height, Fx_display_planes) - (Fx_display_color_cells, Fx_server_max_request_size) - (Fx_server_vendor, Fx_server_version, Fx_display_screens) - (Fx_display_mm_height, Fx_display_mm_width) - (Fx_display_backing_store, Fx_display_visual_class) - (Fw32_select_font, Fx_display_save_under): - * xfns.c (Fx_create_frame, Fx_display_pixel_width) - (Fx_display_pixel_height, Fx_display_planes) - (Fx_display_color_cells, Fx_server_max_request_size) - (Fx_server_vendor, Fx_server_version, Fx_display_backing_store) - (Fx_display_save_under): Fix typos in docstrings. - -2007-11-14 Juanma Barranquero - - * w32fns.c (Fw32_registered_hot_keys): Don't return the nil values - corresponding to deleted entries; they are an implementation detail. - (gray_bitmap_width, gray_bitmap_height, gray_bitmap_bits): - Remove variables. - (Fw32_define_rgb_color, Fw32_load_color_file): Fix typos in docstrings. - (Fx_server_version): Reflow docstring. - (Fw32_shell_execute): Doc fixes. - -2007-11-13 Juanma Barranquero - - * w32fns.c (Fw32_register_hot_key): Don't try to register hot key - if w32_parse_hot_key returned nil. - -2007-11-10 Juri Linkov - - * puresize.h (BASE_PURESIZE): Increase to 1130000. - -2007-11-10 Stefan Monnier - - * xdisp.c (load_overlay_strings): Fix copy&paste typo. - -2007-11-07 Chong Yidong - - * dispextern.h (struct it): Don't define OVERLAY_STRING_CHUNK_SIZE - twice. - - * xdisp.c (handle_face_prop): Fix last change. - -2007-11-06 Jan Dj,Ad(Brv - - * gtkutil.c (xg_tool_bar_menu_proxy): Handle GTK_IMAGE_ICON_NAME and - abort with a message on unhandled store_type values. - -2007-11-04 Richard Stallman - - * xdisp.c (handle_face_prop): Test for strings that came from overlays, - not just for after-strings and before-strings. - Call face_for_overlay_string and pass the overlay to it. - (handle_display_prop): Determine whether property came from an overlay. - Pass OVERLAY arg to handle_single_display_spec. - (handle_single_display_spec): New arg OVERLAY sets it->from_overlay. - (load_overlay_strings): Fill in it->string_overlays. - (get_overlay_strings_1, push_it, pop_it): Handle it->from_overlays. - - * xfaces.c (face_for_overlay_string): Function renamed from - face_at_buffer_position_no_overlays, and add arg OVERLAY. - - * dispextern.h (struct it): New elt string_overlays. - New elt from_overlay, also in stack. - Rearrange a few elements. - (face_for_overlay_string): Decl renamed from - face_at_buffer_position_no_overlays, and add argument. - -2007-11-03 Richard Stallman - - * xdisp.c (handle_face_prop): Use face_at_buffer_position_no_overlays - to get the base face for an overlay string. - - * dispextern.h (face_at_buffer_position_no_overlays): Add decl. - - * xfaces.c (face_at_buffer_position_no_overlays): New function. - - * xdisp.c (handle_stop): Move some code out of loop. - -2007-11-01 Johan Bockg,Ae(Brd - - * macterm.c, w32term.c, xterm.c (x_draw_stretch_glyph_string): - Don't set s->stippled_p here, since it has already been set by - x_set_glyph_string_gc from x_draw_glyph_string. - -2007-10-31 YAMAMOTO Mitsuharu - - * macfns.c [USE_ATSUI] (Fmac_atsu_font_face_attributes): - Fix conversion from Lisp object to ATSUFontID. - -2007-10-30 Jason Rumney - - * xdisp.c (Fformat_mode_line): Do nothing when noninteractive. - -2007-10-30 YAMAMOTO Mitsuharu - - * unexmacosx.c (unexec_regions_recorder, unexec_regions_merge): - Don't assume regions are aligned to page boundary. - (print_load_command_name): Add LC_UUID if defined. - -2007-10-30 Richard Stallman - - * emacs.c (syms_of_emacs) : Reflow docstring. - -2007-10-29 Juanma Barranquero - - * emacs.c (syms_of_emacs) : Fix typo in docstring. - : Reflow docstring. - -2007-10-26 Martin Rudalics - - * window.c (window_min_size_2): Don't count header-line. - -2007-10-25 Juanma Barranquero - - * w32.c (init_environment): Fix tiny memory leak. - (w32_get_resource): Remove unused variable `ok'. - -2007-10-24 Jason Rumney - - * w32fns.c: Include math.h. - -2007-10-24 Richard Stallman - - * frame.c (x_figure_window_size): For fullscreen case, - set USPosition | PPosition without clobbering rest of window_prompting. - - * keyboard.c (Fcurrent_idle_time): Doc fix. - - * print.c (Fwith_output_to_temp_buffer): Doc fix. - -2007-10-19 Juanma Barranquero - - * process.c (Fset_process_filter): Doc fix. - -2007-10-17 Glenn Morris - - * minibuf.c (Qcompletion_ignore_case): New Lisp_Object. - (syms_of_minibuf): Add Qcompletion_ignore_case. - * dired.c (Qcompletion_ignore_case): Change to external. - (syms_of_dired) [VMS]: Remove Qcompletion_ignore_case. - * fileio.c (Qcompletion_ignore_case): New external Lisp_Object. - (Fread_file_name): Use it rather than intern'ing. - - * coding.c (Qcompletion_ignore_case): New external Lisp_Object. - (Fread_coding_system): Ignore case of user input. - -2007-10-16 YAMAMOTO Mitsuharu - - * xdisp.c (handle_display_prop): Ignore display specs after - replacing one when string text is being replaced. - (handle_single_display_spec): Pretend as if characters with display - property haven't been consumed only when buffer text is being replaced. - -2007-10-14 Juanma Barranquero - - * eval.c (do_autoload): Don't save autoloads. - - * data.c (Ffset): Save autoload of the function being set. - -2007-10-07 John Paul Wallington - - * xfns.c (x_create_tip_frame): Set the `display-type' frame - parameter before setting up faces. - -2007-10-13 Eli Zaretskii - - * msdos.c (dos_rawgetc): Undo last change (there's no ``leaving - selected frame'' on MSDOS). - -2007-10-12 Martin Rudalics - - * frame.c (Qexplicit_name): New variable. - (x_report_frame_params): Report it in parameter alist. - (syms_of_frame): Intern and staticpro it. - -2007-10-09 Jason Rumney - - * w32term.c (x_set_window_size): Disable code that attempts to tell - Lisp code about a size change before it actually happens. - -2007-10-09 Richard Stallman - - * xdisp.c (handle_invisible_prop): After setting up an ellipsis, - return HANDLED_RETURN. - -2007-10-06 Martin Rudalics - - * keyboard.c (kbd_buffer_get_event): Break loop waiting for input - when there's an unread command event. - - * frame.c (focus_follows_mouse): Moved here from frame.el to allow - window autoselection act appropriately when leaving selected frame. - (syms_of_frame): Initialize focus_follows_mouse. - * frame.h (focus_follows_mouse): Extern it. - * macterm.c (XTread_socket): When focus_follows_mouse is nil - make SELECT_WINDOW_EVENT only if we don't leave the selected - frame. - * msdos.c (dos_rawgetc): Likewise. - * w32term.c (w32_read_socket): Likewise. - * xterm.c (handle_one_xevent): Likewise. - * xdisp.c (syms_of_xdisp): In doc-string of - mouse-autoselect-window mention focus-follows-mouse. - -2007-10-06 Andreas Schwab - - * fileio.c (Fwrite_region): Ignore EINVAL error from fsync. - -2007-10-05 YAMAMOTO Mitsuharu - - * macterm.c (mac_load_query_font): Fix missing return value. - [USE_CG_DRAWING] (mac_define_fringe_bitmap, mac_destroy_fringe_bitmap): - Add BLOCK_INPUT. - -2007-10-04 Juanma Barranquero - - * image.c (syms_of_image) : Fix typo in docstring. - -2007-10-02 Richard Stallman - - * xdisp.c (get_window_cursor_type): Implement documented behavior - for cursor-in-non-selected-windows = t. - -2007-10-01 Juanma Barranquero - - * lread.c (Fload): Fix typo in docstring. - -2007-09-29 Juri Linkov - - * emacs.c (standard_args): Change priority of "--no-splash" - from 40 to 3. Add "--no-desktop" with the same priority. - -2007-09-29 Jason Rumney - - * w32.c (w32_get_resource): Always close registry keys. - -2007-09-27 Jason Rumney - - * makefile.w32-in (LIBS): Add COMCTL32. - - * w32fns.c (globals_of_w32fns): Init common controls. - -2007-09-21 Richard Stallman - - * image.c (our_memory_buffer): Renamed from omfib_buffer. - -2007-09-21 Juanma Barranquero - - * w32term.c (x_draw_glyph_string): Use strike_through_color, not - underline_color, to draw strike-through. - -2007-09-20 Glenn Morris - - * process.c (Fmake_network_process): Doc fix. - -2007-09-19 Richard Stallman - - * buffer.c (Foverlays_at): Doc fix. - -2007-09-18 Stefan Monnier - - * fns.c (Fplist_put): Preserve uneven tail data. - -2007-09-16 Jan Dj,Ad(Brv - - * gtkutil.c (xg_get_image_for_pixmap): Always create a GdkPixbuf - when we have no file name for the icon. - (xg_tool_bar_expose_callback): Remove. - (xg_create_tool_bar): Don't connect expose signal to - xg_tool_bar_expose_callback. - -2007-09-16 Andreas Schwab - - * alloc.c (reset_malloc_hooks): Set the hooks to the previous - values instead of zapping them. - -2007-09-15 Glenn Morris - - * s/hpux.h: No longer define `static' as nothing. - -2007-09-14 Glenn Morris - - * fringe.c (init_fringe_bitmap) : Move to file scope. - * gtkutil.c (xg_separator_p) : Move to file scope. - * image.c (our_memory_fill_input_buffer) : Move to file - scope and rename to omfib_buffer for clarity. - (gif_load) : Move to file scope. - -2007-09-14 Peter O'Gorman (tiny change) - - * gtkutil.c (xg_get_file_with_chooser): Move GCPRO1 after declarations. - - * termhooks.h (enum event_kind): Remove trailing comma. - - * frame.h (enum): Remove trailing comma. - -2007-09-14 Jan Dj,Ad(Brv - - * keyboard.c, xterm.c, xfaces.c (abs): #undef before #define. - -2007-09-12 Glenn Morris - - * gtkutil.c (cnt): Rename to menu_grab_callback_cnt for clarity. - (menu_grab_callback): All uses changed. - - * xselect.c (cnt): Rename to x_reply_selection_request_cnt for clarity. - (x_reply_selection_request): All uses changed. - -2007-09-06 Pixel (tiny change) - - * image.c (gif_load): Fix bug: Handle nonexistent colormap. - -2007-09-06 Glenn Morris - - * gtkutil.c (menu_grab_callback) : - * xselect.c (x_reply_selection_request) : Move static - variable to file scope. - -2007-09-02 Dhuvra Krishnamurthy (tiny change) - - * w32proc.c (delete_child): Don't terminate threads of zombies. - -2007-09-02 Jan Dj,Ad(Brv - - * keyboard.c: Qrtl is new. - (parse_tool_bar_item): Handle :rtl keyword. - (syms_of_keyboard): Intern :rtl keyword. - - * dispextern.h (enum tool_bar_item_idx): Add TOOL_BAR_ITEM_RTL_IMAGE. - - * gtkutil.c (file_for_image, find_rtl_image): New functions. - (xg_get_image_for_pixmap): Use file_for_image - (update_frame_tool_bar): If direction is RTL, use RTL image if - defined. Use Gtk stock images or named theme icons if defined. - -2007-08-29 Martin Rudalics - - * keyboard.h (struct kboard): New elt Vlast_repeatable_command. - - * keyboard.c (syms_of_keyboard): Set up new Lisp variable - last-repeatable-command. - (init_kboard): Initialize Vlast_repeatable_command. - (command_loop_1): Set it to real_this_command unless that was - bound to an input event. - (mark_kboards): Mark it. - -2007-08-28 Juanma Barranquero - - * image.c (syms_of_image) : - Doc fixes. - -2007-08-28 Jan Dj,Ad(Brv - - * gtkutil.c (xg_tool_bar_expose_callback): Just do SET_FRAME_GARBAGED - so no Lisp code is executed. - -2007-08-27 YAMAMOTO Mitsuharu - - * macterm.c (x_draw_composite_glyph_string_foreground): Draw rectangle - for nonexistent or zero-width glyph in composition glyph. - -2007-08-27 Richard Stallman - - * eval.c (condition-case): Doc fix. - -2007-08-27 Masatake YAMATO - - * xfaces.c (tty_supports_face_attributes_p): Fix code - for LFACE_INVERSE_INDEX and LFACE_BACKGROUND_INDEX; code - was copied and not edited. - -2007-08-23 Stefan Monnier - - * lread.c (load_warn_old_style_backquotes): Fix up array size typo. - -2007-08-22 Stefan Monnier - - * lread.c (Qold_style_backquotes): New var. - (syms_of_lread): Init and staticpro it. - (load_warn_old_style_backquotes): New fun. - (Fload): Use them to warn about old style backquotes. - (end_of_file_error, Fload): Remove unused vars. - - * lisp.h (Fclear_face_cache, Fx_send_client_event): Declare. - - * lread.c (Vold_style_backquotes): New var. - (syms_of_lread): Init and export it to Elisp. - (read1): Set it when we find an old-style (back)quote. - -2007-08-22 Jason Rumney - - * w32reg.c (SYSTEM_DEFAULT_RESOURCES): Add missing NULL terminator. - -2007-08-21 Stefan Monnier - - * insdel.c (reset_var_on_error): New fun. - (signal_before_change, signal_after_change): - Use it to reset (after|before)-change-functions to nil in case of error. - Bind inhibit-modification-hooks to t. - Don't bind (after|before)-change-functions to nil while they run. - -2007-08-19 Andreas Schwab - - * alloc.c (pure): Round PURESIZE up. - -2007-08-17 Jan Dj,Ad(Brv - - * xterm.c (handle_one_xevent): Remove check that mouse click is in - active frame. - -2007-08-15 Philippe Waroquiers - - * term.c (tty_default_color_capabilities): Declare static - variables in file scope, to avoid HPUX compiler problem. - -2007-08-13 Jan Dj,Ad(Brv - - * gtkutil.c (update_frame_tool_bar): Use -1 as index - to gtk_toolbar_insert. - -2007-08-11 YAMAMOTO Mitsuharu - - * xterm.c (x_draw_image_glyph_string): Adjust stipple origin when - filling pixmap with stippled background. - -2007-08-10 Stefan Monnier - - * print.c (new_backquote_output): Rename from old_backquote_output. - (print): Inverse its logic (according to its name) so as to match the - behavior of new_backquote_flag in lread.c. - -2007-08-09 YAMAMOTO Mitsuharu - - * gmalloc.c (posix_memalign): New function. - -2007-08-08 Glenn Morris - - * Replace `iff' in doc-strings and comments. - -2007-08-07 Chong Yidong - - * dispextern.h (struct image): New members. - - * image.c: Sync to trunk version. - (search_image_cache, uncache_image, image-refresh): New functions. - Check for fg and bg colors. - (lookup_image): Use search_image_cache. Cache fg and bg colors. - (pbm_load): Another check for invalid image data. - (png_load): Ignore default background field. - - * xdisp.c (move_it_by_lines): Remove incorrect optimization. - -2007-08-07 Jan Dj,Ad(Brv - - * gmalloc.c (__malloc_initialize): Remove pthread_once. Not needed. - -2007-08-07 Sam Steingold - - * gmalloc.c (__morecore): Fix the declaration to comply with the - definition. - -2007-08-07 YAMAMOTO Mitsuharu - - * emacs.c (main) - [HAVE_GTK_AND_PTHREAD && !SYSTEM_MALLOC && !DOUG_LEA_MALLOC]: - Call malloc_enable_thread on interactive startup. - - * gmalloc.c (_malloc_thread_enabled_p) [USE_PTHREAD]: New variable. - (LOCK, UNLOCK, LOCK_ALIGNED_BLOCKS, UNLOCK_ALIGNED_BLOCKS) - [USE_PTHREAD]: Conditionalize with it. - (malloc_atfork_handler_prepare, malloc_atfork_handler_parent) - (malloc_atfork_handler_child, malloc_enable_thread) [USE_PTHREAD]: - New functions. - -2007-08-06 Chong Yidong - - * xdisp.c (redisplay_window): When restoring original buffer - position, make sure it is still valid. - -2007-08-06 Martin Rudalics - - * window.c (window_min_size_2): New function. - (window_min_size_1, size_window, Fdisplay_buffer) - (Fsplit_window, adjust_window_trailing_edge): Use it to avoid - windows without mode- or header-lines when window-min-height is - too small. - (size_window): Reset nodelete_p after testing it, following an - earlier note by Kim F. Storm. - (display_buffer): Do not set split_height_threshold to twice the - value of window_min_height to avoid changing the value of a - customizable variable. Rather explicitly check whether the - height of the window that shall be splitted is at least as large - as split_height_threshold. - (Fwindow_full_width_p): New defun. - (syms_of_window): Defsubr it. - - * window.h: Add EXFUN for Fwindow_full_width_p. - -2007-08-06 Andreas Schwab - - * window.c (Fdisplay_buffer): Use NILP. - (Fset_window_scroll_bars): Likewise. - -2007-08-03 Richard Stallman - - * fileio.c (Fvisited_file_modtime): Use make_time. - -2007-08-01 Ryo Yoshitake (tiny change) - - * mac.c (init_mac_osx_environment): Adjust load-path on self-contained - build. - -2007-07-30 Stefan Monnier - - * eval.c (init_eval_once): Bump max_lisp_eval_depth to 400. - -2007-07-25 Glenn Morris - - * Relicense all FSF files to GPLv3 or later. - - * COPYING: Switch to GPLv3. - -2007-07-24 Jason Rumney - - * w32fns.c (x_real_positions): Get real position from OS instead of - calculating it. - -2007-07-23 Jason Rumney - - * filelock.c (current_lock_owner): Allow for @ sign in username. - -2007-07-20 Eli Zaretskii - - * makefile.w32-in (clean): Don't delete *~. - - * w32proc.c (IMAGE_NT_OPTIONAL_HDR32_MAGIC, IMAGE_OPTIONAL_HEADER32): - Define if not defined. - -2007-07-18 Jason Rumney - - * w32proc.c (w32_executable_type): Handle 64 bit executables. - -2007-07-16 Juanma Barranquero - - * coding.c (Ffind_operation_coding_system): - * eval.c (For, Fand, Fprogn): - * keyboard.c (Ftrack_mouse): - * print.c (Fwith_output_to_temp_buffer): - * window.c (Fsave_window_excursion): Doc fixes (some reported - by Johan Bockg,Ae(Brd). - -2007-07-15 Richard Stallman - - * data.c (Fsetq_default): Doc fix. - - * eval.c (Fsetq): Doc fix. - -2007-07-11 Jason Rumney - - * makefile.w32-in (LIBS): Include OLE32. - - * w32fns.c (w32_msg_pump) : Initialize COM. - (w32_msg_pump) : Uninitialize COM. - -2007-06-28 YAMAMOTO Mitsuharu - - * macterm.c [USE_MAC_TSM] (mac_handle_text_input_event): - Check WINDOWP before using XWINDOW. - -2007-06-27 Juanma Barranquero - - * buffer.c (syms_of_buffer) : Fix typo in docstring. - -2007-06-26 YAMAMOTO Mitsuharu - - * gmalloc.c [HAVE_GTK_AND_PTHREAD]: Check this after including config.h. - (_aligned_blocks_mutex) [USE_PTHREAD]: New variable. - (LOCK_ALIGNED_BLOCKS, UNLOCK_ALIGNED_BLOCKS): New macros. - (_free_internal, memalign): Use them. - (_malloc_mutex, _aligned_blocks_mutex) [USE_PTHREAD]: - Initialize to PTHREAD_MUTEX_INITIALIZER. - (malloc_initialize_1) [USE_PTHREAD]: Don't use recursive mutex. - (morecore_nolock): Rename from morecore. All uses changed. - Use only nolock versions of internal allocation functions. - (_malloc_internal_nolock, _realloc_internal_nolock) - (_free_internal_nolock): New functions created from - _malloc_internal, _realloc_internal, and _free_internal. - (_malloc_internal, _realloc_internal, _free_internal): Use them. - Copy hook value to automatic variable before its use. - (memalign): Copy hook value to automatic variable before its use. - -2007-06-21 Jason Rumney - - * image.c (convert_mono_to_color_image): Swap fore and background. - -2007-06-20 Jason Rumney - - * w32bdf.c (w32_BDF_to_x_font): Unmap memory when finished. - (w32_free_bdf_font): Unmap memory not handle. - -2007-06-20 Juanma Barranquero - - * w32.c (_wsa_errlist): Fix typo in error message. - (init_environment): Ignore any environment variable from the - registry having a null value. - -2007-06-17 Jason Rumney - - * w32menu.c (add_menu_item): Don't use multibyte string functions on - unicode strings. - -2007-06-17 Juanma Barranquero - - * xdisp.c (syms_of_xdisp) : - Fix typo in docstring. - -2007-06-16 Eli Zaretskii - - * w32menu.c (add_menu_item): Escape `&' characters in menu items - and their keybindings. - -2007-06-14 Chong Yidong - - * composite.c (update_compositions): Check validity of compositions. - -2007-06-10 Jason Rumney - - * w32fns.c (Fx_file_dialog): Take size from struct not pointer. - -2007-06-06 Jason Rumney - - * s/ms-w32.h: Don't define HAVE_TZNAME. - -2007-06-06 Chong Yidong - - * image.c (xpm_load): Remove spurious call to - xpm_init_color_cache. - -2007-06-06 Martin Rudalics - - * syntax.c (scan_words): Fix arg to UPDATE_SYNTAX_TABLE_BACKWARD. - -2007-06-05 Dan Nicolaescu - - * xfaces.c (syms_of_xfaces): Delete stray semicolon. - * xdisp.c (next_element_from_buffer): - * window.c (delete_window): - * term.c (term_mouse_highlight): - * msdos.c (getdefdir): - * macterm.c (mac_create_bitmap_from_bitmap_data) - (init_font_name_table): - * fns.c (Fsxhash): - * data.c (Fmake_local_variable): - * ccl.c (ccl_driver): Likewise. - -2007-06-04 Juanma Barranquero - - * window.c (Fshrink_window): Reflow docstring. - -2007-06-02 Chong Yidong - - * Version 22.1 released. - - * xfns.c (x_set_name_internal): Undo last change. - -2007-06-01 Richard Stallman - - * xfns.c (x_encode_text): Add GCPRO. - (x_set_name_internal): Separate USE_GTK and non-USE_GTK cases. - -2007-06-01 YAMAMOTO Mitsuharu - - * xfns.c (x_set_name_internal): Save encoded name before - x_encode_text in case string data is relocated. - -2007-05-31 Richard Stallman - - * buffer.c (syms_of_buffer): Doc fix. - -2007-05-28 YAMAMOTO Mitsuharu - - * xdisp.c (redisplay_internal): Bind inhibit-point-motion-hooks to t - around current_column call. - -2007-05-24 Chong Yidong - - * xdisp.c (redisplay_window): If first window line is a - continuation line, recompute the new window start instead of - recentering. - -2007-05-24 YAMAMOTO Mitsuharu - - * macterm.c [USE_CARBON_EVENTS] (mac_handle_window_event): - Call mac_wakeup_from_rne on window size change. - -2007-05-22 Richard Stallman - - * xterm.c (x_connection_closed): Remove NO_RETURN. - -2007-05-19 Stefan Monnier - - * syntax.c (skip_chars): Update syntax-table only after we checked that - the new location is valid. - -2007-05-19 YAMAMOTO Mitsuharu - - * macterm.c (x_calc_absolute_position): Add BLOCK_INPUT around - mac_get_window_bounds. - -2007-05-17 Glenn Morris - - * m/macppc.h (ORDINARY_LINK): No longer define on OpenBSD. - -2007-05-16 YAMAMOTO Mitsuharu - - * macterm.c [USE_CARBON_EVENTS] (mac_convert_event_ref): Also convert - dead key repeat and up events. - -2007-05-13 Chong Yidong - - * xterm.c (XTread_socket): Revert last change. - -2007-05-12 Chong Yidong - - * image.c (pbm_load): Correctly check image size for greyscale pbm. - - * xterm.c (XTread_socket): Yet Another Uncaught X Error Crash (YAUXEC). - -2007-05-07 Stefan Monnier - - * editfns.c (Ftranspose_regions): Yet another int/Lisp_Object mixup (YAILOM) - -2007-05-06 Richard Stallman - - * process.c: Undo May 3 change. - -2007-05-03 Per Cederqvist (tiny change) - - * process.c (Faccept_process_output): Revert 2006-03-22 change so - that the third argument once again is in microseconds (not - milliseconds). This makes it compatible with Emacs 21 and - earlier. Problem found by Henrik Rindl,Av(Bw. - -2007-05-01 YAMAMOTO Mitsuharu - - * macmenu.c (mac_dialog_show): Apply 2007-04-27 change for xmenu.c. - (Fx_popup_dialog) [MAC_OSX]: Likewise. - -2007-04-29 Richard Stallman - - * insdel.c (replace_range): For undo, record insertion first. - -2007-04-29 YAMAMOTO Mitsuharu - - * xdisp.c (try_window_reusing_current_matrix): Fix number of - disabled lines. - -2007-04-27 Jan Dj,Ad(Brv - - * xmenu.c (xdialog_show): Call Fredisplay before showing the dialog. - - * gtkutil.c (xg_update_menubar, create_menus): Create empty - submenu for menu bar items. - -2007-04-24 Chong Yidong - - * xdisp.c (redisplay_window): Use BEG_UNCHANGED and END_UNCHANGED - values of the actual window. - -2007-04-23 Richard Stallman - - * process.c (Fstart_process): Doc fix. - -2007-04-23 Eli Zaretskii - - * process.c (Fstart_process): Doc fix. - -2007-04-22 Richard Stallman - - * abbrev.c (Fdefine_abbrev): Doc fix. - - * keymap.c (Fdefine_key): Minor doc fix. - -2007-04-21 Glenn Morris - - * keymap.c (Fdefine_key): Fix info ref in doc string. - -2007-04-20 Glenn Morris - - * sysdep.c (init_system_name): Don't accept localhost.localdomain. - -2007-04-19 Juanma Barranquero - - * minibuf.c (Fminibuffer_contents, Fminibuffer_contents_no_properties) - (Fminibuffer_completion_contents, Fdelete_minibuffer_contents): - Doc fixes. - -2007-04-16 Chong Yidong - - * dispnew.c (adjust_frame_glyphs_for_frame_redisplay): - Set garbaged flag in presence of window margins. - (showing_window_margins_p): New function. - - * xdisp.c (cursor_row_p): Only end row on newline if it's a - display string. Suggested by Lennart Borgman. - -2007-04-16 YAMAMOTO Mitsuharu - - * alloc.c (mem_insert): Set min_heap_address and max_heap_address - if they are not yet initialized. - -2007-04-15 Chong Yidong - - * xdisp.c (redisplay_window): When deciding whether or not to - recenter, don't use the reset values of BEG_UNCHANGED and - END_UNCHANGED. - -2007-04-13 Kim F. Storm - - * buffer.c (Fkill_buffer): gcpro BUF during kill_buffer_processes - and check that buffer is still alive upon return. - -2007-04-13 YAMAMOTO Mitsuharu - - * macterm.c [!TARGET_API_MAC_CARBON]: Include Displays.h. - (mac_screen_config_changed): New variable. - (mac_handle_dm_notification, init_dm_notification_handler) - (mac_get_screen_info): New functions. - [MAC_OS8] (main): Call init_dm_notification_handler. - (mac_initialize) [MAC_OSX]: Likewise. - (XTread_socket): Call mac_get_screen_info if screen config changed. - (mac_initialized): Make static. - (mac_initialize_display_info): Remove function. - (mac_term_init): Call mac_get_screen_info. Add partial contents of - mac_initialize_display_info. - -2007-04-12 YAMAMOTO Mitsuharu - - * mac.c (xrm_get_preference_database, Fmac_get_preference) - [TARGET_API_MAC_CARBON]: Use CFPreferencesAppSynchronize. - - * macterm.c [TARGET_API_MAC_CARBON] (mac_post_mouse_moved_event): - Use GetGlobalMouse instead of GetMouse and LocalToGlobal. - (mac_initialize_display_info) [MAC_OSX]: Use CGRectZero. - (mac_initialize_display_info) [!MAC_OSX]: dpyinfo->height and - dpyinfo->width are those of whole screen. - -2007-04-10 Chong Yidong - - * xdisp.c (note_mode_line_or_margin_highlight): Don't decrement - glyph pointer before start of glyph row. - -2007-04-09 YAMAMOTO Mitsuharu - - * s/darwin.h (__restrict, struct kboard): Remove outdated workarounds. - (C_SWITCH_SYSTEM): Remove `-I../mac/src'. - -2007-04-09 Martin Rudalics - - * indent.c (Fmove_to_column): Set next_boundary with correct start pt. - -2007-04-08 Richard Stallman - - * xdisp.c (syms_of_xdisp) : Default 100. - -2007-04-07 Chong Yidong - - * editfns.c (Ftranspose_regions): Validate interval before setting - text properties. - -2007-04-03 Eli Zaretskii - - * emacs.c (main): Fix instructions for building Emacs for profiling. - -2007-04-03 Jan Dj,Ad(Brv - - * gtkutil.c (xg_update_menubar): Call g_list_next after moving - menu bar item. - -2007-04-02 Juanma Barranquero - - * print.c (Fprin1_to_string): Use macro SPECPDL_INDEX. - -2007-04-01 Chong Yidong - - * keymap.c (Fcommand_remapping): New optional argument. - (where_is_internal): Use new keymaps argument. - (Fkey_binding): Caller changed. - - * keyboard.c (command_loop_1): Caller changed. - -2007-03-31 Eli Zaretskii - - * window.c (Fget_lru_window): Doc fix. - -2007-03-30 Chong Yidong - - * undo.c (Fprimitive_undo): Give clearer error message when trying - to change text properties outside accessible part of buffer. - -2007-03-29 Kim F. Storm - - * process.c (wait_reading_process_output) [HAVE_PTYS]: - When EIO happens, clear channel from descriptor masks before raising - SIGCHLD signal to avoid busy loop between read and sigchld_handler. - (sigchld_handler): Remove sleep (2007-03-11 & 2007-03-26 changes). - -2007-03-29 Juanma Barranquero - - * buffer.c (Fset_buffer_major_mode): Check that BUFFER is valid. - - * process.c (Fformat_network_address): Return nil when the - argument vector contains invalid values. - -2007-03-28 YAMAMOTO Mitsuharu - - * gmalloc.c [HAVE_GTK_AND_PTHREAD]: Define USE_PTHREAD. - [USE_PTHREAD]: Include pthread.h. - (malloc_init_once_control, _malloc_mutex) [USE_PTHREAD]: New variables. - (malloc_initialize_1): New function created from __malloc_initialize. - (__malloc_initialize): Use it. - (LOCK, UNLOCK): New macros to make malloc etc. thread safe. - (_malloc_internal, _free_internal, _realloc_internal): Use them. - - * lread.c (readchar): Extend BLOCK_INPUT block to ferror/clearerr. - -2007-03-27 Juanma Barranquero - - * process.c (Fformat_network_address): Make args array big enough - to format IPv6 addresses. - -2007-03-27 Glenn Morris - - * m/hp800.h: Restore HP-UX support (removed 2007-01-29). - -2007-03-26 YAMAMOTO Mitsuharu - - * macfns.c (Fx_display_mm_height, Fx_display_mm_width): Scale whole - screen size in pixels by millimeters per pixel of main display. - - * macselect.c (get_scrap_target_type_list, x_own_selection): - Move assignments outside predicate macros. - (Vselection_converter_alist): Doc fix. - - * macterm.c (create_text_encoding_info_alist): Move assignments - outside predicate macros. - (mac_initialize_display_info) [MAC_OSX]: dpyinfo->height and - dpyinfo->width are those of whole screen. - -2007-03-26 Sam Steingold - - * process.c (sigchld_handler): Delay by 1ms instead of 1s to - alleviate sluggishness (the original problem is still fixed). - -2007-03-25 Kim F. Storm - - * intervals.c (merge_properties): Use explicit loop instead of - Fplist_member to avoid QUIT. Don't use Fcdr. - (intervals_equal): Likewise. Rewrite loop to perform length check - on the fly rather than calling Flength. Don't use Fcar. - -2007-03-24 Eli Zaretskii - - * editfns.c (Fgoto_char): Doc fix. - - * indent.c (Findent_to): Doc fix. - -2007-03-24 Chong Yidong - - * editfns.c (Ftranspose_regions): Use set_text_properties_1 - instead of Fset_text_properties to avoid GC. Signal after change. - -2007-03-24 Eli Zaretskii - - * xfns.c (Fx_show_tip): Doc fix. - - * macfns.c (Fx_show_tip): Doc fix. - - * w32fns.c (Fx_show_tip): Doc fix. - -2007-03-23 Kim F. Storm - - * intervals.c (merge_properties, intervals_equal): - Use Fplist_member instead of Fmemq to find properties. - -2007-03-23 Glenn Morris - - * unexhp9k800.c: Restore file with clarified legal status. - * m/sr2k.h: Restore since dependency unexhp9k800.c is restored. - -2007-03-22 Chong Yidong - - * widget.c (EmacsFrameSetCharSize): Catch X errors. - -2007-03-22 Kenichi Handa - - * fileio.c (Fcopy_file): Call barf_or_query_if_file_exists with - non-encoded file name. - (Frename_file): Likewise. - (Fadd_name_to_file): Likewise. - (Fmake_symbolic_link): Likewise. - -2007-03-20 YAMAMOTO Mitsuharu - - * Makefile.in (alloca.o, gtkutil.o): Depend on systime.h. - (dired.o, editfns.o, fileio.o, msdos.o): Depend on atimer.h. - (dosfns.o, window.o, fns.o, macselect.o): Depend on atimer.h and - systime.h. - (term.o, print.o, lread.o): Depend on blockinput.h, atimer.h, and - systime.h. - (macfns.o): Remove duplicate dependency on systime.h. - - * dispnew.c (Fopen_termscript): Add BLOCK_INPUT around fclose. - (Fsend_string_to_terminal): Add BLOCK_INPUT around fwrite. - - * fileio.c (do_auto_save_unwind): Add BLOCK_INPUT around fclose. - (Fdo_auto_save): Add BLOCK_INPUT around fwrite. - - * keyboard.c (record_char): Add BLOCK_INPUT around fwrite. - (Fopen_dribble_file): Add BLOCK_INPUT around fclose. - - * lread.c: Include blockinput.h. - (readchar, Fget_file_char): Add BLOCK_INPUT around getc. - (unreadchar): Add BLOCK_INPUT around ungetc. - (load_unwind): Add BLOCK_INPUT around fclose. - - * print.c: Include blockinput.h. - (Fredirect_debugging_output): Add BLOCK_INPUT around fclose. - - * process.c (Fmake_network_process) [HAVE_GETADDRINFO]: - Clear immediate_quit before calling freeaddrinfo. - Add BLOCK_INPUT around freeaddrinfo. - - * term.c: Include blockinput.h. - (write_glyphs, insert_glyphs): Add BLOCK_INPUT around fwrite. - -2007-03-19 Richard Stallman - - * keyboard.c (NUM_RECENT_KEYS): Bump up to 300. - - * buffer.c (syms_of_buffer): Doc fix. - -2007-03-18 Chong Yidong - - * image.c (pbm_load): Signal error for invalid image size. - -2007-03-18 YAMAMOTO Mitsuharu - - * macterm.c (note_mouse_movement): Don't return immediately for - LeaveNotify case. - - * macmenu.c (popup_activated_flag): New variable. - (x_activate_menubar, mac_menu_show): Set it during menu tracking. - (popup_activated): New function. - - * xdisp.c (redisplay_internal, note_mouse_highlight): - Check popup_activated for MAC_OS. - -2007-03-17 Juanma Barranquero - - * buffer.c (syms_of_buffer) : Doc fix. - Reported by Nikolaj Schumacher . - -2007-03-17 Richard Stallman - - * dired.c (file_name_completion): gcpro NAME. - -2007-03-17 Chong Yidong - - * xdisp.c (try_window_id): Increment matrix positions if the - buffer's byte count has increased, but not the character count. - -2007-03-12 Andreas Schwab - - * lisp.h: Declare check_obarray. - - * process.c (Fdelete_process): Properly handle deletion of first - element of deleted_pid_list. - (create_process): Declare pid as pid_t. - -2007-03-12 Kim F. Storm - - * process.c (sigchld_handler): Change type of pid to pid_t. - Scan deleted_pid_list explicitly to avoid using Fmember which don't - know about mark bits and make_fixnum_or_float which may malloc. - Reported by Andreas Schwab. - - * keyboard.c (read_key_sequence): Store original event into keybuf - when replaying sequence with local keymap(s) from string. - -2007-03-12 Glenn Morris - - * editfns.c (Fdecode_time, Fencode_time): Doc fix ("daylight - savings" to "daylight saving"). - -2007-03-11 Sam Steingold - - * process.c (sigchld_handler): Sleep before wait3 to avoid a busyloop. - -2007-03-11 YAMAMOTO Mitsuharu - - * macfns.c (Fx_server_vendor): Change vendor string to "Apple Inc.". - -2007-03-10 YAMAMOTO Mitsuharu - - * macterm.c [USE_CARBON_EVENTS] (mac_handle_mouse_event): - Ignore mouse wheel movement on title bar or tool bar. - -2007-03-10 Chong Yidong - - * keyboard.c (help_form_saved_window_configs): New var. - (read_char_help_form_unwind): New function. - (read_char): Don't restore window configuration if a mouse click - arrives while the help form is being displayed. - -2007-03-10 Kim F. Storm - - * xdisp.c (redisplay_window): Don't automatically select a new window - start for a contination line during mouse-click. - -2007-03-09 Jan Dj,Ad(Brv - - * xterm.c (handle_one_xevent): Ignore buttons > 3 for the tool bar. - -2007-03-09 Juanma Barranquero - - * keymap.c (Fdescribe_buffer_bindings): Check that BUFFER is valid. - -2007-03-08 Richard Stallman - - * keyboard.c (syms_of_keyboard): Doc fix. - -2007-03-08 Chong Yidong - - * minibuf.c (Ftry_completion): Don't short circuit if - completion-ignore-case is non-nil. - -2007-03-07 YAMAMOTO Mitsuharu - - * macfns.c (mac_set_scroll_bar_width, mac_frame_parm_handlers): - Undo 2006-03-06 changes. - - * macterm.c (XTset_vertical_scroll_bar) [MAC_OSX]: Don't show scroll - bar if its width is smaller than that of Aqua small scroll bar. - -2007-03-07 Stefan Monnier - - * minibuf.c (read_minibuf): Bind inhibit-read-only a bit longer so as - to handle correctly prompts with read-only property. - -2007-03-06 Jan Dj,Ad(Brv - - * sound.c (wav_play): Check header->data_length to see how much we - shall read. - (alsa_period_size): Convert ALSA period size in frames to bytes. - (alsa_write): Return if frames is zero. - -2007-03-06 Kenichi Handa - - * xselect.c (Vselection_coding_system): Documentation improved. - -2007-03-05 YAMAMOTO Mitsuharu - - * macterm.c (x_scroll_bar_create, XTread_socket): Replace #if - USE_TOOLKIT_SCROLL_BARS with #ifdef USE_TOOLKIT_SCROLL_BARS. - (x_set_window_size): Call SET_FRAME_GARBAGED. Clear window if - internal border width has changed. - - * macterm.h (struct mac_output): New member `internal_border_width'. - -2007-03-04 Richard Stallman - - * window.c (Fdisplay_buffer): Doc fix. - -2007-03-03 Glenn Morris - - * Makefile.in: Don't clear out LIB_X11_LIB, since XFT_LIBS does - not include -lX11 on Solaris. - -2007-03-02 Stuart D. Herring - - * keymap.c (Fkey_binding): Don't consider one-element lists as events. - -2007-03-01 Kenichi Handa - - * process.c (send_process_object): Check the process status and - signal an error if something is wrong. - -2007-02-28 Chong Yidong - - * insdel.c (Fcombine_after_change_execute): Return nil if - combine_after_change_buffer has been invalidated. - -2007-02-25 Dan Nicolaescu - - * m/xtensa.h: New file. - -2007-02-24 Nick Roberts - - * .gdbinit (xprintstr): Ensure GDB (> 6.6) prints symbol name - as strings and not character arrays. - -2007-02-24 YAMAMOTO Mitsuharu - - * macterm.c [USE_TOOLKIT_SCROLL_BARS] (x_scroll_bar_handle_drag) - (x_set_toolkit_scroll_bar_thumb): Add bar->min_handle as margin to - scroll bar handle size in order to avoid `scroll backward' problem. - (x_scroll_bar_create, XTset_vertical_scroll_bar) - [USE_TOOLKIT_SCROLL_BARS]: Initialize bar->min_handle. - - * macterm.h (struct scroll_bar) [USE_TOOLKIT_SCROLL_BARS]: - New member `min_handle'. - -2007-02-23 Kim F. Storm - - * print.c (print): Reset print_number_index if Vprint_number_table - is nil. - -2007-02-23 Eli Zaretskii - - * w32.c (stat, get_long_basename, is_unc_volume): Use _mbspbrk - instead of strpbrk. - -2007-02-23 YAMAMOTO Mitsuharu - - * macmenu.c (mac_menu_show): Call unbind_to early. Use variable - `menu_item_selection' as in W32 version. - [TARGET_API_MAC_CARBON] (mac_handle_dialog_event): Add explicit - braces to avoid ambiguous `else'. - - * macterm.c (mac_display_info_for_display): Remove function. - (mac_flush_display_optional) [USE_CG_DRAWING]: New function. - (x_redisplay_interface) [USE_CG_DRAWING]: Set it as handler for - flush_display_optional. - [USE_TOOLKIT_SCROLL_BARS] (x_scroll_bar_handle_press): - New argument MOUSE_POS. All uses changed. Set bar->dragging to - negative integer if scroll bar handle is pressed. - [USE_TOOLKIT_SCROLL_BARS] (x_scroll_bar_handle_release): - Negative bar->dragging means scroll bar handle is not dragged. - [USE_TOOLKIT_SCROLL_BARS] (x_scroll_bar_handle_drag): Get initial - offset of scroll bar handle from negative bar->dragging. - (XTread_socket) [USE_TOOLKIT_SCROLL_BARS]: Modifiers for scroll - bar click is compared against mapped one. Set down/up_modifier - for scroll bar click event with control key. - - * macterm.h (x_display_info_for_display): Remove extern. - (SCROLL_BAR_UNPACK, SET_SCROLL_BAR_CONTROL_HANDLE): Don't limit - value to be unpacked to 32-bit on LP64 model. - -2007-02-23 Kenichi Handa - - * process.c (send_process_object_unwind): New function. - (send_process_object): New function. - (Fprocess_send_region): Call send_process_object. - (Fprocess_send_string): Likewise. - -2007-02-22 Jason Rumney - - * w32menu.c (w32_menu_show): Mark the frame's menu as inactive - when popup menu finishes. - - * w32fns.c (menubar_in_use): New flag. - (w32_wnd_proc) : - Use it. - - * w32menu.c (Fx_popup_menu): Don't free menu strings here. - (w32_menu_show): Do it here instead. - - * w32fns.c (w32_wnd_proc) : Set menubar_active frame - parameter. - - * w32menu.c (current_popup_menu): Make available globally. - (menubar_selection_callback): Free menu strings before pushing the - menu event into the keyboard buffer. Remove menu_command_in_progress. - - * w32fns.c (current_popup_menu): Use from w32menu.c. - (w32_wnd_proc) : Use menubar_active - and current_popup_menu to determine whether a menubar menu has - been cancelled. - - * w32term.h (w32_output): Remove menu_command_in_progress. - -2007-02-22 Kim F. Storm - - * dispnew.c (update_frame, update_single_window): Set force_p here if - redisplay_dont_pause is set or Vredisplay_preemption_period is nil... - (update_window, update_frame_1): ... instead of here. - (update_text_area): Clear mouse face on header lines. - -2007-02-21 Kim F. Storm - - * minibuf.c (Fassoc_string): Doc fix. Allow symbol for KEY too. - -2007-02-21 YAMAMOTO Mitsuharu - - * macterm.c (WINDOW_RESOURCE, TERM_WINDOW_RESOURCE): Remove macros. - [USE_MAC_TSM] (mac_handle_text_input_event): Remove unused variable - `mapped_modifiers'. - (XTread_socket) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1020]: Use Keyboard - Layout Services routines to get current Unicode keyboard layout. - -2007-02-20 Chong Yidong - - * frame.c (x_set_screen_gamma): Apply gamma value to the frame's - bgcolor. - -2007-02-19 Kim F. Storm - - * minibuf.c (Fassoc_string): Allow symbols as keys. - - * w32term.c (w32_set_scroll_bar_thumb): Don't resize scroll-bar - handle while dragging, except when we get close to eob. - Fix position and size calculations so we don't scroll backwards - just by clicking on the handle. - -2007-02-17 YAMAMOTO Mitsuharu - - * Makefile.in (${emacsapp}Contents/Resources/Emacs.rsrc) - [HAVE_CARBON]: Remove target. - (macosx-app) [HAVE_CARBON]: Don't depend on it. - -2007-02-17 Juanma Barranquero - - * callproc.c (syms_of_callproc) : - : - (Fgetenv_internal): Fix typos in docstrings. - - * doc.c (Fsubstitute_command_keys): Fix typo in docstring. - -2007-02-16 Andreas Schwab - - * frame.c (Fmodify_frame_parameters): Return a value. - - * editfns.c (Fformat): Add support for '+' flag. - * doprnt.c (doprnt1): Likewise. Fix overflow checking. - -2007-02-14 Chong Yidong - - * s/umips.h: Unused file removed. - -2007-02-14 Juanma Barranquero - - * xfaces.c (Fcolor_distance): Don't continue checking a color for - errors after it has been correctly parsed as an RGB list. - -2007-02-14 Jan Dj,Ad(Brv - - * xterm.c (do_ewmh_fullscreen): Also check for _NET_WM_STATE_FULLSCREEN. - -2007-02-13 YAMAMOTO Mitsuharu - - * macfns.c (Fx_focus_frame): Move current process to foreground if - it is not. - [TARGET_API_MAC_CARBON] (Fx_file_dialog): Replace #if MAC_OSX with - #ifdef MAC_OSX. - (Fmac_set_font_panel_visible_p) [USE_MAC_FONT_PANEL]: Rename from - Fmac_set_font_panel_visibility. All uses changed. Rename argument - VISIBLE to FLAG. - - * macterm.c (MakeMeTheFrontProcess) [MAC_OSX]: Remove function. - (mac_initialize) [MAC_OSX]: Call SetFrontProcess instead of - MakeMeTheFrontProcess. - -2007-02-12 Chong Yidong - - * frame.c (x_set_screen_gamma): Clear face cache. - -2007-02-11 Juanma Barranquero - - * buffer.c (Fgenerate_new_buffer_name, Fbuffer_modified_tick): - Reflow docstrings. - -2007-02-10 Eli Zaretskii - - * window.c (Fwindow_height, Fwindow_hscroll) - (Fwindow_redisplay_end_trigger, Fwindow_point, Fwindow_start) - (Fwindow_end, Fwindow_display_table, Fwindow_text_height): - Document the effect of WINDOW arg being nil. - -2007-02-08 Kim F. Storm - - * minibuf.c (read_minibuf): Fix 2007-01-30 change. - Use Qlambda as interim value of Vminibuffer_completing_file_name. - (Fcompleting_read): Use non-filename maps if value is Qlambda (or Qnil). - (syms_of_minibuf) : Document lambda. - -2007-02-07 Juanma Barranquero - - * makefile.w32-in ($(TRES)): Use literal "../nt/emacs.rc" instead - of $(ALL_DEPS). - -2007-02-07 Eli Zaretskii - - * makefile.w32-in ($(TRES)): Depend on stamp_BLD, since $(TRES) is - put into $(BLD). - -2007-02-06 Chong Yidong - - * frame.c (Fmodify_frame_parameters): Don't bind - Qinhibit_default_face_x_resources, which has no effect. - (Qinhibit_default_face_x_resources): Symbol deleted. - -2007-02-03 Eli Zaretskii - - * indent.c (Fmove_to_column): Document that the argument COLUMN is - taken from prefix numeric argument. - -2007-02-03 Juanma Barranquero - - * lread.c (syms_of_lread) : Doc fix. - -2007-01-29 Andreas Seltenreich (tiny change) - - * xterm.c [!USE_TOOLKIT_SCROLL_BARS] (x_scroll_bar_expose): - Use the foreground color of the scroll-bar face when drawing - the scroll-bar's border. - -2007-02-02 Jan Dj,Ad(Brv - - * xterm.c (do_ewmh_fullscreen): Check that what != NULL before - calling wm_supports. - -2007-02-01 Juanma Barranquero - - * lread.c (syms_of_lread) : Doc fix. - Wording by Eli Zaretskii. - -2007-01-31 Jan Dj,Ad(Brv - - * gtkutil.c (update_frame_tool_bar): Initialize h/vmargin to 0. - -2007-01-30 Richard Stallman - - * minibuf.c (read_minibuf): - Save and clear Vminibuffer_completing_file_name. - (read_minibuf_unwind): Restore it. - (Vminibuffer_completion_table, Qminibuffer_completion_table) - (Vminibuffer_completion_predicate, Qminibuffer_completion_predicate) - (Vminibuffer_completion_confirm, Qminibuffer_completion_confirm) - (Vminibuffer_completing_file_name): Definitions moved up. - -2007-01-29 Chong Yidong - - * m/hp800.h: Restore, removing HP-UX support. - -2007-01-29 Jan Dj,Ad(Brv - - * Makefile.in: Use a variable, XFT_LIBS, instead #define LIB_X11_LIB. - -2007-01-28 Richard Stallman - - * minibuf.c (Ftry_completion, Fall_completions) - (Fcompleting_read, Ftest_completion): - Rename arg ALIST or TABLE to COLLECTION. - -2007-01-27 Chong Yidong - - * unexhp9k800.c: Remove due to lack of legal papers. - - * m/sr2k.h, m/hp800.h: Remove due to dependence on above. - -2007-01-27 Eli Zaretskii - - * keyboard.c (Fthis_command_keys, Fthis_command_keys_vector): Doc fix. - - * minibuf.c (Fcompleting_read): Doc fix. - -2007-01-26 Jan Dj,Ad(Brv - - * gtkutil.c (xg_initialize): Call XftInit if HAVE_XFT. - - * Makefile.in: Use XFT_LIBS if defined. - -2007-01-26 YAMAMOTO Mitsuharu - - * alloc.c (BLOCK_INPUT_ALLOC, UNBLOCK_INPUT_ALLOC): Use - BLOCK_INPUT/UNBLOCK_INPUT. - - * blockinput.h (interrupt_input_blocked): Declare volatile. - - * keyboard.c (interrupt_input_blocked): Declare volatile. - - * syssignal.h (SIGNAL_THREAD_CHECK): Use pthread_equal. - -2007-01-24 Kim F. Storm - - * keymap.c (describe_map): Don't consider prefix keys to be shadowed. - -2007-01-23 Juanma Barranquero - - * editfns.c (Finsert_char): Doc fix. - (Fget_internal_run_time, Fdecode_time): Fix typos in docstrings. - -2007-01-22 YAMAMOTO Mitsuharu - - * macselect.c [TARGET_API_MAC_CARBON] (mac_do_receive_drag): - Don't pass keyboard modifiers to mac_store_drag_event, but put - them as kEventParamKeyModifiers Apple event parameter. - -2007-01-21 Chong Yidong - - * xdisp.c (try_window): Revert previous change. - - * dispnew.c (update_text_area): Revert 2006-09-17 change. - Always redraw non-mode-line rows with mouse-face. - -2007-01-20 Chong Yidong - - * xdisp.c (try_window): Clear mouse-face highlights first. - - * window.c (set_window_buffer): Revert 2006-11-22 change. - -2007-01-20 Eli Zaretskii - - * .gdbinit (ppt, xtype, xmisctype, xint, xptr, xmarker, xframe) - (xbuffer, xcons, xcar, xcdr): Fix doc strings. - -2007-01-20 Chong Yidong - - * keyboard.c (read_key_sequence): Extract local map only if the - given position is in an accessible buffer region. - -2007-01-19 Nick Roberts - - * .gdbinit: Reformat documentation so that first sentence - displays properly with "help user-defined" (like apropos). - -2007-01-18 Bruno Haible (tiny change) - - * epaths.in: Move PATH_DOC from local/info to local/share/info. - -2007-01-15 YAMAMOTO Mitsuharu - - * macmenu.c (create_and_show_dialog) [TARGET_API_MAC_CARBON]: - Create movable modal window instead of movable alert window. - (create_and_show_dialog) [!MAC_OSX]: Use DeactivateControl instead - of DisableControl. - - * macselect.c (Fmac_resume_apple_event): Set error number when - descriptor type of reply is non-null. - -2007-01-14 YAMAMOTO Mitsuharu - - * macmenu.c (create_and_show_dialog) [TARGET_API_MAC_CARBON]: - Use DisableControl for disabled items. Set default button to first - enabled one. Use icon of application in execution. - -2007-01-13 Eli Zaretskii - - * process.c (Fdelete_process, Fprocess_id, sigchld_handler): - Copy PID into EMACS_INT to avoid GCC warnings. - - * fns.c (maybe_resize_hash_table): Copy new size of hash table - into EMACS_INT to avoid GCC warnings. - - * editfns.c (Fuser_uid, Fuser_real_uid): Copy values returned by - geteuid and getuid into EMACS_INT to avoid GCC warnings. - - * dired.c (Ffile_attributes): Fix last change. - -2007-01-12 Eli Zaretskii - - * dired.c (Ffile_attributes): Copy some members of `struct stat' - into int's to avoid GCC warnings about limited range of short in - arguments to FIXNUM_OVERFLOW_P. - -2007-01-12 YAMAMOTO Mitsuharu - - * macmenu.c (HAVE_DIALOGS): Define if TARGET_API_MAC_CARBON. - (mac_handle_dialog_event, install_dialog_event_handler) - (create_and_show_dialog) [TARGET_API_MAC_CARBON]: New functions. - (DIALOG_LEFT_MARGIN, DIALOG_TOP_MARGIN, DIALOG_RIGHT_MARGIN) - (DIALOG_BOTTOM_MARGIN, DIALOG_MIN_INNER_WIDTH) - (DIALOG_MAX_INNER_WIDTH, DIALOG_BUTTON_BUTTON_HORIZONTAL_SPACE) - (DIALOG_BUTTON_BUTTON_VERTICAL_SPACE, DIALOG_BUTTON_MIN_WIDTH) - (DIALOG_TEXT_MIN_HEIGHT, DIALOG_TEXT_BUTTONS_VERTICAL_SPACE) - (DIALOG_ICON_WIDTH, DIALOG_ICON_HEIGHT, DIALOG_ICON_LEFT_MARGIN) - (DIALOG_ICON_TOP_MARGIN) [TARGET_API_MAC_CARBON]: New macros. - (mac_dialog) [TARGET_API_MAC_CARBON]: Remove function. - (mac_dialog_show) [TARGET_API_MAC_CARBON]: Use create_and_show_dialog. - - * macterm.c (x_free_frame_resources) [USE_CG_DRAWING]: - Call mac_prepare_for_quickdraw. - (quit_char, make_ctrl_char) [TARGET_API_MAC_CARBON]: Move externs - outside #ifdef MAC_OSX. - (mac_quit_char_key_p) [TARGET_API_MAC_CARBON]: Move function - outside #ifdef MAC_OSX. - (mac_check_bundle) [MAC_OSX]: Remove unused function. - - * macterm.h (mac_quit_char_key_p): Move extern outside #ifdef MAC_OSX. - (HOURGLASS_WIDTH, HOURGLASS_HEIGHT): Parenthesize definitions. - -2007-01-11 Jan Dj,Ad(Brv - - * alloc.c (BLOCK_INPUT_ALLOC, UNBLOCK_INPUT_ALLOC): Use pthread_equal, - block/unblock SIGIO. - -2007-01-10 Stefan Monnier - - * editfns.c (Fformat): Allow integer-format to work with floats of size - larger than most-positive-fixnum (but still smaller than MAXINT). - - * dired.c (Ffile_attributes): Use floats for large uids/gids. - -2007-01-09 Eli Zaretskii - - * emacs.c (syms_of_emacs) : Doc fix. - -2007-01-09 YAMAMOTO Mitsuharu - - * callproc.c (Fcall_process_region) [HAVE_MKSTEMP]: Add BLOCK_INPUT - around mkstemp. - - * image.c (XDrawLine) [MAC_OS]: Remove macro. - (XCreateGC_pixmap) [!HAVE_NTGUI]: Likewise. - (x_disable_image) [!HAVE_NTGUI]: Use XCreateGC instead of - XCreateGC_pixmap. - - * macgui.h (Display): Typedef to opaque type. - - * macmenu.c (mac_dialog_modal_filter) [MAC_OSX]: New function. - (Fx_popup_dialog) [MAC_OSX]: Use standard alert if called from - Fmessage_box, Fyes_or_no_p, or Fy_or_n_p. - [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030] (menu_quit_handler): - Use mac_quit_char_key_p. - - * macterm.c (XDrawLine): Rename from mac_draw_line_to_pixmap. - (XCreateGC): Change type of 2nd argument to void *. - (XFreeGC) [USE_CG_DRAWING && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: - Fix last change. - (mac_to_emacs_modifiers): Change return type to int. - [USE_CARBON_EVENTS] (mac_event_to_emacs_modifiers): Likewise. - (mac_mapped_modifiers): New function. - (XTread_socket): Use it. - [USE_TSM] (mac_handle_text_input_event): Likewise. - (do_window_update) [USE_CG_DRAWING]: Call mac_prepare_for_quickdraw. - (mac_quit_char_modifiers, mac_quit_char_keycode) [MAC_OSX]: - Remove variables. - (mac_determine_quit_char_modifiers, init_quit_char_handler) - [MAC_OSX]: Remove functions. - (make_ctrl_char) [MAC_OSX]: Add extern. - (mac_quit_char_key_p) [MAC_OSX]: New function. - (mac_initialize) [MAC_OSX]: Don't call init_quit_char_handler. - - * macterm.h (FONT_MAX_WIDTH): Remove unused macro. - (XCreateGC): Change type in extern. - (XDrawLine): Rename from mac_draw_line_to_pixmap. - (mac_quit_char_key_p) [MAC_OSX]: Add extern. - -2007-01-08 Jan Dj,Ad(Brv - - * keyboard.c (init_keyboard): Initialize interrupt_input_blocked and - interrupt_input_pending. - - * xterm.h (x_display_info): New: net_supported_atoms, - nr_net_supported_atoms and net_supported_window. - - * xterm.c (last_user_time): New variable. - (handle_one_xevent): Set last_user_time from events that have Time. - Set net_supported_window to 0 when reparented. - (wm_supports): New function. - (do_ewmh_fullscreen): Use wm_supports to check for _NET_WM_STATE. - (x_term_init): Initialize net_supported_atoms, nr_net_supported_atoms - and net_supported_window. - -2007-01-05 Kim F. Storm - - * indent.c (Fvertical_motion): Fix it overshoot check for overlay - strings without embedded newlines immediately followed by newline. - -2007-01-05 YAMAMOTO Mitsuharu - - * editfns.c (Fformat_time_string, Fdecode_time, Fencode_time) - (Fcurrent_time_string, Fcurrent_time_zone): Add BLOCK_INPUT around - gmtime/localtime/emacs_memftimeu/mktime. - - * mac.c (Fmac_set_file_creator): Use MAC_EMACS_CREATOR_CODE - instead of 'EMAx'. - [!MAC_OSX] (sys_open, sys_creat, sys_fopen): Likewise. - - * macgui.h (struct _XGC) [USE_CG_DRAWING - && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: New members cg_fore_color - and cg_back_color. - - * macmenu.c (Vshow_help_function) [TARGET_API_MAC_CARBON]: Add extern. - (restore_show_help_function, menu_target_item_handler) - [TARGET_API_MAC_CARBON]: New functions. - (install_menu_target_item_handler): New function. - (add_menu_item) [TARGET_API_MAC_CARBON]: Set help string as menu - item property. - - * macterm.c (CG_SET_FILL_COLOR_MAYBE_WITH_CGCOLOR) - (CG_SET_FILL_COLOR_WITH_GC_FOREGROUND) - (CG_SET_FILL_COLOR_WITH_GC_BACKGROUND) - (CG_SET_STROKE_COLOR_MAYBE_WITH_CGCOLOR) - (CG_SET_STROKE_COLOR_WITH_GC_FOREGROUND): New macros. - (mac_cg_color_space_rgb) [USE_CG_DRAWING]: New variable. - (mac_cg_color_black) [USE_CG_DRAWING - && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: New variable. - (init_cg_color) [USE_CG_DRAWING]: New function. - (mac_draw_line, mac_draw_rectangle) [USE_CG_DRAWING]: Use - CG_SET_STROKE_COLOR_WITH_GC_FOREGROUND instead of CG_SET_STROKE_COLOR. - (mac_erase_rectangle, mac_clear_window, mac_draw_cg_image) - (mac_fill_rectangle, mac_draw_image_string_cg) [USE_CG_DRAWING]: - Use CG_SET_FILL_COLOR_WITH_GC_FOREGROUND or - CG_SET_FILL_COLOR_WITH_GC_BACKGROUND instead of CG_SET_FILL_COLOR. - (mac_draw_string_common) [MAC_OSX && USE_ATSUI]: Likewise. - (XCreateGC, XFreeGC, XSetForeground, XSetBackground) [USE_CG_DRAWING - && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: Use gc->cg_fore_color and/or - gc->cg_back_color. - (install_drag_handler, remove_drag_handler): Make extern. - (install_menu_target_item_handler): Add extern. - (install_window_handler): Call install_menu_target_item_handler. - [MAC_OS8] (main): Use MAC_EMACS_CREATOR_CODE instead of 'EMAx'. - (mac_initialize) [USE_CG_DRAWING]: Call init_cg_color. - - * macterm.h (MAC_EMACS_CREATOR_CODE): New enumerator. - -2007-01-04 Juanma Barranquero - - * window.c (Fwindow_end): Fix use of >= operator. - -2007-01-03 Richard Stallman - - * window.c (Fwindow_end): Check BUF_OVERLAY_MODIFF like BUF_MODIFF. - -2007-01-02 Jan Dj,Ad(Brv - - * gtkutil.h (xg_menu_item_cb_data_): Remove highlight_id and - unhighlight_id. - - * gtkutil.c (menuitem_highlight_callback): Invoked widget is the - parent of the menu item. Get menu item widget from event. - (xg_create_one_menuitem, xg_update_menu_item): highlight_id and - unhighlight_id has been removed. - (create_menus): Connect enter/leave-notify-event to the menu instead - of individual items. - -2006-12-31 Jan Dj,Ad(Brv - - * gtkutil.c (update_frame_tool_bar): Connect create-menu-proxy with - xg_tool_bar_menu_proxy. - (xg_tool_bar_menu_proxy): New function. - (xg_tool_bar_proxy_callback): New function. - -2006-12-30 Jan Dj,Ad(Brv - - * gtkutil.c (xg_tool_bar_button_cb): Save last modifier on widget. - (xg_tool_bar_callback): Remove check for button. - (update_frame_tool_bar): Put an event box in the tool bar and a button - in the event box. Attach enter/leave-notify-event to the event box. - -2006-12-30 Richard Stallman - - * keymap.c (Fdefine_key): Doc fix. - -2006-12-29 Kim F. Storm - - * frame.h (struct frame): New member minimize_tool_bar_window_p. - - * xdisp.c (auto_resize_tool_bars_p): Replace with ... - (Vauto_resize_tool_bars): ... this. - (syms_of_xdisp): DEFVAR_LISP and initialize it. Update doc string - to describe new value `grow-only', and use of C-l. - (display_tool_bar_line): Only use default face for border below - toolbar if not grow-only (to get acceptable visual appearence). - Explicitly set visible_height for empty toolbar lines. - (redisplay_tool_bar): Handle `grow-only' setting. Check and clear - minimize_tool_bar_window_p flag. - - * window.c (Frecenter): Set minimize_tool_bar_window_p flag - when called without arg to redraw with minimum toolbar height. - Update doc string. - -2006-12-29 Jason Rumney - - * s/ms-w32.h (tzname): Do not define in msvc8. - (utime): Do not define in msvc8. - - * regex.c (regerror): Change parameter name err_code. - -2006-12-26 Richard Stallman - - * search.c (Fsearch_forward): Doc fix. - - * callint.c (Finteractive): Doc fix. - -2006-12-25 Kim F. Storm - - * s/ms-w32.h (BROKEN_DATAGRAM_SOCKETS): Define it. - -2006-12-23 Eli Zaretskii - - * keyboard.c (some_mouse_moved): Fix last change. - -2006-12-22 Eli Zaretskii - - * callproc.c (syms_of_callproc) : Doc fix. - -2006-12-22 Mark Davies - - * m/amdx86-64.h, m/hp800.h: Add support for NetBSD. - * m/sh3el.h: New file. - -2006-12-22 Eli Zaretskii - - * makefile.w32-in (emacs, temacs): Depend on stamp_BLD instead of - $(BLD). - ($(OBJ0) $(OBJ1) $(WIN32OBJ)): New dependency on stamp_BLD. - (bootstrap-temacs): Pass $(XMFLAGS) to sub-make. - ($(OBJ0) $(OBJ1) $(WIN32OBJ)): Add lastfile.$(O) and firstfile.$(O). - (clean): Delete stamp_BLD. - -2006-12-22 YAMAMOTO Mitsuharu - - * macfns.c (mac_update_title_bar) [TARGET_API_MAC_CARBON]: - Call mac_update_proxy_icon also when buffer modification flag changed. - [TARGET_API_MAC_CARBON] (mac_update_proxy_icon): Don't update alias, - but compare FSRef/FSSpec of resolved alias. - -2006-12-21 Kim F. Storm - - * w32.c (_sys_wait_accept): Fix handle leak. - -2006-12-20 Jan Dj,Ad(Brv - - * sound.c: Include if ALSA_SUBDIR_INCLUDE is - defined. - -2006-12-20 Kim F. Storm - - * s/ms-w32.h (BROKEN_NON_BLOCKING_CONNECT): Define it. - -2006-12-19 Juanma Barranquero - - * keyboard.c (syms_of_keyboard) : - * mac.c (Fmac_code_convert_string): - * search.c (Fsearch_forward): Doc fixes. - -2006-12-19 Kim F. Storm - - Rework 2006-12-04 change. A SIGUSR1 (SIGUSR2) signal now generates - a sigusr1 event instead of [signal usr1] sequence, and signal events - are now supposed to be handled via special-event-map. - - * keyboard.c (kbd_buffer_store_event_hold): Undo 2006-12-04 change. - (make_lispy_event): Don't generate Qsignal prefix for code 0. - Abort if signal code is unknown. - (store_user_signal_events): Don't make Qsignal prefix (code 0). - (Qsignal): Move declaration back to process.c. - (syms_of_keyboard): Don't intern or staticpro it here. - - * process.c (Qsignal): Declare here. - (syms_of_process): Intern or staticpro it. - - * emacs.c (main): Rename user signals to sigusr1 and sigusr2. - - * .gdbinit: Pass on SIGUSR1 and SIGUSR2 to Emacs. - -2006-12-19 Juanma Barranquero - - * buffer.c (syms_of_buffer) : - : Doc fixes. - -2006-12-17 Richard Stallman - - * fileio.c (Fread_file_name_internal): Pass Vread_file_name_predicate - to Ffile_name_completion. - - * dired.c (file_name_completion): New arg PREDICATE. Some cleanup. - (Ffile_name_completion): New arg PREDICATE. - -2006-12-17 Juanma Barranquero - - * buffer.c (Fkill_buffer): Doc fix. - (syms_of_buffer) : Doc fix. - -2006-12-16 Juanma Barranquero - - * minibuf.c (Ftry_completion): Check that obarray buckets are symbols. - -2006-12-16 Eli Zaretskii - - * w32fns.c (w32-window-exists-p): New function. - (syms_of_w32fns): Defsubr it. - - * prefix-args.c [STDC_HEADERS]: Include stdlib.h. - -2006-12-16 Juanma Barranquero - - * minibuf.c (Ftry_completion): Use `check_obarray' if ALIST is a vector. - -2006-12-15 Eli Zaretskii - - * emacs.c (USAGE3): Clarify documentation of --color. - -2006-12-15 YAMAMOTO Mitsuharu - - * mac.c (wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]: - New variable. - (ENABLE_WAKEUP_FROM_RNE, DISABLE_WAKEUP_FROM_RNE): New macros. - [!MAC_OSX] (select): Use them. - [MAC_OSX] (select_and_poll_event, sys_select): Likewise. - (mac_wakeup_from_rne) [TARGET_API_MAC_CARBON]: New function. - - * macfns.c (mac_atsu_font_face_attributes) [USE_ATSUI]: Add extern. - (Fmac_atsu_font_face_attributes) [USE_ATSUI]: New function. - (syms_of_macfns) [USE_ATSUI]: Defsubr it. - - * macselect.c [TARGET_API_MAC_CARBON] (mac_do_receive_drag): - Use mac_wakeup_from_rne instead of mac_post_mouse_moved_event. - - * macterm.c (mac_query_char_extents) [USE_ATSUI]: Don't call - ATSUGetGlyphBounds if not necessary. - (Vmac_atsu_font_table) [USE_ATSUI]: Remove variable. - (syms_of_macterm) [USE_ATSUI]: Don't defvar it. - (fm_get_style_from_font, atsu_find_font_from_family_name) - (atsu_find_font_family_name, mac_atsu_font_face_attributes) - [USE_ATSUI]: New functions. - (init_font_name_table) [USE_ATSUI]: Use atsu_find_font_family_name. - (mac_load_query_font) [USE_ATSUI]: Use atsu_find_font_from_family_name. - Don't get metrics for Latin-1 right half characters. - (mac_load_query_font): Don't load font if space width is not positive. - [TARGET_API_MAC_CARBON] (mac_store_event_ref_as_apple_event): - Use mac_wakeup_from_rne instead of mac_post_mouse_moved_event. - (XTread_socket): Call SelectWindow when unfocused frame is clicked. - - * macterm.h (mac_wakeup_from_rne) [TARGET_API_MAC_CARBON]: Add extern. - -2006-12-15 Kim F. Storm - - * keyboard.c (ignore_mouse_drag_p): New global var. - (some_mouse_moved): Return 0 if it is non-zero. - (make_lispy_event): Generate click event on mouse up if - ignore_mouse_drag_p is non-zero, even if mouse moved. - Clear ignore_mouse_drag_p on mouse down/up. - - * xdisp.c (redisplay_window): Set ignore_mouse_drag_p if tool-bar - is resized to avoid generating a mouse drag event. - -2006-12-14 Juanma Barranquero - - * w32fns.c (w32_wnd_proc): Force non-tooltip frames to respect the - minimum tracking size. Remove non-working old hack to do the same. - -2006-12-14 YAMAMOTO Mitsuharu - - * emacs.c (handle_user_signal): Move function to keyboard.c. - (main): Use add_user_signal for SIGUSR1 and SIGUSR2. - - * keyboard.c (make_lispy_event): Use find_user_signal_name. - (read_avail_input): Store pending user signal events. - (struct user_signal_info): New struct. - (user_signals): New variable. - (add_user_signal, store_user_signal_events) - (find_user_signal_name): New functions. - (handle_user_signal): Move function from emacs.c. Don't store - USER_SIGNAL_EVENT here, but increment number of pending signals. - - * keyboard.h (add_user_signals): Add extern. - -2006-12-11 Juanma Barranquero - - * buffer.c (syms_of_buffer) : - : - : Doc fixes. - - * xdisp.c (syms_of_xdisp) : Doc fix. - -2006-12-10 Kim F. Storm - - * xdisp.c (show_mouse_face): Never use text cursor in tool-bar. - -2006-12-10 Juanma Barranquero - - * abbrev.c (syms_of_abbrev) : - * buffer.c (syms_of_buffer) : - * keymap.c (Flookup_key): - * lread.c (Feval_buffer, Feval_region): - * macterm.c (syms_of_macterm) : - : - * marker.c (Fmarker_insertion_type): - * minibuf.c (syms_of_minibuf) : - * msdos.c (syms_of_msdos) : - * w32term.c (syms_of_w32term) : - : - * xdisp.c (format-mode-line): - * xterm.c (syms_of_xterm) : - : Doc fixes. - -2006-12-10 Andreas Schwab - - * systime.h (EMACS_GET_TIME): Remove check for - HAVE_STRUCT_TIMEZONE which is never defined. - -2006-12-10 Alan Mackenzie - - * syntax.c (Fpartial_parse_sexp): Correct Docco: Elt 8 of the - result is now neither the last elt nor optional for OLDSTATE. - -2006-12-09 Eli Zaretskii - - * process.c (Fsignal_process): Doc fix. Use XFLOAT_DATA to - extract the process ID from a Lisp float. - -2006-12-09 Chong Yidong - - * xterm.c (XTframe_raise_lower): Comment out _NET_ACTIVE_WINDOW code. - -2006-12-08 Eli Zaretskii - - * frame.h (PIX_TYPE): Redefine as `unsigned long', for 64-bit - platforms where long is 64-bit. - - * msdos.h (PIX_TYPE): Redefine as `unsigned long'. - -2006-12-08 NAKAJI Hiroyuki (tiny change) - - * m/amdx86-64.h: Add support for Solaris 10 on x86-64. - -2006-12-08 Kenichi Handa - - * xterm.c (x_query_font): Use xstricmp instead off strcasecmp. - -2006-12-08 Juanma Barranquero - - * emacs.c (syms_of_emacs) : Doc fix. - -2006-12-07 Kim F. Storm - - * process.c (parse_signal): Use xstricmp instead of strcasecmp. - (Fsignal_process): Don't use strncasecmp. - -2006-12-05 Glenn Morris - - * abbrev.c (Qforce): New Lisp_Object. - (Fdefine_abbrev): Do not overwrite non-system abbrevs with system - abbrevs, unless 'force is applied. - (syms_of_abbrev): Add Qforce. - -2006-12-04 Kim F. Storm - - * process.c (parse_signal): Rename macro from handle_signal. - (Fsignal_process): Also accept lower-case variants of signal - names (to align with signal names generated by Emacs itself). - - * emacs.c (handle_USR1_signal, handle_USR2_signal): Replace by... - (handle_user_signal): ... this, which generates two USER_SIGNAL_EVENTs - first with code == 0 [signal] and one with code == sig number. - (main): Use it as handler for SIGUR1 and SIGUSR2. - - * keyboard.c (kbd_buffer_store_event_hold): Don't throw-on-input - if first event in [signal xxx] sequence. - (lispy_user_signals, Qusr1_signal, Qusr2_signal): Remove. - (syms_of_keyboard): Don't intern and staticpro them. - (Qsignal): Declare here. - (syms_of_keyboard): Intern and staticpro it. - (make_lispy_event): Use it. Intern symbols on the fly for other - USER_SIGNAL_EVENTs events. - - * process.c (Qsignal): Declare extern. - (syms_of_process): Don't intern/staticpro it here. - - * process.c (read_process_output): Abort if carryover < 0. - -2006-12-04 YAMAMOTO Mitsuharu - - * config.in: Regenerate. - - * fileio.c [__NetBSD__]: Don't define `unix'. - (Funix_sync, syms_of_fileio): Use `#ifdef HAVE_SYNC' instead of - `#ifdef unix'. - -2006-12-04 Glenn Morris - - * Makefile.in (version): New variable, set by configure. - (bootstrapclean, mostlyclean): Also remove emacs-${version}. - -2006-12-03 Jan Dj,Ad(Brv - - * gtkutil.c (update_frame_tool_bar): Handle modifying a toolbar item - without an image. - -2006-12-01 Eli Zaretskii - - * w32fns.c (Fw32_shell_execute): Doc fix. - -2006-11-30 Chong Yidong - - * xdisp.c (move_it_to): Correctly count tab glyphs for continued - lines ending in tab. - -2006-11-30 Jan Dj,Ad(Brv - - * xterm.c (x_raise_frame): Move setting of _NET_ACTIVE_WINDOW - property ... - (XTframe_raise_lower): ... to here. - -2006-11-30 Kenichi Handa - - * regex.c (regex_compile): Fix previous change. - -2006-11-29 Juanma Barranquero - - * sound.c (Fplay_sound_internal): Remove spurious newline in docstring. - -2006-11-28 Chong Yidong - - * config.in: Regenerate. - -2006-11-28 Kenichi Handa - - * regex.c (regex_compile): Don't call SET_LIST_BIT with a - multibyte character. - -2006-11-27 Chong Yidong - - * s/aix4-2.h: Undefine _NO_PROTO. Suggested by Joe Buehler. - -2006-11-27 Kim F. Storm - - * window.c (set_window_buffer): Refactor recent changes. - -2006-11-27 Jason Rumney - - * w32term.c (w32_msg_worker): Declare correctly. - (w32_initialize): Don't cast w32_msg_worker. - - * w32fns.c (w32_msg_worker): Define as WINAPI and arg as void pointer. - -2006-11-26 Chong Yidong - - * m/amdx86-64.h: Look for standard libs in /usr/lib64 only if that - directory exists. - -2006-11-25 Eli Zaretskii - - * w16select.c (Fw16_set_clipboard_data): Fix the call to sit_for - as per the calling sequence change on 2006-07-11. - -2006-11-25 Chong Yidong - - * window.c (set_window_buffer): Use BLOCK_INPUT. - -2006-11-24 Juanma Barranquero - - * fns.c (substring_both): Add missing address operator. - -2006-11-24 Stefan Monnier - - * fns.c: Use AREF/ASIZE macros. - (concat): Provide the full ANSI prototype. - -2006-11-24 Juanma Barranquero - - * buffer.c (syms_of_buffer) : Doc fix. - -2006-11-23 William Smith (tiny change) - - * strftime.c (HAVE_SYS__MBSTATE_T_H): Fix typo. - -2006-11-22 Alfred M. Szmidt (tiny change) - - * s/openbsd.h (LD_SWITCH_SYSTEM): Remove /usr/pkg/lib and - /usr/pkg/lib from the library search path. - (LD_SWITCH_X_DEFAULT): New macro. - -2006-11-22 Chong Yidong - - * window.c (set_window_buffer): Clear mouse highlight if it is in - this window. - -2006-11-21 Chong Yidong - - * xfaces.c (realize_default_face): Check if the default font name - exists on this display before trying to use it. - -2006-11-21 Richard Stallman - - * fileio.c: Break line before &&, not after. - -2006-11-20 Eli Zaretskii - - * fns.c (concat) [!__GNUC__]: Add prototype. - -2006-11-20 Kenichi Handa - - * fileio.c (Fread_file_name_internal): Use SBYTES (not SCHARS) to - check the tailing slash of a filename. - -2006-11-20 KOBAYASHI Yasuhiro (tiny change) - - * indent.c (Fvertical_motion): Include composition in the case of - overshoot expected. - -2006-11-19 Andreas Schwab - - * xfaces.c (Fdisplay_supports_face_attributes_p): Initialize supports. - - * xmenu.c (Fx_popup_menu): Initialize selection. - -2006-11-18 Andreas Schwab - - * s/gnu-linux.h (GC_MARK_SECONDARY_STACK): Update call to mark_memory. - -2006-11-17 Tetsurou Okazaki (tiny change) - - * xterm.c (do_ewmh_fullscreen): Declare variable before XSETFRAME - to avoid gcc 2.96 error. - -2006-11-17 NIIMI Satoshi (tiny change) - - * search.c (simple_search): In the loop of backward searching, - check also the byte position against the limit. - -2006-11-14 Romain Francoise - - * minibuf.c (Fcompleting_read): Fix typo in docstring. - -2006-11-14 Kenichi Handa - - * coding.c (code_convert_region): Initialize coding->heading_ascii. - (decode_coding_string, code_convert_region): Likewise. - -2006-11-14 YAMAMOTO Mitsuharu - - * config.in: Regenerate. - - * macfns.c (Fx_display_mm_height, Fx_display_mm_width) - [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 - && MAC_OS_X_VERSION_MIN_REQUIRED == 1020]: Check if - CGDisplayScreenSize is available. - - * macmenu.c (menu_quit_handler, install_menu_quit_handler): - Replace `#ifdef HAVE_CANCELMENUTRACKING' with - `#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1030'. - (install_menu_quit_handler) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 - && MAC_OS_X_VERSION_MIN_REQUIRED == 1020]: Check if - CancelMenuTracking is available. - - * macterm.c [USE_CG_TEXT_DRAWING] (mac_draw_image_string_cg) - [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 - && MAC_OS_X_VERSION_MIN_REQUIRED == 1020]: Check if - CGContextShowGlyphsWithAdvances is available. - -2006-11-13 Jason Rumney - - * s/ms-w32.h: Define HAVE_INET_SOCKETS. - -2006-11-13 Nozomu Ando - - * alloc.c (mark_memory): New argument OFFSET. All uses changed. - Fix address calculations for case END < START. - (mark_stack): Impose Lisp_Object alignment on jmp_buf. - -2006-11-12 Juanma Barranquero - - * coding.c (Fencode_sjis_char, Fencode_big5_char): - Improve argument/docstring consistency. - - * editfns.c (Fmessage): Doc fixes. - - * process.c (syms_of_process) : Doc fix. - -2006-11-12 Chong Yidong - - * xmenu.c (popup_activated): Define outside HAVE_MENUS. - -2006-11-12 Romain Francoise - - * xselect.c (selection-coding-system): Fix docstring. - -2006-11-12 Juanma Barranquero - - * category.c (Fchar_category_set): Improve arg/docstring consistency. - - * data.c (Flogxor): - * fns.c (Frandom, Flength, Fsafe_length, Fstring_bytes) - (Fstring_equal, Fcompare_strings, Fstring_lessp, Fcopy_sequence) - (Fstring_make_unibyte): Fix typos in docstrings. - -2006-11-10 Jan Dj,Ad(Brv - - * xterm.h (struct x_display_info): Fix indentation. - - * xterm.c (do_ewmh_fullscreen, XTfullscreen_hook): New functions. - (x_check_fullscreen): Call do_ewmh_fullscreen. - (x_initialize): Set fullscreen_hook to XTfullscreen_hook. - - * frame.c (x_set_fullscreen): Call fullscreen_hook if set. - - * term.c: Define fullscreen_hook. - (syms_of_term): Initialize fullscreen_hook to NULL. - - * termhooks.h: Add fullscreen_hook. - -2006-11-08 Juanma Barranquero - - * bytecode.c (Fbyte_code): - * data.c (Fmakunbound): Use SYMBOL_CONSTANT_P macro. - -2006-11-06 Juanma Barranquero - - * lread.c (syms_of_lread): - * xsmfns.c (syms_of_xsmfns): Fix typo in docstring. - -2006-11-06 Martin Rudalics - - * macmenu.c (Fmenu_or_popup_active_p): Define outside HAVE_MENUS. - - * w32menu.c (Fmenu_or_popup_active_p): Define outside HAVE_MENUS. - Return nil if building without menus. - - * xmenu.c (Fmenu_or_popup_active_p): Define outside HAVE_MENUS. - Return nil if building without menus. - -2006-11-05 Mark Davies (tiny change) - - * s/netbsd.h (POSIX_SIGNALS): Define. - -2006-11-05 Martin Rudalics - - * macmenu.c (Fmenu_or_popup_active_p): New function. - (syms_of_macmenu): Defsubr it. - - * w32menu.c (Fmenu_or_popup_active_p): New function. - (syms_of_w32menu): Defsubr it. - (popup_activated_flag, popup_activated): Remove. - - * xdisp.c (note_mouse_highlight) [HAVE_NTGUI]: Don't bother to - check popup_activated. - - * xmenu.c (Fmenu_or_popup_active_p): New function. - (syms_of_xmenu): Defsubr it. - -2006-11-05 YAMAMOTO Mitsuharu - - * unexmacosx.c (malloc_cookie): Remove unused variable. - (region_list_head, region_list_tail, lca, nlc, infile_lc_highest_addr) - (text_seg_lowest_offset, mh, curr_header_offset, infd, outfd) - (emacs_zone, data_segment_old_fileoff, data_segment_scp) - (num_unexec_regions, unexec_regions): Make variables static. - (print_regions, find_emacs_zone_regions): Make static. - (unexec_region_info): New typedef. - (unexec_regions): Change type from vm_range_t[] to unexec_region_info[]. - All uses changed. - (unexec_regions_recorder): Subtract size of trailing null pages from - filesize. Show filesize. - (unexec_regions_merge): Don't merge if null pages of preceding region - is not too small. Use long format in printf. - (copy_segment, copy_data_segment): Show filesize. - (copy_data_segment): Write filesize bytes of region data. - Adjust filesize in segment command accordingly. - (dump_it): Use long format in printf. - -2006-11-05 Juanma Barranquero - - * dosfns.c (Finsert_startup_screen): - * fns.c (Ffeaturep, syms_of_fns): - * frame.c (syms_of_frame): Fix typos in docstrings. - - * unexcw.c (unexec): Fix typo in output message. - -2006-11-04 Ralf Angeli - - * w32fns.c (w32_createwindow): Remove code for handling -geometry - command line option and `initial-frame-alist' which is superfluous - after the last change to `w32_createwindow'. - -2006-11-04 Slawomir Nowaczyk (tiny change) - - * w32proc.c (sys_wait): Only wait for processes with fd<0. - Others should be handled by sys_select instead. Fixes problems - with (progn (start-process "" nil "ls") (call-process "ls")). - -2006-11-04 Giorgos Keramidas (tiny change) - - * xmenu.c (Fmenu_bar_open): Declare variable before BLOCK_INPUT to - avoid gcc 2.95 error. - -2006-11-04 Chong Yidong - - * gtkutil.c (update_frame_tool_bar): If icon image is invalid and - wicon is null, insert an empty button. - -2006-11-03 Jan Dj,Ad(Brv - - * xterm.c (x_raise_frame): Send _NET_ACTIVE_WINDOW when raising the - window. - -2006-11-02 Juanma Barranquero - - * emacs.c (Fkill_emacs): Fix typo in docstring. - -2006-11-02 Nozomu Ando - - * unexmacosx.c (mach_header, segment_command, vm_region, section) - [_LP64]: New defines. - (VM_REGION_BASIC_INFO_COUNT, VM_REGION_BASIC_INFO, LC_SEGMENT) - (MH_MAGIC) [_LP64]: Redefine. - (delta): Remove variable. - (curr_file_offset, pagesize): New variables. - (ROUNDUP_TO_PAGE_BOUNDARY): New macro. - (data_segment_old_fileoff): Initialize explicitly. - (print_region, unexec_regions_recorder, print_load_command_name) - (copy_segment, copy_data_segment): Use long format in printf. - (MAX_UNEXEC_REGIONS): Increase to 400. - (unexec_regions_recorder): Don't warn too many regions here. - (find_emacs_zone_regions): Warn too many regions here. - (print_load_command_name) [_LP64]: Show correct load command name. - (copy_segment, copy_data_segment): Use variable `curr_file_offset'. - Show starting virtual memory address. Don't show ending file offset. - (copy_symtab, copy_dysymtab, copy_twolevelhints): New argument DELTA. - (dump_it): Use new local variable `linkedit_delta' and pass to them. - Error if trying to handle multiple DATA segments. - (unexec): Initialize variable `pagesize'. - -2006-11-01 Juanma Barranquero - - * eval.c (Fcatch): Doc fix. - -2006-10-31 YAMAMOTO Mitsuharu - - * image.c [MAC_OS] (image_load_qt_1, xpm_scan, xpm_make_color_table_v) - (xpm_put_color_table_v, xpm_get_color_table_v, xpm_make_color_table_h) - (xpm_put_color_table_h, xpm_get_color_table_h, xpm_str_to_color_key) - (xpm_load_image): Add const qualifier to arguments. - [MAC_OS] (xpm_color_key_strings): Make static const. - - * mac.c (create_apple_event_from_event_ref) - (create_apple_event_from_drag_ref, skip_white_space, parse_comment) - (parse_include_file, parse_binding, parse_component) - (parse_resource_name, parse_value, parse_resource_line) - (xrm_merge_string_database, xrm_get_resource) - (xrm_get_preference_database): Add const qualifier to arguments. - [MAC_OSX] (sys_select): Make variable `context' static const. - - * macfns.c (mac_color_map): Make static const. - (mac_color_map_lookup): Add const qualifier to arguments. - - * macmenu.c (install_menu_quit_handler): Make variable `typesList' - static const. - (name_is_separator): Add const qualifier to arguments. - - * macselect.c (init_service_handler): Make variable `specs' static - const. - - * macterm.c (mac_create_bitmap_from_bitmap_data): Make variable - `swap_nibbles' static const. - (atsu_get_text_layout_with_text_ptr): Make variables `lengths', - `tags', `sizes', `values' static const. - (mac_draw_string_common): Make variables `context' static. - Make variables `tags', `sizes', and `values' static const. - (pcm_get_status, x_detect_focus_change, x_scroll_bar_handle_click) - (xlfdpat_create, xlfdpat_block_match_1, xlfdpat_match) - (mac_to_x_fontname, parse_x_font_name, add_mac_font_name) - (mac_do_list_fonts, is_fully_specified_xlfd, do_grow_window) - (mac_store_event_ref_as_apple_event, mac_make_rdb): Add const - qualifier to arguments. - (xlfd_scalable_fields, keycode_to_xkeysym_table) - (fn_keycode_to_keycode_table): Make static const. - (mac_load_query_font): Make variables `tags', `sizes', `values', - `types', and `selectors' static const. - (mac_handle_command_event, mac_handle_window_event): - Make variables `names' and `types' static const. - (init_command_handler, install_window_handler): Make variables - `specs*' static const. - (mac_handle_font_event, mac_handle_text_input_event) - (mac_store_service_event): Make variables `names' and `types' - const. Make variables `names_*' and `types_*' static const. - - * macterm.h (create_apple_event_from_event_ref) - (create_apple_event_from_drag_ref, xrm_merge_string_database) - (xrm_get_resource, xrm_get_preference_database): Add const - qualifier to arguments in externs. - -2006-10-31 Kenichi Handa - - * xfns.c (xic_create_xfontset): Fix previous change. - -2006-10-30 Chong Yidong - - * s/openbsd.h (LD_SWITCH_SYSTEM): Add /usr/pkg/lib and - /usr/pkg/lib to library search path. - -2006-10-29 Mark Davies (tiny change) - - * ralloc.c (relinquish): Use a long for excess space counter to - handle 64-bit case correctly. - -2006-10-29 Jeramey Crawford - - * m/amdx86-64.h: Add defines for OpenBSD x86-64. - -2006-10-29 Juanma Barranquero - - * window.c (Fdisplay_buffer): Fix typo in docstring. - -2006-10-27 Ben North (tiny change) - - * w32term.c (x_draw_glyph_string_foreground): Set background mode - to TRANSPARENT before using overstrike to simulate bold faces. - - * xfaces.c (best_matching_font): Fix logic to decide whether to - use overstriking to simulate bold-face (it was reversed). - -2006-10-23 Kim F. Storm - - * xdisp.c (remember_mouse_glyph): Do nothing if glyphs are not - initialized. - - * keyboard.c (read_char): Make an element (t . EVENT) in - unread-command-events add EVENT to the current command's key sequence. - (syms_of_keyboard) : Update doc. - -2006-10-21 Richard Stallman - - * minibuf.c (Vread_expression_map): Define here. - (Qread_expression_history): New variable. - (syms_of_minibuf): Initialize them. - (Feval_minibuffer): Use Vread_expression_map and - Qread_expression_history. - -2006-10-21 Kenichi Handa - - * xfns.c (xic_create_fontsetname): If ADSTYLE field is not a wild - card, change it to "*". - (xic_create_xfontset): Call XCreateFontSet for each single - fontname in fontsetname. - -2006-10-19 Chong Yidong - - * callint.c (callint_message): Convert to a Lisp string. - (syms_of_callint): Initialize it. - (callint_message_size): Var deleted. - (Fcall_interactively): Use Fformat instead of doprnt to construct - prompt string. - -2006-10-19 YAMAMOTO Mitsuharu - - * xdisp.c (display_mode_line): Clear enabled_p flag on mode-line row. - -2006-10-19 YAMAMOTO Mitsuharu - - * macfns.c (Vmac_carbon_version_string) [TARGET_API_MAC_CARBON]: - New variable. - (syms_of_macfns) [TARGET_API_MAC_CARBON]: Defvar it. - -2006-10-19 Jan Dj,Ad(Brv - - * xselect.c (x_handle_selection_request): If the converted_selection - is nil or XCDR (converted_selection) is nil, decline the request. - -2006-10-16 Jan Dj,Ad(Brv - - * gtkutil.c (get_utf8_string): Remove warnings with casts. - (xg_tool_bar_button_cb): Ditto. - (xg_tool_bar_callback): Ditto. - -2006-10-16 YAMAMOTO Mitsuharu - - * dispnew.c (adjust_frame_glyphs_for_frame_redisplay): Remove unused - variable ch_dim. - (adjust_frame_glyphs_for_window_redisplay): Likewise. Don't allocate - menu bar window matrices on non-X systems. - - * mac.c (Fmac_get_preference, Fmac_code_convert_string): Add GCPROs. - - * macterm.c (mac_query_char_extents): Don't return glyph ID if layout - adjustment is needed. - (mac_load_query_font): Check if width and height are positive. - -2006-10-14 Richard Stallman - - * sysdep.c (init_sys_modes): Delete DEFVAR_LISP in the wrong place. - -2006-10-13 Chong Yidong - - * xdisp.c (decode_mode_spec): Ignore %c and %l constructs in frame - title. - -2006-10-12 Chong Yidong - - * keymap.c (Fkey_binding): Check Lisp_Object types before doing - XCAR and XINT. - -2006-10-12 Romain Francoise - - * image.c (xbm_read_bitmap_data): Delete extra semicolon. - -2006-10-10 Stefan Monnier - - * eval.c: Include xterm.h for x_fully_uncatch_errors and friends. - - * dispextern.h: Declare x_create_bitmap_from_xpm_data. - - * xterm.c (x_check_expected_move): Remove unused var `count'. - - * xmenu.c (syms_of_xmenu): Use Ffset rather than Fdefalias, since - Fdefalias is not declared in any *.h file. - -2006-10-09 Chong Yidong - - * dispnew.c (sit_for): Sit forever if TIMEOUT is t. - - * keyboard.c (command_loop_1): Handle non-number values of - `minibuffer-message-timeout'. - (Fexecute_extended_command): Fix typo. - - * minibuf.c (temp_echo_area_glyphs): Sit for - `minibuffer-message-timeout' seconds. - -2006-10-08 YAMAMOTO Mitsuharu - - * macterm.c (mac_draw_image_string, mac_draw_image_string_16): - Add argument OVERSTRIKE_P. - (mac_draw_string_common, mac_draw_image_string_cg): Likewise. - Support overstrike. - (mac_draw_string, mac_draw_string_16): Remove functions. - (x_draw_glyph_string_foreground): Use overstrike when needed. - (x_draw_composite_glyph_string_foreground): Likewise. - Use mac_draw_image_string_16 instead of mac_draw_string_16. - (mac_load_query_font): Rename from XLoadQueryFont. Take argument - F instead of DPY. All uses changed. Don't save/restore font. - -2006-10-07 Ralf Angeli - - * w32fns.c (w32_createwindow): Honour left and top positions if - supplied explicitly. - -2006-10-06 Kim F. Storm - - * xdisp.c (pos_visible_p): Fix value when EOB is visible. - -2006-10-05 Chong Yidong - - * frame.c (Qinhibit_face_set_after_frame_default): New var. - (syms_of_frame): Initialize it. - (x_set_frame_parameters): Avoid resetting :font attributes to the - new-frame defaults. - -2006-10-03 Stefan Monnier - - * lisp.h (clear_regexp_cache): Declare. - - * search.c (compile_pattern): Only check `cp->syntax_table' if needed. - (compile_pattern_1): Remember `used_syntax' in `cp->syntax_table'. - (clear_regexp_cache): Only flush those regexps which depend on - a syntax-table. - - * regex.c (regex_compile): Set the new `used_syntax' bit. - - * regex.h: Remove file local variables. - (struct re_pattern_buffer): New field `used_syntax'. - -2006-10-03 Kim F. Storm - - * process.c (list_processes_1): Run sentinels before removing dead - processes. Also remove `closed' network connections. - -2006-10-01 Stefan Monnier - - * xdisp.c (handle_fontified_prop): Don't fontify at EOB. - -2006-09-30 Eli Zaretskii - - * config.in: Regenerated. - -2006-09-29 Juri Linkov - - * buffer.c (syms_of_buffer): Reorder coding systems in the - docstring of %z to the real order displayed in the modeline. - -2006-09-28 Stefan Monnier - - * keymap.c (Fdefine_key): Yet another int/Lisp_Object mixup (YAILOM). - -2006-09-26 Chong Yidong - - * indent.c (Fvertical_motion): Do move back if the Lisp string - being displayed contains newlines. - -2006-09-26 YAMAMOTO Mitsuharu - - * macterm.c (mac_compute_glyph_string_overhangs, XLoadQueryFont) - [USE_CG_DRAWING]: Call mac_prepare_for_quickdraw before QDTextBounds. - -2006-09-26 Kenichi Handa - - * keymap.c (Fsingle_key_description): For an invalid char, return - "Invalid char code NNNNN". - -2006-09-25 Chong Yidong - - * callint.c (Fcall_interactively): Doc fix. - -2006-09-25 YAMAMOTO Mitsuharu - - * macterm.c (x_underline_at_descent_line): New variable. - (syms_of_macterm): DEFVAR_BOOL it. - (x_draw_glyph_string): Use it. - (XLoadQueryFont): Calculate min_bounds.descent and max_bounds.descent. - -2006-09-25 Kenichi Handa - - * keymap.c (Fsingle_key_description): Return unique names for - generic characters. - -2006-09-24 Richard Stallman - - * search.c (compile_pattern_1): Don't BLOCK_INPUT. - -2006-09-24 Eli Zaretskii - - * makefile.w32-in ($(BLD)/fns.$(O), $(BLD)/w32proc.$(O)): - Depend on nt/inc/langinfo.h and nt/inc/nl_types.h. - - * w32proc.c (nl_langinfo): New function. - - * w32fns.c (w32-pass-alt-to-system, w32-alt-is-meta) - (w32-pass-lwindow-to-system, w32-enable-num-lock) - (w32-enable-caps-lock, w32-scroll-lock-modifier) - (w32-lwindow-modifier, w32-rwindow-modifier) - (w32-apps-modifier, w32-mouse-button-tolerance): Doc fix. - -2006-09-23 Juanma Barranquero - - * minibuf.c (Finternal_complete_buffer, Fread_minibuffer) - (Fdisplay_completion_list): Fix typos in docstrings. - -2006-09-23 Romain Francoise - - * s/gnu-linux.h (MAIL_USE_FLOCK): Check for HAVE_LIBLOCKFILE too. - -2006-09-23 Kenichi Handa - - * keymap.c (Fmap_keymap): Docstring mentions about generic character. - -2006-09-22 Stefan Monnier - - * regex.c (analyse_first): For eight-bit-control chars, mark both the - char's value and its leading byte in the fastmap. - (re_search_2): When fast-scanning without translation, be careful to - check that we only match the leading byte of a multibyte char. - - * charset.h (PREV_CHAR_BOUNDARY): Make it work from within a char's - byte sequence. - (AT_CHAR_BOUNDARY): New macro. - -2006-09-22 Kenichi Handa - - * fns.c (optimize_sub_char_table): Don't optimize a sub-char-table - whose default value is non-nil. - -2006-09-22 Jan Dj,Ad(Brv - - * gtkutil.c (xg_get_file_with_chooser): Only show C-l help for - Gtk+ versions < 2.10. - - * xfns.c (syms_of_xfns): Fix typo in help text for - x-gtk-file-dialog-help-text. - -2006-09-21 Kim F. Storm - - * fns.c (Fmemq): Refill doc string. - (Fmemql): New defun, like memq but using eql. - (syms_of_fns): Defsubr it. - -2006-09-20 Kim F. Storm - - * xdisp.c (pos_visible_p): CHARPOS < 0 means return info for - last visible glyph in window. - - * window.c (Fset_window_hscroll, Fwindow_line_height): - Doc fix. Use "off-window" instead of "off-screen". - (Fpos_visible_in_window_p): Likewise. - If POS is t, return info for last visible glyph in window. - -2006-09-19 Chong Yidong - - * search.c (struct regexp_cache): New entry syntax_table. - (compile_pattern_1): Set it. - (syms_of_search): Initialize it. - (compile_pattern): Require the syntax_table entry of the cache - element to match the current syntax table entry. - -2006-09-19 Stefan Monnier - - * window.c (Fwindow_end): Fix recent change. - -2006-09-19 Kim F. Storm - - * window.c (Fset_window_hscroll, Fpos_visible_in_window_p): - Doc fix. Use "off-screen" instead of "invisible". - (Fwindow_line_height): Make line numbers 0-based. Make line arg - optional; if nil, use current cursor row. Handle text terminals - properly. Return nil if non-interactive or pseudo-window. - -2006-09-19 Stefan Monnier - - * keymap.c: Include alloca.h if available. - (Fkey_binding): Only use AREF after checking it's a vector. - Remove unused var `window'. - -2006-09-19 YAMAMOTO Mitsuharu - - * emacs.c (shut_down_emacs) [!subprocesses]: Don't set - inhibit_sentinels. - - * mac.c [!MAC_OSX] (select): Fix argument name. - - * macmenu.c (enum mac_menu_kind, min_menu_id): New enumerator and - menu ID for Apple menu. - (menubar_selection_callback): Remove function. - (find_and_call_menu_selection): New function from xmenu.c. - (x_activate_menubar): Use it. - (set_frame_menubar): Don't use f->output_data.mac->menubar_active. - - * macterm.c (menubar_selection_callback): Remove extern. - (M_APPLE): Change to 234. - (do_apple_menu) [!TARGET_API_MAC_CARBON]: Make non-static. - (do_menu_choice): Remove function. - - * macterm.h (struct mac_output): Remove member menubar_active. - (do_menu_choice): Remove extern. - (do_apple_menu) [!TARGET_API_MAC_CARBON]: Add extern. - -2006-09-18 Jan Dj,Ad(Brv - - * xfns.c (syms_of_xfns): Rename x_gtk_show_chooser_help_text to - x_gtk_file_dialog_help_text. - - * gtkutil.c (xg_uses_old_file_dialog): Rename x-use-old-gtk-file-dialog - to x-gtk-use-old-file-dialog. - (xg_get_file_with_chooser): Rename x_gtk_show_chooser_help_text to - x_gtk_file_dialog_help_text. - - * xfns.c (syms_of_xfns): Ditto. - -2006-09-18 Kim F. Storm - - * window.c (Fwindow_line_visibility): Remove. - (Fwindow_line_height): New defun replacing it. - (syms_of_window): Defsubr it. - -2006-09-18 YAMAMOTO Mitsuharu - - * mac.c (SELECT_USE_CFSOCKET) [MAC_OSX]: Set default to 1. - [MAC_OSX] (sys_select) [SELECT_USE_CFSOCKET]: Fix pointer type. - -2006-09-17 Jay Belanger - - * gmalloc.c: - * md5.c: - * md5.h: - * strftime.c: Replace "GNU Library General Public License" by "GNU - General Public License" throughout. - -2006-09-17 Kim F. Storm - - * dispnew.c (update_text_area): Undo 2000-07-18 change. - Always redrawing whole row if line has mouse-face in it causes - excessive flickering of the mode line. - -2006-09-17 Chong Yidong - - * search.c (clear_regexp_cache): New function. - - * syntax.c (Fmodify_syntax_entry): Clear regexp cache. - -2006-09-16 Jan Dj,Ad(Brv - - * gtkutil.c (xg_get_file_with_chooser): - Check x-gtk-show-chooser-help-text before adding the help text. - - * xfns.c (syms_of_xfns): New variable: x-gtk-show-chooser-help-text. - - * gtkutil.c (get_utf8_string): Try harder to convert to UTF8. Gtk+ - will simply crash if we fail. - -2006-09-16 Richard Stallman - - * regex.c (re_compile_pattern): Set gl_state.current_syntax_table. - -2006-09-15 Kim F. Storm - - * window.c (Fwindow_line_visibility): New defun for line-move-partial. - (syms_of_window): Defsubr it. - (Fwindow_end): Use window's buffer rather than current buffer. - -2006-09-15 Jay Belanger - - * COPYING: Replace "Library Public License" by "Lesser Public - License" throughout. - -2006-09-15 David Kastrup - - * Makefile.in (keymap.o): Add "keymap.h" and "window.h" dependencies. - - * keymap.c: include "window.h". - (Fcommand_remapping): New optional POSITION argument. - (Fkey_binding): New optional POSITION argument. Completely rework - handling of mouse clicks to get the same order of keymaps as - `read-key-sequence' and heed POSITION. Also temporarily switch - buffers to location of mouse click and back. - - * keyboard.c (command_loop_1): Adjust call of `Fcommand_remapping' - for additional argument. - (parse_menu_item): Adjust call of `Fkey_binding' for additional - argument. - (read_key_sequence): If there are both `local-map' and `keymap' - text properties at some buffer position, heed both. - - * keymap.h: Declare additional optional arguments of - `Fcommand_remapping' and `Fkey_binding'. - -2006-09-15 Juanma Barranquero - - * indent.c (Fcurrent_column, Findent_to): Fix typos in docstring. - -2006-09-14 Andreas Schwab - - * print.c: Whitespace fixup. - -2006-09-14 Kim F. Storm - - * xdisp.c (produce_image_glyph): Automatically crop wide images at - right window edge so we can draw the cursor on the same row to - avoid confusing redisplay by placing the cursor outside the visible - window area. - -2006-09-13 YAMAMOTO Mitsuharu - - * xterm.c (x_initialize): Don't install Xt event timer here. - (x_timeout_atimer_activated_flag): New var. - (x_activate_timeout_atimer): New function to install Xt timer. - (x_send_scroll_bar_event, x_process_timeouts): Use it. - - * xmenu.c (x_menu_set_in_use, popup_activate_callback) - (create_and_show_popup_menu, create_and_show_dialog): Use it. - - * xterm.h (x_activate_timeout_atimer): Add prototype. - -2006-09-13 Richard Stallman - - * print.c (print_string): When printcharfun is t, - copy string contents and call strout on the copy. - - * keyboard.c (read_char): If end_time specified, don't put the - event into this_command_keys. - (read_key_sequence): If Voverriding_terminal_local_map is specified, - don't check Voverriding_local_map at all. - -2006-09-12 Stefan Monnier - - * textprop.c (Fnext_property_change, Fnext_single_property_change) - (Fprevious_property_change, Fprevious_single_property_change): - Avoid changing limit, so we can correctly catch the case where the - property is constant up to limit. - -2006-09-12 YAMAMOTO Mitsuharu - - * macfns.c (mac_window) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: - * macterm.c (XTread_socket) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: - Undo 2006-09-08 change. - -2006-09-11 Chong Yidong - - * keymap.c (Fkey_binding): Use string position for string objects. - -2006-09-11 Kim F. Storm - - * keymap.c (Fkey_binding): Fix last change. - - * editfns.c (Fmessage): Recommend using (message "%s" ...). - -2006-09-10 Chong Yidong - - * keymap.c (Fkey_binding): Check for local keymap for mouse click - events. - -2006-09-10 Kim F. Storm - - * keyboard.c (Finput_pending_p): Check Vunread_input_method_events - and Vunread_post_input_method_events. - - * dispnew.c (Fredisplay): Document return value. - -2006-09-10 Jan Dj,Ad(Brv - - * xfns.c (Fx_close_connection): Call xg_display_close when USE_GTK. - - * gtkutil.c (xg_display_close): Always change default display if needed, - check for < Gtk+ version 2.10 before calling gdk_display_close. - -2006-09-10 YAMAMOTO Mitsuharu - - * mac.c [MAC_OSX] (sys_select): Check argument `nfds' more rigidly. - Make variable `ofds' static. Remove variable `maxfd'. - - * macfns.c (Fx_file_dialog): Remove unused variable `f'. - Call check_mac. - - * macmenu.c (Vmenu_updating_frame, syms_of_macmenu): - * w32menu.c (Vmenu_updating_frame, syms_of_w32menu): - Apply 2006-09-08 change for xmenu.c. - - * xfns.c (Fx_file_dialog): Call check_x. - -2006-09-10 Kim F. Storm - - * xdisp.c (get_window_cursor_type): Use hollow cursor on - non-transparent images. - -2006-09-09 Eli Zaretskii - - * editfns.c (Fsystem_name): Mention "host" in the doc string. - (syms_of_editfns) : Likewise. - -2006-09-08 Martin Rudalics - - * xdisp.c (mouse_autoselect_window): Remove. - (Vmouse_autoselect_window): New variable. DEFVAR_LISP it. - - * dispextern.h (mouse_autoselect_window): Remove extern. - (Vmouse_autoselect_window): Add extern. - - * macterm.c (XTread_socket): Test Vmouse_autoselect_window - instead of mouse_autoselect_window. - - * msdos.c (dos_rawgetc): Likewise. - - * w32term.c (w32_read_socket): Likewise. - - * xterm.c (handle_one_xevent): Likewise. - -2006-09-08 Richard Stallman - - * xdisp.c (Vmenu_updating_frame): Define here. - (syms_of_xdisp): DEFVAR it here. - (update_menu_bar): Always return hooks_run. - Set Vmenu_updating_frame. - - * xdisp.c (redisplay_internal): Test Vinhibit_redisplay - before calculating SELECTED_FRAME. - - * xmenu.c (Vmenu_updating_frame): Don't define here. - (syms_of_xmenu): Don't DEFVAR it here. - - * xterm.c (x_error_quitter): For BadName error, just return. - - * eval.c (find_handler_clause): Give up on debugger if INPUT_BLOCKED_P. - - * casetab.c (init_casetab_once): Call set_case_table. - - * emacs.c (shut_down_emacs): Set inhibit_sentinels. - - * process.c (inhibit_sentinels): New variable. - (exec_sentinel): Test inhibit_sentinels. - (init_process): Initialize it. - - * process.h (inhibit_sentinels): Add decl. - - * search.c (looking_at_1, string_match_1, search_command): - Make syntax table's canon table point to eqv table. - -2006-09-08 Andreas Schwab - - * print.c (strout): Fix whitespace. - -2006-09-08 Kim F. Storm - - * xterm.c (x_draw_glyph_string): Fix 2006-08-24 change. - -2006-09-08 YAMAMOTO Mitsuharu - - * mac.c [!MAC_OSX]: Don't include keyboard.h. - [!MAC_OSX] (select): Try detect_input_pending before ReceiveNextEvent - in the same BLOCK_INPUT block, in case that some input has already - been read asynchronously. Pretend to be interrupted by a signal - if some input is available. - [MAC_OSX] (select_and_poll_event, sys_select): Likewise. - (SELECT_POLLING_PERIOD_USEC) [SELECT_USE_CFSOCKET]: Change to 100000. - Now used for ReceiveNextEvent timeout instead of select timeout. - (EVENT_CLASS_SOCK) [SELECT_USE_CFSOCKET]: Remove macro. - [SELECT_USE_CFSOCKET] (socket_callback): Add non-blocking connect - support. Quit event loop. - [MAC_OSX] (sys_select) [SELECT_USE_CFSOCKET]: Add non-blocking - connect support. Reuse previously allocated CFRunLoopSource. - (Fmac_process_hi_command) [TARGET_API_MAC_CARBON]: New function. - (syms_of_mac) [TARGET_API_MAC_CARBON]: Defsubr it. - - * macfns.c (mac_window) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: - Specify kWindowAsyncDragAttribute. - - * macterm.c (mac_handle_origin_change, mac_handle_size_change) - (mac_get_ideal_size): New functions. - (x_set_offset, x_set_window_size, x_make_frame_visible) - (do_zoom_window, mac_handle_window_event, XTread_socket): Use them. - (install_window_handler, mac_handle_window_event) - [USE_CARBON_EVENTS]: Handle kEventWindowGetIdealSize and - kEventWindowBoundsChanged. - (XTread_socket) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: Don't call - DragWindow. - -2006-09-07 Andreas Schwab - - * m/ibms390x.h (START_FILES, LIB_STANDARD): Override to - use lib64 instead of lib. - -2006-09-06 Stefan Monnier - - * Makefile.in: Avoid double quotes when possible. - -2006-09-06 Kenichi Handa - - * editfns.c (Fformat_time_string): Use make_unibyte_string to make - a Lisp string from the result of emacs_memftimeu call. - -2006-09-06 Kim F. Storm - - * xdisp.c (pos_visible_p): Remove exact_mode_line_heights_p arg; - so calculate heights even when pos-visible-in-window-p is called - with partially = t. Don't overshoot last_visible_y in move_it_to. - Return row height and row number in new rowh and vpos args. - (cursor_row_fully_visible_p): First line is always "fully visible". - (try_window): Don't clear matrix if vscrolled. - - * lisp.h (pos_visible_p): Update prototype. - - * window.c (Fpos_visible_in_window_p): Adapt to new pos_visible_p. - Return row height and row number for partially visible rows. - Modify return value to a 2 element list for fully visible rows and - 6 for partially visible row. - (window_scroll_pixel_based): Use pos_visible_p directly instead of - Fpos_visible_in_window_p. Fix auto vscrolling for partially - visible lines. Only vscroll backwards if already vscrolled - forwards. Unconditionally vscroll forwards if PT is first (and - only) line. Set new window start instead of scrolling at - start/end of tall line. - -2006-09-05 YAMAMOTO Mitsuharu - - * macterm.c (install_window_handler, mac_handle_window_event) - [USE_CARBON_EVENTS]: Handle kEventWindowClose. - [USE_MAC_TSM] (mac_handle_text_input_event): Set modifiers for - ASCII keystroke event. - -2006-09-04 Jan Dj,Ad(Brv - - * gtkutil.c (xg_get_file_with_chooser): Don't mention specific keys in - the file chooser message. Only call gtk_file_chooser_set_current_name - when action is SAVE. - -2006-09-04 Andreas Schwab - - * Makefile.in: Double all single and back quotes in C-style - comments to help fontifier. - -2006-09-03 Jason Rumney - - * w32.c (shutdown_handler): New function to exit cleanly on shutdown. - (globals_of_w32): Register it as a signal handler. - -2006-09-02 Juri Linkov - - * marker.c (Fmarker_position): Doc fix. - -2006-09-03 Eli Zaretskii - - * window.c (syms_of_window) : - : Doc fix. - -2006-09-02 Jan Dj,Ad(Brv - - * gtkutil.c (xg_get_file_with_chooser): Change file chooser message - for writing files. Call gtk_file_chooser_set_current_name to keep - default filename. - - * minibuf.c (Finternal_complete_buffer): Move after DEFUN:s it calls - -2006-09-02 Jindrich Makovicka (tiny change) - - * fns.c (concat) [__GNUC__]: Declare with - `__attribute__((noinline))'. - - * eval.c (apply1, call2) [__GNUC__]: Declare with - `__attribute__((noinline))'. - -2006-09-02 Stuart D. Herring - - * minibuf.c (Finternal_complete_buffer): New function. - (syms_of_minibuf): Defsubr it. - (Fread_buffer): Use it, instead of Vbuffer_alist. - -2006-09-01 Martin Rudalics - - * buffer.h (struct buffer_text): New field chars_modiff. - (CHARS_MODIFF, BUF_CHARS_MODIFF): New macros. - * buffer.c (Fbuffer_chars_modified_tick): New function returning - value of BUF_CHARS_MODIFF. - (syms_of_buffer): Defsubr it. - (Fget_buffer_create): Initialize BUF_CHARS_MODIFF. - * insdel.c (modify_region): New argument preserve_chars_modiff. - Set CHARS_MODIFF to MODIFF provided preserve_chars_modiff is zero. - (insert_1_both, insert_from_string_1, insert_from_buffer_1) - (adjust_after_replace, adjust_after_replace_noundo) - (replace_range, replace_range_2, del_range_2): Reset CHARS_MODIFF. - * lisp.h (modify_region): Add fourth argument in extern. - * casefiddle.c (casify_region): Call modify_region with fourth - argument zero to assert that CHARS_MODIFF is updated. - * editfns.c (Fsubst_char_in_region, Ftranslate_region_internal) - (Ftranspose_regions): Likewise. - * textprop.c (Fadd_text_properties, Fset_text_properties) - (Fremove_text_properties, Fremove_list_of_text_properties): - Call modify_region with fourth argument 1 to avoid that - CHARS_MODIFF is updated. - -2006-08-31 Richard Stallman - - * editfns.c (Fformat): Don't sign-extend for %o or %x. - -2006-08-29 Chong Yidong - - * indent.c (Fvertical_motion): Don't move back if we were - displaying a Lisp string, either. - -2006-08-28 Kim F. Storm - - * xdisp.c (get_window_cursor_type) [!HAVE_WINDOW_SYSTEM]: - Don't attempt to replace cursor on image glyphs. - -2006-08-28 Kenichi Handa - - * coding.c (Fdetect_coding_region, Fdetect_coding_string): - Fix docstring about ISO-2022 control characters. - -2006-08-28 Kim F. Storm - - * xdisp.c (get_window_cursor_type): Replace BOX cursor on images - with a hollow box cursor if image is larger than 32x32 (or the default - frame font if that is bigger). Replace any other cursor on images - with hollow box cursor, as redisplay doesn't support bar and hbar - cursors on images. - -2006-08-27 YAMAMOTO Mitsuharu - - * alloc.c (BLOCK_INPUT_ALLOC, UNBLOCK_INPUT_ALLOC): Undo previous - change. Move mutex lock/unlock operations inside BLOCK_INPUT. - - * dired.c (directory_files_internal_unwind, directory_files_internal) - (file_name_completion): Add BLOCK_INPUT around opendir/closedir. - - * image.c [MAC_OS] (image_load_qt_1): Use ComponentResult instead - of OSErr. - - * keyboard.c (in_sighandler): Remove variable. - (Fcurrent_idle_time): Add missing `doc:'. - (input_available_signal, init_keyboard): Undo previous change. - - * keyboard.h (in_sighandler): Remove extern. - - * mac.c (create_apple_event_from_event_ref, select) - (Fmac_get_file_creator, Fmac_get_file_type, Fmac_set_file_creator) - (Fmac_set_file_type, cfstring_create_normalized) - (mac_get_system_locale, select_and_poll_event, sys_select): - Use OSStatus instead of OSErr. - - * macfns.c [TARGET_API_MAC_CARBON] (mac_update_proxy_icon): - Don't use FRAME_FILE_NAME. Use (FS)UpdateAlias. - (Fx_create_frame): Apply 2006-07-03 for xfns.c. - - * macselect.c (get_scrap_from_symbol, clear_scrap, put_scrap_string) - (put_scrap_private_timestamp, scrap_has_target_type, get_scrap_string) - (get_scrap_private_timestamp, get_scrap_target_type_list) - (x_own_selection, x_get_foreign_selection) - (Fx_disown_selection_internal, Fx_selection_owner_p) - (Fx_selection_exists_p): Use OSStatus instead of OSErr. - - * macterm.c (mac_draw_string_common, mac_query_char_extents) - (x_iconify_frame, XLoadQueryFont, install_window_handler) - (mac_handle_command_event, init_command_handler, init_menu_bar): - Use OSStatus instead of OSErr. - (x_free_frame_resources) [TARGET_API_MAC_CARBON]: Don't use - FRAME_FILE_NAME. - (x_query_font): Apply 2006-08-04 change for xterm.c. - (Qhi_command): Rename from Qhicommand. All uses changed. - - * macterm.h (struct mac_output) [TARGET_API_MAC_CARBON]: Remove member - file_name. - (FRAME_FILE_NAME): Remove macro. - (install_window_handler, create_apple_event_from_event_ref): - Return OSStatus instead of OSErr. - -2006-08-26 Kim F. Storm - - * buffer.c (Fset_buffer_multibyte): - * editfns.c (Fcurrent_time, Fget_internal_run_time): - * macfns.c (Fxw_color_values): - * w32fns.c (Fxw_color_values): - * xfns.c (Fxw_color_values): Simplify; use list3. - - * fileio.c (Fmake_directory_internal, Fdelete_directory) - (Fdelete_file): Simplify; use list1. - (Frename_file, Fadd_name_to_file, Fmake_symbolic_link): - Simplify; remove NO_ARG_ARRAY stuff, use list2. - -2006-08-25 Richard Stallman - - * buffer.c (Fswitch_to_buffer): Fix previous change. - -2006-08-25 Kim F. Storm - - * keyboard.c (Fcurrent_idle_time): Simplify. - -2006-08-25 Richard Stallman - - * fns.c (sxhash_string): Rotate properly; don't lose bits. - -2006-08-24 Francesc Rocher - - * xdisp.c (overline_margin): New variable. - (x_produce_glyphs): Use it. - (syms_of_xdisp): DEFVAR_INT it. - - * xterm.c (x_underline_at_descent_line): New variable. - (syms_of_xterm): DEFVAR_BOOL it. - (x_draw_glyph_string): Use it. - Draw underline and overline up to the end of line if the face - extends to the end of line. - - * macterm.c: Likewise. - - * w32term.c: Likewise. - -2006-08-24 Nick Roberts - - * buffer.c (Fswitch_to_buffer): Move buffer to front of - buffer-alist if necessary. - -2006-08-22 Kim F. Storm - - * xdisp.c (update_tool_bar): Redisplay toolbar also when only - number of items changes. - -2006-08-22 Stefan Monnier - - * buffer.c (Fset_buffer_multibyte): Record proper undo entry. - -2006-08-21 Jan Dj,Ad(Brv - - * keyboard.c: Clarify difference between in_sighandler and - handling_signal. - -2006-08-21 Kim F. Storm - - * macterm.c (x_draw_stretch_glyph_string): - * w32term.c (x_draw_stretch_glyph_string): - * xterm.c (x_draw_stretch_glyph_string): It is ok to draw a - stretch glyph in left marginal areas on header and mode lines. - -2006-08-21 Kenichi Handa - - * keyboard.c (syms_of_keyboard): Docstring of - Vunread_post_input_method_events and Vunread_input_method_events - fixed. - -2006-08-20 Chong Yidong - - * keyboard.c (show_help_echo): Preserve mouse movement flag if - tracking mouse. - -2006-08-20 Richard Stallman - - * xfaces.c (load_pixmap): Add quotes in error message. - - * keyboard.c (Fcurrent_idle_time): New function. - (syms_of_keyboard): defsubr it. - -2006-08-18 Nick Roberts - - * window.c (Fset_window_fringes): Do nothing on a tty. - (Fwindow_fringes): Put ? operator after the line break. - -2006-08-16 Andreas Schwab - - * print.c (debug_output_compilation_hack): Fix return type. - -2006-08-16 Richard Stallman - - * print.c (debug_output_compilation_hack): New function. - -2006-08-16 Kenichi Handa - - * fileio.c (choose_write_coding_system): Use LF for end-of-line - in auto-saving. - -2006-08-15 Chong Yidong - - * keyboard.c (read_char): Don't change idle timer state at all if - end_time is supplied. - -2006-08-15 Kenichi Handa - - * coding.c (ONE_MORE_BYTE_CHECK_MULTIBYTE): New arg RET. If SRC - is exhausted, return with RET. - (detect_coding_emacs_mule, detect_coding_iso2022) - (detect_coding_sjis, detect_coding_big5, detect_coding_utf_8) - (detect_coding_utf_16, detect_coding_ccl): Adjusted for the above - change. - -2006-08-14 Chong Yidong - - * keyboard.c (read_char): Don't reset idle timers if a time limit - is supplied. - -2006-08-14 Kim F. Storm - - * .gdbinit (pitx): Print iterator position. - Limit stack dump in case iterator is not initialized. - -2006-08-12 Eli Zaretskii - - * frame.c (Fmouse_position, Fmouse_pixel_position) - (Fset_mouse_position, Fset_mouse_pixel_position): Doc fix. - -2006-08-11 Jan Dj,Ad(Brv - - * xselect.c (Fx_register_dnd_atom): New function. - (syms_of_xselect): Defsubr it. - (x_handle_dnd_message): Check that message_type is in - dpyinfo->x_dnd_atoms before generating lisp event. - - * xterm.h (struct x_display_info): Add x_dnd_atoms* to keep track - of drag and drop Atoms. - - * xterm.c (x_term_init): Initialize dpyinfo->x_dnd_atoms* - -2006-08-10 Jan Dj,Ad(Brv - - * keyboard.c: Define in_sighandler. - (input_available_signal): Set in_sighandler. - (init_keyboard): Initialize in_sighandler. - - * keyboard.h: Declare in_sighandler. - - * alloc.c (UNBLOCK_INPUT_ALLOC, BLOCK_INPUT_ALLOC): Use in_sighandler - to check if mutex should be locked or not. - -2006-08-09 Richard Stallman - - * keyboard.c (keyremap_step): No-op if fkey->parent = nil. - (read_key_sequence): Always start fkey.start and fkey.end at 0, - and likewise for keytran. - -2006-08-09 Kenichi Handa - - * coding.c (syms_of_coding): Improve the docstring - of file-coding-system-alist. - -2006-08-07 Andreas Schwab - - * puresize.h (BASE_PURESIZE): Increase to 1120000. - -2006-08-06 Chong Yidong - - * buffer.c (Vchange_major_mode_hook, Qchange_major_mode_hook): New vars. - (Fkill_all_local_variables): Use it. - (syms_of_buffer): Defvar it. - -2006-08-05 Eli Zaretskii - - * w32.c (w32_valid_pointer_p): New function. - - * w32.h: Add prototype for w32_valid_pointer_p. - - * alloc.c: Include w32.h. - (valid_lisp_object_p) [WINDOWSNT]: Call w32_valid_pointer_p to do - the job. - - * keyboard.c (kbd_buffer_get_event): Return Qnil when current time - is exactly equal to end_time, not only when it is past that. - -2006-08-04 Chong Yidong - - * keyboard.c (read_char): Rebalance specpdl after receiving jump. - - * process.c: Reapply 2006-08-01 change. - -2006-08-04 Eli Zaretskii - - * w32fns.c (w32_query_font): Fix last change: use stricmp. - -2006-08-04 Stefan Monnier - - * editfns.c (Fsubst_char_in_region): Redo the setup work after running - the before-change-functions since they may have altered the buffer. - -2006-08-04 Ralf Angeli - - * w32fns.c (w32_createwindow): Handle -geometry command line option - and the geometry settings in the Registry. - -2006-08-04 Kenichi Handa - - * w32fns.c (w32_query_font): Compare names by ignoring case. - - * xterm.c (x_query_font): Compare names by ignoring case. - -2006-08-03 Jason Rumney - - * w32menu.c (w32_menu_show, w32_dialog_show): Call Fsignal to quit - when no option selected. - -2006-08-03 Chong Yidong - - * process.c: Revert last change. - -2006-08-01 Kim F. Storm - - * process.c (wait_reading_process_output_unwind): New function. - Restores waiting_for_user_input_p to saved value. - (wait_reading_process_output): Unwind protect waiting_for_user_input_p - instead of save/restore old value on stack. - -2006-07-30 Thien-Thi Nguyen - - * editfns.c: Undo 2006-06-27 change. - -2006-07-29 Eli Zaretskii - - * coding.c (Ffind_operation_coding_system): Revert the change from - 2006-05-29. - - * alloc.c [WINDOWSNT]: Include fcntl.h, to fix last change. - -2006-07-28 Richard Stallman - - * xfaces.c (lookup_named_face, Fdisplay_supports_face_attributes_p): - Add conditional aborts for clarity. - - * xdisp.c (update_menu_bar): New arg HOOKS_RUN. Callers changed. - Used to avoid running the hooks over and over for each frame. - (prepare_menu_bars): Pass value from update_menu_bar - as HOOKS_RUN of next call. - - * keyboard.c (safe_run_hooks_1): Don't crash if Vrun_hooks is nil. - -2006-07-28 Kim F. Storm - - * alloc.c (valid_pointer_p): New function (from valid_lisp_object_p). - (valid_lisp_object_p): Use it to check for valid SUBRP obj. - -2006-07-26 Chong Yidong - - * keyboard.c (read_char): New arg END_TIME specifying timeout. - All callers changed. Turn off echoing if END_TIME is non-NULL. - (kbd_buffer_get_event): New arg END_TIME. - - * lread.c (read_filtered_event): New arg SECONDS to wait until. - (Fread_char, Fread_event, Fread_char_exclusive): New arg SECONDS. - - * lisp.h: Update read-char, read-event, and read_filtered_event - prototypes. - - * keyboard.h: Include systime.h. Update read_char prototype. - -2006-07-25 YAMAMOTO Mitsuharu - - * alloc.c (find_string_data_in_pure): New function. - (make_pure_string): Use it to reuse existing string data if possible. - - * puresize.h (BASE_PURESIZE): Decrease to 1102000. - -2006-07-22 Stefan Monnier - - * keymap.c (Fdefine_key): If the key binding definition looks like an - XEmacs-style key sequence, convert it to Emacs's format. - -2006-07-22 Ralf Angeli - - * w32fns.c (w32_createwindow): If `left' and/or `top' frame - parameters are bound to some values, use that instead of - CW_USEDEFAULT. - -2006-07-21 Eli Zaretskii - - * w32.c (convert_time): Use explicit long double constants to - ensure long double arithmetics is used throughout. - -2006-07-20 YAMAMOTO Mitsuharu - - * alloc.c (pure_bytes_used_lisp, pure_bytes_used_non_lisp): New vars. - (init_alloc_once): Initialize them. - (pure_alloc): Allocate non-Lisp objects from the end of pure storage - without alignment. - - * puresize.h (BASE_PURESIZE): Decrease to 1141000. - -2006-07-18 Francis Litterio - - * w32term.c (x_calc_absolute_position): Fix frame positioning - with negative X/Y coordinates. - -2006-07-18 Dan Nicolaescu - - * xterm.c (x_connection_closed, x_error_quitter): Mark as NO_RETURN. - - * textprop.c (text_read_only): Likewise. - - * lread.c (end_of_file_error): Likewise. - - * lisp.h (circular_list_error, memory_full, buffer_memory_full): - Likewise. - - * eval.c (unwind_to_catch): Likewise. - - * buffer.h (buffer_slot_type_mismatch): Likewise. - -2006-07-18 Kim F. Storm - - Cleanup Fsignal calls that never returns; now only use it for Qquit. - - * eval.c (xsignal): New func. Like Fsignal, but marked no-return. - (xsignal0, xsignal1, xsignal2, xsignal3): New no-return functions. - (signal_error): New no-return function (from xfaces.c). - (Fthrow): Use xsignal2 instead of Fsignal + abort. - (error): Use xsignal1 instead of Fsignal + abort. - (FletX, Flet, grow_specpdl): Use signal_error. - (Feval, Ffuncall, funcall_lambda): Use xsignal1, xsignal2. - - * alloc.c (buffer_memory_full, memory_full): Use xsignal. Remove loop. - (list1): New function. - - * lisp.h (list1): Add EXFUN. - (xsignal, xsignal0, xsignal1, xsignal2, xsignal3, signal_error): - Add prototypes. Mark them as no-return. - - * buffer.c (Fbuffer_local_value, Fbarf_if_buffer_read_only): - Use xsignal1. - - * callint.c (check_mark): Use xsignal0. - - * casefiddle.c (casify_object): wrong_type_argument is no-return. - - * cmds.c (Fforward_char, Fdelete_char): Use xsignal0. - - * coding.c (Fcheck_coding_system): Use xsignal1. Remove loop. - (Fdefine_coding_system_internal): Use xsignal1. - - * data.c (circular_list_error): Use xsignal. - (wrong_type_argument): Use xsignal2. Don't care about return value. - (args_out_of_range, args_out_of_range_3): Use xsignal2, xsignal3. - Remove loop around Fsignal. - (indirect_variable, Fsymbol_value, set_internal, Fdefault_value) - (indirect_function, Findirect_function, Fstring_to_number) - (Fmakunbound, Ffmakunbound, Fsymbol_function, Ffset): Use xsignal1. - (arith_driver, float_arith_driver, Frem, Fmod, arith_error): - Use xsignal0. - - * doc.c (Fdocumentation): Use xsignal1. - - * editfns.c (region_limit, Fget_internal_run_time): Use xsignal0. - - * fileio.c (report_file_error): Use xsignal. - (barf_or_query_if_file_exists, Fcopy_file, Fdelete_file) - (Finsert_file_contents): Use xsignal2. - (syms_of_fileio): Use list2, list3. - - * floatfns.c (arith_error, range_error, domain_error): Use xsignal2. - (range_error2, domain_error2): Use xsignal3. - (rounding_driver, fmod_float): Use xsignal0. - (float_error): Use xsignal1. - (matherr): Use xsignal. - - * fns.c (Flength): wrong_type_argument is no-return. - (hashfn_user_defined, Fmake_hash_table): Use signal_error. - (Fmd5): Use xsignal1. - - * frame.c (x_set_line_spacing, x_set_screen_gamma): Use signal_error. - - * keyboard.c (recursive_edit_1): Use xsignal1. - - * keymap.c (Fmap_keymap): Use xsignal1. - - * lread.c (Fload): Use xsignal2, signal_error. - (end_of_file_error): Use xsignal0, xsignal1. - (read0): Use xsignal1. - (invalid_syntax): New error function marked no-return. - (read_integer, read1, read_list): Use it. - - * macselect.c (x_get_local_selection): Use signal_error. - - * msdos.c (Fmsdos_set_mouse_buttons): Use xsignal2. - - * search.c (compile_pattern_1): Use xsignal1. - (signal_failure): Remove (was only called once). - (search_command): Use xsignal1 instead of signal_failure. - - * syntax.c (scan_lists): Use xsignal3. - - * textprop.c (text_read_only): Use xsignal0, xsignal1. - - * unexsol.c (unexec): Use xsignal. - - * window.c (window_scroll_pixel_based, window_scroll_line_based): - Use xsignal0. - - * xfaces.c (signal_error): Move to eval.c. - (resolve_face_name): Use xsignal1. - - * xfns.c (x_decode_color): Use signal_error. - - * xselect.c (x_get_local_selection, copy_multiple_data) - (x_get_window_property_as_lisp_data) - (lisp_data_to_selection_data, CHECK_CUT_BUFFER) - (Fx_get_cut_buffer_internal): Use signal_error. - -2006-07-18 YAMAMOTO Mitsuharu - - * macterm.c (XTread_socket): Undo previous change. - -2006-07-18 YAMAMOTO Mitsuharu - - * macterm.c (keycode_to_xkeysym): Remove function. All uses now - directly lookup keycode_to_xkeysym_table. - [USE_MAC_TSM] (mac_handle_text_input_event): Don't construct - ASCII_KEYSTROKE_EVENT for non-zero keycode_to_xkeysym_table entries. - (XTread_socket): Use character codes to construct keypad key events. - (mac_initialize_display_info) [MAC_OSX]: Use CGDisplaySamplesPerPixel. - (x_delete_display): Apply 2006-07-04 change for xterm.c. - -2006-07-17 Richard Stallman - - * keyboard.c (Vcommand_error_function): New variable. - (syms_of_keyboard): Defvar it. - (cmd_error_internal): Simplify, and handle Vcommand_error_function. - - * dispnew.c (init_display): Mention DISPLAY as well as TERM in err msg. - -2006-07-17 Kim F. Storm - - * xdisp.c (handle_single_display_spec): Ensure the right value of - it->position is saved by push_it. - (pop_it): Restore it->object for GET_FROM_BUFFER and GET_FROM_STRING. - (reseat_1): Don't setup it->object twice. - (set_iterator_to_next): No need to set it->object after pop_it. - (move_it_to): Explicitly check to see if last move reached to_charpos. - -2006-07-17 Thien-Thi Nguyen - - * xdisp.c (display_mode_line): Preserve match data. - -2006-07-14 Kim F. Storm - - * w32.c (pfn_WSACreateEvent, pfn_WSACloseEvent): New func ptrs. - (init_winsock): Load them. Use ws2_32.dll. - (sys_listen): Undo last change. Just set FILE_LISTEN flag. - (sys_accept): Undo last change. Instead, set child status to - STATUS_READ_ACKNOWLEDGED and reset char_avail event so next - sys_select will wakeup the reader thread. - (_sys_wait_accept): New function used by reader thread to wait for - an incoming connection on a server socket. - - * w32.h (_sys_read_ahead, _sys_wait_accept): Add prototypes. - - * w32proc.c (reader_thread): Use _sys_wait_accept to wait on a - server socket (FILE_LISTEN flag). - -2006-07-14 Jan Dj,Ad(Brv - - * sound.c (alsa_init): Call snd_pcm_close after successful snd_pcm_open. - -2006-07-14 Kim F. Storm - - * w32.c: Fix high cpu load for server sockets. - (pfn_WSAEventSelect): New function ptr. - (init_winsock): Load it. - (sys_listen): Set FILE_LISTEN flag. Set event mask for socket's - char_avail event object to FD_ACCEPT. - (sys_accept): Check FILE_LISTEN flag. Set event mask on new - socket's char_avail event object to FD_READ|FD_CLOSE. - - * w32.h (FILE_LISTEN): New filedesc flag value. - -2006-07-13 Kim F. Storm - - * bytecode.c (Fbyte_code): Use CAR, CDR for Bcar, Bcdr. - Use CAR_SAFE, CDR_SAFE for Bcar_safe, Bcdr_safe. - Simplify loops and use CAR for Bnth and Belt. - - * data.c (Findirect_function): Optimize for no indirection. - - * eval.c (Fthrow): Remove loop around Fsignal. - (Feval, Fapply, Ffuncall): Optimize for no function indirection. - Use original function name in all signaled errors. - Simplify Fsignal calls (no return). - (funcall_lambda): Simplify Fsignal calls (no return). - -2006-07-13 Andreas Schwab - - * syntax.c (scan_sexps_forward): Use EMACS_INT for out_bytepos and - out_charpos. - -2006-07-13 Kenichi Handa - - * editfns.c (Fformat): Fix calculation of text property positions - of format string. - -2006-07-12 Kim F. Storm - - * lisp.h (CHECK_TYPE): New macro for generic type checking. - (CAR_SAFE, CDR_SAFE): New macros. - (ARRAYP, CHECK_ARRAY): New macros. - (CHECK_VECTOR_OR_STRING, CHECK_SUBR): New macros. - (CHECK_WINDOW_CONFIGURATION): New macro. - (CHECK_LIST_CONS, CHECK_LIST_END): New checks for list traversal. - (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST) - (CHECK_STRING, CHECK_STRING_CAR, CHECK_CONS, CHECK_SYMBOL) - (CHECK_CHAR_TABLE, CHECK_VECTOR, CHECK_VECTOR_OR_CHAR_TABLE) - (CHECK_BUFFER, CHECK_WINDOW, CHECK_LIVE_WINDOW, CHECK_PROCESS) - (CHECK_NUMBER, CHECK_NATNUM, CHECK_MARKER, CHECK_OVERLAY) - (CHECK_NUMBER_COERCE_MARKER, CHECK_FLOAT, CHECK_NUMBER_OR_FLOAT) - (CHECK_NUMBER_OR_FLOAT_COERCE_MARKER): Use CHECK_TYPE. - - * category.h (CHECK_CATEGORY, CHECK_CATEGORY_SET): - * frame.h (CHECK_FRAME, CHECK_LIVE_FRAME): Use CHECK_TYPE. - - * callint.c (Fcall_interactively): - * casefiddle.c (casify_object): - * editfns.c (general_insert_function): - * fns.c (Flength, Felt, Ffillarray): - * data.c (Fcar, Fcdr): Remove loop around wrong_type_argument. - - * data.c (wrong_type_argument): Remove loop around Fsignal. - (Farrayp, Fsequencep): Use ARRAYP. - (Fcar): Use CAR. - (Fcar_safe): Use CAR_SAFE. - (Fcdr): Use CDR. - (Fcdr_safe): Use CDR_SAFE. - (Fsetcar, Fsetcdr): Use CHECK_CONS. - (Fsubr_arity, Fsubr_name): Use CHECK_SUBR. - (Faset): Use CHECK_ARRAY. - - * fns.c (Felt): Use CHECK_ARRAY. - (concat): Use CHECK_NUMBER. - (Fsubstring, substring_both): Use CHECK_VECTOR_OR_STRING. - (Fmemq): Use CHECK_LIST. - (Fassq, Fassoc, Frassq, Frassoc): Use CAR. - (assq_no_quit): Use CAR_SAFE. - (Fnthcdr, Fmember, Fdelq, Fdelete, Fnreverse, Fnconc): - Use CHECK_LIST_CONS. - (Freverse, Fplist_get, Flax_plist_get): Use CHECK_LIST_END. - - * bytecode.c (Fbyte_code): Use CHECK_VECTOR. - - * casetab.c (check_case_table): - * category.c (check_category_table): - * marker.c (Fcopy_marker): - * syntax.c (check_syntax_table): - * xfaces.c (load_pixmap): Use CHECK_TYPE. - - * fns.c (Fcopy_sequence, concat): - * fringe.c (Fdefine_fringe_bitmap): - * lread.c (check_obarray): Cleanup wrong_type_argument use. - - * keyboard.c (access_keymap_keyremap): Use ARRAYP. - - * keymap.c (Fdefine_key, Flookup_key): - * macros.c (Fstart_kbd_macro): Use CHECK_VECTOR_OR_STRING. - - * mac.c (Fmac_get_preference): Use CHECK_LIST_END. - - * search.c (Fset_match_data): Use CHECK_LIST. - - * sunfns.c (sun_item_create): Use CHECK_LIST_CONS. - - * window.c (Fwindow_configuration_frame, Fset_window_configuration): - (compare_window_configurations): Use CHECK_WINDOW_CONFIGURATION. - -2006-07-12 YAMAMOTO Mitsuharu - - * Makefile.in (dired.o, editfns.o, fileio.o): Depend on blockinput.h. - - * dired.c: Include blockinput.h. - (Ffile_attributes): Add BLOCK_INPUT around getpwuid/getgrgid. - - * editfns.c: Include blockinput.h. - (Fuser_login_name, Fuser_full_name): Add BLOCK_INPUT around - getpwuid/getpwnam. - - * fileio.c: Include blockinput.h. - (Fexpand_file_name, search_embedded_absfilename): Add BLOCK_INPUT - around getpwnam. - (search_embedded_absfilename): Remove spurious xfree. - -2006-07-11 Kim F. Storm - - * dispnew.c (sit_for): Reduce number of args from 5 to 3. - Now just one TIMEOUT arg that can be a Lisp float or Lisp int. - Combine args DISPLAY and INITIAL_DISPLAY into one arg DO_DISPLAY. - Signal error if TIMEOUT is not a number. - Undo 2006-06-14 change for non-preemptive display if TIMEOUT < 0. - The rework of sit_for args also fixes several incorrect Qt args - which should have been 1. - (Fredisplay): Pass 1 instead of Qt to swallow_events and - detect_input_pending_run_timers. - - * lisp.h (sit_for): Update prototype. - (Fredisplay): Add EXFUN. - - * dispextern.h (sit_for): Remove prototype. - - * callint.c (Fcall_interactively): - * minibuf.c (temp_echo_area_glyphs): - * keyboard.c (command_loop_1, read_char, Fexecute_extended_command): - * fileio.c (Fdo_auto_save): Update/simplify sit_for calls. - -2006-07-11 Stefan Monnier - - * syntax.c (forw_comment): Also use EMACS_INT for buffer positions. - -2006-07-11 Kim F. Storm - - * dispnew.c (Fredisplay): Add FORCE argument to force redisplay when - input is available. Fix test for redisplay_dont_pause non-nil. - Specbind redisplay-dont-pause to t if FORCE non-nil. - -2006-07-10 Chong Yidong - - * puresize.h (BASE_PURESIZE): Increment to 1211000. - - * dispnew.c (Fredisplay): New function, equivalent to (sit-for 0). - (Fsit_for): Function deleted. - - * keyboard.c (command_loop_1, Fexecute_extended_command): - Call sit_for instead of Fsit_for. - - * minibuf.c (temp_echo_area_glyphs): Likewise. - -2006-07-09 Stefan Monnier - - * syntax.c (Fforward_comment): Revert the reversion. - (back_comment, scan_lists): Also use EMACS_INT for buffer positions. - -2006-07-09 John Paul Wallington - - * syntax.c (Fforward_comment): Revert previous change. - -2006-07-09 Kim F. Storm - - * window.c (Fforce_window_update): Doc fix. - -2006-07-08 Stephen Gildea - - * fileio.c (do_auto_save_make_dir): Make the auto-save-list-file - directory unreadable for better user privacy. - -2006-07-07 Stefan Monnier - - * syntax.c (Fforward_comment): Fix int-32 vs EMACS_INT-64 mixup. - - * lread.c (read_filtered_event): Remove `register' qualifier because it - causes compilation problem with gcc-4.0.2-20051125 on amd64. - (readevalloop): Remove unused var `bpos'. - Yet another int/Lisp_Object mixup (YAILOM). - -2006-07-07 Eli Zaretskii - - * keyboard.c (Fexecute_extended_command): Mention the argument - PREFIXARG in the doc string. - -2006-07-07 Kim F. Storm - - * fringe.c (Fdefine_fringe_bitmap): Doc fix. - -2006-07-05 Chong Yidong - - * insdel.c (prepare_to_modify_buffer): For an indirect buffer, do - clash detection using the base buffer. - - * puresize.h (BASE_PURESIZE): Increment to 1210500. - -2006-07-04 Kim F. Storm - - * xterm.c (x_delete_display): Don't free or derefence NULL pointers. - -2006-07-04 Kenichi Handa - - * fontset.c (Fset_overriding_fontspec_internal): Check if we need - to update Voverriding_fontspec_alist. - -2006-07-03 Richard Stallman - - * xfns.c (Fx_create_frame): Move unwind_create_frame setup down. - - * xfaces.c (Fface_attribute_relative_p): Doc fix. - - * textprop.c (Fget_char_property_and_overlay): Doc fix. - - * eval.c (Fdefvaralias): Doc fix. - -2006-07-03 Kim F. Storm - - * dispnew.c (sit_for): Fix preempt condition. - -2006-07-02 Stefan Monnier - - * lread.c (read_filtered_event): Treat select-window just like - switch-frame. - -2006-07-02 Kim F. Storm - - * xdisp.c (display_tool_bar_line): Skip glyphs which are too big - to ever fit the tool-bar, - (MAX_FRAME_TOOL_BAR_HEIGHT): New macro. - (tool_bar_lines_needed): Use unused mode-line row as temp_row. - (redisplay_tool_bar): Only clear desired matrix if we actually - change the tool-bar window height. Only try to make the tool-bar - window bigger if there is actually room for it. - -2006-06-30 Ralf Angeli - - * w32term.c (x_make_frame_visible): Use SystemParametersInfo with - SPI_GETWORKAREA to find the dimensions of the screen work area, - and adjust vertical position of the frame in order to avoid being - covered by the task bar. - - * w32fns.c (w32_createwindow): Use CW_USEDEFAULT instead of - f->left_pos and SH_SHOW instead of f->top_pos in the call to - CreateWindow. Record the actual position in f->left_pos and - f->top_pos. - -2006-06-30 John Paul Wallington - - * w32console.c (syms_of_ntterm) : - Doc fix - default value has changed. - -2006-06-28 YAMAMOTO Mitsuharu - - * mac.c [!TARGET_API_MAC_CARBON]: Don't include FixMath.h or Scrap.h. - - * macfns.c (Fx_create_frame): Apply 2006-06-24 change for xfns.c. - - * macgui.h (USE_MAC_TSM) [TARGET_API_MAC_CARBON]: Set default to 1. - - * macterm.c (Qeql): Add extern. - (x_set_mouse_pixel_position) [MAC_OSX]: Use CGWarpMouseCursorPosition. - (fm_style_face_attributes_alist) [USE_ATSUI]: New variable. - (syms_of_macterm) [USE_ATSUI]: Initialize and staticpro it. - Change keys of Vmac_atsu_font_table from strings to numbers. - (fm_style_to_face_attributes) [USE_ATSUI]: New function. - (init_font_name_table) [USE_ATSUI]: Use it. - (saved_ts_script_language_on_focus) [USE_MAC_TSM]: New variable. - (syms_of_macterm) [USE_MAC_TSM]: Initialize and staticpro it. - [USE_MAC_TSM] (mac_tsm_resume): Restore script and language codes - only when saved_ts_script_language_on_focus coincides with - Vmac_ts_script_language_on_focus. - [USE_MAC_TSM] (mac_tsm_suspend): Save value of - Vmac_ts_script_language_on_focus to saved_ts_script_language_on_focus. - (XTread_socket) [USE_MAC_TSM]: Add Mac OS Classic support. - [USE_MAC_TSM] (mac_handle_text_input_event, init_tsm): Likewise. - -2006-06-27 Chong Yidong - - * editfns.c (Fdelete_field, Ffield_string, Ffield_beginning) - (Ffield_string_no_properties, Ffield_end): Mention - args-out-of-range error condition in docstring. - -2006-06-27 Kim F. Storm - - * xdisp.c (handle_composition_prop): Set stop_charpos before push_it. - -2006-06-25 Kim F. Storm - - * s/gnu-linux.h (SIGNALS_VIA_CHARACTERS): Define for Linux kernel - version 2.4 and later. - -2006-06-24 Chong Yidong - - * xfns.c (Fx_create_frame): Set font parameter directly instead of - using x_default_parameter, since x_get_args clears the parm alist. - -2006-06-24 Eli Zaretskii - - * dired.c (directory_files_internal) [WINDOWSNT]: Find files - case-insensitively. - -2006-06-24 Aidan Kehoe - - * lread.c (read_escape): When an unknown Unicode code point is - encountered as a string or character escape, signal an error. - -2006-06-23 Kim F. Storm - - * .gdbinit (pitx): Dump iterator stack. - - * xdisp.c (handle_composition_prop): Push iterator on stack. - (set_iterator_to_next): Pop iterator at end of composition. - -2006-06-23 Martin Rudalics - - * fileio.c (Frename_file) [DOS_NT]: Don't try to move directory to - itself on DOS_NT platforms, if the old and new names are identical - but for the letter-case. - -2006-06-21 Kim F. Storm - - * dispextern.h (struct it): Add `position' member to iterator stack. - Rename `pos' member to `current'. Rearrange and add comments. - - * xdisp.c (handle_stop): Set it->ignore_overlay_strings_at_pos_p - if we get any overlays. - (set_cursor_from_row): Don't clobber `end' if we rescan from - start_string. - (push_it, pop_it): Save it->position. - -2006-06-19 Richard Stallman - - * window.c (size_window): New arg FIRST_ONLY. All callers changed. - (adjust_window_trailing_edge): Specially compute FIRST_PARALLEL - for the case of a top-level window and the following minibuffer. - Don't exit because of no `next' when there is a parent. - Use the FIRST_ONLY feature when resizing following windows. - - * syntax.c (init_syntax_once): Give most control chars' syntax Spunct. - -2006-06-17 Kim F. Storm - - * dispnew.c (update_frame): Check for input pending on entry. - (update_window, update_frame_1): Break loop if input is detected. - -2006-06-16 Francis Litterio - - * xterm.c (x_check_expected_move, handle_one_xevent) - (x_set_offset, x_check_fullscreen): Extensive changes to make - frame positioning deterministic under X. - - * xterm.h (x_output): Add members left_before_move and - top_before_move. Removed members expected_left and expected_top. - -2006-06-16 Kim F. Storm - - * dispextern.h (struct it): Add union to iterator stack to save - image, composition, and stretch specific paramters. - - * xdisp.c (next_overlay_string): Fix assert. - (push_it, pop_it): Handle composition and stretch specific values. - Only handle it->slice in image (for now). - (back_to_previous_visible_line_start): Continue search if newline is - part of a compisition. Simplify. - (reseat_1): Set it->object to buffer. - (set_iterator_to_next): Set it->object to string or buffer, when - setting it->method to GET_FROM_STRING or GET_FROM_BUFFER. - (next_element_from_composition): Set it->object to buffer if not - from string. - (set_cursor_from_row): Only save start of string if not already - done to handle multiple strings in a row. - - * .gdbinit (pitx): Show composition parameters. - (pgx, pg): New commands to print a glyph structure. - (pgi, pgn): New commands to print specific/next glyph. - (pgrowx, pgrow): New commands to print all glyphs in a row. - -2006-06-16 YAMAMOTO Mitsuharu - - * macfns.c (Fx_display_mm_height, Fx_display_mm_width) - [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: Use CGDisplayScreenSize. - - * macterm.c (do_app_resume, do_app_suspend): Remove functions. - (mac_tsm_resume, mac_tsm_suspend) [USE_MAC_TSM]: New functions. - (mac_handle_window_event, XTread_socket) [USE_MAC_TSM]: Use them. - (Vmac_ts_script_language_on_focus) [USE_MAC_TSM]: New variable. - (syms_of_macterm) [USE_MAC_TSM]: Defvar it. - (saved_ts_language, saved_ts_component) [USE_MAC_TSM]: New variables. - (mac_initialize_display_info) [MAC_OSX]: Use Quartz Display - Services functions to get size of main display in pixels. - -2006-06-14 Chong Yidong - - * xdisp.c (back_to_previous_visible_line_start): - Reset it->continuation_lines_width. - -2006-06-14 Richard Stallman - - * eval.c (Fdefconst): Mark variable as risky. - - * callproc.c (Fcall_process): Doc fix. - - * window.c (adjust_window_trailing_edge): Don't break out of the loop - because there's no next window, if there are parallel windows. - Do break out when WINDOW is nil. - -2006-06-14 Kim F. Storm - - * dispextern.h (IT_STACK_SIZE): New macro specifying size of - iterator stack (instead of hardcoded number). Increase from 2 to - 4 to make room for propertized overlay strings before and after a - display string, image or composition. - (struct it): Add image_id and method members to iterator stack. - - * xdisp.c (init_from_display_pos): Don't set it->method and - overlay_string_index after pop_it. Add asserts. - (handle_stop): Look for overlay strings around a display string, - image, or composition. Handle properties on those strings. - (next_overlay_string): Don't set string, pos or method after pop_it. - (get_overlay_strings_1): Split from get_overlay_strings; don't - modify it if no overlay strings are found. - (get_overlay_strings): Use get_overlay_strings_1. Always set - it->string and it->method. - (push_it): Push it->image_id and it->method. Push it->object - instead of it->string if method is GET_FROM_IMAGE. - (pop_it): Pop it->image_id and it->method. Ppo it->object - instead of it->string if method is GET_FROM_IMAGE. - Reset it->current.string_pos if popped it->string is nil. - (reseat_1): Remove comment dated 19 May 2003. It expressed doubt - whether a given change was correct; but the change is correct. - Clear it->string_from_display_prop_p. - (set_iterator_to_next): Rely on it->method and it->image_id from - iterator stack, instead of setting them explicitly after pop_it. - - * dispnew.c (sit_for): Undo 2006-06-01 change. Instead, a - negative time forces redisplay even when input is available. - (Fsit_for): Doc fix. - -2006-06-13 Kim F. Storm - - * dispnew.c: Modify preemptive redisplay to be based on periodic - checks for input. - (PERIODIC_PREEMPTION_CHECKING): Define to 1 iff EMACS_HAS_USECS. - (Vredisplay_preemption_period): New variable. - (syms_of_display): DEFVAR_LISP and initialize it. - (preemption_period, preemption_next_check): New variables. - (update_frame, update_single_window): Initialize them based on - Vredisplay_preemption_period if !force_p. - (update_window, update_frame_1): Use them to determine when to - check for input. - -2006-06-03 Aidan Kehoe - - * lread.c (read_escape): Provide a Unicode character escape - syntax; \u followed by exactly four or \U followed by exactly - eight hex digits in a comment or string is read as a Unicode - character with that code point. - -2006-06-09 Eli Zaretskii - - * window.c (window_scroll_pixel_based): Signal "Beginning of - buffer" when scroll-down at the beginning of an empty buffer. - -2006-06-06 YAMAMOTO Mitsuharu - - * macterm.c [USE_MAC_TSM] (mac_handle_text_input_event): - Exclude 0x7f from ASCII range. - -2006-06-05 Jason Rumney - - * w32term.c (w32_set_scroll_bar_thumb, x_scroll_bar_create) - (w32_set_vertical_scroll_bar, w32_scroll_bar_handle_click) - (x_scroll_bar_report_motion): Remove workarounds for - versions of Windows NT < 3.51. - [!SIF_ALL]: Remove. - (pfnSetScrollInfo, pfnGetScrollInfo): Remove. - (w32_initialize): Don't dynamically load Get/SetScrollInfo. - -2006-06-04 David Kastrup - - * dispnew.c: Mention `redisplay-dont-pause' in doc string of - `sit-for'. - -2006-06-03 YAMAMOTO Mitsuharu - - * macfns.c (x_set_icon_name): Apply 2006-06-02 change for xfns.c. - - * macgui.h (USE_MAC_TSM): Set default to 1 on Mac OS X. - - * macterm.c (tsm_document_id) [USE_MAC_TSM]: New variable. - (Qtext_input, Qupdate_active_input_area, Qunicode_for_key_event) - [USE_MAC_TSM]: Likewise. - (syms_of_macterm) [USE_MAC_TSM]: Intern and staticpro them. - (Qbefore_string) [USE_MAC_TSM]: Add extern. - (do_app_resume, do_app_suspend) [USE_MAC_TSM]: Call - ActivateTSMDocument/DeactivateTSMDocument. - (mac_store_event_ref_as_apple_event): Call mac_post_mouse_moved_event. - (mac_handle_window_event) [USE_MAC_TSM]: Handle - kEventWindowFocusAcquired/kEventWindowFocusRelinquish. - (mac_handle_text_input_event) [USE_MAC_TSM]: New function. - (install_window_handler) [USE_MAC_TSM]: Install it. Register - kEventWindowFocusAcquired/kEventWindowFocusRelinquish. - (keycode_to_xkeysym_table): Add entry for f16. - (XTread_socket) [USE_MAC_TSM]: Set/reset read_socket_inev - before/after passing keystroke event to toolbox dispatcher. - (init_tsm) [USE_MAC_TSM]: New function. - (mac_initialize) [USE_MAC_TSM]: Call it. - (Vmac_ts_active_input_overlay) [USE_MAC_TSM]: New defvar. - - * macterm.h (EVENT_PARAM_TEXT_INPUT_SEQUENCE_NUMBER): New enumerator. - -2006-06-02 John Paul Wallington - - * xfns.c (x_set_name_internal): Set icon to `text', derived from - name, when frame's icon_name isn't a string rather than only when - it is nil. - -2006-06-03 Eli Zaretskii - - * w32fns.c (x_set_icon_name): Don't use arg if it's not a string - and not nil. - -2006-06-02 Chong Yidong - - * xfns.c (x_set_icon_name): No-op if arg is non-nil and not a - string. - -2006-06-02 YAMAMOTO Mitsuharu - - * xdisp.c (next_element_from_composition): Set it->object to - it->string if composition is coming from string. - (set_cursor_from_row): Don't return 0 unless row displays a - continued line. - (dump_glyph): Dump composite glyph. - -2006-06-02 Jan Dj,Ad(Brv - - * gtkutil.c (menu_nav_ended): Check that menubar_widget is not NULL. - -2006-06-01 Richard Stallman - - * window.c (Fsplit_window): Doc fix. - -2006-06-01 Micha,Ak(Bl Cadilhac - - * process.c (deleted_pid_list): New variable to store the pids - of deleted processes. Declare it only if SIGCHLD is defined. - (init_process): Initialize it. - (syms_of_process): Staticpro it. - (Fdelete_process): Add pid of the deleted process to it. Check after - the addition and before the kill if the process is already stopped, - in which case it is deleted from the list and not killed. - (sigchld_handler): Define it only if SIGCHLD is. Search the process - that signaled Emacs in `deleted_pid_list' before `Vprocess_alist'. - Original idea by Stefan Monnier. - -2006-06-01 Kim F. Storm - - * dispnew.c (sit_for): Perform redisplay even if input is pending - when redisplay-dont-pause is non-nil. - -2006-06-01 YAMAMOTO Mitsuharu - - * macterm.c (mac_handle_visibility_change): Set buf.arg to Qnil. - (XTread_socket): Remove obsolete comment. - -2006-06-01 Jan Dj,Ad(Brv - - * xmenu.c (syms_of_xmenu): Make accelerate-menu an alias for - menu-bar-open. - -2006-06-01 Jan Dj,Ad(Brv - - * xmenu.c (Fmenu_bar_open, syms_of_xmenu): Change menu-bar-start to - menu-bar-open. - - * gtkutil.c (menu_nav_ended): Change x-menu-bar-start to menu-bar-open. - -2006-05-31 Juri Linkov - - * minibuf.c (Vhistory_add_new_input): New variable. - (read_minibuf): Use it. - (syms_of_minibuf) : New Lisp variable. - (syms_of_minibuf) : Doc fix. - -2006-05-31 Kim F. Storm - - * process.c (select_wrapper): Add wrapper around select to work around - "incomplete backtrace" bug in gdb 5.3, when emacs is stopped inside - select called from wait_reading_process_output. - -2006-05-30 Andreas Schwab - - * xmenu.c (Fmenu_bar_start): Return a value. - -2006-05-30 Richard Stallman - - * coding.c (Ffind_operation_coding_system): Doc fix. - -2006-05-30 Eli Zaretskii - - * w32term.c (x_draw_hollow_cursor): Fix last change. - -2006-05-29 Kim F. Storm - - * w32term.c (x_draw_stretch_glyph_string): Fix last change. - -2006-05-29 Eli Zaretskii - - * coding.c (Ffind_operation_coding_system): Doc fix. - -2006-05-29 YAMAMOTO Mitsuharu - - * macfns.c [USE_MAC_FONT_PANEL] (Fmac_set_font_panel_visibility): - Call mac_set_font_info_for_selection if font panel is made visible. - - * macterm.c (font_panel_shown_p) [USE_MAC_FONT_PANEL]: New variable. - (mac_font_panel_visible_p, mac_show_hide_font_panel) - [USE_MAC_FONT_PANEL]: New functions. - [USE_MAC_FONT_PANEL] (mac_set_font_info_for_selection): - Return immediately if font panel is not visible. - - * macterm.h (mac_font_panel_visible_p, mac_show_hide_font_panel): - Add externs. - -2006-05-29 Dan Nicolaescu - - * search.c (matcher_overflow): Mark as NO_RETURN. - - * xterm.c (x_connection_closed): Likewise. - - * sysdep.c (croak): Likewise. - - * sound.c (sound_perror, alsa_sound_perror): Likewise. - - * lisp.h (die, nsberror): Likewise. - -2006-05-29 Jan Dj,Ad(Brv - - * sound.c (alsa_open, alsa_configure, alsa_write): - Move assignment to err out of if-statement. - - * gtkutil.c (menu_nav_ended): New function. - (create_menus): Connect menu_nav_ended to "selection-done" to fix - grabs. - - * xmenu.c (Fmenu_bar_start): New function for USE_GTK and USE_X_TOOLKIT. - -2006-05-28 Dan Nicolaescu - - * charset.h (invalid_character): Mark as NO_RETURN. - -2006-05-29 Kenichi Handa - - * coding.c (Ffind_operation_coding_system): Call a function by - safe_call1 instead of call1. - -2006-05-28 Stefan Monnier - - * window.c (struct saved_window): Add `dedicated'. - (Fset_window_configuration, save_window_save): Save/restore the - `dedicated' flag. - -2006-05-28 Kim F. Storm - - * xdisp.c (set_cursor_from_row): If cursor cannot be set in row, - don't update w->cursor and return 0. Return 1 on success. - (try_cursor_movement): Repeat set_cursor_from_row on successive rows - until it succeeds. - - * dispextern.h (set_cursor_from_row): Update prototype. - -2006-05-28 Kim F. Storm - - * xdisp.c (get_phys_cursor_geometry): Return computed x and y through - parameters. Adjust x and width in case cursor in on a partially - visible stretch glyph on the left edge. - (erase_phys_cursor): Don't erase into left fringe/margin in case - previous cursor glyph is a partially visible stretch glyph on left. - - * dispextern.h (get_phys_cursor_geometry): Update prototype. - - * xterm.c (x_draw_stretch_glyph_string): Fix problems with invisible - cursor and erasing cursor on partially visible stretch glyph on left. - (x_draw_hollow_cursor): Compute x via get_phys_cursor_geometry. - - * macterm.c: Likewise. - - * w32term.c: Likewise. - -2006-05-27 YAMAMOTO Mitsuharu - - * macselect.c (mac_handle_apple_event): - Return errAEEventNotHandled if key binding is not found. - -2006-05-26 Eli Zaretskii - - * emacs.c (main) [PROFILING]: Enable also for __MINGW32__. - [__MINGW32__]: MinGW-specific declaration of `etext'. - - * w32heap.c (etext, edata): Remove unused definitions. - -2006-05-26 Chong Yidong - - * fileio.c (Fcopy_file): Delete argument MUSTBENEW. - Incorporate the exclusive file-opening functionality into the behavior - when OK-IF-ALREADY-EXISTS is nil. - (Frename_file): Call Fcopy_file without MUSTBENEW argument. - -2006-05-26 Jan Dj,Ad(Brv - - * sound.c (alsa_configure): Move get period/buffer_size after - setting hwparams. - -2006-05-26 Kenichi Handa - - * coding.c (Ffind_operation_coding_system): Allow (FILENAME - . BUFFER) in TARGET. - -2006-05-25 Chong Yidong - - * image.c (png_load): Don't call fclose on NULL. - -2006-05-25 Luc Teirlinck - - * fns.c (Fyes_or_no_p): - * callint.c (Fcall_interactively): Fread_from_minibuffer now takes - only seven args. - -2006-05-25 Juri Linkov - - * lisp.h (Fread_from_minibuffer): Decrement number of args. - - * minibuf.c (read_minibuf): Remove arg KEEP_ALL. Callers changed. - (Fread_from_minibuffer): Remove arg KEEP_ALL. Callers changed. - - * buffer.c (mode-line-format): Fix docstring. - -2006-05-25 Richard Stallman - - * emacs.c (main, Fdump_emacs): Don't test __linux or __linux__. - -2006-05-24 Luc Teirlinck - - * puresize.h (BASE_PURESIZE): Increase to 1210000. - -2006-05-24 Alan Mackenzie - - * lread.c (Vload_history): Enhance doc-string to say that the file - is the absolute truename of the loaded file. - - * lread.c (Vafter_load_alist): doc-string: state that an element - now has a regexp to match file names, not a file name as such. - - * lread.c (readevalloop): Call file-truename on the name for - load-history, except at preloading time. - - * lread.c (Fload): At preloading time, preserve the extension of - the filename which goes into load-history. New var hist_file_name. - - * lread.c (Fload): Do eval-after-load stuff by calling the lisp - function do-after-load-evaluation. - -2006-05-24 YAMAMOTO Mitsuharu - - * mac.c (ae_attr_table): New variable. - (syms_of_mac): Intern and staticpro its elements. - (mac_aelist_to_lisp): Also convert Apple event attributes. - (mac_ae_put_lisp): New function. - (create_apple_event_from_event_ref) [MAC_OSX]: Use typeUTF8Text. - - * macfns.c (Fx_server_version): Use gestaltSystemVersionMajor etc. - - * macselect.c (Qemacs_suspension_id): New variable. - (syms_of_macselect): Intern and staticpro it. - (struct suspended_ae_info): New struct. - (deferred_apple_events, defer_apple_events) - (Fmac_process_deferred_apple_events): Use it. - (suspended_apple_events): New variable. - (mac_handle_apple_event_1): New function. - (mac_handle_apple_event): Use it. Don't process previously - suspended events. - (cleanup_suspended_apple_events, get_suspension_id) - (cleanup_all_suspended_apple_events): New functions. - (init_apple_event_handler): Call cleanup_all_suspended_apple_events - at exit. - (Fmac_cleanup_expired_apple_events, Fmac_ae_set_reply_parameter) - (Fmac_resume_apple_event): New defuns. - (syms_of_macselect): Defsubr them. - - * macterm.c (fn_keycode_to_keycode_table, XTread_socket) [MAC_OSX]: - Fix last change. Don't map `fn' modifier if pressed with F1 ... F12. - - * macterm.h (TYPE_FILE_NAME): Change from macro to enumerator. - (KEY_EMACS_SUSPENSION_ID_ATTR): New enumerator. - (keyReplyRequestedAttr) [MAC_OS_X_VERSION_MAX_ALLOWED < 1030]: Likewise. - (gestaltSystemVersionMajor, gestaltSystemVersionMinor) - (gestaltSystemVersionBugFix) [MAC_OS_X_VERSION_MAX_ALLOWED < 1040]: - Likewise. - (typeUTF8Text, kEventParamWindowMouseLocation) - [MAC_OSX && MAC_OS_X_VERSION_MAX_ALLOWED < 1020]: Likewise. - (x_get_focus_frame, mac_ae_put_lisp): Add externs. - -2006-05-23 YAMAMOTO Mitsuharu - - * macterm.c (fn_keycode_to_xkeysym_table, convert_fn_keycode): Remove. - (fn_keycode_to_keycode_table) [MAC_OSX]: New variable. - (mac_set_unicode_keystroke_event) [TARGET_API_MAC_CARBON]: New function. - (XTread_socket) [TARGET_API_MAC_CARBON]: Use it. - (XTread_socket) [MAC_OSX]: Try 'uchr' Unicode keyboard-layout - resource to backtranslate key with modifiers. - (XTread_socket): Don't set read_socket_inev around AEProcessAppleEvent. - -2006-05-23 Jan Dj,Ad(Brv - - * xterm.c: Remove declarations already in xterm.h - - * xterm.h: Add extern declarations for x_clear_errors, - x_fully_uncatch_errors, x_catching_errors and - x_alloc_lighter_color_for_widget. Remove duplicated declarations. - -2006-05-21 Richard Stallman - - * xfaces.c (best_matching_font): Abort for best == NULL - before we start to use it. - - * buffer.c (syms_of_buffer, Fmake_overlay): Doc fixes. - -2006-05-20 Kim F. Storm - - * xfaces.c (best_matching_font): Fix crash in 2006-05-17 change. - -2006-05-20 YAMAMOTO Mitsuharu - - * macterm.c (convert_fn_keycode): Fix last change. - -2006-05-19 Eli Zaretskii - - * w32.c (init_environment): Perform the processing of environment - variables on a copy of default variables and their values, not on - the original. Simplify code that calls ExpandEnvironmentStrings - and make buf1[] and buf2[] more visible for easier debugging. - -2006-05-19 YAMAMOTO Mitsuharu - - * frame.c (x_set_border_width): Remove #ifndef MAC_OS. - - * image.c [MAC_OS] (gif_load): Allocate Lisp string first. - - * macfns.c (Fx_focus_frame): Don't check dpyinfo->x_focus_frame. - - * macterm.c (XTread_socket) [TARGET_API_MAC_CARBON && MAC_OSX]: - Forward keyUp events to toolbox_dispatcher. - - * window.c (foreach_window): Check WINDOWP (FRAME_ROOT_WINDOW (f)). - -2006-05-18 Jan Dj,Ad(Brv - - * config.in: Regenerated (HAVE_ALSA). - - * sound.c (alsa_sound_perror, alsa_open, alsa_period_size) - (alsa_configure, alsa_close, alsa_choose_format, alsa_write) - (snd_error_quiet, alsa_init): New functions. - (vox_init): Return 0 if unable to open device. - (Fplay_sound_internal): Test for alsa first and use vox (oss) as - a fallback. - (struct sound_device): Add period_size. - (wav_play, au_play): Use period_size if set. - - * Makefile.in (CFLAGS_SOUND): New flags for ALSA. - (ALL_CFLAGS): Add CFLAGS_SOUND. - -2006-05-18 Kenichi Handa - - * callproc.c (Fcall_process): Reject encoding arguments by - ascii-incompatible coding systems (e.g. utf-16). - - * coding.c (Qascii_incompatible): New variable. - (syms_of_coding): Setup Qascii_incompatible. - (setup_coding_system): Be sure to initialize coding->common_flags. - Check `ascii-incompatible' property of the coding system. - - * coding.h (CODING_ASCII_INCOMPATIBLE_MASK): New macro. - -2006-05-18 Kim F. Storm - - * xdisp.c (display_tool_bar_line): Restore entire tool-bar - geometry when backtracking in case last image doesn't fit on line. - -2006-05-18 MIYOSHI Masanori (tiny change) - - * xdisp.c (display_tool_bar_line): Don't adjust tool-bar height by - more than height of one frame default line. - -2006-05-17 Richard Stallman - - * xfaces.c (better_font_p): Any font beats no font. - (best_matching_font): Simplify based on above change. - - * buffer.c (Fprevious_overlay_change, Fnext_overlay_change): Doc fixes. - -2006-05-16 Kim F. Storm - - * xterm.c (handle_one_xevent): Check that f is not NULL before - calling x_kill_gs_process. - -2006-05-14 Richard Stallman - - * textprop.c (Fnext_single_char_property_change) - (Fprevious_single_char_property_change): Don't allow returning - value beyond LIMIT in any cases. - (Fnext_char_property_change, Fprevious_char_property_change): Doc fix. - - * intervals.c (get_local_map): Abort if POSITION outside BEGV, ZV. - -2006-05-14 Jan Dj,Ad(Brv - - * xterm.c (handle_one_xevent): Check that f is not NULL before - calling _XEditResCheckMessages. - -2006-05-14 Kim F. Storm - - * xterm.c (handle_one_xevent): Fix crash in 2006-03-24 change. - -2006-05-13 Eli Zaretskii - - * frame.c (x_set_border_width): Fix error message to say "frame", - not "window". - - * Makefile.in (SOME_MACHINE_LISP): Add fringe.elc. - -2006-05-12 Chong Yidong - - * intervals.c (set_point_both): Fix mixup before before and after - in variable names. - - * editfns.c (Fline_beginning_position): Inhibit point-motion hooks - while setting point temporarily. - -2006-05-11 Richard Stallman - - * lread.c (readevalloop): Abort if START non-nil for non-buffer input. - -2006-05-11 Kim F. Storm - - * xdisp.c (redisplay_tool_bar): Handle large tool-bar-border values. - -2006-05-11 Kenichi Handa - - * fileio.c (Finsert_file_contents): Fix for the case of IO error - while handling replace operation. - -2006-05-10 Kenichi Handa - - * xfaces.c (realize_default_face) [HAVE_X_WINDOWS]: If the font - chosen for the default face was different from the frame font, - adjust the frame font. - -2006-05-10 YAMAMOTO Mitsuharu - - * image.c (Qduration) [MAC_OS]: Undo previous change. - (syms_of_image) [MAC_OS]: Likewise. - [MAC_OS] (gif_load): Emulate Graphic Control Extension block. - - * macfns.c (x_to_mac_color): Fix shift amount change. - (mac_set_font) [USE_MAC_FONT_PANEL]: Use x_get_focus_frame. - [USE_MAC_FONT_PANEL] (Fmac_set_font_panel_visibility): Doc fix. - - * macselect.c (Vmac_service_selection) [MAC_OSX]: Rename from - Vmac_services_selection. All uses changed. - (mac_store_service_event): Rename from mac_store_services_event in - extern and calls. - - * macterm.c (Qservice) [MAC_OSX]: Rename from Qservices. All uses - changed. - [MAC_OSX] (mac_store_service_event): Rename from - mac_store_services_event. All callers changed. - [USE_MAC_FONT_PANEL] (mac_set_font_info_for_selection): Add args - FACE_ID and C. All callers changed. - (x_free_frame_resources) [USE_MAC_FONT_PANEL]: Call - mac_set_font_info_for_selection when focus frame is destroyed. - (XTread_socket): Revert to FrontNonFloatingWindow/FrontWindow. - - * macterm.h (mac_set_font_info_for_selection): Add 2nd and 3rd - args in extern. - -2006-05-09 Chong Yidong - - * keymap.c (describe_map): Avoid generating duplicate entries if - the shadowed binding has the same definition. - -2006-05-09 Kenichi Handa - - * keymap.c (push_key_description): Handle invalid character key. - -2006-05-08 Kenichi Handa - - * callproc.c (Fcall_process): Use system_eol_type for encoding - arguments if eol_type is not yet decided. - - * coding.h (system_eol_type): Extern it. - - * coding.c (setup_coding_system): For invalid coding-system, set - coding->eol_type to CODING_EOL_UNDECIDED. - (encode_coding): Cancel previous change. - (shrink_encoding_region): Likewise. - (code_convert_region1): Likewise. - (code_convert_string1): Likewise. - (code_convert_string_norecord): Likewise. - - * fileio.c (choose_write_coding_system): Use system_eol_type for - encoding if eol_type is not yet decided. - - * process.c (setup_process_coding_systems): Use system_eol_type - for encoding if eol_type is not yet decided. - (read_process_output): Likewise. - (send_process): Likewise. - -2006-05-07 Juanma Barranquero - - * minibuf.c (syms_of_minibuf) : Fix typo in doc. - -2006-05-07 YAMAMOTO Mitsuharu - - * mac.c (Fmac_clear_font_name_table): Move defun to macfns.c. - (syms_of_mac): Likewise for defsubr. - - * macfns.c (mac_set_font): New function. - (mac_frame_parm_handlers, syms_of_macfns): Replace x_set_font with it. - (mac_window) [TARGET_API_MAC_CARBON && MAC_OSX]: Specify - kWindowToolbarButtonAttribute when creating window. - (Fmac_clear_font_name_table): Move from macfns.c. - (syms_of_macfns): Likewise for defsubr. - [USE_MAC_FONT_PANEL] (Fmac_set_font_panel_visibility): New defun. - (syms_of_macfns) [USE_MAC_FONT_PANEL]: Defsubr it. - - * macgui.h (USE_MAC_FONT_PANEL): Define to 1 if USE_ATSUI is set - and build is done on Mac OS X 10.2 and later. - - * macselect.c (mac_do_receive_drag): Remove unused variable `index'. - (mac_store_services_event): Change return type in extern. - - * macterm.c (XLoadQueryFont) [USE_ATSUI]: Set font->mac_fontnum to - FMFontFamily value. - [USE_MAC_FONT_PANEL] (mac_set_font_info_for_selection): New function. - (x_new_focus_frame) [USE_MAC_FONT_PANEL]: Use it. - (QCfamily, QCweight, QCslant, Qnormal, Qbold, Qitalic): Add extern. - (QWindow) [MAC_OSX]: Likewise. - (Qfont) [USE_MAC_FONT_PANEL]: Likewise. - (Vmac_atsu_font_table) [USE_ATSUI]: New variable. - (syms_of_macterm) [USE_ATSUI]: Defvar it. - (Qtoolbar_switch_mode) [MAC_OSX]: New variable. - (Qpanel_closed, Qselection) [USE_MAC_FONT_PANEL]: Likewise. - (syms_of_macterm): Intern and staticpro them. - (init_font_name_table) [USE_ATSUI]: Add data to Vmac_atsu_font_table. - [TARGET_API_MAC_CARBON] (mac_store_event_ref_as_apple_event): - New function. - [USE_CARBON_EVENTS] (mac_handle_command_event): Use it. - [MAC_OSX] (mac_store_services_event): Likewise. - [USE_CARBON_EVENTS] (mac_handle_window_event) [MAC_OSX]: Handle - kEventWindowToolbarSwitchMode event. - (install_window_handler) [USE_CARBON_EVENTS && MAC_OSX]: Register it. - [MAC_OSX] (mac_store_services_event): Change return type to OSStatus. - [USE_MAC_FONT_PANEL] (mac_handle_font_event): New function. - (install_window_handler) [USE_MAC_FONT_PANEL]: Install it. - (XTread_socket): Select window on mouse click if x_focus_frame is NULL. - - * macterm.h (mac_set_font_info_for_selection): Add extern. - -2006-05-06 YAMAMOTO Mitsuharu - - * image.c (Qduration) [MAC_OS]: New variable. - (syms_of_image) [MAC_OS]: Intern and staticpro it. - [MAC_OS] (gif_load): Save image extension data in img->data.lisp_val. - [MAC_OSX] (image_load_quartz2d): Use cfstring_create_with_utf8_cstring - instead of cfstring_create_with_string. - -2006-05-06 Kim F. Storm - - * .gdbinit (xframe): Print frame name. - (xlist): New command to print a list (max 10 elements). - (xpr): Print lisp object of any type. - (pitx): Print it->pixel_width. - -2006-05-05 Kenichi Handa - - * xdisp.c (handle_composition_prop): Fix for the case of empty - composition component. - -2006-05-05 YAMAMOTO Mitsuharu - - * keyboard.c (make_lispy_event) [MAC_OS]: Get Apple event info - from event->arg. - - * termhooks.h (enum event_kind) [MAC_OS]: Update comment for - MAC_APPLE_EVENT. - - * macterm.h (mac_make_lispy_event_code): Remove extern. - (mac_post_mouse_moved_event): Add extern. - (mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to - `const AEDesc *' in externs. - (create_apple_event_from_drag_ref) [TARGET_API_MAC_CARBON]: New extern. - - * mac.c (mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to - `const AEDesc *'. - [TARGET_API_MAC_CARBON] (create_apple_event): New function. - [TARGET_API_MAC_CARBON] (create_apple_event_from_event_ref): Use it. - Use xrealloc instead of repeated xmalloc/xfree. - [TARGET_API_MAC_CARBON] (create_apple_event_from_drag_ref): - New function. - - * macmenu.c (restore_menu_items, cleanup_popup_menu): Return a value. - - * macselect.c: Update copyright year. - (mac_store_apple_event): Change return type to void in extern. - (mac_handle_apple_event): Don't get return value from - mac_store_apple_event. - [TARGET_API_MAC_CARBON] (Vmac_dnd_known_types): New variable. - (syms_of_macselect) [TARGET_API_MAC_CARBON]: Defvar it. - [TARGET_API_MAC_CARBON] (mac_do_track_drag): Move function from - macterm.c. Use Vmac_dnd_known_types as acceptable flavors. - [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Likewise. New - implementation using create_apple_event_from_drag_ref. - [TARGET_API_MAC_CARBON] (mac_do_track_dragUPP) - (mac_do_receive_dragUPP): Move variables from macterm.c. - (install_drag_handler, remove_drag_handler): New functions. - - * macterm.c (XTread_socket) [TARGET_API_MAC_CARBON]: Try window - path select also for proxy icon click. - [TARGET_API_MAC_CARBON] (mac_post_mouse_moved_event): New function. - [USE_TOOLKIT_SCROLL_BARS] (scroll_bar_timer_callback): Use it. - (xlfdpat_create): Remove unused label `error' and trailing sentences. - (mac_do_track_drag, mac_do_receive_drag): Move functions to macselect.c. - (mac_do_track_dragUPP, mac_do_receive_dragUPP): Move variables to - macselect.c. - (install_drag_handler, remove_drag_handler): Add extern. - (mac_store_apple_event): Change return type to void. All uses changed. - Create Lisp object from Apple event and store it into input event. - (mac_make_lispy_event_code): Remove function. - [TARGET_API_MAC_CARBON] (mac_store_drag_event): New function. - (install_window_handler): Call install_drag_handler. - (remove_window_handler): Call remove_drag_handler. - -2006-05-03 Richard Stallman - - * sound.c (Fplay_sound_internal): Dynamically allocate - current_sound_device and current_sound. - (sound_cleanup): Free them. - - * minibuf.c (read_minibuf): Don't use read_minibuf_noninteractive - when inside a keyboard macro. - -2006-05-02 Andreas Schwab - - * xmenu.c (restore_menu_items): Return a value. - -2006-05-01 Martin Rudalics - - * syntax.c (Fforward_comment): Detect generic comment at beginning of - buffer when moving backwards. - -2006-05-01 YAMAMOTO Mitsuharu - - * dispnew.c (update_window): Don't set changed_p when mode/header - line is updated. - - * xdisp.c (prepare_menu_bars) [MAC_OS]: Call mac_update_title_bar. - (get_glyph_face_and_encoding, get_char_face_and_encoding): - Don't distinguish known faces from others. - - * mac.c (mac_coerce_file_name_ptr): Try typeFSRef if coercion - through typeFileURL failed. - - * macfns.c (mac_update_title_bar): New function. - [TARGET_API_MAC_CARBON] (mac_update_proxy_icon): New function. - (show_hourglass, hide_hourglass) [USE_CG_DRAWING]: - Call mac_prepare_for_quickdraw. - - * macgui.h (USE_ATSUI): Set default to 1 if MAC_OSX is defined. - (USE_CG_DRAWING): Don't define if compiled on Mac OS X 10.1. - (enum pcm_status): New enum. - (XCHARSTRUCTROW_CHAR_VALID_P, XCHARSTRUCTROW_SET_CHAR_VALID) - (XCharStructRow): Remove. Now validity is represented by - non-negativeness of sum of ascent and descent. - (struct MacFontStruct): Change type of member `rows'. - (struct _XGC) [USE_CG_DRAWING]: Add member `clip_rects'. - - * macterm.c (mac_draw_line, mac_draw_line_to_pixmap): - Adjust endpoints of strictly horizontal/vertical lines. - (mac_set_clip_rectangles) [USE_CG_DRAWING]: Set clip_rects. - (pcm_init, pcm_get_status): New functions. - (x_per_char_metric, XLoadQueryFont): Use them instead of - XCharStructRow and related macros. - (x_draw_relief_rect): Don't adjust arguments of mac_draw_line. - (x_free_frame_resources) [TARGET_API_MAC_CARBON]: Free FRAME_FILE_NAME. - (XTread_socket) [TARGET_API_MAC_CARBON]: Handle proxy icon drag - and window path pop-up menu on title bar. - (mac_use_core_graphics) [USE_CG_DRAWING]: Set default to 1. - - * macterm.h (mac_update_title_bar): Add extern. - (struct mac_output) [TARGET_API_MAC_CARBON]: New member `file_name'. - (FRAME_FILE_NAME): New macro. - - * unexmacosx.c (unexec): Error if trying unexec from dumped executable. - -2006-04-30 Richard Stallman - - * keymap.c (Fdefine_key): Improve error message - when KEY begins with a non-prefix key. - -2006-04-30 Martin Rudalics - - * syntax.c (Fforward_comment): Don't forget to break out of the loop - when we skipped backward over a generic comment. - -2006-04-27 Nick Roberts - - * .gdbinit (pp1, pv1): Only print value as expression is now - printed out by gud-print. - (pv1): Correct doc string. - -2006-04-26 Stefan Monnier - - * keymap.c (store_in_keymap): Change `def' arg to not be `register'. - Seems to trigger a bug in gcc-amd64 4.0.2 20051125 (Red Hat 4.0.2-8): - keymap.c:895: error: address of register variable `def' requested. - -2006-04-26 Jason Rumney - - * w32term.c (construct_mouse_wheel): Handle negative coordinates. - - * w32fns.c (w32_wnd_proc) : - : Call signal_user_input in the cases - where we preempt mouse_button_timer. - -2006-04-25 Miles Bader - - * editfns.c (Ffield_beginning, find_field): Undo change of 2006-04-23. - -2006-04-24 Stefan Monnier - - * process.h: Include headers for pid_t. - -2006-04-24 Kim F. Storm - - * xdisp.c (fill_stretch_glyph_string): Set s->nchars = 1 for code which - does last_glyph=s->first_glyph+s->nchars-1, e.g. if stretch has relief. - (produce_stretch_glyph): Assume that face box height and width is - already included in stretch glyph size so caller doesn't have to - consider the extra space otherwise added (fixes problem in ses.el). - - * frame.c (x_set_font): Clear f->n_tool_bar_rows and current frame - matrices to force recalculation of tool-bar height after font change. - - * xdisp.c (tool_bar_lines_needed): New local `temp_row' for clarity. - Clear it when done, so we don't accidentally draw a second copy of - the tool-bar after resetting f->n_tool_bar_rows. - (redisplay_tool_bar): Update tool-bar-lines frame parameter whenever - we recalculate f->n_tool_bar_rows. - -2006-04-23 Lars Hansen - - * editfns.c (find_field): Fix comment. - (Ffield_beginning): Fix bug when POS is at field beginning. - -2006-04-22 Eli Zaretskii - - * puresize.h (BASE_PURESIZE): Increase to 1205000. - -2006-04-21 Kim F. Storm - - * xdisp.c (redisplay_window): Fix last change. Don't recenter if - window start is at BEGV. - - * dispextern.h (struct image): New member `corners'. - (TOP_CORNER, LEFT_CORNER, BOT_CORNER, RIGHT_CORNER): New macros. - - * image.c (four_corners_best): New arg CORNERS specifies what pixels - to look at in case image has margin. - (x_create_bitmap_mask): Pass NULL for CORNERS to four_corners_best. - (image_background, image_background_transparent) - (x_build_heuristic_mask): Pass img->corners to four_corners_best. - (gif_load): Set img->corners according to image's margin spec. - Use img->corners values directly where applicable. - Save image extension data in img->data.lisp_val. - (gif_clear_image): New function to free img->data.lisp_val. - (gif_type): Use it instead of generic x_clear_image. - (Fimage_extension_data): New defun. - (syms_of_image): Defsubr it. - -2006-04-21 John Sullivan (tiny change) - - * window.c (Fdisplay_buffer): Doc fix. - -2006-04-21 Eli Zaretskii - - * s/ms-w32.h (SYSTEM_PURESIZE_EXTRA): Increase to 25000. - -2006-04-21 YAMAMOTO Mitsuharu - - * image.c [MAC_OS] (xpm_load_image): Fill in background field - while we have ximg handy. - - * macmenu.c (restore_menu_items, save_menu_items): New functions - from xmenu.c. - (set_frame_menubar, digest_single_submenu): Apply 2006-04-18 - changes for xmenu.c. - - * macterm.c (x_per_char_metric): Return NULL if glyph width is 0. - (add_mac_font_name): New function. - (init_font_name_table): Use it. Adopt the first found font from - those having the same family name. - -2006-04-21 Nick Roberts - - * xdisp.c (note_mouse_highlight): Use build_string. - -2006-04-20 Lars Hansen - - * textprop.c (Fremove_list_of_text_properties): - Ensure modify_region is called only when buffer is modified and that - signal_after_change is allways called in that case. - - * print.c (PRINTFINISH): Call signal_after_change. - -2006-04-20 Kim F. Storm - - * xdisp.c (redisplay_window): Fix last change. - - * xdisp.c (redisplay_window): If current window start is not at the - beginning of a line, select a new window start if buffer is modified - and window start is in the modified region, but the first change is - before window start. - -2006-04-18 Richard Stallman - - * xmenu.c (restore_menu_items, save_menu_items): New fns. - (set_frame_menubar): Use save_menu_items. Save updated vector in - the frame before unwinding it. Don't use unuse_menu_items. - Don't use discard_menu_items. - (digest_single_submenu): Abort if an item is not in a pane. - (init_menu_items): Put the error check at the top. - - * keymap.c (describe_map): Make "shadowed" warning more verbose. - - * window.c (adjust_window_trailing_edge): Correctly distinguish - series vs parallel cases, even when window has no parent. - - * abbrev.c (record_symbol): New function. - (Finsert_abbrev_table_description): Sort the abbrevs alphabetically. - -2006-04-18 YAMAMOTO Mitsuharu - - * image.c (x_create_bitmap_from_data) [MAC_OS]: Don't check return - value of xmalloc. - - * mac.c (mac_coerce_file_name_ptr, mac_coerce_file_name_desc) - (create_apple_event_from_event_ref, xrm_get_preference_database) - (cfstring_create_normalized): Don't check return value of xmalloc. - - * macselect.c (get_scrap_target_type_list, defer_apple_events) - (copy_scrap_flavor_data, mac_handle_service_event): Don't check - return value of xmalloc/xrealloc. - - * macterm.c (XCreateGC, x_per_char_metric, xlfdpat_create) - (init_font_name_table, init_font_name_table, mac_do_list_fonts) - (XLoadQueryFont, mac_store_apple_event): Don't check return value - of xmalloc. - -2006-04-17 Kim F. Storm - - * window.c (coordinates_in_window): On the vertical border, - calculate the row number measured from the top of the window, not - the top of the frame. - (window_loop): Test w->dedicated with !NILP instead of EQ Qt. - (window_scroll_pixel_based): Fix off-by-one bug in 2002-12-23 change. - -2006-04-16 Eli Zaretskii - - * s/ms-w32.h (SYSTEM_PURESIZE_EXTRA): Reduce to 24000. - -2006-04-16 Romain Francoise - - * puresize.h (BASE_PURESIZE): Decrement back to 1200000. - -2006-04-16 Andreas Schwab - - * puresize.h (PURESIZE_RATIO): Reduce to 10/6. - -2006-04-15 Romain Francoise - - * puresize.h (BASE_PURESIZE): Increment to 1210000. - -2006-04-13 Micha,Ak(Bl Cadilhac - - * print.c (Fprin1_to_string): Mention in the `doc' that the - behavior is modified by `print-level' and `print-length'. - -2006-04-13 Kenichi Handa - - * coding.c (setup_coding_system): If eol-type is not yet decided - and system_eol_type is not LF, set CODING_REQUIRE_ENCODING_MASK. - If coding_system is nil, return 0. - (code_convert_region1): Even if coding_system is nil, don't skip - conversion if system_eol_type is not LF. - (code_convert_string1): Likewise. - (code_convert_string_norecord): Likewise. - -2006-04-13 Kenichi Handa - - * coding.c (setup_coding_system): Fix previous change. - (encode_coding): If eol_type is not yet decided, use system_eol_type. - (shrink_encoding_region): If eol_type is not yet decided and - system_eol_type is not LF, don't shrink. - -2006-04-13 Nick Roberts - - * xdisp.c (note_mouse_highlight): Add help echo for dragging vertical - line. - -2006-04-12 Richard Stallman - - * keyboard.c (read_key_sequence): Explicitly avoid keybuf[-1]. - - * process.c (conv_lisp_to_sockaddr): If FAMILY unknown, just return. - (Fprocess_send_eof): Abort if fail to open null device. - -2006-04-12 YAMAMOTO Mitsuharu - - * fns.c [HAVE_MENUS && MAC_OS]: Include macterm.h. - - * image.c [MAC_OS] (xpm_load_image): Add parentheses around - assignment used as truth value. Add explicit braces to avoid - ambiguous `else'. - [MAC_OS] (gif_load): Remove unused variable `gcpro1'. - - * lisp.h (syms_of_fontset, Fset_fontset_font): Put extern and - EXFUN in #ifdef HAVE_WINDOW_SYSTEM. - (syms_of_xfns, syms_of_xsmfns, syms_of_xselect, syms_of_xterm): - Put externs in #ifdef HAVE_X_WINDOWS. - (syms_of_macfns, syms_of_macselect, syms_of_macterm) - (syms_of_macmenu, syms_of_mac) [MAC_OS]: Add externs. - (init_mac_osx_environment) [MAC_OSX]: Add extern. - - * mac.c (init_process): Remove undef. - (select) [MAC_OSX]: Undefine before including sysselect.h. - (posix_pathname_to_fsspec, fsspec_to_posix_pathname) [MAC_OSX]: - Remove functions and prototypes. - (parse_value): Add parentheses around + inside shift. - (path_from_vol_dir_name): Make static. - (get_temp_dir_name): Remove unused variables `cpb' and `dir_name'. - [!MAC_OSX] (get_path_to_system_folder): Likewise. - (Fmac_get_file_creator, Fmac_get_file_type): Remove unused - variable `cCode'. - (Fmac_coerce_ae_data): Remove unused variables `fref' and `fs'. - (Fmac_get_preference): Add explicit braces to avoid ambiguous `else'. - - * macfns.c (x_to_mac_color): Remove unused variable `tail'. - (x_set_mouse_color): Remove unused variable `dpy'. - (Fx_create_frame): Remove unused variable `x_frame_count'. - (Fx_server_version): Add explicit braces to avoid ambiguous `else'. - (x_sync): Move from macterm.c. - (Fx_file_dialog): Remove unused variable `default_filter_index'. - - * macmenu.c (min_menu_id): Make element type explicit. - - * macselect.c (get_flavor_type_from_symbol): Remove unused - variable `val'. - (get_scrap_private_timestamp, x_get_foreign_selection) - (copy_scrap_flavor_data): Add explicit braces to avoid ambiguous `else'. - (Fmac_process_deferred_apple_events): Remove unused variables - `keyword', `reply', `apple_event', `count', and `err'. - - * macterm.c: Don't include gnu.h. - (x_io_error_quitter, x_draw_image_foreground_1): Remove prototypes. - (x_sync): Move to macfns.c. - [USE_CG_DRAWING] (mac_define_fringe_bitmap): Remove unused - variable `mask_bits'. - (mac_compute_glyph_string_overhangs): Avoid ambiguous `else'. - (x_draw_image_glyph_string): Remove unused variable `pixmap'. - (x_mac_to_emacs_modifiers): Remove function. - (XTset_vertical_scroll_bar, mac_handle_visibility_change) - (x_make_frame_visible, xlfdpat_create, mac_handle_command_event): - Add explicit braces to avoid ambiguous `else'. - (x_make_frame_visible): Remove unused variables `type', - `original_top', and `original_left'. - (mac_do_list_fonts, XTread_socket): Add parentheses around && within ||. - (x_load_font): Remove unused variables `full_name', and `value'. - (do_get_menus, do_init_managers, do_check_ram_size) [!MAC_OS8]: - Remove functions. - (do_zoom_window): Reorganize variables with respect to conditionals. - (init_command_handler): Remove unused variable `err'. - [MAC_OSX] (mac_check_bundle): Remove unused variable `child'. - - * macterm.h (x_set_mouse_position, x_set_mouse_pixel_position) - (x_make_frame_invisible, x_iconify_frame, x_free_frame_resources) - (x_destroy_window, x_wm_set_size_hint, x_delete_display, XFreeGC) - (do_menu_choice, have_menus_p, x_real_positions) - (x_set_menu_bar_lines, x_pixel_width, x_pixel_height, x_char_width) - (x_char_height, x_sync, x_set_tool_bar_lines, x_activate_menubar) - (free_frame_menubar): Add externs. - - * unexmacosx.c: Include config.h before using HAVE_MALLOC_MALLOC_H. - (malloc, realloc, free): Add undefs. - (read_load_commands): Remove unused variable `n' and `j'. - (copy_data_segment): Remove unused variable `r'. - - * xdisp.c (get_glyph_string_clip_rects): Add parentheses around && - within ||. Add explicit braces to avoid ambiguous `else'. - (dump_glyph_row): Remove label for `inverse_p' from legend. - - * xfaces.c (Finternal_merge_in_global_face, try_font_list): - Add explicit braces to avoid ambiguous `else'. - -2006-04-11 Micha,Ak(Bl Cadilhac - - * dispnew.c (init_display): Don't init X display if the user asked - for a non-X display. - -2006-04-12 Kenichi Handa - - * coding.c (setup_coding_system): Use system_eol_type for default - coding->eol_type. - -2006-04-11 Dan Nicolaescu - - * lisp.h (wrong_type_argument): Mark as NO_RETURN. - - * data.c (wrong_type_argument): Try to avoid compiler warnings due - to the fact the function is now marked as NO_RETURN. - -2006-04-10 Eli Zaretskii - - * s/ms-w32.h (pid_t) [_MSC_VER]: New typedef. - -2006-04-10 Romain Francoise - - * xrdb.c (gethomedir): Use xstrdup. - -2006-04-10 Andreas Schwab - - * xrdb.c (gethomedir): Make sure to always return a pointer that - can be passed to free. - -2006-04-09 Richard Stallman - - * lisp.h (Fkill_emacs): Undo previous change. - -2006-04-08 Richard Stallman - - * search.c (boyer_moore): Test ch >= 0400, not >. - -2006-04-09 Dan Nicolaescu - - * puresize.h (pure_write_error): Mark as NO_RETURN. - - * lisp.h (args_out_of_range, args_out_of_range_3) - -2006-04-08 Eli Zaretskii - - * w32fns.c (w32_wnd_proc) : Ignore mouse movements - if a menu is active on this frame. - -2006-04-08 Dan Nicolaescu - - * lisp.h (report_file_error): Mark as NO_RETURN. - -2006-04-08 Eli Zaretskii - - * alloc.c [STDC_HEADERS]: Include stddef.h. - - * lisp.h (PSEUDOVECSIZE): Fix last change. - -2006-04-08 Stefan Monnier - - * process.h (struct Lisp_Process): Replace Lisp_Objects `pid', - `raw_status_high', and `raw_status_low' with plain integers, and move - them to the end of the structure. - - * alloc.c (allocate_process): Use PSEUDOVECSIZE to initialize the - pseudovector's size field so only the Lisp_Object fields get GC'd. - - * process.c (update_status, make_process, Fdelete_process) - (Fprocess_status, list_processes_1, start_process_unwind) - (create_process, Fmake_network_process, server_accept_connection) - (wait_reading_process_output, send_process, Fprocess_running_child_p) - (process_send_signal, proc_encode_coding_system, Fprocess_send_eof) - (sigchld_handler, status_notify): Adjust to new non-Lisp fields for - `pid' and `raw_status'. - (Fprocess_id, Fsignal_process): Same, and additionally use floats when - representing PIDs that are larger than most-positive-fixnum. - - * keymap.c (describe_map): Only use XINT if we checked INTEGERP. - - * lisp.h (OFFSETOF, PSEUDOVECSIZE): New macros. - -2006-04-08 Eli Zaretskii - - * w32fns.c (Fx_show_tip): Add 3 to the 5th arg of SetWindowPos. - -2006-04-03 Paul Eggert - - * editfns.c (TM_YEAR_IN_ASCTIME_RANGE): New macro, identical to - ../lib-src/b2m.c and ../lib-src/editfns.c. - (Fcurrent_time_string): Use it. - Document that the year might not consume 4 columns if it's outside - the range 1000-9999. - Check for asctime failure. - Don't assume that the output string length is always exactly 24. - -2006-04-03 YAMAMOTO Mitsuharu - - * macterm.c (XTread_socket): Initialize variable `f' before its use. - -2006-04-03 Kenichi Handa - - * image.c: Include "charset.h" and "coding.h". - (x_find_image_file): Return an encoded file name. - -2006-04-01 Eli Zaretskii - - * configure: Regenerated. - -2006-03-31 Kenichi Handa - - * xfns.c (xg_set_icon): Delete superfluous UNGCPRO. - -2006-03-30 Dan Nicolaescu - - * xdisp.c (syms_of_xdisp): Fix variable name. - -2006-03-30 Kenichi Handa - - * xterm.c (x_term_init): Delete superfluous UNGCPRO. - -2006-03-29 Juanma Barranquero - - * keyboard.c (process_tool_bar_item): Reorder dummy args. - -2006-03-29 Stefan Monnier - - * keyboard.c (tool_bar_items): Use map_keymap. - (process_tool_bar_item): Add dummy args to fit the required interface. - -2006-03-25 Eli Zaretskii - - * .gdbinit (pr, pp, pp1, pv, pv1): Force print_output_debug_flag - to zero before calling debug_print or safe_debug_print. - - * print.c (print_output_debug_flag): New global variable. - (Fexternal_debugging_output) [WINDOWSNT]: Don't call - OutputDebugString if print_output_debug_flag is zero. - -2006-03-24 Paul Eggert - - * editfns.c (TM_YEAR_BASE): Move up, so the changes below can use it. - (Fdecode_time, Fencode_time): Use TM_YEAR_BASE instead of 1900. - (Fdecode_time): Cast tm_year to EMACS_INT. - (Fcurrent_time_string): Report an invalid time specification if - the argument is invalid. Also, check for out-of-range time stamps. - -2006-03-24 Kim F. Storm - - * xterm.c (handle_one_xevent): - * w32term.c (w32_read_socket): - * macterm.c (XTread_socket): Don't let key-press clear mouse face - on in toolbar window if mouse-highlight is an integer. - - * fns.c (sxhash_list): Include last non-nil CDR in hash. - -2006-03-24 YAMAMOTO Mitsuharu - - * macmenu.c (enum mac_menu_kind): New enum. - (min_menu_id): New variable. - (POPUP_SUBMENU_ID, MIN_POPUP_SUBMENU_ID, MIN_MENU_ID) - (MIN_SUBMENU_ID): Remove defines. All uses are replaced with - min_menu_id and enumerators in enum mac_menu_kind. - (fill_menu, dispose_menus, install_menu_quit_handler): New arg KIND. - All uses changed. Add range check for menu ID. - (fill_menubar): Add range check for menu ID. - [HAVE_CANCELMENUTRACKING] (menu_quit_handler): Check error code of - GetEventParameter. - (set_frame_menubar, mac_menu_show): Call install_menu_quit_handler - for each menu kind. - -2006-03-22 Kim F. Storm - - * xdisp.c: Undo 2006-03-21 change. - - * term.c: Define aliases for append_glyph and produce_stretch_glyph - when `static' is defined to avoid name clash with those in xdisp.c. - - * process.c (Faccept_process_output): Fix to comply with lisp - reference. Change arg "timeout" to "seconds" and allow both - integer and float value. Change arg "timeout-msec" to "millisec" - and interpret" as milliseconds rather than microseconds. Fix doc - string accordingly. - -2006-03-21 Ken Raeburn - - * xdisp.c (store_next_glyph): Rename from append_glyph. - (generate_stretch_glyph): Rename from produce_stretch_glyph. - All callers changed accordingly. - -2006-03-21 Jan Dj,Ad(Brv - - * xterm.c: x_session_initialized new variable. - (x_term_init): Use x_session_initialized to check if - x_session_initialize should be called. - (x_initialize): Initialize x_session_initialized. - -2006-03-21 Kim F. Storm - - * fringe.c (draw_fringe_bitmap): Don't calculate default overlay arrow - bitmap here, but ... - (update_window_fringes): ... here, so we can test if it has changed. - -2006-03-20 Andreas Schwab - - * dispnew.c (init_display): Check DISPLAY here. - - * emacs.c (main): Don't check here. - - * xterm.c (x_display_ok): Don't use DISPLAY env var. - -2006-03-20 Stefan Monnier - - * window.c (window_scroll_pixel_based): Yet another int/Lisp_Object - mixup (YAILOM). - -2006-03-20 Eli Zaretskii - - * emacs.c (main): Fix last change. - -2006-03-20 Kenichi Handa - - * fileio.c (Fwrite_region): Set visit_file to Qnil before GCPRO it. - - * keymap.c (map_keymap): Set tail to Qnil before GCPRO it. - - * xfns.c (xg_set_icon): Remove unnecessary GCPRO. - - * xterm.c (x_term_init): Remove unnecessary GCPRO. - -2006-03-19 Kim F. Storm - - * xdisp.c (set_cursor_from_row): Fix cursor property on overlay string, - so it doesn't associate overlay string with following glyph by default. - Allow integer property value to specify explicit number of buffer - positions associate with overlay string. - -2006-03-18 Chong Yidong - - * xterm.c (x_display_ok): Fix minor bug and compilation warnings. - -2006-03-18 Nozomu Ando - - * m/pmax.h (BROKEN_NOCOMBRELOC) [__NetBSD__]: Define. - (LIB_STANDARD, START_FILES) [__NetBSD__]: Don't define. - (START_FILES, RUN_TIME_REMAP, UNEXEC) [__NetBSD__, __OpenBSD__]: - Don't redefine. - - * m/mips.h: Don't use unexmips on NetBSD. - (LIBS_MACHINE): Move definition lower, so it doesn't use - LD_SWITCH_MACHINE, START_FILES, LIB_STANDARD, LIBS_TERMCAP, - C_SWITCH_MACHINE, and C_DEBUG_SWITCH. - - * unexelf.c [BROKEN_NOCOMBRELOC]: Include assert.h. - (unexec) [BROKEN_NOCOMBRELOC]: Handle platforms whose nocombreloc - option is broken (e.g., MIPS/NetBSD). - -2006-03-18 Craig McDaniel (tiny change) - - * sheap.c (STATIC_HEAP_SIZE): Enlarge STATIC_HEAP_SIZE to 12MB. - Remove the HAVE_X_WINDOWS conditional. - -2006-03-18 Vivek Dasmohapatra (tiny change) - - * emacs.c (main): If user asks for a display that is unavailable, - simulate -nw. - - * xterm.c (x_display_ok): New function. - - * xterm.h: Add prototype for x_display_ok. - -2006-03-18 Eli Zaretskii - - * w32fns.c (Fw32_select_font): Doc fix. - -2006-03-16 YAMAMOTO Mitsuharu - - * image.c [MAC_OS] (XPutPixel, XGetPixel) - [!WORDS_BIG_ENDIAN && USE_CG_DRAWING]: Don't use specialized - version when depth is 32. - (mac_create_cg_image_from_image) [MAC_OS && USE_CG_DRAWING]: - New function. - (prepare_image_for_display) [MAC_OS && USE_CG_DRAWING]: Use it. - (x_clear_image_1) [MAC_OS && USE_CG_DRAWING]: Release CGImage. - - * macterm.c (XCreatePixmap) [!WORDS_BIG_ENDIAN && USE_CG_DRAWING]: - Create GWorld in ARGB pixel format. - (mac_copy_area, mac_copy_area_with_mask) [USE_CG_DRAWING]: - Remove functions. - (x_draw_image_foreground) [USE_CG_DRAWING]: Use mac_draw_cg_image - instead of mac_copy_area/mac_copy_area_with_mask. - -2006-03-15 Kim F. Storm - - * xdisp.c (extend_face_to_end_of_line): Always add space glyph to - empty row. Fixes memory corruption revealed by 2006-03-02 change. - (display_tool_bar_line): Skip empty tool-bar line if HEIGHT < 0. - (tool_bar_lines_needed): Fix tool-bar display in case the tool-bar - width is exactly the same as the window width. Don't count a final - empty tool-bar line (pass HEIGHT = -1 to display_tool_bar_line). - -2006-03-15 Juanma Barranquero - - * fringe.c (w32_init_fringe, w32_reset_fringes): Revert to being - conditional on HAVE_NTGUI, not WINDOWS_NT. - -2006-03-15 YAMAMOTO Mitsuharu - - * dispextern.h (mac_init_fringe) [MAC_OS]: Add prototype. - - * fringe.c (mac_init_fringe) [MAC_OS]: New function. - - * macterm.c (mac_initialize) [USE_CG_DRAWING]: Call mac_init_fringe. - (max_fringe_bmp, fringe_bmp) [USE_CG_DRAWING]: New variables. - (mac_define_fringe_bitmap, mac_destroy_fringe_bitmap) - (mac_draw_cg_image) [USE_CG_DRAWING]: New functions. - (mac_draw_bitmap) [USE_CG_DRAWING]: Remove function. - (x_draw_fringe_bitmap) [USE_CG_DRAWING]: Use mac_draw_cg_image - instead of mac_draw_bitmap. - (x_redisplay_interface) [USE_CG_DRAWING]: Set handlers for - define_fringe_bitmap and destroy_fringe_bitmap. - -2006-03-14 Chong Yidong - - * xterm.c (x_uncatch_errors): Block input for entire function. - -2006-03-12 Jason Rumney - - * w32fns.c (Fx_create_frame): Remove call to - Qface_set_after_frame_default (from xfns.c 2003-05-26). - - * w32menu.c (Fx_popup_menu): Call w32_free_menu_strings when - finished with the menu. - - * w32term.c: Sync 2005-10-24 xterm.c changes. - (last_mouse_glyph_frame): New var. - (note_mouse_movement): Say mouse moved if current frame differs - from last_mouse_glyph_frame, and update last_mouse_glyph_frame. - (w32_mouse_position): Set last_mouse_glyph_frame. - Remove OLD_REDISPLAY_CODE block. - -2006-03-12 YAMAMOTO Mitsuharu - - * macgui.h [USE_ATSUI && MAC_OSX]: Define USE_CG_TEXT_DRAWING to 1. - - * macterm.h (struct mac_output) [USE_CG_DRAWING]: New member cg_context. - (mac_prepare_for_quickdraw) [USE_CG_DRAWING]: Add prototype. - - * mac.c (sys_select) [USE_CG_DRAWING]: Call mac_prepare_for_quickdraw. - - * macfns.c (x_create_tip_frame): Apply 2006-03-11 change for xfns.c. - - * macterm.c (mac_draw_rectangle, x_draw_glyph_string_foreground) - (x_draw_composite_glyph_string_foreground) - (x_draw_image_foreground): Undo previous changes. - (x_draw_hollow_cursor): Likewise. Subtract 1 from the last - argument of mac_draw_rectangle. - (CG_SET_FILL_COLOR, CG_SET_STROKE_COLOR): New macros. - (mac_draw_string_common, mac_draw_image_string_cg): Use them. - (FRAME_CG_CONTEXT) [USE_CG_DRAWING]: New macro. - (mac_begin_cg_clip, mac_end_cg_clip, mac_prepare_for_quickdraw) - [USE_CG_DRAWING]: New functions. - (mac_draw_line, mac_erase_rectangle, mac_clear_window) - (mac_fill_rectangle, mac_draw_rectangle, mac_draw_string_common) - (mac_draw_image_string_cg) [USE_CG_DRAWING]: Add Quartz 2D drawing part. - (mac_draw_bitmap, mac_invert_rectangle, mac_draw_string_common) - (mac_copy_area, mac_scroll_area, x_scroll_bar_create) - (x_scroll_bar_remove, XTset_vertical_scroll_bar, x_set_window_size) - (XTread_socket) [USE_CG_DRAWING]: Call mac_prepare_for_quickdraw. - -2006-03-12 L$,1 q(Brentey K,Aa(Broly - - * xfns.c (x_icon): Disable redundant call to `x_wm_set_window_state'. - -2006-03-11 Jason Rumney - - * w32fns.c (signal_user_input): New function. - (post_character_message): Use it for keyboard input. - (w32_msg_pump): Use it for mouse input. - -2006-03-11 Luc Teirlinck - - * window.c: Rename preserve_y to window_scroll_pixel_based_preserve_y. - (window_scroll_pixel_based, syms_of_window): Adapt to above change. - -2006-03-11 Eli Zaretskii - - * w32fns.c (w32_wnd_proc): Ignore middle and extra button events - if a menu is already active (the menubar_active flag is on). - -2006-03-11 David Ponce - - * xfns.c (x_create_tip_frame): Preserve received parms by copying them. - -2006-03-11 Eli Zaretskii - - * w32term.c: Add x_fully_uncatch_errors and x_catching_errors to - the list of unused display error handling functions. - - * eval.c (unwind_to_catch): Call x_fully_uncatch_errors only if - HAVE_X_WINDOWS. - (internal_condition_case, internal_condition_case_1) - (internal_condition_case_2): Call x_catching_errors only if - HAVE_X_WINDOWS. - - * vm-limit.c [HAVE_GETRLIMIT]: Don't define unconditionally. - Don't include sys/resource.h unless defined. - -2006-03-11 Richard Stallman - - * keymap.c (describe_map): Shorten string to indicate shadowed binding. - - * vm-limit.c (get_lim_data, lim_data, data_space_start): - Move from mem-limits.h. - (enum warnlevel): New data type. - (check_memory_limits): Rewrite the logic about warnings. - Use standard `struct rlimit'. Check return values for nonsense. - (memory_warnings): Always clear lim_data. - - * mem-limits.h (get_lim_data, lim_data, data_space_start): - Move to vm-limit.c. - - * xterm.c (x_fully_uncatch_errors, x_catching_errors): New functions. - - * eval.c (unwind_to_catch): Call x_fully_uncatch_errors. - (internal_condition_case_1, internal_condition_case_2): - Abort if within unclosed x_catch_errors. - -2006-03-11 Romain Francoise - - * process.c (Vprocess_adaptive_read_buffering): Doc fix. - -2006-03-11 Giorgos Keramidas (tiny change) - - * lisp.h: Remove duplicate prototypes. Make the prototype of - getloadavg be conditioned on HAVE_GETLOADAVG being undefined. - -2006-03-11 Eli Zaretskii - - * xterm.c (x_draw_hollow_cursor): Subtract 1 from the last - argument of XDrawRectangle. - - * xdisp.c (get_phys_cursor_geometry): Don't decrease height by 1. - - * macterm.c (mac_draw_rectangle): Don't add 1 to width and height. - (x_draw_glyph_string_foreground) - (x_draw_composite_glyph_string_foreground) - (x_draw_image_foreground): Don't subtract 1 from width and height - arguments to mac_draw_rectangle. - (x_draw_hollow_cursor): Add 1 to w->phys_cursor_width. - -2006-03-10 Kim F. Storm - - * alloc.c (USE_POSIX_MEMALIGN): Fix last change. - -2006-03-09 Stefan Monnier - - * alloc.c (USE_POSIX_MEMALIGN): New macro. - (ABLOCKS_BASE, lisp_align_malloc, lisp_align_free): Use it. - -2006-03-09 Kenichi Handa - - * coding.c (DECODE_EMACS_MULE_COMPOSITION_CHAR): Fix decoding - ASCII component of a composition. - -2006-03-08 Luc Teirlinck - - * window.c: Declare preserve_y as a static global variable. - (window_scroll_pixel_based): No longer declare preserve_y; - it is global now. - (syms_of_window): Set preserve_y to -1. - -2006-03-08 YAMAMOTO Mitsuharu - - * image.c [MAC_OS] (XPutPixel): Set alpha channel bits if pixmap - depth is 32. - [MAC_OS] (XGetPixel): Strip off alpha channel bits if pixmap - depth is 32. - -2006-03-06 Chong Yidong - - * xdisp.c (handle_invisible_prop): Don't update it->position with - a buffer position if we're in a display string. - -2006-03-06 YAMAMOTO Mitsuharu - - * macterm.h (MAC_AQUA_VERTICAL_SCROLL_BAR_WIDTH) - (MAC_AQUA_SMALL_VERTICAL_SCROLL_BAR_WIDTH): New defines. - - * macfns.c (x_default_scroll_bar_color_parameter) - (x_set_scroll_bar_foreground, x_set_scroll_bar_background): - Remove unnecessary prototypes. - (x_set_scroll_bar_default_width): - Use MAC_AQUA_VERTICAL_SCROLL_BAR_WIDTH. - (mac_set_scroll_bar_width): New function. - (mac_frame_parm_handlers): Set it as handler for scroll-bar-width. - - * macterm.c (get_control_part_bounds): Fix type of return value. - (x_set_toolkit_scroll_bar_thumb, x_scroll_bar_create) - (XTset_vertical_scroll_bar) [USE_TOOLKIT_SCROLL_BARS]: Don't show - scroll bar if it is not tall enough to display scroll bar thumb. - [USE_CARBON_EVENTS] (mac_convert_event_ref) - (mac_handle_command_event, mac_handle_window_event) - (mac_handle_mouse_event): Check error code of GetEventParameter. - (convert_fn_keycode) [MAC_OSX]: Likewise. - -2006-03-05 Andreas Schwab - - * xselect.c (x_catch_errors_unwind): Fix missing return value. - -2006-03-02 Kim F. Storm - - * frame.h (struct frame): New member n_tool_bar_rows. - - * xdisp.c: Minimize the unpleasent visual impact of the requirement - that non-toolkit tool-bars must occupy an integral number of screen - lines, by distributing the rows evenly over the tool-bar screen area. - (Vtool_bar_border): New variable. - (syms_of_xdisp): DEFVAR_LISP it. - (display_tool_bar_line): Add HEIGHT arg for desired row height. - Make tool-bar row the desired height. Use default face for border - below tool-bar. - (tool_bar_lines_needed): Add N_ROWS arg. Use it to return number of - actual tool-bar rows. - (redisplay_tool_bar): Calculate f->n_tool_bar_rows initially. - Adjust the height of the tool-bar rows to fill tool-bar screen area. - (redisplay_tool_bar): Calculate f->n_tool_bar_rows when tool-bar area - is resized. - -2006-03-01 Luc Teirlinck - - * search.c (Fregexp_quote): Do not precede a literal `]' with two - backslashes to try to make clear that it has a literal meaning; it - does not do that. (It could close a character alternative - containing a backslash.) - -2006-02-28 Chong Yidong - - * xselect.c (x_catch_errors_unwind): New function. - (x_reply_selection_request): Put x_uncatch_errors in an unwind. - (Fx_get_atom_name): Call x_uncatch_errors earlier. - - * window.c (Qscroll_up, Qscroll_down): New syms. - (window_scroll_pixel_based): Make preserve_y static to avoid - getting point stuck when scrolling 1 line. - -2006-02-26 Chong Yidong - - * xterm.h, xterm.c (x_uncatch_errors): Delete unneccessary argument. - - * xterm.c (x_load_font, x_term_init, XTmouse_position) - (handle_one_xevent, x_connection_closed, x_list_fonts): - No arg for x_uncatch_errors. - - * xselect.c (x_own_selection, x_decline_selection_request) - (x_reply_selection_request, x_get_foreign_selection) - (Fx_get_atom_name, Fx_send_client_event): Likewise. - - * xfns.c (x_real_positions, x_set_mouse_color, Fx_focus_frame): - Likewise. - -2006-02-26 Luc Teirlinck - - * lread.c: Declare Vload_file_rep_suffixes instead of - deleted variable default_suffixes. - (Fget_load_suffixes): New function. - (Fload): Use Fget_load_suffixes and Vload_file_rep_suffixes. - No longer use deleted variable default_suffixes. Update docstring. - (syms_of_lread): defsubr Sget_load_suffixes. - Expand `load-suffixes' docstring. - Delete default_suffixes and DEFVAR_LISP the new variable - `load-file-rep-suffixes'. - - * w32.c (check_windows_init_file): Use Fget_load_suffixes instead - of Vload_suffixes. - - * lisp.h: EXFUN Fget_load_suffixes. - Extern Vload_file_rep_suffixes. - - * eval.c (specpdl_ptr): Remove volatile qualifier for consistency - with lisp.h. - -2006-02-26 Stefan Monnier - - * lisp.h (struct specbinding, specpdl_ptr): Remove the volatile - qualifier which was trying to avoid the bug that was fixed by - yesterday's changes to xterm.c. - -2006-02-25 Chong Yidong - - * xterm.h (x_catch_errors) Return value changed to void. - (x_uncatch_errors): Delete unused count argument. - - * xterm.c (x_catch_errors): Don't use record_unwind_protect, since - it can be called in a signal handler. - (x_catch_errors_unwind): Function deleted. - (x_uncatch_errors): Deallocate last x_error_message_stack struct. - (x_check_errors): Call x_uncatch_errors before signalling error. - - (x_load_font, x_term_init, XTmouse_position, handle_one_xevent) - (x_connection_closed, x_list_fonts): Use new versions of - x_catch_errors and x_uncatch_errors. - - * xselect.c (x_own_selection, x_decline_selection_request) - (x_reply_selection_request, x_get_foreign_selection) - (Fx_get_atom_name, Fx_send_client_event): Likewise. - - * xfns.c (x_real_positions, x_set_mouse_color, Fx_focus_frame): - Likewise. - - * eval.c (record_unwind_protect): Add an assertion. - -2006-02-25 Stefan Monnier - - * process.c (Fmake_network_process): Init the process's mark. - -2006-02-25 Kim F. Storm - - * buffer.c (modify_overlay): Force redisplay if we modify an - overlay at the end of the buffer. - -2006-02-24 Jan Dj,Ad(Brv - - * gtkutil.c (xg_get_image_for_pixmap): If x_find_image_file returns - nil the image file has been removed, in that case use the (cached) - pixmap. - -2006-02-24 Kenichi Handa - - * fileio.c (Finsert_file_contents): When a text is replaced - partially, be sure to set point before the inserted characters. - -2006-02-23 Zhang Wei (tiny change) - - * xfns.c (Fx_file_dialog): Return a decoded file name. - -2006-02-23 YAMAMOTO Mitsuharu - - * dispnew.c (update_text_area): Avoid needless redraw of rightmost - glyph whose face is extended to the text area end. - - * macterm.c (x_set_toolkit_scroll_bar_thumb): Don't set control - values if control is not visible or values are not changed. - -2006-02-22 Stefan Monnier - - * window.c (Fwindow_list): Check `window' before doing XWINDOW. - The default `window' should not be "on a different frame". - -2006-02-22 Kim F. Storm - - * indent.c (Fvertical_motion): Only try to move back if we can. - -2006-02-22 YAMAMOTO Mitsuharu - - * macgui.h (struct _XGC) [!MAC_OSX || !USE_ATSUI]: New member - n_clip_rects. - - * macmenu.c (digest_single_submenu): Apply 2006-02-19 change for - xmenu.c. - - * macterm.c (GC_CLIP_REGION): Remove macro. - (mac_begin_clip, mac_end_clip): Take arg GC instead of REGION. - All uses changed. Don't do clipping if n_clip_rects is zero. - (mac_set_clip_rectangles): Use xassert instead of abort. - Set n_clip_rects. Don't make clip_region empty when number of - clipping rectangles is zero. - (mac_reset_clip_rectangles): Set n_clip_rects directly instead of - calling mac_set_clip_rectangles. - (x_set_toolkit_scroll_bar_thumb): Temporarily hide scroll bar to - avoid multiple redraws. - -2006-02-22 Kim F. Storm - - * fringe.c (draw_fringe_bitmap): Fix overlay-arrow display. - -2006-02-21 Kim F. Storm - - * fringe.c (syms_of_fringe) : Doc fix. - -2006-02-21 Zhang Wei - - * xfns.c (Fx_file_dialog, Motif and GTK): DECODE_FILE before - returning it. - -2006-02-21 Giorgos Keramidas (tiny change) - - * fringe.c (horizontal_bar_bits): Rename from `horisontal_bar_bits'. - (standard_bitmaps): Use it. - -2006-02-21 YAMAMOTO Mitsuharu - - * macterm.c (mac_draw_string_common): Remove arg MODE. New arg - BG_WIDTH. All uses changed. Draw background if BG_WIDTH is not zero. - (mac_draw_image_string, mac_draw_image_string_16): New arg BG_WIDTH. - [USE_CG_TEXT_DRAWING] (mac_draw_image_string_cg): Rename from - mac_draw_string_cg. New arg BG_WIDTH. All uses changed. - Draw background if BG_WIDTH is not zero. Use float constants as - divisors instead of double. Use alloca instead of xmalloc/xfree. - (x_draw_glyph_string_background, x_draw_glyph_string_foreground) - [!MAC_OS8 || USE_ATSUI]: Background may be drawn using - mac_draw_image_string* functions. - (XLoadQueryFont) [MAC_OS8 && USE_ATSUI]: Don't adjust heights of - some fonts when srcCopy text transfer mode might be used. - (mac_begin_clip, mac_end_clip): Check if region is empty. - (mac_set_clip_rectangles): When resetting clip region, make it - empty instead of disposing of it. - -2006-02-20 Kim F. Storm - - * Makefile.in: Add fringe.elc to WINDOW_SUPPORT. - - * buffer.h (struct buffer): New members fringe_indicator_alist and - fringe_cursor_alist. - - * buffer.c (init_buffer_once): Set dummy default values for - fringe-indicator-alist and fringe-cursor-alist. The proper - default values are set by pre-loading fringe.el. - (syms_of_buffer): defvar_per_buffer new fringe-indicator-alist and - fringe-cursor-alist buffer-local variables and defvar_lisp_nopro - corresponding default- variables. - - * fringe.c (enum fringe_bitmap_type): Remove. Change all uses - to use `int'. - (NO_FRINGE_BITMAP, UNDEF_FRINGE_BITMAP, MAX_STANDARD_FRINGE_BITMAPS): - Define explicitly. - (Qtruncation, Qcontinuation, Qempty_line, Qtop_bottom) - (Qhollow_small): New variables. - (syms_of_fringe): Intern and staticpro them. - (question_mark_bits): Rename from unknown_bits. - (left_curly_arrow_bits): Rename from continuation_bits. - (right_curly_arrow_bits): Rename from continued_bits. - (left_triangle_bits): Rename from ov_bits. - (right_triangle_bits): Add. - (filled_rectangle_bits): Rename from filled_box_cursor_bits. - (hollow_rectangle_bits): Rename from hollow_box_cursor_bits. - (filled_square_bits): Add. - (vertical_bar_bits): Rename from bar_cursor_bits. - (horizontal_bar_bits): Rename from hbar_cursor_bits. - (empty_line_bits): Rename from zv_bits. - (standard_bitmaps): Update to use new names. - (draw_fringe_bitmap_1): Make static. - (get_logical_cursor_bitmap, get_logical_fringe_bitmap): New functions - to map from logical cursors and indicators to physical bitmaps. - (draw_fringe_bitmap): Resolve fringe cursor and overlay-arrow - bitmaps using symbol names instead of bitmap numbers. - (update_window_fringes): Use logical indicator symbol names - instead of bitmap numbers for logical. Add bitmap cache. - (LEFT_FRINGE, RIGHT_FRINGE): New helper macros. - -2006-02-20 Chong Yidong - - * regex.c: Revert 2006-02-19 change. - (xmalloc, xrealloc): Define these when not linked to Emacs. - Redefine malloc -> xmalloc, realloc -> xrealloc as in Emacs case. - -2006-02-19 Luc Teirlinck - - * regex.c (extend_range_table_work_area): Fix typo. - -2006-02-19 Richard M. Stallman - - * xterm.c (x_catch_errors): Use xmalloc. - - * regex.c (extend_range_table_work_area): Call xmalloc and xrealloc. - (regex_compile): Likewise. - (regcomp): Use xmalloc. - - * gtkutil.c (malloc_widget_value): Use xmalloc. - - * vm-limit.c [HAVE_GETRLIMIT]: Include sys/resource.h. - (check_memory_limits) [HAVE_GETRLIMIT]: Use getrlimit. - - * xmenu.c (digest_single_submenu): When pane_string is empty, - do initialize save_wv. - -2006-02-19 YAMAMOTO Mitsuharu - - * xdisp.c (update_menu_bar) [MAC_OS]: Don't set - w->update_mode_line if arg F is not the selected frame. - - * macmenu.c (popup_activated_flag, submenu_id) - (next_menubar_widget_id): Remove variables. - (initialize_frame_menubar): Remove function. - (pop_down_menu, mac_menu_show): Simplify save value. - (dispose_menus): New function. - (pop_down_menu, fill_menubar): Use it. - (fill_submenu): Remove function. All uses changed to fill_menu. - (add_menu_item): Remove args SUBMENU and FORCE_DISABLE. New arg - POS. Don't call SetMenuItemHierarchicalID here. - (fill_menu): Add arg SUBMENU_ID. Return submenu_id that is to be - used next. Call SetMenuItemHierarchicalID here. - (fill_menubar): Add arg DEEP_P. All uses changed. Clean up menu - objects if needed. Reuse existing menu bar titles if possible. - (set_frame_menubar): Don't clean up menu objects here. - -2006-02-18 Chong Yidong - - * window.c (window_min_size_1): Ensure room for the scroll bar and - fringes. - -2006-02-17 Romain Francoise - - * puresize.h (BASE_PURESIZE): Increment to 1200000. - -2006-02-17 Stefan Monnier - - * alloc.c (Fmake_symbol): Comment-out left-over assert from before the - addition of the BLOCK_INPUTs. - -2006-02-17 Juanma Barranquero - - * window.c (Fset_window_scroll_bars): Doc fix. - -2006-02-17 Kenichi Handa - - * xdisp.c (display_mode_element): Call display_string with correct - PREC arg (which must be a number of characters, not column width). - -2006-02-15 YAMAMOTO Mitsuharu - - * frame.c (x_get_arg): Clear out PARAM in ALIST also on Mac. - - * macfns.c (x_set_menu_bar_lines): Menu bar is always shown on Mac. - - * macmenu.c (set_frame_menubar): Don't call DrawMenuBar. - -2006-02-14 Richard M. Stallman - - * frame.c (x_get_arg): Clear out all occurrences of PARAM in ALIST. - - * m/ibms390x.h: New file. - -2006-02-14 Jan Dj,Ad(Brv - - * gtkutil.c (xg_tool_bar_detach_callback): Set show-arrow to the - value of x-gtk-whole-detached-tool-bar. - (xg_tool_bar_attach_callback): Set show-arrow to TRUE. - - * xfns.c (syms_of_xfns): New variable: x-gtk-whole-detached-tool-bar. - -2006-02-14 Jan Dj,Ad(Brv - - * xterm.c (x_x_to_emacs_modifiers): Make non-static. - - * xterm.h: Declare x_x_to_emacs_modifiers. - - * gtkutil.c (xg_tool_bar_button_cb): New function. - (xg_tool_bar_callback): Call x_x_to_emacs_modifiers to - store modifiers in event. - (update_frame_tool_bar): Connect button-release-event to - xg_tool_bar_button_cb. - -2006-02-13 Richard M. Stallman - - * .gdbinit (xwindow): Update the code to show the window box. - -2006-02-13 Jan Dj,Ad(Brv - - * xterm.c (note_mouse_movement): Check for NULL FRAME_X_OUTPUT (frame). - -2006-02-12 Richard M. Stallman - - * cmds.c (internal_self_insert): Handle weird auto-fill-function. - -2006-02-11 Eli Zaretskii - - * keyboard.c (Venable_disabled_menus_and_buttons): New variable. - (syms_of_keyboard): DEVFAR_LISP and initialize it. - (parse_tool_bar_item, parse_menu_item): If that variable is - non-nil, don't disable menu items and tool-bar buttons. - -2006-02-11 Juanma Barranquero - - * doc.c (Fsubstitute_command_keys): Doc fix. - -2006-02-10 Thien-Thi Nguyen - - * data.c (Findirect_function): Rewrite docstring. - Fix omission bug: Declare new arg NOERROR. - -2006-02-10 YAMAMOTO Mitsuharu - - * macfns.c (x_set_mouse_color): Don't call rif->define_frame_cursor - if window_desc is not set yet. - (Fx_create_frame): Remove variable x_frame_name. Apply 2005-12-07 - and 2006-01-26 changes for xfns.c. Call x_iconify_frame if frame - parameter `visibility' is `icon'. - (Fx_create_frame, x_create_tip_frame): Use "fontset-standard" - instead of "fontset-mac". - (Fx_focus_frame): New defun. - (syms_of_macfns): Defsubr it. - - * macterm.c (mac_define_frame_cursor): Don't change pointer shape - for unfocused frame. - (x_raise_frame): Call BringToFront instead of SelectWindow. - (x_lower_frame): Use NULL instead of nil. - (x_make_frame_visible): Don't call SelectWindow. - (XTread_socket): Increment handling_signal at the start, decrement - it at the end. - [USE_CG_TEXT_DRAWING] (init_cg_text_anti_aliasing_threshold): Use - CFPreferencesGetAppIntegerValue instead of Fmac_get_preference. - -2006-02-10 Kim F. Storm - - * data.c (Findirect_function): Add NOERROR arg. All callers changed - to pass Qnil for NOERROR. - - * keymap.c (current_minor_maps_error): Remove. - (current_minor_maps): Pass Qt for NOERROR to Findirect_function - instead of using internal_condition_case_1+current_minor_maps_error. - -2006-02-09 Jan Dj,Ad(Brv - - * xterm.c (handle_one_xevent): Must note mouse movement even for nil - frames for GTK, in that case it is the tool bar. This is so that - highlighted text get reset properly. - -2006-02-09 Juanma Barranquero - - * alloc.c (Fmake_bool_vector, Fpurecopy): Doc fixes. - -2006-02-08 Jan Dj,Ad(Brv - - * window.c (adjust_window_trailing_edge): Check that shrinking - does not set a window to size zero or less. - -2006-02-08 Miles Bader - - * editfns.c (Fconstrain_to_field): Use Fget_char_property instead - of Fget_text_property (other field functions work with overlays as - well as text-properties). - -2006-02-07 Kenichi Handa - - * dispextern.h (unibyte_display_via_language_environment): Extern it. - - * xterm.h (unibyte_display_via_language_environment): - * w32term.h (unibyte_display_via_language_environment): - * macterm.h (unibyte_display_via_language_environment): Delete extern. - -2006-02-07 Kenichi Handa - - * term.c (append_glyph): Refer to it->char_to_display instead of it->c. - (produce_glyphs): Set the character to print in - it->char_to_display. Handle unibyte-display-via-language-environment. - (produce_stretch_glyph): Set character to print in it->char_to_display. - -2006-02-06 Kenichi Handa - - * lread.c (openp): Initialize encoded_fn before GCPRO it. - -2006-02-05 Ken Raeburn - - * editfns.c (Fconstrain_to_field): Fix int/Lisp_Object mixup. - - * lisp.h (XPNTR) [!NO_UNION_TYPE && !HAVE_SHM && !DATA_SEG_BITS]: - Cast bitfield value to EMACS_INT, to suppress gcc warning. - - * xrdb.c (malloc, realloc, free) [emacs]: Undefine macros before - defining. - -2006-02-03 Kim F. Storm - - * xdisp.c: Cache last merged escape glyph face. - (last_escape_glyph_frame, last_escape_glyph_face_id) - (last_escape_glyph_merged_face_id): New variables. - (get_next_display_element): Use/update them. - (redisplay_internal): Reset them before redisplay. - - * xdisp.c (set_iterator_to_next): Optimize 2004-12-13 fix. - Only recheck faces after displaying ellipsis. - -2006-02-02 Kenichi Handa - - * coding.c (decode_composition_emacs_mule): Fix handling of - incorrect format data. - -2006-01-31 Jan Dj,Ad(Brv - - * gtkutil.c (update_frame_tool_bar): Use new tool bar function - gtk_toolbar_insert() so we can have tool bars of different sizes. - -2006-01-30 Luc Teirlinck - - * data.c (Flistp): Doc fix. - -2006-01-30 Juanma Barranquero - - * window.c (Fother_window, Fwindow_vscroll, Fset_window_vscroll): - Fix typos in docstrings. - -2006-01-28 Luc Teirlinck - - * data.c (Fcar, Fcdr): Add links to Elisp manual to the docstrings. - -2006-01-27 Chong Yidong - - * alloc.c (make_interval, allocate_string) - (allocate_string_data, make_float, Fcons, allocate_vectorlike) - (Fmake_symbol, allocate_misc): Use BLOCK_INPUT when accessing - global variables. - -2006-01-27 Eli Zaretskii - - * dired.c (DIRENTRY_NONEMPTY) [__CYGWIN__]: Don't use d_ino; use - the MSDOS definition. - -2006-01-26 Richard M. Stallman - - * alloc.c (check_pure_size): Make overflow message an "error message". - - * keymap.c (Fmap_keymap): Doc fix. - - * xfns.c (Fx_create_frame): Put all specified parms into f->param_alist - unless they were cleared out. - - * frame.c (x_get_arg): "Clear out" the parm in ALIST if found there. - -2006-01-26 L$,1 q(Brentey K,Aa(Broly - - * editfns.c (Fconstrain_to_field): Fix behaviour on field boundaries. - (find_field): Set before_field to after_field when pos is at BEGV. - (Fline_beginning_position, Fline_end_position): - Clarify confusing doc string. - - * cmds.c (Fbeginning_of_line, Fend_of_line): Clarify confusing doc - string. - -2006-01-26 Kenichi Handa - - * callproc.c (Fcall_process): GCPRO error_file. Encode infile, - current_dir, and error_file. On reporting an error, decode them - back. - -2006-01-24 Stefan Monnier - - * regex.c (IMMEDIATE_QUIT_CHECK): Use it with SYNC_INPUT as well. - (re_match_2_internal) : - Don't check for quit, since any loop will go through fail or jump. - -2006-01-24 Chong Yidong - - * alloc.c (allocate_string_data): Update next_free immediately, to - reduce risk of memory clobberage. - -2006-01-24 L$,1 q(Brentey K,Aa(Broly - - * xdisp.c (handle_invisible_prop): Set it->position to fix cursor - display when point moves across an ellipsis. If there are - adjacent invisible texts, don't lose the second one's ellipsis. - (x_produce_glyphs): Doc fix. - -2006-01-23 Stefan Monnier - - * xterm.c (x_catch_errors_unwind): Yet another int/Lisp_Object mixup. - -2006-01-23 Kim F. Storm - - * xdisp.c (handle_single_display_spec): Fix handling of space - property on char from string: set *position rather than - it->current.pos. - (produce_stretch_glyph): Reduce width of stretch glyphs so they - don't get wider than the window (unless truncate-lines is on). - -2006-01-22 Stefan Monnier - - * xterm.c: Avoid allocating Lisp data from a signal handler. - (x_error_message): New var to replace x_error_message_string. - (x_error_catcher, x_catch_errors, x_catch_errors_unwind) - (x_check_errors, x_had_errors_p, x_clear_errors, x_error_handler) - (syms_of_xterm): Use it instead of x_error_message_string. - - * alloc.c (lisp_align_free): Add an assertion. - (make_interval, allocate_string, make_float, Fcons, Fmake_symbol) - (allocate_misc): If ENABLE_CHECKING is on, check we're not called from - a signal handler. - -2006-01-21 Luc Teirlinck - - * dired.c (syms_of_dired) : Doc fix. - -2006-01-21 Romain Francoise - - * xdisp.c (get_window_cursor_type): Fix last change. - Update copyright year. - -2006-01-20 Eli Zaretskii - - * lread.c (Fload): Don't leak the file descriptor returned by - openp if we are going to signal an error. - - * w32.c (sys_close): If FD is outside [0..MAXDESC) limits, pass it - directly to _close. - (sys_dup): Protect against new_fd larger than fd_info[] can handle. - (sys_read): If FD is outside [0..MAXDESC) limits, pass it directly - to _read. - (sys_write): If FD is outside [0..MAXDESC) limits, pass it - directly to _write. - - * .gdbinit: Don't dereference Vsystem_type's Lisp_Symbol pointer - if it is NULL. - -2006-01-20 Kenichi Handa - - * puresize.h (BASE_PURESIZE): Increment to 1190000. - -2006-01-19 Chong Yidong - - * xdisp.c (get_window_cursor_type): Use cursor type specified by - the selected buffer for the echo area too. - -2006-01-19 Richard M. Stallman - - * keymap.c (Fmap_keymap): Doc fix. - - * s/irix6-5.h (GC_SETJMP_WORKS, GC_MARK_STACK): New definitions. - - * keyboard.c (echo_char): Don't omit the space between first two - echoed chars. - - * minibuf.c (read_minibuf): Fix previous change. - -2006-01-19 Kenichi Handa - - * xterm.c (handle_one_xevent): Handle keysyms 0x1000000..0x10000FF. - -2006-01-17 Richard M. Stallman - - * frame.c (x_frame_get_and_record_arg): Don't record Qunbound - value in f->param_alist. - -2006-01-15 Andreas Schwab - - * search.c (Freplace_match): Use UPPERCASEP instead of !NOCASEP. - -2006-01-13 Richard M. Stallman - - * Makefile.in: Define new macro WINDOW_SUPPORT. - (lisp): Use it. - (SOME_MACHINE_LISP): Add conditionally loaded files. - -2006-01-12 YAMAMOTO Mitsuharu - - * macterm.c [USE_ATSUI] (atsu_get_text_layout_with_text_ptr) - [MAC_OS_X_VERSION_MAX_ALLOWED >= 1020]: Specify kATSLineUseQDRendering. - (XLoadQueryFont) [USE_ATSUI]: Display diacritical marks in - decomposed form. - - * process.c [HAVE_INTTYPES_H]: Include inttypes.h. - (ifflag_table): Fix typo (IFF_OACTIV -> IFF_OACTIVE). - (Fnetwork_interface_info): Use HAVE_STRUCT_IFREQ_IFR_NETMASK - macro. Also try member ifr_addr when getting netmask. - -2006-01-10 Stefan Monnier - - * fileio.c (Fexpand_file_name): Remove redundant tests. - Fix elimination of // so that it doesn't prevent elimination of an - immediately following /. or /.. - -2006-01-09 Jan Dj,Ad(Brv - - * gtkutil.c (xg_toggle_notify_cb): New function. - (xg_toggle_visibility_cb): Move setting of x_gtk_show_hidden_files to - xg_toggle_notify_cb. - (xg_get_file_with_chooser): Add callback to xg_toggle_notify_cb when - parameter value changes so the toggle button gets updated. - -2006-01-06 Nick Roberts - - * .gdbinit: Fix typo. - -2006-01-05 Eli Zaretskii - - * .gdbinit: Fix last change. - -2006-01-05 Kim F. Storm - - * process.c (Fmake_network_process): Use AF_INET instead of - AF_UNSPEC when AF_INET6 is not defined. - -2006-01-05 YAMAMOTO Mitsuharu - - * mac.c (mac_coerce_file_name_ptr, mac_coerce_file_name_desc): - Don't check that the other type is known file-related one. - - * macfns.c (Fx_server_version): Use gestaltSystemVersionMajor, - gestaltSystemVersionMinor, and gestaltSystemVersionBugFix on Mac - OS X 10.4 and later. - -2006-01-04 Jan Dj,Ad(Brv - - * gtkutil.c (xg_get_image_for_pixmap): If the image is from a file, - let GTK do all image processing. Importing Emacs own pixmaps to GTK - looks bad for inactive tool bar items with some Gnome themes. - -2006-01-04 Eli Zaretskii - - * .gdbinit: Avoid a warning message when x_error_quitter is not - compiled in. - - * process.c [WINDOWSNT]: Undef AF_INET6 to disable IPv6 support - for w32. - -2006-01-04 Kim F. Storm - - * process.c: Add IPv6 support. - (Qipv4, Qipv6): New vars. - (syms_of_process): Intern and staticpro them. - (Fformat_network_address): Handle 9 or 8 element vector as IPv6 address - with or without port number. Handle 4 element vector as IPv4 address - without port number. - (conv_sockaddr_to_lisp, get_lisp_to_sockaddr_size) - (conv_lisp_to_sockaddr): Handle IPv6 addresses. - (Fmake_network_process): Use :family 'ipv4 and 'ipv6 to explicitly - request that address family only. :family nil or omitted means to - determine address family from the specified :host and :service. - (ifflag_table): Add missing OpenBSD IFF_ flags. - (server_accept_connection): Handle IPv6 addresses. - (init_process): Add (:family ipv4) and (:family ipv6) sub-features. - - * .gdbinit: Undo last change. Instead, look at Vsystem_type to - determine which breakpoints to set. - -2006-01-03 Stefan Monnier - - * keymap.c (describe_map_compare): Yet another int/Lisp_Object mixup. - - * window.h (Fwindow_minibuffer_p): Declare (for use in minibuf.c). - -2006-01-03 Romain Francoise - - * emacs.c (main): Update copyright year. - -2006-01-03 Ken Raeburn - - * callproc.c (delete_temp_file): Bind file-name-handler-alist to - nil for the call to internal_delete_file. - -2006-01-01 Ken Raeburn - - * callproc.c (Fcall_process_region): Bind file-name-handler-alist - to nil for the call to Fwrite_region. - -2005-12-31 Richard M. Stallman - - * minibuf.c (read_minibuf): Clear out all other minibuffer windows. - -2005-12-31 Eli Zaretskii - - * emacs.c (gdb_pvec_type): A dummy variable for GDB's sake. - -2005-12-30 Luc Teirlinck - - * textprop.c (set_text_properties): Reword description of return value. - Return Qnil if caller wants to remove all text properties from a - string and the string already has no intervals. - -2005-12-30 Stefan Monnier - - * term.c (visible_cursor): New boolean var. - (set_terminal_modes, tty_show_cursor): Use "vs" or "ve" depending on - visible_cursor. - (syms_of_term): Export the new var as "visible-cursor". - -2005-12-30 Eli Zaretskii - - * .gdbinit: Tell users not to worry about GDB warnings that some - functions do not exist in the binary. - -2005-12-30 Andreas Schwab - - * process.c (Fnetwork_interface_info): Correctly terminate the - loop over ifflag_table. - -2005-12-29 Richard M. Stallman - - * lread.c (readevalloop): Test for reading a whole buffer - before actually reading anything. Handle all cases, including - START = END = nil and an already-narrowed buffer. - Convert END to a marker if it is a number. - - * keymap.c (describe_map): Put sparse map elements into an array, - sort them, then output a sequence of identical bindings on one line. - (struct describe_map_elt): New data type. - (describe_map_compare): New function. - -2005-12-28 Jan Dj,Ad(Brv - - * gtkutil.c (xg_get_file_with_chooser): Change message shown - in file chooser. - -2005-12-27 Richard M. Stallman - - * lread.c (readevalloop): Set PT and ZV in the proper buffer, - not the current one. - - * minibuf.c (Fminibuffer_message): Doc fix. - (read_minibuf): Set current_buffer->enable_multibyte_characters sooner. - - * eval.c (do_autoload): Ignore elements of Vautoload_queue - where car is not symbol. - -2005-12-27 Kenichi Handa - - * charset.c (lisp_string_width): Check multibyteness of STRING. - -2005-12-27 Jan Dj,Ad(Brv - - * xfns.c (x_show_hidden_files): New variable. - (syms_of_xfns): Defvar it. - - * gtkutil.c (xg_toggle_visibility_cb): New function. - (xg_get_file_with_chooser): Add toggle hidden files and a message - to the new file chooser dialog. Show hidden files if - x_show_hidden_files is non-zero. - -2005-12-26 Richard M. Stallman - - * keyboard.h: Undo previous change. - - * Makefile.in (undo.o): Undo previous change. - - * undo.c: Undo previous change. - -2005-12-26 Luc Teirlinck - - * keyboard.h: extern last_point_position_window. - - * undo.c: include keyboard.h. - - * Makefile.in (undo.o): Depend on keyboard.h. - -2005-12-26 Richard M. Stallman - - * commands.h (last_point_position_window): Declare. - - * undo.c: Depend on window.h. - (record_point): Save old point from the correct window. - - * keyboard.c (last_point_position_window): New variable. - (command_loop_1): Set last_point_position_window. - (syms_of_keyboard): Init it. - - * Makefile.in (undo.o): Depend on window.h. - -2005-12-25 Richard M. Stallman - - * eval.c (un_autoload): Expect (0 . OFEATURES) in Vautoload_queue - to undo a `provide'. - - * fns.c (Fprovide): Store (0 . OFEATURES) in Vautoload_queue. - -2005-12-25 Giorgos Keramidas - - * m/amdx86-64.h [__FreeBSD__] (START_FILES, LIB_STANDARD): - define for FreeBSD on this platform. - -2005-12-24 YAMAMOTO Mitsuharu - - * macterm.h (TYPE_FILE_NAME): New define. - (posix_pathname_to_fsspec, fsspec_to_posix_pathname): Remove externs. - - * mac.c (posix_pathname_to_fsspec, fsspec_to_posix_pathname): - Add prototypes. Make static. - (mac_aedesc_to_lisp): Initialize err to noErr. - (mac_coerce_file_name_ptr, mac_coerce_file_name_desc) - (init_coercion_handler): New functions. - (Fmac_coerce_ae_data): Use coercion of Apple event data for - translation from/to file names. - - * macterm.c: Don't include sys/param.h. - (init_coercion_handler): Add extern. - [MAC_OS8] (main): Call init_coercion_handler. - (mac_initialize) [MAC_OSX]: Likewise. - [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Use coercion of - Apple event data for translation from/to file names. - - * macfns.c [TARGET_API_MAC_CARBON] (Fx_file_dialog): Likewise. - - * image.c [MAC_OS] (find_image_fsspec): Likewise. - -2005-12-23 Martin Rudalics - - * insdel.c (insert, insert_and_inherit, insert_before_markers) - (insert_before_markers_and_inherit): Make sure FROM is correct - when `after-change-functions' are called. - -2005-12-23 Jan Dj,Ad(Brv - - * xfns.c (Fx_uses_old_gtk_dialog): New function. - - * gtkutil.c (xg_uses_old_file_dialog): New function. - (xg_get_file_name): Use xg_uses_old_file_dialog. - - * gtkutil.h: Declare xg_uses_old_file_dialog. - -2005-12-22 Richard M. Stallman - - * xmenu.c (xmenu_show): Call inhibit_garbage_collection. - -2005-12-22 YAMAMOTO Mitsuharu - - * mac.c (Fmac_coerce_ae_data) [MAC_OSX]: Fix memory leak. - - * macgui.h (XCharStruct): Remove member `valid_p'. - (STORE_XCHARSTRUCT): Don't set member `valid_p'. - (XCharStructRow): New typedef. - (XCHARSTRUCTROW_CHAR_VALID_P, XCHARSTRUCTROW_SET_CHAR_VALID): - New macros. - (struct MacFontStruct): Add member `bounds'. Remove member - `per_char'. All uses for QuichDraw Text fonts are changed to - `bounds.per_char'. ATSUI font bounds are represented as an array - `bounds.rows' of XCharStructRow's, each of which consists of a - bitmap of valid entries and an array of char bounds. - - * macterm.c (mac_per_char_metric): Add prototype. - (x_per_char_metric) [USE_CG_TEXT_DRAWING]: Remove prototype. - (mac_query_char_extents): New function. - (x_per_char_metric): Use it. - (XLoadQueryFont): Likewise. Consolidate min/max_bounds calculations. - [USE_CG_TEXT_DRAWING] (mac_draw_string_cg): - Use mac_per_char_metric instead of x_per_char_metric. - (mac_text_extents_16): New function. - (mac_compute_glyph_string_overhangs): Use it. - (mac_unload_font): Free member `bounds' in struct MacFontStruct. - -2005-12-21 Stefan Monnier - - * minibuf.c (Fdisplay_completion_list): Use XCAR/XCDR. - (Fminibuffer_completion_help): Remove duplicates before display. - -2005-12-21 L$,1 q(Brentey K,Aa(Broly - - * print.c (print_preprocess): Don't lose print_depth levels while - iterating. - -2005-12-21 YAMAMOTO Mitsuharu - - * macmenu.c (Qmac_apple_event): Add extern. - (set_frame_menubar, mac_menu_show keymp_panes) - (single_keymap_panes, list_of_panes, list_of_item) - (single_menu_item): Add argument types to prototypes. - (mac_dialog_show) [HAVE_DIALOGS]: Likewise. - (struct skp): New struct (from xmenu.c). - (single_keymap_panes, single_menu_item, list_of_panes) - (list_of_item): Sync with xmenu.c. - (Fx_popup_menu, Fx_popup_dialog): Likewise. Don't get window from - POSITION if it is mac-apple-event event. - (menubar_selection_callback): Don't use menu_command_in_progress. - (set_frame_menubar): First parse all submenus, then make - widget_value trees from them. Don't allocate any widget_value - objects until we are done with the parsing. - (parse_single_submenu, digest_single_submenu): New functions. - (single_submenu): Function deleted, replaced by those two. - (install_menu_quit_handler) [HAVE_CANCELMENUTRACKING]: Don't create - or dispose of EventHandlerUPP. Install hander to all submenus. - (mac_menu_show) [!HAVE_MULTILINGUAL_MENU]: Use ENCODE_MENU_STRING - instead of ENCODE_SYSTEM. - (free_frame_menubar, fill_submenu, fill_menu): Don't use NULL for - integer values. - [HAVE_DIALOGS] (mac_dialog_show): Sync with xdialog_show (in xmenu.c). - (add_menu_item) [TARGET_API_MAC_CARBON]: Use CFString functions to - format menu item string. Don't use NULL for integer value. - - * macterm.h (struct mac_output): Remove unused member - menu_command_in_progress. - -2005-12-20 Juri Linkov - - * xmenu.c (Fx_popup_menu): Set Vmenu_updating_frame to f if - position is non-nil, else set it to nil. - - * macmenu.c (Fx_popup_menu): Add `else' to set - Vmenu_updating_frame to nil only if position is nil. - - * w32menu.c (Fx_popup_menu): Add `else' to set - Vmenu_updating_frame to nil only if position is nil. - -2005-12-19 YAMAMOTO Mitsuharu - - * keyboard.c (make_lispy_event): Drag-and-drop items are now - stored in member `args' of struct input_event. - - * termhooks.h (struct input_event): Fix comment for DRAG_N_DROP_EVENT. - - * xselect.c (x_handle_dnd_message): Drag-and-drop items are now - stored in member `args' of struct input_event. - - * w32term.c (construct_drag_n_drop): Likewise. - - * macterm.c (mac_do_receive_drag): Likewise. - (x_use_underline_position_properties): Undo 2005-07-13 change. - (syms_of_macterm) : Likewise. - (mac_use_core_graphics, mac_wheel_button_is_mouse_2) - (mac_pass_command_to_system, mac_pass_control_to_system): - New boolean variables renamed from Lisp_Object ones - Vmac_use_core_graphics, Vmac_wheel_button_is_mouse_2, - Vmac_pass_command_to_system, and Vmac_pass_control_to_system. - All uses changed. - (syms_of_macterm): DEFVAR_BOOL them. Remove previous DEFVAR_LISPs. - Make them user options. - (mac_handle_command_event, mac_store_services_event): - Call create_apple_event_from_event_ref without 5th argument. - (backtranslate_modified_keycode): Mask off modifier keys that are - mapped to some Emacs modifiers before passing it to KeyTranslate. - (syms_of_macterm): Make variables `mac-emulate-three-button-mouse', - `mac-wheel-button-is-mouse-2', and `mac-*-modifier' user options. - Fix docstrings of `mac-*-modifier'. - - * mac.c (create_apple_event_from_event_ref): Remove arg `types'. - (do_applescript): Change argument types to Lisp_Object. - All uses changed. - - * macterm.h (create_apple_event_from_event_ref): Remove 5th - argument from extern. - -2005-12-18 Dan Nicolaescu - - * xfns.c (Fx_backspace_delete_keys_p): In case we cannot determine - the answer, return `lambda', not nil. - -2005-12-17 Eli Zaretskii - - * makefile.w32-in (bootstrap-temacs): Warn that parts of commands - enclosed in $(ARGQUOTE)s should not be split between two lines, as - that will break with GNU Make >3.80, when sh.exe is used and - arg quoting is with '..'. - -2005-12-17 Chong Yidong - - * print.c (print_preprocess): Just signal an error if print_depth - is exceeded. - -2005-12-17 Eli Zaretskii - - * .gdbinit: Set a breakpoint on w32_abort. - -2005-12-16 Juri Linkov - - * minibuf.c (Fminibuffer_completion_contents): New Lisp function - created from minibuffer_completion_contents. - (minibuffer_completion_contents): Remove. - (do_completion, Fminibuffer_complete_word) - (Fminibuffer_completion_help): Replace minibuffer_completion_contents - with Fminibuffer_completion_contents. - (syms_of_minibuf): Add Sminibuffer_completion_contents. - (Fdisplay_completion_list): Doc fix. - (display_completion_list_1): Use `nil' for second arg of - `Fdisplay_completion_list'. - -2005-12-14 Jan Dj,Ad(Brv - - * xfns.c (compute_tip_xy): Handle negative dx and dy. - - * w32fns.c (compute_tip_xy): Ditto. - - * macfns.c (compute_tip_xy): Ditto. - -2005-12-14 Chong Yidong - - * print.c (print_preprocess): Go to a deeper print_depth to avoid - print_object loop. - -2005-12-14 Kyotaro HORIGUCHI (tiny change) - - * coding.c (code_convert_region_unwind): GCPRO arg. - -2005-12-12 Jan Dj,Ad(Brv - - * xfns.c (compute_tip_xy): Calculate root_y the same way as root_x, - i.e. dy is offset from top of frame instead of bottom. - - * macfns.c (compute_tip_xy): Ditto. - - * w32fns.c (compute_tip_xy): Ditto. - - * gtkutil.c (SSDATA): New macro to remove compiler warnings. - (xg_get_image_for_pixmap, xg_create_frame_widgets) - (xg_get_file_with_chooser): Use SSDATA instead of SDATA. - - * xmenu.c (menubar_selection_callback): Do nothing if the callback - is for an unselected radio menu item. - -2005-12-11 Richard M. Stallman - - * xdisp.c (syms_of_xdisp) : Doc fix. - - * lisp.h [! NO_UNION_TYPE] (EQ): Use == so args are computed just once. - - * keymap.c (Fset_keymap_parent, store_in_keymap): Use CHECK_IMPURE. - (Flookup_key): Doc fix. - (syms_of_keymap) : Doc fix. - - * fns.c (Frequire): Treat evaluating from a source file - like loading the file. - - * floatfns.c (Flog): Doc fix. - - * fileio.c (Finsert_file_contents): Set Vdeactivate_mark - when we change the buffer. - -2005-12-11 Juri Linkov - - * minibuf.c (display_completion_list_1): - Call `minibuffer_completion_contents' instead of using `nil' as - second arg of `Fdisplay_completion_list'. - (keys_of_minibuf): Unbind SPC in - Vminibuffer_local_filename_completion_map (see also related - change on 2005-12-06). - -2005-12-11 YAMAMOTO Mitsuharu - - * emacs.c (main) [MAC_OS8]: Undo previous change. - - * macselect.c (syms_of_macselect) : - Initialize to nil. Keymap is now created in lisp/term/mac-win.el. - -2005-12-10 YAMAMOTO Mitsuharu - - * Makefile.in (macselect.o): Depend on keymap.h. - - * emacs.c (main) [MAC_OS8]: Call syms_of_keymap before - syms_of_macselect. - - * image.c (init_image) [MAC_OS]: Don't call EnterMovies. - [!HAVE_GIF && MAC_OS] (gif_load): Call EnterMovies. - - * keyboard.c (Qmac_apple_event) [MAC_OS]: New variable. - (syms_of_keyboard) [MAC_OS]: Initialize it. - (make_lispy_event) [MAC_OS]: Build lisp event for MAC_APPLE_EVENT. - - * mac.c (Qundecoded_file_name): New variable. - (syms_of_mac): Initialize it. - (mac_aelist_to_lisp, mac_aedesc_to_lisp): New functions. - [TARGET_API_MAC_CARBON] (create_apple_event_from_event_ref): New fun. - (Fmac_coerce_ae_data): New defun. - (syms_of_mac): Defsubr it. - - * macselect.c: Include keymap.h. - (mac_ready_for_apple_events): New variable. - (Vmac_apple_event_map, Qmac_apple_event_class) - (Qmac_apple_event_id): New variables. - (syms_of_macselect): Initialize them. - (Qundefined, mac_store_apple_event): Add externs. - (struct apple_event_binding): New struct. - (find_event_binding_fun, find_event_binding) - (mac_find_apple_event_spec, defer_apple_events) - (mac_handle_apple_event, init_apple_event_handler) - (copy_scrap_flavor_data): New functions. - (Fmac_process_deferred_apple_events): New defun. - (syms_of_macselect): Defsubr it. - (mac_store_services_event): Fix extern. - (mac_handle_service_event): Don't allocate Lisp objects during - asynchronous input processing. Use mac_store_services_event - instead of mac_store_application_menu_event. - - * macterm.c (Qmac_ready_for_drag_n_drop, Qapplication, Qabout) - (Qpreferences): Remove variables. - (syms_of_macterm) : Don't initialize them. - (Qhicommand) [USE_CARBON_EVENTS]: New variable. - (syms_of_macterm) [USE_CARBON_EVENTS]: Initialize it. - (init_required_apple_events, do_ae_open_application) - (do_ae_print_documents, do_ae_open_documents) - (do_ae_quit_application): Remove functions and prototypes. - (mac_ready_for_apple_events, Qundefined, init_apple_event_handler) - (mac_find_apple_event_spec): Add externs. - (mac_store_application_menu_event): Remove function. - (mac_store_apple_event, mac_make_lispy_event_code): New functions. - (mac_handle_command_event): Create Apple event from Carbon event. - Use mac_store_apple_event instead of mac_store_application_menu_event. - [MAC_OSX] (mac_store_services_event): Likewise. - (struct SelectionRange, SelectionRange): Remove struct and typedef. - [MAC_OS8] (main): Call init_apple_event_handler instead of - init_required_apple_events. - (mac_initialize) [MAC_OSX]: Likewise. - [!USE_CARBON_EVENTS] (mac_wait_next_event): - Use mac_ready_for_apple_events instead of Qmac_ready_for_drag_n_drop. - - * macterm.h (mac_make_lispy_event_code, mac_aedesc_to_lisp): - Add externs. - (create_apple_event_from_event_ref) [TARGET_API_MAC_CARBON]: Likewise. - (Fmac_get_preference): Add EXFUN. - - * termhooks.h (enum event_kind) [MAC_OS]: Add new MAC_APPLE_EVENT - event. - -2005-12-09 Richard M. Stallman - - * xfns.c (Fx_create_frame): Reinstate previous change. - -2005-12-09 Eli Zaretskii - - * w32fns.c (w32_abort) [__GNUC__]: Add instructions for attaching - GDB to the abort dialog. - -2005-12-09 Kyotaro HORIGUCHI (tiny change) - - * indent.c (Fvertical_motion): Force move if starting on - stretch glyph. - -2005-12-08 Richard M. Stallman - - * lread.c (read_escape) <\s>: Don't treat strings specially. - - * xfns.c (Fx_create_frame): Comment out previous change. - -2005-12-07 L$,1 q(Brentey K,Aa(Broly - - * xfns.c (Fx_create_frame): Initialize Vdefault_minibuffer_frame, - when needed. - -2005-12-06 Stefan Monnier - - * minibuf.c (keys_of_minibuf): Just unbind SPC in - Vminibuffer_local_filename_completion_map rather than forcing it - explicitly to the same binding as the global map. - -2005-12-06 Ken Raeburn - - * buffer.c (Fkill_buffer): Avoid dangerous side effects in NILP args. - * bytecode.c (Fbyte_code): Likewise. - * fileio.c (internal_delete_file, Fread_file_name_internal): Likewise. - * minibuf.c (Fminibuffer_complete_and_exit): Likewise. - * undo.c (truncate_undo_list): Likewise. - -2005-12-05 Richard M. Stallman - - * window.c (enlarge_window): Eliminate arg preserve_before. - Assume it is 0. All callers changed. - (Fenlarge_window, Fshrink_window): Likewise. - -2005-12-02 Eli Zaretskii - - * w32fns.c (compute_tip_xy): Put tip above pointer if it doesn't - fit below. - -2005-12-02 Jan Dj,Ad(Brv - - * xterm.h: Add prototype for xg_set_icon_from_xpm_data. - - * xfns.c (x_real_positions): int ign => unsigned int. - (xg_set_icon_from_xpm_data): Remove unused variable err. - (x_set_name_internal, Fx_create_frame, xg_set_icon): Add cast - to remove compiler warning. - (compute_tip_xy): Put tip above pointer if it doesn't fit below. - -2005-12-02 David Reitter - - * minibuf.c (Fcompleting_read): If Vminibuffer_completing_file_name is - non-nil, use the new keymaps Vminibuffer_local_filename_completion_map - and Vminibuffer_local_must_match_filename_map keymaps. - (keys_of_minibuf): Bind SPC in the new file-name completion keymaps. - - * keymap.c (Vminibuffer_local_filename_completion_map) - (Vminibuffer_local_must_match_filename_map): New variables. - (syms_of_keymap): DEFVAR_LISP them, initialize them, and set their - parent to be Vminibuffer_local_completion_map and - Vminibuffer_local_must_match_map, respectively. - - * commands.h (Vminibuffer_local_filename_completion_map) - (Vminibuffer_local_must_match_filename_map): Declare the new keymaps. - -2005-12-01 Stefan Monnier - - * window.c (Fset_window_configuration): Don't accidentally copy the - window-point of one window to another. - -2005-11-30 L$,1 q(Brentey K,Aa(Broly - - * buffer.c (Fpop_to_buffer): Remove superfluous call to record_buffer. - -2005-11-30 Kim F. Storm - - * alloc.c: Include fcntl.h. Define O_WRONLY if not defined. - (valid_lisp_object_p) [!GC_MARK_STACK]: Validate pointer by - passing it to `emacs_write'. - -2005-11-29 Ari Roponen (tiny change) - - * atimer.c (stop_other_atimers): Fix loop to correctly compute `prev'. - -2005-11-27 Richard M. Stallman - - * window.c (adjust_window_trailing_edge): New function. - (Fadjust_window_trailing_edge): New function. - (syms_of_window): Defsubr it. - (window_deletion_count): New variable. - (delete_window): Update window_deletion_count. - -2005-11-26 Eli Zaretskii - - * minibuf.c (syms_of_minibuf): Mention the extension of - `completion-auto-help's meaning by complete.el. - -2005-11-26 Henrik Enberg - - * xfaces.c (Finternal_set_lisp_face_attribute_from_resource): - Handle :inherit property as a lisp expression. - -2005-11-24 YAMAMOTO Mitsuharu - - * macterm.c (Qcontrol): Rename from Qctrl. All uses changed. - (syms_of_macterm): Staticpro Qcontrol, Qmeta, Qalt, Qhyper, - Qsuper, and Qmodifier_value. - (Vmac_control_modifier, Vmac_option_modifier) - (Vmac_command_modifier, Vmac_function_modifier) - (Vmac_emulate_three_button_mouse, Vmac_wheel_button_is_mouse_2) - (Vmac_pass_command_to_system, Vmac_pass_control_to_system) - (Vmac_charset_info_alist): Doc fixes. - -2005-11-23 YAMAMOTO Mitsuharu - - * emacs.c (main) [MAC_OSX]: Change working directory to home - directory if `-psn_*' option is specified. - - * mac.c (DECODE_UTF_8): Remove macro. - [TARGET_API_MAC_CARBON] (cfstring_to_lisp_nodecode): New function - created from cfstring_to_lisp. - [TARGET_API_MAC_CARBON] (cfstring_to_lisp): Use it. - (xrm_get_preference_database) [TARGET_API_MAC_CARBON]: Likewise. - - * macterm.h (cfstring_to_lisp_nodecode) [TARGET_API_MAC_CARBON]: - Add prototype. - -2005-11-21 Ken Raeburn - - * keymap.c (shadow_lookup): Use make_number to pass a number to - Fsubstring. - -2005-11-21 Juri Linkov - - * puresize.h (BASE_PURESIZE): Increment to 1180000. - -2005-11-20 Chong Yidong - - * xfaces.c (Finternal_set_lisp_face_attribute): - Use :ignore-defface for new frame defaults when `unspecified' is - supplied. - (Finternal_get_lisp_face_attribute): Hide :ignore-defface. - (merge_face_vectors): Don't do :ignore-defface overwriting here. - (Finternal_merge_in_global_face): Do it here. - -2005-11-20 Juri Linkov - - * charset.c (invalid_character): Use Lisp-readable syntax - for octal and hex. Reorder decimal, octal and hex values. - -2005-11-20 Nick Roberts - - * lisp.h: Use typedef when Lisp_Object is EMACS_INT so that - this type is recognised when debugging. - -2005-11-19 Andreas Schwab - - * .gdbinit (nextcons, xcdr, xfloat): Update for changes in - Lisp_Cons and Lisp_Float. - -2005-11-19 YAMAMOTO Mitsuharu - - * macterm.c [USE_CG_TEXT_DRAWING] (cg_text_anti_aliasing_threshold): - New variable. - [USE_CG_TEXT_DRAWING] (init_cg_text_anti_aliasing_threshold): New fun. - (init_font_name_table) [USE_ATSUI && USE_CG_TEXT_DRAWING]: Use it. - [USE_CG_TEXT_DRAWING] (mac_draw_string_cg): Don't do antialiasing if - font size is smaller than or equal to cg_text_anti_aliasing_threshold. - -2005-11-17 Chong Yidong - - * image.c (x_create_bitmap_from_xpm_data): Free attributes on fail. - - * xfaces.c (Qignore_defface): New variable. - (syms_of_xfaces): Provide `:ignore-defface'. - (IGNORE_DEFFACE_P): New macro. - (check_lface_attrs, lface_fully_specified_p) - (Finternal_set_lisp_face_attribute) - (Fface_attribute_relative_p, Fmerge_face_attribute): - Handle Qignore_defface as a possible value. - (merge_face_vectors): The merged face is `unspecified' if the - mergee specifies `:ignore-defface'. - -2005-11-16 Stefan Monnier - - * lread.c (readevalloop): Add missing GCPROs. - -2005-11-16 Chong Yidong - - * xfns.c (xg_set_icon_from_xpm_data): New function. - - * gnu.h (gnu_xpm_bits): Rename from gnu_bits. - (gnu_xbm_bits): Rename from gnu_bits (xbm version). - - * xterm.c (x_bitmap_icon): Use the xpm if available. - - * image.c (x_create_bitmap_from_xpm_data): New function. - (x_create_bitmap_from_xpm_data): Initialize XpmAttributes. - -2005-11-15 Luc Teirlinck - - * Makefile.in (lisp, shortlisp): Add rfn-eshadow. - -2005-11-16 Nick Roberts - - * .gdbinit: Make SIGTSTP work like SIGINT normally does. - -2005-11-15 Andreas Schwab - - * lisp.h (struct Lisp_Cons): Make cdr a union. - (XCDR_AS_LVALUE): Adjust. - (struct Lisp_Float): Make data a union. - (XFLOAT_DATA): Adjust. - - * alloc.c (free_float): Make free list chaining aliasing-safe. - (make_float): Likewise. - (free_cons): Likewise. - (Fcons): Likewise. - (check_cons_list): Likewise. - (Fmake_symbol): Likewise. - (allocate_misc): Likewise. - (free_misc): Likewise. - (gc_sweep): Likewise. - -2005-11-15 YAMAMOTO Mitsuharu - - * mac.c (HASHKEY_QUERY_CACHE): New define. - (xrm_create_database, xrm_q_put_resource): Empty query cache. - (xrm_get_resource): Use query cache. - - * image.c (init_image) [MAC_OS]: Don't call EnterMovies if - inhibit_window_system is set. - -2005-11-13 YAMAMOTO Mitsuharu - - * macgui.h (USE_CG_TEXT_DRAWING): New define. - (struct MacFontStruct) [USE_CG_TEXT_DRAWING]: New members cg_font - and cg_glyphs. - - * macterm.c [USE_CG_TEXT_DRAWING] (mac_draw_string_cg): New function. - (x_draw_glyph_string_foreground) [USE_CG_TEXT_DRAWING]: Use it. - (XLoadQueryFont) [USE_CG_TEXT_DRAWING]: Set members cg_font and - cg_glyphs in struct MacFontStruct if synthesized bold or italic is - not used and font substitution never occurs for ASCII and Latin-1 - characters. - (XLoadQueryFont): Maximum and minimum metrics are now those among - ASCII characters. - (XLoadQueryFont) [!MAC_OS8 || USE_ATSUI]: Apply WebKit-style - height adjustments for Courier, Helvetica, and Times. - - * s/darwin.h (LIBS_CARBON) [!HAVE_CARBON]: Remove `-framework Carbon'. - -2005-11-11 David Reitter - - * macterm.c (syms_of_macterm): Remove macCtrlKey, macShiftKey, - macMetaKey, macAltKey. Introduce Qctrl, Qmeta, - Vmac_control_modifier / mac-control-modifier, - Vmac_option_modifier / mac-option-modifier, - Vmac_command_modifier / mac-command-modifier. - (mac_to_emacs_modifiers): Use the new style modifier - variables. Return UInt32 (modifiers are longs now.) - (backtranslate_modified_keycode): New function (refactoring). - (XTread_socket): Use new modifier variables and refactored function. - (mac_determine_quit_char_modifiers): Remove macMetaKey (there is - no dedicated meta key. Not in use anyway.) - (convert_fn_keycode): Map Fn-keys to their original keycode - using a table (english keyboard only). - -2005-11-11 Kim F. Storm - - * .gdbinit (pitx): Fix output format if n_overlay_strings > 0. - Add post hook to "backtrace" to always dump lisp call stack to - increase chance of people sending it to us when reporting bugs. - - * doc.c (Fsubstitute_command_keys): Doc fix. - - * dispextern.h (struct it): New member ignore_overlay_strings_at_pos_p. - - * xdisp.c (handle_stop): Skip overlay string handling if - ignore_overlay_strings_at_pos_p is set. - (set_iterator_to_next): At end of display vector, set - ignore_overlay_strings_at_pos_p if dpvec came from an overlay - string, so we skip those overlay strings at current pos. - -2005-11-10 Lars Hansen - - * fileio.c (file-regular-p): Doc fix. - -2005-11-10 Kim F. Storm - - * alloc.c (valid_lisp_object_p): New function to validate that - an object is really a valid Lisp_Object. - - * lisp.h (valid_lisp_object_p): Add prototype. - - * print.c (safe_debug_print): New function to be called from gdb - to print Lisp objects; use valid_lisp_object_p to avoid crashing - if user tries to print something which is not a Lisp object. - - * .gdbinit (pp, pp1): Use safe_debug_print. - (pv, pv1): New commands to print value of a lisp variable. - -2005-11-10 Nick Roberts - - * .gdbinit (pp1): New user-defined function. - -2005-11-09 YAMAMOTO Mitsuharu - - * image.c [MAC_OSX] (image_load_quartz2d): Fix memory leak. - - * mac.c [MAC_OSX] (init_mac_osx_environment): Reinitialize locale - related variables for dumped executable. - - * unexmacosx.c (unexec_write_zero): New function. - (copy_data_segment): Clear uninitialized local variables in - statically linked libraries. - - * s/darwin.h (C_SWITCH_SYSTEM): Remove -fno-common. - -2005-11-09 Juri Linkov - - * keymap.c (shadow_lookup): If Flookup_key returns a number, - call it again with a sub-key-sequence, and if its return value - is non-nil (sub-key is bound), return nil. - -2005-11-08 Kim F. Storm - - * process.c (Fsignal_process): Recognize signal names with and - without SIG prefix, e.g. SIGHUP and HUP. - - * search.c (search_buffer): No need to initialize base_pat. - -2005-11-04 Stefan Monnier - - * window.c (Fget_lru_window, Fget_largest_window, window_loop): - Don't abuse the `mini' arg. Use the `obj' arg instead. - -2005-11-04 Kim F. Storm - - * xdisp.c (show_mouse_face): Clear mouse face to eol. - -2005-11-03 Dan Nicolaescu - - * Makefile.in (lisp, shortlisp): Add emacs-lisp/syntax.elc, - font-lock.elc and jit-lock.elc. - -2005-11-03 Richard M. Stallman - - * window.c (Fenlarge_window): Rename SIDE to HORIZONTAL. - (enlarge_window): Rename WIDTHFLAG to HORIZ_FLAG. - (CURBEG, CURSIZE): Use HORIZ_FLAG instead of WIDTHFLAG. - - * sheap.c (STATIC_HEAP_SIZE): Increment both definitions. - - * alloc.c (refill_memory_reserve): Move decl out of conditionals. - -2005-11-03 Stefan Monnier - - * window.c (Fdisplay_buffer): Fix last change to not use - a dedicated window. - -2005-11-01 Kim F. Storm - - * fringe.c (update_window_fringes): Undo 2005-10-27 change. - Instead, rotate the bottom angle bitmap 180 degrees to indicate - that the bottom row does not end in a newline. - -2005-11-01 Andreas Schwab - - * unexelf.c (unexec): Handle .plt section in BSS segment. - -2005-11-01 Stefan Monnier - - * lread.c (readevalloop): Yet another int/Lisp_Object mixup (YAILOM). - - * window.c (window_loop): For LRU and LARGEST, let the `mini' argument - determine whether to consider dedicated windows as well. - (Fget_lru_window, Fget_largest_window): Add `dedicated' argument. - (Fdisplay_buffer): Do consider dedicated windows in those cases where - we will split the window rather than reuse it. - Don't try to use windows on other displays. - -2005-10-31 Dan Nicolaescu - - * puresize.h (BASE_PURESIZE): Increment to 1170000. - -2005-10-31 Romain Francoise - - * macfns.c: Update copyright year. - * m/gould.h: Likewise. - -2005-10-30 Kim F. Storm - - * xdisp.c (display_line): Restore it->current_x and call - extend_face_to_end_of_line when last glyph doesn't fit on line. - (set_glyph_string_background_width): Remove specific tests here - to see if face background should extend to end of line. Simplify. - -2005-10-30 Richard M. Stallman - - * alloc.c (BYTES_USED): Use uordblks, not arena. - (bytes_used_when_reconsidered): New variable. - (emacs_blocked_free): Set that. - -2005-10-29 Chong Yidong - - * alloc.c (emacs_blocked_free): Fix typo. - -2005-10-29 Richard M. Stallman - - * data.c (Fmake_variable_frame_local): Doc fix. - - * xdisp.c (handle_fontified_prop): Do nothing if memory full. - (format_mode_line_unwind_data): New arg SAVE_PROPTRANS - controls whether to save and restore mode_line_proptrans_alist. - Callers changed. - (unwind_format_mode_line): Work with that feature. - (redisplay_internal): Don't call prepare_menu_bars if memory full. - (move_elt_to_front): New function. - (display_mode_element): Use move_elt_to_front. - Don't bother munging text props on a null string. - Delete obsolete elts from mode_line_proptrans_alist. - (decode_mode_spec): Test Vmemory_full, not spare_memory. - (Fformat_mode_line): Clear mode_line_proptrans_alist after saving. - - * lisp.h (memory_full_cons_threshold): Declare. - (internal_lisp_condition_case): Declare. - - * alloc.c (syms_of_alloc) : Doc fix. - (Fmemory_full_p): Function deleted. - (syms_of_alloc): Don't defsubr it. - (memory_full_cons_threshold): New variable. - (spare_memory): Now a vector of 7 elts. - (buffer_memory_full): Don't set Vmemory_full here. - (xfree): Don't try to refill here. - (emacs_blocked_free): Record BYTES_USED in local var. - (memory_full): Now free all the slots in spare_memory. - (refill_memory_reserve): Allocate each slot in spare_memory. - (init_alloc_once): Call refill_memory_reserve. - - * keyboard.c (command_loop_1): Don't set Vmemory_full here. - - * eval.c (internal_lisp_condition_case): New function. - (Fcondition_case): Use internal_lisp_condition_case. - (Feval): Test Vmemory_full and memory_full_cons_threshold. - (Ffuncall): Likewise. - - * bytecode.c (Fbyte_code): Use internal_lisp_condition_case. - -2005-10-29 Stefan Monnier - - * syntax.c (Fparse_partial_sexp): Fix docstring. - -2005-10-28 Romain Francoise - - * puresize.h (BASE_PURESIZE): Increment to 1130000. - -2005-10-28 Richard M. Stallman - - * xfns.c (syms_of_xfns): Provide `x' as feature. - - * xdisp.c (decode_mode_spec): Define %e to indicate memory full. - - * editfns.c (Fformat): Don't include string padding - between info[n].start and info[n].end. - - * alloc.c (spare_memory): No longer static. - (xfree) [!SYSTEM_MALLOC]: Call refill_memory_reserve. - - * puresize.h (BASE_PURESIZE): Increment to 1120000. - -2005-10-27 Chong Yidong - - * data.c (Fmake_variable_frame_local): Add clarification to docstring. - - * fringe.c (update_window_fringes): Handle case where buffer ends - with a newline. - -2005-10-27 Kenichi Handa - - * coding.h (DECODE_SYSTEM): Fix argument name; name->str. - -2005-10-24 Kenichi Handa - - * charset.h (charset_mule_unicode_0100_24ff) - (charset_mule_unicode_2500_33ff, charset_mule_unicode_e000_ffff): - Extern them. - - * charset.c (charset_mule_unicode_0100_24ff) - (charset_mule_unicode_2500_33ff, charset_mule_unicode_e000_ffff): - New variables. - (Fsetup_special_charsets): Initialize them. - - * xterm.c (handle_one_xevent): Handle keysyms directly mapped to - supported Unicode characters. - -2005-10-25 Jason Rumney - - * w32fns.c (w32_to_x_font): Avoid forcing font widths. - -2005-10-25 YAMAMOTO Mitsuharu - - * image.c [MAC_OS] (image_load_qt_1): Check image size. - Use GraphicsImportGetImageDescription instead of - GraphicsImportGetNaturalBounds. - [MAC_OSX] (image_load_quartz2d): Check image size. - [MAC_OS] (xpm_load_image): Likewise. - - * macterm.c (last_mouse_glyph_frame): New var. - (note_mouse_movement): Say mouse moved if current frame differs - from last_mouse_glyph_frame, and update last_mouse_glyph_frame. - (XTmouse_position): Set last_mouse_glyph_frame. - (XTread_socket): Clear last_mouse_glyph_frame on mouse up/down event. - (mac_draw_string_common) [USE_ATSUI && WORDS_BIG_ENDIAN]: Fix typo. - Use EndianU16_BtoN. - (mac_draw_string_common) [MAC_OSX]: Don't use ATSUClearLayoutControls. - (x_per_char_metric, XLoadQueryFont) - [MAC_OS_X_VERSION_MAX_ALLOWED < 1020]: Use device origins to get - glyph bounds. - (mac_to_x_fontname, mac_do_list_fonts) - (mac_initialize_display_info): Change screen resolutions to 72dpi. - -2005-10-25 Masatake YAMATO - - * minibuf.c (Fdisplay_completion_list): Small doc fix. - -2005-10-24 Kim F. Storm - - * xterm.c: Undo 2005-10-23 change. - (last_mouse_glyph_frame): New var. - (note_mouse_movement): Say mouse moved if current frame differs - from last_mouse_glyph_frame, and update last_mouse_glyph_frame. - (XTmouse_position): Set last_mouse_glyph_frame. - (handle_one_xevent): Clear last_mouse_glyph_frame [instead of - last_mouse_glyph] on mouse up/down event. - - * editfns.c (Fcompare_buffer_substrings): Fix last change. - -2005-10-23 Stefan Monnier - - * editfns.c (Fcompare_buffer_substrings): Handle multibyte chars. - -2005-10-23 Jan Dj,Ad(Brv - - * xterm.c (note_mouse_movement): Always call note_mouse_highlight - so tool tips don't interfere with press on tool bar button. - -2005-10-23 Richard M. Stallman - - * casetab.c (Fset_case_table): Doc fix. - - * lread.c (build_load_history): Replace STREAM arg with ENTIRE. - (readevalloop): Compute ENTIRE properly. - (syms_of_lread) : Doc fix. - -2005-10-21 Richard M. Stallman - - * lread.c (Fload): Simplify gcpro structure. - Gcpro FOUND as well as FILE, but not EFOUND. - Unless preloading, record FOUND instead of FILE in Vload_history. - Rename repeat local FILE to MSG_FILE. - (syms_of_lread) : Doc fix. - -2005-10-21 Kenichi Handa - - * search.c (boyer_moore): Add parens to fix and/or precedence bug. - -2005-10-20 Kim F. Storm - - * buffer.c (clone_per_buffer_values): Remove unused var tem. - (init_buffer): Remove unused vars dotstat, pwdstat. - - * ccl.c (check_ccl_update): Remove unused var vp. - - * fileio.c (auto_save_error): Call SAFE_FREE. - - * fns.c (Fchar_table_range): Remove unused var i. - - * minibuf.c (display_completion_list_1): New wrapper function - for Fdisplay_completion_list. - (Fminibuffer_completion_help): Use it. - - * term.c (encode_terminal_code): Remove unused var src_start. - - * window.c (Fwindow_tree): Remove unused var alist. - - * xterm.c (x_calc_absolute_position): Remove unused vars win_x, win_y. - -2005-10-20 Aubrey Jaffer (tiny change) - - * unexelf.c (unexec): Fix calls to `fatal' with less than 3 arguments. - -2005-10-20 Olli Savia (tiny change) - - * syssignal.h [__Lynx__]: Undef SIGPOLL along with SIGIO. - -2005-10-20 Andreas Schwab - - * minibuf.c (Fdisplay_completion_list): Doc fix. - -2005-10-19 Kim F. Storm - - * image.c (check_image_size): Handle integer Vmax_image_size value - directly as max pixel value. Use default frame size for null frame. - (syms_of_image) : Describe integer value. - -2005-10-19 Romain Francoise - - * emacs.c (main): Update copyright year. - -2005-10-18 Chong Yidong - - * image.c (Vmax_image_size): New variable. - (check_image_size): New function. - (xbm_read_bitmap_data, pbm_load, png_load, jpeg_load, tiff_load) - (gif_load, gs_load): Use it. - (lookup_image): Try loading again if previous load failed. - (xbm_read_bitmap_data): Add a new argument, a pointer to the frame - to display in, NULL if none. - (xbm_load_image, xbm_file_p): Pass xbm_read_bitmap_data the new - argument. - -2005-10-18 Richard M. Stallman - - * search.c (Fstring_match): Doc fix. - -2005-10-18 YAMAMOTO Mitsuharu - - * macterm.c (note_mouse_movement): Use PtInRect. - (XTread_socket): Also ignore mouse motion just before a button - release event. Don't process button release event when mouse is - not grabbed. - -2005-10-16 Masatake YAMATO - - * minibuf.c (Fdisplay_completion_list): Add new optional - argument COMMON_SUBSTRING. Bind `completion-common-substring' - to the optional argument during running `completion-setup-hook'. - -2005-10-16 YAMAMOTO Mitsuharu - - * mac.c [TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp): - Allow nil as argument. - [TARGET_API_MAC_CARBON] (Fmac_code_convert_string): Regard nil - for encoding arguments as UTF-16 in native byte order, no BOM. - - * macfns.c (Fx_create_frame): Add debugging code. - (Fx_show_tip): Set frame pixel width and height. - - * macterm.c (MAC_WINDOW_NORMAL_GC): Remove macro. - (FRAME_NORMAL_GC): New macro. - (mac_draw_line, mac_clear_area, mac_clear_window) - (mac_fill_rectangle, mac_draw_string, mac_draw_string_16) - (mac_draw_image_string, mac_draw_image_string_16): Rename from - XDrawLine, XClearArea, XClearWindow, XFillRectangle, XDrawString, - XDrawString16, XDrawImageString, and XDrawImageString16, respectively. - All uses changed. - (mac_draw_line, mac_erase_rectangle, mac_clear_area) - (mac_clear_window, mac_draw_bitmap, mac_draw_rectangle) - (mac_invert_rectangle, mac_draw_string_common, mac_draw_string) - (mac_draw_string_16, mac_draw_image_string) - (mac_draw_image_string_16, mac_copy_area, mac_copy_area_with_mask) - (mac_scroll_area): Drawing functions now take frame as destination. - All uses changed. - (mac_draw_string_common): Get port height with FRAME_PIXEL_HEIGHT. - (x_draw_fringe_bitmap): Set clipping area in face->gc. - - * macterm.h (mac_clear_area): Add extern. - -2005-10-14 YAMAMOTO Mitsuharu - - * macterm.c (note_mouse_movement, XTread_socket): Apply 2005-10-14 - changes for xterm.c. - - * w32term.c (note_mouse_movement, w32_read_socket): Likewise. - -2005-10-14 Kenichi Handa - - * search.c (search_buffer): Give up BM search on case-fold-search - if one of a target character has a case-equivalence of different - charset even if that target charcter is an ASCII. - - * casefiddle.c (casify_object): Fix for the case that case - conversion change the byte length. - -2005-10-14 Kim F. Storm - - * xterm.c (note_mouse_movement): Return 1 if mouse moved; 0 otherwise. - (handle_one_xevent): Only clear help_echo_string; restore it if - note_mouse_movement didn't record any mouse movement. - - * xdisp.c (pos_visible_p): Convert w->hscroll to pixels before use. - (remember_mouse_glyph): Clear RECT if mouse is over an image glyph. - - * keyboard.c (make_lispy_position): Adjust wx for left margin if - ON_TEXT. - (Fposn_at_x_y): Fix calculation of x coordinate. - (Fposn_at_point): Return nil if point is hscrolled out of view. - -2005-10-13 Andreas Schwab - - * sysdep.c (request_sigio, unrequest_sigio): Do nothing in - non-interactive mode. - -2005-10-12 YAMAMOTO Mitsuharu - - * xterm.c, w32term.c, macterm.c (note_mouse_movement): Undo last change. - -2005-10-12 Kim F. Storm - - * xterm.c (handle_one_xevent): Clear last_mouse_glyph on mouse up/down. - -2005-10-12 Romain Francoise - - * buffer.c (init_buffer): Rename `rc' to `len' for clarity. - -2005-10-12 YAMAMOTO Mitsuharu - - * xdisp.c (remember_mouse_glyph): Use MATRIX_BOTTOM_TEXT_ROW to - get end of text rows. Obtain header-line/mode-line rows directly. - - * xterm.c, w32term.c, macterm.c (note_mouse_movement): - Restore help_echo_string if mouse is moved inside last_mouse_glyph. - -2005-10-12 Kim F. Storm - - * xdisp.c (remember_mouse_glyph): New generic version based on - glyph_rect and remember_mouse_glyph from xterm.c enhanced to - properly handle all different window areas. - - * dispextern.h (remember_mouse_glyph): Add prototype. - - * xterm.c (glyph_rect, remember_mouse_glyph): Remove X versions. - (note_mouse_movement, XTmouse_position): Use generic - remember_mouse_glyph, add last_mouse_glyph arg. - - * w32term.c (note_mouse_movement): Fix last_mouse_glyph check. - (glyph_rect, remember_mouse_glyph): Remove w32 specific versions. - (note_mouse_movement, w32_mouse_position): Use generic - remember_mouse_glyph, add last_mouse_glyph arg. - - * macterm.c (note_mouse_movement): Add call to remember_mouse_glyph. - (glyph_rect, remember_mouse_glyph): Remove mac specific versions. - (XTmouse_position): Adapt to use generic remember_mouse_glyph - instead of pixel_to_glyph_coords. - - * window.c (coordinates_in_window): Fix x position for ON_RIGHT_MARGIN. - Fix x position for ON_TEXT when left margin width > 0. - -2005-10-11 Kim F. Storm - - * window.c (coordinates_in_window): Fix y position for ON_SCROLL_BAR. - - * keyboard.c (make_lispy_position): Fix buffer calculations for - mouse click or movement in right fringe and the margins. - -2005-10-11 Juanma Barranquero - - * image.c (fn_jpeg_stdio_src): Don't define it. - (init_jpeg_functions): Don't initialize `fn_jpeg_stdio_src'. - (our_common_init_source): Rename from `our_init_source'. - (our_common_term_source): Rename from `our_term_source'. - (our_memory_fill_input_buffer): Rename from - `our_fill_input_buffer'. - (our_memory_skip_input_data): Rename from `our_skip_input_data'. - (jpeg_memory_src): Use the new names. - (struct jpeg_stdio_mgr): New struct. - (JPEG_STDIO_BUFFER_SIZE): New constant. - (our_stdio_fill_input_buffer, our_stdio_skip_input_data) - (jpeg_file_src): New functions. - (jpeg_load): Use `jpeg_file_src' instead of `fn_jpeg_stdio_src'. - -2005-10-11 YAMAMOTO Mitsuharu - - * macterm.c (PER_CHAR_METRIC): Remove unused macro. - (fm_font_family_alist): New variable. - (syms_of_macterm): Initialize and staticpro it. - (decode_mac_font_name): Replace '-' in family name with '_' if it - occurs just once. Lower family name. - (parse_x_font_name): Rename from x_font_name_to_mac_font_name. - All uses changed. Remove argument MF and code conversion for it. - Add argument SIZE. Rename argument MF_DECODED to FAMILY, and CS - to CHARSET. Parse font size. Lower family name. Return integer - value for status of parsing. - (init_font_name_table) [USE_ATSUI]: Use decode_mac_font_name. - Don't use Fdowncase because family name is already lowered by - decode_mac_font_name. - (init_font_name_table): Always call decode_mac_font_name. - Add pair of family name and its reference to fm_font_family_alist. - (mac_clear_font_name_table): Clear fm_font_family_alist. - (XLoadQueryFont): Move font size parsing part to parse_x_font_name. - Lookup fm_font_family_alist to get font family reference. - (XLoadQueryFont) [USE_ATSUI]: Don't use Fdowncase because family - name is already lowered by parse_x_font_name. - -2005-10-11 Kim F. Storm - - * xterm.c (glyph_rect): Return 0 if position is outside text area. - - * keyboard.c (make_lispy_position): Fix buffer position calculation for - mouse click or movement in fringe. - -2005-10-10 Jason Rumney - - * xterm.c (remember_mouse_glyph): New function. - (note_mouse_movement): Use it to remember the current glyph if changed. - (XTmouse_position): Fix calculation of fake glyph under mouse. - Move code to calculate glyph under mouse into remember_mouse_glyph. - -2005-10-10 Jan Dj,Ad(Brv - - * emacs.c (USAGE3, standard_args): -nb => -nbi. - -2005-10-10 Juanma Barranquero - - * frame.c (Fredirect_frame_focus): Fix typos in docstring. - (next_frame, prev_frame, set_term_frame_name): Make static. - - * window.c (Fwindow_tree): Fix spelling. - -2005-10-09 Romain Francoise - - * window.c (Fwindow_end): Don't try to redisplay if non-interactive. - -2005-10-09 Jan Dj,Ad(Brv - - * emacs.c (standard_args): Remove options -i, -itype, --icon-type. - Add options -nb, --no-bitmap-icon. - - * xfns.c (Fx_create_frame): Make bitmapIcon have default on. - -2005-10-08 YAMAMOTO Mitsuharu - - * macgui.h (MAX_CLIP_RECTS): New define. - (struct _XGC): New member clip_region. - (struct _XGC) [MAC_OSX && USE_ATSUI]: New members n_clip_rects and - clip_rects. - - * macterm.c (GC_CLIP_REGION): New macro. - (saved_port_clip_region): New variable. - (mac_begin_clip, mac_end_clip): New functions. - (XDrawLine, mac_erase_rectangle, mac_draw_bitmap, XFillRectangle) - (mac_draw_rectangle, mac_draw_string_common, mac_copy_area) - (mac_copy_area_with_mask, mac_scroll_area): Use them. - (mac_set_clip_rectangle, mac_reset_clipping): Remove functions. - [USE_ATSUI] (atsu_get_text_layout_with_text_ptr) - [MAC_OS_X_VERSION_MAX_ALLOWED < 1020]: Specify kATSLineFractDisable. - (mac_draw_string_common) [MAC_OSX && USE_ATSUI]: Clip to clipping - rectangles stored in gc. - (XFreeGC): Dispose of clipping region. - (mac_set_clip_rectangles, mac_reset_clip_rectangles): New functions. - (x_draw_fringe_bitmap, x_set_glyph_string_clipping) - (x_draw_relief_rect, x_draw_box_rect, x_draw_stretch_glyph_string) - (x_draw_glyph_string, x_clip_to_row, x_draw_hollow_cursor) - (x_draw_bar_cursor): Use them. - (x_set_glyph_string_clipping): Use get_glyph_string_clip_rects to - get multiple clipping rectangles. - - * macterm.h (mac_term_init): Add types to extern. - (struct mac_output): Remove members mWP and pending_menu_activation. - Put members scroll_bar_foreground_pixel and - scroll_bar_background_pixel in #if 0. - (FRAME_MAC_WINDOW, FRAME_X_WINDOW): Use window_desc. - - * xfaces.c (x_create_gc, x_free_gc) [MAC_OS]: Add BLOCK_INPUT. - Add debugging code. - -2005-10-08 Kim F. Storm - - * window.c (window_tree, Fwindow_tree): Rename fns added 2005-10-04. - -2005-10-07 Kim F. Storm - - * dispnew.c (redraw_overlapped_rows, redraw_overlapping_rows) - [!HAVE_WINDOW_SYSTEM]: Don't declare them... - (update_window) [!HAVE_WINDOW_SYSTEM]: ...and don't call them. - -2005-10-07 YAMAMOTO Mitsuharu - - * dispextern.h (struct glyph_string): Rename member for_overlaps_p - to for_overlaps. Now occupy 3 bits. - (OVERLAPS_PRED, OVERLAPS_SUCC, OVERLAPS_BOTH) - (OVERLAPS_ERASED_CURSOR): New defines. - (struct redisplay_interface): Add new OVERLAPS arg to member - fix_overlapping_area. - (x_fix_overlapping_area): Add new OVERLAPS arg. - (get_glyph_string_clip_rects): Add extern. - - * dispnew.c (redraw_overlapping_rows): - Call rif->fix_overlapping_area with new OVERLAPS arg as redrawn part. - - * xdisp.c: Rename member for_overlaps_p in struct glyph_string to - for_overlaps. - (get_glyph_string_clip_rects): New function created from - get_glyph_string_clip_rect. Set clipping rectangles according to the - value of for_overlaps. Enable to store multiple clipping rectangles. - (get_glyph_string_clip_rect): Use get_glyph_string_clip_rects. - (fill_composite_glyph_string, fill_glyph_string, draw_glyphs): - Rename argument OVERLAPS_P to OVERLAPS. All uses in macros changed. - (x_fix_overlapping_area): Add OVERLAPS arg. Pass it to draw_glyphs. - (draw_phys_cursor_glyph): Set width of erased cursor to use it for - calculating clipping rectangles later. Call x_fix_overlapping_area - with new OVERLAPS arg to draw only erased cursor area. - (expose_overlaps): Call x_fix_overlapping_area with new OVERLAPS arg - to draw overlaps in both preceding and succeeding rows. - - * xterm.c, w32term.c, macterm.c: Rename member for_overlaps_p in - struct glyph_string to for_overlaps. - -2005-10-04 Richard M. Stallman - - * alloc.c (refill_memory_reserve): Conditionalize the body, - not the function's existence. - -2005-10-04 Kim F. Storm - - * window.c (window_split_tree): New function. - (Fwindow_split_tree): New defun. - (syms_of_window): Defsubr it. - -2005-10-04 YAMAMOTO Mitsuharu - - * macterm.c (mac_invert_rectangle): New function. - (XTflash): Use it. - -2005-10-04 Stefan Monnier - - * regex.h (re_char): Don't expose it in the interface. - (re_set_whitespace_regexp): Adjust the arg's type to not use it. - - * regex.c (re_char): Move it back here. - (re_set_whitespace_regexp): Change the arg's type to not use it. - - * keyboard.c (make_lispy_event): If point has moved between down and up - event, make it a drag, not a click, to mirror what - mouse-drag-region expects. - -2005-10-02 Dan Nicolaescu - - * lisp.h (fatal): Undo previous change. - * term.c (fatal): Undo previous change. - -2005-10-01 Richard M. Stallman - - * xfaces.c (face_color_gray_p): Colors close to black count as gray. - -2005-10-01 Kim F. Storm - - * xdisp.c (try_window): Skip scroll-margin check if ZV is visible. - -2005-10-01 YAMAMOTO Mitsuharu - - * keyboard.c (init_keyboard) [MAC_OSX]: Don't install SIGINT handler. - - * macfns.c (start_hourglass): Apply 2005-05-07 change for xfns.c. - (x_create_tip_frame) [GLYPH_DEBUG]: Uncomment debugging code. - (Fx_create_frame, x_create_tip_frame) [USE_ATSUI]: - Try ATSUI-compatible 12pt Monaco font first. - - * macgui.h (struct _XCharStruct): New member valid_p. - (STORE_XCHARSTRUCT): Set valid_p. - (struct MacFontStruct) [USE_ATSUI]: New member mac_style. - - * macterm.c (mac_draw_string_common, x_per_char_metric) - (mac_compute_glyph_string_overhangs, init_font_name_table) - (XLoadQueryFont, mac_unload_font) [USE_ATSUI]: Add ATSUI support. - (atsu_get_text_layout_with_text_ptr) [USE_ATSUI]: New function. - (x_draw_glyph_string_background) - (x_draw_glyph_string_foreground) [MAC_OS8 && USE_ATSUI]: Don't use - XDrawImageString. Always draw background and foreground separately. - (x_draw_glyph_string_foreground) [USE_ATSUI]: Don't use 8-bit - functions for one-byte chars when using ATSUI-compatible fonts. - (atsu_font_id_hash) [USE_ATSUI]: New variable. - (syms_of_macterm) [USE_ATSUI]: Initialize and staticpro it. - (XLoadQueryFont): Set min_byte1, max_byte1, min_char_or_byte2, and - max_char_or_byte2 more in detail. - (quit_char_comp, mac_check_for_quit_char) [MAC_OSX]: Remove functions. - -2005-09-30 Dan Nicolaescu - - * image.c (slurp_file, xbm_read_bitmap_data): Cast to the correct type. - * xterm.c (handle_one_xevent, handle_one_xevent): Likewise. - - * unexelf.c (fatal): Fix prototype. - - * term.c (fatal): Implement using varargs. - - * regex.c (re_char): Move typedef ... - * regex.h (re_char): ... here. - (re_iswctype, re_wctype, re_set_whitespace_regexp): New prototypes. - - * emacs.c (malloc_set_state): Fix return type. - (endif): Fix type. - - * lisp.h (fatal): Add argument types. - - * dispextern.h (fatal): Delete prototype. - - * systime.h (make_time): Prototype moved from ... - * editfns.c (make_time): ... here. - - * editfns.c: Move systime.h include after lisp.h. - * dired.c: - * xsmfns.c: - * process.c: Likewise. - - * alloc.c (old_malloc_hook, old_realloc_hook, old_realloc_hook): - Add parameter types. - (__malloc_hook, __realloc_hook, __free_hook): Fix prototypes. - (emacs_blocked_free): Change definition to match __free_hook. - (emacs_blocked_malloc): Change definition to match __malloc_hook. - (emacs_blocked_realloc): Change definition to match __realloc_hook. - -2005-09-30 Romain Francoise - - * minibuf.c (Fread_buffer): Follow convention for reading from the - minibuffer with a default value. Doc fix. - -2005-09-29 Juri Linkov - - * editfns.c (Fmessage, Fmessage_box, Fmessage_or_box): - Rename argument name `string' to `format-string'. - (Fformat): Doc fix. - -2005-09-28 Kim F. Storm - - * image.c (gif_load): Fix size of allocated image buffer - for images where a sub-image may be larger than the image's - total height/width specifications. - -2005-09-28 YAMAMOTO Mitsuharu - - * macgui.h (struct _XCharStruct): Each member now takes short value. - -2005-09-27 Dan Nicolaescu - - * xfaces.c (lookup_derived_face): Add parameter type. - - * xdisp.c (cursor_row_fully_visible_p): Add parameter type. - - * marker.c (verify_bytepos): Add parameter type. - - * process.c (get_operating_system_release): Move prototype ... - - * systime.h (get_operating_system_release): ... here. - - * xterm.c (handle_one_xevent): Refer to union field to match the - type required by the function definition. - (set_vertical_scroll_bar): Move prototype ... - - * xterm.h: ... here. - - * fns.c (internal_equal, seed_random): Fix prototypes. - (internal_equal): Add missing parameter. - -2005-09-25 Richard M. Stallman - - * keyboard.c (update_menu_bindings): Variable deleted. - (syms_of_keyboard): Don't defvar it. - (parse_menu_item): Don't test it. - -2005-09-23 Richard M. Stallman - - * editfns.c (Fformat): Explicitly test for end of format string - and don't use `index'. - -2005-09-23 Dan Nicolaescu - - * s/aix4-2.h (BROKEN_GET_CURRENT_DIR_NAME): - Define BROKEN_GET_CURRENT_DIR_NAME. - - * sysdep.c (get_current_dir_name): Also define if - BROKEN_GET_CURRENT_DIR_NAME. - - * m/ibmrs6000.h: Test for USG5, not USG5_4. - -2005-09-22 Kim F. Storm - - * xdisp.c (message_dolog): Add warning about GC and Lisp strings. - (message2): Fix commentary. Ok to use alloca'ed memory. - Still not ok to use Lisp string data (because of GC). - (set_message): Add comment why GC cannot happen. - -2005-09-22 YAMAMOTO Mitsuharu - - * macterm.c (xlfdpat_block_match_1): Fix assertion. - (init_font_name_table) [TARGET_API_MAC_CARBON]: Don't add style - variants for a scalable font multiple times. - -2005-09-21 YAMAMOTO Mitsuharu - - * process.c (create_process) [RTU || UNIPLUS || DONT_REOPEN_PTY]: - Setup slave tty options before forking. - -2005-09-20 Jan Dj,Ad(Brv - - * gtkutil.c (xg_set_geometry): Do a gtk_window_move if program - positions have been set for the frame (as is done for frames in - special-display-buffer-names). - -2005-09-19 Kim F. Storm - - * editfns.c (Fformat): Don't scan past end of format string that - ends in %. Reported by Johan Bockg,Ae(Brd. - -2005-09-18 Andreas Schwab - - * window.h (struct window): Remove height_fixed_p, no longer set. - - * window.c (make_window): Don't initialize height_fixed_p. - (window_fixed_size_p): Don't use it. - -2005-09-18 John Paul Wallington - - * data.c (Fdefalias): Signal an error if SYMBOL is not a symbol. - -2005-09-18 YAMAMOTO Mitsuharu - - * Makefile.in (SOME_MACHINE_OBJECTS): Undo previous change. - - * macfns.c (image_cache_refcount, dpyinfo_refcount) [GLYPH_DEBUG]: - New variables. - [TARGET_API_MAC_CARBON] (Fx_file_dialog): Don't allow multiple - file selection. - - * sysdep.c [MAC_OS8]: Don't include stdlib.h. Include sys/param.h. - -2005-09-17 Eli Zaretskii - - * Makefile.in (XMENU_OBJ) [!HAVE_CARBON]: Reinstate variable. - (obj): Use XMENU_OBJ, not a literal xmenu.o. - -2005-09-16 Romain Francoise - - * fileio.c (syms_of_fileio) : Doc fix. - -2005-09-15 Richard M. Stallman - - * xdisp.c (overlay_arrow_at_row): Add HAVE_WINDOW_SYSTEM conditional. - (display_mode_element): Instead of `lisp_string' and `this', - record `offset' and increment that. - `last_offset' replaces `last'. - - * Makefile.in (XMENU_OBJ): Variable deleted. - (obj): Use xmenu.o unconditionally. - (SOME_MACHINE_OBJECTS): Delete xmenu.o. - - * emacs.c (main): Don't conditionalize syms_of_xmenu on HAVE_XMENU. - -2005-09-15 Kim F. Storm - - * xdisp.c (move_it_vertically): Don't try to fetch byte BEGV-1. - (reseat_at_next_visible_line_start): Likewise (in xassert). - -2005-09-14 Romain Francoise - - * fileio.c (write_region_inhibit_fsync): New variable. - (Fwrite_region): Use it to skip call to fsync. - (syms_of_fileio): Initialize it. - -2005-09-14 Kenichi Handa - - * coding.c (code_convert_region_unwind): Argument format changed. - (run_pre_post_conversion_on_str): If pre-write-conversion function - changed the current buffer, delete the new buffer. - (run_pre_write_conversin_on_c_str): Likewise. - - * fileio.c (Fexpand_file_name): Check multibyteness of - default_directory. - -2005-09-13 Kenichi Handa - - * composite.c (compose_chars_in_text): Delete it. - - * composite.h (compose_chars_in_text): Delete extern. - -2005-09-13 Kim F. Storm - - * print.c (print_error_message): Fix last change. - -2005-09-12 Kim F. Storm - - * composite.c (compose_chars_in_text): Fix setup of `pend'. - Unconditionally reload `ptr' and `pend' after eval. - - * xdisp.c (message3): Pass copy of lisp string to message_dolog. - - * print.c (print_error_message): Pass copy of caller name to - message_dolog. - - * fileio.c (auto_save_error): Pass copy of lisp string to message2. - -2005-09-12 Kenichi Handa - - * xdisp.c (display_mode_element): Be sure to make variables THIS - and LISP_STRING point into a string data of ELT. - -2005-09-12 Kim F. Storm - - * editfns.c (Ftranslate_region_internal): Reload `tt' after - signal_after_change that may have GC'ed. - (Fmessage, Fmessage_box, Fmessage_or_box): Doc fix. - - * keymap.c (Fdescribe_buffer_bindings): Reload `translate' - after insert while runs signal_after_change. - - * minibuf.c (Fminibuffer_complete_word): Move `completion_string' - declaration to where it is used. - - * w32.c (check_windows_init_file): Fix allocation of error buffer. - - * xfns.c (x_encode_text): Declare static. Add FREEP arg. - (x_set_name_internal): Call x_encode_text with new FREEP arg to - know if xfree is needed instead of guessing. - - * xterm.h (x_encode_text): Remove prototype. - -2005-09-11 Chris Prince (tiny change) - - * w32term.c (x_bitmap_icon): Load small icons too. - -2005-09-10 Romain Francoise - - * buffer.c (init_buffer): Grow buffer to add directory separator - and terminal zero. Fix typos. - -2005-09-10 Eli Zaretskii - - * buffer.c (init_buffer): Fix error message for failed call to - get_current_dir_name. - (get_current_dir_name): Remove prototype. - - * xsmfns.c (get_current_dir_name): Remove prototype. - - * lisp.h (get_current_dir_name) [!HAVE_GET_CURRENT_DIR_NAME]: - Add prototype. - - * sysdep.c [WINDOWSNT]: Add prototype for getwd. - Don't #undef NULL after including blockinput.h. - - * config.in: Regenerated. - -2005-09-10 Giuseppe Scrivano - - Remove the MAXPATHLEN limitations: - - * sysdep.c (get_current_dir_name) [!HAVE_GET_CURRENT_DIR_NAME]: - New function. - - * buffer.c (init_buffer): Use it. - - * xsmfns.c (smc_save_yourself_CB): Ditto. - -2005-09-09 Kim F. Storm - - * doc.c (Fsubstitute_command_keys): Lookup key binding for - commands that are remapped from some other command. - - * xdisp.c (try_window_reusing_current_matrix): Clear mode_line_p - flag in disabled rows below the window. - - * frame.h (struct frame): New member updated_p. - - * xdisp.c (redisplay_internal): Mark updated frames in new updated_p - member. Remove local `updated' array and associated variables. - -2005-09-07 Kim F. Storm - - * xdisp.c (handle_display_prop): Respect overlay window property. - - * xdisp.c (try_window): Remove superfluous cursor_height calculation. - Fixes crash reported by YAMAMOTO Mitsuharu. - -2005-09-06 YAMAMOTO Mitsuharu - - * macterm.c (struct xlfdpat_block, struct xlfdpat): New structs. - (xlfdpat_destroy, xlfdpat_create, xlfdpat_exact_p) - (xlfdpat_block_match_1, xlfdpat_match): New functions. - (xlfdpat_block_match): New macro. - (mac_to_x_fontname): Don't use tolower for non-ASCII characters. - (x_font_name_to_mac_font_name): Set coding.dst_multibyte to 0. - (add_font_name_table_entry): Increase font_name_table_size more - rapidly. - (mac_c_string_match): Remove function. - (mac_do_list_fonts): Use XLFD pattern match instead of regular - expression match. - - * xfaces.c (xstrlwr): Don't use tolower for non-ASCII characters. - -2005-09-03 Richard M. Stallman - - * xdisp.c (redisplay_internal): Make UPDATED as long as needed. - (move_it_in_display_line_to): Stop after last char on line even - on a windowing terminal, if that's the specified stop position. - - * fns.c (Fsort): Doc fix. - - * editfns.c (Fpropertize): Don't insist that properties be symbols. - -2005-09-02 Stefan Monnier - - * dired.c (directory_files_internal_unwind, directory_files_internal) - (file_name_completion): Use a Save_Value object rather than a cons of - two 16bit ints to store the DIR*. - (directory_files_internal, file_name_completion): Handle both EINTR and - EAGAIN consistently after `readdir'. - -2005-09-01 Stefan Monnier - - * intervals.c (update_interval): Add position info in error. - - * dispnew.c (window_to_frame_hpos, update_window): - Avoid gcc warning about unused variable `f'. - -2005-08-31 Jason Rumney - - * w32menu.c (add_menu_item): If unicode_append_menu returns an - error, revert to using AppendMenu. - -2005-08-31 YAMAMOTO Mitsuharu - - * image.c (PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. - All uses changed. - [MAC_OS] (XPutPixel, XGetPixel): Add efficient versions for common - cases. - (x_create_x_image_and_pixmap) [MAC_OS]: Don't call x_destroy_x_image. - [MAC_OS] (find_image_fsspec) [!MAC_OSX]: Don't use FSRef. - Use posix_pathname_to_fsspec. - [MAC_OS] (xpm_load_image): Fill in background_transparent field - while we have mask. - - * macgui.h [!TARGET_API_MAC_CARBON] (GetPixDepth): New define. - - * macterm.h (PIX_MASK_DRAW, PIX_MASK_RETAIN): Move defines to image.c. - -2005-08-29 Stefan Monnier - - * syntax.c (update_syntax_table): Properly reproduce the special +1 - setting of e_property at the end of the buffer when bumping into the - INTERVALS_AT_ONCE limit. - -2005-08-27 Eli Zaretskii - - * emacs.c (USAGE1): Fix the description of the -Q option. - -2005-08-26 Stefan Monnier - - * xdisp.c (pos_visible_p): Yet another int/Lisp_Object mixup (YAILOM). - -2005-08-26 Kim F. Storm - - * xdisp.c (resize_mini_window): Fix 2005-08-20 change. - Don't move PT to new window start. - -2005-08-25 YAMAMOTO Mitsuharu - - * keyboard.c (kbd_buffer_get_event) [MAC_OS]: Make events for - ICONIFY/DEICONIFY_EVENT. - - * macterm.c (mac_copy_area, mac_copy_area_with_mask): - Restore background color. - (mac_handle_visibility_change): New function. - (x_make_frame_invisible, x_iconify_frame) - (XTread_socket) [!USE_CARBON_EVENTS]: Use it. - [USE_CARBON_EVENTS] (mac_handle_window_event) - (install_window_handler): Handle visibility change events. - (x_make_frame_visible): Don't reposition window if it is iconified - or asked for visible before. Select and uncollapse window when it - is made visible. - (x_make_frame_invisible): Don't reset x_highlight_frame. - (x_iconify_frame): Likewise. Make invisible frame visible before - it is iconified. - (read_socket_inev): Move variable outside #if USE_CARBON_EVENTS. - (do_window_update): Don't change visibility of invisible frame. - -2005-08-22 Juri Linkov - - * term.c (turn_on_face): Check for TS_set_foreground and - TS_set_background depending on standout_mode. Simplify. - -2005-08-21 Kim F. Storm - - * fringe.c (update_window_fringes): Only put TOP and BOTTOM - bitmaps on fully visible rows. - - * fringe.c (update_window_fringes): Replace FORCE_P arg with - KEEP_CURRENT_P arg; if non-zero, don't update current row fringes, - and return 0. - - * xdisp.c (redisplay_window): Call update_window_fringes with - KEEP_CURRENT_P non-0 if we are going to refresh fringes later. - -2005-08-20 Richard M. Stallman - - * xdisp.c (display_echo_area_1): Get display start pos from w->start. - (resize_mini_window): Set w->start, and PT, so as to display the tail - end of the buffer, if it doesn't all fit. - -2005-08-18 Kim F. Storm - - * xdisp.c (calc_pixel_width_or_height): Use actual display - resolution when available instead of Vdisplay_pixels_per_inch. - -2005-08-17 Kim F. Storm - - * xdisp.c (pos_visible_p): Adjust X value if window is hscrolled. - - * dispnew.c (buffer_posn_from_coords): Check that target row is - within matrix. - -2005-08-16 Jan Dj,Ad(Brv - - * xterm.c (x_wm_set_icon_pixmap): Move GTK specific code to - xg_set_frame_icon and call it. - - * gtkutil.c (xg_set_frame_icon): New function. - - * gtkutil.h (xg_set_frame_icon): Declare it. - -2005-08-16 Kim F. Storm - - * dispnew.c (increment_row_positions): Skip non-enabled rows. - - * window.c (SAVED_WINDOW_VECTOR_SIZE): Remove dangerous define. - (Fcurrent_window_configuration): Use VECSIZE macro instead. - -2005-08-15 Richard M. Stallman - - * xdisp.c (message3_nolog): Clear echo_message_buffer. - -2005-08-15 Kim F. Storm - - * lisp.h (QUIT) [!SYNC_INPUT]: Throw t to Vthrow_on_input. - - * process.c (deactivate_process, status_notify, read_process_output) - (update_status, status_convert, decode_status, allocate_pty) - (make_process, remove_process, list_processes_1) - (create_process_1, unwind_request_sigio, read_process_output) - (send_process, keyboard_bit_set): Declare static. - (Fdelete_process): Simplify. Pass process to status_notify, so we - don't try to read output from it. - (status_notify): New arg deleting_process--don't try to read - output from that process. - - * lisp.h (deactivate_process, status_notify, read_process_output): - Remove prototypes. - -2005-08-14 Richard M. Stallman - - * image.c (syms_of_image): Init Qxbm, Qpbm before calling - define_image_type. - -2005-08-13 Jan Dj,Ad(Brv - - * gtkutil.c (xg_get_pixbuf_from_pix_and_mask): New function. - (xg_get_image_for_pixmap): Move some code to - xg_get_pixbuf_from_pix_and_mask, and call it. - - * gtkutil.h (xg_get_pixbuf_from_pix_and_mask): Declare. - - * xterm.c (x_wm_set_icon_pixmap): Call xg_get_pixbuf_from_pix_and_mask - to get an GTK icon and set it with GTK functions to avoid having GTK - override an icon set with just X functions. - -2005-08-11 Richard M. Stallman - - * image.c (syms_of_image): Init image_types here, and call - define_image_type. - (init_image): Not here. - -2005-08-09 Richard M. Stallman - - * bytecode.c (BYTE_CODE_QUIT): Throw t to Vthrow_on_input. - - * lisp.h (QUIT): Throw t to Vthrow_on_input. - -2005-08-09 Thien-Thi Nguyen - - * floatfns.c (Fexpt): Use floats for negative exponent. - -2005-08-08 Jan Dj,Ad(Brv - - * gtkutil.c (xg_modify_menubar_widgets): Remove semicolon that - should not be there, causing menu display errors with GTK 2.6.9. - -2005-08-07 Richard M. Stallman - - * floatfns.c (Fexpt): Undo previous change. - - * dispnew.c (Fframe_or_buffer_changed_p): Take an arg - so it can be used with various state vectors. - - * emacs.c (endif): Convert -script into -scriptload. - (standard_args): Add -scriptload. Allow -basic-display with one dash. - - * fns.c (syms_of_fns): Add `emacs' to features. - - * term.c (set_terminal_modes): If no TS_termcap_modes string, - output newlines to scroll the old screen contents off the screen. - -2005-08-06 Thien-Thi Nguyen - - * floatfns.c (Fexpt): Use floats for negative exponent. - Reported by D Goel. - -2005-08-02 Richard M. Stallman - - * frame.c (Fframe_char_width): Doc fix. - -2005-07-30 Juanma Barranquero - - * xdisp.c (syms_of_xdisp) : - Defvar it. - -2005-07-28 Juanma Barranquero - - * w32fns.c (my_set_window_pos, my_show_window): Don't declare. - (my_create_window, my_create_tip_window): Make static. - - * w32term.c (my_show_window, my_set_window_pos, my_set_focus) - (my_set_foreground_window, my_destroy_window): Make static. - -2005-07-26 Paul Eggert - - Merge gnulib getopt implementation into Emacs. - - * s/cygwin.h (C_SWITCH_SYSTEM): Remove, since gettext.h is - now part of lib-src. - -2005-07-26 Stefan Monnier - - * eval.c (Fdefvar): Allow (defvar enable-multibyte-characters). - -2005-07-25 Jason Rumney - - * w32menu.c (w32_menu_display_help): Suppress tooltip when - navigating menus with the keyboard. - -2005-07-23 Richard M. Stallman - - * insdel.c (syms_of_insdel): staticpro combine_after_change_buffer. - - * bytecode.c (MAYBE_GC): Test gc_cons_threshold and - gc_relative_threshold, one by one. - - * keyboard.c (read_char): Test gc_cons_threshold. - (syms_of_keyboard): staticpro Qecho_area_clear_hook. - - * eval.c (Feval, Ffuncall): Test gc_cons_threshold and - gc_relative_threshold, one by one. - - * alloc.c (gc_cons_threshold): Not static. - (gc_cons_combined_threshold): Var deleted. - (gc_relative_threshold): New variable. - (Fgarbage_collect, init_alloc_once): Compute gc_relative_threshold - instead of gc_cons_combined_threshold. - - * lisp.h (gc_cons_threshold, gc_relative_threshold): Declare. - (gc_cons_combined_threshold): Declaration deleted. - -2005-07-23 YAMAMOTO Mitsuharu - - * mac.c: Don't include stdlib.h or string.h. - (Fdo_applescript, Fmac_file_name_to_posix) - (Fmac_file_name_to_posix): Doc fixes. - [TARGET_API_MAC_CARBON] (Fmac_get_preference) - (Fmac_code_convert_string): Likewise. - [MAC_OSX] (init_mac_osx_environment): Fall back on terminal mode - if the executable is not contained in a bundle. - - * macfns.c: Don't include stdlib.h or string.h. Include atimer.h. - (gray_width, gray_height): Remove defines. - (gray_bits, gray_bitmap_width, gray_bitmap_height) - (gray_bitmap_bits): Remove variables. - (lispy_function_keys): Remove extern. - (free_frame_menubar): Add extern. - (x_window_to_frame): Remove function. - (unwind_create_tip_frame): Add declaration. - (x_set_name_internal): New function. - (x_set_name, x_set_title): Use it. - (Fx_create_frame, Fx_display_grayscale_p, Fx_display_pixel_width) - (Fx_display_pixel_height, Fx_display_planes) - (Fx_display_color_cells, Fx_server_max_request_size) - (Fx_server_vendor, Fx_server_version, Fx_display_screens) - (Fx_display_mm_height, Fx_display_mm_width) - (Fx_display_backing_store, Fx_display_visual_class) - (Fx_display_save_under, Fx_synchronize, Fx_show_tip): Doc fixes. - - * macmenu.c (Fx_popup_menu, Fx_popup_dialog): Doc fixes. - - * macselect.c (Fx_own_selection_internal): Follow error conventions. - (Fx_get_selection_internal, Fx_selection_owner_p) - (Fx_selection_exists_p): Doc fixes. - (syms_of_macselect) : Likewise. - -2005-07-21 Juanma Barranquero - - * buffer.c (syms_of_buffer) : Doc fix. - - * ccl.c (Fregister_ccl_program): Fix typos in docstring. - (Fccl_execute_on_string): Likewise; add usage info. - - * composite.c (Fcompose_region_internal) - (Fcompose_string_internal): - Improve argument/docstring consistency. - - * minibuf.c (Fminibuffer_prompt_end, Feval_minibuffer): - Fix typos in docstrings. - - * textprop.c (Fnext_char_property_change) - (Fprevious_char_property_change): Doc fixes. - - * window.c (Fset_window_margins, Fset_window_fringes): - Improve argument/docstring consistency. - - * xfaces.c (Finternal_lisp_face_p): Doc fix. - -2005-07-21 Andreas Schwab - - * eval.c (restore_stack_limits): Return a value. - -2005-07-20 Juanma Barranquero - - * eval.c (Fdefvar): Doc fix. - -2005-07-20 Kim F. Storm - - * fileio.c (Fdo_auto_save, do_auto_save_unwind): - Use make_save_value to unwind protect stream. - - * lread.c (Fload, load_unwind): - Use make_save_value to unwind protect stream. - -2005-07-19 Juanma Barranquero - - * eval.c (Fprog2, Fcalled_interactively_p), - (syms_of_eval) : Doc fixes. - (syms_of_eval) : - (Finteractive_p): Fix typos in docstrings. - -2005-07-19 Kim F. Storm - - * w32fns.c (Vx_hand_shape): Variable removed. - (syms_of_w32fns): Intern and staticpro Qw32_charset_default. - -2005-07-19 Kenichi Handa - - * fns.c (Fstring_as_multibyte): Escape backslashes in the docstring. - -2005-07-18 Stefan Monnier - - * buffer.h (Fgenerate_new_buffer_name): Declare (for use in coding.c). - -2005-07-18 Kim F. Storm - - * frame.h (struct frame): New member already_hscrolled_p. - - * xdisp.c (redisplay_internal): Only try to hscroll each frame once - to avoid redisplay looping hscrolling back and forth ad infinitum. - -2005-07-18 Juri Linkov - - * buffer.c (scroll-up-aggressively, scroll-down-aggressively): - * keymap.c (Fminor_mode_key_binding): - * macterm.c (mac-emulate-three-button-mouse): - Delete duplicate duplicate words. - -2005-07-18 Ken Raeburn - - * minibuf.c (Ftest_completion): Fix odd syntax in test. - -2005-07-18 YAMAMOTO Mitsuharu - - * macfns.c (x_set_cursor_color): Use XSetBackground and XSetForeground. - - * macgui.h (struct _XGC): New struct. - (GC): Use it. - (GCForeground, GCBackground, GCFont): Use X11 mask values. - (XCreateGC, XParseGeometry): Move externs to macterm.h. - - * macterm.c (x_bitmap_icon, x_make_frame_visible): Remove declarations. - (XSetFont): Add declaration. - (mac_set_forecolor, mac_set_backcolor, mac_set_colors): - Remove functions. - (GC_FORE_COLOR, GC_BACK_COLOR, GC_FONT, MAC_WINDOW_NORMAL_GC): - New defines. - (XDrawLine, mac_draw_line_to_pixmap, XClearWindow) - (mac_draw_bitmap, XCreatePixmapFromBitmapData, XFillRectangle) - (mac_draw_rectangle, mac_draw_string_common, mac_scroll_area): - Use them. - (mac_erase_rectangle): New function. - (XClearArea, x_draw_fringe_bitmap, x_clear_glyph_string_rect) - (x_draw_stretch_glyph_string): Use it. - (XChangeGC, XCreateGC, XGetGCValues, XSetForeground) - (XSetBackground, XSetFont): Adjust for new GC implementation. - (x_draw_fringe_bitmap, x_draw_box_rect): Use GC to set colors. - (XTset_vertical_scroll_bar): Clear area under scroll bar. - - * macterm.h (struct mac_display_info): Change types of - scratch_cursor_gc black_relief.gc, and white_relief.gc to GC. - (XCreateGC, XParseGeometry): Move externs from macgui.h. - - * xfaces.c [MAC_OS] (XCreateGC): Remove extern. - -2005-07-16 Richard M. Stallman - - * buffer.c (Fmake_overlay): Doc fix. - -2005-07-16 Eli Zaretskii - - * w32proc.c (syms_of_ntproc): staticpro Qhigh, Qlow, - Vw32_valid_locale_ids, and Vw32_valid_codepages. - -2005-07-16 YAMAMOTO Mitsuharu - - * mac.c [TARGET_API_MAC_CARBON] (Fmac_code_convert_string): - Use Fstring_as_unibyte instead of string_make_unibyte. - -2005-07-15 Richard M. Stallman - - * xdisp.c (select_frame_for_redisplay): Use find_symbol_value. - -2005-07-15 Kim F. Storm - - * xdisp.c: Fix redisplay loop in last change. - (IT_POS_VALID_AFTER_MOVE_P): New macro. - (move_it_vertically_backward, move_it_by_lines): Use it. - -2005-07-14 Jason Rumney - - * w32.c (init_environment): Default HOME directory to user's - appdata directory if possible. - -2005-07-14 Kim F. Storm - - * .gdbinit (pitx): Fix output format. Print string charpos. - - * lread.c (syms_of_lread): Initialize seen_list. - - * search.c (syms_of_search): Staticpro searchbuf.whitespace_regexp. - - * syntax.c (syms_of_syntax): Staticpro lisp objects in gl_state. - Staticpro re_match_object. - -2005-07-14 YAMAMOTO Mitsuharu - - * macselect.c (get_scrap_target_type_list): Avoid NULL pointer - dereference. - - * macterm.c (mac_window_to_frame): Remove duplicate define. - -2005-07-14 Kenichi Handa - - * coding.c (code_convert_region_unwind): ARG is changed to a cons. - (code_convert_region): Adjust for the above change. - (set_conversion_work_buffer): If the work buffer is already in - use, generate a new buffer and return it. Otherwise return Qnil. - (run_pre_post_conversion_on_str): Adjust for the above change. - (run_pre_write_conversin_on_c_str): Likewise. - -2005-07-13 Kim F. Storm - - * xdisp.c (start_display): Don't reseat to next visible line start - if current start position is in a string or image. - (move_it_vertically_backward): Be sure to move out of strings and - images when moving it2 forward. - (move_it_by_lines): When moving forward, move to next buffer - position if we end up in a string or image. When moving backward, - count rows moved over when moving to start of current row in case - row starts in middle of a string or image. Also move further - backward if we end up in a string or image. - (try_cursor_movement): If overlay string spans multiple lines, - move backward to set cursor on start of an overlay string. - (cursor_row_p): Row is ok if cursor is at newline from string, but - string starts on this line (so we always position cursor at start - of string). - - * indent.c (Fvertical_motion): If start position is on an image, - don't move back if we move too far (that's almost certain to happen). - - * xdisp.c (cursor_row_fully_visible_p): Allow partially visible - row in minibuffer windows. - (try_window): Don't check margins in minibuffer windows. - -2005-07-13 YAMAMOTO Mitsuharu - - * macterm.c: Don't include stdlib.h or composite.h. - (x_use_underline_position_properties, last_mouse_press_frame) - (x_noop_count, Qvendor_specific_keysyms): Remove unused variables. - (syms_of_macterm, mac_initialize): Don't initialize them. - (waiting_for_input, initial_argv, initial_argc) - (Vcommand_line_args, Vx_no_window_manager, errno, window_scroll) - (set_frame_menubar, path_from_vol_dir_name): Remove externs. - (extra_keyboard_modifiers): Fix type in extern. - (x_window_to_frame, x_window_to_scroll_bar): Remove declarations. - (x_scroll_bar_report_motion): Add argument types to declaration. - (mac_compute_glyph_string_overhangs): Add declaration. - (disable_mouse_highlight): Remove unused variable. - [USE_TOOLKIT_SCROLL_BARS] (construct_scroll_bar_click) - (x_scroll_bar_handle_press, x_scroll_bar_handle_release) - (x_scroll_bar_handle_drag): Remove argument `timestamp'. - All callers changed. - [USE_TOOLKIT_SCROLL_BARS] (construct_scroll_bar_click): Don't set - timestamp. - [USE_CARBON_EVENTS] (mac_handle_mouse_event): Likewise. - (x_scroll_bar_create, XTset_vertical_scroll_bar): Show scroll bar - only when its width is less than the height. - (XTredeem_scroll_bar): Sync with xterm.c. - (font_name_table, font_name_table_size, font_name_count): - Make static. - (drag_and_drop_file_list): Remove variable. Previous use is now - local to function. - (do_ae_open_documents): Move DRAG_N_DROP event construction part - from XTread_socket. - (XTread_socket): Consolidate setting of event timestamp. - Move DRAG_N_DROP event construction part to do_ae_open_documents. - Support extra_keyboard_modifiers. - - * xfaces.c (try_font_list) [MAC_OS]: Try font family name - beginning with that for ASCII. - -2005-07-13 Stefan Monnier - - * alloc.c (gc_cons_combined_threshold, Vgc_cons_percentage): New vars. - (Fgarbage_collect, init_alloc_once): Set gc_cons_combined_threshold. - (syms_of_alloc): Declare gc-cons-percentage. - - * eval.c (Feval, Ffuncall): - * keyboard.c (read_char): - * bytecode.c (MAYBE_GC): Use gc_cons_combined_threshold. - - * lisp.h (gc_cons_combined_threshold): Declare. - -2005-07-12 Kim F. Storm - - * coding.c (Qprocess_argument): - * coding.h (Qprocess_argument): Remove unused var. - - * xselect.c (intern): Remove dup. intern and staticpro for QTIMESTAMP. - -2005-07-12 YAMAMOTO Mitsuharu - - * mac.c [!TARGET_API_MAC_CARBON]: Include charset.h, coding.h, and - Endian.h. - [!MAC_OSX] (fchmod, fchown): New functions. - (mac_get_code_from_arg): Don't accept Lisp integer as argument. - Use SBYTES and EndianU32_BtoN. - (mac_get_object_from_code): Return 4 byte string even if argument - is 0. Use make_unibyte_string and EndianU32_NtoB. - (Fmac_get_file_creator, Fmac_get_file_type, Fmac_set_file_creator) - (Fmac_set_file_type): Fix documents and argument declarations. - Don't specify kFSCatInfoNodeFlags. Support Mac OS Classic. - -2005-07-11 Stefan Monnier - - * window.c (Frecenter): Yet another int/Lisp_Object mixup (YAILOM). - -2005-07-11 Jan Dj,Ad(Brv - - * xfaces.c (x_update_menu_appearance): Use fontSet resource for - Lucid if X_I18N, font otherwise. - -2005-07-10 Steven Tamm - - * mac.c (Fmac_get_file_type, Fmac_get_file_creator): Add. - (Fmac_set_file_type, Fmac_set_file_creator): Add. - (mac_get_object_from_code, mac_get_code_from_arg): Add. - -2005-07-10 Richard M. Stallman - - * lread.c (Qeval_buffer_list, Veval_buffer_list): New vars. - (syms_of_lread): Set up eval-buffer-list. - (Feval_buffer, Feval_region): Bind eval-buffer-list. - -2005-07-08 Richard M. Stallman - - * eval.c (Fdefvar): Allow defvaring a constant to itself quoted. - -2005-07-08 Kim F. Storm - - * keyboard.c (menu_bar_items): Don't GCPRO menu_bar_items_vector here. - (syms_of_keyboard): Initialize and staticpro menu_bar_items_vector. - -2005-07-07 Kim F. Storm - - * window.c (Frecenter): Fix last change (set iarg before use). - -2005-07-06 Richard M. Stallman - - * window.c (Frecenter): When arg is inside the scroll margin, - move it out of the margin. - -2005-07-06 Jason Rumney - - * w32console.c (initialize_w32_display): Detect when the console - dimensions are insane, and default to 80x25 instead. - (w32_use_full_screen_buffer): Default to nil. - -2005-07-06 YAMAMOTO Mitsuharu - - * macterm.c (mac_draw_vertical_window_border): Use foreground of - VERTICAL_BORDER_FACE_ID for vertical border line. - (mac_encode_char): Call check_ccl_update in advance. - (mac_to_x_fontname, x_font_name_to_mac_font_name) - (init_font_name_table, mac_do_list_fonts, XLoadQueryFont): - Don't assume that font family length is less than 32. - (x_compute_min_glyph_bounds): Make static. - (x_load_font): Never set fonts_changed_p to zero. - -2005-07-04 Lute Kamstra - - * Update FSF's address in GPL notices. - -2005-07-03 Richard M. Stallman - - * xdisp.c (try_window): Fix previous change in how it handles - a partially-visible line or one only partly past the margin. - - * window.c (window_scroll_pixel_based): Take account - of this_scroll_margin when finding point when scrolling up. - -2005-06-29 Ralf Angeli - - * window.c (window_scroll_pixel_based, window_scroll_line_based): - Handle `scroll-preserve-screen-position' non-nil, non-t specially. - (syms_of_window) : Doc fix. - -2005-07-02 Juri Linkov - - * w32term.c (w32_draw_vertical_window_border): Use foreground of - VERTICAL_BORDER_FACE_ID for vertical border line. - -2005-07-02 Eli Zaretskii - - * fileio.c (Fcopy_file): Rearrange the code that calls fchown and - fchmod so that chmod doesn't get called on MSDOS before the file - is closed. - -2005-07-01 Jason Rumney - - * w32term.c (cleartype_active): New flag for enabling sub-pixel - workaround. - (w32_initialize): Initialize it. - (w32_native_per_char_metric): Allow a couple of extra pixels when - Cleartype is active. - - * w32term.c (w32_initialize): Move check for screen reader here - from syms_of_w32term. - -2005-06-30 Jan Dj,Ad(Brv - - * xterm.c (handle_one_xevent): bzero compose_status when nbytes - is not zero. - -2005-07-01 Masatake YAMATO - - * emacs.c (main): Passing ADD_NO_RANDOMIZE to `personality'. - -2005-06-30 Juri Linkov - - * xdisp.c (x_draw_vertical_border): If left fringe is not present - decrease x coord of vertical border by 1 pixel to not occupy text - area of the right window. - - * xterm.c (x_draw_vertical_window_border): Use foreground of - VERTICAL_BORDER_FACE_ID for vertical border line. - - * term.c (turn_on_face): In standout mode apply specified - fg to bg, and specified bg to fg (this makes the logic of - inversion on terminal consistent with X). - -2005-06-29 Juanma Barranquero - - * eval.c (user_variable_p_eh): New function. - (Fuser_variable_p): Use it. Clarify docstring. - Return t for aliases of user options, nil for alias loops. - -2005-06-27 Richard M. Stallman - - * eval.c (Fdefvar): Improve error message. - -2005-06-27 YAMAMOTO Mitsuharu - - * macterm.c [USE_CARBON_EVENTS] (mac_convert_event_ref): Fix last - change. - -2005-06-27 Juanma Barranquero - - * eval.c (Fdefvar): Don't try to set constant symbols. - -2005-06-25 Richard M. Stallman - - * macfns.c (Fx_show_tip): Pass new arg to try_window. - - * w32fns.c (Fx_show_tip): Pass new arg to try_window. - - * xfns.c (Fx_show_tip): Pass new arg to try_window. - - * xdisp.c (try_window): New arg CHECK_MARGINS. Calls changed. - (redisplay_window): Handle try_window reporting point in scroll margin. - - * dispextern.h (try_window): Declare new arg. - - * fileio.c (Fcopy_file): New arg PRESERVE_UID_GID. - Use fchmod to copy the file modes. - (Frename_file): Don't copy UID and GID here; - instead, specify t for PRESERVE_UID_GID when calling Fcopy_file. - - * eval.c (call_debugger): Take full care of extending stack limits - to make space for the debugger, and restore the change afterward. - Bind debug-on-error to nil. - (restore_stack_limits): New subroutine. - (Fsignal): Extend specpdl bound along with eval depth bound, - for calling edebug. Don't do either one, for calling debugger. - (find_handler_clause): Don't bind debug-on-error here. - Don't unbind anything either. - Temporarily advance max_specpdl_size for calling - internal_with_output_to_temp_buffer. - (grow_specpdl): Don't alter max_specpdl_size before signaling - an error. - (syms_of_eval) : Doc fix. - - * lread.c (read1): 0.0e+NaN should make a "positive" NaN. - -2005-06-24 Eli Zaretskii - - * fileio.c (Frename_file): Undo last change: no need to ifdef away - chown on DOS_NT platforms. - - * w32.c (sys_chown): New function. - - * s/ms-w32.h (chown): New; define to sys_chown. - -2005-06-24 Juanma Barranquero - - * xdisp.c (syms_of_xdisp) : Doc fix. - (syms_of_xdisp) : Doc fix. - - * fileio.c (Frename_file)[!DOS_NT]: Don't call chown on MSDOS/Windows. - -2005-06-23 Richard M. Stallman - - * xdisp.c (get_next_display_element): Finish reversing the tests of - Vnobreak_char_display. - - * xdisp.c (Vnobreak_char_display): Rename from Vshow_nonbreak_escape. - All uses changed. - (Qnobreak_space): Rename from Qno_break_space. All uses changed. - (syms_of_xdisp): Define nobreak-char-display and nobreak-space. - - * fileio.c (Frename_file): Preserve owner and group, if possible, - when copying. - -2005-06-23 Juanma Barranquero - - * abbrev.c (Funexpand_abbrev): - * category.c (Fmake_category_set): - * dispnew.c (Fsleep_for, Fsit_for): - * editfns.c (Fsubst_char_in_region): - * eval.c (Fdefvar, Fdefconst, Feval, Ffuncall): - * frame.c (make_frame_without_minibuffer): - * lread.c (read_vector): - * macfns.c (check_x_frame): - * process.c (Fstop_process, Fcontinue_process): - * search.c (Freplace_match): - * syntax.c (Fstring_to_syntax): - * w32fns.c (check_x_frame, check_x_display_info): - * xfaces.c (x_supports_face_attributes_p): - * xselect.c (Fx_own_selection_internal): Follow error conventions. - - * image.c (fn_png_init_io): Don't define it. - (init_png_functions) [HAVE_NTGUI]: Don't initialize fn_png_init_io. - (png_read_from_file): New function, based on png_read_from_memory. - (png_load): Use it, instead of fn_png_init_io. - -2005-06-23 Kim F. Storm - - * search.c (Fmatch_data): Remove evaporate option. - (Fset_match_data): Do not mention evaporate option in doc string. - Add commentary explaining evaporate arg (for internal use only). - (unwind_set_match_data): Add comment on evaporate use. - -2005-06-22 Miles Bader - - * xfaces.c (Qvertical_border): Rename from `Qvertical_divider'. - (realize_basic_faces, syms_of_xfaces): Update references to it. - * dispextern.h (enum face_id): Rename `VERTICAL_DIVIDER_FACE_ID' - to `VERTICAL_BORDER_FACE_ID'. - * dispnew.c (build_frame_matrix_from_leaf_window): Update references. - -2005-06-21 Juri Linkov - - * dispextern.h: Add extern Qframe_set_background_mode. - - * xfaces.c: Rename obsolete function Qframe_update_face_colors to - Qframe_set_background_mode. - - * frame.c (Fmodify_frame_parameters): - Call frame-set-background-mode after changing the background color - on non-window non-dos branch. - -2005-06-21 Juanma Barranquero - - * fns.c (Fchar_table_range): - * process.c (Fmake_network_process): Fix spellings. - -2005-06-20 Kim F. Storm - - * fns.c (Fsort): Doc fix. - -2005-06-20 Miles Bader - - * xfaces.c (Qvertical_divider): New variable. - (realize_basic_faces): Realize its face. - (syms_of_xfaces): Initialize it. - - * dispextern.h (enum face_id): Add `VERTICAL_DIVIDER_FACE_ID'. - - * dispnew.c (build_frame_matrix_from_leaf_window): Display vertical - window-separator on ttys using `vertical-divider' face by default. - -2005-06-17 Richard M. Stallman - - * xdisp.c (get_next_display_element): - Reverse test of Vshow_nonbreak_escape. - - * term.c (produce_special_glyphs): Use spec_glyph_lookup_face. - (Ftty_no_underline): New function. - (syms_of_term): defsubr it. - - * keyboard.c (read_char): Call restore_getcjmp after jump occurs. - - * dispnew.c (spec_glyph_lookup_face): New function. - (build_frame_matrix_from_leaf_window): Use it. - - * dispextern.h (spec_glyph_lookup_face): Add declaration. - - * buffer.c (syms_of_buffer) : Doc fix. - -2005-06-12 Richard M. Stallman - - * keyboard.c (read_char): After catching a longjmp, - call restore_getcjmp. - -2005-06-17 Juanma Barranquero - - * xselect.c (lisp_data_to_selection_data): Fix spelling. - -2005-06-15 YAMAMOTO Mitsuharu - - * macterm.c (mac_compute_glyph_string_overhangs): Don't set - overhangs unless the given glyph type is noncomposite CHAR_GLYPH. - [USE_CARBON_EVENTS] (mac_convert_event_ref): Convert dead key down - events. - (XTread_socket): Don't pass keyboard events with the option - modifier to the system when Vmac_command_key_is_meta is nil or - Vmac_option_modifier is non-nil. - [USE_CARBON_EVENTS] (read_socket_inev): New variable. - [USE_CARBON_EVENTS] (init_command_handler): Fix argument. - [USE_CARBON_EVENTS] (mac_handle_mouse_event): New Carbon event - handler function. - (install_window_handler) [USE_CARBON_EVENTS]: Install it. - (XTread_socket) [USE_CARBON_EVENTS]: Move mouse wheel event - handler part to mac_handle_mouse_event. - -2005-06-14 Juanma Barranquero - - * eval.c (Fdefvaralias): Rename arguments SYMBOL and ALIASED to - NEW-ALIAS and BASE-VARIABLE, respectively. - -2005-06-13 Stefan Monnier - - * xdisp.c (note_mode_line_or_margin_highlight): Lisp_Object/int mixup. - (get_phys_cursor_geometry, format_mode_line_unwind_data) - (get_line_height_property, x_produce_glyphs): Remove unused vars. - - * coding.c (run_pre_post_conversion_on_str): Remove unused var `buf'. - -2005-06-13 Eli Zaretskii - - * w32term.c (x_use_underline_position_properties): New variable. - (x_draw_glyph_string): Remind in a comment to change doc string of - x-use-underline-position-properties if/when underline positioning - is implemented. - (syms_of_w32term): DEFVAR_BOOL x-use-underline-position-properties, - and initialize it to nil. - -2005-06-12 Jason Rumney - - * w32fns.c (NEWOPENFILENAME): New struct. - (Fx_file_dialog): Use it to trick the system into giving us up to - date dialogs on systems that are documented to support it. - Do not set OFN_FILEMUSTEXIST flag if looking for a directory. - -2005-06-12 Eli Zaretskii - - * w32fns.c (w32_abort): Use the MB_YESNO dialog instead of - MB_ABORTRETRYIGNORE. Never return, even if DebugBreak does. - -2005-06-11 Eli Zaretskii - - * image.c (x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg - to CreateDIBSection to avoid a compiler warning. - (pbm_load): Cast 3rd arg to IMAGE_BACKGROUND to avoid a compiler - warning. - (png_load): Cast return values of fn_png_create_read_struct and - fn_png_create_info_struct, to avoid compiler warnings on W32. - Cast 3rd arg to IMAGE_BACKGROUND and image_background_transparent - to avoid compiler warnings. - (jpeg_load): Cast return value of fn_jpeg_std_error to avoid a - compiler warning on W32. Cast 3rd arg to IMAGE_BACKGROUND to - avoid a compiler warning. - (tiff_load): Cast return values of fn_TIFFOpen and - fn_TIFFClientOpen to avoid compiler warning on W32. Cast 3rd arg - to IMAGE_BACKGROUND to avoid a compiler warning. - (gif_load): Cast return values of fn_DGifOpenFileName and - fn_DGifOpen to avoid compiler warnings on W32. Cast 3rd arg to - IMAGE_BACKGROUND to avoid a compiler warning. - (DrawText) [HAVE_NTGUI || MAC_OS]: If already defined, undef - before redefining. - - * w32bdf.c (create_offscreen_bitmap): Cast `bitsp' to `void **' in - the call to CreateDIBSection, to avoid a compiler warning. - -2005-06-11 Jason Rumney - - * w32fns.c (Fx_file_dialog): Unblock input before falling back to - minibuffer. - * macfns.c (Fx_file_dialog): Likewise. - -2005-06-10 Eli Zaretskii - - * makefile.w32-in ($(TEMACS)): Depend on addsection.exe. - -2005-06-10 Juanma Barranquero - - * process.c (syms_of_process) [ADAPTIVE_READ_BUFFERING]: - * w32fns.c (syms_of_w32fns): Fix spellings. - -2005-06-10 Eli Zaretskii - - * unexw32.c (COPY_CHUNK, COPY_PROC_CHUNK): Add a new argument - `verbose'; print diagnostic messages only if it is non-zero. - All callers changed to pass a zero value unless DEBUG_DUMP is defined - in the environment. - (copy_executable_and_dump_data): Print section names with %.8s. - -2005-06-10 Masatake YAMATO - - * xdisp.c (note_mode_line_or_margin_highlight): Call clear_mouse_face - when mouse_face is not given. - -2005-06-09 Luc Teirlinck - - * window.c (Fselect_window): Adapt call to Fselect_frame. - - * lisp.h: Update EXFUN of Fselect_frame. - - * keyboard.c (command_loop_1): Adapt call to Fselect_frame. - - * frame.c (Fhandle_switch_frame, Fselect_frame): Delete unused arg - no_enter. - (Fset_mouse_position, Fset_mouse_pixel_position, Ficonify_frame): - Adapt to above change. - -2005-06-10 Juanma Barranquero - - * fns.c (Fmemq, Fmaphash): Doc fixes. - -2005-06-09 Juanma Barranquero - - * xfaces.c (Fdisplay_supports_face_attributes_p): - Fix typo in docstring. - -2005-06-08 Steven Tamm - - * unexmacosx.c (copy_data_segment): Copy __la_sym_ptr2 section - used by gcc4 on intel mac. - -2005-06-09 Kim F. Storm - - * search.c (Fmatch_data): Add optional RESEAT arg. Unchain markers - in REUSE list if non-nil; free them if equal to evaporate. - (Fset_match_data): Add optional RESEAT arg. Unchain markers in LIST - if non-nil; free them if equal to evaporate. Use XCAR/XCDR. - (restore_search_regs): Rename from restore_match_data. Uses changed. - (unwind_set_match_data): New function. - (record_unwind_save_match_data): New function like save-match-data. - - * lisp.h (Fmatch_data, Fset_match_data): Fix EXFUN. - (record_unwind_save_match_data): Add prototype. - (restore_search_regs): Rename from restore_match_data. - - * composite.c (compose_chars_in_text): - * eval.c (do_autoload): - * macmenu.c (set_frame_menubar): - * process.c (read_process_output, exec_sentinel): - * xmenu.c (set_frame_menubar): - * xdisp.c (prepare_menu_bars, update_menu_bar, update_tool_bar): - * w32menu.c (set_frame_menubar): - Use record_unwind_save_match_data. - -2005-06-08 Richard M. Stallman - - * xdisp.c (get_next_display_element): Alter previous change: - Distinguish Vshow_nonbreak_escape = t or not t. - For t, use escape_glyph once again, as before previous change. - Use space or hyphen for display, instead of the non-ASCII char. - (syms_of_xdisp) : Doc fix. - - * process.c (Fstart_process): Don't touch command_channel_p slot. - - * process.h (struct process): Delete command_channel_p. - -2005-06-07 Masatake YAMATO - - * xdisp.c (note_mode_line_or_margin_highlight): - Check the overlapping of re-rendering area to avoid flickering. - (note_mouse_highlight): Call clear_mouse_face if PART - is not ON_MODE_LINE nor ON_HEADER_LINE. - -2005-06-07 Kim F. Storm - - * process.c: Improve commentary for adaptive read buffering. - -2005-06-06 Stefan Monnier - - * xterm.c (x_create_toolkit_scroll_bar): Use XtNarrowScrollbars - if available. - -2005-06-06 Jan Dj,Ad(Brv - - * macmenu.c (menu_quit_handler, install_menu_quit_handler): - New functions for popping down menus on C-g. - (set_frame_menubar, mac_menu_show): Call install_menu_quit_handler. - - * macterm.c: Make mac_quit_char_modifiers and mac_quit_char_keycode - non-static. - - * config.in: Add HAVE_CANCELMENUTRACKING. - -2005-06-06 Eli Zaretskii - - * w32heap.h (OFFSET_TO_RVA, RVA_TO_OFFSET, RVA_TO_PTR): Remove macros. - - * unexw32.c (RVA_TO_PTR): Move here from w32heap.h. - - * w32proc.c (RVA_TO_PTR): New macro. - - * w32heap.c (RVA_TO_PTR): No need to #undef now. - - * makefile.w32-in ($(BLD)/emacs.$(O), $(BLD)/w32select.$(O)): - Depend on w32heap.h. - -2005-06-06 Luc Teirlinck - - * keyboard.c (command_loop_1): Update Vthis_original_command. - -2005-06-06 Richard M. Stallman - - * xmenu.c (popup_get_selection): Undo previous change. - -2005-06-06 Juri Linkov - - * xdisp.c (Qno_break_space): New variable. - (syms_of_xdisp): Initialize it. - (get_next_display_element): Add no-break space and soft hypen - codes for iso8859-2 and iso8859-5. Don't add `\' for them. - Use `no-break-space' face for no-break spaces. - -2005-06-06 Jan Dj,Ad(Brv - - * window.c (delete_window): Handle the case where a h/vchild has - a h/vchild. - -2005-06-05 Eli Zaretskii - - * w32.c (sys_setsockopt): Change arg 4 to `const void *'. In the - call to pfn_setsockopt, cast optval to `const char *'. - -2005-06-04 Eli Zaretskii - - * w32.c (gettimeofday): Use struct _timeb, not struct timeb. - (open_unc_volume): Cast return value of map_w32_filename, to avoid - compiler warnings. - - * s/ms-w32.h (fileno): Don't define if already defined. - - * emacs.c: Include w32heap.h, to avoid compiler warning about sbrk. - - * makefile.w32-in (DOC): Define to point to the generated DOC-X. - -2005-06-04 Richard M. Stallman - - * xmenu.c (popup_get_selection): Click not in menu deactivates menu. - -2005-06-04 Jan Dj,Ad(Brv - - * macmenu.c (cleanup_popup_menu): New function. - (Fx_popup_menu): Unwind protect cleanup_popup_menu in case - mac_menu_show Quit:s. - (mac_menu_show): Quit on cancel if not popped up on click (i.e. - a dialog). - -2005-06-04 Kim F. Storm - - * coding.c (decode_coding_string): Handle CODING_FINISH_INTERRUPT. - - * callproc.c (Fcall_process): Don't use alloca to gradually - increase size of buf, as it effectively uses twice the necessary - space on the stack. Instead, pre-allocate buf of full size, and - gradually increase the read size. - - * bytecode.c (BYTE_CODE_QUIT): Check Vthrow_on_input. - - * eval.c (unbind_to): Preserve value of Vquit_flag. - - * xterm.c (handle_one_xevent): Also ignore mouse motion just - before a button release event. - -2005-06-03 Juanma Barranquero - - * xfaces.c (Finternal_lisp_face_equal_p): Really report - on faces in a frame, if the argument FRAME is non-nil. - Improve argument/docstring consistency. - -2005-06-02 Kim F. Storm - - * xdisp.c (MODE_LINE_NOPROP_LEN): New macro. - (x_consider_frame_title, Fformat_mode_line): Save offset into - mode_line_noprop_buf rather than pointer, in case buffer is relocated. - -2005-06-01 Kim F. Storm - - * fns.c (mapcar1): Maybe exit loop if original sequence was modified. - -2005-06-01 YAMAMOTO Mitsuharu - - * macterm.c (mac_to_x_fontname, mac_do_list_fonts): Set XLFD - resolution fields for scalable fonts to 0. - - * xfaces.c (build_scalable_font_name): Round pixel size to the - nearest integer. - -2005-06-01 Kim F. Storm - - * xdisp.c (display_mode_line): Support nested calls to redisplay - and format-mode-line. Set mode_line_target to MODE_LINE_DISPLAY. - -2005-05-31 Stefan Monnier - - * fileio.c (Finsert_file_contents): - * xdisp.c (note_mode_line_or_margin_highlight): Lisp_Object/int mixup. - -2005-05-31 Kim F. Storm - - * xdisp.c (mode_line_noprop_buf, mode_line_noprop_buf_end) - (mode_line_noprop_ptr): Rename from frame_title_*. - (store_mode_line_noprop_char): Rename from store_frame_title_char. - (store_mode_line_noprop): Rename from store_frame_title. - (mode_line_target): New enum to specify current output target - for mode line formatting. - (display_mode_element): Test it rather than frame_title_ptr and - mode_line_string_list to determine where output should go. - (mode_line_proptrans_alist, mode_line_string_alist): Make static. - (Vmode_line_unwind_vector): New variable. - (format_mode_line_unwind_data, unwind_format_mode_line): - New functions for unwind protection in mode line formatting. - (x_consider_frame_title): Use them and new local var 'title_start' - to support nested calls to format-mode-line and redisplay. - Set mode_line_target to MODE_LINE_TITLE. - (Fformat_mode_line): Use them and new local var 'string_start' to - support nested calls to format-mode-line and redisplay. - Set mode_line_target to MODE_LINE_NOPROP or MODE_LINE_STRING. - Don't trim trailing dashes. - (decode_mode_spec): Don't make infinite number of trailing dashes - for MODE_LINE_NOPROP and MODE_LINE_STRING targets. - (syms_of_xdisp): Initialize and staticpro mode_line_string_face, - mode_line_string_face_prop, and Vmode_line_unwind_vector. - (init_xdisp): Initialize mode_line_noprop_ptr to start of _buf. - Initialize mode_line_target to MODE_LINE_DISPLAY. - -2005-05-29 Richard M. Stallman - - * buffer.c (Fbuffer_local_value): Call indirect_variable. - -2005-05-28 Masatake YAMATO - - * xdisp.c (note_mode_line_or_margin_highlight): Change the - pointer to a hand cursor when hoovering over a mouse-face. - -2005-05-27 Kenichi Handa - - * xterm.c (x_encode_char): Call check_ccl_update in advance. - - * ccl.c: Now an element of Vccl_program_table is a vector of - length 4, not 3. - (ccl_get_compiled_code): New arg idx. Caller changed. - Adjust for the change of Vccl_program_table. - (setup_ccl_program): Adjust for the change of Vccl_program_table. - (check_ccl_update): New function. - (Fregister_ccl_program): Use ASET to set an element of a vector. - Adjusted for the change of Vccl_program_table. - - * ccl.h (struct ccl_program): New member idx. - (check_ccl_update): Extern it. - -2005-05-27 Juanma Barranquero - - * image.c (Vimage_library_alist): Move from image.el. - (syms_of_image): Defvar it. - (lookup_image_type): Use it. - - * buffer.c (Fbuffer_local_value): Make argument name match its use - in docstring. - -2005-05-26 Juanma Barranquero - - * keyboard.c (Frecursive_edit): Fix typo in docstring. - (Fposn_at_x_y): Make argument name match its use in docstring. - -2005-05-26 Lute Kamstra - - * eval.c (Frun_hooks): Mention run-mode-hooks in docstring. - -2005-05-24 Masatake YAMATO - - * xdisp.c (note_mode_line_or_margin_highlight): Use b and e - as loop sentinels. - -2005-05-24 Nick Roberts - - * xmenu.c (Fx_popup_dialog): Add a third boolean argument to - select frame title ("Question"/"Information"). - (xdialog_show): Use it. - - * macmenu.c (Fx_popup_dialog, mac_dialog_show): As for xmenu.c. - - * w32menu.c (Fx_popup_dialog, w32_dialog_show): As for xmenu.c. - - * fns.c (Fyes_or_no_p, Fy_or_n_p): Call Fx_popup_dialog with - a third argument (Qnil). - - * lisp.h: x-popup-dialog can have three arguments. - - * editfns.c (Fmessage_box): Use "Information" for frame title. - -2005-05-23 Thien-Thi Nguyen - - * termcap.c [VMS]: Include . - -2005-05-23 Masatake YAMATO - - * xdisp.c (note_mode_line_or_margin_highlight): Add code - for mouse-face. Change the type of the first argument from `window' - to `Lisp_Object'. - (note_mouse_highlight): Call note_mode_line_or_margin_highlight with - window instead of w. - -2005-05-22 Andreas Schwab - - * process.c (send_process): Move misplaced volatile. - -2005-05-21 Richard M. Stallman - - * xdisp.c (display_mode_element): If we're processing a list and - padding is specified, put it after the last element. - -2005-05-21 Eli Zaretskii - - * fileio.c (Fexpand_file_name) [DOS_NT]: Don't try to support - "superroot" on DOS_NT systems. - -2005-05-21 David Hunter (tiny change) - - * process.c (send_process): Restore the SIGPIPE handler if we - catch a SIGPIPE. - -2005-05-20 Juanma Barranquero - - * image.c (lookup_image, png_read_from_memory): Remove hacks (and - misleading comments). - (DEF_IMGLIB_FN): Use C calling convention for image libraries. - -2005-05-20 KOBAYASHI Yasuhiro - - * window.c (Fwindow_inside_edges, Fwindow_inside_pixel_edges): - Correct the right value. - -2005-05-19 Nick Roberts - - * keyboard.c (syms_of_keyboard): Remove Lisp variables - post-command-idle-hook and post-command-idle-delay. - (command_loop_1): Don't try to execute post-command-idle-hook. - -2005-05-16 Kim F. Storm - - * xdisp.c (handle_display_prop): Handle empty replacement. - (handle_single_display_spec): Return -1 for empty replacement. - - * keyboard.c (adjust_point_for_property): Skip empty overlay string. - - * .gdbinit (pitx): Print more info about iterator. - -2005-05-16 Andreas Schwab - - * unexmacosx.c (unexec_realloc): Move declarations before statements. - -2005-05-14 Richard M. Stallman - - * xdisp.c (message3): Call cancel_echoing. - - * alloc.c (Fmemory_full_p): New function. - (syms_of_alloc): defsubr it. - - * process.c (send_process_trap): Unblock SIGPIPE. - (send_process): Reset SIGPIPE handler before reporting error. - -2005-05-14 Nick Roberts - - * emacs.c (syms_of_emacs): Fix doc string for system-type. - -2005-05-13 Richard M. Stallman - - * fileio.c (Ffind_file_name_handler): Handle lambda-exp as handler. - (Finsert_file_contents): If we read 0 bytes from a special file, - unlock the visited file if we locked it. - (Fmake_symbolic_link, Frecent_auto_save_p): Doc fixes. - (Ffile_exists_p, Ffile_symlink_p): Doc fixes. - -2005-05-13 YAMAMOTO Mitsuharu - - * emacs.c (main) [MAC_OS8]: Call init_atimer before mac_term_init. - - * keyboard.c (readable_events) [USE_TOOLKIT_SCROLL_BARS]: - Regard toolkit scroll bar thumb drag events as squeezable and prevent - redisplay from being paused by them. - - * mac.c [!MAC_OSX]: Include keyboard.h and syssignal.h. - [!MAC_OSX] (target_ticks): Remove variable. - [!MAC_OSX] (check_alarm, pause, index): Remove functions. - [!MAC_OSX && __MRC__] (sys_strftime): Likewise. - [!MAC_OSX] (select): If fd 0 is not set in rfds and some input - event occurs before timeout, behave as if the function were interrupted. - [!MAC_OSX] (sigblock, sigsetmask, alarm): Simulate SIGALRM - handling using Time Manager routines. - [!MAC_OSX] (mac_atimer_task, mac_atimer_qlink, signal_mask): - New variables. - [!MAC_OSX] (mac_atimer_handler, set_mac_atimer, remove_mac_atimer) - (setitimer): New functions. - - * macfns.c, macmenu.c: Don't include signal.h. - - * macterm.c [USE_TOOLKIT_SCROLL_BARS] (get_control_part_bounds): - Rename from get_control_part_bound. All callers changed. - (x_scroll_bar_clear): New function. - (x_clear_frame): Use it. - (XTset_vertical_scroll_bar): Don't call Draw1Control. - (x_scroll_bar_handle_click): Change type of second argument from - int to ControlPartCode. - (check_alarm): Remove declaration. - (XTread_socket) [!TARGET_API_MAC_CARBON]: Don't call it. - (XTread_socket): Use ControlPartCode instead of SInt16. - -2005-05-13 Nozomu Ando - - * unexmacosx.c: Include assert.h. - (MACOSX_MALLOC_MULT16): New define. - [MACOSX_MALLOC_MULT16] (ptr_in_unexec_regions): Determine whether - ptr is in unexec regions by checking it is multiple of 16. - (unexec_malloc_header_t): New typedef. - (unexec_malloc, unexec_realloc, unexec_free): Store and use - allocated size information in unexec_malloc_header. - -2005-05-10 Richard M. Stallman - - * xterm.c (noinclude): Add #undef. - - * image.c, xfns.c, xmenu.c: Don't include signal.h. - -2005-05-09 Juanma Barranquero - - * fileio.c (Fexpand_file_name, Frename_file, Fadd_name_to_file) - (Fmake_symbolic_link, Faccess_file, Frecent_auto_save_p): - Doc fixes. - - * dired.c (Ffile_name_completion): Make argument name - match its use in docstring. - -2005-05-08 Luc Teirlinck - - * eval.c (Fdefvaralias): Remove any pre-existing - variable-documentation property of the alias. - -2005-05-07 Thien-Thi Nguyen - - * xfns.c (start_hourglass): Do nothing when running on a tty. - -2005-05-07 Juanma Barranquero - - * fns.c (Fchar_table_range): Fix typos in docstring. - -2005-05-06 Stefan Monnier - - * fns.c (Fchar_table_range): Yet Another Int/Lisp_Object Mixup. - -2005-05-06 Eli Zaretskii - - * lread.c (Flocate_file_internal): Doc fix. - - * Makefile.in (lisp, shortlisp): Add jka-cmpr-hook.elc. - -2005-05-06 YAMAMOTO Mitsuharu - - * macselect.c (x_own_selection): Accept Lisp string as result of - selection converter function. - (x_clear_frame_selections): Don't call x-lost-selection-functions - if Emacs is not owner of the selection. - (Vmac_services_selection): Put variable and initialization in - #ifdef MAC_OSX. - (syms_of_macselect) [MAC_OSX]: Set default value of - Vmac_services_selection to PRIMARY. - - * macterm.c (toolkit_scroll_bar_interaction): Remove unused variable. - (mac_handle_tool_bar_click): Remove unused function and declaration. - [USE_TOOLKIT_SCROLL_BARS] (scroll_bar_timer_callback) - (install_scroll_bar_timer, set_scroll_bar_timer) - (control_part_code_to_scroll_bar_part, construct_scroll_bar_click) - (get_control_part_bound, x_scroll_bar_handle_press) - (x_scroll_bar_handle_release, x_scroll_bar_handle_drag) - (x_set_toolkit_scroll_bar_thumb): New functions and declarations. - [USE_TOOLKIT_SCROLL_BARS] (last_scroll_bar_part, scroll_bar_timer) - (scroll_bar_timer_event_posted_p): New variables. - [USE_TOOLKIT_SCROLL_BARS] (SCROLL_BAR_FIRST_DELAY) - (SCROLL_BAR_CONTINUOUS_DELAY): New macros. - (x_scroll_bar_create): Set control reference with NewControl. - (x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: - Initialize track_top and track_height to nil. - (x_scroll_bar_set_handle, x_scroll_bar_note_movement): - Put functions in #ifndef USE_TOOLKIT_SCROLL_BARS. - (XTset_vertical_scroll_bar): Don't make space between scroll bar - and associated window. - (XTset_vertical_scroll_bar) [MAC_OSX]: Get scroll bar area width - from window config. - (XTset_vertical_scroll_bar) [USE_TOOLKIT_SCROLL_BARS]: - Set track_top and track_height to nil when scroll bar size is changed. - Recalculate them if they are nil. - (XTread_socket) [MAC_OSX]: Use control kind to determine if the - clicked control is a scroll bar. - (XTread_socket) [USE_TOOLKIT_SCROLL_BARS]: Use toolkit scroll bar - event handler functions. Don't add modifiers to scroll bar click - events. Call scroll bar release handler when window is deactivated. - (mac_initialize): Remove unused code for X toolkit. - (syms_of_macterm) [!USE_TOOLKIT_SCROLL_BARS]: - Initialize Vx_toolkit_scroll_bars to nil. - - * macterm.h (struct scroll_bar) [USE_TOOLKIT_SCROLL_BARS]: - New members track_top and track_height. - - * sysselect.h [DARWIN || MAC_OSX]: Temporarily undefine - init_process when including sys/select.h. - -2005-05-05 Luc Teirlinck - - * eval.c (Fdefvaralias): Doc fix. - - * xmenu.c (Fx_popup_menu, Fx_popup_dialog): Doc fixes. - -2005-05-05 Kim F. Storm - - * buffer.c (init_buffer_once): Set cursor_in_non_selected_windows - default value. - (syms_of_buffer): Add default-cursor-in-non-selected-windows. - Fix type of cursor-in-non-selected-windows. - -2005-05-03 Jan Dj,Ad(Brv - - * mac.c: #undef init_process so not to conflict with system headers. - -2005-05-02 Richard M. Stallman - - * buffer.c (syms_of_buffer): Define cursor-in-non-selected-windows. - - * buffer.h (struct buffer): Add cursor_in_non_selected_windows slot. - - * xdisp.c (Vcursor_in_non_selected_windows) - (Qcursor_in_non_selected_windows): Vars deleted. - (syms_of_xdisp): Don't initialize them. - (get_window_cursor_type): Use cursor_in_non_selected_windows - buffer slot. - -2005-05-02 Kim F. Storm - - * macros.c (executing_kbd_macro_index): Rename from - executing_macro_index. All uses changed. - (executing_kbd_macro_iterations): Rename from - executing_macro_iterations. All uses changed. - (executing_kbd_macro): Rename from executing_macro. - All uses changed. - (syms_of_macros): Rename Lisp var executing-macro-index to - executing-kbd-macro-index. - - * xdisp.c (move_it_in_display_line_to): Fix last change. - -2005-05-01 Luc Teirlinck - - * xmenu.c (Fx_popup_menu): Doc fix. - - * charset.c (syms_of_charset): Delete defsubr for Schars_in_region. - -2005-05-02 Jason Rumney - - * emacs.c (USAGE3, USAGE4): Keep strings below 2048 bytes. - -2005-05-02 Nozomu Ando - - * sysselect.h: Fix typo. - -2005-05-02 Nick Roberts - - * charset.c (Fchars_in_region): Remove as obsolete. - -2005-05-01 Kim F. Storm - - * xdisp.c (move_it_in_display_line_to): Stop if we move beyond - TO_CHARPOS. This may happen if last glyphs was an image or stretch - glyph. - -2005-05-01 Luc Teirlinck - - * dispnew.c (sit_for): Vexecuting_macro -> Vexecuting_kbd_macro. - -2005-05-01 Richard M. Stallman - - * xmenu.c [not HAVE_X_TOOLKIT] (xmenu_show): - If user cancels the menu, quit unless FOR_CLICK. - - * macros.c (Vexecuting_kbd_macro): Rename from Vexecuting_macro. - All uses changed. - (syms_of_macros): Define only executing-kbd-macro, not executing-macro. - * keyboard.c: Change Vexecuting_macro to Vexecuting_kbd_macro. - * macros.h (Vexecuting_kbd_macro): Declare instead of Vexecuting_macro. - * commands.h (Vexecuting_kbd_macro): Likewise. - -2005-05-01 Thien-Thi Nguyen - - * sysdep.c (get_frame_size) [VMS]: Use a fresh i/o channel. - -2005-04-30 Richard M. Stallman - - * fileio.c (Ffind_file_name_handler): Handle the `operations' - property of the file name handler. - (Qoperations): New variable. - (syms_of_fileio): Initialize and staticpro it. - - * xdisp.c (set_message_1): Delete xassert. - -2005-04-29 YAMAMOTO Mitsuharu - - * mac.c: Don't include time.h. Include sysselect.h after systime.h. - - * macfns.c (Fx_server_version): Add BLOCK_INPUT around Gestalt. - - * macgui.h [HAVE_CARBON && MAC_OSX]: Don't undefine/define mktime - before/after including Carbon.h if there is a working mktime. - -2005-04-28 Kim F. Storm - - * xfaces.c (resolve_face_name): Add arg SIGNAL_P. Calls changed. - Fix cyclic alias check. If alias loop is detected, signal - circular-list error if SIGNAL_P, and return Qdefault if !SIGNAL_P. - -2005-04-28 Lute Kamstra - - * eval.c (do_autoload): Record only autoloads in the autoload - property of symbols. - -2005-04-28 Nick Roberts - - * emacs.c (USAGE1): Add --basic-display and --quick options. - -2005-04-27 Kim F. Storm - - * data.c (syms_of_data) Staticpro Qcyclic_variable_indirection. - -2005-04-26 Richard M. Stallman - - * window.c (Fsame_window_p, Fspecial_display_p): Doc fixes. - (syms_of_window): Doc fixes. - - * indent.c (Fvertical_motion): Undo previous change. - -2005-04-26 Kenichi Handa - - * fns.c (char_table_range): New function. - (Fchar_table_range): Signal an error if characters in the range - have inconsistent values. Don't check the parent. - -2005-04-25 Kenichi Handa - - * fontset.c (fontset_set): Fix previous change. - -2005-04-24 Richard M. Stallman - - * indent.c (Fvertical_motion): Bind fontification-functions to nil. - -2005-04-24 Eli Zaretskii - - * regex.c (re_search_2, re_match_2_internal): Convert second arg - of RE_TRANSLATE to int, to shut up GCC warnings. - - * fileio.c (Fcopy_file): Doc fix. - [MSDOS]: Fix call to emacs_open: buffer_file_type not defined and - not needed. - -2005-04-24 YAMAMOTO Mitsuharu - - * Makefile.in [HAVE_CARBON] (MAC_OBJ): Add macselect.o. - (SOME_MACHINE_OBJECTS): Likewise. - (mac.o): Depend on ccl.h. - (macselect.o): New target. - - * emacs.c (main) [MAC_OS8 || MAC_OSX && HAVE_CARBON]: - Call syms_of_macselect. - - * frame.c (Fdelete_frame) [MAC_OS]: Call x_clear_frame_selections. - - * mac.c [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h. - (QCLIPBOARD): Remove variable. - (syms_of_mac): Don't initialize it. - (Fmac_paste_function, Fmac_cut_function, Fx_selection_exists_p): - Remove functions. - (syms_of_mac): Don't defsubr them. - [TARGET_API_MAC_CARBON] (Qmime_charset, QNFD, QNFKD, QNFC, QNFKC) - (QHFS_plus_D, QHFS_plus_C): New variables. - (syms_of_mac) [TARGET_API_MAC_CARBON]: Initialize them. - [TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp) - (cfstring_create_normalized): New functions. - [TARGET_API_MAC_CARBON] (Fmac_code_convert_string): Likewise. - (syms_of_mac) [TARGET_API_MAC_CARBON]: Defsubr it. - - * macterm.c (handling_window_update, terminate_flag): - Remove variables. - (do_window_update, do_ae_quit_application, XTread_socket): - Don't use them. - (WNE_SLEEP_AT_SUSPEND, WNE_SLEEP_AT_RESUME): Don't define. - [USE_CARBON_EVENTS && MAC_OSX] (mac_handle_service_event) - (init_service_handler): Move to macselect.c. Remove declarations. - [USE_CARBON_EVENTS && MAC_OSX] (init_service_handler): Add extern. - (Qapplication, Qabout): New variables. - (syms_of_mac): Initialize them. - [USE_CARBON_EVENTS && MAC_OSX] (Qpreferences, Qservices, Qpaste) - (Qperform): New variables. - (syms_of_mac) [USE_CARBON_EVENTS && MAC_OSX]: Initialize them. - (do_get_menus) [TARGET_API_MAC_CARBON]: Don't call AppendResMenu. - (do_menu_choice): Unhighlight menu bar also when menu_id is 0. - (mac_store_application_menu_event, init_menu_bar): New functions. - [USE_CARBON_EVENTS] (mac_handle_command_event) - (init_command_handler): New functions. - (mac_handle_window_event): Return noErr on window update event. - (do_ae_quit_application): Call mac_store_application_menu_event. - (mac_initialize) [USE_CARBON_EVENTS]: Call init_command_handler - and init_menu_bar. - - * macterm.h (x_clear_frame_selections): Add extern. - - * macselect.c: New file for selection processing on Mac OS. - -2005-04-23 Richard M. Stallman - - * fileio.c (Fcopy_file): New arg MUSTBENEW. - (Frename_file): Pass new arg to Fcopy_file. - - * window.c (window_size_fixed): Variable deleted. - (syms_of_window): Initialize window-size-fixed to nil. - But don't DEFVAR window_size_fixed. - -2005-04-23 Andreas Schwab - - * m/macppc.h (LD_SWITCH_MACHINE) [LINUX]: Don't define. - (START_FILES, LIB_STANDARD) [LINUX && _ARCH_PPC64]: Override to - use lib64 instead of lib. - (_LP64) [_ARCH_PPC64]: Define if not defined. - -2005-04-23 David Hunter (tiny change) - - * s/ms-w32.h (HAVE_PWD_H): Define. - -2005-04-22 Kenichi Handa - - * fns.c (copy_sub_char_table): Explicitly copy the default value - of the sub-chartable. - - * fontset.c (fontset_set): When a sub-chartable is created, - explicitly sets the defalt value. - -2005-04-22 Kim F. Storm - - * fns.c (Fplist_get): Replace by Fsafe_plist_get. - (Fsafe_plist_get): Rename to Fplist_get. - (Fsafe_get): Remove, as Fget now uses safe Fplist_get. - (defsubr): Remove defsubr for Fsafe_plist_get and Fsafe_get. - - * lisp.h (Fsafe_plist_get, Fsafe_get): Remove EXFUN. - - * xdisp.c (store_mode_line_string, produce_stretch_glyph) - (note_mode_line_or_margin_highlight, note_mouse_highlight): - Use Fplist_get instead of Fsafe_plist_get. - - * xfaces.c (resolve_face_name): Use Fget instead of Fsafe_get. - -2005-04-21 Miles Bader - - * xdisp.c (dump_glyph_row): Don't display overlay_arrow_p field. - -2005-04-20 Thien-Thi Nguyen - - * sysdep.c: Remove reference to defunct vms-pwd.h. - * dired.c: Likewise. Also, for pwd.h, use HAVE_PWD_H, not !VMS. - * editfns.c, fileio.c, filelock.c, sysdep.c, xrdb.c: Likewise. - - * config.in: Regenerate. - -2005-04-20 Kenichi Handa - - * lisp.h (CHAR_TABLE_DEFAULT_SLOT_ASCII): New macro. - (CHAR_TABLE_DEFAULT_SLOT_8_BIT_CONTROL): New macro. - (CHAR_TABLE_DEFAULT_SLOT_8_BIT_GRAPHIC): New macro. - - * alloc.c (make_sub_char_table): Argument changed to initial - value of the slots. - - * data.c (Faref): Handle special slots used as default values of - ascii, eight-bit-control, eight-bit-control. Don't ignore a - default value set for a group of characters. - (Faset): Signal an error if IDXVAL is not a valid character code. - Make a sub-chartable with correct initial value. - - * fns.c (Fset_char_table_range): Don't set slots used as default - values for ascii, eight-bit-control, eight-bit-graphic. - Don't call Faref with charset-id. - (Fset_char_table_default): Document how to treat normal character - argument. Handle special slots used as default values of ascii, - eight-bit-control, eight-bit-control. Make a sub chartable if - necessary. - -2005-04-20 Kenichi Handa - - * search.c (boyer_moore): Fix previous change. - -2005-04-19 Kim F. Storm - - * xdisp.c (setup_for_ellipsis): Reset saved_face_id to use default - face unless last visible char and first invisible char have the - same face. Also use default face if saved_face_id is undefined. - -2005-04-19 YAMAMOTO Mitsuharu - - * macgui.h (MacFontStruct): Remove member `fontname'. Add member - `full_name'. - [TARGET_API_MAC_CARBON] (MacFontStruct): Use type int for - mac_scriptcode member. - - * macterm.c (Qbig5, Qcn_gb, Qsjis, Qeuc_kr): Remove variables. - (syms_of_mac): Don't initialize them. - (Vmac_charset_info_alist): New variable. - (syms_of_mac): Defvar it. - (create_text_encoding_info_alist): New function. - (decode_mac_font_name, mac_to_x_fontname) - (x_font_name_to_mac_font_name, init_font_name_table): Don't hard - code the correspondence among XLFD charsets, Mac script codes, and - Emacs coding systems. Use Vmac_charset_info_alist and result of - create_text_encoding_info_alist instead. - (init_font_name_table) [TARGET_API_MAC_CARBON]: Use Font Manager - routines also on Mac OS Classic. - (init_font_name_table) [!TARGET_API_MAC_CARBON]: - Use add_font_name_table_entry. - (mac_do_list_fonts): Regard 0 in XLFD scaleble fields as - specified. Derive unspecified scalable fields from specified one. - (x_list_fonts): Consider Valternate_fontname_alist. - (kDefaultFontSize): Change value from 9 to 12. - (XLoadQueryFont): Get decoded font family, font face, and charset - from x_font_name_to_mac_font_name. Set full name of loaded font. - (mac_unload_font): Free `full_name' member. - (x_load_font): Don't try XLoadQueryFont if x_list_fonts returns - NULL. Copy full_name member of struct MacFontStruct to that of - struct font_info. - -2005-04-19 Kim F. Storm - - * xdisp.c (handle_stop): Set saved_face_id to current face if - selective_display_ellipsis_p so ellipsis will be shown in same - face as preceding text. - (setup_for_ellipsis): Don't set saved_face_id here. - (next_element_from_display_vector): Default to saved_face_id. - - * fns.c (Fsafe_get): New function. - (syms_of_fns): Defsubr it. - - * lisp.h (Fsafe_get): EXFUN it. - - * xfaces.c (resolve_face_name): Use Fsafe_get to avoid redisplay - loops in case of bad face property lists. Limit number of face - alias lookups to 10 (in case of face alias loops). - -2005-04-18 Kim F. Storm - - * dispextern.h (struct glyph_row): New member overlay_arrow_bitmap. - It replaces the corresponding member from struct window, as a - window may now show multiple overlay arrows. - Remove member overlay_arrow_p, superseeded by overlay_arrow_bitmap. - - * dispnew.c (row_equal_p, update_window_line, scrolling_window): - Compare overlay_arrow_bitmap than overlay_arrow_p members. - - * fringe.c (draw_fringe_bitmap): Use overlay_arrow_bitmap from row - rather than from window. - (update_window_fringes): Compare overlay_arrow_bitmap rather than - overlay_arrow_p members. - (Ffringe_bitmaps_at_pos): Return fringe overlay_arrow_bitmap name - if not default. - - * window.h (struct window): Remove member overlay_arrow_bitmap. - - * window.c (make_window): Don't initialize overlay_arrow_bitmap. - - * xdisp.c (overlay_arrow_string_or_property): Remove PBITMAP arg. - Calls changed. Don't check for overlay-arrow-bitmap property here. - (overlay_arrow_at_row): Remove PBITMAP arg. Instead, if left - fringe is present, return Lisp integer for bitmap (or -1 for default). - Fix value of overlay-arrow-bitmap property to be a symbol, use - lookup_fringe_bitmap to parse it. - (display_line): Change call to overlay_arrow_at_row. Store integer - return value as overlay bitmap in row rather than window. - Only show overlay arrow if row displays text, or if no other overlay - arrow is seen in window (if overlay marker is at point-max). - -2005-04-18 Thien-Thi Nguyen - - * xfaces.c (realize_x_face) [!HAVE_WINDOW_SYSTEM]: Return NULL. - -2005-04-18 Lute Kamstra - - * lread.c (Vloads_in_progress): Static. - * fns.c (Vloads_in_progress): Remove extern. - (load_in_progress): Add extern. - (Frequire): Use load_in_progress instead of Vloads_in_progress. - -2005-04-18 Thien-Thi Nguyen - - * xmenu.c (Fx_popup_menu): Initialize error_name to NULL. - -2005-04-18 YAMAMOTO Mitsuharu - - * macterm.c (XTread_socket): Don't beep on keyboard input even if - no frame is visible. - -2005-04-16 Dan Nicolaescu - - * term.c (struct keys): Add support for shifted keys. - -2005-04-16 Richard M. Stallman - - * xdisp.c (with_echo_area_buffer): Delete WHICH < 0 case. - (set_message): Call with_echo_area_buffer with WHICH = 0. - (set_message_1): Erase the echo area buffer first thing. - (echo_area_display): Don't clear echo_message_buffer. - -2005-04-16 YAMAMOTO Mitsuharu - - * Makefile.in (mac.o): Depend on charset.h and coding.h. - - * mac.c: Include charset.h and coding.h. - [TARGET_API_MAC_CARBON] (Qutf_8): Remove extern. - [TARGET_API_MAC_CARBON] (cfstring_create_with_string): New function. - [TARGET_API_MAC_CARBON] (Fmac_get_preference): Use it. - - * macfns.c [TARGET_API_MAC_CARBON] (Fx_file_dialog): Likewise. - - * image.c [MAC_OSX] (image_load_quartz2d): Likewise. - - * macterm.c (x_autoselect_window_p): Remove variable. - (last_window): New variable. - (XTreassert_line_highlight, x_change_line_highlight): - Remove declarations. - (mac_focus_changed, x_detect_focus_change): New functions and - declarations. - (XTextExtents16, front_emacs_window): Remove function. - (mac_focus_frame): New function. - (XTmouse_position, do_menu_choice, do_zoom_window, XTread_socket) - (mac_check_for_quit_char): Use it instead of front_emacs_window. - (x_scroll_bar_report_motion): Obtain window from control owner. - (x_make_frame_invisible): Set window manager size hint. - (do_mouse_moved): Remove function. - (XTread_socket): Move its contents here. Generate select-window - event on mouse movement if needed. Use x_detect_focus_change on - activate/deactivate events. Don't deiconify frame or invalidate - window rectangle when dnd items are dropped. - Don't activate/deactivate root control. - (frame_highlight, frame_unhighlight): Activate/deactivate root - control here. - (syms_of_macterm): Delete DEFVAR_BOOL for x_autoselect_window_p. - - * macterm.h (cfstring_create_with_string) [TARGET_API_MAC_CARBON]: - New extern. - -2005-04-15 Luc Teirlinck - - * Makefile.in: Define new macro TOOLTIP_SUPPORT. - (lisp): Use it. - (SOME_MACHINE_LISP): Add tooltip. - -2005-04-14 YAMAMOTO Mitsuharu - - * mac.c [!TARGET_API_MAC_CARBON]: Include MacLocales.h. - Don't include TextEncodingConverter.h. - (mac_system_script_code, Vmac_system_locale): New variables. - (syms_of_mac): Defvar them. - (mac_get_system_locale): New function. - - * macfns.c (x_set_name, x_set_title) [!TARGET_API_MAC_CARBON]: - Use ENCODE_SYSTEM to encode title bar string. - (x_create_tip_frame): Apply 2005-03-18 change for xfns.c. - (Fx_file_dialog) [TARGET_API_MAC_CARBON && !MAC_OSX]: - Use CFStringGetSystemEncoding to get system default string encoding. - - * macterm.c [!TARGET_API_MAC_CARBON]: Don't include - TextEncodingConverter.h. - -2005-04-13 Steven Tamm - - * macterm.c (syms_of_macterm): Remove redundant definition of - mac-pass-control-to-system. - -2005-04-12 Stefan Monnier - - * window.c (Fset_window_configuration): Be careful when you choose - among several possible points for the new_current_buffer. - -2005-04-12 YAMAMOTO Mitsuharu - - * keyboard.c (poll_for_input) [SYNC_INPUT]: Don't call - poll_for_input_1. Set interrupt_input_pending to 1 instead. - (Qlanguage_change) [MAC_OS]: New variable. - (syms_of_keyboard) [MAC_OS]: Intern and staticpro it. - (kbd_buffer_get_event) [MAC_OS]: Make event for LANGUAGE_CHANGE_EVENT. - - * macterm.c (mac_keyboard_text_encoding) - (current_mac_keyboard_text_encoding): Remove variables. - (XTread_socket): Store language-change event if keyboard script change - is detected. Don't convert input to `mac_keyboard_text_encoding'. - (syms_of_macterm): Delete DEFVAR_INT for mac-keyboard-text-encoding. - - * termhooks.h (enum event_kind) [MAC_OS]: Add LANGUAGE_CHANGE_EVENT. - -2005-04-10 Richard M. Stallman - - * emacs.c (standard_args): Rename --bare-bones to --quick. - Add -D aka --basic-display. - - * buffer.c (Fmake_indirect_buffer): Clear out some local variables. - -2005-04-09 Richard M. Stallman - - * keymap.c (where_is_internal): Convert a string used as event type - into "(any string)". - - * lread.c (Vloads_in_progress): Not static. - * fns.c (Vloads_in_progress): Add extern. - (Frequire): Don't do LOADHIST_ATTACH if Vloads_in_progress is nil. - -2005-04-09 Thien-Thi Nguyen - - * dispnew.c (mirror_line_dance): Avoid crash if W2 is null. - -2005-04-09 Lute Kamstra - - * print.c (PRINTPREPARE): Check if the marker PRINTCHARFUN is - within the accessible part of the buffer. - -2005-04-09 Kim F. Storm - - * lread.c (readevalloop): Add args START and END as region in - current buffer to read. Callers changed. - When specified, narrow to this region only when reading, - not during eval. Track next point to read from during eval. - Also restore point to "real" buffer position before eval. - (Feval_region): Don't save excursion and restriction here, and - don't narrow to region. Just pass region to readevalloop. - Note: Point is now preserved even when PRINTFLAG is nil. - -2005-04-08 Kim F. Storm - - * xdisp.c (syms_of_xdisp): Init overlay-arrow-string to "=>". - -2005-04-06 Kim F. Storm - - * emacs.c (standard_args): Add -Q, --bare-bones, -bare-bones. - -2005-04-06 YAMAMOTO Mitsuharu - - * mac.c (cfdate_to_lisp): Add `const' for variable `epoch_gdate'. - (Fmac_get_preference): Doc fix. - - * macfns.c (Fx_create_frame, x_create_tip_frame): - Add "fontset-mac" to fallback font/fontsets. - -2005-04-04 Kim F. Storm - - * alloc.c (Fgarbage_collect): Call CHECK_CONS_LIST before and after gc. - - * eval.c (Ffuncall): Always call CHECK_CONS_LIST on entry. - Call it again after autoload. - -2005-04-02 Jan Dj,Ad(Brv - - * alloc.c (allocate_string_data): Call BLOCK_INPUT before calling - mallopt. - - * ralloc.c (r_alloc_init): Ditto. - -2005-04-01 Kenichi Handa - - * lisp.h (Vascii_upcase_table, Vascii_canon_table) - (Vascii_eqv_table): Extern them. - - * casetab.c (set_case_table): If standard is nonzero, setup - Vascii_upcase_table, Vascii_canon_table, and Vascii_eqv_table. - - * search.c (looking_at_1): Use current_buffer->case_canon_table, - not DOWNCASE_TABLE. - (string_match_1): Likewise. - (fast_c_string_match_ignore_case): Use Vascii_canon_table, not - Vascii_downcase_table. - (fast_string_match_ignore_case): Likewise. - (search_buffer): Fix checking of boyer-moore usability. - (boyer_moore): Calculate translate_prev_byte1/2/3 in advance. - No need of tranlating characters in PAT. Fix calculation of - simple_translate. - -2005-03-31 Stefan Monnier - - * xterm.c [HAVE_XAW3D]: Include ThreeD.h for XtNbeNiceToColormap. - (x_create_toolkit_scroll_bar): Test XtNbeNiceToColormap before using it. - Use XtNtopShadowPixel and XtNbottomShadowPixel. - (x_set_toolkit_scroll_bar_thumb): Remove ugly old hack that didn't - really work and that breaks with some versions of Xaw3d. - -2005-03-31 Kenichi Handa - - * coding.c (syms_of_coding): Fix previous change. - -2005-03-30 Stefan Monnier - - * fileio.c (search_embedded_absfilename): Fix last change. - -2005-03-25 Kenichi Handa - - * coding.c (syms_of_coding): Suggest to use set-coding-category in - the docstring of coding-category-list. - -2005-03-31 Kim F. Storm - - * keyboard.c (Qmouse_fixup_help_message): New var. - (syms_of_keyboard): Intern and staticpro it. - (show_help_echo): Apply mouse-fixup-help-message to help string. - -2005-03-30 Kim F. Storm - - * xdisp.c (display_line): Allow multiple overlay arrows in window. - -2005-03-28 Stefan Monnier - - * fileio.c (Fexpand_file_name): Use IS_DEVICE_SEP. - (file_name_absolute_p): New fun, extracted from Ffile_name_absolute_p. - (Ffile_name_absolute_p): Use it. - (search_embedded_absfilename): New fun, extracted from - Fsubstitute_in_file_name. Use file_name_absolute_p. - Free the pw data after use. - (Fsubstitute_in_file_name): Use it. - After cutting a prefix, re-check file-name-handler. - -2005-03-26 Lennart Borgman - - * w32term.h (x_output): Add focus_state. - - * w32term.c (x_focus_changed, w32_detect_focus_change): New functions. - (w32_read_socket) : Call w32_detect_focus_change. - -2005-03-25 Stefan Monnier - - * minibuf.c (Fminibuffer_complete_and_exit, Fself_insert_and_exit): - Use Fexit_minibuffer. - (Fexit_minibuffer): Mark it as no-return, deactivate the mark. - -2005-03-24 Stefan Monnier - - * dired.c (Ffile_attributes): Add a missing gcpro. - - * alloc.c (make_number): The arg can be bigger than `int'. - * lisp.h (make_number): Make prototype more precise. - - * process.c, dired.c (Vfile_name_coding_system) - (Vdefault_file_name_coding_system): - * callproc.c (Vdoc_file_name, Vfile_name_coding_system) - (Vdefault_file_name_coding_system): Remove unused declarations. - -2005-03-24 Jan Dj,Ad(Brv - - * xmenu.c (create_and_show_popup_menu): Just remove menu and return - if it failed to pop up (Gnome "show pointer on ctrl" option makes - menus fail to pop up). - -2005-03-24 Stefan Monnier - - * xdisp.c (get_next_display_element): Also use `\ ' & `\-' for latin-9. - Just prepend a backslash without replacing the NBSP by an SPC. - -2005-03-22 Kim F. Storm - - * xfaces.c (lookup_derived_face): Add arg SIGNAL_P. - * dispextern.h (lookup_derived_face): Fix prototype. - * msdos.c (XMenuActivate): Fix call to lookup_derived_face. - - * xdisp.c (handle_single_display_spec): Derive left-fringe and - right-fringe face from fringe face. - - * fringe.c (draw_fringe_bitmap_1, Fset_fringe_bitmap_face): - Derive face from fringe face. - -2005-03-22 Jan Dj,Ad(Brv - - * xrdb.c (x_load_resources): Undo previous change (2005-03-18). - -2005-03-22 David Kastrup - - * textprop.c (Fnext_char_property_change) - (Fprevious_char_property_change): Allow marker as limit. - (Fnext_single_char_property_change) - (Fprevious_single_char_property_change): Check that limit is a - number in strings. - (Fnext_single_char_property_change): Coerce position to integer. - (Fprevious_single_char_property_change): Same here. - -2005-03-21 Thien-Thi Nguyen - - * s/openbsd.h (LD_SWITCH_SYSTEM_tmp): Define if undefined. - -2005-03-19 Stefan Monnier - - * frame.c (Fignore_event): Remove. - (syms_of_frame): Don't defsubr it. - - * keyboard.c (keys_of_keyboard): Just use `ignore' instead of the - redundant `ignore-event'. - -2005-03-19 Eli Zaretskii - - * unexec.c (write_segment, unexec): Move these functions to avoid - forward references (which cause errors with "gcc -gcoff"). - -2005-03-18 Jan Dj,Ad(Brv - - * xfns.c (x_create_tip_frame): Remove setting of Vx_resource_name so - that it doesn't become "tooltip". The specbind is enough. - - * xrdb.c (x_load_resources): Use different char *helv when I18N - is present. - -2005-03-17 Kenichi Handa - - * coding.c (syms_of_coding): Docstring of coding-category-list fixed. - -2005-03-17 Stefan Monnier - - * xfaces.c (x_update_menu_appearance) [HAVE_X_I18N]: - Use xic_create_fontsetname even for non-Motif menus. - Don't forget to free the fontsetname. - - * xfns.c (xic_create_fontsetname): Add a final catch-all font pattern. - -2005-03-17 Richard M. Stallman - - * dispnew.c (mirror_line_dance): Set W2 according to FRAME_FROM. - - * fileio.c (Fcopy_file, Frename_file, Fadd_name_to_file) - (Fmake_symbolic_link): Use G to read the new file name. - - * callint.c (Finteractive): Document G option. - (Fcall_interactively): Implement G option. - - * buffer.c (buffer_lisp_local_variables): New function, - broken out from Fbuffer_local_variables. - (clone_per_buffer_values): Use buffer_lisp_local_variables. - -2005-03-17 Stefan Monnier - - * xfns.c (xic_create_fontsetname): Add `motif' argument. - Always return a freshly allocated string. - (xic_create_xfontset): Adjust call. - - * xfaces.c (x_update_menu_appearance) [USE_MOTIF]: - Use xic_create_fontsetname to create a fontset so utf-8 locales work. - (dump_realized_face): Fix warning. - - * emacs.c (Fkill_emacs): YAILOM. - - * frame.c (Fignore_event): Fix ancient obscure C-u handling bug. - -2005-03-17 YAMAMOTO Mitsuharu - - * mac.c (HASHKEY_TERMINAL): Remove. - (HASHKEY_MAX_NID): New macro. - (xrm_q_get_resource_1): Rename from xrm_q_get_resource. Add extra - argument. - (xrm_q_get_resource): Call xrm_q_get_resource_1 with extra argument. - (xrm_create_database, xrm_q_put_resource) - (xrm_merge_string_database, xrm_q_get_resource_1) - (xrm_q_get_resource): Change resource database representation so - that it may not use multiple hash tables for a single database. - [TARGET_API_MAC_CARBON] (xrm_cfproperty_list_to_value): YAILOM. - -2005-03-16 Stefan Monnier - - * xmenu.c (ENCODE_MENU_STRING) [HAVE_X_I18N]: Use ENCODE_SYSTEM. - - * coding.h (ENCODE_SYSTEM, DECODE_SYSTEM) [!WINDOWSNT]: Use the - locale-coding-system, as was already done for WINDOWSNT. - - * keyboard.c (read_char): Only do the 7-bit-meta -> 27-bit-meta - translation for chars in the 0-255 range. - -2005-03-16 Lute Kamstra - - * floatfns.c (Ffloor): Doc fix. - -2005-03-16 YAMAMOTO Mitsuharu - - * mac.c: Include macterm.h instead of directly including Carbon.h. - [TARGET_API_MAC_CARBON] (Qstring, Qnumber, Qboolean, Qdate, Qdata) - (Qarray, Qdictionary): New variables. - (syms_of_mac) [TARGET_API_MAC_CARBON]: Initialize them. - [TARGET_API_MAC_CARBON] (Qutf_8): Add extern. - [TARGET_API_MAC_CARBON] (DECODE_UTF_8): New macro. - [TARGET_API_MAC_CARBON] (struct cfdict_context): New struct used - in callback for CFDictionaryApplyFunction. - [TARGET_API_MAC_CARBON] (cfdata_to_lisp, cfstring_to_lisp) - (cfnumber_to_lisp, cfdate_to_lisp, cfboolean_to_lisp) - (cfobject_desc_to_lisp, cfdictionary_add_to_list) - (cfdictionary_puthash, cfproperty_list_to_lisp): New functions. - [TARGET_API_MAC_CARBON] (Fmac_get_preference): New function. - (syms_of_mac) [TARGET_API_MAC_CARBON]: Defsubr it. - (P, LOOSE_BINDING, SINGLE_COMPONENT, HASHKEY_TERMINAL): New macro. - (skip_white_space, parse_comment, parse_include_file) - (parse_binding, parse_component, parse_resource_name, parse_value) - (parse_resource_line, xrm_create_database, xrm_q_put_resource) - (xrm_merge_string_database, xrm_q_get_resource, xrm_get_resource) - (xrm_cfproperty_list_to_value, xrm_get_preference_database): - New functions. - - * macfns.c (mac_get_rdb_resource): Remove function. - (x_get_string_resource): Use xrm_get_resource. - - * macgui.h (XrmDatabase): Typedef to Lisp_Object. - - * macterm.c (x_list_fonts): FONT-LIST-CACHE is now cadr part of - name_list_element. - (mac_make_rdb): Create resource database from preferences and - argument string. - (mac_term_init): Save resource database to cddr part of - name_list_element. - - * macterm.h (xrm_merge_string_database, xrm_get_resource) - (xrm_get_preference_database): Add externs. - [TARGET_API_MAC_CARBON] (cfdata_to_lisp, cfstring_to_lisp) - (cfnumber_to_lisp, cfdate_to_lisp, cfboolean_to_lisp) - (cfobject_desc_to_lisp, cfproperty_list_to_lisp): Likewise. - - * process.c (init_process): Change `#ifdef DARWIN' to `#if - defined (DARWIN) || defined (MAC_OSX)' - - * s/darwin.h (DARWIN): Don't define. - -2005-03-16 YAMAMOTO Mitsuharu - - * macfns.c (Qhyper, Qsuper, Qmeta, Qalt, Qctrl, Qcontrol, Qshift): - Remove unused variables. - (syms_of_macfns): Don't initialize them. Likewise for - Qface_set_after_frame_default. Defvar and initialize - Vx_window_horizontal_drag_shape. - (x_set_mouse_color): Change mouse pointer shape. - (mac_window) [!MAC_OSX]: Create root control. - (Fx_create_frame): Remove initializations of mouse pointer shapes. - (hourglass_started): New function (from xfns.c). - (start_hourglass, cancel_hourglass): Put function body in #ifdef - MAC_OSX. - (show_hourglass) [TARGET_API_MAC_CARBON]: Create progress - indicator for each non-tooltip frame if needed, and show it. - (hide_hourglass) [TARGET_API_MAC_CARBON]: Hide progress indicators. - - * macgui.h [!TARGET_API_MAC_CARBON]: Include Appearance.h and - Controls.h. Use ThemeCursor instead of CursHandle. - - * macterm.c (activate_scroll_bars, deactivate_scroll_bars): - Remove functions and declarations. - (mac_set_colors): Take argument for saving background color. - All callers changed. - (XDrawLine, XClearArea, mac_draw_bitmap, XFillRectangle) - (mac_draw_rectangle, mac_draw_string_common): Save and Restore - background color. - (x_update_end, mac_do_track_drag): Don't reset background color. - (mac_define_frame_cursor) [!TARGET_API_MAC_CARBON]: - Use SetThemeCursor. - (x_set_window_size) [TARGET_API_MAC_CARBON]: Move progress - indicator control to the upper-right corner of the window. - (arrow_cursor) [!TARGET_API_MAC_CARBON]: Remove variable. - (do_init_managers) [!TARGET_API_MAC_CARBON]: Don't initialize it. - (do_window_update): Update controls after updating content area. - (mac_handle_window_event): Remove unused extern. - (XTread_socket): Check both control handle and control part code - to determine whether a scroll bar is clicked. Activate/deactivate - root control instead of contained scroll bar controls. - (make_mac_terminal_frame): Use ThemeCursor constants. - - * macterm.h (struct mac_output) [TARGET_API_MAC_CARBON]: - New member hourglass_control. - (HOURGLASS_WIDTH, HOURGLASS_HEIGHT): New defines. - (activate_scroll_bars, deactivate_scroll_bars): Remove declarations. - -2005-03-15 YAMAMOTO Mitsuharu - - * macterm.c (keycode_to_xkeysym_table): Change mapping so that it - coincides with that in Apple X11 except `clear', `enter' on - laptops, and fn + `enter' on laptops. - -2005-03-12 Stefan Monnier - - * xmenu.c (ENCODE_MENU_STRING): Explicitly use string_make_unibyte. - (list_of_panes, list_of_items, Fx_popup_menu): Use XCAR/XCDR. - (digest_single_submenu, xmenu_show): Use ENCODE_MENU_STRING. - - * xfns.c (xic_defaut_fontset): New constant. - (xic_create_fontsetname): New function. - Extracted from create_frame_xic. Try to generate a slightly - better fontset. - (xic_create_xfontset): Use it. - (create_frame_xic): Simplify. - -2005-03-11 Stefan Monnier - - * fileio.c (Fmake_symbolic_link): Fix last change. - -2005-03-11 Richard M. Stallman - - * fileio.c (Frename_file, Fadd_name_to_file) - (Fmake_symbolic_link): If NEWNAME or LINKNAME is a directory, - expand the basename of FILE relative to it. - -2005-03-11 Kenichi Handa - - * fileio.c (Finsert_file_contents): Call Fcheck_coding_system - before calling setup_coding_system so that autoloading of a coding - system work. - -2005-03-10 Jan Dj,Ad(Brv - - * xfns.c (hourglass_started): New function. - - * dispextern.h: Declare hourglass_started. - - * keyboard.c (Fexecute_extended_command): Restart hourglass - after call to Fcompleting_read if already started. - - * gtkutil.c (xg_update_scrollbar_pos): Call x_sync so that the - GTK main loop is entered in xterm.c, thus doing the redraw. - -2005-03-10 Kim F. Storm - - * xdisp.c (pos_visible_p): Fix X value in last line of buffer. - -2005-03-08 Kenichi Handa - - * frame.c (x_set_font): Call set_default_ascii_font if an - available font is found. - - * fontset.c (set_default_ascii_font): New function. - (syms_of_fontset): Don't set FONTSET_ASCII (Vdefault_fontset) here. - - * fontset.h (set_default_ascii_font): Extern it. - -2005-03-07 Kim F. Storm - - * xdisp.c (CLEAR_IMAGE_CACHE_COUNT): New const. - (clear_image_cache_count): New var. - (redisplay_internal): Don't clear face and image caches in the - middle of redisplay; do it afterwards. - - * blockinput.h (TOTALLY_UNBLOCK_INPUT): Avoid dangling else. - - * xdisp.c (notice_overwritten_cursor): Check that phys_cursor.vpos - is valid. If not, clear phys_cursor_on_p and return. - -2005-03-07 Andreas Schwab - - * blockinput.h (UNBLOCK_INPUT_TO): Always call UNBLOCK_INPUT. - -2005-03-06 Richard M. Stallman - - * keyboard.c (Ftop_level): Let Fthrow deal with UNBLOCK_INPUT. - - * eval.c (unwind_to_catch): Use UNBLOCK_INPUT_TO. - (Feval, Ffuncall): Use CHECK_CONS_LIST. - - * lisp.h (CHECK_CONS_LIST): New macro (two definitions). - - * blockinput.h (UNBLOCK_INPUT_TO): New macro. - (TOTALLY_UNBLOCK_INPUT): Handle a pending signal if any. - -2005-03-05 Juri Linkov - - * emacs.c (USAGE1): Replace Info node name "command arguments" - with "emacs invocation". - (USAGE3): Fix usage of `--color=MODE' which actually doesn't - allow arguments `--color' and `MODE' to be separated by space. - Add --no-blinking-cursor, -nbc. - (standard_args): Add -nbc, --no-blinking-cursor. - -2005-03-04 Thien-Thi Nguyen - - * s/vms.h: Define NO_HYPHENS_IN_FILENAMES. - * s/vms4-4.h, s/vms5-5.h: Undefine NO_HYPHENS_IN_FILENAMES. - * fileio.c (Fexpand_file_name) [VMS]: - Use NO_HYPHENS_IN_FILENAMES, not VMS4_4. - * doc.c (munge_doc_file_name) [VMS]: Likewise. - (Fsnarf_documentation): Call munge_doc_file_name. - -2005-03-04 Thien-Thi Nguyen - - * s/vms.h (FILE_SYSTEM_CASE): New macro. - * fileio.c (Fexpand_file_name) [VMS]: Don't upcase the name - "manually"; this is now handled generally via FILE_SYSTEM_CASE. - -2005-03-04 YAMAMOTO Mitsuharu - - * emacs.c (main): Change `#ifdef HAVE_CARBON' to `#if - defined (MAC_OSX) && defined (HAVE_CARBON)'. - - * image.c [!MAC_OSX && TARGET_API_MAC_CARBON]: Include QuickTime.h. - - * mac.c [!MAC_OSX && HAVE_CARBON]: Include Carbon.h. - [!MAC_OSX] (select) [TARGET_API_MAC_CARBON]: Use ReceiveNextEvent. - (posix_pathname_to_fsspec, fsspec_to_posix_pathname): New functions. - (mac_clear_font_name_table): Move extern to macterm.h. - - * macfns.c (install_window_handler): Move extern to macterm.h. - (Fx_file_dialog): Check STRINGP (default_filename) to see it is - valid. Don't check !NILP (dir) because it is already checked with - CHECK_STRING. - (Fx_file_dialog) [!MAC_OSX]: Use FSSpec instead of FSRef for - specifying the default location and obtaining the selected filename. - - * macgui.h [!MAC_OSX && HAVE_CARBON]: Include Carbon.h. - - * macmenu.c [TARGET_API_MAC_CARBON]: Don't include headers that - are included via Carbon.h. - - * macterm.c [TARGET_API_MAC_CARBON && !MAC_OSX]: - Define USE_CARBON_EVENTS to 1. - (qd) [__MRC__ && TARGET_API_MAC_CARBON]: Don't declare. - (x_free_frame_resources): Call remove_window_handler for - non-tooltip windows. - [TARGET_API_MAC_CARBON]: Don't include headers that are included - via Carbon.h. - [TARGET_API_MAC_CARBON] (mac_do_track_dragUPP) - (mac_do_receive_dragUPP): New variables. - (mac_handle_service_event, init_service_handler): Put declarations - and definitions in #ifdef MAC_OSX. - (install_window_handler) [TARGET_API_MAC_CARBON]: Create UPPs for - drag-and-drop handler functions and register them. - (remove_window_handler): New function. - (do_ae_open_documents, mac_do_receive_drag) [!MAC_OSX]: - Use fsspec_to_posix_pathname. - (main): Change #if !TARGET_API_MAC_CARBON to #ifdef MAC_OS8. - (XTread_socket) [!MAC_OSX]: Don't pass keyboard events to TSM. - [MAC_OS8] (make_mac_terminal_frame) [TARGET_API_MAC_CARBON]: - Set default cursors. - (mac_initialize) [USE_CARBON_EVENTS && !MAC_OSX]: Don't call - init_service_handler or init_quit_char_handler. - (mac_initialize) [!MAC_OSX]: Don't call MakeMeTheFrontProcess. - - * macterm.h (install_window_handler, remove_window_handler) - (posix_pathname_to_fsspec, fsspec_to_posix_pathname) - (mac_clear_font_name_table): New externs. - -2005-03-03 Thien-Thi Nguyen - - * fileio.c (FILE_SYSTEM_CASE): Define macro if not already defined. - (Ffile_name_directory): Use FILE_SYSTEM_CASE unconditionally. - (Fexpand_file_name): Likewise. - -2005-03-03 Thien-Thi Nguyen - - * emacs.c (Fkill_emacs): Use EXIT_SUCCESS; - no longer special-case VMS. Add bogus return value. - -2005-03-02 Kim F. Storm - - * dispextern.h (XASSERTS): Define to 0 if not already defined. - (xassert) [!XASSERTS]: Define dummy version. - -2005-03-02 Kim F. Storm - - * xdisp.c (redisplay_window): YABX (yet another bogus xassert). - Reported by David Kastrup. - -2005-03-01 Ehud Karni - - * xdisp.c (get_next_display_element): Fix control and escape - glyph from display vector. - -2005-03-01 Stefan Monnier - - * keyboard.c (Fposn_at_x_y): Check integerness of X and Y. - -2005-02-27 Richard M. Stallman - - * xdisp.c (fast_find_position): Rename END to BEG. - (syms_of_xdisp) : Doc fix. - -2005-02-27 Jan Dj,Ad(Brv - - * gtkutil.c (xg_resize_outer_widget): Remove unneeded call to - gtk_window_resize and x_wm_set_size_hint. - -2005-02-25 Kim F. Storm - - * dispextern.h (OVERLAY_STRING_CHUNK_SIZE): Increase from 3 to 16. - - * xdisp.c (init_from_display_pos): Don't read past end of - it->overlay_strings array. - -2005-02-25 Stephan Stahl (tiny change) - - * buffer.c (syms_of_buffer): Fix typo. - -2005-02-23 Lute Kamstra - - * buffer.c (Foverlay_buffer): Doc fix. - -2005-02-22 Kim F. Storm - - * minibuf.c (Ftry_completion, Fall_completions): Allow both string - and symbol keys in alists and hash tables. - - * xdisp.c (fast_find_position): Fix search for start of overlay. - -2005-02-21 Kim F. Storm - - * window.c (window_scroll_pixel_based): When scrolling backwards, - handle partial visible line at end of window even when we hit PT. - -2005-02-21 Stefan Monnier - - * keymap.h: Declare Fcurrent_active_maps, used in doc.c. - -2005-02-21 Kim F. Storm - - * xdisp.c (move_it_vertically_backward): Eliminate two xasserts. - I think those asserts are bogus if buffer contains invisible text - or images. - -2005-02-21 David Kastrup - - * gtkutil.c (xg_create_frame_widgets): UNBLOCK_INPUT on error. - -2005-02-20 Kim F. Storm - - * xdisp.c (pos_visible_p): Be sure to move to the specified - position. Always get the full ascent / descent of the - corresponding row, to return reliable rtop and rbot values. - (back_to_previous_visible_line_start): Fix 2005-01-18 change. - Must look one character back, as back_to_previous_line_start - returns position after the newline. - (move_it_vertically_backward): Fix heuristic for when to move further - back in case line_height * 2/3 is larger than window height. - (cursor_row_fully_visible_p): Rename make_cursor_line_fully_visible_p - as it does not do anything anymore. Add arg current_matrix_p to - use current matrix rather than desired matrix when set. - (try_cursor_movement): Don't scroll to make cursor row fully - visible if cursor didn't move. This avoids unexpected recentering - in case of blinking cursor or accepting process output. - Use current matrix to check cursor row visibility. - (redisplay_window): Fix whether to recenter or move to top in case - cursor line is taller than window height. - (find_first_unchanged_at_end_row): Stop search if we reach a row - which not enabled (instead of abort). - -2005-02-18 Kim F. Storm - - * xfaces.c (Finternal_set_lisp_face_attribute): Allow :color property - to be nil in a :box attribute value list; customize prints that - as lisp value when no box color is specified. - - * .gdbinit (pitx, pit): Pretty print display iterator. - (prowx, prow): Pretty print glyph row. - (pcursorx, pcursor): Pretty print a window cursor. - (pwinx, pwin): Pretty print struct window. - -2005-02-18 Stefan Monnier - - * alloc.c (BLOCK_BYTES): Harmless typo. - -2005-02-17 Andreas Schwab - - * xfns.c (hack_wm_protocols): Use correct type for last parameter - of XGetWindowProperty to avoid aliasing issues. - (Fx_window_property): Likewise. - - * xselect.c (Fx_disown_selection_internal): Use union of struct - input_event and struct selection_input_event to avoid aliasing issues. - - * xterm.c (handle_one_xevent): Use union of struct input_event and - struct selection_input_event to avoid aliasing issues. - (SET_SAVED_MENU_EVENT): Adapt reference to inev. - -2005-02-17 Kim F. Storm - - * dispextern.h (enum it_method): New enum. - (GET_FROM_*): Its members. - (struct it): Change member method from function pointer to enum. - - * xdisp.c (check_it, init_from_display_pos, handle_stop) - (setup_for_ellipsis, handle_single_display_spec) - (handle_composition_prop, next_overlay_string) - (get_overlay_strings, reseat_1, reseat_to_string) - (next_element_from_ellipsis, BUFFER_POS_REACHED_P) - (in_display_vector_p, display_line, get_next_display_element): - Change it->method from function pointer to enum. - (get_next_element): New array to map it->method to function. - (get_next_display_element): Use it. - (set_iterator_to_next): Use switch instead of if/else chain. - -2005-02-15 Benjamin Riefenstahl - - * w32select.c: Summary: Thorough rework to implement Unicode - clipboard operations and delayed rendering. - - Drop last_clipboard_text and related code, keep track of - ownership via clipboard_owner instead. Drop old #if0 sections. - - (DEFAULT_LCID, ANSICP, OEMCP, QUNICODE, QANSICP, QOEMCP) - (clipboard_owner, modifying_clipboard, cfg_coding_system) - (cfg_codepage, cfg_lcid, cfg_clipboard_type, current_text) - (current_coding_system, current_requires_encoding) - (current_num_nls, current_clipboard_type, current_lcid): - New static variables. - - (convert_to_handle_as_ascii, convert_to_handle_as_coded) - (render, render_all, run_protected, lisp_error_handler) - (owner_callback, create_owner, setup_config) - (enum_locale_callback, cp_from_locale, coding_from_cp): - New local functions. - - (term_w32select, globals_of_w32select): New global functions. - - (Fw32_set_clipboard_data): Ignore parameter FRAME, use - clipboard_owner instead. Use delayed rendering and provide - all text formats. Provide CF_LOCALE if necessary. - - (Fw32_get_clipboard_data): Handle CF_UNICODETEXT and - CF_LOCALE. Fall back to CF_TEXT, if CF_UNICODETEXT is not - available. Force DOS line-ends for decoding. - - (Fx_selection_exists_p): Handle CF_UNICODETEXT. - - (syms_of_w32select): Init and register new variables. - - * w32.h: Add prototypes for globals_of_w32select and - term_w32select. Make the neighboring K&R declarations into - prototypes, too. - - * emacs.c: Include w32.h to get function prototypes. - (main): Call globals_of_w32select. - - * w32.c (term_ntproc): Call term_w32select. - - * s/ms-w32.h: Guard MSC-specific #pragmas with an #ifdef. - -2005-02-16 Kim F. Storm - - * xdisp.c (BUFFER_POS_REACHED_P): Return true if pos reached and - at end of display vector. - -2005-02-15 Richard M. Stallman - - * xdisp.c (get_next_display_element): Fix escape-glyph criterion - for mode and header lines. - - * lread.c (syms_of_lread) : Doc fix. - - * keymap.h (describe_map_tree): Change decl. - - * keyboard.c (command_loop_1): Always use safe_run_hooks - to run Qdeferred_action_function. - - * keymap.c (describe_map_tree): New arg MENTION_SHADOW. Calls changed. - (describe_map, describe_vector): Likewise. When it's 1, - don't omit shadowed bindings, instead mark them as shadowed. - - * doc.c (Fsubstitute_command_keys): Compute list of shadowing maps - for describe_map_tree. Pass 1 for MENTION_SHADOW. - - * data.c (Fsetq_default): Allow no arg case. - -2005-02-14 Kenichi Handa - - * coding.c (encode_coding_string): Always return a unibyte string. - If NOCOPY is nonzero and there's no need of encoding, make STR - unibyte directly. - - * xselect.c (lisp_data_to_selection_data): If OBJ is a non-ASCII - multibyte string, signal an error instead of aborting. - -2005-02-12 Dan Nicolaescu - - * keyboard.c: If HAVE_FCNTL_H include fcntl.h. - -2005-02-12 Kim F. Storm - - * xdisp.c (expose_window): Don't fix overlaps for mode lines. - -2005-02-10 Kim F. Storm - - * xdisp.c (try_window_id): Set first_unchanged_at_end_row to NULL - if it moves outside window or it doesn't display text. - -2005-02-09 Kim F. Storm - - * undo.c (Fprimitive_undo): Check that undo function does not - switch buffer. - -2005-02-08 Jan Dj,Ad(Brv - - * xselect.c (selection_data_to_lisp_data): For the special case - type == XA_ATOM, data contains array of int, not array of Atom. - (x_property_data_to_lisp, selection_data_to_lisp_data): - Comment update: data must be array of int for format == 32. - -2005-02-08 Stefan Monnier - - * undo.c (Fprimitive_undo): Check veracity of delta,start,end. - -2005-02-07 Jan Dj,Ad(Brv - - * xfns.c (Fx_change_window_property): Use long array when format is 32. - (Fx_window_property): If format is 32 and long is bigger than 32 bits, - convert long array returned from XGetWindowProperty to an int array. - (x_set_tool_bar_lines): Check that width and height is greater than - zero before clearing area. - - * xselect.c (x_reply_selection_request): Pass long array to - XChangeProperty so that 64 bit longs are handeled correctly. - (x_get_window_property): If format is 32 and long is bigger than 32 - bits convert data from XGetWindowProperty from long array to int array. - (lisp_data_to_selection_data): When the input is a vector and the - format is 32, allocate a long array even if long is bigger than 32 bits. - (x_fill_property_data): Use char, short and long as the man page - for XChangeProperty specifies. This way the data returned is OK for - both 32 and 64 bit machines. - (x_handle_dnd_message): Calculate size correctly even for 64 bit - machines. - (Fx_send_client_event): Undo change from 2005-02-05, - x_fill_property_data now handles that case. - - * xfns.c (Fx_backspace_delete_keys_p): Add comment about the - reason for the approach in the code. - -2005-02-07 Kim F. Storm - - * undo.c (Fprimitive_undo): Record max one dummmy apply element. - -2005-02-06 Richard M. Stallman - - * eval.c (Frun_hook_with_args) - (Frun_hook_with_args_until_success) - (Frun_hook_with_args_until_failure): Doc fixes. - -2005-02-05 Andreas Schwab - - * sysdep.c (sys_subshell): Properly terminate execlp argument list. - -2005-02-05 Jan Dj,Ad(Brv - - * xselect.c (Fx_send_client_event, x_handle_dnd_message): Handle - the longs in a XClientMessageEvent correctly when long is 64 bits. - -2005-02-05 Eli Zaretskii - - * xfaces.c (face_color_supported_p): Use HAVE_WINDOW_SYSTEM - instead of HAVE_X_WINDOWS, for non-X windowed sessions. - -2005-02-03 Jan Dj,Ad(Brv - - * xmenu.c (menubar_selection_callback): Force out GTK buffered - events so the menu event comes after them. This is to prevent sit-for - from exiting on buffered events directly after a menu selection, - lisp code for Help => About Emacs uses sit-for. - - * gtkutil.c (create_menus): Connect selection-done event instead of - the deactivate event to deactivate_cb. This will make the last - leave event come before the call to deactivate_cb, so the leave - event does not make sit-for exit after a menu selection. - -2005-02-03 Kim F. Storm - - * dispnew.c (build_frame_matrix_from_leaf_window) - [!GLYPH_DEBUG]: Fix xassert. - - * xfaces.c (x_free_gc) [!GLYPH_DEBUG]: Fix xassert. - - * xfns.c (unwind_create_frame) [!GLYPH_DEBUG]: Fix xassert. - -2005-02-03 YAMAMOTO Mitsuharu - - * mac.c: Use MAC_OS_X_VERSION_MAX_ALLOWED to conditionalize by - the compiling OS version. - - * macfns.c (x_create_tip_frame): Likewise. - - * macterm.c (mac_draw_string_common, x_make_frame_visible): Likewise. - -2005-02-03 Richard M. Stallman - - * xterm.c (x_error_quitter): On GCC 3 and up, specify noinline. - - * xdisp.c (echo_area_display): Clear echo_message_buffer. - - * buffer.c (Fbury_buffer): Doc fix. - -2005-02-02 Steven Tamm - - * macfns.c (unwind_create_frame): Fix compile error due to - xassert being uncondition, but predicate is. - * dispnew.c (update_window): Fix compile error due to - xassert being uncondition, but predicate is. - -2005-02-02 Miles Bader - - * dispextern.h (xassert): Enable unconditionally. - -2005-02-02 Kim F. Storm - - * undo.c (Fprimitive_undo): Fix dummy apply undo entry. - -2005-02-02 Kenichi Handa - - * casefiddle.c (casify_object): Enable changing characters of - different byte length. - (casify_region): Fix loop condition, args to replace_range_2, and - update opoint_byte. - - * insdel.c (replace_range_2): Fix bugs in adjusting markers and point. - -2005-02-01 Kim F. Storm - - * xdisp.c (back_to_previous_visible_line_start): Reset iterator - stack before calling handle_display_prop. - -2005-01-31 Kim F. Storm - - * undo.c (Qapply): New lisp var. - (syms_of_undo): Intern and staticpro it. - (Fprimitive_undo): Support formats (apply FUNNAME . ARGS) and - (apply DELTA BEG END FUNNAME . ARGS) instead of (FUNNAME . ARGS). - - * buffer.c (syms_of_buffer) : Doc fix. - -2005-01-30 Jesper Harder - - * macterm.c (syms_of_macterm) - : Fix docstring indentation. - -2005-01-29 Luc Teirlinck - - * undo.c (syms_of_undo) : Doc update. - Increase value to 3 Meg. - -2005-01-29 Jan Dj,Ad(Brv - - * xfns.c (show_hourglass): Use FRAME_X_WINDOW as parent for GTK, - button events are not received otherwise. - -2005-01-29 Richard M. Stallman - - * buffer.c (syms_of_buffer) : Doc fix. - - * undo.c (Fprimitive_undo): Handle (FUNNAME . ARGS) by calling FUNNAME. - -2005-01-28 Stefan Monnier - - * keymap.c (access_keymap): YAILOM. - -2005-01-27 Kim F. Storm - - * xdisp.c (get_phys_cursor_geometry): New function to calculate - phys cursor position and size for hollow cursor. Position is - aligned with get_glyph_string_clip_rect and ensures that a hollow - cursor is shown, even when the actual glyph is not visible. - - * dispextern.h (get_phys_cursor_geometry): Add prototype. - - * xterm.c (x_clip_to_row): Ensure y >= 0. - (x_draw_hollow_cursor): Use get_phys_cursor_geometry. - - * w32term.c (x_draw_hollow_cursor): Use get_phys_cursor_geometry. - - * macterm.c (x_draw_hollow_cursor): Use get_phys_cursor_geometry. - -2005-01-27 Stefan Monnier - - * xterm.c (x_error_quitter): Add a prototype. Make it static again. - -2005-01-27 Kim F. Storm - - * xdisp.c (get_glyph_string_clip_rect): Always show a cursor - glyph, even when row is only partially visible and actual cursor - position is not visible. - -2005-01-24 Richard M. Stallman - - * xterm.c (x_error_quitter): No longer static, and moved after - x_error_handler. - -2005-01-24 Kim F. Storm - - * xdisp.c (move_it_by_lines): If we move forward after going too - far back, cancel move if end position is same as start position. - -2005-01-24 YAMAMOTO Mitsuharu - - * dispextern.h (struct glyph_string): New members clip_head and - clip_tail. - - * xdisp.c (get_glyph_string_clip_rect): Restrict horizontal clip - region to the area between clip_head and clip_tail. - (draw_glyphs): Record the area that need to be actually redrawn to - the new variables clip_head and clip_tail when there are - overhangs. Set values of these variables to the corresponding - members in struct glyph_string. Refine x coordinates for - notice_overwritten_cursor using clip_head and clip_tail. - - * macgui.h (STORE_XCHARSETSTRUCT): New macro. - - * macterm.c (mac_compute_glyph_string_overhangs): Implement with - QDTextBounds. - (x_draw_glyph_string): Don't fill the background of the successor - of a glyph with a right overhang if the successor will draw a cursor. - (XLoadQueryFont): Obtain font metrics using QDTextBounds. - (x_redisplay_interface): Add entry for compute_glyph_string_overhangs. - -2005-01-24 Kim F. Storm - - * window.c (window_scroll_pixel_based): Fix scrolling in the wrong - direction if window height was smaller than next-screen-context-lines. - Now always scroll at least one line in the requested direction. - Ensure that we actually do scroll backwards when requested to do so. - - * xdisp.c (redisplay_window): Only try to make cursor line fully - visible once (to avoid redisplay loop). - -2005-01-23 Kim F. Storm - - * window.c (Fpos_visible_in_window_p): Simplify return value for - partially visible rows. - (window_scroll_pixel_based): Adapt to that change. - - * window.c (window_scroll_pixel_based): Force moving to next line - if scrolling doesn't move start point, e.g. if looking at tall image. - - * xdisp.c (pos_visible_p): Return 0 if non-interactive. - Clear last_height before calling line_bottom_y to get real height. - Fix calculation of y. - -2005-01-22 Steven Tamm - - * s/darwin.h: Removed PTY_ITERATION from here. - (DARWIN): Define. - - * process.c (init_process): Default process-connection-type to - nil on darwin 6 or less, t if it is 7 or higher. This way the - broken pty behavior is still allowed on darwin 6 for interactive - processes for people that know what they are doing. - -2005-01-22 Kim F. Storm - - * window.c (auto_window_vscroll_p): New boolean. - (syms_of_window): DEFVAR_BOOL it. - (Fpos_visible_in_window_p): Extend return value to include RTOP - and RBOT values if FULLY is nil. - (window_scroll_pixel_based): Adjust vscroll for partially visible - rows if auto_window_vscroll_p is set. - (Fset_window_vscroll): Do nothing if vscroll is not modified. - - * xdisp.c (pos_visible_p): Replace FULLY arg by RTOP and RBOT args - to return number of partially invisible pixels at top and bottom - of the dislay row at POS. - - * lisp.h (pos_visible_p): Fix prototype. - -2005-01-21 Richard M. Stallman - - * fileio.c (Fcopy_file): Doc fix. - -2005-01-21 Jan Dj,Ad(Brv - - * gtkutil.c (xg_tool_bar_detach_callback): Remove unused variable bw. - (xg_get_file_name): Move declaration ofx_use_old_gtk_file_dialog to - start of function for older compilers. - -2005-01-20 Richard M. Stallman - - * editfns.c (Fmessage): If arg is "", return "" (as before). - - * keymap.c (access_keymap): Protect from bad value of meta_prefix_char. - - * .gdbinit (xgetptr, xgetint, xgettype): Copy $arg0 into a temp - variable. - -2005-01-20 Steven Tamm - - * editfns.c (Voperating_system_release): Add. - (init_editfns): Assign new variable operating-system-release - based on call to uname if available. - (get_operating_system_release): Add function to - allow c-level access to operating system release. - - * config.h: Regenerated. - - * s/darwin.h (PTY_ITERATION): Don't allow PTYs on darwin 6 or less. - (MIN_PTY_KERNEL_VERSION): Define minimum kernel version for - using ptys as '7'. - -2005-01-20 Kim F. Storm - - * alloc.c (STRING_MARKED_P, VECTOR_MARKED_P): Return boolean. - - * xterm.c (x_draw_glyph_string_box): Fix last_x for full width rows. - Thanks to Chong Yidong for debugging this. - - * macterm.c (x_draw_glyph_string_box): Likewise. - - * w32term.c (x_draw_glyph_string_box): Likewise. - - * indent.c (Fvertical_motion): Temporarily disable selective display. - -2005-01-19 Kim F. Storm - - * xdisp.c (note_mode_line_or_margin_highlight): Fix :pointer - image property. - - * fns.c (sweep_weak_table): Advance prev pointer when we keep a pair. - -2005-01-18 Kim F. Storm - - * xdisp.c (fast_find_position): Backtrack to find first row if - charpos is inside a display overlay that spans multiple lines. - -2005-01-18 Kenichi Handa - - * coding.c (decode_coding_iso2022): Translate invalid codes if - translation-table is specified. - -2005-01-18 Kim F. Storm - - * xdisp.c (back_to_previous_visible_line_start): Undo 2004-12-28 - change. If handle_display_prop indicates newline is replaced by - image or text, move back to start of relevant overlay or interval - and continue scan from there. Simplify. - -2005-01-17 Kim F. Storm - - * dispnew.c (mode_line_string, marginal_area_string): - Fix off-by-one error in search for glyph. - -2005-01-16 Kim F. Storm - - * macterm.c (syms_of_macterm) : Doc fix. - -2005-01-16 Steven Tamm - - * macterm.c (mac_to_x_fontname): Remove spurious argument. - -2005-01-16 Andreas Schwab - - * macterm.c (mac_draw_string_common): Fix compilation on OSX 10.1. - -2005-01-16 Jan Dj,Ad(Brv - - * fringe.c (Fdefine_fringe_bitmap, init_fringe): When assigning - fringe_faces, cast result from xmalloc/xrealloc to Lisp_Object *. - -2005-01-16 YAMAMOTO Mitsuharu - - * keyboard.c (READABLE_EVENTS_DO_TIMERS_NOW) - (READABLE_EVENTS_FILTER_EVENTS, READABLE_EVENTS_IGNORE_SQUEEZABLES): - New flags for readable_events. - (get_filtered_input_pending, readable_filtered_events): Remove. - (tracking_off): Call readable_events and get_input_pending with - flag READABLE_EVENTS_DO_TIMERS_NOW. - (readable_events): Move code from old readable_filtered_events here, - but check new READABLE_EVENTS_* in argument flags instead of previous - two boolean arguments do_timers_now and filter_events. - If we are doing mouse tracking and the mouse moved, return only if - READABLE_EVENTS_IGNORE_SQUEEZABLES is not set in flags. - (swallow_events): Call get_input_pending with flag - READABLE_EVENTS_DO_TIMERS_NOW. - (get_input_pending): Move code from old get_filtered_input_pending - here. Replace boolean arguments do_timers_now, filter_events with - flags, and pass flags to readable_events. Document new - READABLE_EVENTS_* flags. - (detect_input_pending_ignore_squeezables): New function. - (detect_input_pending_run_timers): Call get_input_pending with flag - READABLE_EVENTS_DO_TIMERS_NOW. - (Finput_pending_p): Call get_input_pending with flags - READABLE_EVENTS_DO_TIMERS_NOW and READABLE_EVENTS_FILTER_EVENTS. - - * dispnew.c (update_window, update_frame_1): Replace calls to - detect_input_pending with detect_input_pending_ignore_squeezables - so that redisplay is not paused if the event queue contains only - mouse movements. - - * lisp.h: Declare detect_input_pending_ignore_squeezables. - -2005-01-15 Steven Tamm - - * macterm.c (Vmac_use_core_graphics): Declare variable for - mac-allow-anti-aliasing. - (syms_of_macterm): DEFVAR_LISP and initialize it. - (mac_draw_string_common): Use core graphics text rendering if - mac-allow-anti-aliasing is enabled. - - * macfns.c (Fx_file_dialog): Save As dialog includes only the - file name in the text box. - -2005-01-15 YAMAMOTO Mitsuharu - - * macfns.c (x_set_foreground_color, x_set_background_color): - Sync with xfns.c. - (mac_window, x_create_tip_frame): Use XSetWindowBackground. - * macterm.c (XSetBackground, XSetWindowBackground): New functions. - * macterm.h (XSetBackground, XSetWindowBackground): Add externs. - -2005-01-14 Kim F. Storm - - * keyboard.c (Fposn_at_x_y): Add optional arg WHOLE. - -2005-01-13 Richard M. Stallman - - * keymap.c (Fcurrent_active_maps): Ignore Voverriding_local_map - if Voverriding_terminal_local_map is non-nil. - - * keyboard.c (syms_of_keyboard): Doc fix. - -2005-01-13 Kim F. Storm - - * xdisp.c (Fformat_mode_line): Fix last change. Remove NO_PROPS arg - (specify 0 for FACE instead). Reorder arg list. Doc fix. - -2005-01-12 Richard M. Stallman - - * xdisp.c (Fformat_mode_line): New arg FACE specifies a default - face property for characters that don't specify one. - - * fns.c (Frequire): Record in load-history unconditionally. - -2005-01-10 Kim F. Storm - - * dispextern.h (merge_faces): Rename from merge_into_realized_face. - - * xfaces.c (merge_faces): Rename from merge_into_realized_face. - Callers changed. - Add support to merge with lisp face id too (if face_name is t). - - * xdisp.c (get_next_display_element, next_element_from_display_vector): - Don't lookup lface_id from display table glyphs here; instead use - merge_faces to merge the lisp face id into current face. - -2005-01-09 Kim F. Storm - - * dispextern.h (struct it): New member dpvec_face_id. - (merge_into_realized_face): Add prototype. - - * xfaces.c (merge_into_realized_face): New function. Used to - merge escape-glyph face or face from display table into current face. - - * xdisp.c (Vshow_nonbreak_escape): New lisp var. - (syms_of_xdisp): DEFVAR_LISP it. - (escape_glyph_face): Remove var. - (redisplay_window): Don't initialize it. - (setup_for_ellipsis, get_next_display_element): - Set it->dpvec_face_id to -1. - (get_next_display_element): Test Vshow_nonbreak_escape. - Do not setup escape_glyph_face. - Properly merge escape-glyph face or face from display table with - current face for escape and control characters. - Set it->dpvec_face_id to relevant face id instead of adding it to each - element of display vector. - (next_element_from_display_vector): If it->dpvec_face_id is set, - use that instead of lface_id from glyph itself. - -2005-01-08 Jan Dj,Ad(Brv - - * xterm.h (struct x_output): New member, toolbar_detached. - - * gtkutil.c (xg_create_frame_widgets): Set initial tool bar height to - 38. - (xg_tool_bar_detach_callback): Set toolbar_detached to 1. - (xg_tool_bar_attach_callback): Set toolbar_detached to 0. - (xg_create_tool_bar): Initialize toolbar_detached. - (update_frame_tool_bar): Only set FRAME_TOOLBAR_HEIGHT (f) if - toolbar_detached is zero. - -2005-01-07 Jan Dj,Ad(Brv - - * xmenu.c (create_and_show_popup_menu): Pass zero as button to - gtk_menu_popup if not for_click, so callbacks for the menu are called. - - * gtkutil.c (xg_gtk_scroll_destroy, xg_create_scroll_bar) - (xg_tool_bar_callback, xg_tool_bar_help_callback) - (update_frame_tool_bar): Cast to EMACS_INT to avoid compiler warning. - - * xselect.c (x_get_foreign_selection, x_fill_property_data) - (Fx_get_atom_name, Fx_send_client_event): Replace XFLOAT with - XFLOAT_DATA to get extract number from Lisp object. - -2005-01-07 Kim F. Storm - - * xdisp.c (set_iterator_to_next): Fix 2004-12-13 change. - Set stop_charpos to current charpos instead of 0. - -2005-01-06 Nick Roberts - - * xdisp.c (Fformat_mode_line): First arg now required. - -2005-01-06 YAMAMOTO Mitsuharu - - * macterm.c (XLoadQueryFont): Correctly handle 0 size - font widths that are returned from some Japanese fonts. - -2005-01-06 Kim F. Storm - - * fringe.c (fringe_faces): Change to Lisp_Object pointer. - (draw_fringe_bitmap_1): Lookup user defined fringe faces here. - (destroy_fringe_bitmap): Set fringe_faces element to nil. - (Fdefine_fringe_bitmap, init_fringe): Change allocation of - fringe_faces array and init elements to nil. - (Fset_fringe_bitmap_face): Set fringe_faces to face name instead of - non-persistent face id. - (mark_fringe_data): New function for GC. - - * alloc.c (mark_fringe_data): Declare extern. - (Fgarbage_collect): Call mark_fringe_data. - - * alloc.c (overrun_check_free): Invalidate freed memory if - XMALLOC_CLEAR_FREE_MEMORY is defined. - -2005-01-05 YAMAMOTO Mitsuharu - - * macfns.c: Include sys/param.h. - [TARGET_API_MAC_CARBON] (mac_nav_event_callback): New declaration - and function. - [TARGET_API_MAC_CARBON] (Fx_file_dialog): Use MAXPATHLEN for size - of filename string. Set event callback function when creating - dialog boxes. Add code conversions for filenames. Don't dispose - of apple event descriptor record if failed to create it. - - * macterm.c: Include sys/param.h. - [USE_CARBON_EVENTS] (mac_handle_window_event): Add handler for - kEventWindowUpdate. - (install_window_handler) [USE_CARBON_EVENTS]: Register it. - (do_ae_open_documents) [TARGET_API_MAC_CARBON]: Get FSRef instead - of FSSpec from apple event descriptor record. - (do_ae_open_documents) [TARGET_API_MAC_CARBON]: Use MAXPATHLEN for - size of filename string. - [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Likewise. - [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Return error when a - file dialog is in action. - [TARGET_API_MAC_CARBON] (mac_do_track_drag): Likewise. - Reject only when there are no filename items. Set background color - before (un)highlighting the window below the dragged items. - (XTread_socket) [USE_CARBON_EVENTS]: Don't call do_window_update. - -2005-01-05 Romain Francoise - - * term.c (encode_terminal_code): Fix buffer size computation. - -2005-01-04 Richard M. Stallman - - * xdisp.c (Fformat_mode_line): Doc fix. - -2005-01-04 Stefan Monnier - - * alloc.c (refill_memory_reserve): Move. - (emacs_blocked_free, emacs_blocked_malloc, emacs_blocked_realloc) - (reset_malloc_hooks, uninterrupt_malloc) [SYNC_INPUT]: Don't define. - -2005-01-03 Richard M. Stallman - - * window.c (window_scroll_pixel_based): Don't correct preserve_y - for CURRENT_HEADER_LINE_HEIGHT when moving backwards. - -2005-01-03 Jason Rumney - - * w32bdf.c (w32_load_bdf_font): Set fontp->average_width and - fontp->space_width to FONT_WIDTH so they are valid. - - * w32fns.c (w32_load_system_font): Set FONT_WIDTH to maximum, not - average width. Set fontp->average_width and fontp->space_width to - their appropriate values. - - * w32term.c (x_new_font): Set FRAME_COLUMN_WIDTH to - fontp->average_width, not FONT_WIDTH. Set FRAME_SPACE_WIDTH to - fontp->space_width. - -2005-01-03 YAMAMOTO Mitsuharu - - * macterm.c (x_new_font): Set FRAME_SPACE_WIDTH. - (x_font_min_bounds, XLoadQueryFont): Use the correct font width - metrics for max and min bounds. - (x_load_font): Correctly calculate average font width metrics. - -2005-01-02 Richard M. Stallman - - * alloc.c (Fgarbage_collect): Don't truncate_undo_list on dead buffers. - -2004-12-31 Jan Dj,Ad(Brv - - * xterm.c (handle_one_xevent): Clear area in expose event for GTK. - -2004-12-31 Richard M. Stallman - - * xdisp.c (setup_for_ellipsis, get_next_display_element): - Set it->ellipsis_p to 1 or 0. - (display_line): Record whether row ends in mid-ellipsis. - (set_cursor_from_row): If ends in ellipsis, find start of it. - (cursor_row_p): If PT's at the end of the ellipsis the row - ends within, don't display cursor on this row. - - * dispextern.h (struct it): New element ellipsis_p. - (struct glyph_row): New element ends_in_ellipsis_p. - - * xdisp.c (BUFFER_POS_REACHED_P): We haven't reached the specified - position if we're reading from something other than the buffer. - - * window.c (window_scroll_pixel_based): Only look at - Vscroll_preserve_screen_position if the old PT can't be kept. - (syms_of_window) : Doc fix. - -2004-12-30 Kim F. Storm - - * xdisp.c (get_line_height_property): New function extracted from - original calc_line_height_property. - (calc_line_height_property): Rework. Handle t and (nil . ratio). - (x_produce_glyphs): Use them to handle line-height and - line-spacing according to new height spec. - (Qtotal): Remove. - (syms_of_xdisp): Remove intern and staticpro for Qtotal. - -2004-12-30 Kenichi Handa - - * fileio.c (Finsert_file_contents): Don't use - current_buffer->buffer_file_coding_system even if REPLACE is - non-nil. Call Qafter_insert_file_set_coding with the second arg VISIT. - - * fontset.h (struct font_info): New members space_width and - average_width. - - * frame.h (struct frame): New member space_width. - (FRAME_SPACE_WIDTH): New macro. - - * xterm.h (struct x_display_info): New member Xatom_AVERAGE_WIDTH. - - * xterm.c (x_new_font): Set FRAME_COLUMN_WIDTH to - fontp->average_width, not FONT_WIDTH. Set FRAME_SPACE_WIDTH to - fontp->space_width. - (x_load_font): Calculate fontp->space_width and fontp->average_width. - (x_term_init): Initialize dpyinfo->Xatom_AVERAGE_WIDTH. - - * xdisp.c (x_produce_glyphs): Calculate tab width by - FRAME_SPACE_WIDTH, not FRAME_COLUMN_WIDTH. - -2004-12-29 Sanghyuk Suh - - * macterm.c (SelectionRange): Add Xcode position apple event struct. - (do_ae_open_documents): Handle Xcode-style file position open events. - -2004-12-29 Luc Teirlinck - - * buffer.c (syms_of_buffer) : Correct typo. - -2004-12-29 Richard M. Stallman - - * buffer.c (syms_of_buffer) : Doc fix. - -2004-12-29 YAMAMOTO Mitsuharu - - * macfns.c (install_window_handler): Modify extern to return OSErr - value. - (mac_window): Handle return value of install_window_handler. - - * macterm.c (reflect_byte): Remove function. - (mac_create_bitmap_from_bitmap_data): Don't call reflect_byte. - Lookup table instead. - (mac_do_font_lists): Simplify calculation of the longest - nonspecial string. - (init_mac_drag_n_drop): Remove function and declaration. - (mac_initialize) [TARGET_API_MAC_CARBON]: Don't call - init_mac_drag_n_drop. - (mac_do_track_drag): New function and declaration. - (install_window_handler): Return OSErr value. - (install_window_handler) [TARGET_API_MAC_CARBON]: - Register handlers for tracking/receiving drag-and-drop items. - (do_ae_open_documents): Generate unibyte strings for filenames. - (mac_do_receive_drag) [TARGET_API_MAC_CARBON]: Likewise. - Reject only non-filename items. Set event modifiers, and return value. - -2004-12-28 Dan Nicolaescu - - * coding.c (decode_coding): Fix previous change. - -2004-12-28 Richard M. Stallman - - * xdisp.c (back_to_previous_visible_line_start): - Don't call handle_display_prop. - -2004-12-28 Dan Nicolaescu - - * coding.c (decode_coding_XXX, decode_composition_emacs_mule) - (decode_coding_emacs_mule, encode_coding_emacs_mule) - (decode_coding_iso2022, encode_designation_at_bol) - (encode_coding_iso2022, decode_coding_sjis_big5, decode_eol) - (decode_coding): Constify arguments and local vars. - -2004-12-27 Jan Dj,Ad(Brv - - * xmenu.c (popup_get_selection): Only pop down dialogs - on C-g and Escape. - (popup_get_selection): Remove parameter down_on_keypress. - (create_and_show_popup_menu, create_and_show_dialog): - Remove parameter down_on_keypress to popup_get_selection. - -2004-12-27 YAMAMOTO Mitsuharu - - * dispextern.h: Change HAVE_CARBON to MAC_OS. - (struct glyph_string): Likewise. - - * emacs.c (main) [MAC_OS8]: Call mac_term_init instead of - mac_initialize. - - * fileio.c (Fnext_read_file_uses_dialog_p, Fread_file_name): - Change TARGET_API_MAC_CARBON to HAVE_CARBON. - - * fns.c (vector): Change MAC_OSX to MAC_OS. - - * frame.c (x_set_frame_parameters, x_report_frame_params) - (x_set_fullscreen): Remove #ifndef HAVE_CARBON. - (x_set_border_width, Vdefault_frame_scroll_bars): - Change HAVE_CARBON to MAC_OS. - - * image.c [MAC_OS]: Include sys/stat.h. - [MAC_OS && !MAC_OSX]: Include sys/param.h, ImageCompression.h, and - QuickTimeComponents.h. - - * mac.c [!MAC_OSX] (mac_wait_next_event): Add extern. - [!MAC_OSX] (select): Use mac_wait_next_event. - [!MAC_OSX] (run_mac_command): Change EXEC_SUFFIXES to Vexec_suffixes. - [!MAC_OSX] (select, run_mac_command): Change `#ifdef - TARGET_API_MAC_CARBON' to `#if TARGET_API_MAC_CARBON'. - (mac_clear_font_name_table): Add extern. - (Fmac_clear_font_name_table): New defun. - (syms_of_mac): Defsubr it. - [MAC_OSX] (SELECT_POLLING_PERIOD_USEC): New define. - [MAC_OSX] (select_and_poll_event): New function. - [MAC_OSX] (sys_select): Use it. - [MAC_OSX && SELECT_USE_CFSOCKET] (socket_callback): New function. - [MAC_OSX && SELECT_USE_CFSOCKET] - (SELECT_TIMEOUT_THRESHOLD_RUNLOOP, EVENT_CLASS_SOCK): New defines. - [MAC_OSX] (sys_select) [SELECT_USE_CFSOCKET]: Use CFSocket and - RunLoop for simultaneously monitoring two kinds of inputs, window - events and process outputs, without periodically polling. - - * macfns.c (mac_initialized): Remove extern. - (stricmp): Put in #if 0. All callers changed to use xstricmp in - xfaces.c. - (strnicmp): Decrement `n' at the end of each loop, not the beginning. - (check_mac): Use the term "Mac native windows" instead of "Mac OS". - (check_x_display_info, x_display_info_for_name): Sync with xfns.c. - (mac_get_rdb_resource): New function (from w32reg.c). - (x_get_string_resource): Use it. - (install_window_handler): Add extern. - (mac_window): New function. - (Fx_create_frame): Use it instead of make_mac_frame. - Set parameter for Qfullscreen. Call x_wm_set_size_hint. - (Fx_open_connection, Fx_close_connection): New defuns. - (syms_of_macfns): Defsubr them. - (x_create_tip_frame) [TARGET_API_MAC_CARBON]: - Add kWindowNoUpdatesAttribute to the window attribute. - (x_create_tip_frame) [!TARGET_API_MAC_CARBON]: Use NewCWindow. - (x_create_tip_frame): Don't call ShowWindow. - (Fx_show_tip): Call ShowWindow. - (Fx_file_dialog): Change `#ifdef TARGET_API_MAC_CARBON' to `#if - TARGET_API_MAC_CARBON'. - (mac_frame_parm_handlers): Set handlers for Qfullscreen. - (syms_of_macfns) [MAC_OSX]: Initialize mac_in_use to 0. - - * macgui.h [!MAC_OSX]: Don't include Controls.h. Include Windows.h. - (Window): Typedef to WindowPtr and move outside `#if - TARGET_API_MAC_CARBON'. - (XSizeHints): New struct. - - * macterm.c (x_update_begin, x_update_end) - [TARGET_API_MAC_CARBON]: Disable screen updates during update of a - frame. - (x_draw_glyph_string_background, x_draw_glyph_string_foreground) - [MAC_OS8]: Use XDrawImageString/XDrawImageString16. - (construct_mouse_click): Put in #if 0. - (x_check_fullscreen, x_check_fullscreen_move): Remove decls. - (x_scroll_bar_create, x_scroll_bar_handle_click): Change `#ifdef - TARGET_API_MAC_CARBON' to `#if TARGET_API_MAC_CARBON'. - (activate_scroll_bars, deactivate_scroll_bars) - [!TARGET_API_MAC_CARBON]: Use ActivateControl/DeactivateControl. - (x_make_frame_visible) [TARGET_API_MAC_CARBON]: Reposition window - if the position is neither user-specified nor program-specified. - (x_free_frame_resources): Free size_hints. - (x_wm_set_size_hint): Allocate size_hints if needed. Set size_hints. - (mac_clear_font_name_table): New function. - (mac_do_list_fonts): Initialize font_name_table if needed. - (x_list_fonts): Don't initialize font_name_table. Add BLOCK_INPUT - around mac_do_list_fonts. - (mac_unload_font): New function. - (x_load_font): Add BLOCK_INPUT around XLoadQueryFont. - (init_mac_drag_n_drop, mac_do_receive_drag): Enclose declarations - and definitions with #if TARGET_API_MAC_CARBON. - [USE_CARBON_EVENTS] (mac_handle_window_event): Add decl. - (install_window_handler): Add decl. - (do_window_update): Add BeginUpdate/EndUpdate for the tooltip - window. Use UpdateControls. Get the rectangle that should be - updated and restrict the target of expose_frame to it. - (do_grow_window): Set minimum height/width according to size_hints. - (do_grow_window) [TARGET_API_MAC_CARBON]: Use ResizeWindow. - (do_zoom_window): Don't use x_set_window_size. - [USE_CARBON_EVENTS] (mac_handle_window_event): New function. - (install_window_handler): New function. - [!USE_CARBON_EVENTS] (mouse_region): New variable. - [!USE_CARBON_EVENTS] (mac_wait_next_event): New function. - (XTread_socket) [USE_CARBON_EVENTS]: Move call to - GetEventDispatcherTarget inside BLOCK_INPUT. - (XTread_socket) [!USE_CARBON_EVENTS]: Use mac_wait_next_event. - Update mouse_region when mouse is moved. - (make_mac_frame): Remove. - (make_mac_terminal_frame): Put in #ifdef MAC_OS8. - Initialize mouse pointer shapes. Change values of f->left_pos and - f->top_pos. Don't use make_mac_frame. Use NewCWindow. - Don't call ShowWindow. - (mac_initialize_display_info) [MAC_OSX]: Create mac_id_name from - Vinvocation_name and Vsystem_name. - (mac_make_rdb): New function (from w32term.c). - (mac_term_init): Use it. Add BLOCK_INPUT. Error if display has - already been opened. Don't pass argument to - mac_initialize_display_info. Don't set dpyinfo->height/width. - Add entries to x_display_list and x_display_name_list. - (x_delete_display): New function. - (mac_initialize): Don't call mac_initialize_display_info. - (syms_of_macterm) [!MAC_OSX]: Don't call Fprovide. - - * macterm.h (check_mac): Add extern. - (struct mac_output): New member size_hints. - (FRAME_SIZE_HINTS): New macro. - (mac_unload_font): Add extern. - - * xdisp.c (expose_window, expose_frame): Remove kludges for Mac. - - * xfaces.c (clear_font_table) [MAC_OS]: Call mac_unload_font. - -2004-12-27 Richard M. Stallman - - * buffer.c (Fbuffer_disable_undo): Delete (move to simple.el). - (syms_of_buffer): Don't defsubr it. - - * process.c (list_processes_1): Set undo_list instead - of calling Fbuffer_disable_undo. - - * xdisp.c (single_display_spec_string_p): Rename from - single_display_prop_string_p. - (single_display_spec_intangible_p): Rename from - single_display_prop_intangible_p. - (handle_single_display_spec): Rename from handle_single_display_prop. - Rewritten to be easier to understand. - - Change in load-history format. Functions now get (defun . NAME), - and variables get just NAME. - - * data.c (Fdefalias): Use (defun . FN_NAME) in LOADHIST_ATTACH. - - * eval.c (Fdefun, Fdefmacro): Use (defun . FN_NAME) in LOADHIST_ATTACH. - (Fdefvaralias, Fdefvar, Fdefconst): Use just SYM in LOADHIST_ATTACH. - (Qdefvar): Var deleted. - (syms_of_eval): Don't initialze it. - - * lread.c (syms_of_lread) : Doc fix. - -2004-12-27 Jan Dj,Ad(Brv - - * xmenu.c (popup_get_selection): Pop down on C-g. - (set_frame_menubar): Install translations for Lucid/Motif/Lesstif that - pops down menu on C-g. - (xdialog_show): If dialog popped down and no button in the dialog was - pushed, call Fsignal to quit. - (xmenu_show): In no toolkit version, if menu returns NO_SELECT call - Fsignal to quit. - - * xfns.c (Fx_file_dialog): Motif/Lesstif version: Pop down on C-g. - - * gtkutil.c (xg_initialize): Install bindings for C-g so that - dialogs and menus pop down. - -2004-12-27 Kenichi Handa - - * coding.c (code_convert_region): Fix calculation of `ratio'. - -2004-12-25 Jan Dj,Ad(Brv - - * gtkutil.c (update_frame_tool_bar): Make the value of - tool-bar-button-margin control margins of images in tool bar. - - * alloc.c (check_depth): New variable. - (overrun_check_malloc, overrun_check_realloc): Only add - overhead and write check pattern if check_depth is 1 (to handle - recursive calls). Increase/decrease check_depth in entry/exit. - (overrun_check_free): Only check for overhead if check_depth is 1. - Increase/decrease check_depth in entry/exit. - -2004-12-23 Jan Dj,Ad(Brv - - * keyboard.c (input_available_signal): Call SIGNAL_THREAD_CHECK - before touching input_available_clear_time, to avoid accessing it - from multiple threads. - -2004-12-23 Jason Rumney - - * image.c (__WIN32__) [HAVE_NTGUI]: Define for correct behaviour - of JPEG library. - -2004-12-22 Richard M. Stallman - - * emacs.c (main): If batch mode, set Vundo_outer_limit to nil. - - * lisp.h (Vundo_outer_limit): Fix decl. - - * undo.c (Vundo_outer_limit): Replaces undo_outer_limit. - Uses changed. - (syms_of_undo): Initialize appropriately. - (truncate_undo_list): If it's nil, there's no limit. - -2004-12-22 Kenichi Handa - - * xselect.c (Fx_get_cut_buffer_internal): Return a unibyte string. - -2004-12-21 Richard M. Stallman - - * eval.c (unwind_to_catch): Clear immediate_quit. - - * xdisp.c (get_next_display_element): Display codes 8a0 and 8ad - specially as `\ ' and `\-'. - - * keyboard.c (kbd_buffer_store_event_hold): - In the code for while-no-input, handle immediate_quit. - - * alloc.c (Fgarbage_collect): Update call to truncate_undo_list. - Call that at the very start. - (undo_limit, undo_strong_limit, undo_outer_limit): Move to undo.c. - (syms_of_alloc): Don't define undo-limit, - undo-strong-limit and undo-outer-limit here. - - * undo.c (truncate_undo_list): Return void. - Take just one argument, the buffer. - Make it current, and inhibit recursive GC. - Access and update the undo list directly; return void. - Refer to the undo...limit variables directly. - Test undo_outer_limit only after counting the whole current command. - When it's exceeded, call the function in undo-outer-limit-function. - (undo_limit, undo_strong_limit, undo_outer_limit): From alloc.c. - (Vundo_outer_limit_function): New variable. - (syms_of_undo): Define undo-limit, undo-strong-limit - and undo-outer-limit here, and undo-outer-limit-function. - Doc fixes. - - * lisp.h (truncate_undo_list): Update decl. - -2004-12-21 Piet van Oostrum - - * fileio.c (Fread_file_name): Delete duplicates in - file-name-history when history_delete_duplicates is true. - -2004-12-20 YAMAMOTO Mitsuharu - - * macterm.c (mac_do_list_fonts): Fix memory leak - -2004-12-20 Richard M. Stallman - - * regex.c (re_match_2_internal) : - Fix calls to UPDATE_SYNTAX_TABLE_FORWARD. - -2004-12-18 YAMAMOTO Mitsuharu - - * macterm.c (endif, x_font_name_to_mac_font_name): - Use maccentraleurroman instead of maccentraleuropean - (mac_c_string_match, mac_do_list_fonts): Speed up font search by - quickly finding a specific font without needing regexps. - -2004-12-15 Jan Dj,Ad(Brv - - * syssignal.h: Declare main_thread. - (SIGNAL_THREAD_CHECK): New macro. - - * keyboard.c (input_available_signal): Move thread checking code - to macro SIGNAL_THREAD_CHECK and call that macro. - (interrupt_signal): Call SIGNAL_THREAD_CHECK. - - * alloc.c (uninterrupt_malloc): Move main_thread to emacs.c. - - * emacs.c: Define main_thread. - (main): Initialize main_thread. - (handle_USR1_signal, handle_USR2_signal, fatal_error_signal) - (memory_warning_signal): Call SIGNAL_THREAD_CHECK. - - * floatfns.c (float_error): Call SIGNAL_THREAD_CHECK. - - * dispnew.c (window_change_signal): Call SIGNAL_THREAD_CHECK. - - * sysdep.c (select_alarm): Call SIGNAL_THREAD_CHECK. - - * process.c (send_process_trap, sigchld_handler): - Call SIGNAL_THREAD_CHECK. - - * data.c (arith_error): Call SIGNAL_THREAD_CHECK. - - * atimer.c (alarm_signal_handler): Call SIGNAL_THREAD_CHECK. - - * xterm.c (xg_scroll_callback): Update XG_LAST_SB_DATA before - returning when xg_ignore_gtk_scrollbar is true. - -2004-12-14 Kim F. Storm - - * keyboard.c (read_char): Save and restore echo_string when - handling input method. - -2004-12-13 Richard M. Stallman - - * eval.c (syms_of_eval) : Doc fix. - - * keyboard.c (Vthrow_on_input): New variable. - (syms_of_keyboard): Defvar and initialize it. - (kbd_buffer_store_event_hold): Handle Vthrow_on_input. - - * lisp.h (QUIT): Check for Vthrow_on_input. - (Vthrow_on_input): Declare it. - -2004-12-13 Kim F. Storm - - * xdisp.c (set_iterator_to_next): Reset stop_charpos after display - vector. - -2004-12-12 Richard M. Stallman - - * indent.c (Fvertical_motion): Call move_it_by_lines even if LINES = 0. - - * minibuf.c (Fall_completions): Add var `zero' and use it in loop. - (Ftry_completion): Really use outer `zero'; eliminate inner one. - -2004-12-12 Kenichi Handa - - * term.c (encode_terminal_code): Fix previous change. - -2004-12-11 Stefan Monnier - - * keyboard.c (handle_async_input): Remove pthread mutex handling. - (input_available_signal): Move pthread thingy to !SYNC_INPUT branch. - - * syntax.c (Fforward_word): Avoid non-idempotent side-effects - in macro arguments. - - * minibuf.c (Ftry_completion, Fall_completions): Don't use - XFASTINT blindly. - - * emacs.c (main, Fdump_emacs): Don't touch malloc hooks if SYNC_INPUT. - -2004-12-11 Jan Dj,Ad(Brv - - * w32term.c (x_calc_absolute_position): Remove calculation of - difference between inner and outer window. Don't subtract difference - for left and top calculations. - - * xterm.c (x_calc_absolute_position): Don't subtract outer_pixel_diff - for left and top calculations. Remove call to x_real_positions. - [Bug report by Drew Adams in November.] - (x_check_expected_move): Do not set change_gravity to 1 when calling - x_set_offset. - -2004-12-08 Richard M. Stallman - - * xdisp.c (get_next_display_element): Use `escape-glyph' for - control chars and escaped octal codes. - (Qescape_glyph): New variable. - (syms_of_xdisp): Initialize it. - (escape_glyph_face): New variable. - (redisplay_window): Initialize it. - -2004-12-07 Paul Eggert - - * image.c (our_fill_input_buffer, jpeg_load, CHECK_LIB_AVAILABLE) - (init_image): Use 1 rather than TRUE. TRUE's not always defined. - -2004-12-07 Jan Dj,Ad(Brv - - * emacs.c (Fdump_emacs): Add ! defined (SYSTEM_MALLOC) around - reset_malloc_hooks. - - * keyboard.c (handle_async_input, input_available_signal): - Add ! defined (SYSTEM_MALLOC) around thread code. - - * alloc.c: Add comment about the reason for (UN)BLOCK_INPUT_ALLOC. - -2004-12-07 Stefan Monnier - - * eval.c (init_eval_once): Increase max_specpdl_size to 1000. - - * config.in: Regenerate. - -2004-12-07 Jan Dj,Ad(Brv - - * xmenu.c (Fx_popup_menu): Correct documentation about position. - (xmenu_show): Do not call XTranslateCoordinates. Adjust position - if not given by a mouse click to correspond with x-popup-menu - documentation. - - * config.in: Regenerate. - - * gtkutil.c: Include signal.h and syssignal.h. - (xg_get_file_name): Block and unblock __SIGRTMIN if defined. - - * alloc.c: If HAVE_GTK_AND_PTHREAD, include pthread.h, - new variables main_thread and alloc_mutex, - define (UN)BLOCK_INPUT_ALLOC to use alloc_mutex to protect - emacs_blocked_* calls and only do (UN)BLOCK_INPUT in the main thread. - If not HAVE_GTK_AND_PTHREAD, (UN)BLOCK_INPUT_ALLOC is the same - as (UN)BLOCK_INPUT. - (emacs_blocked_free, emacs_blocked_malloc) - (emacs_blocked_realloc): Use (UN)BLOCK_INPUT_ALLOC. - (uninterrupt_malloc): Initialize main_thread and alloc_mutex. - (reset_malloc_hooks): New function. - - * lisp.h: Declare reset_malloc_hooks. - - * emacs.c (Fdump_emacs): Call reset_malloc_hooks. - - * keyboard.c: Conditionally include pthread.h. - (handle_async_input, input_available_signalt): If not in the main - thread, block signal, send signal to main thread and return. - - * gtkutil.c (xg_get_file_with_chooser): Handle local files only. - Set current folder in file chooser if default_filename is a directory. - -2004-12-05 Stefan Monnier - - * regex.c (GET_UNSIGNED_NUMBER): Signal an error when reaching the end. - Remove redundant correctness checks. - (regex_compile): Fix up error codes for \{..\} expressions. - -2004-12-05 Richard M. Stallman - - * regex.c (regex_compile): Fix end-of-pattern case for space. - -2004-12-03 YAMAMOTO Mitsuharu - - * macterm.h (cfstring_create_with_utf8_cstring): Add prototype. - * mac.c (cfstring_create_with_utf8_cstring): Add to prevent - crashes with invalid characters. - * macmenu.c (add_menu_item): Use it. - * image.c (image_load_quartz2d): Likewise. - * macfns.c (x_set_name, x_set_title): Likewise. - (Fx_file_dialog): Likewise. Use constant CFRefs instead of - creating them each time for labels. - -2004-12-02 Richard M. Stallman - - * config.in (RE_TRANSLATE_P): If make_number is not a macro, - don't use it here. - - * eval.c (Fcalled_interactively_p): Don't check INTERACTIVE. - (interactive_p): Skip Scalled_interactively_p frames - like Sinteractive_p frames. - (unwind_to_catch): Clear handling_signal. - - * data.c (Fmake_variable_buffer_local): Doc fix. - (Fmake_local_variable): Doc fix. - - * insdel.c (insert_from_string_before_markers) - (insert_from_string): Don't modify buffer on empty insertion. - - * window.c (Fget_lru_window, Fget_largest_window): Doc fixes. - -2004-12-01 YAMAMOTO Mitsuharu - - * macmenu.c (add_menu_item): Fallback on MacRoman if encoding - menu text as UTF8 fails. - -2004-12-01 Kim F. Storm - - * alloc.c: Add commentary for last change. - (XMALLOC_PUT_SIZE, XMALLOC_GET_SIZE): New macros to handle - sizeof(size_t) != 4. - (overrun_check_malloc, overrun_check_realloc, overrun_check_free): - Use them. Also clear header and trailer of freed memory. - (GC_STRING_OVERRUN_COOKIE_SIZE): Rename from GC_STRING_EXTRA. - (string_overrun_cookie): Rename from string_overrun_pattern. - (GC_STRING_EXTRA): Define from GC_STRING_OVERRUN_COOKIE_SIZE. - -2004-12-01 Andreas Schwab - - * lisp.h: Declare string_to_multibyte. - -2004-12-01 Kenichi Handa - - * w32console.c (w32con_write_glyphs): Decide coding here. - Adjusted for the change of encode_terminal_code. - - * term.c (encode_terminal_code): Don't make it "static". - -2004-11-30 Kenichi Handa - - * term.c (encode_terminal_buf, encode_terminal_bufsize): New variables. - (encode_terminal_code): Argument changed. Encode all - characters at once, and return a pointer to the result of encoding. - (write_glyphs): Decide coding here. Adjusted for the above change. - (insert_glyphs): Likewise. - (term_init): Initialize encode_terminal_bufsize to 0. - - * coding.c (Vcode_conversion_workbuf_name): New variable. - (syms_of_coding): Initialize and staticpro it. - (set_conversion_work_buffer): New function. - (run_pre_post_conversion_on_str): Use it. - (run_pre_write_conversin_on_c_str): New function. - - * coding.h (run_pre_write_conversin_on_c_str): Extern it. - -2004-11-30 YAMAMOTO Mitsuharu - - * keyboard.c: Don't undef SIGIO - * s/darwin.h (NO_SOCK_SIGIO): Define NO_SOCK_SIGIO on carbon - * Makefile.in (mac.o): Depend on blockinput.h and atimer.h. - (macfns.o): Don't depend on ccl.h. - * macfns.c (mac_frame_parm_handlers): Set handlers for - Qleft_fringe and Qright_fringe. - * macterm.c (mac_fill_rectangle_to_pixmap) - (mac_draw_rectangle_to_pixmap, mac_copy_area_to_pixmap) - (mac_copy_area_with_mask_to_pixmap, x_draw_image_foreground_1): - Put in #if 0. - (mac_scroll_area) [TARGET_API_MAC_CARBON]: Use ScrollWindowRect. - (x_flush) [TARGET_API_MAC_CARBON]: Don't traverse frames. - (XFlush) [TARGET_API_MAC_CARBON]: Define to an empty replacement. - (x_draw_glyph_string_background, x_draw_glyph_string_foreground) - [!MAC_OS8]: Added ifdef'd out code for os8. Don't use - XDrawImageString. Always draw background and foreground separately. - (x_draw_image_foreground): Use clipping instead of computing the - intersection rectangle. - (x_draw_image_glyph_string): Don't draw an image with mask to a - pixmap. - (x_redisplay_interface): Set flush_display_optional member to 0. - (XTread_socket): Correctly reset the TEConverter - object. - -2004-11-30 Kim F. Storm - - * lisp.h: New defines to enable buffer overrun checking. - (GC_CHECK_STRING_OVERRUN, GC_CHECK_STRING_FREE_LIST) - (XMALLOC_OVERRUN_CHECK, GC_CHECK_CONS_LIST): Add. - - * alloc.c: Add more checks for buffer overruns. - (XMALLOC_OVERRUN_CHECK_SIZE, xmalloc_overrun_check_header) - xmalloc_overrun_check_trailer, overrun_check_malloc) - overrun_check_realloc, overrun_check_free): Add. - (GC_STRING_EXTRA, string_overrun_pattern): Add. - (check_sblock, allocate_string_data, compact_small_strings): - Set and check string_overrun_pattern if GC_CHECK_STRING_OVERRUN. - (check_cons_list): Condition on GC_CHECK_CONS_LIST. - (check_string_free_list): Add. - (allocate_string, sweep_strings): Call check_string_free_list. - - * emacs.c (malloc_initialize_hook): Don't free malloc_state_ptr if - XMALLOC_OVERRUN_CHECK to avoid crash during load. - -2004-11-29 Kim F. Storm - - * fns.c (concat): Use SAFE_ALLOCA. - -2004-11-29 Stefan Monnier - - * sysdep.c (emacs_write): Don't use QUIT. - -2004-11-29 Kenichi Handa - - * buffer.c (init_buffer): Set current_buffer->directory to a - multibyte string made by string_to_multibyte. - - * emacs.c (init_cmdargs): Set unibyte strings in Vcommand_line_args. - -2004-11-27 Andreas Schwab - - * alloc.c (mark_stack): Call GC_MARK_SECONDARY_STACK if defined. - - * s/gnu-linux.h: Enable no-op gcpros on ia64. - (GC_MARK_SECONDARY_STACK) [__ia64__]: Define. - - * filelock.c (lock_file_1): Call get_boot_time early. - Increase buffer size. - -2004-11-27 Eli Zaretskii - - * lisp.h (DECL_ALIGN): Define non-trivially only if NO_DECL_ALIGN - is not defined. - -2004-11-27 Kim F. Storm - - * search.c (syms_of_search) : Move 'doc:' - marker out of doc string. - -2004-11-26 Stefan Monnier - - * s/darwin.h (POSIX_SIGNALS): Undo the removal of 2002-08-25, - which was not mentioned in the log. - -2004-11-26 Kim F. Storm - - * fringe.c (update_window_fringes): Prefer truncation bitmaps over - angle bitmaps at top/bottom line. - - * xdisp.c: Undo recent changes for restoring saved_face_id. Instead, - set it when it->method is set to next_element_from_display_vector. - (setup_for_ellipsis): Add LEN argument. Callers changed. - Set it->saved_face_id. - (get_next_display_element): Use loop instead of recursion. - Set it->saved_face_id. Combine duplicate code for ctr chars. - (next_element_from_display_vector): Do not set it->saved_face_id. - (next_element_from_ellipsis): Use setup_for_ellipsis. - -2004-11-26 Eli Zaretskii - - * eval.c (Fdefvar): Declare pdl from last change as `volatile' to - prevent compiler warnings. - -2004-11-25 Stefan Monnier - - * keyboard.c (command_loop_1): Print a message describing the key - the user just pressed when this key has no binding. - - * sysdep.c (sys_signal): Don't use SA_RESTART if SYNC_INPUT is set. - (emacs_open, emacs_read, emacs_write): Check QUIT when interrupted. - - * lread.c (readchar): Check QUIT when `getc' is interrupted. - -2004-11-24 Richard M. Stallman - - * coding.c (run_pre_post_conversion_on_str): Bind Qinhibit_read_only. - - * buffer.c (syms_of_buffer) : Doc fix. - -2004-11-24 Kim F. Storm - - * xdisp.c (move_it_in_display_line_to, display_line): - Restore saved_face_id also when truncate-lines or hscrolled. - -2004-11-23 Jan Dj,Ad(Brv - - * gtkutil.c (xg_get_file_name): Rename use-old-gtk-file-dialog to - x-use-old-gtk-file-dialog. - - * xfns.c: Define x_use_old_gtk_file_dialog. - (syms_of_xfns): Rename use-old-gtk-file-dialog to x-... Move it - outside ifdef USE_GTK. - -2004-11-23 Stefan Monnier - - * coding.h (ENCODE_FILE, DECODE_FILE, ENCODE_SYSTEM, DECODE_SYSTEM): - Don't use XFASTINT blindly. - - * config.in (RE_TRANSLATE_P): Don't use XFASTINT blindly. - - * indent.c (skip_invisible): Avoid non-idempotent side-effects - in macro arguments. - - * keymap.c (Flookup_key): Check INTEGERP before XINT. - - * lread.c (oblookup): Don't use XFASTINT blindly. - - * window.c (Fset_window_scroll_bars): Don't use XINT if it isn't int. - (decode_next_window_args, window_loop): Don't use XFASTINT blindly. - -2004-11-23 Kim F. Storm - - * dispextern.h (MATRIX_ROW_ENDS_IN_MIDDLE_OF_CHAR_P) - (MATRIX_ROW_STARTS_IN_MIDDLE_OF_CHAR_P): Not if dpvec_index is zero. - - * xfaces.c (lookup_named_face): Add signal_p arg. Return -1 if - signal_p is zero and face name is unknown. - (Fx_list_fonts): Don't signal error in lookup_named_face. - (Fface_font): Signal error in lookup_named_face. - (ascii_face_of_lisp_face): Likewise. - - * dispextern.h (lookup_named_face): Fix prototype. - - * xdisp.c (handle_single_display_prop): Don't signal error in - lookup_named_face for unknown fringe face name. - (highlight_trailing_whitespace): Don't signal error in - lookup_named_face if trailing-whitespace face unknown. - (calc_line_height_property): Don't signal error in - lookup_named_face if specified face name is unknown. - - * fringe.c (update_window_fringes): Show top row indicator if - window has header-line. Don't show arrow at bob and eob - if the boundary indicators are not used. - (Fset_fringe_bitmap_face): Signal error in lookup_named_face. - - * window.c (set_window_buffer): Clear display_error_modiff. - -2004-11-22 Kim F. Storm - - * fringe.c (update_window_fringes): Provide sensible fall-back - value for non-nil indicate-buffer-boundaries setting. - -2004-11-22 Markus Rost - - * minibuf.c (Fminibuffer_complete_and_exit): Fix previous change. - -2004-11-22 Stefan Monnier - - * eval.c (Fdefvar): Warn when var is let-bound but globally void. - -2004-11-21 Kim F. Storm - - * xdisp.c (erase_phys_cursor): Clear hollow cursor inside TEXT_AREA. - - * xterm.c (x_clip_to_row): Add area arg. Callers changed. - (x_draw_hollow_cursor, x_draw_bar_cursor): Clip to TEXT_AREA. - - * w32term.c (w32_clip_to_row): Add area arg. Callers changed. - (x_draw_hollow_cursor, x_draw_bar_cursor): Clip to TEXT_AREA. - - * macterm.c (x_clip_to_row): Add area arg. Callers changed. - (x_draw_hollow_cursor, x_draw_bar_cursor): Clip to TEXT_AREA. - - * xdisp.c (move_it_in_display_line_to, display_line): - Restore saved_face_id if overflow-newline-into-fringe is enabled and - line is continued before or in middle of element from display vector. - - * indent.c (Fvertical_motion): Fix last change. Use another - method to detect if iterator moved too far ahead after reseat. - - * xdisp.c (IT_EXPAND_MATRIX_WIDTH): New macro. Do not - expand matrix width for overflow in zero-width area. - (append_glyph, append_composite_glyph, produce_image_glyph) - (append_stretch_glyph): Use it to avoid loop in redisplay. - (note_mode_line_or_margin_highlight): Don't let help-echo from - string override help-echo from image map. - -2004-11-20 Luc Teirlinck - - * fns.c (Fyes_or_no_p): Call Fread_from_minibuffer with extra argument. - * callint.c (Fcall_interactively): Ditto. - -2004-11-20 Stefan Monnier - - * minibuf.c (Fminibuffer_complete_and_exit): - Fixup the case of the completed value, for case-indep completion. - -2004-11-20 Richard M. Stallman - - * lisp.h (Fread_from_minibuffer): Add arg in decl. - - * minibuf.c (read_minibuf): New arg KEEP_ALL. Callers changed. - (Fread_from_minibuffer): New arg KEEP_ALL. Callers changed. - - * search.c (Vsearch_spaces_regexp): - Rename from Vsearch_whitespace_regexp. All uses changed. - -2004-11-20 Thien-Thi Nguyen - - * eval.c (init_eval_once): Increase `max_specpdl_size' to 650. - -2004-11-19 Richard M. Stallman - - * search.c (Vsearch_whitespace_regexp): New variable. - (syms_of_search): Defvar it. - (compile_pattern_1): Call re_set_whitespace_regexp with it. - (search_buffer): No regexp is trivial if Vsearch_whitespace_regexp - is non-nil. - (struct regexp_cache): New element whitespace_regexp. - (syms_of_search): Initialize whitespace_regexp elements. - (compile_pattern): Compare whitespace_regexp elements. - (compile_pattern_1): Set whitespace_regexp elements. - - * regex.c (regex_compile): Substitute whitespace_regexp - for spaces, if it is nonzero. - (whitespace_regexp): New variable. - (re_set_whitespace_regexp): New function. - -2004-11-19 Kim F. Storm - - * indent.c (Fvertical_motion): Fix last change. - -2004-11-18 Kim F. Storm - - * indent.c (Fvertical_motion): Undo 2004-11-16 change. - Instead, move back again if reseating moves too far ahead. - -2004-11-17 Luc Teirlinck - - * xdisp.c (message3): Call clear_message. - -2004-11-17 Kim F. Storm - - * xdisp.c (erase_phys_cursor): Adjust cursor row visible height. - -2004-11-16 Jan Dj,Ad(Brv - - * gtkutil.c (xg_get_file_name): Typo in HAVE_GTK_FILE_SELECTION_NEW. - - * xmenu.c (x_menu_in_use): Remove. - (x_menu_set_in_use): Also set popup_activated_flag. - - * xfns.c (Fx_file_dialog): Call popup_activated instead of - x_menu_in_use. Call x_menu_set_in_use in Motif version also. - - * xterm.h (x_menu_in_use): Remove. - -2004-11-16 Richard M. Stallman - - * keymap.c (Fmap_keymap): New arg SORT-FIRST. - Use map-keymap-internal to implement that. - - * indent.c (Fvertical_motion): In batch mode, use vmotion directly. - -2004-11-16 Stefan Monnier - - * xdisp.c (get_glyph_string_clip_rect, init_glyph_string): Check it's - a window before using XWINDOW. - - * window.c (make_window, Fselect_window, make_dummy_parent) - (save_window_save): - * frame.c (make_frame): - * fns.c (concat): Avoid side-effects inside XSETFASTINT's arguments. - - * lisp.h (NILP): Use EQ rather than XFASTINT. - -2004-11-16 Kim F. Storm - - * fringe.c (Fdefine_fringe_bitmap): Always set 'h'. Simplify. - - * indent.c (Fvertical_motion): Fix last change. Only reseat when - moving backwards. - -2004-11-16 Luc Teirlinck - - * dispextern.h: Extern reseat_at_previous_visible_line_start. - -2004-11-16 Kenichi Handa - - * xdisp.c (display_mode_element): Fix previous change (calculate - end position of substring to display correctly). - -2004-11-16 Kim F. Storm - - * keyboard.c (Fposn_at_point): Remove extra */ after doc string. - Reported by Andrew M. Scott. - -2004-11-15 Kim F. Storm - - * fns.c (Fsafe_plist_get): New defun. - (syms_of_fns): Defsubr it. - - * lisp.h (Fsafe_plist_get): Add EXFUN. - - * xdisp.c (store_mode_line_string, produce_stretch_glyph): - Use Fsafe_plist_get. - (note_mode_line_or_margin_highlight, note_mouse_highlight): - Fix image map element parsing. Use Fsafe_plist_get. - -2004-11-15 Richard M. Stallman - - * xdisp.c (get_next_display_element): Fix previous change. - -2004-11-14 Jan Dj,Ad(Brv - - * window.c (shrink_windows): Handle special case of one window left - when trying to shrink the final reminder. Grow windows if - total_removed is less than total_shrink. - - * xmenu.c (pop_down_menu): Remove global variable current_menu, - extract pointer from arg with XSAVE_VALUE. - (create_and_show_popup_menu, create_and_show_dialog, xmenu_show): - Construct arg to record_unwind_protect with make_save_value. - -2004-11-13 Richard M. Stallman - - * xdisp.c (reseat_at_previous_visible_line_start): No longer static. - (get_next_display_element): Fix previous change to apply only to \n. - - * indent.c (Fvertical_motion): Scan to PT from start of line to - make iterator consistent. - - * minibuf.c (syms_of_minibuf) : Doc fix. - -2004-11-14 Jan Dj,Ad(Brv - - * gtkutil.c (pop_down_file_dialog): Add BLOCK_INPUT. - - * xfns.c (Fx_file_dialog): Call x_menu_in_use and x_menu_set_in_use. - Record unwind with clean_up_file_dialog. - - * xterm.h (x_menu_in_use, x_menu_set_in_use, x_menu_wait_for_event): - Declare. - - * xmenu.c (x_menu_in_use, x_menu_set_in_use): New functions. - -2004-11-13 Jan Dj,Ad(Brv - - * gtkutil.c (xg_file_sel_ok, xg_file_sel_cancel) - (xg_file_sel_destroy): Remove. - (xg_file_response_cb, pop_down_file_dialog) - (xg_get_file_name_from_chooser, xg_get_file_name_from_selector): - New functions. - (xg_get_file_with_chooser, xg_get_file_with_selection): - Take new arg func, set it to xg_get_file_name_from_chooser/selector. - Move common code to xg_get_file_name. Return widget created. - (xg_get_file_name): Set name, transient for, modal and destroy - with parent here. Connect response signal to xg_file_response_cb, - connect delete-event to gtk_true. Record pop_down_file_dialog - for unwind. Do event loop and call x_menu_wait_for_event in loop. - (xg_create_widget): Make dialogs modal. - - * xmenu.c (unuse_menu_items, pop_down_menu): Arg is of type - Lisp_Object. - (popup_get_selection): Move unwind protect ... - (create_and_show_popup_menu, create_and_show_dialog): ... to here. - Move destroy of widget to pop_down_menu. - (popup_widget_loop): Move unwind protect ... - (create_and_show_popup_menu, create_and_show_dialog): ... to here. - Move destroy of widget to pop_down_menu. - (pop_down_menu): BLOCK_INPUT and destroy widget/window. - (xmenu_show): Record unwind pop_down_menu. Move XMenuDestroy, - x_mouse_leave and grabbed = 0 to pop_down_menu. - -2004-11-13 Kim F. Storm - - * xdisp.c (make_cursor_line_fully_visible_p): New variable. - (syms_of_xdisp): DEFVAR_BOOL it. - (make_cursor_line_fully_visible, try_cursor_movement) - (try_window_id): Use it. - -2004-11-12 Kim F. Storm - - * dispextern.h (struct glyph_row): New member extra_line_spacing. - (struct it): New member max_extra_line_spacing. - (MR_PARTIALLY_VISIBLE, MR_PARTIALLY_VISIBLE_AT_TOP) - (MR_PARTIALLY_VISIBLE_AT_BOTTOM): New helper macros. - (MATRIX_ROW_PARTIALLY_VISIBLE_P): Fix to return false if invisible - part of last line is only extra line spacing (so the text on the - line is fully visible). Use helper macros. - Add W arg (to use them). All callers changed. - (MATRIX_ROW_PARTIALLY_VISIBLE_AT_TOP_P) - (MATRIX_ROW_PARTIALLY_VISIBLE_AT_BOTTOM_P): Use helper macros. - - * window.c (window_scroll_pixel_based, Frecenter): - Use move_it_vertically_backward directly. - (Frecenter): Fix calculation of new start pos for negative arg. - Before, the new start pos was sometimes chosen too far back, so - the last line became only partially visible, and thus would be - either only semi-visible or automatically scrolled to the middle - of the window by redisplay. - - * xdisp.c (init_iterator): Clear it.max_extra_line_spacing. - (move_it_vertically_backward): Don't recure to move further back. - (move_it_vertically): Remove superfluous condition. - (move_it_by_lines): Clear last_height when moved 0 lines. - (resize_mini_window): Use it.max_extra_line_spacing. - (display_tool_bar_line): Clear row->extra_line_spacing. - (try_scrolling): Use move_it_vertically_backward directly. - (redisplay_window): Likewise. - (compute_line_metrics): Set row->extra_line_spacing. - (display_line, display_string): Likewise. - (x_produce_glyphs): Update it->max_extra_line_spacing. - - * xmenu.c (pop_down_menu): Return nil. - -2004-11-12 Jan Dj,Ad(Brv - - * xmenu.c (x_menu_wait_for_event): New function. - (popup_get_selection, popup_widget_loop): Call x_menu_wait_for_event - to handle timers. - (popup_widget_loop): Add argument do_timers. - (create_and_show_popup_menu, create_and_show_dialog): Pass 1 for - do_timers to popup_widget_loop. - (xmenu_show): Call XMenuActivateSetWaitFunction so that - x_menu_wait_for_event is called by XMenuActivate. - (create_and_show_popup_menu): Pass 1 for do_timers to - popup_get_selection. - (pop_down_menu): New function. - (popup_get_selection, popup_widget_loop): Unwind protect to - pop_down_menu. - (popup_widget_loop): Add argument widget. - (create_and_show_popup_menu, create_and_show_dialog): Pass new - argument widget to popup_widget_loop. - -2004-11-10 Stefan Monnier - - * keymap.c (Fkeymap_prompt): Accept symbol keymaps. - -2004-11-09 Kim F. Storm - - * xselect.c: Include and (for getpid). - Fix various comments referring to XEvents instead of input events. - (x_queue_event): Fix format strings. - (x_stop_queuing_selection_requests): Likewise. - - * xdisp.c (produce_image_glyph): Remove unused variable 'face_ascent'. - (pint2hrstr): Add extra braces to silence compiler. - - * print.c (print_object): Fix format string. - - * lread.c (read1): Fix next_char matching. - - * lisp.h (Fdelete): Add EXFUN. - (replace_range_2): Add prototype. - - * keyboard.c (read_avail_input): Remove unused variable 'discard'. - - * intervals.h (NULL_INTERVAL_P): Add separate version when - ENABLE_CHECKING is not defined to silence compiler. - (compare_string_intervals): Add prototype. - - * fringe.c (destroy_fringe_bitmap): Fix return type. - (Ffringe_bitmaps_at_pos): Remove unused var 'old_buffer'. - - * emacs.c (Fdump_emacs): Fix format string. - - * doc.c: Include . - (Fsubstitute_command_keys): Remove unused variable 'firstkey'. - - * data.c (store_symval_forwarding): Remove unused variables. - - * callint.c (Fcall_interactively): Remove unused variable 'funcar'. - -2004-11-09 Jan Dj,Ad(Brv - - * Makefile.in (stamp-oldxmenu): If HAVE_GTK, don't add dependencies - to ${OLDXMENU}. - -2004-11-09 Kim F. Storm - - * process.c (Fmake_network_process): Remove kludge for interrupted - connects on BSD. If connect is interrupted, just close socket and - start over rather than sleeping and retry with same socket. - -2004-11-09 Jan Dj,Ad(Brv - - * .cvsignore: Add buildobj.lst. - - * doc.c: New variable Vbuild_files. - (Fsnarf_documentation): If Vbuild_files is nil, populate it with - file names from buildobj.lst. Only attach docstrings from files - that are in Vbuild_files. - (syms_of_doc): Defvar Vbuild_files. - - * Makefile.in (SOME_MACHINE_OBJECTS): Add fringe.o, image.o - and w32*.o. - (temacs${EXEEXT}): Generate buildobj.lst when temacs is linked. - (mostlyclean): Rm buildobj.lst - - * makefile.w32-in ($(TEMACS)): Generate buildobj.lst when temacs - is linked. - -2004-11-09 Kim F. Storm - - * fringe.c (update_window_fringes): Update fringe bitmaps if - cur and row ends_at_zv_p differs. If bitmaps of a row is updated, - also update previous row to get rid of misc. artifacts. - -2004-11-08 Kim F. Storm - - * xdisp.c (fast_find_position): Fix start pos if header line present. - (note_mouse_highlight): Clear mouse face if we move out of text area. - -2004-11-08 Eli Zaretskii - - * editfns.c: Move #include "systime.h" before . - Don't include explicitly. - Include unconditionally, not just on MacOS. - -2004-11-08 Kenichi Handa - - * fontset.c (fontset_pattern_regexp): Cancel my previous change; - don't pay attention to '\' before '*'. - (fontset_pattern_regexp): Change the meaning of the second arg. - (Fnew_fontset): Call fs_query_fontset, not Fquery_fontset. - (check_fontset_name): Try NAME as literal at first, and if it - failes, try NAME as pattern. - -2004-11-07 Jan Dj,Ad(Brv - - * emacs.c (Fdump_emacs): Only output warning on GNU/Linux. - -2004-11-07 Andreas Schwab - - * lisp.h (Fmsdos_downcase_filename): Declare. - * dired.c (Fmsdos_downcase_filename): Don't declare here. - * fileio.c: Likewise. - -2004-11-07 Jan Dj,Ad(Brv - - * dosfns.c (Fdos_memget, Fdos_memput): Use integer variable offs in - comparisons with integers instead of Lisp_Object address. - (Fmsdos_set_keyboard): Declare argument allkeys. - - * msdos.c (IT_set_frame_parameters): Use EQ, not ==, for Lisp_Object:s. - - * dired.c (Fmsdos_downcase_filename): Declare extern on MSDOS to avoid - int/Lisp_Object mixup. - - * fileio.c: Ditto. - -2004-11-06 Steven Tamm - - * editfns.c: Need to include sys/time.h before resource.h on darwin. - -2004-11-06 Richard M. Stallman - - * callint.c (Fcall_interactively): Avoid reusing EVENT for other data. - - * xfaces.c (merge_named_face): GCPRO the face_name in the - named_merge_point struct that we make. - (merge_face_heights): Eliminate GCPRO arg. All callers changed. - - * keyboard.c (command_loop_1): Change Vtransient_mark_mode - before deciding whether to inactivate mark. - -2004-11-06 Lars Brinkhoff - - * config.in: Regenerate (add HAVE_GETRUSAGE). - * editfns.c (Fget_internal_run_time): New function. - (syms_of_data): Defsubr it. - * fns.c (sxhash): As far as possible, merge calculation of - hash code for symbols and strings. - -2004-11-06 Eli Zaretskii - - * frame.c (syms_of_frame): Fix the example in the doc string. - -2004-11-06 Jan Dj,Ad(Brv - - * eval.c (Feval): Remove check for INPUT_BLOCKED_P. - - * xmenu.c (popup_get_selection, create_and_show_popup_menu) - (create_and_show_dialog): Revert change from 2004-10-31. - -2004-11-05 Luc Teirlinck - - * macros.c (syms_of_macros) : Doc fix. - -2004-11-05 Kim F. Storm - - * print.c (print_object): Print Lisp_Misc_Save_Value objects. - - * fileio.c (Ffile_modes): Doc fix. - (auto_save_1): Check for Ffile_modes nil value. - -2004-11-05 Kim F. Storm - - * xselect.c (struct selection_event_queue, selection_queue) - (x_queue_selection_requests, x_queue_event) - (x_start_queuing_selection_requests) - (x_stop_queuing_selection_requests): Add new queue for selection - input events to replace previous XEvent queue in xterm.c. - (queue_selection_requests_unwind): Adapt to new queue. - (x_reply_selection_request): Adapt to new queue. - Unexpect wait_object in case of x errors (memory leak). - (x_handle_selection_request, x_handle_selection_clear): Make static. - (x_handle_selection_event): New function. May queue selection events. - (wait_for_property_change_unwind): Use save_value instead of cons. - Clear property_change_reply_object. - (wait_for_property_change): Abort if already waiting. - Use save_value instead of cons for unwind data. - (x_handle_property_notify): Skip events already arrived, but don't - free them, as "arrived" field is checked by wait_for_property_change, - and it will be freed by unwind or explicit unexpect_property_change. - (x_get_foreign_selection): Add to new queue. - (receive_incremental_selection): Don't unexpect wait_object when done - as it has already been freed by previous wait_for_property_change. - - * xterm.h (x_start_queuing_selection_requests) - (x_stop_queuing_selection_requests, x_handle_selection_request) - (x_handle_selection_clear): Remove prototypes. - (x_handle_selection_event): Add prototype. - - * xterm.c (handle_one_xevent): Don't queue X selection events - here, it may be too late if we start queuing after we have already - stored some selection events into the kbd buffer. - (struct selection_event_queue, queue, x_queue_selection_requests) - (x_queue_event, x_unqueue_events, x_start_queuing_selection_requests) - (x_stop_queuing_selection_requests): Remove/move to xselect.c. - (x_catch_errors_unwind): Block input around final XSync. - - * keyboard.h (kbd_buffer_unget_event): Add prototype. - - * keyboard.c (kbd_buffer_store_event_hold): Remove obsolete code. - (kbd_buffer_unget_event): New function. - (kbd_buffer_get_event, swallow_events): Combine SELECTION events - and use x_handle_selection_event. - (mark_kboards): Don't mark x and y of SELECTION_CLEAR_EVENT. - -2004-11-05 Jan Dj,Ad(Brv - - * xselect.c (TRACE3): New debug macro. - (x_reply_selection_request): Use it. - (receive_incremental_selection): In call to TRACE0, the name of - a symbol is in xname. - -2004-11-05 Kim F. Storm - - * fontset.c (fontset_pattern_regexp): Use unsigned char. - -2004-11-04 Jan Dj,Ad(Brv - - * fileio.c (Fnext_read_file_uses_dialog_p): New function. - - * gtkutil.h (use_old_gtk_file_dialog): Declare. - - * gtkutil.c: Make use_old_gtk_file_dialog non-static. - (xg_initialize): Move DEFVAR_BOOL for use_old_gtk_file_dialog ... - * xfns.c (syms_of_xfns): ... to here. - - * gtkutil.c (xg_get_file_with_chooser): Expand DEFAULT_FILENAME if - it doesn't start with /. - -2004-11-04 Kenichi Handa - - * fontset.c (fontset_pattern_regexp): If '*' is preceded by '\', - treat it as a literal character. - -2004-11-03 Kim F. Storm - - * .gdbinit (ppt): New function. - -2004-11-02 Jan Dj,Ad(Brv - - * xterm.c (x_window_to_scroll_bar): Only call - xg_get_scroll_id_for_window if toolkit scroll bars are used. - - * gtkutil.c (xg_get_file_with_chooser): Use GTK_STOCK_OK instead - of save. - -2004-11-02 Andreas Schwab - - * window.c (Fscroll_right): Fix last change. - -2004-11-02 Kim F. Storm - - * Makefile.in (callproc.o): Depend on blockinput.h, atimer.h, systime.h. - -2004-11-02 YAMAMOTO Mitsuharu - - * callproc.c (Fcall_process): Block input around vfork. - -2004-11-02 Kim F. Storm - - * eval.c (Fcalled_interactively_p): Rename from Fcall_interactive_p. - (syms_of_eval): Defsubr it. - -2004-11-02 Richard M. Stallman - - * insdel.c (replace_range_2): New function. - - * casefiddle.c (casify_region): Handle changes in byte-length - using replace_range_2. - - * emacs.c (USAGE3): Delete --horizontal-scroll-bars, -hb. - - * xdisp.c (back_to_previous_visible_line_start): - Subtract 1 from pos when checking previous newline for invisibility. - - * window.c (window_scroll_pixel_based): Update preserve_y - for header line if any. - (Fscroll_left, Fscroll_right): Don't call interactive_p; - use a new second argument instead. - - * eval.c (Fcall_interactive_p): New function. - (interactive_p): Don't test INTERACTIVE here. - (Finteractive_p): Doc fix. - - * eval.c (Feval): Abort if INPUT_BLOCKED_P. - -2004-11-02 KOBAYASHI Yasuhiro - - * w32fns.c (w32_font_match): Use fast_string_match_ignore_case for - comparing font names. - -2004-11-02 Jan Dj,Ad(Brv - - * fileio.c (Fread_file_name): Pass Qt as fifth parameter to - Fx_file_dialog if only directories should be read. - - * lisp.h: Fx_file_dialog takes 5 parameters. - - * xfns.c (Fx_file_dialog): Both Motif and GTK version: - Add parameter only_dir_p. - In Motif version, don't put DEFAULT_FILENAME in filter part of the - dialog, just text field part. Do not add DEFAULT_FILENAME - to list of files if it isn't there. - In GTK version, pass only_dir_p parameter to xg_get_file_name. - - * macfns.c (Fx_file_dialog): Add parameter only_dir_p. - Check only_dir_p instead of comparing prompt to "Dired". When using - a save dialog, add option kNavDontConfirmReplacement, change title - to "Enter name", change text for save button to "Ok". - - * w32fns.c (Fx_file_dialog): Add parameter only_dir_p. - Check only_dir_p instead of comparing prompt to "Dired". - - * gtkutil.c (xg_get_file_with_chooser, xg_get_file_with_selection): - New functions, only defined ifdef HAVE_GTK_FILE_CHOOSER_DIALOG_NEW - and HAVE_GTK_FILE_SELECTION_NEW respectively. - (xg_get_file_name): Add parameter only_dir_p. - Call xg_get_file_with_chooser or xg_get_file_with_selection - depending on HAVE_GTK_FILE* and the value of use_old_gtk_file_dialog. - (xg_initialize): New DEFVAR_BOOL use_old_gtk_file_dialog. - - * gtkutil.h (xg_get_file_name): Add parameter only_dir_p. - - * config.in: Rebuild (added HAVE_GTK_FILE_*). - -2004-11-01 Kim F. Storm - - * process.c (connect_wait_mask, num_pending_connects): - Only declare and use them if NON_BLOCKING_CONNECT is defined. - (init_process): Initialize them if NON_BLOCKING_CONNECT defined. - (IF_NON_BLOCKING_CONNECT): New helper macro. - (wait_reading_process_output): Only declare and use local vars - Connecting and check_connect when NON_BLOCKING_CONNECT is defined. - -2004-11-01 Andy Petrusenco (tiny change) - - * w32term.c (x_scroll_run): Delete region objects after use. - -2004-10-31 Jan Dj,Ad(Brv - - * xmenu.c: Add prototypes for forward function declarations. - (popup_get_selection): Remove parameter do_timers, remove call to - timer_check. - (create_and_show_popup_menu, create_and_show_dialog): - Remove parameter do_timers from call to popup_get_selection. - - * xdisp.c (update_tool_bar): Pass a copy of f->tool_bar_items to - tool_bar_items and assign the result to f->tool_bar_items if - not equal. Move BLOCK/UNBLOCK_INPUT from around call to - tool_bar_items to assignment of result. - - * atimer.c (alarm_signal_handler): Do not call set_alarm if - pending_atimers is non-zero. - -2004-10-31 Kim F. Storm - - * dispnew.c (margin_glyphs_to_reserve): Don't use ncols_scale_factor. - -2004-10-28 Will - - * macterm.c: Allow user to assign key modifiers to the Mac Option - key via a 'mac-option-modifier' variable. - -2004-10-28 Stefan Monnier - - * xselect.c (Vx_lost_selection_functions, Vx_sent_selection_functions): - Rename from Vx_lost_selection_hooks and Vx_sent_selection_hooks. - (x_handle_selection_request, x_handle_selection_clear) - (x_clear_frame_selections, syms_of_xselect): Adjust accordingly. - -2004-10-28 Richard M. Stallman - - * w32fns.c (Fx_server_vendor, Fx_server_version): Doc fixes. - - * xfns.c (Fx_server_vendor, Fx_server_version): Doc fixes. - -2004-10-27 Stefan Monnier - - * syntax.c (scan_sexps_forward): Give precedence to a 2-char - comment-starter over a 1-char one. - -2004-10-27 Richard M. Stallman - - * xdisp.c (get_next_display_element): In mode lines, - treat newline and tab like other control characters. - - * editfns.c (Fmessage): Doc fix. - - * indent.c (vmotion): When moving up, check the newline before. - Make prevline an int, not a Lisp_Object. - -2004-10-27 Kim F. Storm - - * editfns.c (Fformat): Allocate discarded table with SAFE_ALLOCA. - Only allocate info and discarded tables once. - - * lisp.h (USE_SAFE_ALLOCA): Add and init sa_must_free integer. - (SAFE_ALLOCA, SAFE_ALLOCA_LISP): Increment it when malloc is used. - (SAFE_FREE): Test it to determine if we need to unwind to free. - Remove size arg. All users changed. - (SAFE_FREE_LISP) Remove. All users changed to use SAFE_FREE. - -2004-10-26 Jan Dj,Ad(Brv - - * gtkutil.c: Put empty line between comment and function body. - (xg_destroy_widgets): Rename from remove_from_container. - Just destroy all widgets in list. Argument wcont removed. - (xg_update_menubar, xg_update_submenu): Call xg_destroy_widgets - instead of remove_from_container. - (xg_display_close, xg_create_tool_bar, update_frame_tool_bar) - (free_frame_tool_bar): Add comment. - - * xfns.c (xic_create_xfontset): Check that FRAME_XIC_BASE_FONTNAME - is not NULL before strcmp. - -2004-10-26 Kim F. Storm - - * callint.c (Fcall_interactively): Add 'U' code to get the - up-event discarded by a previous 'k' or 'K' argument. - -2004-10-26 David Kastrup - - * buffer.c (syms_of_buffer): Fix a few typos. - -2004-10-26 Jan Dj,Ad(Brv - - * xsmfns.c: Put empty line between comment and function body. - Use two spaces before comment end. - -2004-10-25 Kenichi Handa - - * fontset.c (fontset_pattern_regexp): Optimize for the case that - PATTERN is full XLFD. - -2004-10-24 Kenichi Handa - - * regex.h (enum reg_errcode_t): New value REG_ERANGEX. - - * regex.c (re_error_msgid): Add an entry for REG_ERANGEX. - (regex_compile): Return REG_ERANGEX if appropriate. - -2004-10-22 Kenichi Handa - - * editfns.c (Ftranslate_region_internal): New function. - (syms_of_editfns): Defsubr it. - -2004-10-22 Jan Dj,Ad(Brv - - * xfns.c (xic_create_xfontset): Initialize missing_list to NULL. - -2004-10-21 K,Aa(Broly L$,1 q(Brentey - - * xterm.h (x_output): New member `xic_base_fontname'. - (FRAME_XIC_BASE_FONTNAME): New macro. - (xic_free_xfontset): Declare. - - * xfns.c (xic_create_xfontset): Share fontsets between frames - based on base_fontname. - (xic_free_xfontset): New function. - (free_frame_xic): Use it. - (xic_set_xfontset): Ditto. - - * xterm.c (xim_destroy_callback): Ditto. - -2004-10-20 B. Anyos (tiny change) - - * w32term.c (x_draw_glyph_string): Use overline_color for overlines. - -2004-10-20 Jan Dj,Ad(Brv - - * xterm.h (XSync): If USE_GTK, define XSync as process_all and then - XSync. - - * emacs.c (my_heap_start, heap_bss_diff, MAX_HEAP_BSS_DIFF): - New variables and constant. - (main): Calculate heap_bss_diff. If we are dumping and the - heap_bss_diff is greater than MAX_HEAP_BSS_DIFF, set PER_LINUX32 - and exec ourself again. - (Fdump_emacs): If heap_bss_diff is greater than MAX_HEAP_BSS_DIFF - print a warning. - - * lastfile.c: Make my_endbss and my_endbss_static available on all - platforms. - - * Makefile.in (RUN_TEMACS): Remove @SETARCH@. - * config.in (HAVE_PERSONALITY_LINUX32): Regenerate. - -2004-10-19 Luc Teirlinck - - * data.c (Flocal_variable_if_set_p): Doc fix. - -2004-10-19 Jason Rumney - - * w32.c (init_environment): Set emacs_dir correctly when running - emacs from the build directory. - -2004-10-19 Richard M. Stallman - - * editfns.c (Fdelete_and_extract_region): - If region is empty, return null string. - -2004-10-19 Jan Dj,Ad(Brv - - * gtkutil.h (xg_update_scrollbar_pos): Remove arguments real_left - and canon_width. - (xg_frame_cleared): Remove. - - * gtkutil.c (xg_frame_cleared, xg_fixed_handle_expose) - (xg_find_top_left_in_fixed): Remove. - (xg_create_scroll_bar): Put an event box widget between - the scroll bar widget and the edit widget. - (xg_show_scroll_bar): Show the parent widget (the event box). - (xg_remove_scroll_bar): Destroy parent (the event box) also. - (xg_update_scrollbar_pos): Remove arguments real_left and canon_width. - Move the parent (the event box) widget inside the fixed widget. - Move window clear to xterm.c. - - * gtkutil.h (xg_frame_cleared): Remove. - - * xterm.c (x_clear_frame): Remove call to xg_frame_cleared - (x_scroll_bar_create, XTset_vertical_scroll_bar): - Remove arguments left and width to xg_update_scrollbar_pos. - (XTset_vertical_scroll_bar): Do x_clear_area for USE_GTK also. - -2004-10-19 Kenichi Handa - - * xdisp.c (display_mode_element): Fix display of wide chars. - -2004-10-18 Jan Dj,Ad(Brv - - * gtkutil.c (xg_update_scrollbar_pos): Change XClearWindow to - gdk_window_clear and move gdk_window_process_all_updates after - clear so events are sent to the X server in correct order. - -2004-10-18 Kenichi Handa - - * fontset.c (fs_load_font): Use fast_string_match_ignore_case for - comparing font names. - (fs_query_fontset): Use fast_string_match for comparing fontset names. - (list_fontsets): Likewise. - - * search.c (fast_string_match_ignore_case): New function. - - * lisp.h (fast_string_match_ignore_case): Extern it. - -2004-10-17 Kim F. Storm - - * xdisp.c (overlay_arrow_at_row): Return overlay string rather - than bitmap if there is not left fringe. - (get_overlay_arrow_glyph_row): Also used on windows system. - (display_line): Display overlay string if no left fringe. - -2004-10-16 Jason Rumney - - * w32fns.c (w32_font_match): Encode font name being matched. - -2004-10-16 Richard M. Stallman - - * window.c (Fspecial_display_p): Doc fix. - -2004-10-15 Stefan Monnier - - * doc.c (Fsubstitute_command_keys): Fix remap-handling. - Don't ignore menus, because where-is-internal already does it for us. - -2004-10-15 Kim F. Storm - - * xdisp.c (redisplay_window): Only update fringes and vertical - border on window frames. - -2004-10-14 Andreas Schwab - - * m/ia64.h (DATA_SEG_BITS): Don't define. - -2004-10-14 Kim F. Storm - - * xterm.h: Include Xutil.h after keysym.h to work around bug - in some X versions. - -2004-10-13 Stefan Monnier - - * fns.c (map_char_table): Add missing gcpros. - -2004-10-13 Stefan Monnier - - * keymap.c (get_keymap): An autoload form is not a keymap. - - * textprop.c (syms_of_textprop): Make `syntax-table' nonsticky. - -2004-10-13 Kim F. Storm - - * callproc.c (Fcall_process): Simplify handling of display arg. - Resume `display_on_the_fly' once a coding system is determined. - - * xdisp.c (redisplay_preserve_echo_area): Fix last change. - -2004-10-12 Kim F. Storm - - * xdisp.c (redisplay_preserve_echo_area): Flush display in case - caller, such as call-process, is not going to poll for input. - (calc_line_height_property): Handle case where it->object is nil. - - * xterm.c (x_redisplay_interface): Fix flush_display_optional. - -2004-10-12 Kenichi Handa - - * xdisp.c (get_next_display_element): - If unibyte_display_via_language_environment is zero, display 8-bit - chars in octal in unibyte buffer. - -2004-10-12 Kim F. Storm - - * doc.c (Fsubstitute_command_keys): Ignore remappings unless there - are no ordinary bindings. - -2004-10-11 Jan Dj,Ad(Brv - - * xfns.c (syms_of_xfns): Defsubr x-file-dialog for GTK also. - -2004-10-10 YAMAMOTO Mitsuharu - - * macterm.c (x_raise_frame): Add BLOCK_INPUT around SelectWindow. - (x_lower_frame): Add BLOCK_INPUT around SendBehind. - (make_mac_frame): Add BLOCK_INPUT around the making of a - terminal frame. - (mac_initialize): Add BLOCK_INPUT around carbon initialization. - * macgui.h (mktime): Use emacs_mktime. - * macfns.c (Fx_file_dialog): Add BLOCK_INPUT around more code. - Make a cancel file-open dialog be like C-g. - * mac.c (mktime): Use emacs_mktime. - (Fdo_applescript): Add BLOCK_INPUT around do_applescript. - (Fmac_paste_function): Add better error handling for carbon cut/paste. - -2004-10-10 Kim F. Storm - - * keyboard.c (timer_resume_idle): New function to resume idle - timer without resetting timers on the idle list. - (read_char): Use timer_resume_idle. Remove local var last_idle_start. - (timer_start_idle, timer_stop_idle): Declare static. - (read_key_sequence): Use timer_resume_idle instead of timer_start_idle. - - * keyboard.h (timer_start_idle, timer_stop_idle): Remove prototypes. - -2004-10-08 Steven Tamm - - * config.in (HAVE_MALLOC_MALLOC_H): Regenerate. - * macterm.c (mac_check_for_quit_char): Remove warning for using - NULL where 0 should be used. - * unexmacosx.c: Use malloc/malloc.h on Tiger instead of - objc/malloc.h - * mac.c: Include time.h for Tiger compatibility. - -2004-10-07 Kim F. Storm - - * xdisp.c (redisplay_window): Fix flicker on vertical line between - windows. Update vertical line after drawing window fringes, but - only if actually drawing any bitmaps--or there is no fringe. - - * xterm.c (x_update_window_end): Likewise. - * macterm.c (x_update_window_end): Likewise. - * w32term.c (x_update_window_end): Likewise. - - * fringe.c (draw_window_fringes): Return value now indicates if - any fringe bitmaps were redrawn (or there are no fringes). - - * dispextern.h (draw_window_fringes): Update prototype. - -2004-10-06 YAMAMOTO Mitsuharu - - * macfns.c (mac_get_window_bounds): Add extern. - (x_real_positions): Use mac_get_window_bounds. - - * macmenu.c (update_submenu_strings): Apply 2004-09-07 change for - xmenu.c (YAILOM). - - * macterm.c [!MAC_OSX]: Include Windows.h. - (front_emacs_window): Rename from mac_front_window. All uses - changed. Return the frontmost non-tooltip emacs window. - (mac_get_window_bounds): New function. - (x_calc_absolute_position): Use the difference of width and height - between the inner and outer window. - (x_set_offset): Specify window position by the coordinae of the - outer window. Adjust the position if the title bar is completely - outside the screen. - (app_is_suspended, app_sleep_time): Remove unused variables. - (do_app_resume, do_app_suspend): Remove their contents because - window-activate/deactivate events will do the job. - (do_zoom_window): Remove unused variables. Make compliant to the - standard way of zooming. Set f->left_pos and f->top_pos. - (XTread_socket): Don't use argument `expected'. Don't use - FrontWindow to determine the clicked window. Exclude unprocessed - mouseUp cases in the early stage. Add parentheses to fix operator - precedence. - (XTread_socket) [TARGET_API_MAC_CARBON]: Don't specify drag area. - -2004-10-05 Jan Dj,Ad(Brv - - * config.in: Regenerate. - - * Makefile.in (RUN_TEMACS): Check HAVE_RANDOM_HEAPSTART instead of - HAVE_EXECSHIELD. - -2004-10-05 Jan Dj,Ad(Brv - - * xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for - a row if Alt or Meta has been found for that row. Also stop scanning - for Keysyms for that row. - -2004-10-04 Kim F. Storm - - * fringe.c (Ffringe_bitmaps_at_pos): Change return value from cons - to list. Include overlay arrow bitmap in return value. - - * xterm.c (XTset_vertical_scroll_bar): Improve handling of scroll - bars with fractional column width. If scroll bar separates two - windows, move it towards the window it belongs to. Only update - the padding area below the scroll bar widget when necessary, - i.e. when scroll bar widget is created, moved, or resized. - - * xdisp.c (define_frame_cursor1): Do not change frame cursor - while tracking/dragging mouse. - (x_draw_vertical_border): Do not draw line if frame has scroll bars. - - * window.c (coordinates_in_window): Relax check for cursor - on vertial border between mode lines. - (Fset_window_fringes): Do not allow negative widths. - (Fset_window_scroll_bars): Likewise. - - * .gdbinit (pp): Shorthand for p ARG + pr. - (ff): New command: flush frame updates (X only). - -2004-10-03 Michael Albinus - - * fileio.c (auto_save_1) Call Ffile_modes for remote files. - -2004-09-30 Kenichi Handa - - * process.c (send_process): Free composition data. - - * fileio.c (Finsert_file_contents): Free composition data. - - * coding.c (code_convert_region): Don't skip ASCIIs if there are - compositions to encode. - (encode_coding_string): Likewise. Free composition data. - -2004-09-30 Florian Weimer - - * coding.c (code_convert_region): Free composition data. - -2004-09-29 Kim F. Storm - - * fringe.c: Remove limit on number of bitmaps. - (fringe_bitmaps, fringe_faces): Change to pointers. - (max_fringe_bitmaps): New var. - (Fdefine_fringe_bitmap): Expand fringe_bitmaps and fringe_faces. - (init_fringe): Allocate fringe_bitmaps and fringe_faces. - - * dispextern.h (FRINGE_ID_BITS): Increase to 16 bits (64K bitmaps). - (struct glyph_row): Reorder fringe_bitmap related fields. - (struct it): Likewise. - - * w32term.c (fringe_bmp): Change to pointer. - (max_fringe_bmp): New var. - (w32_define_fringe_bitmap): Expand fringe_bmp. - (w32_draw_fringe_bitmap): Check max_fringe_bmp. - (w32_destroy_fringe_bitmap): Likewise. - -2004-09-29 Kim F. Storm - - * fringe.c: Simplify last change. - (lookup_fringe_bitmap): New function. - (valid_fringe_bitmap_p, resolve_fringe_bitmap): Remove. - (Fdestroy_fringe_bitmap): Use lookup_fringe_bitmap. - Keep standard bitmaps in Vfringe_bitmaps. - (Fdefine_fringe_bitmap): Use lookup_fringe_bitmap. - (Fset_fringe_bitmap_face): Likewise. - - * dispextern.h (lookup_fringe_bitmap): Add prototype. - (valid_fringe_bitmap_p): Remove prototype. - - * xdisp.c (handle_single_display_prop): Use lookup_fringe_bitmap. - -2004-09-29 Kim F. Storm - - * fringe.c (destroy_fringe_bitmap, init_fringe_bitmap) - (w32_init_fringe, w32_reset_fringes): Fix bootstrap (NULL rif). - - * dispextern.h (valid_fringe_bitmap_p): Fix prototype. - - * fringe.c (Vfringe_bitmaps): New variable. - (syms_of_fringe): DEFVAR_LISP it. - (valid_fringe_bitmap_p): Rename from valid_fringe_bitmap_id_p. - Change arg to Lisp_Object and fail if not an integer. - (get_fringe_bitmap_name, resolve_fringe_bitmap) - (destroy_fringe_bitmap): New functions. - (Fdestroy_fringe_bitmap): Change arg to bitmap symbol. - Use destroy_fringe_bitmap. Remove symbol from Vfringe_bitmaps and - clear its fringe property. - (init_fringe_bitmap): Use destroy_fringe_bitmap instead of - Fdestroy_fringe_bitmap. - (Fdefine_fringe_bitmap): Add BITMAP arg specifying new or existing - bitmap symbol; remove WHICH arg. Add symbol to Vfringe_bitmaps - and set fringe property. Signal error if no free slots. - (Fset_fringe_bitmap_face): Change arg to bitmap symbol. - (Ffringe_bitmaps_at_pos): Return bitmap symbols instead of numbers. - - * xdisp.c (handle_single_display_prop): Fringe bitmaps are now - symbols with a fringe property. - -2004-09-27 Kim F. Storm - - * buffer.c (syms_of_buffer) : - Doc fix. Format may now be a symbol or alist, not a cons. - - * fringe.c (update_window_fringes): Handle new formats of - indicate-buffer-boundaries (symbol or alist). No longer - allow a simple cons. - (Ffringe_bitmaps_at_pos): Use nil value for no bitmap. - -2004-09-25 Jan Dj,Ad(Brv - - * config.in: Rebuild. - -2004-09-24 Jan Dj,Ad(Brv - - * config.in: Rebuild. - - * Makefile.in: Run setarch i386 ./temacs if exec-shield is present. - -2004-09-18 Stefan Monnier - - * xterm.c (x_term_init): Work around a bug in some X servers. - -2004-09-18 Richard M. Stallman - - * buffer.c (syms_of_buffer) : Doc fix. - - * xdisp.c (try_window_reusing_current_matrix): - Handle the case where we reach the old displayed text, - out of sync with the old line boundary. - -2004-09-14 Stefan Monnier - - * fileio.c (Finsert_file_contents): Fix case of replacement in a - narrowed buffer. - -2004-09-14 Kim F. Storm - - * puresize.h (PURESIZE_RATIO): Define based on BITS_PER_EMACS_INT. - - * xfaces.c (Qface_no_inherit): New var. - (syms_of_xfaces): Intern and staticpro it. - (Finternal_make_lisp_face, Finternal_set_lisp_face_attribute) - (Finternal_copy_lisp_face, update_face_from_frame_parameter): - Don't increment face_change_count when face has non-nil - face-no-inherit property. - -2004-09-13 Stefan Monnier - - * bytecode.c (BYTE_CODE_QUIT): Add missing AFTER_POTENTIAL_GC. - (Fbyte_code): Remove dead code after `wrong_type_argument'. - - * alloc.c (Fgarbage_collect): Mark keyboards, gtk data, and specpdl - before doing the mark_stack_check_gcpros since they're not on the stack. - -2004-09-12 Kim F. Storm - - * editfns.c (Fformat): Handle format strings with multiple text - properties. Reverse text property list from the format string, - so the positions are in increasing order. - -2004-09-10 Jan Dj,Ad(Brv - - * xselect.c (x_reply_selection_request): XSync and UNBLOCK before - x_uncatch_errors so that possible protocol errors are delivered. - -2004-09-10 Eli Zaretskii - - * Makefile.in (msdos.o): Depend on buffer.h, commands.h, and - blockinput.h. - (dosfns.o): Depend on blockinput.h, window.h, dispextern.h, - charset.h, and coding.h - (w16select.o): Depend on buffer.h, charset.h, coding.h, and composite.h. - (term.o): Depend on window.h and keymap.h. - (abbrev.o): Depend on syntax.h. - (callint.o): Depend on keymap.h. - (casefiddle.o): Depend on charset.h and keymap.h. - (category.o): Depend on keymap.h. - (coding.o): Depend on dispextern.h. - (cmds.o): Depend on keyboard.h and keymap.h. - (dispnew.o): Depend on indent.h and intervals.h. - (doc.o): Depend on keymap.h. - (editfns.o): Depend on frame.h. - (emacs.o): Depend on dispextern.h. - (fileio.o): Don't depend on ccl.h. - (filelock.o): Depend on charset.h and coding.h. - (frame.o): Depend on w32term.h and macterm.h. - (insdel.o): Depend on region-cache.h. - (keyboard.o): Depend on keymap.h, w32term.h, and macterm.h. - (minibuf.o): Depend on $(INTERVALS_SRC) and keymap.h. - (search.o): Depend on $(INTERVALS_SRC). - (syntax.o): Depend on keymap.h, regex.h, and $(INTERVALS_SRC). - (window.o): Depend on keymap.h, blockinput.h, $(INTERVALS_SRC), - xterm.h, w32term.h, and macterm.h. - (xdisp.o): Depend on keyboard.h, $(INTERVALS_SRC), xterm.h, - w32term.h, and macterm.h. - (xfaces.o): Depend on keyboard.h, $(INTERVALS_SRC), - region-cache.h, xterm.h, w32term.h, and macterm.h. - (bytecode.o): Depend on dispextern.h, frame.h, and xterm.h. - (data.o): Depend on frame.h. - (fns.o): Depend on keymap.h, xterm.h, and blockinput.h. - (print.o): Depend on termchar.h and $(INTERVALS_SRC). - (lread.o): Depend on $(INTERVALS_SRC), termhooks.h, and coding.h. - (intervals.o): Depend on keymap.h. - - * msdos.c (msdos_set_cursor_shape, IT_display_cursor): - Add debugging print-out to termscript. - -2004-09-09 Richard M. Stallman - - * xdisp.c (decode_mode_spec): Use current buffer for most purposes. - -2004-09-08 Richard M. Stallman - - * window.c (Fset_window_buffer): Doc fix. - - * xdisp.c (Fformat_mode_line): New arg BUFFER says which buffer to use. - -2004-09-08 Dan Nicolaescu - - * minibuf.c (history_delete_duplicates): New variable. - (read_minibuf): Use it. - (syms_of_minibuf): Create the corresponding lisp variable. - -2004-09-08 Kim F. Storm - - * xdisp.c (set_cursor_from_row): Also look at 'cursor' property in - overlay just before point. - -2004-09-07 Luc Teirlinck - - * buffer.h (struct buffer): Add auto_save_file_format field. - * buffer.c (reset_buffer, init_buffer_once): - Handle auto_save_file_format field. - (syms_of_buffer): Add DEFVAR_PER_BUFFER for - `buffer-auto-save-file-format'. - * fileio.c: Delete declaration for removed Vauto_save_file_format. - (build_annotations): Adapt to replacement of - `auto-save-file-format' with the new buffer-local variable - `buffer-auto-save-file-format'. - (syms_of_fileio): Delete DEFVAR_LISP for auto-save-file-format. - -2004-09-07 Jason Rumney - - * w32term.h (AppendMenuW_Proc): Move declaration from w32menu.c. - - * w32fns.c (w32_wnd_proc) : - Handle Unicode menu titles. - -2004-09-07 Kim F. Storm - - * xdisp.c (set_cursor_from_row): Fix last change. Only use 'cursor' - property from text property or overlay strings at point. - -2004-09-07 Stefan Monnier - - * xmenu.c (update_submenu_strings): YAILOM. - (set_frame_menubar): Make sure last_i is initialized. - -2004-09-03 Jason Rumney - - * w32menu.c (_widget_value): Add lname and lkey. - (digest_single_submenu): Set lname and lkey in widget_value - instead of name and key. - (update_submenu_strings): New function. - (set_frame_menubar): Remove call to inhibit_garbage_collection, - call update_submenu_strings. - - * w32menu.c (globals_of_w32menu): Check for Unicode API. - (digest_single_submenu, w32_menu_show): Encode menu strings as - UTF-8 if Unicode API is available. - (utf8to16): New function. - (add_menu_item): Use it when calling Unicode API. - -2004-09-03 Kim F. Storm - - * xdisp.c (set_cursor_from_row): Look for non-nil `cursor' property - in overlay or text-property strings; set cursor on corresponding - glyph rather than at end of the string. - -2004-09-02 YAMAMOTO Mitsuharu - - * macfns.c (x_real_positions): Save the current window port and - set a new one before obtaining the global coordinate. - Use FRAME_MAC_WINDOW. - (x_set_name, x_set_title): Encode title to UTF8. - Use SetWindowTitleWithCFString. - (Fx_server_version): Get correct OS version. - - * macmenu.c (add_menu_item): Remove unused variable `i'. - Don't let separator items destroy refence constants of other menu items. - - * macterm.c (x_update_end): Move SetPortWindowPort to inside - BLOCK_INPUT. - (x_set_offset): Use FRAME_MAC_WINDOW. - - * xdisp.c (note_mouse_highlight): Set the mouse pointer shape to - nontext_cursor if it is on a scroll bar. - - * s/darwin.h (LIBS_CARBON): New define to specify libraries for - Carbon support. - (LD_SWITCH_SYSTEM_TEMACS): Don't link with unused libstdc++. - Use LIBS_CARBON. - -2004-09-02 Jan Dj,Ad(Brv - - * xfns.c (x_set_name_internal): New function. Check if we shall call - xfree before ENCODE_UTF_8. - (x_set_name, x_set_title): Call x_set_name_internal. - -2004-08-31 NAKAMURA Toshikazu (tiny change) - - * w32fns.c (w32_load_font): If a BDF font is already loaded, do not - reload it. - -2004-08-30 Jan Dj,Ad(Brv - - * macmenu.c (_widget_value): Add lname and lkey. - (single_submenu): Set lname and lkey in widget_value - instead of name and key. - (update_submenu_strings): New function. - (set_frame_menubar): Remove call to inhibit_garbage_collection, - call update_submenu_strings. - - * xmenu.c (digest_single_submenu): Set lname and lkey in widget_value - instead of name and key. - (update_submenu_strings): New function. - (set_frame_menubar): Remove call to inhibit_garbage_collection, - call update_submenu_strings. - - * gtkutil.h (_widget_value): Added lname and lkey. - -2004-08-30 Steven Tamm - - * macmenu.c (mac_menu_show): Remove shadowing of menu variable - by using different names for inner loop variables. - -2004-08-27 Jan Dj,Ad(Brv - - * xmenu.c (set_frame_menubar): Reintroduce inhibit_garbage_collection - from 2002-07-15T00:01:34Z!raeburn@raeburn.org so that strings from ENCODE_UTF_8 isn't GC:ed before used. - - * gtkutil.c (xg_create_frame_widgets): Compensate for tool bar when - tool bar items is 0. - -2004-08-26 YAMAMOTO Mitsuharu - - * macmenu.c (ENCODE_MENU_STRING): Added to handle multibyte - strings in menu items. - (single_submenu): Use ENCODE_MENU_STRING - (mac_menu_show): Use ENCODE_MENU_STRING. Reset grabbed because - button release isn't passed to event loop - (add_menu_item): Use SetMenuItemWithCFString - -2004-08-26 Steven Tamm - - * fileio.c (Fread_file_name): Call x_file_dialog on carbon on - tool-bar/menu click. - * macfns.c (Fx_file_dialog): Implement using NavServices. - -2004-08-24 Jan Dj,Ad(Brv - - * xterm.c (x_catch_errors_unwind): Do not XSync if display has closed. - - * xfns.c (x_window_to_frame, x_any_window_to_frame) - (x_non_menubar_window_to_frame, x_menubar_window_to_frame) - (x_top_window_to_frame): Return 0 if wdesc is None. - -2004-08-22 Richard M. Stallman - - * process.c (process_send_signal) [SIGNALS_VIA_CHARACTERS, - HAVE_TERMIOS]: If there's no char for this signal, drop through - and use system calls. - - * bytecode.c (Fbyte_code) : Cannot GC. - -2004-08-20 Kim F. Storm - - * process.c (wait_reading_process_output): Rename from - wait_reading_process_input. All uses changed. - (wait_reading_process_output_1): Rename from - wait_reading_process_input_1. All uses changed. - - * dispnew.c (Fsleep_for): Remove obsolete code. - -2004-08-20 Kenichi Handa - - * syntax.c (skip_chars): Fix for unibyte case. - -2004-08-19 Stefan Monnier - - * syntax.c (char_quoted): Mixup byte/char pos. - (back_comment): Fixup globals in all cases. - -2004-08-19 Jan Dj,Ad(Brv - - * xfns.c (x_set_name, x_set_title): Encode title to UTF8 before - passing it to gtk_window_set_title. - -2004-08-19 Kim F. Storm - - * process.c (wait_reading_process_input): Clean up. - Add wait_for_cell, wait_proc, and just_wait_proc args - to avoid overloading `read_kbd' and `do_display' args. - Change read_kbd arg to int. All callers changed. - - * process.c (process_send_signal): Use CDISABLE. - - * sysdep.c (child_setup_tty, init_sys_modes): Use CDISABLE. - -2004-08-18 Kim F. Storm - - * process.c (Faccept_process_output): Add arg JUST-THIS-ONE; - forward to wait_reading_process_input via DO_DISPLAY arg. - (wait_reading_process_input): If DO_DISPLAY < 0 for a process - object, only process output from that process; also inhibit - running timers if DO_DISPLAY==-2. - -2004-08-17 Kim F. Storm - - * process.c (process_send_signal): Fix last change--use - _POSIX_VDISABLE instead of CVDISABLE when available. - -2004-08-16 Richard M. Stallman - - * sysdep.c (child_setup_tty) [SIGNALS_VIA_CHARACTERS]: - Set VQUIT and VINTR chars to the standard ones if they are unset. - [AIX]: Don't do that here. And don't force VINTR to standard - when SIGNALS_VIA_CHARACTERS. - - * process.c (process_send_signal) - [SIGNALS_VIA_CHARACTERS, HAVE_TERMIOS]: Clean up. - Do nothing if the character is CVDISABLE. - - * xfaces.c (merge_face_ref): Specifying `unspecified' is a no-op. - - * intervals.c (move_if_not_intangible): - Force POSITION to be between BEGV and ZV. - -2004-08-14 John Paul Wallington - - * buffer.c (Frestore_buffer_modified_p): Doc fix. - - * fileio.c (Fread_file_name): Doc fix. - - * minibuf.c (syms_of_minibuf) : Doc fix. - -2004-08-09 Luc Teirlinck - - * keymap.c (Fmake_keymap, Fmap_keymap, Fwhere_is_internal): Doc fixes. - -2004-08-08 Luc Teirlinck - - * keyboard.c: Declare Qdisabled_command_function instead of - Qdisabled_command_hook. - (Fcommand_execute): Use Qdisabled_command_function instead of - Qdisabled_command_hook. - (syms_of_keyboard): Ditto. - -2004-08-07 Luc Teirlinck - - * keymap.c (Flocal_key_binding, Fglobal_key_binding) - (syms_of_keymap) : Doc fixes. - -2004-08-07 Stefan Monnier - - * window.c (window_list_1): YAILOM. - - * fileio.c (make_temp_name): Handle multibyte prefixes. - -2004-08-06 Luc Teirlinck - - * keyboard.c (syms_of_keyboard) : - Doc fix. - -2004-08-03 Kenichi Handa - - * coding.c (decode_coding_string): Adjust coding->consumed, and - etc. with shrinked_bytes. - -2004-08-03 Kim F. Storm - - * indent.c (compute_motion): Fix check for full width window - in non-window case. Do not count left truncation glyph on - window systems. - -2004-08-02 Luc Teirlinck - - * data.c (Finteractive_form): Doc fix. - -2004-08-02 Kim F. Storm - - * indent.c (compute_motion): Use actual window width if WIDTH is -1, - properly accounting for continuation glyph on non-window systems. - (Fcompute_motion): Use actual window width if WIDTH is nil, and - actual window width/height if TOPOS is nil, properly accounting for - continuation glyphs on non-window systems, and optional header lines. - (vmotion): Let compute_motion calculate actual window width. - - * window.c (window_scroll_line_based): Let compute_motion - calculate actual window width. - -2004-08-02 Kim F. Storm - - * process.c (read_process_output): Use whole read buffer. - Don't trigger adaptive read buffering on errors. - -2004-07-31 Luc Teirlinck - - * keymap.c (Fset_keymap_parent, Fdefine_prefix_command): Doc fixes. - - * keyboard.c (syms_of_keyboard) : Doc fix. - - * callint.c (Fcall_interactively): Doc fix. - -2004-07-30 Richard M. Stallman - - * abbrev.c (Fexpand_abbrev): Undo previous change. - -2004-07-30 Kim F. Storm - - * editfns.c (Fformat): Allocate extra (dummy) element in info. - -2004-07-28 Luc Teirlinck - - * eval.c (Fdefvar, Fdefconst): Doc fixes. - -2004-07-27 Kim F. Storm - - * xdisp.c (move_it_in_display_line_to): Check BUFFER_POS_REACHED_P after - we have ensured that the glyph fits on the current line (or returned - MOVE_LINE_CONTINUED otherwise). - -2004-07-26 Kim F. Storm - - * xdisp.c (move_it_in_display_line_to): If overflow-newline-into-fringe - is enabled, return MOVE_LINE_CONTINUED rather than MOVE_POS_MATCH_OR_ZV - if target position is at end of display line but char is not a newline. - -2004-07-25 Richard M. Stallman - - * window.c (coordinates_in_window): Return ON_SCROLL_BAR - instead of ON_VERTICAL_BORDER, when on scroll bar. - (Fcoordinates_in_window_p): Handle ON_SCROLL_BAR--return nil. - - * dispextern.h (enum window_part): Add ON_SCROLL_BAR. - - * window.c (Fcoordinates_in_window_p): - Take account of FRAME_INTERNAL_BORDER_WIDTH. - - * alloc.c (check_cons_list): New function (contents commented out). - -2004-07-24 Luc Teirlinck - - * xfaces.c (Fcolor_supported_p): Doc fix. - - * frame.c (Fselect_frame, Fset_frame_selected_window) - (Fframe_visible_p, Fraise_frame): Doc fixes. - -2004-07-24 Richard M. Stallman - - * keyboard.h (not_single_kboard_state): Declare. - - * fileio.c (Fwrite_region): Doc fix. - - * window.c (Fwindow_at): Take account of FRAME_INTERNAL_BORDER_WIDTH. - - * abbrev.c (Fexpand_abbrev): Run Qpre_abbrev_expand_hook - only when a real abbrev is present. - - * xfns.c (x_icon_verify): New function. - (Fx_create_frame): Use it. - -2004-07-22 Barry Fishman (tiny change) - - * s/gnu-linux.h: Use GC_MARK_STACK if __amd64__ is defined. - -2004-07-21 Kim F. Storm - - * window.h (struct glyph_matrix): New members nrows_scale_factor - and ncols_scale_factor. - - * window.c (make_window): Initialize nrows_scale_factor and - ncols_scale_factor members. - - * dispnew.c (margin_glyphs_to_reserve): Apply ncols_scale_factor. - (allocate_matrices_for_frame_redisplay): Fix left/right margin mix-up. - (required_matrix_height): Apply nrows_scale_factor. - (required_matrix_width): Apply ncols_scale_factor. - - * xdisp.c (display_line): Increment nrows_scale_factor and set - fonts_changed_p if past last allocated row. - (append_glyph, append_composite_glyph, produce_image_glyph) - (append_stretch_glyph): Increment ncols_scale_factor and set - fonts_changed_p if current area is full. - -2004-07-21 Jan Dj,Ad(Brv - - * widget.c (EmacsFrameDestroy): Don't abort if normal_gc is 0. - -2004-07-19 Luc Teirlinck - - * window.c (Fpos_visible_in_window_p, Fset_window_hscroll) - (Fwindow_inside_pixel_edges, Fwindow_end, Fset_window_point) - (Fset_window_start, Fscroll_up, Fscroll_down) - (Fother_window_for_scrolling, Fscroll_other_window) - (Fsave_window_excursion, Fset_window_vscroll) - (syms_of_window) : Doc fixes. - -2004-07-19 KOBAYASHI Yasuhiro - - * w32fns.c (Fx_file_dialog): Use ENCODE_FILE instead of - ENCODE_SYSTEM for filenames. - -2004-07-18 YAMAMOTO Mitsuharu - - * mac.c (sys_select): Block input around call to - ReceiveNextEvent to prevent breakage. Correctly handle - blocking on event queue only by calling ReceiveNextEvent - instead of select (since GUI events aren't on an fd). - (sys_read): Remove function - * sysdep.c: Remove redefine of read to sys_read if HAVE_CARBON - -2004-07-18 YAMAMOTO Mitsuharu - - * mac.c (sys_select): Redo sys_select to use alarm-based - polling instead of 1 sec timeouts (like solaris). - - * macterm.c (x_make_frame_visible): Comment in polling on - frame creation. - - * keyboard.c: Undef SIGIO on Carbon - - * atimer.c (alarm_signal_handler): Call alarm handlers after - scheduling. - - * eval.c (Feval): Remove quit_char test - - * process.c (wait_reading_process_input): Remove clearing - stdin for select call on process input. - -2004-07-18 Luc Teirlinck - - * xdisp.c (syms_of_xdisp) : Correct - capitalization error in docstring. - -2004-07-17 Juanma Barranquero - - * keyboard.c (not_single_kboard_state): Do nothing unless - MULTI_KBOARD is defined. - -2004-07-17 Richard M. Stallman - - * window.c (coordinates_in_window): Inside the window but outside - its box to the L or R, return ON_VERTICAL_BORDER. - (window_list_1): Rotate the list to start with WINDOW. - - * print.c (print_preprocess): Test for print_depth at limit - before entering in being_printed. - - * keyboard.c (not_single_kboard_state): New function. - (stuff_buffered_input): Now no-op only if no SIGTSTP. - - * frame.c (Fdelete_frame): If we're in single_bboard_state on - this kboard, and we delete its last frame, go to any_kboard_state. - - * buffer.c (syms_of_buffer) : Doc fix. - -2004-07-15 KOBAYASHI Yasuhiro - - * w32fns.c (Fx_file_dialog): Encode strings in system coding - system before passing them to OS functions for display. - -2004-07-15 David Kastrup - - * search.c (syms_of_search): Staticpro `saved_last_thing_searched'. - Apparently fixes an abort condition. - -2004-07-14 Luc Teirlinck - - * fileio.c (Fvisited_file_modtime): Return a list of two integers, - instead of a cons. - -2004-07-14 K,Aa(Broly L$,1 q(Brentey - - * keyboard.c (echo_dash): Do nothing if there already is a dash - at the end of the echo string. - -2004-07-12 Kim F. Storm - - * alloc.c (mark_object): Only look at Lisp_Misc_Save_Value - if GC_MARK_STACK. - -2004-07-10 Luc Teirlinck - - * buffer.c (Fswitch_to_buffer, Fpop_to_buffer): Doc fixes. - - * window.c (Fwindow_buffer, Fother_window, Fget_lru_window) - (Fget_largest_window, Fget_buffer_window, Fdelete_windows_on) - (Freplace_buffer_in_windows, Fset_window_buffer) - (Fselect-window, Fdisplay-buffer, Fsplit_window): Doc fixes. - (syms_of_window): Expand docstring of `display-buffer-function'. - -2004-07-09 Luc Teirlinck - - * editfns.c (Ffloat_time, Fformat_time_string, Fdecode_time) - (Fcurrent_time_string, Fcurrent_time_zone): Mention in docstrings - that time values of the type (HIGH . LOW) are considered obsolete. - -2004-07-06 Luc Teirlinck - - * keyboard.c (syms_of_keyboard): Fix `keyboard-translate-table' - docstring. - - * fns.c (Fclear_string): Declare `len' before call to CHECK_STRING. - -2004-07-06 John Paul Wallington - - * eval.c (Fdefmacro): Signal an error if NAME is not a symbol. - - * fns.c (Fclear_string): Signal an error if STRING is not a string. - -2004-07-05 Jan Dj,Ad(Brv - - * macterm.c (mac_initialize_display_info): Use CGGetActiveDisplayList - instead of CGMainDisplayID (only in OSX 10.2 and later). - -2004-07-04 John Paul Wallington - - * fileio.c (read_file_name_completion_ignore_case): New variable. - (syms_of_fileio): Declare and initialise it. - (Fread_file_name): Bind `completion-ignore-case' to respect it. - -2004-07-03 Eli Zaretskii - - * msdos.c (dos_rawgetc): Use make_number to produce Lisp objects - for event.x and event.y. - -2004-07-01 Kenichi Handa - - * w32select.c (Fw32_set_clipboard_data): Update `nbytes' correctly - after getting a new string by pre-write-conversion. - -2004-06-30 Stefan Monnier - - * xterm.c (x_detect_focus_change): Remove unused var `nr_events'. - (x_calc_absolute_position): Remove unused var `child'. - - * xfaces.c (x_supports_face_attributes_p) - (Fdisplay_supports_face_attributes_p): YAILOM. - (tty_supports_face_attributes_p): Remove unused var `i'. - - * syntax.c (skip_chars): Remove unused labels fwd_unibyte_ok and - back_unibyte_ok. - - * search.c (match_limit, Fmatch_data, Fset_match_data): YAILOM. - - * fontset.c (Fset_fontset_font): Remove unused vars `family' and - `registry'. - - * Makefile.in (${etc}DOC): Fix file name of make-docfile. - -2004-06-30 Andreas Schwab - - * image.c (CHECK_LIB_AVAILABLE): Add third parameter LIBRARIES. - (Finit_image_library): Pass LIBRARIES through to - CHECK_LIB_AVAILABLE. Declare parameters. Doc fix. - (lookup_image_type): Pass Qnil as second argument to - Finit_image_library. - - * lisp.h (Finit_image_library): Declare. - -2004-06-29 YAMAMOTO Mitsuharu - - * macterm.c (do_window_activate, do_window_deactivate): Remove. - (XTread_socket): Send mouse button events to the toolbox - dispatcher even when the mouse is grabbed. Don't process window - activate events for non-Emacs windows. Replace function calls to - do_window_activate and do_window_deactivate with their contents. - Reset mouse grabbing status when a window is deactivated. - -2004-06-29 Steven Tamm - - * macterm.c (mac_get_emulated_btn) - (mac_event_to_emacs_modifiers): Fix emulated mouse button - support to correctly mask out modifiers. - -2004-06-29 David Kastrup - - * search.c (Fset_match_data): Allow buffer before end of list - which can happen if set-match-data is using a pre-consed list. - -2004-06-28 Steven Tamm - - * macterm.c (XTread_socket): Correctly set the frame position - after the window is moved. - -2004-06-28 Jan Dj,Ad(Brv - - * gtkutil.c (xg_get_image_for_pixmap): Call g_object_unref on - gpix and gmask just before return to avoid memory leak. - (xg_get_image_for_pixmap): Add workaround for monochrome displays - so insensitive and activated icons look ok. - -2004-06-27 Jason Rumney - - * w32fns.c (file_dialog_callback): Disable edit control if set - to directories only on CDN_INITDONE message. - (Fx_file_dialog): Default to directories only when prompt starts - with "Dired". - -2004-06-25 Kim F. Storm - - * alloc.c (allocate_misc): Update total_free_markers. - (free_misc): New function. - (safe_alloca_unwind, free_marker): Use it. - - * lisp.h (free_misc): Add prototype. - - * fns.c (Fmapconcat, Fmapcar): Remove superfluous GCPROs. - -2004-06-24 Richard M. Stallman - - * emacs.c (Vsignal_USR1_hook, Vsignal_USR2_hook): Definitions deleted. - (syms_of_emacs): Lisp variables deleted. - -2004-06-23 David Kastrup - - * search.c (Freplace_match): Adjust the match-data more thoroughly - when replacing strings in the buffer. - (Fmatch_data): When INTEGERS is non-nil and the last match was in - a buffer, add the buffer as last element to the match data. - (Fset_match_data): If an additional element of the match-data is a - buffer, restore it to last_thing_searched. - (save_search_regs): Save last_thing_searched as part of the match data. - (restore_match_data): Restore it again. - -2004-06-23 Luc Teirlinck - - * keymap.c (Ftext_char_description): Doc fix. - * doc.c (Fsnarf_documentation): Doc fix. - -2004-06-22 Kim F. Storm - - * fns.c (Fmapcar, Fmapconcat): GCPRO the args array. - - * lisp.h (struct Lisp_Save_Value): New member dogc. - (SAFE_ALLOCA_LISP): Change second arg to number of elements. - Set dogc member in Lisp_Save_Value object so it will be GC'ed. - (SAFE_FREE_LISP): New macro. - - * alloc.c (safe_alloca_unwind): Clear dogc and pointer members. - (make_save_value): Init new dogc member. - (mark_object): Mark Lisp_Save_Value pointer array if dogc is set. - - * fns.c (Fmapconcat, Fmapcar): Use new SAFE_ALLOCA_LISP and - SAFE_FREE_LISP macros. - -2004-06-22 Kim F. Storm - - * lisp.h (SAFE_ALLOCA_LISP): New macro to allocate Lisp_Objects. - Temporarily inhibits GC if memory is xmalloc'ed, as the Lisp_Objects - in that memory area are unknown to GC. Add comments. - - * fns.c (Fmapconcat, Fmapcar): Use SAFE_ALLOCA_LISP. - -2004-06-21 Kim F. Storm - - * lisp.h (MAX_ALLOCA): Define here. - (safe_alloca_unwind): Add prototype. - (USE_SAFE_ALLOCA, SAFE_ALLOCA, SAFE_FREE): New macros. - - * alloc.c (safe_alloca_unwind): New function. - - * casefiddle.c (casify_object): Use SAFE_ALLOCA. - - * charset.c (Fstring): Use SAFE_ALLOCA. - - * coding.c (MAX_ALLOCA): Remove define. - - * data.c (MAX_ALLOCA): Remove define. - (Faset): Use SAFE_ALLOCA. - - * editfns.c (Fformat, Ftranspose_regions): Use SAFE_ALLOCA. - - * fns.c (string_make_multibyte, string_to_multibyte) - (string_make_unibyte, Fmapconcat, Fmapcar): Use SAFE_ALLOCA. - (MAX_ALLOCA): Remove define. - (Fbase64_encode_region, Fbase64_encode_string) - (Fbase64_decode_region, Fbase64_decode_string): Use SAFE_ALLOCA. - (Fbase64_encode_region, Fbase64_encode_string): Fix potential - memory leak if encoding fails. - - * xdisp.c (add_to_log): Use SAFE_ALLOCA. - -2004-06-21 Eli Zaretskii - - * print.c (Fwith_output_to_temp_buffer): Doc fix. - -2004-06-20 Richard M. Stallman - - * xfaces.c (Finternal_copy_lisp_face): Small cleanup; doc fix. - - * search.c (match_limit): Cleaner err msg when no match data available. - - * window.c (syms_of_window): Doc fix. - - * keyboard.c (command_loop_1): Handle values `only' and `identity' - for Vtransient_mark_mode. - - * buffer.c (syms_of_buffer): Doc fix. - -2004-06-21 David Kastrup - - * minibuf.c (Ftry_completion, Fall_completions): Do lazy binding - and unbinding of `case-fold-search' according to - `completion-ignore-case' around calls of string-match and - predicates, respectively. Should give satisfactory performance - in all relevant cases. - -2004-06-17 Jan Dj,Ad(Brv - - * xterm.c (x_draw_image_foreground_1): Subtract slice.x/y from - clip_x/y_origin. - - * fns.c (string_to_multibyte): Use xmalloc/xfree instead of alloca. - - * macfns.c (Fx_display_color_cells): Do not limit return value to 256. - - * macterm.c (mac_initialize_display_info): Initialize n_planes correctly - on Mac OSX. - -2004-06-16 Luc Teirlinck - - * buffer.c (syms_of_buffer): Clarify `fill-column' docstring. - -2004-06-16 Kim F. Storm - - * dispextern.h (Vimage_types): Remove extern. - -2004-06-16 Miles Bader - - * image.c (lookup_image_type): Initialize image type if necessary. - -2004-06-15 Kim F. Storm - - * xdisp.c (try_cursor_movement): Exclude header line from scroll - margin at top of window. - (try_window_reusing_current_matrix): Calculate proper cursor position - after scrolling up with non-zero scroll margin, as the old cursor - position corresponds to value of PT before executing this command. - (try_window_id): Consider scroll margin at bottom of window too; - otherwise we fail to scroll when hl-line-mode is enabled. - - * syntax.c (skip_chars): Only recognize [:class:] when it has the - proper format and class is a lower-case word. - -2004-06-14 Jan Dj,Ad(Brv - - * gtkutil.c (xg_get_image_for_pixmap): New function. - (xg_get_gdk_pixmap_and_mask): Remove. - (update_frame_tool_bar): Call xg_get_image_for_pixmap instead of - xg_get_gdk_pixmap_and_mask. - - * xterm.h (struct x_display_info): Typo in comment fixed. - -2004-06-14 Juanma Barranquero - - * dispextern.h (Vimage_types): Make it conditional on - HAVE_WINDOW_SYSTEM. - - * image.c (Vimage_types): Move from xdisp.c. - (Vimage_type_cache): New variable. - (define_image_type): New argument indicating whether an image - library was loaded; cache loaded status and return t on success, - nil otherwise. - (CACHE_IMAGE_TYPE, ADD_IMAGE_TYPE): New macros. - (w32_delayed_load): New function to load an image library from a - list of possible filenames. - (init_xpm_functions, init_png_functions, init_jpeg_functions) - (init_tiff_functions, init_gif_functions): Use `w32_delayed_load'. - (CHECK_LIB_AVAILABLE): Call `define_image_library' with new argument. - (Finit_image_library): New function, extracted from `init_image'. - Try to initialize an image library on demand and cache whether we - were successful or not. - (syms_of_image): Initialize `Vimage_types' and - `Vimage_type_cache'. Add recognized image types to Vimage_types. - Export `init-image-library'. - (init_image): Remove initialization of all image types, except xbm - and pbm. - - * xdisp.c (Vimage_types): Delete (moved to image.c). - -2004-06-14 Andreas Schwab - - * minibuf.c (Ftry_completion, Fall_completions, Ftest_completion): - Avoid calling specbind when completion-regexp-list is empty. - -2004-06-13 Richard M. Stallman - - * regex.h (CHAR_CLASS_MAX_LENGTH, re_wctype_t, re_wchar_t) - (re_wctype, re_iswctype, re_wctype_to_bit): - Non-function definitions moved here from regex.c. - - * regex.c (re_wctype, re_iswctype): Function defs longer static. - (CHAR_CLASS_MAX_LENGTH, re_wctype_t, re_wchar_t) - (re_wctype, re_iswctype, re_wctype_to_bit): - Non-function definitions moved to regex.h. - - * window.c (Fselect_window): Doc fix. - - * syntax.c: Include regex.h. - (skip_chars): New arg HANDLE_ISO_CLASSES. Callers changed. - If requested, make a list of classes, then check the scanned - chars for membership in them. - (in_classes): New function. - Doc fix. - - * keyboard.c (cmd_error): Don't call any_kboard_state - if inside a recursive edit level. - -2004-06-13 K,Aa(Broly L$,1 q(Brentey - - * keyboard.c (command_loop): Call any_kboard_state before - command_loop_2 when at top level. - -2004-06-13 Andreas Schwab - - * print.c (print_object): Always use %ld for printing EMACS_INT. - - * keyboard.c (cancel_hourglass_unwind): Return a value. - (modify_event_symbol): Always use %ld for printing EMACS_INT. - (Fexecute_extended_command): Likewise. - - * syntax.h (SYNTAX_ENTRY_FOLLOW_PARENT): Rename local variable to - avoid clashes. - (SYNTAX): Likewise. - (SYNTAX_WITH_FLAGS): Likewise. - (SYNTAX_MATCH): Likewise. - - * syntax.c (char_quoted): Avoid warning about undefined operation. - (find_defun_start): Likewise. - (scan_lists): Likewise. - (INC_FROM): Likewise. - (scan_sexps_forward): Likewise. - - * image.c: Include . - - * xfaces.c (face_attr_equal_p): Declare parameters. - -2004-06-13 Kenichi Handa - - * ccl.c (CCL_READ_CHAR): If hit EOF, set REG to -1. - -2004-06-12 Matthew Mundell - - * eval.c (Fdefun): Signal an error if NAME is not a symbol. - -2004-06-12 Kenichi Handa - - * ccl.c (CCL_CALL_FOR_MAP_INSTRUCTION): Save eof_ic in - ccl_prog_stack_struct and update it. - (CCL_INVALID_CMD): If CCL_DEBUG is defined, call ccl_debug_hook. - (CCL_READ_CHAR): Get instruction counter from eof_ic, not from - ccl->eof_ic on EOF. - (ccl_debug_hook): New function. - (struct ccl_prog_stack): New member eof_ic. - (ccl_driver): Handle EOF in subrountine call correctly. - -2004-06-11 Kenichi Handa - - * coding.c (encode_coding_string): Check CODING_FINISH_INTERRUPT. - -2004-06-11 Kim F. Storm - - * emacs.c (shut_down_emacs): Inhibit redisplay during shutdown. - -2004-06-11 Juanma Barranquero - - * keyboard.c (Fposn_at_point): Doc fix. - -2004-06-11 David Kastrup - - * search.c (match_limit): Don't flag an error if match-data - exceeding the allocated search_regs.num_regs gets requested, just - return Qnil. - -2004-06-08 Miles Bader - - * xfaces.c (push_named_merge_point): Return 0 when a cycle is detected. - -2004-06-07 Juanma Barranquero - - * editfns.c (Fuser_login_name, Ffloat_time, Fencode_time) - (Fcurrent_time_string, Fcurrent_time_zone) - (Finsert_buffer_substring, Ftranspose_regions): Doc fixes. - -2004-06-07 Miles Bader - - * xfaces.c (struct named_merge_point): New type. - (push_named_merge_point): New function. - (merge_named_face): New function. - (merge_face_ref, face_at_buffer_position, face_at_string_position): - Use `merge_named_face'. - (merge_face_inheritance): Function removed. - (merge_face_ref): Rename from `merge_face_vector_with_property'. - Add new `err_msgs' and `named_merge_points' args. Return error - status. Only print error messages if ERR_MSGS is true. Don't try to - do :inherit attribute validation. - (merge_face_heights): Handle `unspecified' in both directions. - (merge_face_vectors): Rename `cycle_check' arg to `named_merge_points'. - Call `merge_face_ref' instead of `merge_face_inheritance'. - (Fdisplay_supports_face_attributes_p, Fface_attributes_as_vector) - (compute_char_face, face_at_buffer_position) - (face_at_string_position): Call `merge_face_ref' instead of - `merge_face_vector_with_property'. - -2004-06-07 Kenichi Handa - - * coding.c (find_safe_codings): Check NILP (safe_codings) only at - the necessary places. - -2004-06-07 Kim F. Storm - - * process.c (Fdelete_process): Undo 2004-05-28 change. - Instead, call status_notify also for network process. - (status_message): Use process instead of status as arg. - Give messages "deleted" or "connection broken by remote peer" for - an exited network process. - (status_notify): Change call to status_message. - (read_process_output): Increase readmax to 4096. Do not increase - buffer size for datagram channels (default is now large enough). - -2004-06-06 Steven Tamm - - * macfns.c (x_create_tip_frame): Fix Mac OS X 10.1 compilation - problem due to newly defined variable. - -2004-06-06 Miles Bader - - * xfaces.c (Fdisplay_supports_face_attributes_p): Give up - immediately if non-interactive or not initialized. - -2004-06-05 Richard M. Stallman - - * minibuf.c (Fcompleting_read): Doc fix. - -2004-06-05 Andreas Schwab - - * macfns.c (x_create_tip_frame): Fix declaration after statement. - -2004-06-05 Juanma Barranquero - - * keymap.c (Fdescribe_vector): Fix docstring. - (Fkey_description, Fglobal_key_binding): Fix typo in docstring. - -2004-06-05 Miles Bader - - * xfaces.c (tty_supports_face_attributes_p): Make sure the specified - attributes have different values than the default face. - -2004-06-04 Eli Zaretskii - - * xfaces.c (x_supports_face_attributes_p): Make this function - conditional on HAVE_WINDOW_SYSTEM. - (Fdisplay_supports_face_attributes_p) [HAVE_WINDOW_SYSTEM]: - Don't call x_supports_face_attributes_p if it was not compiled in. - -2004-06-04 Miles Bader - - * xfaces.c (tty_supports_face_attributes_p): New function, mostly - from Ftty_supports_face_attributes_p. - (x_supports_face_attributes_p): New function. - (Ftty_supports_face_attributes_p): Function deleted. - (Fdisplay_supports_face_attributes_p): New function. - (syms_of_xfaces): Initialize Sdisplay_supports_face_attributes_p. - (face_attr_equal_p): New function. - (lface_equal_p): Use it. - -2004-06-03 Juanma Barranquero - - * w32fns.c (Fx_display_grayscale_p, Fw32_send_sys_command) - (Vw32_color_map): Fix typo in docstring. - (Fx_create_frame, Fw32_find_bdf_fonts, Fx_show_tip) - (Fw32_unregister_hot_key, Fw32_reconstruct_hot_key): - Make argument names match their use in docstring. - -2004-06-02 Juanma Barranquero - - Work around bugs/problems with MinGW builds of graphics libraries - called from MSVC builds of Emacs. - - * image.c (lookup_image): Make pointer to img static. - (png_read_from_memory): Disable "global" optimization. - -2004-06-01 Stefan Monnier - - * eval.c (Fcondition_case): Fix usage. Simplify. - - * mem-limits.h (EXCEEDS_LISP_PTR) [USE_LSB_TAG]: Never true. - -2004-05-29 YAMAMOTO Mitsuharu - - * macfns.c: Don't include ccl.h. - [MAC_OSX]: Don't include QuickTime/QuickTime.h. - [!MAC_OSX]: Don't include alloca.h, Windows.h, Gestalt.h, or - TextUtils.h. - (Fx_create_frame): Sync with xfns.c. Initialize cursor descriptors. - (Fx_display_mm_height, Fx_display_mm_width): Calculate length from - display height/width. - (compute_tip_xy, Vx_max_tooltip_size): Declare. - (unwind_create_tip_frame, compute_tip_xy): New functions. - (x_create_tip_frame, Fx_show_tip, Fx_hide_tip): Sync with xfns.c. - (syms_of_macfns): Initialize Qcancel_timer, Vx_max_tooltip_size, - and last_show_tip_args. - - * macgui.h [!MAC_OSX]: Include Gestalt.h. - (Cursor, No_Cursor): New defines. - [!TARGET_API_MAC_CARBON] (SetPortWindowPort): New compatibility macro. - [!TARGET_API_MAC_CARBON] (arrow_cursor): Declare. - - * macmenu.c (mac_menu_show, mac_dialog): Use SetPortWindowPort. - - * macterm.c: Don't include Gestalt.h. - (enum mouse_tracking_type, mouse_tracking_in_progress): Remove. - (XDrawLine, XClearArea, XClearWindow, mac_draw_bitmap) - (mac_set_clip_rectangle, mac_reset_clipping, XCreatePixmap) - (XFillRectangle, mac_draw_rectangle, mac_draw_string_common) - (mac_copy_area, mac_copy_area_with_mask, x_update_end) - (construct_mouse_click, XTmouse_position) - (x_scroll_bar_report_motion, x_calc_absolute_position) - (do_mouse_moved, do_zoom_window, mac_do_receive_drag) - (XTread_socket, make_mac_frame): Use SetPortWindowPort. - (note_mouse_movement): Clear the mouse face and reset the pointer - shape when the pointer goes outside the frame without grabbing. - (mac_front_window): New function. - (mac_window_to_frame): New macro. - (XTmouse_position, x_scroll_bar_report_motion, do_window_update) - (do_window_activate, do_window_deactivate, do_app_resume) - (do_app_suspend, do_mouse_moved, do_menu_choice, do_grow_window) - (do_zoom_window, mac_do_receive_drag, XTread_socket) - (mac_check_for_quit_char): Use mac_front_window and/or - mac_window_to_frame. - (x_scroll_bar_handle_click): Set `(PORTION . WHOLE)' part in a - scroll-bar click event. - (mac_define_frame_cursor): Change the pointer shape. - (x_free_frame_resources): Reset tip_window to NULL when it is - disposed of. - [!TARGET_API_MAC_CARBON] (arrow_cursor): New variable. - [!TARGET_API_MAC_CARBON] (do_init_managers): Initialize arrow_cursor. - (do_window_update): Don't do anything if the updated window is the - tooltip window. - (do_mouse_moved): Handle mouse movement events here (previously in - XTread_socket). Clear the mouse face if - dpyinfo->mouse_face_hidden is set. - (do_os_event, do_events): Remove (now in XTread_socket). - (XTread_socket): Immediately return if interrupt_input_blocked. - Loop until all the events in the queue are processed. - Rearrange codes for mouse grabbing. Add tooltip support. Include the - contents of do_os_event and do_events. Remove mouse movement - handling (now in do_mouse_moved). Add the case where - Vmouse_highlight has an integer value. - (NewMacWindow): Remove. - (make_mac_frame): Do what NewMacWindow previously did. Don't do - excess initializations. - (make_mac_terminal_frame): Previous initializations in - make_mac_frame are moved here. - (mac_initialize_display_info): - Initialize dpyinfo->mouse_face_overlay and dpyinfo->mouse_face_hidden. - - * xdisp.c [MAC_OS] (No_Cursor): Remove variable. - (define_frame_cursor1): Don't treat HAVE_CARBON as a special case. - -2004-05-29 Richard M. Stallman - - * lisp.h (truncate_undo_list): Update decl. - - * alloc.c (undo_outer_limit): New variable. - (syms_of_alloc): Defvar it. - (Fgarbage_collect): Pass undo_outer_limit to truncate_undo_list. - - * undo.c (truncate_undo_list): New arg LIMITSIZE. - - * alloc.c (lisp_align_malloc): Check for base == 0 - regardless of HAVE_POSIX_MEMALIGN. - Clean up HAVE_POSIX_MEMALIGN handling of `err'. - -2004-05-28 Stefan Monnier - - * alloc.c: Undo Kim's recent changes and fix the same bug differently. - (marker_blocks_pending_free): Remove. - (Fgarbage_collect): Sweep after cleaning up undo-lists. - Mark the undo lists after claning them up. - Don't free block in marker_blocks_pending_free. - (mark_buffer): Don't mark undo_list. - (gc_sweep): Sweep hash-tables and strings first. - Do free marker blocks that are empty. - -2004-05-28 Jim Blandy - - * regex.c (print_partial_compiled_pattern): Add missing 'break' - after 'case wordend'. For symbeg and symend, print to stderr, - like the other cases. - -2004-05-28 Noah Friedman - - * process.c (Fdelete_process): Do not call remove_process. - -2004-05-28 Stefan Monnier - - * alloc.c (struct backtrace): Remove. - (Fgarbage_collect): Use the new mark_backtrace. - - * eval.c (mark_backtrace): New function. - - * minibuf.c (run_exit_minibuf_hook): New function. - (read_minibuf_unwind): Don't run exit-minibuffer-hook any more. - (read_minibuf): Use separate unwind handler to run exit-minibuf-hook. - -2004-05-27 Kim F. Storm - - * xdisp.c (back_to_previous_visible_line_start): Skip backwards - over display properties, e.g. images, that replace buffer text. - -2004-05-25 Kim F. Storm - - * alloc.c (marker_blocks_pending_free): New var. - (gc_sweep): Store free marker blocks on that list. - (Fgarbage_collect): Free them after undo-list cleanup. - - * process.c (wait_reading_process_input): Check connect_wait_mask - before actually accepting connection in case it has already been - accepted due to recursion. - -2004-05-23 K,Aa(Broly L$,1 q(Brentey - - * coding.c (Fset_safe_terminal_coding_system_internal): - Set suppress_error in safe_terminal_coding, not terminal_coding. - -2004-05-22 Richard M. Stallman - - * alloc.c (Fmake_string): Doc fix. - - * buffer.c (clone_per_buffer_values): Copy the alist of local vars, - and the alist pairs too. - - * casefiddle.c (casify_object): Return OBJ unchanged if not real char. - - * emacs.c (main): Update copyright year. - - * fileio.c (Fread_file_name): Expand DIR if not absolute. - - * insdel.c (del_range_2, replace_range): Don't write an anchor - if the gap is empty. - - * xdisp.c (try_scrolling): If scroll-up-aggressively or - scroll-down-aggressively is small but positive, put point - near the screen edge. - -2004-05-22 Juanma Barranquero - - * keymap.c (Fdefine_key): Doc fix. - -2004-05-22 Kim F. Storm - - * alloc.c (struct backtrace): Add debug_on_exit member. - (Fgarbage_collect): Clear out buffer undo_list markers after gc_sweep. - Identify those markers as Lisp_Misc_Free objects. Clear car and cdr of - the removed cons cells. - (mark_object): Undo previous change - disallow Lisp_Misc_Free objects. - (gc_sweep): Clear cons_blocks before sweeping strings, so we don't have - any cons cells pointing to unallocated stings. - Do not lisp_free any marker blocks, as there may still be pointers - to them from buffer undo lists at this stage of GC. - - * keyboard.c (struct backtrace): Add debug_on_exit member. - (Fcommand_execute): Clear it. - -2004-05-20 Luc Teirlinck - - * intervals.c (lookup_char_property): Do not prematurely return nil. - -2004-05-19 Jim Blandy - - Add support for new '\_<' and '\_>' regexp operators, matching the - beginning and end of symbols. - - * regex.c (enum syntaxcode): Add Ssymbol. - (init_syntax_once): Set the syntax for '_' to Ssymbol, not Sword. - (re_opcode_t): New opcodes `symbeg' and `symend'. - (print_partial_compiled_pattern): Print the new opcodes properly. - (regex_compile): Parse the new operators. - (analyse_first): Skip sym(beg|end) (they match only the empty string). - (mutually_exclusive_p): `symend' is mutually exclusive with \s_ and - \sw; `symbeg' is mutually exclusive with \S_ and \Sw. - (re_match_2_internal): Match symbeg and symend. - - * search.c (trivial_regexp_p): \_ is no longer a trivial regexp. - -2004-05-19 Kim F. Storm - - * .gdbinit (xsymbol): Fix last change. - -2004-05-18 Stefan Monnier - - * .gdbinit (xprintstr): New fun. - (xstring, xprintsym): Use it. - - * w32proc.c (create_child): Use INTMASK. - - * alloc.c (Fgarbage_collect): Do all the marking before flushing - unmarked elements of the undo list. - -2004-05-18 David Ponce - - * print.c (print): Reset print_depth before to call print_object. - -2004-05-18 Jason Rumney - - * w32console.c: Prefix RIF functions with w32con_ to avoid - namespace clash with functions in term.c and w32term.c. - - * w32menu.c (add_menu_item, w32_menu_display_help) - [USE_LISP_UNION_TYPE]: Cast from Lisp_Object using i member. - - * w32term.h (display_x_get_resource, vga_stdcolor_name): Add prototype. - -2004-05-18 Eli Zaretskii - - * lisp.h (DECL_ALIGN): Remove restriction on MS-DOS systems. - - * msdos.c (syms_of_msdos): Initialize dos-unsupported-char-glyph - with make_number. - (IT_write_glyphs): Extract glyph from dos-unsupported-char-glyph - with XINT. - -2004-05-18 Kim F. Storm - - * blockinput.h (INPUT_BLOCKED_P): New macros. - - * keyboard.c (Frecursive_edit): Return immediately if input blocked. - (Ftop_level): Unblock input if blocked. - - * buffer.h (GET_OVERLAYS_AT): New macro. - * msdos.c (IT_note_mouse_highlight): Use it. - * textprop.c (get_char_property_and_overlay): Use it. - * xdisp.c (next_overlay_change, note_mouse_highlight): Use it. - * xfaces.c (face_at_buffer_position): Use it. - - * print.c (print_object): Increase buf size. - -2004-05-17 Jason Rumney - - * w32fns.c (Fw32_register_hot_key, Fw32_unregister_hot_key) - (Fw32_toggle_lock_key) [USE_LISP_UNION_TYPE]: Cast from - Lisp_Object using i member. - (w32_quit_key): Rename from Vw32_quit_key, and make an int. - (syms_of_w32fns, globals_of_w32fns): Use Lisp_Object and int - consistently. - - * w32proc.c (create_child): Use make_number instead of masking pid. - - * w32fns.c (w32_color_map_lookup): Return a Lisp_Object. - (x_to_w32_charset, w32_to_x_charset, w32_to_all_x_charsets): - Use EQ to compare Lisp_Objects. - (w32_parse_hot_key): Use int for lisp_modifiers consistently. - - * w32term.c (w32_num_mouse_buttons): Rename from - Vw32_num_mouse_buttons and make it an int. - - * w32.c (init_environment): Use it. - - * w32fns.c (w32_wnd_proc): Likewise. - - * w32proc.c (w32_pipe_read_delay): Rename from - Vw32_pipe_read_delay and make it an int. - - * w32.c (_sys_read_ahead): Use it. - - * lisp.h (egetenv) [USE_CRT_DLL]: Remove condition. - - * w32proc.c (create_child) [USE_LSB_TAG]: Don't try to mask pid. - - * w32inevt.c (w32_console_mouse_position, do_mouse_event) - (key_event): Don't mix Lisp_Object and int. - - * w32heap.c (init_heap) [USE_LSB_TAG]: Don't check heap location. - - * keyboard.c (kbd_buffer_get_event): Don't use event->code and - modifiers in language change event. - -2004-05-17 Kim F. Storm - - * alloc.c (mark_object): Ignore Lisp_Misc_Free objects. - Such objects may be freed markers which still exist on an undo list. - -2004-05-16 Juanma Barranquero - - * data.c (Fset_default): Make argument names match their use in - docstring. - -2004-05-15 Andreas Schwab - - * emacs.c (gdb_array_mark_flag): Define. - * .gdbinit: Mask off gdb_array_mark_flag from vector sizes. - -2004-05-15 Eli Zaretskii - - * lisp.h (DECL_ALIGN) [MSDOS]: Don't define DECL_ALIGN to use - __attribute__((__aligned__)), so that USE_LSB_TAG would not become - defined for the MS-DOS build. - -2004-05-14 Stefan Monnier - - * w32fns.c (Fw32_define_rgb_color): Avoid XSET. - -2004-05-14 Kenichi Handa - - * ccl.c (Fccl_execute_on_string): Fix setting elements of STATUS. - -2004-05-14 YAMAMOTO Mitsuharu - - * lisp.h (Vx_resource_name, Vx_resource_class): Move from xfns.c - section to frame.c section. - (Fxw_display_color_p, Fx_file_dialog): Declare if - HAVE_WINDOW_SYSTEM defined. - - * macfns.c (Fx_create_frame): Fix int/Lisp_Object mixup. - - * macmenu.c (set_frame_menubar): Use NILP to test a lisp value. - - * macterm.c (mac_get_emulated_btn, mac_event_to_emacs_modifiers) - (mac_get_mouse_btn): Use NILP and EQ to test/compare lisp values. - (XTread_socket): Fix int/Lisp_Object mixup. - (mac_check_for_quit_char): Fix pointer/Lisp_Object mixup. - - * macterm.h (struct frame, struct face, struct image) - (display_x_get_resource, Fx_display_color_p) - (Fx_display_grayscale_p, Fx_display_planes, x_free_gcs): - Add prototypes. - -2004-05-14 Kim F. Storm - - * process.c (wait_reading_process_input): Make reentrant. - Make Available and Connecting non-static. Save and restore value - of waiting_for_user_input_p. - -2004-05-13 Kim F. Storm - - * keyboard.c (mark_kboards): Don't mark x and y members - that are overloaded in selection request events. - -2004-05-13 Stefan Monnier - - * lisp.h (USE_LSB_TAG): Make it the default when it is known to work. - -2004-05-13 Glenn Morris - - * window.c (Fdisplay_buffer, Fsplit_window) - (split-height-threshold): Doc fix. - -2004-05-13 Juanma Barranquero - - * xfaces.c (Ftty_supports_face_attributes_p) - (Finternal_copy_lisp_face): Fix typo in docstring. - (Finternal_get_lisp_face_attribute): Fix docstring. - -2004-05-12 Jan Dj,Ad(Brv - - * xfns.c (syms_of_xfns): Provide x-toolkit also for GTK. - -2004-05-11 Steven Tamm - - * macfns.c (Fx_create_frame): Default to using tool-bar by - setting tool-bar-lines to 1 in default-frame-alist. - -2004-05-11 YAMAMOTO Mitsuharu - - * image.c (xpm_scan, xpm_make_color_table_v, xpm_put_color_table_v) - (xpm_get_color_table_v, xpm_make_color_table_h) - (xpm_put_color_table_h, xpm_get_color_table_h) - (xpm_str_to_color_key, xpm_load_image, xpm_load) - (syms_of_image): Support XPM on Carbon Emacs. Does not - depend on libXpm, but only supports XPM version 3 without extensions. - -2004-05-11 YAMAMOTO Mitsuharu - - * macterm.c (x_flush, XTframe_up_to_date): Use FRAME_MAC_P - instead of FRAME_X_P - -2004-05-11 Kim F. Storm - - * process.c (read_process_output): Grow decoding_buf when needed; - this could cause a crash in allocate_string and compact_small_strings. - -2004-04-29 Jim Blandy - - * regex.c (mutually_exclusive_p): In 'case wordbeg', compare op2 - against proper opcode. - -2004-05-10 Juanma Barranquero - - * process.c (Fstart_process): Fix docstring. - - * charset.c (Fget_unused_iso_final_char): Fix typos in docstring. - (Fchar_bytes, Fchar_width, Fstring_width, Fchar_direction) - (Fsplit_char, Fchar_charset): Make argument names match their use - in docstring. - -2004-05-10 Richard M. Stallman - - * print.c (print_preprocess): Use being_printed, loop_count and - halftail to detect overdeep nesting and cyclic cdr chains. - -2004-05-10 Andreas Schwab - - * lisp.h (Fmake_symbolic_link): Declare. - - * fileio.c (Frename_file): Remove extra argument in call to - Fmake_symbolic_link. - -2004-05-10 Kim F. Storm - - * xdisp.c (calc_line_height_property): Use string position when - object is a string. - -2004-05-10 Kenichi Handa - - * print.c (temp_output_buffer_setup): Bind inhibit-read-only and - inhibit-modification-hooks to t temporarily before calling - Ferase_buffer. - - * xfns.c (x_create_tip_frame): Bind inhibit-read-only and - inhibit-modification-hooks to t temporarily before calling - Ferase_buffer. - - * w32fns.c (x_create_tip_frame): Bind inhibit-read-only and - inhibit-modification-hooks to t temporarily before calling - Ferase_buffer. - - * fns.c (count_combining): Delete it. - (concat): Don't check combining bytes. - -2004-05-09 Jason Rumney - - * w32fns.c (Vw32_ansi_code_page): New Lisp variable. - (globals_of_w32fns): Set it. - -2004-05-09 Piet van Oostrum - - * data.c (Fquo): Simplify. - -2004-05-08 Peter Whaite (tiny change) - - * data.c (Fquo): If any argument is float, do the computation in - floating point. - -2004-05-08 Juanma Barranquero - - * process.c (Fwaiting_for_user_input_p, Fmake_network_process) - (Fset_process_query_on_exit_flag, Vprocess_adaptive_read_buffering): - Fix spelling of Emacs on docstring. - (Fset_process_coding_system, Fprocess_coding_system) - (Fset_process_filter_multibyte, Fprocess_filter_multibyte_p): - Make argument names match their use in docstring. - (Fprocess_id, Fprocess_query_on_exit_flag, Finterrupt_process): - Fix docstring. - - * editfns.c (Finsert_buffer_substring): Make argument names match their - use in docstring. - - * syntax.c (Fmodify_syntax_entry): Fix docstring. - -2004-05-07 Steven Tamm - - * macterm.c (mac_check_for_quit_char): Adding BLOCK_INPUT - around call to ReceiveEvent to avoid certain crashes. - -2004-05-07 YAMAMOTO Mitsuharu - - * macterm.c (mac_draw_line_to_pixmap, XCreatePixmapFromBitmapData) - (mac_fill_rectangle_to_pixmap, mac_draw_rectangle_to_pixmap) - (mac_copy_area_to_pixmap, mac_copy_area_with_mask_to_pixmap): - Save/restore the current graphics port and device handle when - drawing into an offscreen graphics world. - - * image.c [MAC_OS] (XPutPixel, XGetPixel, image_load_qt_1) - (gif_load): Likewise. - -2004-05-07 Juanma Barranquero - - * window.c (Fset_window_buffer): Fix docstring. - -2004-05-06 Thien-Thi Nguyen - - * emacs.c (main) [VMS]: Fix var ref. - -2004-05-06 Romain Francoise - - * data.c (Fsetq_default): Fix docstring. - -2004-05-06 Jason Rumney - - * image.c (Display) [HAVE_NTGUI]: Redefine while loading xpm.h - to avoid name clash. - -2004-05-04 Jan Dj,Ad(Brv - - * fileio.c (barf_or_query_if_file_exists): Use lstat. - (Frename_file): Handle renaming of symlinks across file systems. - (Frename_file): Put symlink handling inside #ifdef S_IFLNK. - -2004-05-04 Kim F. Storm - - * xdisp.c (Qtotal): New var. - (syms_of_xdisp): Intern and staticpro it. - (calc_line_height_property): New arg total. Set it if - line-spacing property has format (total . VALUE). - (x_produce_glyphs): Ignore line-spacing if line-height is 0. - Handle total line-spacing property. - -2004-05-03 Jan Dj,Ad(Brv - - * gtkutil.c (xg_update_scrollbar_pos): Call XClearWindow to clear - "under" scroll bar when size/position changes. - -2004-05-03 Jason Rumney - - * makefile.nt: Remove. - -2004-05-02 Eli Zaretskii - - * syntax.h (SET_RAW_SYNTAX_ENTRY, SYNTAX_ENTRY_INT): - Avoid compiler warnings. - - * Makefile.in (region-cache.o): Depend on config.h. - -2004-05-02 Romain Francoise - - * indent.c (compute_motion): Save vpos in prev_vpos when dealing - with continuation lines, too. - -2004-05-02 Thien-Thi Nguyen - - * syssignal.h (init_signals): Move decl outside `#ifdef POSIX_SIGNALS'. - -2004-05-01 Stefan Monnier - - * xdisp.c (calc_line_height_property): YAILOM (yet another - int/Lisp_Object mixup). - -2004-05-01 Eli Zaretskii - - * msdos.c (top-level): Add "#pragma pack(0)" after , to - undo bad effect of pack(4) in some versions of system headers. - -2004-05-01 Jason Rumney - - * w32term.c (x_draw_hollow_cursor): Sync with xterm.c - -2004-04-30 Kim F. Storm - - * buffer.c (syms_of_buffer) : Allow float value. - (syms_of_buffer) : Doc fix. - - * dispextern.h (struct it): Remove member use_default_face. - Add members override_ascent, override_descent, override_boff. - - * xdisp.c (init_iterator): Handle line-spacing float value. - Initialize override_ascent member. - (append_space_for_newline): Reset override_ascent. - Remove use_default_face. - (calc_line_height_property): New function to calculate value of - line-height and line-spacing properties. Look at overlays, too. - Set override_ascent, override_descent, override_boff members when - using another face than the current face. Float values are now - relative to the frame default font, by default; accept a cons - of ratio and face name to specify value relative to a specific face. - (x_produce_glyphs): Use calc_line_height_property. - Use override_ascent etc. when set to handle different face heights. - A negative line-spacing property value is interpreted as a total - line height, rather than inter-line spacing. - (note_mouse_highlight): Allocate room for 40 overlays initially. - -2004-04-29 Stefan Monnier - - * data.c (Fsubr_name): New fun. - (syms_of_data): Defsubr it. - -2004-04-29 Kim F. Storm - - * xdisp.c (null_glyph_slice): New var. - (append_glyph, append_composite_glyph, append_stretch_glyph): - Use it to initialize glyph slice. - -2004-04-27 Stefan Monnier - - * xdisp.c (x_produce_glyphs): Fix the proverbial int/Lisp_Object mixup. - (on_hot_spot_p): Make sure we always return a value. - (Flookup_image_map): Remove unused var ix and iy. - (note_mode_line_or_margin_highlight): Remove unused var `image'. - -2004-04-27 Eli Zaretskii - - * msdos.c (init_environment): If one of the TMP... environment - variables is set to a drive letter without a trailing slash, - append a slash. - -2004-04-27 Matthew Mundell - - * editfns.c (lisp_time_argument): Provide externally. - - * fileio.c (Fset_file_times): New function. - (syms_of_fileio): Intern and staticpro it. - -2004-04-27 Kim F. Storm - - * xdisp.c (x_produce_glyphs): Fix last change; handle newline in - header line strings. - - * dispextern.h (struct it): New member use_default_face. - - * xdisp.c (Qline_height): New variable. - (syms_of_xdisp): Intern and staticpro it. - (append_space_for_newline): Partially undo 2004-04-25 change; - add default_face_p arg, and restore callers. - Clear it->use_default_face after use. - (x_produce_glyphs): Set default font for ascii char if - it->use_default_font is set. Change line-spacing property to set - just extra line spacing. Handle new line-height property. - -2004-04-26 Andreas Schwab - - * print.c (print_object): Print non-ascii characters in bool - vector representation as octal escapes. - - * lisp.h (BOOL_VECTOR_BITS_PER_CHAR): Define. - * print.c (print_object): Use it instead of BITS_PER_CHAR for - bool vectors. - * lread.c (read1): Likewise. - * alloc.c (Fmake_bool_vector): Likewise. - * data.c (Faref, Faset): Likewise. - * fns.c (Fcopy_sequence, concat, internal_equal, Ffillarray) - (mapcar1): Likewise. - -2004-04-26 Steven Tamm - - * lread.c (init_lread): Fix typo in HAVE_CARBON test logic. - -2004-04-26 Miles Bader - - * lisp.h (CYCLE_CHECK): Macro moved from xfaces.c. - -2004-04-26 Juanma Barranquero - - * buffer.c (Fpop_to_buffer): Fix docstring. - -2004-04-26 Steven Tamm - - * lread.c (init_lread): Don't display missing lisp directory - warnings with Carbon Emacs because self-contained bundled Emacs - may be built without correct installation path. - -2004-04-25 Kim F. Storm - - * macterm.c (x_draw_hollow_cursor): Fix height of box for narrow lines. - - * xterm.c (x_draw_hollow_cursor): Fix height of box for narrow lines. - - * xdisp.c (append_space_for_newline): Rename from append_space. - Remove DEFAULT_FACE_P arg; always use current face. Callers changed. - (x_produce_glyphs): Handle line-spacing property on newline char. - If value is t, adjust ascent and descent to fit current row height. - If value is an integer or float, set extra_line_spacing to integer - value, or to float value x current line height. - -2004-04-23 Kenichi Handa - - * fontset.c (Finternal_char_font): If POSITION is nil, return - font for displaying CH with the default face. - -2004-04-23 Juanma Barranquero - - * makefile.w32-in: Add "-*- makefile -*-" mode tag. - -2004-04-21 Stefan Monnier - - * lisp.h (XINT) [EXPLICIT_SIGN_EXTEND && !NO_UNION_TYPE]: - Don't make assumptions about the relative place of i and val. - (EQ) [!NO_UNION_TYPE]: Don't forget to check the type match as well. - -2004-04-21 Kim F. Storm - - * dispextern.h (struct glyph_slice): New struct. - (struct glyph): New member slice. - (GLYPH_SLICE_EQUAL_P): New macro. - (GLYPH_EQUAL_P): Use it. - (struct glyph_string): New member slice. - (struct it_slice): New struct. - (struct it): New member slice, add member to stack too. - New member constrain_row_ascent_descent_p. - (image_ascent): Add prototype. - - * dispnew.c (buffer_posn_from_coords): Return full image width - and height even for image slices (posn is relative to full image). - (marginal_area_string): Adjust x0,y0 for image slice. - - * image.c (image_ascent): Add slice arg; calculate ascent for - image slice (or full image). - - * keyboard.c (Fposn_at_x_y, Fposn_at_point): New defuns. - (syms_of_keyboard): Defsubr them. - - * lisp.h (pos_visible_p): Fix prototype. - - * macterm.c (x_draw_relief_rect): Add top_p and bot_p args. - (x_draw_glyph_string_box): Fix call to x_draw_relief_rect. - (x_draw_image_foreground, x_draw_image_relief) - (x_draw_image_foreground_1, x_draw_image_glyph_string): - Draw sliced images. - - * w32term.c (w32_draw_relief_rect): Add top_p and bot_p args. - (x_draw_glyph_string_box): Fix call to x_draw_relief_rect. - (x_draw_image_foreground, x_draw_image_relief) - (w32_draw_image_foreground_1, x_draw_image_glyph_string): - Draw sliced images. - - * w32term.h (image_ascent): Remove prototype. - - * window.c (Fpos_visible_in_window_p): Return pixel position if - PARTIALLY arg is non-nil. Simplify. Doc fix. - (Fwindow_vscroll, Fset_window_vscroll): Add optional PIXEL_P arg - to return/set vscroll in pixels. - - * window.h (Fwindow_vscroll, Fset_window_vscroll): Fix EXFUN. - - * xdisp.c (Qslice): New variable. - (syms_of_xdisp): Intern and staticpro it. - (pos_visible_p): Return pixel position in new x and y args. - (init_iterator): Reset it->slice info. - (handle_display_prop): Parse (slice ...) property. - (push_it, pop_it): Save/restore slice info. - (make_cursor_line_fully_visible): Fix 2004-04-14 change. Do not - force repositioning of tall row if window is vscrolled, as that - would reset vscroll. - (append_space): Set it->constrain_row_ascent_descent_p to avoid - increasing row height if row is non-empty. - (fill_image_glyph_string): Copy slice info. - (take_vertical_position_into_account): Simplify. - (produce_image_glyph): Handle iterator slice info, setup glyph - slice info. Do not force minimum line height. - (x_produce_glyphs): If it->constrain_row_ascent_descent_p is set, - do not increase height (ascent/descent) of non-empty row when - adding normal character glyph; instead reduce glyph ascent/descent - appropriately; if row is higher than current glyph, adjust glyph - descent/ascent to reposition glyph within the existing row. - Likewise, when char is newline, only set ascent/descent if row is - currently empty. - (note_mouse_highlight): Handle hotspots with sliced image. - - * xterm.c (x_draw_relief_rect): Add top_p and bot_p args. - (x_draw_glyph_string_box): Fix call to x_draw_relief_rect. - (x_draw_image_foreground, x_draw_image_relief) - (x_draw_image_foreground_1, x_draw_image_glyph_string): - Draw sliced images. - - * xterm.h (image_ascent): Remove prototype. - -2004-04-20 Stefan Monnier - - * keymap.c (Fkey_description): Fix the usual int/Lisp_Object mixup. - -2004-04-20 John Paul Wallington - - * fns.c (Fassoc, Feql): Fix indentation. - - * fontset.c (regularize_fontname): Rename from regulalize_fontname. - -2004-04-19 John Paul Wallington - - * fns.c (Feql): New function. - (syms_of_fns): Defsubr it. - -2004-04-18 Jason Rumney - - * w32select.c (Fw32_set_clipboard_data): Get sequence number - after closing the clipboard. - -2004-04-16 Luc Teirlinck - - * buffer.c (Fbuffer_base_buffer): Doc fix. - -2004-04-17 Kim F. Storm - - * keymap.c (Fkey_description): Add optional PREFIX arg. - Combine prefix with KEYS to make up the full key sequence to describe. - Correlate meta_prefix_char and following (simple) key to describe - as meta modifier. All callers changed. - (describe_map): Rename arg `keys' to `prefix'. Remove local - `elt_prefix' var. Use Fkey_description with prefix instead of - elt_prefix combined with Fsingle_key_description. - (describe_vector): Declare static. Replace arg `elt_prefix' with - `prefix'. Add KEYMAP_P arg. Add local var `elt_prefix'; use it - if !KEYMAP_P. Use Fkey_description with prefix instead of - Fsingle_key_description. - - * keymap.h (Fkey_description): Fix prototype. - (describe_vector): Remove prototype. - - * xdisp.c (update_overlay_arrows): Fix handling of up_to_date < 0. - - * image.c (PNG_BG_COLOR_SHIFT): Remove. - (png_load): Fix calculation of transparent background color on X - and W32 platforms. - -2004-04-16 Juanma Barranquero - - * xdisp.c (try_scrolling): Make sure `scroll-conservatively' is - not too large before computing how much to scroll. - -2004-04-15 Stefan Monnier - - * dired.c (Ffile_attributes): Don't pass extra nil arg to file-handler. - -2004-04-14 Luc Teirlinck - - * fileio.c (Fverify_visited_file_modtime, Fvisited_file_modtime): - Add hyperlink to Elisp manual to the docstring. - -2004-04-14 Stefan Monnier - - * callint.c (fix_command): Use XDCR. - -2004-04-14 Nick Roberts - - * window.c (Fget_lru_window): Doc fix. - -2004-04-14 Kim F. Storm - - * editfns.c (Fformat): Fix allocation size of precision array. - - * dispnew.c (update_window): Only set changed_p if - scrolling_window actually did scroll. - (scrolling_window): Only return 1 if we actually did scroll. - - * xdisp.c (get_glyph_string_clip_rect): Fix reduction of cursor - height to glyph height when cursor row is not fully visible. - (make_cursor_line_fully_visible): Add FORCE_P arg to return - failure in case row is higher than window. Callers changed. - (try_scrolling): Fix loop in scrolling if last_line_misfit (from Gerd). - Try to scroll partially visible, higher-than-window cursor row. - (redisplay_window): Always try to scroll partially visible, - higher-than-window cursor row - both initially and again with - centering_position = 0. - Clear desired matrix before retrying with centering_position = 0. - -2004-04-13 Stefan Monnier - - * syntax.c (scan_lists): Simplify backward string scan. - Fix off-by-one boundary check for string and comment fences. - -2004-04-13 Joe Buehler - - * sheap.c, unexcw.c: New files. - -2004-04-12 Luc Teirlinck - - * buffer.c (Fmake_indirect_buffer): Throw an error if the intended - base buffer has been killed. Correct the error message if the - base buffer does not exist. - -2004-04-12 Joe Buehler - - * s/cygwin.h: Changes for Cygwin unexec() support, changes in - Cygwin itself. Add support for Xaw3d scrollbars. - - * puresize.h: Set up PURE_P() for Cygwin unexec() support. - - * lastfile.c: Define my_endbss[] for Cygwin unexec() support. - - * gmalloc.c (__default_morecore): Use bss_sbrk(), not __sbrk(), - before Cygwin unexec. - - * Makefile.in: Link changes for Cygwin unexec() support. - -2004-04-12 Andreas Schwab - - * buffer.c (Fmake_indirect_buffer): Check that NAME is a string. - -2004-04-11 Luc Teirlinck - - * buffer.c (Fgenerate_new_buffer_name): Return NAME argument if - IGNORE argument equals NAME. Doc fix. - -2004-04-11 Masatake YAMATO - - * buffer.c (fix_start_end_in_overlays): Make overlays - empty if they are backwards. - -2004-04-09 Stefan Monnier - - * xfaces.c (face_color_supported_p): Fix compilation without X11. - -2004-04-07 Stefan Monnier - - * doc.c (Fsnarf_documentation): Ignore new file name entries. - -2004-04-06 Kim F. Storm - - * msdos.c (clear_mouse_face): Only clear mouse highlight if not hidden. - (dos_rawgetc): Set mouse_face_hidden after clearing highlight. - - * w32term.c (w32_read_socket): Set mouse_face_hidden after - clearing highlight. - - * xdisp.c (clear_mouse_face): Only clear mouse highlight if not hidden. - - * xterm.c (handle_one_xevent): Set mouse_face_hidden after - clearing highlight. - - * indent.c (vmotion): Do not reserve one column for continuation - marks on window frames. - -2004-04-04 Eli Zaretskii - - * charset.h (SINGLE_BYTE_CHAR_P): Fix macro to avoid warnings - from GCC. - -2004-04-03 Stefan Monnier - - * .gdbinit-union: Remove. - - * .gdbinit: Make it work for USE_LSB_TAG and !NO_LISP_UNION. - (xgetptr, xgetint, xgettype): New funs. Use them everywhere. - ($nonvalbits): Remove. - ($valmask): Set it by calling xreload to avoid redundancy. - - * emacs.c (gdb_use_union, gdb_use_lsb): New vars. - (gdb_emacs_intbits): Remove. - -2004-03-31 Jan Dj,Ad(Brv - - * data.c (Fbyteorder): Make test work even if unsigned is not 4 bytes. - -2004-03-30 Kenichi Handa - - * editfns.c (Fformat): Fix initialization of the array info. - -2004-03-30 Kim F. Storm - - * xterm.c (x_mouse_click_focus_ignore_position): New var. - (syms_of_xterm): DEFVAR_BOOL it. - (ignore_next_mouse_click_timeout): New var. - (handle_one_xevent): Clear it on KeyPress, set it on EnterNotify. - Use it to filter mouse clicks following focus event. - -2004-03-29 David Ponce - - * callint.c (Fcall_interactively): Fix last change. - -2004-03-28 Stefan Monnier - - * eval.c (Fcommandp): Simplify. - - * data.c (Finteractive_form): Rename from Fsubr_interactive_form. - Extend to handle all kinds of functions. - - * lisp.h (Finteractive_form): Declare. - - * callint.c (Fcall_interactively): Use it. - -2004-03-26 Kim F. Storm - - * xdisp.c (syms_of_xdisp): Include `void-variable' in list_of_error - to catch errors in calc_pixel_width_or_height during redisplay. - -2004-03-26 Masatake YAMATO - - * buffer.c (fix_start_end_in_overlays): Rename fix_overlays_in_range. - - * lisp.h (fix_start_end_in_overlays): Likewise. - - * insdel.c (adjust_markers_for_insert): Call fix_start_end_in_overlays. - - * editfns.c (Ftranspose_regions): Likewise. - -2004-03-20 Jan Dj,Ad(Brv - - * xterm.c (handle_one_xevent): Do not pass key press events to GTK. - -2004-03-19 Richard M. Stallman - - * s/sol2-6.h: Delete previous change. - -2004-03-19 Kim F. Storm - - * xdisp.c (move_it_in_display_line_to): Fix MOVE_TO_POS case when - to_charpos corresponds to newline in right fringe. Use local - BUFFER_POS_REACHED_P macro. - -2004-03-19 Jan Dj,Ad(Brv - - * xdisp.c (calc_pixel_width_or_height): Add ifdef HAVE_WINDOW_SYSTEM - to compile on non-window system. - -2004-03-19 Kim F. Storm - - * dispextern.h (calc_pixel_width_or_height): Add prototype. - - * image.c (Qcenter): Move to xdisp.c. - - * xdisp.c (Qcenter): Declare here. - (syms_of_xdisp): Intern and staticpro it. - (handle_single_display_prop): Allow space display property on all - platforms. - (display_mode_line): Set mode_line_p before displaying line. - (calc_pixel_width_or_height): Declare extern. Add separate :align-to - handling. Remove complex cases for fringes and scroll-bars. - Add left, right, and center alignment positions. Add text (area) - width/height. Return width or height for image specs. - (produce_stretch_glyph): Improve handling of :align-to. Is now - relative to left of text area by default, but other base offsets - can be specified -- also for text lines. - - * term.c (produce_glyphs): Handle IT_STRETCH. - (produce_stretch_glyph): New function to handle space width and - align-to display properties on non-window systems. - -2004-03-17 Stefan Monnier - - * fileio.c (Fread_file_name): Set completion-ignore-case for - case-insensitive systems. - -2004-03-14 Masatake YAMATO - - * xdisp.c (note_mode_line_or_margin_highlight): Accept HEADER_LINE - when keymap and cursor are setup. - -2004-03-14 Steven Tamm - - * Makefile.in (XMENU_OBJ) [HAVE_CARBON]: Do not include xmenu.o. - -2004-03-14 Kim F. Storm - - * dispextern.h (x_find_image_file): Add prototype. - - * image.c (x_find_image_file): Make extern. - - * xfns.c (x_find_image_file): Remove prototype. - -2004-03-13 Eli Zaretskii - - * Makefile.in (XMENU_OBJ): Include xmenu.o if HAVE_MENUS is defined. - - * emacs.c (main): Call syms_of_xmenu only if HAVE_MENUS is defined. - -2004-03-12 Richard M. Stallman - - * fns.c (internal_equal): New arg PROPS controls comparing - text properties. All callers changed. - (Fequal_including_properties): New function. - (syms_of_fns): defsubr it. - -2004-03-12 Kim F. Storm - - Fix image support on MAC. From YAMAMOTO Mitsuharu. - - * dispextern.h (XImagePtr, XImagePtr_or_DC): Add typedefs. - (image_background, image_background_transparent): Fix prototypes. - - * image.c (XImagePtr, XImagePtr_or_DC): Move typedefs to dispextern.h. - - * macfns.c (x_list_fonts, x_get_font_info, x_load_font) - (x_query_font, x_find_ccl_program, x_set_window_size) - (x_make_frame_visible, mac_initialize, XCreatePixmap) - (XCreatePixmapFromBitmapData, XFreePixmap, XSetForeground) - (mac_draw_line_to_pixmap): Move prototypes to macterm.h. - - * macterm.h (x_list_fonts, x_get_font_info, x_load_font) - (x_query_font, x_find_ccl_program, x_set_window_size) - (x_make_frame_visible, mac_initialize, XCreatePixmap) - (XCreatePixmapFromBitmapData, XFreePixmap, XSetForeground) - (mac_draw_line_to_pixmap): Add prototypes. - -2004-03-12 YAMAMOTO Mitsuharu - - * macterm.c (XTread_socket): Fix mouse click on tool bar. - -2004-03-11 Kim F. Storm - - * dispextern.h: Move image related prototypes from xfns.c section - to image.c. Condition them by HAVE_WINDOW_SYSTEM rather than - HAVE_X_WINDOWS. - - * Makefile.in (XOBJ): Consolidate into one list. Add image.o. - Move gtkutil.o to new GTK_OBJ list. - (XMENU_OBJ) [HAVE_MENUS]: Move declaration to proper place. - (GTK_OBJ) [USE_GTK]: New declaration. - (obj): Add $(GTK_OBJ) to list. - -2004-03-11 Steven Tamm - - * image.c [MAC_OSX]: Include sys/stat.h. - - * macfns.c (syms_of_macfns): Remove definitions of things now - defined in image.c. - -2004-03-11 Kim F. Storm - - The following changes consolidates the identical/similar image - support code previously found in xfns.c, w32fns.c, and macfns.c - into a new file image.c. - - * makefile.w32-in (OBJ1): Add image.o. - ($(BLD)/image.$(O)): Add dependencies. - - * Makefile.in (XOBJ, MAC_OBJ): Add image.o. - (image.o): Add dependencies. - - * image.c: New file with consolidated image support code. - (COLOR_TABLE_SUPPORT): New define to control whether - color table support is available (X only). - (Bitmap_Record): Common name for x_bitmap_record, - w32_bitmap_record, and mac_bitmap_record. - (XImagePtr): Common name for pointer to XImage or equivalent. - (XImagePtr_or_DC): New type to simplify code sharing; equivalent - to XImagePtr on X+MAC, and to HDC on W32. - (GET_PIXEL): Wrapper for XGetPixel or equivalent. - (NO_PIXMAP): Common name for "None" or equivalent. - (PNG_BG_COLOR_SHIFT): Bits to shift PNG background colors. - (RGB_PIXEL_COLOR): Common type for an integer "pixel color" value. - (PIX_MASK_RETAIN, PIX_MASK_DRAW): Portability macros (from macfns.c). - (FRAME_X_VISUAL, x_defined_color, DefaultDepthOfScreen): - Define with suitable equivalents on W32 and MAC for code sharing. - (XDrawLine): Define on MAC for code sharing. - (Destroy_Image, Free_Pixmap): Wrappers for code sharing. - (IF_LIB_AVAILABLE): Macro to simplify code sharing. - (Vx_bitmap_file_path, Vimage_cache_eviction_delay) - (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap) - (x_reference_bitmap, x_create_bitmap_from_data) - (x_create_bitmap_from_file, x_destroy_bitmap) - (x_destroy_all_bitmaps, x_create_bitmap_mask) - (XGetImage, XPutPixel, XGetPixel, XDestroyImage) - (QCascent, QCmargin, QCrelief, QCconversion, QCcolor_symbols) - (QCheuristic_mask, QCindex, QCmatrix, QCcolor_adjustment, QCmask) - (Qlaplace, Qemboss, Qedge_detection, Qheuristic, Qcenter) - (define_image_type, lookup_image_type, valid_image_p) - (image_error, enum image_value_type, struct image_keyword) - (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p) - (make_image, free_image, prepare_image_for_display, image_ascent) - (four_corners_best, image_background, image_background_transparent) - (x_clear_image_1, x_clear_image, x_alloc_image_color) - (make_image_cache, free_image_cache, clear_image_cache) - (Fclear_image_cache, postprocess_image, lookup_image, cache_image) - (forall_images_in_image_cache, x_create_x_image_and_pixmap) - (x_destroy_x_image, x_put_x_image, x_find_image_file, slurp_file) - (find_image_fsspec, image_load_qt_1, image_load_quicktime) - (init_image_func_pointer, image_load_quartz2d) - (struct ct_color, init_color_table, free_color_table) - (lookup_rgb_color, lookup_pixel_color, colors_in_color_table) - (cross_disabled_images, x_to_xcolors, x_from_xcolors) - (x_detect_edges, x_emboss, x_laplace, x_edge_detection) - (x_disable_image, x_build_heuristic_mask) - (XBM support, XPM support, PBM support, PNG support, JPEG support) - (TIFF support, GIF support, Ghostscript support): Consolidate image - code from xfns.c, w32fns.c, and macfns.c. - (syms_of_image): Consolidate image related symbol setup here. - (init_image): Consolidate image related initializations here. - - * emacs.c (main) [HAVE_WINDOW_SYSTEM]: Add calls to syms_of_image - and init_image. Remove call to init_xfns. - - * macterm.h (struct mac_bitmap_record): Add file member. - Not currently used, but simplifies code sharing. - - * macfns.c (Vx_bitmap_file_path, Vimage_cache_eviction_delay) - (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap) - (x_reference_bitmap, x_create_bitmap_from_data) - (x_create_bitmap_from_file, x_destroy_bitmap) - (x_destroy_all_bitmaps, x_create_bitmap_mask) - (XGetImage, XPutPixel, XGetPixel, XDestroyImage) - (QCascent, QCmargin, QCrelief, QCconversion, QCcolor_symbols) - (QCheuristic_mask, QCindex, QCmatrix, QCcolor_adjustment, QCmask) - (Qlaplace, Qemboss, Qedge_detection, Qheuristic, Qcenter) - (define_image_type, lookup_image_type, valid_image_p) - (image_error, enum image_value_type, struct image_keyword) - (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p) - (make_image, free_image, prepare_image_for_display, image_ascent) - (four_corners_best, image_background, image_background_transparent) - (x_clear_image_1, x_clear_image, x_alloc_image_color) - (make_image_cache, free_image_cache, clear_image_cache) - (Fclear_image_cache, postprocess_image, lookup_image, cache_image) - (forall_images_in_image_cache, x_create_x_image_and_pixmap) - (x_destroy_x_image, x_put_x_image, x_find_image_file, slurp_file) - (find_image_fsspec, image_load_qt_1, image_load_quicktime) - (init_image_func_pointer, image_load_quartz2d) - (struct ct_color, init_color_table, free_color_table) - (lookup_rgb_color, lookup_pixel_color, colors_in_color_table) - (cross_disabled_images, x_to_xcolors, x_from_xcolors) - (x_detect_edges, x_emboss, x_laplace, x_edge_detection) - (x_disable_image, x_build_heuristic_mask) - (XBM support, XPM support, PBM support, PNG support, JPEG support) - (TIFF support, GIF support, Ghostscript support): Merge with image - code from xfns.c and macfns.c into image.c. - (syms_of_xfns): Move image related symbols to image.c. - (init_external_image_libraries, init_xfns): Remove; initialization - moved to init_image in image.c. - - * w32fns.c (Vx_bitmap_file_path, Vimage_cache_eviction_delay) - (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap) - (x_reference_bitmap, x_create_bitmap_from_data) - (x_create_bitmap_from_file, x_destroy_bitmap) - (x_destroy_all_bitmaps, x_create_bitmap_mask) - (QCascent, QCmargin, QCrelief, QCconversion, QCcolor_symbols) - (QCheuristic_mask, QCindex, QCmatrix, QCcolor_adjustment, QCmask) - (Qlaplace, Qemboss, Qedge_detection, Qheuristic, Qcenter) - (define_image_type, lookup_image_type, valid_image_p) - (image_error, enum image_value_type, struct image_keyword) - (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p) - (make_image, free_image, prepare_image_for_display, image_ascent) - (four_corners_best, image_background, image_background_transparent) - (x_clear_image_1, x_clear_image, x_alloc_image_color) - (make_image_cache, free_image_cache, clear_image_cache) - (Fclear_image_cache, postprocess_image, lookup_image, cache_image) - (forall_images_in_image_cache, x_create_x_image_and_pixmap) - (x_destroy_x_image, x_put_x_image, x_find_image_file, slurp_file) - (struct ct_color, init_color_table, free_color_table) - (lookup_rgb_color, lookup_pixel_color, colors_in_color_table) - (cross_disabled_images, x_to_xcolors, x_from_xcolors) - (x_detect_edges, x_emboss, x_laplace, x_edge_detection) - (x_disable_image, x_build_heuristic_mask) - (XBM support, XPM support, PBM support, PNG support, JPEG support) - (TIFF support, GIF support, Ghostscript support): Merge with image - code from xfns.c and macfns.c into image.c. - (syms_of_xfns): Move image related symbols to image.c. - (init_external_image_libraries, init_xfns): Remove; initialization - moved to init_image in image.c. - - * xfns.c (Vx_bitmap_file_path, Vimage_cache_eviction_delay) - (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap) - (x_reference_bitmap, x_create_bitmap_from_data) - (x_create_bitmap_from_file, x_destroy_bitmap) - (x_destroy_all_bitmaps, x_create_bitmap_mask) - (QCascent, QCmargin, QCrelief, QCconversion, QCcolor_symbols) - (QCheuristic_mask, QCindex, QCmatrix, QCcolor_adjustment, QCmask) - (Qlaplace, Qemboss, Qedge_detection, Qheuristic, Qcenter) - (define_image_type, lookup_image_type, valid_image_p) - (image_error, enum image_value_type, struct image_keyword) - (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p) - (make_image, free_image, prepare_image_for_display, image_ascent) - (four_corners_best, image_background, image_background_transparent) - (x_clear_image_1, x_clear_image, x_alloc_image_color) - (make_image_cache, free_image_cache, clear_image_cache) - (Fclear_image_cache, postprocess_image, lookup_image, cache_image) - (forall_images_in_image_cache, x_create_x_image_and_pixmap) - (x_destroy_x_image, x_put_x_image, x_find_image_file, slurp_file) - (struct ct_color, init_color_table, free_color_table) - (lookup_rgb_color, lookup_pixel_color, colors_in_color_table) - (cross_disabled_images, x_to_xcolors, x_from_xcolors) - (x_detect_edges, x_emboss, x_laplace, x_edge_detection) - (x_disable_image, x_build_heuristic_mask) - (XBM support, XPM support, PBM support, PNG support, JPEG support) - (TIFF support, GIF support, Ghostscript support): Merge with - w32fns.c and macfns.c image code into image.c. - (syms_of_xfns): Move image related symbols to image.c. - (init_xfns): Remove; initialization moved to init_image in image.c. - - * lisp.h (syms_of_image, init_image): Add protoypes. - (init_xfns): Remove prototype. - - * dispextern.h (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap) - (x_reference_bitmap, x_create_bitmap_from_data) - (x_create_bitmap_from_file, x_destroy_bitmap) - (x_create_bitmap_mask): Move prototypes from dispextern.h. - (gamma_correct) [MAC_OS]: Add prototype. - - * xterm.h (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap) - (x_reference_bitmap, x_create_bitmap_from_data) - (x_create_bitmap_from_file, x_destroy_bitmap) - (x_create_bitmap_mask): Move prototypes to dispextern.h. - -2004-03-09 Kenichi Handa - - * coding.c (decode_coding_emacs_mule): Handle insufficent source - correctly. - -2004-03-04 Richard M. Stallman - - * s/sol2-6.h (LD_SWITCH_SYSTEM_TEMACS): New definition. - - * window.c (Fdisplay_buffer): Doc fix. - - * buffer.c (Fpop_to_buffer): Doc fix. - -2004-03-03 Kim F. Storm - - * xdisp.c (display_line): Fix call to get_overlay_arrow_glyph_row. - -2004-03-02 Stefan Monnier - - * editfns.c (Ftranslate_region): Lisp_Object/int mixup. - -2004-03-02 Richard M. Stallman - - * indent.c (compute_motion): Save vpos in prev_vpos, like hpos etc. - -2004-03-02 Kenichi Handa - - * doc.c (Fsubstitute_command_keys): Fix counding bytes. - -2004-03-02 Kim F. Storm - - * window.h (struct window): New member overlay_arrow_bitmap. - - * window.c (make_window): Initialize overlay_arrow_bitmap. - - * xdisp.c (Voverlay_arrow_variable_list): New variable to properly - implement and integrate multiple overlay arrows with redisplay. - (syms_of_xdisp): DEFVAR_LISP and initialize it. - (last_arrow_position, last_arrow_string): Replace by properties. - (Qlast_arrow_position, Qlast_arrow_string) - (Qoverlay_arrow_string, Qoverlay_arrow_bitmap): New variables. - (syms_of_xdisp): Intern and staticpro them. - (overlay_arrow_string_or_property, update_overlay_arrows) - (overlay_arrow_in_current_buffer_p, overlay_arrows_changed_p) - (overlay_arrow_at_row): New functions for multiple overlay arrows. - (redisplay_internal): Use them instead of directly accessing - Voverlay_arrow_position etc. for multiple overlay arrows. - (mark_window_display_accurate): Use update_overlay_arrows. - (try_cursor_movement): Use overlay_arrow_in_current_buffer_p. - (try_window_id): Use overlay_arrows_changed_p. - (get_overlay_arrow_glyph_row): Add overlay_arrow_string arg. - (display_line): Use overlay_arrow_at_row to check multiple - overlay arrows, and get relevant overlay-arrow-string and - overlay-arrow-bitmap. Set w->overlay_arrow_bitmap accordingly. - (produce_image_glyph): Set pixel_width = 0 for fringe bitmap. - (syms_of_xdisp): Remove last_arrow_position and last_arrow_string. - - * fringe.c (draw_fringe_bitmap): Use w->overlay_arrow_bitmap if set. - (update_window_fringes): Remove unused code. - -2004-03-01 Jason Rumney - - * w32term.c (w32_read_socket): Fix last change to ButtonPress handling. - -2004-03-01 Juanma Barranquero - - * fringe.c (Fdefine_fringe_bitmap): Fix typo in docstring. - - * makefile.w32-in ($(BLD)/fringe.$(O)): Add dependencies. - -2004-03-01 Jan Dj,Ad(Brv - - * xfns.c (Fx_display_color_cells): Use number of planes to calculate - how many colors can be displayed. - -2004-03-01 Kenichi Handa - - * editfns.c (Ftranslate_region): Handle multibyte chars in TABLE - correctly. - -2004-02-28 Kim F. Storm - - * dispnew.c (update_window): Update header line also if there are - no other changes in window (move code after set_cursor label). - - * lisp.h (mark_window_display_accurate): Remove prototype. - - * window.c (window_loop, Fforce_window_update): Force mode line - updates by setting prevent_redisplay_optimizations_p and - update_mode_lines. - -2004-02-28 Jan Dj,Ad(Brv - - * xfns.c (x_window): Fix indentation. - - * xterm.c (x_calc_absolute_position): Call x_real_positions - to get WM window sizes and use those to calculate position. - (x_set_offset): Remove code commented out. - -2004-02-28 Miles Bader - - * keyboard.c (adjust_point_for_property): #ifdef-out dodgy xassert. - -2004-02-28 Kim F. Storm - - * keyboard.c (kbd_buffer_store_event_hold): New function to store - an event into kbd fifo, but with special handling of quit event; - a quit event is saved for later, and further events are discarded - until the saved quit event has been processed. - (kbd_buffer_store_event): Use kbd_buffer_store_event_hold. - (gen_help_event): Store help event in kbd fifo. - (NREAD_INPUT_EVENTS): Remove. - (read_avail_input): Adapt to new read_socket_hook interface. - Remove allocation and initialization of local input_event buffer, - as read_socket_hook stores events directly in fifo. Allocate and - initialize local hold_quit event to handle postponed quit event - (and store it if set by kbd_buffer_store_event_hold). - - * keyboard.h (kbd_buffer_store_event_hold): Add prototype. - (gen_help_event): Fix prototype. - - * macterm.c (XTread_socket): Remove bufp_r and - numcharsp args. Add hold_quit arg. - Rework to use just one, local, inev input_event. Store inev - directly in fifo using kbd_buffer_store_event_hold. - - * sysdep.c (BUFFER_SIZE_FACTOR): Remove. - (read_input_waiting): Adapt to new read_socket_hook interface. - Remove allocation and initialization of local input_event buffer, - as read_socket_hook stores events directly in fifo. Allocate and - initialize local hold_quit event to handle postponed quit event - (and store it if set by kbd_buffer_store_event_hold). - - * term.c (read_socket_hook): Fix arg list. - - * termhooks.h (read_socket_hook): Fix prototype. - - * w32inevt.c (w32_console_read_socket): Remove bufp_r and - numcharsp args. Add hold_quit arg. - Rework to use just one, local, inev input_event. Store inev - directly in fifo using kbd_buffer_store_event_hold. - - * w32inevt.h (w32_console_mouse_position): Fix prototype. - - * w32term.c (w32_read_socket): Remove bufp_r and numcharsp args. - Add hold_quit arg. Rework to use just one, local, inev - input_event. Store inev directly in fifo using - kbd_buffer_store_event_hold. Update count in one place. - Postpone call to gen_help_event until inev is stored; use new - local do_help for this. - Remove local emacs_event in handing of ButtonPress event; just use - inev instead (so no reason to copy it later). - - * xsmfns.c (x_session_check_input): Remove numchars arg. - - * xterm.c (x_focus_changed, x_detect_focus_change): - Remove numchars arg. Always store event into bufp arg. - Return nothing. Callers changed accordingly. - (glyph_rect): Simplify. - (STORE_KEYSYM_FOR_DEBUG): New macro. - (SET_SAVED_MENU_EVENT): Use inev instead of bufp, etc. - (current_bufp, current_numcharsp) [USE_GTK]: Remove. - (current_hold_quit) [USE_GTK]: Add. - (event_handler_gdk): Adapt to new handle_one_xevent. - (handle_one_xevent): Remove bufp_r and numcharsp args. - Add hold_quit arg. Rework to use just one, local, inev - input_event. Store inev directly in fifo using - kbd_buffer_store_event_hold. Update count in one place. - Postpone call to gen_help_event until inev is stored; use new - local do_help for this. - Simplify handling of keysyms (consolidate common code). Fix bug - where count was updated with nchars instead of nbytes. - Remove local emacs_event in handing of ButtonPress event; just use - inev instead (so no reason to copy it later). - Remove `out' label. Rename label `ret' to `done'; add various - `goto done' to clarify code flow in deeply nested blocks. - (x_dispatch_event): Simplify as handle_one_xevent now calls - kbd_buffer_store_event itself. - (XTread_socket): Remove bufp_r and numcharsp args. Add hold_quit - arg. Call handle_one_xevent with new arglist. Store event from - x_session_check_input in fifo. - [USE_GTK]: Setup current_hold_quit. - Decrement handling_signal before unblocking input. - (x_initialize) [USE_GTK]: Initialize current_count. - - * xterm.h (x_session_check_input): Fix prototype. - -2004-02-26 YAMAMOTO Mitsuharu - - * s/darwin.h (LD_SWITCH_SYSTEM_TEMACS): Add `-framework QuickTime'. - - * dispextern.h [MAC_OSX]: Do not include Carbon/Carbon.h (now in - macgui.h). - - * emacs.c (main) [HAVE_CARBON]: Call init_xfns. - - * macgui.h [MAC_OSX]: Include Carbon/Carbon.h. - (mktime, DEBUG, Z, free, malloc, realloc, max, min) - (init_process) [MAC_OSX]: Avoid conflicts with Carbon/Carbon.h. - [!MAC_OSX]: Include QDOffscreen.h and Controls.h. - (INFINITY) [MAC_OSX]: Avoid conflict with definition in math.h. - (Bitmap): Remove typedef. - (Pixmap): Change int to GWorldPtr. - - * macmenu.c [MAC_OSX]: Don't include Carbon/Carbon.h (now in macgui.h). - - * macterm.h [MAC_OSX]: Don't include Carbon/Carbon.h (now in macgui.h). - (RED16_FROM_ULONG, GREEN16_FROM_ULONG, BLUE16_FROM_ULONG): - New #define to extract 16-bit depth color components from unsigned - long representation. - (PIX_MASK_DRAW, PIX_MASK_RETAIN): New #define to represent pixel - colors used for masks. - (struct mac_display_info): Add color_p. Remove n_cbits. - - * macfns.c: Include sys/types.h and sys/stat.h. - [MAC_OSX]: Do not include Carbon/Carbon.h (now in macgui.h). - Include QuickTime/QuickTime.h. - (XCreatePixmap, XCreatePixmapFromBitmapData, XFreePixmap) - (XSetForeground, mac_draw_line_to_pixmap): Add externs for - functions defined in macterm.c. - (XImagePtr): New typedef. Corresponds to XImage * in xfns.c. - (ZPixmap): New #define for compatibility with xfns.c. - (XGetImage, XPutPixel, XGetPixel, XDestroyImage) - (x_create_x_image_and_pixmap, x_destroy_x_image, x_put_x_image) - (find_image_fsspec, image_load_qt_1, image_load_quicktime): - New functions. - (four_corners_best, x_create_x_image_and_pixmap) - (x_destroy_x_image, unwind_create_frame, x_disable_image) - (x_edge_detection, init_color_table, colors_in_color_table) - (lookup_rgb_color, lookup_pixel_color, postprocess_image) - (x_put_x_image, slurp_file, xbm_scan, xbm_load, xbm_load_image) - (xbm_image_p, xbm_read_bitmap_data, xbm_file_p, x_to_xcolors) - (x_from_xcolors, x_detect_edges): New declarations (from xfns.c). - (mac_color_map_lookup, x_to_mac_color): Fix Lisp_Object/unsigned - long mixup. - (mac_defined_color, x_to_x_colors): Use RED16_FROM_ULONG etc. - (x_decode_color): Don't use n_cbits (in struct mac_display_info). - (x_set_foreground_color, x_set_cursor_color): Sync with w32fns.c. - (x_set_cursor_type, Fxw_color_values, valid_image_p) - (image_value_type, parse_image_spec, image_ascent, x_clear_image) - (x_alloc_image_color, clear_image_cache, lookup_image) - (x_find_image_file, xbm_read_bitmap_file_data) - (enum xbm_keyword_index, xbm_format, xbm_image_p, xbm_scan) - (xbm_read_bitmap_data, xbm_load, pbm_image_p, pbm_scan_number) - (enum pbm_keyword_index, pbm_format, enum png_keyword_index) - (png_format, png_image_p, enum jpeg_keyword_index, jpeg_format) - (jpeg_image_p, enum tiff_keyword_index, tiff_format, tiff_image_p) - (enum gif_keyword_index, gif_format, gif_image_p): Sync with xfns.c. - (x_make_gc): Sync with xfns.c. Enclose unused `border_tile' with - #if 0. - (x_free_gcs): Sync with xfns.c. Enclose unused `border_tile' with - #if 0. Free white_relief.gc and black_relief.gc. - (unwind_create_frame, x_emboss, x_laplace, x_edge_detection): - New functions (from xfns.c). - (Fx_create_frame): Record unwind_create_frame. - (Fxw_display_color_p): Use dpyinfo->color_p. - (Fx_display_grayscale_p, Fx_display_planes): Don't use - dpyinfo->n_cbits. - (Fx_display_color_cells): Use dpyinfo->n_planes; - (QCmatrix, QCcolor_adjustment, QCmask, Qemboss, Qedge_detection) - (Qheuristic, cross_disabled_images, emboss_matrix) - (laplace_matrix): New variables (from xfns.c). - (Fimage_size, Fimage_mask_p, four_corners_best, image_background) - (x_clear_image_1, postprocess_image, slurp_file, xbm_load_image) - (xbm_file_p, x_to_xcolors, x_from_xcolors, x_detect_edges) - (image_background_transparent): New function (from xfns.c). - Use PIX_MASK_DRAW/PIX_MASK_RETAIN. - (image_load_quicktime): Add declaration. - [MAC_OSX] (image_load_quartz2d): Likewise. - [MAC_OSX] (CGImageCreateWithPNGDataProviderProcType): New typedef. - [MAC_OSX] (MyCGImageCreateWithPNGDataProvider): New variable. - [MAC_OSX] (init_image_func_pointer, image_load_quartz2d): New funs. - (xbm_load_image_from_file, x_laplace_read_row) - (x_laplace_write_row, pbm_read_file): Remove functions. - [HAVE_XPM] (enum xpm_keyword_index, xpm_format, xpm_image_p) - (xpm_load): Sync with xfns.c (although XPM is not supported yet). - (colors_in_color_table): Sync with xfns.c (although not used). - (lookup_rgb_color): Don't lookup color table. Just do gamma - correction. - (COLOR_INTENSITY): New #define (from xfns.c). - (x_disable_image): New function (from xfns.c). - Use PIX_MASK_DRAW/PIX_MASK_RETAIN. - (x_build_heuristic_mask): Sync with xfns.c. - Use PIX_MASK_DRAW/PIX_MASK_RETAIN. - (HAVE_PBM): Remove #ifdef. - (pbm_load): Sync with xfns.c. Set img->width and img->height - before IMAGE_BACKGROUND. - (png_image_p, png_load): Don't enclose declarations with #if HAVE_PNG. - (Qpng, enum png_keyword_index, png_format, png_type, png_image_p): - Don't enclose with #if HAVE_PNG. - [!HAVE_PNG] (png_load) [MAC_OSX]: Use image_load_quartz2d if a - symbol _CGImageCreateWithPNGDataProvider is defined. - Otherwise use image_load_quicktime. - [!HAVE_PNG] (png_load) [!MAC_OSX]: Use image_load_quicktime. - [HAVE_PNG] (png_load): Sync with xfns.c. - Use PIX_MASK_DRAW/PIX_MASK_RETAIN. - (jpeg_image_p, jpeg_load): Don't enclose declarations with #if - HAVE_JPEG. - (Qjpeg, enum jpeg_keyword_index, jpeg_format, jpeg_type) - (jpeg_image_p): Don't enclose with #if HAVE_JPEG. - [!HAVE_JPEG] (jpeg_load) [MAC_OSX]: Use image_load_quartz2d. - [!HAVE_JPEG] (jpeg_load) [!MAC_OSX]: Use image_load_quicktime. - [HAVE_JPEG] (jpeg_load): Sync with xfns.c. - (tiff_image_p, tiff_load): Don't enclose declarations with #if - HAVE_TIFF. - (Qtiff, enum tiff_keyword_index, tiff_format, tiff_type) - (tiff_image_p): Don't enclose with #if HAVE_TIFF. - [!HAVE_TIFF] (tiff_load): Use image_load_quicktime. - [HAVE_TIFF] (tiff_error_handler, tiff_warning_handler): - New functions (from xfns.c). - [HAVE_TIFF] (tiff_load): Sync with xfns.c. - (gif_image_p, gif_load): Don't enclose declarations with #if HAVE_GIF. - (Qgif, enum gif_keyword_index, gif_format, gif_type, gif_image_p): - Don't enclose with #if HAVE_GIF. - [!HAVE_GIF] (gif_load): Use Quicktime Movie Toolbox if it is - animated gif. Otherwise use image_load_quicktime. - [HAVE_GIF] (gif_lib.h): Temporarily define DrawText as - gif_DrawText to avoid conflict with QuickdrawText.h. - [HAVE_GIF] (gif_load): Sync with xfns.c. - (enum gs_keyword_index, gs_format, gs_image_p, gs_load) - [HAVE_GHOSTSCRIPT] (x_kill_gs_process): Sync with xfns.c (although - Ghostscript is not supported yet). - (syms_of_macfns): Initialize Qemboss, Qedge_detection, Qheuristic, - QCmatrix, QCcolor_adjustment, and QCmask. Add DEFVAR_BOOL - cross_disabled_images (from xfns.c). Remove #if 0 for supported - image types. Remove #if HAVE_JPEG, HAVE_TIFF, HAVE_GIF, and - HAVE_PNG. Add defsubr for Simage_size and Simage_mask_p. - (init_xfns): Remove #if HAVE_JPEG, HAVE_TIFF, HAVE_GIF, and - HAVE_PNG. Call EnterMovies to support animated gifs. - Call init_image_func_pointer to bind a symbol - _CGImageCreateWithPNGDataProvider if it is defined. - - * macterm.c [MAC_OSX]: Don't include Carbon/Carbon.h (now in macgui.h). - (x_draw_bar_cursor): Sync declaration with xterm.c. - (XFreePixmap, mac_draw_rectangle_to_pixmap, mac_copy_area) - (mac_copy_area_to_pixmap): Implementation with GWorld (offscreen - graphics). - (mac_set_forecolor, mac_set_backcolor): Use RED16_FROM_ULONG etc. - (mac_draw_line_to_pixmap, XCreatePixmap) - (XCreatePixmapFromBitmapData, mac_fill_rectangle_to_pixmap) - (mac_copy_area_with_mask, mac_copy_area_with_mask_to_pixmap): - New functions. - (mac_draw_bitmap) [TARGET_API_MAC_CARBON]: - Use GetPortBitMapForCopyBits instead of the cast to Bitmap *. - Cast bits to char *. - (reflect_byte): New function (from w32fns.c). - (mac_create_bitmap_from_bitmap_data): Use it and don't stuff bits - due to byte alignment. - (mac_scroll_area) [TARGET_API_MAC_CARBON]: - Use GetPortBitMapForCopyBits instead of the cast to Bitmap *. - (XSetForeground): Remove static (now used in macfns.c). - (HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New #define (from w32term.c). - (mac_alloc_lighter_color, x_destroy_window): Sync with w32term.c. - (x_setup_relief_color, x_setup_relief_colors, x_draw_box_rect) - (x_draw_glyph_string_box, x_draw_image_foreground) - (x_draw_image_foreground_1, x_draw_image_glyph_string) - (x_draw_stretch_glyph_string, x_draw_glyph_string) - (x_draw_hollow_cursor, x_draw_bar_cursor, mac_draw_window_cursor): - Sync with xterm.c. - (x_draw_relief_rect): Sync with xterm.c. Make 1 pixel shorter - than the xterm.c version when a strictly horizontal or vertical - line is drawn. - (XTset_terminal_window): Add static. - (x_make_frame_visible): Add UNBLOCK_INPUT. - (x_free_frame_resources): New funcion (from xterm.c). - (XTread_socket): Call handle_tool_bar_click if mouse up/down event - occurs in tool bar area. - (mac_initialize_display_info): Remove dpyinfo->n_cbits. - Set dpyinfo->color_p. Determine dpyinfo->n_planes using HasDepth. - Initialize image cache. - (stricmp, wildstrieq, mac_font_pattern_match, mac_font_match): - Enclose unused functions with #if 0. - (Qbig5, Qcn_gb, Qsjis, Qeuc_kr): New variables. - (decode_mac_font_name): New function to apply code conversions - from a mac font name to an XLFD font name according to its script code. - (x_font_name_to_mac_font_name): Apply code conversion from an XLFD - font name to a mac font name according to REGISTRY and ENCODING fields. - (init_font_name_table) [TARGET_API_MAC_CARBON]: Don't use a font - whose name starts with `.'. - (init_font_name_table): Use decode_mac_font_name. Add both - jisx0208.1983-sjis and jisx0201.1976-0 entries if the script code - of a font is smJapanese. - (mac_do_list_fonts): New function to list fonts that match a given - pattern. - (x_list_fonts, XLoadQueryFont): Use it. - (XLoadQueryFont): Set rbearing field for each variable width - character to avoid needless redraw. - (syms_of_macterm): Initialize Qbig5, Qcn_gb, Qsjis, and Qeuc_kr. - -2004-02-26 Kim F. Storm - - * keyboard.c (NREAD_INPUT_EVENTS): Temporarily increase to 512 - as read_socket_hook handler on X aborts if buffer is too small - and W32 handler doesn't always check buffer limit. - - * xdisp.c (handle_single_display_prop): Handle left-fringe and - right-fringe similar to a display margin image. Specifically, - the characters having the fringe prop are no longer shown, and - we use IT_IMAGE/next_element_from_image with image_id = -1 to - do this. Set fringe bitmap face_id in it->face_id. - (produce_image_glyph): Handle image_id < 0 as "no image" case, but - still realize it->face (i.e. the fringe bitmap face). - -2004-02-25 Miles Bader - - * xdisp.c (check_it): Check string/string_pos consistency. - (init_iterator): Initialize string-related fields properly. - -2004-02-11 Miles Bader - - * xdisp.c (produce_image_glyph): Force negative descents to zero. - -2004-02-10 Miles Bader - - * xfns.c (lookup_image): Remove xassert(!interrupt_input_blocked); - BLOCK_INPUT can be nested, so it doesn't make much sense. - -2004-02-24 Michael Mauger - - * w32fns.c (slurp_file, xbm_scan, xbm_load_image) - (xbm_read_bitmap_data): Use unsigned char for image data. - -2004-02-23 Luc Teirlinck - - * abbrev.c (Finsert_abbrev_table_description): Doc fix. - -2004-02-22 Jason Rumney - - * w32term.c (w32_draw_fringe_bitmap): Draw overlaid bitmaps - correctly over other bitmaps. - -2004-02-21 Eli Zaretskii - - * emacs.c (USAGE1): Split into two halves. - (USAGE2): Second half of the old USAGE1. - (USAGE3): Rename from USAGE2. - (USAGE4): Rename from USAGE3. - -2004-02-21 Juri Linkov - - * emacs.c (USAGE1): Add --no-desktop. Move --display from USAGE2. - Fix --multibyte. Move --help, --version to USAGE2. Add alias - --file. Fix -f, -l. Sort options. Untabify. - (USAGE2): Add -hb. Fix --name, --title. Sort options. Untabify. - -2004-02-19 Luc Teirlinck - - * category.c (Fdefine_category, Fcategory_docstring) - (Fget_unused_category, Fset_category_table) - (Fcategory_set_mnemonics): Doc fixes. - -2004-02-20 Kim F. Storm - - * keyboard.c: Undo 2004-02-16 and 2004-02-17 changes. - The following changes are relative to the 2004-01-21 revision. - (NREAD_INPUT_EVENTS): Define as max number of input events to read - in one call to read_socket_hook. Value is 8. - (read_avail_input): Separate and rework handling of read_socket_hook - and non-read_socket_hook cases. Use smaller input_event buffer - in read_socket_hook case, and repeat if full buffer is read. - Use new local variable 'discard' to skip input after C-g. - In non-read_socket_hook case, just use a single input_event, and - call kbd_buffer_store_event on the fly for each character. - -2004-02-19 Stefan Monnier - - * lisp.h (union Lisp_Object): Give a more precise type for `type'. - Remove unused `gu' alternative. - -2004-02-19 Andreas Schwab - - * fringe.c (Fdefine_fringe_bitmap): Use && instead of & to avoid - warning. - -2004-02-18 Kim F. Storm - - * xdisp.c (get_window_cursor_type, display_and_set_cursor): - Fix last change. - -2004-02-17 Kim F. Storm - - * xdisp.c (fast_find_position): Fix return value of new version; - it was inverted compared to the 21.1 version. - (get_window_cursor_type): Don't look at glyph if NULL. - (display_and_set_cursor): Set glyph to NULL if cursor in fringe. - - * keyboard.c: Rework previous change; it didn't consider that the - buf array was allocated on the stack. - (prev_read): Remove variable. - (read_avail_input_buf): New static event buffer array. - (in_read_avail_input): New static variable to handle re-entrancy. - (read_avail_input): Change buf to pinter to read_avail_input_buf. - Use in_read_avail_input to handle re-entrance; when re-entered, - fully initialize and use tmp_buf array instead of read_avail_input_buf. - Do not initialize read_avail_input_buf in full here; instead assume it - is always cleared on entry. To ensure that, we clear (just) the - entries that were used before we return. - (init_keyboard): Initialize read_avail_input_buf here. - -2004-02-16 Jesper Harder - - * cmds.c (Fend_of_line): Doc fix. - -2004-02-16 Dmitry Antipov (tiny change) - - * keyboard.c (prev_read): New static variable. - (read_avail_input): Use it to zero out only those slots in buf[] - that were used last time we were called. - -2004-02-16 Eli Zaretskii - - * Makefile.in (obj): Move fringe.o from here... - (XOBJ, MAC_OBJ): ...to here. - -2004-02-16 Stephen Eglen - - * fringe.c (init_fringe_bitmap): Define j in MAC_OS code. - -2004-02-15 Stefan Monnier - - * data.c (Fbyteorder): - * fringe.c (Fdefine_fringe_bitmap): - * xdisp.c (handle_single_display_prop): - * xselect.c (x_handle_dnd_message): Lisp_Object/int mixup. - -2004-02-16 Jason Rumney - - * w32term.c (w32_draw_fringe_bitmap): Handle overlay fringe bitmaps. - -2004-02-15 Steven Tamm - - * macterm.c (Vmac_emulate_three_button_mouse): New variable for - controlling emulation of a three button mouse with option and - command keys. - (Qreverse, mac_get_enumlated_btn): Handle the emulation. - (mac_event_to_emacs_modifiers, XTread_socket): Ditto. - -2004-02-15 Kim F. Storm - - * buffer.c (syms_of_buffer): Doc fix for indicate-buffer-boundaries. - - * fringe.c (init_fringe_bitmap) [MAC_OS, WORDS_BIG_ENDIAN]: - Perform byte-swapping. - -2004-02-14 Kim F. Storm - - * dispextern.h (struct draw_fringe_bitmap_params): Change member - bits from char to short to facilitate wider bitmaps. - (struct redisplay_interface): Fix prototype of define_fringe_bitmap - member. - - * fringe.c (struct fringe_bitmap): Change member bits from char to - short to facilitate 16 bits wide bitmaps. Modify all standard - bitmaps accordingly. - (BYTES_PER_BITMAP_ROW, STANDARD_BITMAP_HEIGHT): New macros. - (FRBITS): Use STANDARD_BITMAP_HEIGHT instead of just sizeof. - (draw_fringe_bitmap): Ditto. - (init_fringe_bitmap) [MAC_OS]: Don't bitswap. - (init_fringe_bitmap) [HAVE_X_WINDOWS]: Enhance bitswapping to - handle up to 16 bits wide bitmaps. - (Fdefine_fringe_bitmap): Doc fix. Handle wider bitmaps. - (Ffringe_bitmaps_at_pos): Add missing arg declarations. - - * macterm.c (mac_draw_bitmap): Handle 16 bits wide bitmaps directly. - (x_draw_fringe_bitmap): Use enhanced mac_draw_bitmap, so we no longer - need to call mac_create_bitmap_from_bitmap_data and mac_free_bitmap. - - * w32term.c (w32_define_fringe_bitmap): Bitmaps are now 16 bits wide, - so it is no longer necessary to expand them here. - - * xterm.c (x_draw_fringe_bitmap): Handle wider bitmaps (max 16 bits). - -2004-02-12 Kim F. Storm - - * window.c (Fwindow_fringes): Doc fix. - -2004-02-10 Jan Dj,Ad(Brv - - * xselect.c (x_get_foreign_selection): Add new optional parameter - time_stamp. - (Fx_get_selection_internal): Ditto, pass time_stamp to - x_get_foreign_selection. - - * data.c (Fbyteorder): New function. - -2004-02-09 Jan Dj,Ad(Brv - - * atimer.c: Move include stdio.h to same place as in other files. - - * region-cache.c: Ditto. - - * sysdep.c: Ditto. - - * xfaces.c: Ditto. - -2004-02-09 Sam Steingold - - * w32term.c (w32_draw_fringe_bitmap): Fix a typo in the last patch. - -2004-02-09 Kim F. Storm - - * fringe.c: New file. Move original fringe related declarations - and code from dispextern.h and xdisp.c here. - Rework code to support user defined fringe bitmaps, redefining - standard bitmaps, ability to overlay user defined bitmap with - overlay arrow bitmap, and add faces to bitmaps. - (Voverflow_newline_into_fringe): Declare here. - (enum fringe_bitmap_align): New enum. - (..._bits): All bitmaps are now defined without bitswapping; that - is now done in init_fringe_once (if necessary). - (standard_bitmaps): New array with specifications for the - standard fringe bitmaps. - (fringe_faces): New array. - (valid_fringe_bitmap_id_p): New function. - (draw_fringe_bitmap_1): Rename from draw_fringe_bitmap. - (draw_fringe_bitmap): New function which draws fringe bitmap, - possibly overlaying bitmap with cursor in right fringe or the - overlay arrow in the left fringe. - (update_window_fringes): Do not handle overlay arrow here. - Compare and copy fringe bitmap faces. - (init_fringe_bitmap): New function. - (Fdefine_fringe_bitmap, Fdestroy_fringe_bitmap): New DEFUNs to - define and destroy user defined fringe bitmaps. - (Fset_fringe_bitmap_face): New DEFUN to set face for a fringe bitmap. - (Ffringe_bitmaps_at_pos): New DEFUN to read current fringe bitmaps. - (syms_of_fringe): New function. Defsubr new DEFUNs. - DEFVAR_LISP Voverflow_newline_into_fringe. - (init_fringe_once, init_fringe): New functions. - (w32_init_fringe, w32_reset_fringes) [WINDOWS_NT]: New functions. - - * Makefile.in (obj): Add fringe.o. - (fringe.o): New dependencies. - - * dispextern.h (FRINGE_ID_BITS): New definition for number of - bits allocated to hold a fringe number. Increase number of bits - from 4 to 8 to allow user defined fringe bitmaps. - (struct glyph_row, struct it): New members left_user_fringe_bitmap, - left_user_fringe_face_id, right_user_fringe_bitmap, - right_user_fringe_face_id. - (enum fringe_bitmap_type, struct fringe_bitmap, fringe_bitmaps): - Move to new file fringe.c. - (MAX_FRINGE_BITMAPS): Define here. - (struct draw_fringe_bitmap_params): New members bits, cursor_p, - and overlay_p. Change member which to int. - (struct redisplay_interface): New members define_fringe_bitmap - and destroy_fringe_bitmap. - (valid_fringe_bitmap_id_p): Add prototype. - (w32_init_fringe, w32_reset_fringes) [WINDOWS_NT]: Add prototypes. - - * dispnew.c (row_equal_p): Compare fringe bitmap faces and overlay - arrows. - (update_frame): Do flush_display if force_flush_display_p to - ensure display (specifically fringes) are updated in a timely - manner when resizing the frame by dragging the mouse. - (update_window_line): Update row if overlay arrow changed. - (scrolling_window): Redraw fringe bitmaps if fringe bitmap faces - or overlay arrow changed. - - * emacs.c (main) [HAVE_WINDOW_SYSTEM]: Call init_fringe_once, - syms_of_fringe, and init_fringe. - - * frame.h (struct frame): New member force_flush_display_p. - - * lisp.h (syms_of_fringe, init_fringe, init_fringe_once): - Add prototypes. - - * macterm.c (mac_draw_bitmap): Add overlay_p arg. - (x_draw_fringe_bitmap): Handle overlayed fringe bitmaps; - thanks to YAMAMOTO Mitsuharu for advice on how to do this. - Use cursor color for displaying cursor in fringe. - (x_redisplay_interface): Add null handlers for - define_fringe_bitmap and destroy_fringe_bitmap functions. - - * w32term.c (w32_draw_fringe_bitmap): Copy unadapted code from - xterm.c to handle overlayed fringe bitmaps and to use cursor color - for displaying cursor in fringe. - (w32_define_fringe_bitmap, w32_destroy_fringe_bitmap): New W32 - specific functions to define and destroy fringe bitmaps in fringe_bmp. - (w32_redisplay_interface): Add them to redisplay_interface. - (w32_term_init): Call w32_init_fringe instead of explicitly - defining fringe bitmaps in fringe_bmp array. - (x_delete_display): Call w32_reset_fringes instead of explicitly - destroying fringe bitmaps in fringe_bmp array. - - * xdisp.c (Voverflow_newline_into_fringe, syms_of_xdisp) - (left_bits, right_bits, up_arrow_bits, down_arrow_bits) - (continued_bits, continuation_bits, ov_bits, first_line_bits) - (last_line_bits, filled_box_cursor_bits, hollow_box_cursor_bits) - (bar_cursor_bits, hbar_cursor_bits, zv_bits, hollow_square_bits) - (fringe_bitmaps, draw_fringe_bitmap, draw_row_fringe_bitmaps) - (draw_window_fringes, compute_fringe_widths, update_window_fringes): - Move fringe handling vars and code to new file fringe.c. - (handle_display_prop): Handle left-fringe and right-fringe - display properties; store user fringe bitmaps in iterator. - (move_it_in_display_line_to): Handle cursor in fringe at eob. - (clear_garbaged_frames): Set force_flush_display_p if resized. - (redisplay_window): Redraw fringe bitmaps if not just_this_one_p. - (display_line): Handle cursor in fringe at eob. - (display_line): Set row user fringe bitmaps from iterator. - - * xterm.c (x_draw_fringe_bitmap): Handle overlayed fringe bitmaps. - Use cursor color for displaying cursor in fringe. - (x_redisplay_interface): Add null handlers for - define_fringe_bitmap and destroy_fringe_bitmap functions. - -2004-02-07 Jan Dj,Ad(Brv - - * macfns.c (Fx_change_window_property): Make doc string and - parameters same as for X version. - - * w32fns.c (Fx_change_window_property): Ditto. - -2004-02-07 Kim F. Storm - - * xdisp.c (hscroll_window_tree): Position cursor near to right - margin in hscrolled window when jumping to end of line (rather - than centering cursor). - - * process.c (wait_reading_process_input): Don't do adaptive read - buffering if waiting for a specific process. - -2004-02-05 Luc Teirlinck - - * minibuf.c (Fminibufferp, Fread_from_minibuffer) - (Fread_minibuffer, Feval_minibuffer) - (Fread_string, Fread_no_blanks_input) - (Fcompleting_read): Doc fixes. - (syms_of_minibuf): Doc fixes for minibuffer-completion-table and - completion-regexp-list. Define Qcase_fold_search and staticpro it. - (read_minibuf): Fix initial comment. - (Ftry_completion, Fall_completions, Ftest_completion): Bind - case-fold-search to the value of completion-ignore-case when - checking completion-regexp-list. - (Fdisplay_completion_list): Make it handle arguments that are - symbols. Doc fix. - -2004-02-05 Jan Dj,Ad(Brv - - * xterm.h: Add declaration of free_frame_menubar. - - * xfns.c (x_create_bitmap_mask): Removed unused variable depth. - (x_set_menu_bar_lines): Added ! defined USE_GTK for olines. - (Fx_change_window_property): Add declaration of parameters type and - format. Remove unused variable cons. - - * xselect.c: Include stdio.h. - -2004-02-05 Kenichi Handa - - * fns.c (Fset_char_table_range): Fix previous change. - - * buffer.c (Fset_buffer_multibyte): Fix docstring. - -2004-02-04 Luc Teirlinck - - * editfns.c (Fchar_after, Fchar_before): Doc fixes. - -2004-02-04 Stefan Monnier - - * keymap.c (Vmouse_events): Rename from Vmenu_events. - (syms_of_keymap): Add mouse-[45], header-line, and mode-line to it. - -2004-02-04 Kenichi Handa - - * fns.c (Fset_char_table_range): Handle charsets ascii, - eight-bit-control, and eight-bit-graphic correctly. - -2004-02-03 Jason Rumney - - * w32select.c (Fw32_set_clipboard_data): Make coding iso2022 safe. - - * w32fns.c (x_to_w32_font): Likewise. - -2004-02-03 Jan Dj,Ad(Brv - - * xterm.h: Add x_handle_dnd_message, x_check_property_data, - x_fill_property_data, x_property_data_to_lisp and check_x_display_info. - - * xterm.c (handle_one_xevent): Call x_handle_dnd_message for - ClientMessages. - - * xselect.c: Include termhooks.h and X11/Xproto.h. - (x_check_property_data, x_fill_property_data) - (x_property_data_to_lisp, mouse_position_for_drop) - (Fx_get_atom_name, x_handle_dnd_message): New functions for DND support. - (Fx_send_client_event): Move here from xfns.c. - (syms_of_xselect): Add Sx_get_atom_name and Sx_send_client_message. - - * xfns.c (x-send-client-message): Move to xselect.c. - (Fx_change_window_property): Add optional arguments TYPE, FORMAT and - OUTER_P. - (Fx_window_property): Add optional arguments TYPE, SOURCE, DELETE_P, - VECTOR_RET_P. Handle AnyPropertyType. Call x_property_data_to_lisp - if vector_ret_p is true. - (syms_of_xfns): Sx_send_client_message moved to xselect.c. - -2004-02-02 Eli Zaretskii - - * fileio.c (Fcopy_file): If NEWNAME is a directory, expand the - basename of FILE relative to it, not FILE itself. - -2004-02-02 Kenichi Handa - - * coding.c (coding_restore_composition): Check invalid - composition data more rigidly. - -2004-01-30 Luc Teirlinck - - * fileio.c (Fread_file_name_internal): Correctly handle the case - where insert-default-directory is nil. - (Fread_file_name): Always return an empty string if the user exits - with an empty minibuffer. Adapt the docstring accordingly. - (syms_of_fileio): Adapt the docstring of insert-default-directory - to the change in Fread_file_name. - -2004-01-29 Eli Zaretskii - - * alloca.c [!alloca]: Fix the prototype for xfree. - -2004-01-29 Kenichi Handa - - * fns.c (string_char_to_byte): Optimize for ASCII only string. - (string_byte_to_char): Likewise. - -2004-01-28 Peter Runestig - - * makefile.w32-in, w32fns.c: Add `default-printer-name' function. - -2004-01-27 Steven Tamm - - * unexmacosx.c (unexec_copy): Do not copy more than was - requested to prevent overwriting during unexec. - -2004-01-27 Jan Dj,Ad(Brv - - * process.c (sigchld_handler): Add comment about not calling malloc. - - * process.h: Add extern to synch_process_termsig. - -2004-01-27 Steven Tamm - - * macterm.c (make_mac_frame, make_mac_terminal_frame): - Move setting of scroll bars from make_mac_frame to - make_mac_terminal_frame to prevent clobbering of scroll-bar-mode. - -2004-01-26 Richard M. Stallman - - * search.c (Freplace_match): Handle nonexistent - back-references properly. - -2004-01-03 Richard M. Stallman - - * window.c (decode_any_window): New function. - (Fwindow_height, Fwindow_width, Fwindow_edges) - (Fwindow_pixel_edges, Fwindow_inside_edges) - (Fwindow_inside_pixel_edges): Use decode_any_window. - -2004-01-27 Jan Dj,Ad(Brv - - * process.h: synch_process_termsig new variable. - - * callproc.c: Define synch_process_termsig. - (Fcall_process): Initiate synch_process_termsig to zero and - check if non-zero and get signal name after subprocess has ended. - - * process.c (sigchld_handler): Set synch_process_termsig - if terminated by a signal. synch_process_death setting removed. - - * sysdep.c (mkdir, rmdir): Also check synch_process_termsig. - -2004-01-26 Andreas Schwab - - * print.c (print_preprocess): Declare size as EMACS_INT to not - lose bits. - (print_object): Likewise. - * alloc.c (Fpurecopy): Likewise. - -2004-01-25 Luc Teirlinck - - * window.c (Fwindow_minibuffer_p): Doc fix. - -2004-01-24 Jonathan Yavner - - * editfns.c (Fformat): Make both passes accept the same set of flags. - -2004-01-23 Kenichi Handa - - * fns.c (Fmd5): If OBJECT is a buffer different from the current - one, set buffer to OBJECT temporarily. - -2004-01-21 Stefan Monnier - - * keyboard.c (kbd_buffer_gcpro): Remove. - (kbd_buffer_store_event, clear_event, Fdiscard_input) - (stuff_buffered_input, init_keyboard, syms_of_keyboard): - Don't initialize and/or maintain the variable any more. It was made - redundant by my commit of 2003-06-15. - - * lisp.h [USE_LSB_TAG && !DECL_ALIGN]: Signal an error. - -2004-01-21 Jan Dj,Ad(Brv - - * lisp.h: Add undef DECL_ALIGN. - -2004-01-21 Stefan Monnier - - * process.c (wait_reading_process_input) [SYNC_INPUT]: - Check interrupt_input_pending explicitly. - - * lisp.h (QUIT) [SYNC_INPUT]: Check interrupt_input_pending as well. - - * keyboard.c (handle_async_input): New fun, - extracted from input_available_signal. - (input_available_signal, reinvoke_input_signal): Use it. - -2004-01-20 Stefan Monnier - - * buffer.c (buffer_defaults, buffer_local_symbols): Use DECL_ALIGN. - - * lisp.h [USE_LSB_TAG]: Add definitions for Lisp_Object value - manipulation macros for when tags are in the lower bits. - (struct Lisp_Free) [USE_LSB_TAG]: Add padding. - (DECL_ALIGN): New macro. - (DEFUN): Use it. - - * lisp.h [ENABLE_CHECKING]: Don't force union type. - - * s/darwin.h (__attribute__): Remove outdated workaround. - - * macterm.c (main) [USE_LSB_TAG]: Don't range check the ram. - - * alloc.c (lisp_malloc, lisp_align_malloc) [USE_LSB_TAG]: - Don't check range of malloc address. - (pure_alloc) [USE_LSB_TAG]: Enforce alignment. - - * process.c (wait_reading_process_input): Lisp_Object/int mixup. - - * dired.c (Ffile_attributes): Lisp_Object/int mixup. - -2004-01-19 Kenichi Handa - - * fontset.c (fontset_font_pattern): Fix previous change. - -2004-01-16 Miles Bader - - * xdisp.c (Voverflow_newline_into_fringe) - (move_it_in_display_line_to, redisplay_internal) - (update_window_fringes, redisplay_window, display_line, window): - Add `#ifdef HAVE_WINDOW_SYSTEM' around fringe-drawing stuff, so - that it compiles without a window-system. - * dispnew.c (direct_output_for_insert, update_window): Likewise. - -2004-01-16 Kim F. Storm - - * buffer.h (struct buffer): New member indicate_buffer_boundaries. - - * buffer.c (init_buffer_once): Set buffer_defaults and - buffer_local_flags for indicate_buffer_boundaries. - (syms_of_buffer): Defvar_per_buffer it, and defvar_lisp_nopro - default- variable for it. - - * dispextern.h (struct glyph_row): New members left_fringe_bitmap, - right_fringe_bitmap, redraw_fringe_bitmaps_p for new fringe handling. - New members exact_window_width_line_p and cursor_in_fringe_p for - overflowing newlines into right fringe. - New members indicate_bob_p, indicate_top_line_p, indicate_eob_p, - and indicate_bottom_line_p for buffer boundaries and scrolling. - (enum fringe_bitmap_type): Add UP_ARROW_BITMAP, DOWN_ARROW_BITMAP, - FIRST_LINE_BITMAP, LAST_LINE_BITMAP, FILLED_BOX_CURSOR_BITMAP, - HOLLOW_BOX_CURSOR_BITMAP, BAR_CURSOR_BITMAP, HBAR_CURSOR_BITMAP, - and HOLLOW_SQUARE_BITMAP. - (draw_fringe_bitmap, draw_window_fringes, update_window_fringes): - Add prototypes. - - * dispnew.c (row_equal_p, update_window_line): Compare fringe bitmaps - instead of related indicator fields. - Compare exact_window_width_line_p and cursor_in_mouse_face_p indicators. - (direct_output_for_insert): Handle exact width lines like - contined lines. Call update_window_fringes. - (update_window): Call update_window_fringes. - (scrolling_window): Don't skip desired rows with changed bitmaps. - Check if fringe bitmaps changes when assigning scrolled rows. - - * xdisp.c (Voverflow_newline_into_fringe): New variable. - (IT_OVERFLOW_NEWLINE_INTO_FRINGE): New macro. - (move_it_in_display_line_to): Overflow newline into fringe for - rows that are exactly as wide as the window. - (up_arrow_bits, down_arrow_bits, first_line_bits, last_line_bits) - (filled_box_cursor_bits, hollow_box_cursor_bits, bar_cursor_bits) - (hbar_cursor_bits, hollow_square_bits): New fringe bitmaps. - (fringe_bitmaps): Add new bitmaps. - (draw_fringe_bitmap): Make extern. Remove WHICH arg. - Select proper bitmap for cursor in fringe when appropriate. - Handle alignment of bitmap to top or bottom of row. - (draw_row_fringe_bitmaps): Don't select bitmaps here; that is now - done by update_window_fringes. - (update_window_fringes, draw_window_fringes): New functions. - (redisplay_internal): Call update_window_fringes in case only - cursor row is updated. - (redisplay_window): Call update_window_fringes. - Explicitly call draw_window_fringes if redisplay was done using - the current matrix or the overlay arrow is in the window. - (try_window_reusing_current_matrix): Mark scrolled rows for - fringe update (to update buffer-boundaries / scrolling icons). - (find_last_unchanged_at_beg_row): Handle exact width lines line - continued lines. - (display_line): Overflow newline into fringe for rows that are - exactly as wide as the window. Don't append space for newline - in this case. - (notice_overwritten_cursor): Explicitly clear cursor bitmap - in fringe as if it had been overwritten. - (erase_phys_cursor): Erase cursor bitmap in fringe. - (syms_of_xdisp): Mark show-trailing-whitespace and - void-text-area-pointer as user options. - DEFVAR_LISP Voverflow_newline_into_fringe. Enable by default. - - * xterm.c (x_update_window_end): Call draw_window_fringes. - (x_after_update_window_line): Just set redraw_fringe_bitmaps_p - in row instead of actually drawing fringe bitmaps. - (x_draw_fringe_bitmap): Handle bottom aligned bitmaps. - (x_draw_window_cursor): Draw cursor in fringe. - - * w32term.c (x_update_window_end): Call draw_window_fringes. - (x_after_update_window_line): Just set redraw_fringe_bitmaps_p - in row instead of actually drawing fringe bitmaps. - (w32_draw_fringe_bitmap): Handle bottom aligned bitmaps. - (w32_draw_window_cursor): Draw cursor in fringe. - - * macterm.c (x_update_window_end): Call draw_window_fringes. - (x_after_update_window_line): Just set redraw_fringe_bitmaps_p - in row instead of actually drawing fringe bitmaps. - (x_draw_fringe_bitmap): Handle bottom aligned bitmaps. - (mac_draw_window_cursor): Draw cursor in fringe. - -2004-01-16 Jan Dj,Ad(Brv - - * xterm.c (handle_one_xevent): Don't handle characters that are part - of an old style (XLookupString) compose sequence. - -2004-01-15 Kenichi Handa - - * search.c (Freplace_match): Use make_multibyte_string or - make_unibyte_string according to the buffer multibyteness. - -2004-01-14 Stefan Monnier - - * alloc.c (struct interval_block, struct string_block) - (struct symbol_block, struct marker_block, live_string_p) - (live_cons_p, live_symbol_p, live_float_p, live_misc_p): - Better preserve alignment for objects in blocks. - (FLOAT_BLOCK_SIZE): Adjust for possible alignment padding. - - * lread.c (defvar_per_buffer): Remove dead declaration. - - * macterm.c (do_check_ram_size): Don't hardcode the lisp address - space size. - -2004-01-12 Jan Dj,Ad(Brv - - * xmenu.c (popup_get_selection): Check new parameter down_on_keypress - if a key press should pop down. Only pop down if a key is pressed - outside the menu/dialog. - (create_and_show_popup_menu): Pass 0 for down_on_keypress to - popup_get_selection. - (create_and_show_dialog): Pass 1 for down_on_keypress to - popup_get_selection. - -2004-01-11 Jan Dj,Ad(Brv - - * alloc.c (allocate_vectorlike): Surround calls to mallopt with - BLOCK/UNBLOCK_INPUT. - -2004-01-08 Jan Dj,Ad(Brv - - * xmenu.c (Fx_popup_dialog): Add an Ok button if no buttons are - specified. - -2004-01-08 Kenichi Handa - - * editfns.c (Fformat): Fix '&' to '&&'. - -2004-01-08 Andreas Schwab - - * print.c (print_preprocess) : Only mask - size if PSEUDOVECTOR_FLAG is set. - -2004-01-07 Kenichi Handa - - * charset.c (Fdeclare_equiv_charset): Fix docstring. - - * fontset.c (fontset_ref_via_base): Fix previous change. - -2004-01-07 Kim F. Storm - - * process.c (read_process_output): Only activate adaptive - buffering if we read less than 256 bytes at a time. - -2004-01-06 Kim F. Storm - - * dispnew.c (buffer_posn_from_coords): Return both buffer/string - object and image object. Return glyph width and height. - (mode_line_string, marginal_area_string): Ditto. - - * dispextern.h (buffer_posn_from_coords, mode_line_string) - (marginal_area_string): Fix prototypes. - - * keyboard.h (POSN_POSN, POSN_SET_POSN): Rename macros from - POSN_BUFFER_POSN and POSN_SET_BUFFER_POSN. All uses changed. - (POSN_INBUFFER_P, POSN_BUFFER_POSN): New macros. - - * keyboard.c (make_lispy_position): Use modified mode_line_string, - buffer_posn_from_coords, and marginal_area_string functions to - include both string object and image object in the lispy position. - Also add actual glyph width and height to position. - (read_key_sequence): Use real buffer position from mouse - event to find keymap property even when click is in marginal area. - - * xdisp.c (note_mode_line_or_margin_highlight): Use modified - mode_line_string and marginal_area_string functions to handle - both string object and image object properties. - -2004-01-06 Andreas Schwab - - * syntax.c (skip_chars): Treat '-' at end of string as ordinary - character. - -2004-01-02 Andreas Schwab - - * macterm.c (emacs_options, x_initialized, same_x_server): - Remove unused (and duplicated) definitions. - -2004-01-02 Kim F. Storm - - * process.h (struct Lisp_Process): New members for adaptive read - buffering: adaptive_read_buffering, read_output_delay, and - read_output_skip. - - * process.c (ADAPTIVE_READ_BUFFERING): New conditional. - (READ_OUTPUT_DELAY_INCREMENT, READ_OUTPUT_DELAY_MAX) - (READ_OUTPUT_DELAY_MAX_MAX): New constants. - (process_output_delay_count, process_output_skip): New vars. - (Vprocess_adaptive_read_buffering): New variable. - (make_process): Initialize adaptive read buffering members. - (Fstart_process): Set adaptive_read_buffering member. - (deactivate_process): Cleanup adaptive read buffering. - (wait_reading_process_input): Temporarily omit delayed - subprocesses from the set of file descriptors to read from; - adjust the select timeout if we skipped any subprocesses. - (read_process_output): Increase adaptive read buffering delay if - we read less than a full buffer; reduce delay when we read a - full buffer. - (send_process): Simplify using local Lisp_Process var. - Reset adaptive read buffering delay after write. - (init_process): Initialize process_output_delay_count and - process_output_skip. - (syms_of_process): DEFVAR_LISP Vprocess_adaptive_read_buffering. - -2004-01-01 Jason Rumney - - * w32term.c (w32_text_out): Use s->font, for consistency with callers. - -2003-12-30 Luc Teirlinck - - * print.c (Ferror_message_string): Add hyperlink in the docstring - to the definition of `signal' in the Elisp manual. - * eval.c (Fsignal): Ditto. - -2003-12-29 James Clark - - * fns.c (internal_equal): Return t for two NaN arguments. - -2003-12-29 Richard M. Stallman - - * data.c (store_symval_forwarding): Handle setting - default-fill-column, etc., by changing the value in - buffers that use the default. - - * minibuf.c (Fset_minibuffer_window): Doc fix. - - * fileio.c (choose_write_coding_system): Ignore auto_saving - if using the visited file for auto saves. - (Fwrite_region): Don't update SAVE_MODIFF - if auto-saving in visited file. - -2003-12-29 Kenichi Handa - - * dispextern.h (face_font_available_p): Extern it. - - * fontset.c (Voverriding_fontspec_alist): New variable. - (lookup_overriding_fontspec): New function. - (fontset_ref_via_base): Call lookup_overriding_fontspec if necessary. - (fontset_font_pattern): Likewise. - (regulalize_fontname): New function. - (Fset_fontset_font): Call regulalize_fontname. - (Fset_overriding_fontspec_internal): New function. - (syms_of_fontset): Initialize and staticpro Voverriding_fontspec_alist. - Defsubr Sset_overriding_fontspec_internal. - - * xfaces.c (face_font_available_p): New function. - -2003-12-28 Richard M. Stallman - - * buffer.c (Fother_buffer): Don't crash if BUF is nil - or if its name is nil. - - * buffer.c (Fkill_buffer): Don't delete auto-save file - if it's the same as the visited file. - -2003-12-28 Luc Teirlinck - - * coding.c (Fcheck_coding_system): Doc fix. - -2003-12-28 Kim F. Storm - - * Makefile.in (eval.o): Depend on dispextern.h. - - * dispnew.c (buffer_posn_from_coords): Fix calculation of dy for - image glyph using image's ascent. - (mode_line_string): Return image glyph as object clicked on. - Adjust y0 for image glyph using image's ascent. - - * dispextern.h (FACE_ID_BITS, MAX_FACE_ID): New defines. - (struct glyph): New members, ascent and descent. Used to save - this glyph's ascent and descent, instead of having. - (struct glyph): Declare member face_id using FACE_ID_BITS. - (find_hot_spot): Add prototype. - - * keyboard.c (Qimage): Remove extern (now in lisp.h). - (QCmap): Declare extern. - (make_lispy_position): When position is inside image hot-spot, - use hot-spot element's id as posn element. - - * lisp.h (IMAGEP): New macro to test for image object type. - (Qimage): Declare extern. - - * macfns.c (Qimage): Remove extern (now in lisp.h). - (valid_image_p, parse_image_spec): Use IMAGEP macro. - - * macterm.c (Qface, Qmouse_face): Remove unused externs. - - * w32fns.c (Qimage): Remove extern (now in lisp.h). - (valid_image_p, parse_image_spec): Use IMAGEP macro. - - * w32menu.c (Qmouse_click, Qevent_kind): Remove unused externs. - - * w32term.c (Qface, Qmouse_face): Remove unused externs. - - * xdisp.c (Qarrow, Qhand, Qtext, Qpointer): New variables for - pointer types. - (Qrelative_width, Qalign_to): Remove unused variables. - (Vvoid_text_area_pointer): Replace Vshow_text_cursor_in_void. - (QCmap, QCpointer, Qrect, Qcircle, Qpoly): New variables for image - maps. - (x_y_to_hpos_vpos): Return glyph relative coordinates through new - dx and dy args. Remove buffer_only_p arg (always 0). Simplify - code accordingly. - (get_glyph_string_clip_rect): Draw cursor using glyph's rather - than row's ascent and height, to get sensible height on tall rows. - (build_desired_tool_bar_string): Remove Qimage extern. - (get_tool_bar_item): Fix call to x_y_to_hpos_vpos. - (produce_image_glyph): Adjust it.ascent to minimum row ascent if - image glyph is alone on the last line. - (append_glyph, append_composite_glyph, produce_image_glyph) - (append_stretch_glyph): Set glyph's ascent and descent. - (on_hot_spot_p): New function to check if position is inside an - rectangular, circular, or polygon-shaped image hot-spot, - (find_hot_spot): New function to search for image hot-spot. - (Flookup_image_map): New defun to search for image hot-spot. - (define_frame_cursor1): New aux function to determine frame - pointer. - (note_mode_line_or_margin_highlight, note_mouse_highlight): Handle - `pointer' text property and :pointer image property to control - frame pointer shape. Detect image hot-spots for pointer and - help_echo properties. Use define_frame_cursor1. - (note_mouse_highlight): Use Vvoid_text_area_pointer. - (syms_of_xdisp): Defsubr new defun. Intern and staticpro new - variables. DEFVAR_LISP Vvoid_text_area_pointer instead of - Vshow_text_cursor_in_void. - - * xfaces.c (cache_face): Abort if c->size exceeds MAX_FACE_ID. - - * xfns.c (x_set_mouse_color): Remove bogus x_check_errors call. - (Qimage): Remove extern (now in lisp.h). - (valid_image_p, parse_image_spec): Use IMAGEP macro. - - * xmenu.c (show_help_event): Remove unused code. - - * xterm.c (Qface, Qmouse_face): Remove unused externs. - (x_draw_hollow_cursor): Draw cursor using glyph's rather than - row's ascent and descent, to get a sensible height on tall rows. - -2003-12-25 Luc Teirlinck - - * minibuf.c (Fcompleting_read): Undo previous change. - -2003-12-25 Lars Hansen - - * dired.c (Fdirectory_files, Fdirectory_files_and_attributes): - Arguments GCPRO'ed in call to file name handler. - -2003-12-25 Thien-Thi Nguyen - - * termcap.c (tgetst1): Scan for "%pN"; if all - N are continuous in [1,9], remove all "%pN". - -2003-12-24 Jan Dj,Ad(Brv - - * gtkutil.c (xg_frame_set_char_size): Call x_wm_set_size_hint. - - * xfaces.c (lface_fully_specified_p): Take into account that - MAC OS always have unspecified stipple. - -2003-12-24 Thien-Thi Nguyen - - * tparam.c (tparam1): Add handling for `%pN', which - means use param N for the next substitution. - -2003-12-24 Thien-Thi Nguyen - - * xfaces.c (Fcolor_gray_p): Fix omission bug: - In case `frame' is nil, consult the selected frame. - (Fcolor_supported_p): Likewise. - -2003-12-23 Luc Teirlinck - - * fns.c (Frandom, Fstring_make_multibyte, Fset_char_table_range): - Doc fixes. - - * minibuf.c (read_minibuf): Allow INITIAL to be a cons of a string - and an integer. Adapt the introductory comment accordingly. - (Fread_from_minibuffer): Delete code moved into read_minibuf. - Doc fix. - (Fread_minibuffer, Fread_no_blanks_input): Adapt to changes in - read_minibuf. - (Fcompleting_read): Delete code moved into read_minibuf. - (Ftest_completion): Make it handle obarrays and hash tables correctly. - -2003-12-03 Kenichi Handa - - * coding.c (decode_coding_iso2022): Fix for preserving UTF-8 - encoding sequence. - -2003-12-01 Kenichi Handa - - * composite.c (syms_of_composite): Don't make the compostion hash - table week. - -2003-11-30 Luc Teirlinck - - * intervals.h: Add EXFUN for Fget_char_property_and_overlay. - * textprop.c (Fget_char_property_and_overlay): New function. - (syms_of_textprop): Defsubr it. - -2003-11-29 Jan Dj,Ad(Brv - - * dispnew.c (buffer_posn_from_coords): Add ifdef HAVE_WINDOW_SYSTEM - to compile on terminal configuration. - - * fileio.c (Fread_file_name): Check use_file_dialog also before - calling Fx_file_dialog. - - * fns.c (use_file_dialog): New variable. - (syms_of_fns): DEFVAR_BOOL use-file-dialog. - -2003-11-29 Kim F. Storm - - * msdos.c (Qcursor_type, Qbar, Qhbar): Declare extern. - (syms_of_msdos): Don't intern and staticpro them. - -2003-11-27 Kim F. Storm - - * dispnew.c (buffer_posn_from_coords): Calculate and return pixel - coordinates relative to glyph at posn. If glyph is an image, - return that as object at posn. Callers changed. - (mode_line_string, marginal_area_string): Calculate and return - pixel coordinates relative to glyph. Callers changed. - - * dispextern.h (buffer_posn_from_coords, mode_line_string) - (marginal_area_string): Fix prototypes. - (window_box_left_offset, window_box_right_offset): Add prototypes. - - * frame.h (get_specified_cursor_type, get_window_cursor_type): - Remove prototypes. - - * keyboard.h (EVENT_CLICK_COUNT, POSN_SCROLLBAR_PART): Fix defines. - - * keyboard.c (make_lispy_position): Add x and y coordinates - relative to the current glyph as 7th element of position. - If glyph is an image, return it in the object element. - (read_key_sequence): Skip checks for keymap property in cases - where POSN_STRING is not a string (e.g. an image). - - * xdisp.c (Vdisplay_pixels_per_inch): New variable. - (Vshow_text_cursor_in_void): New variable. - (glyph_to_pixel_coords): Don't use negative hpos. - (x_y_to_hpos_vpos): Fix for partially visible first glyph. - (append_stretch_glyph): Change ascent arg to be actual value - in pixels rather than ratio to height. Callers changed. - (calc_pixel_width_or_height): New aux function, implementing - pixel based artihmetic for glyph widths and heights. - (produce_stretch_glyph): Use calc_pixel_width_or_height for - :width, :height, :align-to, and :ascent, thus allowing these to - be specified in pixels as well as multiples of characters. - Don't produce stretch glyphs with zero width or height. - (get_specified_cursor_type): Declare static. - (get_window_cursor_type): Declare static. Add glyph arg to be - able to know when cursor is on an image; always substitute - hollow-box cursor for filled-box cursor on images, to avoid - negative images and flicker when blinking the cursor. - (display_and_set_cursor): Pass glyph to get_window_cursor_type. - (note_mode_line_or_margin_highlight): Use non-text cursor rather - than vertical scroll-bar cursor in display margins. - (note_mouse_highlight): Use non-text cursor rather than text - cursor in fringes and over images in the text area. - Use non-text cursor when mouse pointer is outside editable text, - i.e. in the void after end-of-line or end-of-buffer; this was - already done for W32, but is now standard for all systems -- - user can toggle show-text-cursor-in-void to get old behaviour. - (syms_of_xdisp): DEFVAR_LISP Vshow_text_cursor_in_void and - Vdisplay_pixels_per_inch. - -2003-11-25 Andreas Schwab - - * fns.c (internal_equal) : Declare size as - EMACS_INT to not lose bits. - (Ffillarray): Don't set bits beyond the size of a bool vector. - -2003-11-25 Kim F. Storm - - * print.c (Fredirect_debugging_output) [!GNU_LINUX]: Do not - define this defun on systems that cannot use stderr as lvalue. - -2003-11-24 Gerd Moellmann - - * s/freebsd.h (LD_SWITCH_SYSTEM_TEMACS) - [__FreeBSD_version >= 500042]: Define as -znocombreloc because - ld's default is incompatible with unexec. - -2003-11-23 Kim F. Storm - - * window.c (enum window_loop): Add REDISPLAY_BUFFER_WINDOWS. - (window_loop): Handle REDISPLAY_BUFFER_WINDOWS. - (Fforce_window_update): New defun. - (syms_of_window): Defsubr it. - (Fset_window_margins, Fset_window_fringes): Doc fix. - - * print.c (Fredirect_debugging_output): New defun. - (syms_of_print): Defsubr it. - -2003-11-22 Luc Teirlinck - - * fns.c (Fset_char_table_parent): Doc fix. - -2003-11-22 Kim F. Storm - - * dispnew.c (buffer_posn_from_coords): Return actual row/column - for glyph clicked on, rather than (unused) pixel positions. - (mode_line_string, marginal_area_string): Change X and Y args to - pointers for returning actual row/column for glyph clicked on. - Simplify and optimize loops. - - * dispextern.h (mode_line_string, marginal_area_string): - Update prototypes. - - * keyboard.c (make_lispy_position): New function for generating - mouse click positions from frame and pixel coordinates. - Enhanced to return buffer position and actual row/column for - events outside the text area using updated mode_line_string and - marginal_area_string functions. - Return left-fringe and right-fringe clicks as such, rather than - clicks in text area. - (make_lispy_event) [USE_X_TOOLKIT, USE_GTK]: Don't call - pixel_to_glyph_coords, as we never use the results. - (make_lispy_event): Use make_lispy_position for MOUSE_CLICK_EVENT, - WHEEL_EVENT, and DRAG_N_DROP_EVENT to replace redundant code. - Eliminate unused code in WHEEL_EVENT handling. - (make_lispy_movement): Use make_lispy_position. - - * window.c (coordinates_in_window): Remove redundant tests. - Fix returned X pixel value for left-margin. - - * xdisp.c (note_mode_line_or_margin_highlight): Adapt to new - mode_line_string and marginal_area_string parameters. - -2003-11-22 Lars Hansen - - * w32.c (struct the_group, getgrgid): Add. - * mac.c (struct my_group, getgrgid): Add. - -2003-11-21 Luc Teirlinck - - * fns.c (Fassq, Fassoc, Frassq, Frassoc): Doc fixes. - -2003-11-21 Lars Hansen - - * dired.c (Ffile_attributes): Add parameter ID-FORMAT and - include in call to file name handler. Optionally translate numeric - UID and GID to strings. Update docstring. - (directory_files_internal): Add parameter ID-FORMAT. - (Fdirectory_files_and_attributes): Add parameter ID-FORMAT and - include in call to file name handler and call to - directory_files_internal. Update Docstring. - (Fdirectory_files): Add dummy parameter in call to - directory_files_internal. - * lisp.h (Qinteger): Add. - (Qinteger_or_floatp, Qinteger_or_float_or_marker_p): Remove. - (Ffile_attributes): Add parameter. - * data.c (Qinteger): Export. - -2003-11-21 Luc Teirlinck - - * fns.c (Freverse, Fnreverse): Doc fixes. - -2003-11-19 Kim F. Storm - - * xdisp.c (init_iterator): Initialize it->start to position - before reseating (in case start position is invisible). - (init_to_row_start): Set it->start to row-start. - (redisplay_window): Accept optional_new_start if start position - is invisible (in which case IT_CHARPOS overshoots PT). - (display_line): Setup row->start from it->start (rather than - it->current which is wrong if first char on line is invisible). - When done, reseat it->start to it->current (= start of next row). - (expose_area): Fix exposure of text area when first char (e.g. TAB) - is only partially visible. - - * dispextern.h (struct it): New member start. - -2003-11-17 Stefan Monnier - - * alloc.c (make_float, Fcons): Clear the markbit at init time. - (make_float, Fcons, Fmake_symbol, allocate_misc): Move the increment - of block_index outside of the macro call. - (Fgarbage_collect): Remove null code. - - * m/amdx86-64.h: Don't redefine XPNTR. - - * keyboard.c (parse_modifiers, apply_modifiers): Use INTMASK instead - of VALMASK. - - * fns.c (hashfn_eq, hashfn_eql, hashfn_equal, hash_put) - (sxhash_string, sxhash): Use INTMASK instead of VALMASK. - (maybe_resize_hash_table): Use MOST_POSITIVE_FIXNUM. - - * lisp.h (VALMASK): Only define for non-union type. - (MARKBIT): Remove. - (ARRAY_MARK_FLAG): Use previous value of MARKBIT. - (XTYPE): Define unconditionally. - (XSETTYPE): Remove one more remnant. - (EQ): Define differently for the union and non-union cases. - (INTMASK): New bit mask. - (struct Lisp_Marker): Move down to prepare for upcoming patch. - (GC_EQ): Delegate to EQ. - - * coding.c (coding_restore_composition): Lisp_Object/int mixup. - -2003-11-17 Jan Dj,Ad(Brv - - * xterm.c (x_window_to_scroll_bar): Move check of display to - where window_id is compared. - -2003-11-17 Kim F. Storm - - * dispextern.h (struct it): New member first_vpos. - - * xdisp.c (start_display): Set it->first_vpos. - (try_window_id): Use first_vpos to start display in first _text_ - line if no reusable lines at start of window with header line. - -2003-11-16 Jan Dj,Ad(Brv - - * w32fns.c (XPutPixel): - * w32bdf.c (w32_init_bdf_font): - * sunfns.c (sel_read): - * process.c (Fmake_network_process): - * frame.c (store_frame_param): - * fontset.c (Fset_fontset_font): - * emacs.c (shut_down_emacs): - * ccl.c (ccl_driver): Remove period at end of error message. - - * config.in: Regenerate. - - * xfns.c (x_window_to_frame, x_any_window_to_frame) - (x_non_menubar_window_to_frame, x_menubar_window_to_frame) - (x_top_window_to_frame): Add Display* argument to xg_win_to_widget. - (x_create_bitmap_mask, xg_set_icon, create_frame_xic) - (xic_set_statusarea, x_window, gif_load): Formatting adjustments. - - * xterm.h (struct x_display_info): New field xg_cursor for GTK. - - * xterm.c: Add Display * to x_window_to_scroll_bar declaration. - (XTmouse_position, handle_one_xevent): Pass Display* to - x_window_to_scroll_bar. - (x_window_to_scroll_bar): Take a Display* argument. - Check that display for frame is equal to Display* argument. - (event_handler_gdk): Remove current_dpyinfo. Get dpyinfo from - x_display_info_for_display instead. Use Display in xev instead - of GDK_DISPLAY. - (x_dispatch_event): Call x_display_info_for_display. - (XTread_socket): Move GTK part out of loop. current_dpyinfo removed. - (x_connection_closed): Call xg_display_close for GTK. - (x_term_init): Call xg_display_open for additional displays. - Initiate dpyinfo->xg_cursor with call to xg_create_default_cursor - for GTK. - - * xmenu.c (single_menu_item, mouse_position_for_popup) - (x_activate_menubar): Formatting adjustments. - - * xdisp.c (update_tool_bar, redisplay_tool_bar): Formatting - adjustments. - - * gtkutil.c (xg_get_gdk_display, xg_set_screen, xg_display_open) - (xg_display_close, xg_create_default_cursor) - (xg_get_gdk_pixmap_and_mask): New functions for multiple display - handling. - (xg_left_ptr_cursor): Remove. - (xg_set_cursor): Change cursor to GdkCursor*. Do not create - cursor here. - (xg_win_to_widget): Take Display* argument, call - gdk_xid_table_lookup_for_display. - (xg_create_frame_widgets, xg_get_file_name, create_menus) - (xg_create_widget, xg_modify_menubar_widgets): Call xg_set_screen. - (xg_create_widget, xg_create_scroll_bar): Use xg_cursor - in FRAME_X_DISPLAY_INFO. - (xg_get_scroll_id_for_window): Take Display* argument. - (update_frame_tool_bar): Call xg_get_gdk_pixmap_and_mask. - (xg_initialize): Remove xg_left_ptr_cursor. - - * gtkutil.h (xg_get_scroll_id_for_window, xg_win_to_widget): Add - Display* argument. - (xg_display_open, xg_display_close, xg_create_default_cursor): Declare. - -2003-11-14 Jan Dj,Ad(Brv - - * xterm.c (x_detect_focus_change): Do not change focus frame for - Enter/LeaveNotify if the current focus frame has explicit focus. - -2003-11-14 Kim F. Storm - - * dispnew.c (update_text_area): Fix redisplay error when hscroll - is active and first glyph is only partially visible. - -2003-11-13 Kenichi Handa - - * xdisp.c (select_frame_for_redisplay): New function. - (redisplay_internal): Record also selected_frame for - unwind_redisplay. Call select_frame_for_redisplay before - redrawing each frame. - (unwind_redisplay): Argument changed to a cons. - -2003-11-12 Luc Teirlinck - - * fns.c (Fstring_to_multibyte): Doc fix. - -2003-11-11 Kenichi Handa - - * xterm.c (x_list_fonts): Fix excluding of auto-scaled fonts. - -2003-11-09 Jan Dj,Ad(Brv - - * xfns.c (x_window): Set XtNx and XtNy in shell widget for - program specified positions. - -2003-11-08 Jan Dj,Ad(Brv - - * xterm.c (XAW_ARROW_SCROLLBARS): Define it for Xaw 1.5E. - -2003-11-08 Kenichi Handa - - * Makefile.in (lisp): Add kannada.el. - (shortlisp): Likewise. - -2003-11-07 Kenichi Handa - - * coding.c (coding_allocate_composition_data): - Reset coding->composing to COMPOSITION_NO. - (coding_restore_composition): Detect invalid composition data. - Give Fstring and Fvector a Lispy integer, not C int. - -2003-11-05 Stefan Monnier - - * floatfns.c (Flogb): Don't use VALMASK. - - * m/amdx86-64.h (VALBITS, XINT, XUINT): Remove. - * m/ia64.h (VALBITS, XINT, XUINT): Remove. - - * lisp.h (XINT): Move the cast to clarify what is going on. - (GCTYPEMASK, XSETTYPE): Remove. - (XGCTYPE): Make it an alias of XTYPE. - -2003-11-03 Jan Dj,Ad(Brv - - * xterm.c (x_term_init): Fix formatting. - -2003-11-02 Jan Dj,Ad(Brv - - * gtkutil.h (xg_have_tear_offs): Declare. - (xg_keep_popup, xg_did_tearoff): Remove. - - * gtkutil.c: Remove variable xg_did_tearoff. - (xg_have_tear_offs): New function. - (tearoff_remove): Just decrease xg_detached_menus. - (tearoff_activate): Increase xg_detached_menus and call - tearoff_remove when tearoff is removed. - (xg_keep_popup): Remove function. - (create_menus): Give add_tearoff_p as argument to recursive - call to create_menus. - (xg_create_widget): Use variables instead of multiple - strcmp. Tell create_menus to create tear off only for - menu bar menus. - (xg_update_menubar): Change title for a detached menu also. - (xg_modify_menubar_widgets): Always call xg_update_menubar, regardless - of deep_p. - (xg_initialize): Initialize xg_detached_menus, remove - initialization of xg_did_tearoff. - - * xmenu.c (set_frame_menubar): For GTK, set deep_p if - xg_have_tear_offs returns non-zero. - (create_and_show_popup_menu): Remove setting of xg_did_tearoff and - call to xg_keep_popup. - -2003-11-01 Andrew Choi - - * macterm.c (XTread_socket): Handle menubar selection and grow - window only for mouseDown events. - -2003-10-31 Jan Dj,Ad(Brv - - * xterm.c (x_term_init): For GTK part, increase x_initialized - to check for more than one display. Use error instead of return 0. - -2003-10-31 Andrew Choi - - * unexmacosx.c (unrelocate): New function (contributed by Nozomu Ando). - (copy_dysymtab): Call it. - -2003-10-31 Luc Teirlinck - - * eval.c (Fdefvaralias): Doc fix. - -2003-10-26 Luc Teirlinck - - * data.c (Fsetplist): Doc fix. - -2003-10-14 Lute Kamstra - - * window.c (Fset_window_fringes): Clarify docstring. - -2003-10-14 Kim F. Storm - - * window.c (Fset_window_margins): Simplify arg checking. - -2003-10-13 Richard M. Stallman - - * regex.c (MAX_BUF_SIZE): Reduce to 2**15. - (print_partial_compiled_pattern): Replace assert with a printout. - (skip_noops, mutually_exclusive_p): Change args, values to re_char *. - - * alloc.c (lisp_align_malloc): If BASE is 0, call memory_full. - - * window.c (Fset_window_margins): Allow only integers as args. - (syms_of_window) : Doc fixes. - -2003-10-13 Lute Kamstra - - * window.c (Fset_window_fringes): Elaborate docstring. - -2003-10-12 Andrew Choi - - * macterm.c (XTread_socket): Call DragWindow only for mouseDown events. - - * s/darwin.h (GC_MARK_STACK): Define. - -2003-10-12 Jan Dj,Ad(Brv - - * window.c (shrink_windows): New function. - (size_window): Call shrink_windows to calculate window sizes when - shrinking frame with more than one window. - -2003-10-12 Kim F. Storm - - * xdisp.c (compute_fringe_widths): Doc fix. - -2003-10-08 Kenichi Handa - - * coding.c (Fcoding_system_p): Return t for auto-loading coding system. - -2003-10-07 Kenichi Handa - - * coding.c (Qcoding_system_define_form): New variable. - (syms_of_coding): Intern and staticpro it. - (Fcheck_coding_system): Try to autoload the definition of - CODING-SYSTEM. - -2003-10-05 Luc Teirlinck - - * fns.c (Frequire): Doc fix. - -2003-10-05 Jan Dj,Ad(Brv - - * xfns.c (Fx_send_client_event): New function as a base for - manipulating extended window manager hints. - (Fx_send_client_event): Remove unused variable s. - - * w32term.c (w32_read_socket): Remove call to x_check_fullscreen_move, - that function is removed. - - * xterm.c (x_set_offset): Use move_offset_left/top instead of - x/y_pixels_outer_diff. - (x_check_expected_move): Calculate move_offset_left/top. - - * xterm.h (struct x_output): New members: move_offset_top/left. - - * frame.c (x_set_frame_parameters): Remove x_fullscreen_move, - call x_set_offset directly. - - * frame.h (enum): FULLSCREEN_MOVE_WAIT removed. - - * frame.c (Fdelete_frame): Free decode_mode_spec_buffer. - - * xterm.c (x_delete_display): Free font names and font_encoder - in dpyinfo->font_table. - - * xfns.c (Fx_close_connection): Only call XFreeFont here. - Move xfree of font names to x_delete_display. - - * xterm.h (struct x_display_info): New member, wm_type. - (struct x_output): New members, expected_top/left and - check_expected_move. - - * xterm.c (handle_one_xevent): Reset wm_type when ReparentNotify - is received. - (handle_one_xevent): Rename x_check_expected_move from - x_check_fullscreen_move. - (x_set_offset): Only add WM decoration sizes to modified_top/left - for X_WMTYPE_A. Set check_expected_move when WM type is unknown. - (x_check_expected_move): Rename from x_check_fullscreen_move. - Removed fullscreen specific code. Use check_expected_move, - expected_left/top instead. Also, set wm_type. - (x_term_init): Initialize wm_type to unknown. - - * frame.c (x_fullscreen_move): Remove addition of WM decoration - sizes to move_x/y. - -2003-10-03 Kenichi Handa - - * macterm.c (x_load_font): Clear all members of FONTP before start - filling them. - -2003-10-02 Kenichi Handa - - * fontset.c (fs_load_font): Don't set fontp->font_encoder to NULL - before calling find_ccl_program_func. Call find_ccl_program_func - only when fontp->font_encoder is not NULL. - - * xterm.c (x_load_font): Clear all members of FONTP before start - filling them. - -2003-10-03 John Paul Wallington - - * keymap.c (map_keymap): Don't abort when binding is a vector. - -2003-10-02 Jason Rumney - - * makefile.w32-in (emacs.o, coding.o, bytecode.o): - Sync dependencies with Makefile.in. - (alloca.o): Remove. - - * w32fns.c (w32_load_system_font): Clear all members of FONTP before - filling them. - - * w32bdf.c (w32_load_bdf_font): Likewise. - -2003-09-30 Richard M. Stallman - - * term.c (set_tty_color_mode): Calculate current_mode_spec - regardless of value of VAL. - - * intervals.c (graft_intervals_into_buffer): - Set BUF_INTERVALS (buffer)->up_obj when appropriate. - Handle over_used when splitting UNDER. - -2003-09-30 YAMAMOTO Mitsuharu - - * regex.c (regex_compile): Free the stack when returning from function. - -2003-09-28 Kenichi Handa - - * fontset.c (Finternal_char_font): Change return value to - cons (FONT-NAME . GLYPH-CODE). - -2003-09-28 Eli Zaretskii - - * term.c (tty_setup_colors): Treat any negative argument as -1. - -2003-09-27 Gaute B Strokkenes (tiny change) - - * process.c (send_process): Delete unused temp_buf. - -2003-09-26 Dave Love - - * xterm.c (x_bitmap_mask): Declare. - -2003-09-25 Dave Love - - * Makefile.in (fns.o): Depend on md5.h. - -2003-09-25 Kim F. Storm - - * window.c (set_window_buffer): Fix redisplay problems when - switching between buffers with different display margin widths. - -2003-09-23 Kim F. Storm - - * process.c (set_socket_option): Fix :bindtodevice option. - (Fset_network_process_option): Update process contact list when - setting option succeeds. - (Fmake_network_process): Doc fix. - -2003-09-23 Dave Love - - * process.c (Fnetwork_interface_info): Use HAVE_STRUCT_IFREQ... macros. - -2003-09-22 Eli Zaretskii - - * term.c (set_tty_color_mode): Use INTEGERP to test whether a - color mode is an integer number (it could be -1). - -2003-09-22 Richard M. Stallman - - * intervals.c (graft_intervals_into_buffer): Correct the main loop - in the case where OVER is longer than UNDER. - -2003-09-22 Masatake YAMATO - - * window.c (Fset_window_scroll_bars): Validate the value of - `vertical_type'. - -2003-09-21 Kim F. Storm - - * frame.c (Vdefault_frame_scroll_bars): New variable. - (x_set_vertical_scroll_bars): Use it instead of hardcoded values. - (syms_of_frame): DEFVAR_LISP it, and initialize according to - window-system default scroll bar position. - - * window.c (Fwindow_scroll_bars): Doc fix. - -2003-09-19 Jan Dj,Ad(Brv - - * xterm.c (x_set_offset): Take window manager decorations into account. - -2003-09-19 Richard M. Stallman - - * atimer.h: Don't include lisp.h. - (P_): Define it here (as well as elsewhere). - - * print.c (Fprin1_to_string): Move the PRINTPREPARE - later, so that PRINTFINISH won't unbind Qinhibit_modification_hooks. - - * data.c (Fvariable_binding_locus): New function. - (syms_of_data): defsubr it. - (Flocal_variable_p): Delete duplicate call to indirect_variable. - -2003-09-18 Dave Love - - * alloc.c (GC_MALLOC_CHECK): Move conditional undef after lisp.h. - - * process.c (Fnetwork_interface_info): Fix type error. - (Fnetwork_interface_list): Doc fix. - (read_process_output, read_process_output): Delete unused var. - -2003-09-17 Kim F. Storm - - * process.c (Fnetwork_interface_list, Fnetwork_interface_info): - Require HAVE_NET_IF_H and HAVE_SYS_IOCTL_H to include these fns. - (Fnetwork_interface_info): Check that ifreq struct has required - fields before accessing them; this requires that those fields are - defined as macros, which may be too restrictive on some platforms, - but it is better than failing on other platforms. - (syms_of_process): Only defsubr above fns when included. - -2003-09-17 Dave Love - - * unexalpha.c: Don't include varargs.h. - -2003-09-17 Kim F. Storm - - * process.c (Fset_process_sentinel): Add sentinel to childp plist - for network process. - (socket_options): Add `:' prefix to option names. Add optbit field. - (set_socket_option): Remove no_error arg and special handling of s < 0. - Return 1< - - * Makefile.in: Depend on coding.h. - -2003-09-14 Kim F. Storm - - * process.c [HAVE_SOCKETS]: Include sys/ioctl.h and net/if.h. - (Fnetwork_interface_list, Fget_network_interface_info): New defuns. - (syms_of_process): Defsubr them. - - * config.in: Regenerate. - -2003-09-12 Stefan Monnier - - * m/sr2k.h (XMARKBIT, XUNMARK): Remove. - * m/news-r6.h (XUNMARK): Remove. - * m/mips.h (XUNMARK): Remove. - * m/mips-siemens.h (XUNMARK): Remove. - * m/iris4d.h (XUNMARK): Remove. - * m/hp800.h (XMARKBIT, XUNMARK): Remove. - -2003-09-11 Stefan Monnier - - * lisp.h (VALBITS): Don't remove 1 for the markbit. - (union Lisp_Object): Use unsigned int for types. Remove markbit. - (MARKBIT): Remove 1 from VALBITS so we still use same old val. - (XTYPE): Use unsigned right-shift. - (XMARKBIT, XMARK, XUNMARK): Remove. - - * alloc.c (init_intervals, init_symbol, init_marker): - Don't preallocate anything. - (Fgarbage_collect, mark_object): Ignore the markbit. - - * bytecode.c (mark_byte_stack, unmark_byte_stack): Ignore the markbit. - -2003-09-08 Lute Kamstra - - * xdisp.c (pint2hrstr): New function. - (decode_mode_spec): Add `%i' and `%I' specs. - * buffer.c (syms_of_buffer): Document `%i' and `%I' constructs - for `mode-line-format'. - -2003-09-07 Andreas Schwab - - * alloc.c: Use long instead of int when casting ABLOCKS_BUSY to - avoid warning. - -2003-09-07 Eli Zaretskii - - * editfns.c (region_limit): Support any non-zero value of BEGINNINGP. - -2003-09-03 Kim F. Storm - - * xdisp.c (get_window_cursor_type): Partially undo 2002-03-01 - change (superseded by 2002-08-30 change); the default blink-off - cursor is now again "no cursor". - -2003-09-01 Jason Rumney - - * makefile.w32-in (alloca.o): Remove. - (coding.o): Depend on intervals.h - (emacs.o, bytecode.o): Depend on window.h - -2003-09-01 Dave Love - - * Makefile.in (alloca.o): Remove commands. - (coding.o): Depend on intervals.h composite.h window.h. - (emacs.o): Depend on window.h keyboard.h keymap.h. - (gtkutil.o): Depend on keyboard.h charset.h coding.h. - (bytecode.o): Depend on window.h. - -2003-08-31 Jason Rumney - - * w32term.c (w32_per_char_metric): Allow cached metrics to be - returned even when font_type is unknown. - - * xdisp.c (init_iterator): Remove old WINDOWSNT conditional. - -2003-08-30 Jan Dj,Ad(Brv - - * xterm.c (x_term_init): Initialize new fields in x_display_info. - - * xterm.h (struct x_display_info): Add red/green/blue_bits and - *_offset. - - * xfns.c (lookup_rgb_color): Use new fields in x_display_info to - calculate pixel value. - -2003-08-29 Gerd Moellmann - - * xdisp.c (redisplay_internal): Fix change of 2003-04-30. - Don't tell redisplay display is accurate when it's actually been - paused for pending input. - -2003-08-29 Richard M. Stallman - - * dispnew.c (adjust_glyph_matrix): Call window_box - whenever W is nonzero. - - * data.c (Fmake_variable_buffer_local, Fmake_local_variable) - (Fkill_local_variable, Fmake_variable_frame_local) - (Flocal_variable_p, Flocal_variable_if_set_p): - Use indirect_variable to trace thru variable aliases. - - * config.in: Updated. - - * callint.c (Fcall_interactively): Save and restore - Vthis_command, Vthis_original_command, real_this_command, - and current_kboard->Vlast_command. - - * abbrev.c (Fexpand_abbrev): Insert before deleting. - -2003-08-29 Gerd Moellmann - - * xfns.c (lookup_rgb_color): Handle TrueColor visuals specially. - -2003-08-28 David Abrahams (tiny change) - - * coding.c (decode_coding_iso2022): Initialize local variable c2. - (decode_coding_sjis_big5): Likewise. - -2003-08-27 Jason Rumney - - * w32.c (sys_pipe): Protect against file descriptor overflow. - - * w32fns.c (syms_of_w32fns): Remove non-existent functions. - - * w32term.c (w32_read_socket): Fix WM_MOUSEWHEEL assignment. - -2003-08-26 Terje Rosten - - * xfns.c (Vgtk_version_string): New variable. - (syms_of_xfns): DEFVAR_LISP it. Provide gtk. - -2003-08-24 Eli Zaretskii - - * term.c (term_init): Remove `const' from buffer_size's declaration. - - * Makefile.in (msdos.o): Depend on intervals.h. - - * msdos.c: Include intervals.h, since STRING_INTERVALS requires that. - -2003-08-21 Jan Dj,Ad(Brv - - * xterm.h (struct x_display_info): New fields: client_leader_window - and Xatom_wm_client_leader. - - * xterm.c (x_initialize): Move call to x_session_initialize to ... - (x_term_init): ... here. Initialize client_leader fields in dpyinfo. - - * xsmfns.c (create_client_leader_window): New function. - (x_session_initialize): Call create_client_leader_window, take - dpyinfo as argument. - - * xfns.c (Fx_create_frame): Set property WM_CLIENT_LEADER. - - * Makefile.in (xsmfns.o): Add more depenedencies. - -2003-08-21 Dave Love - - * m/iris4d.h: Use _MIPS_SZLONG, not _LP64. - -2003-08-21 Kenichi Handa - - * term.c (term_init): Fix previous change; don't rely on the - length of `buffer' if TERMINFO is defined. - -2003-08-20 Dave Love - - * atimer.h: Include lisp.h. - - * lisp.h (EMACS_LISP_H): New. - (popup_activated_flag): Don't declare. - - * alloca.c: Some merging with gnulib. Change logic and doc - concerning (x)malloc/(x)free -- no longer Emacs-specific. - [DO_BLOCK_INPUT]: Don't include lisp.h. - (xmalloc, xfree): Declare. - (malloc): Don't declare. - - * Makefile.in (LWLIB_OPTIONS): Remove (unused). - (alloca.o): Remove obsolete stuff concerning alloca.s. Depend on - atimer.h, blockinput.h. - - * alloc.c (lisp_align_malloc): Change type of `aligned'. - - * alloca.s: Remove. - -2003-08-19 Gerd Moellmann - - * s/freebsd.h [__FreeBSD_version >= 400000]: Define TERMINFO, - use -lncurses. - - * term.c (term_init): Use a buffer of size 4096 for tgetent since - FreeBSD returns something longer than 2044. Abort if the end of - the buffer is overwritten. - -2003-08-19 Miles Bader - - * xterm.c (x_term_init): Correctly use result of Ffile_readable_p. - -2003-08-19 Gerd Moellmann - - * alloc.c (lisp_align_malloc): Check for memory full when - allocating ablocks, which also avoids freeing a pointer into an - ablocks structure. - - * puresize.h (BASE_PURESIZE): Increase to 1100000. - - * buffer.c (Fmove_overlay): Set overlay's next pointer unconditionally. - -2003-08-16 Richard M. Stallman - - * editfns.c (Fencode_time): Doc fix. - -2003-08-16 David Ponce - - * fileio.c (Fwrite_region): Fix conditional expression to issue - the right message. - -2003-08-16 Juri Linkov - - * syntax.c (Fforward_word): Argument changed to optional. - Set default value to 1. - -2003-08-15 Kenichi Handa - - * xfaces.c (better_font_p): Prefer a real scalable font; i.e. not - what autoscaled. - (best_matching_font): Once we find a better scalable font, set - non_scalable_has_exact_height_p to 1. - (try_font_list): Call try_alternative_families to try any family - with the given registry. - -2003-08-09 Andreas Schwab - - * alloc.c (mark_object): Handle Lisp_Misc_Save_Value. - - * print.c (print_string): Fix printing of multibyte string with - nontrivial printcharfun. - -2003-07-31 Jan Dj,Ad(Brv - - * xfns.c (xg_set_icon): Rewrite to compile with GTK 2.0 and 2.2. - - * xterm.c (x_bitmap_icon): Return if xg_set_icon succeeds. - -2003-07-31 Kenichi Handa - - * process.c (read_process_output): Return the actually read bytes - instead of the result of decoding. - -2003-07-31 Kenichi Handa - - * xterm.h (struct x_bitmap_record): New member have_mask. - - * xfns.c (x_create_bitmap_from_data): Initialize have_mask member - to 0. - (x_create_bitmap_from_file): Likewise. - (x_destroy_bitmap): Check have_mask member before freeing a mask. - (x_destroy_all_bitmaps): Likewise. - (x_create_bitmap_mask): Set have_mask member to 1. - -2003-07-30 Richard M. Stallman - - * Makefile.in (CFLAGS) [!OPTIMIZE]: Undo previous change. - -2003-07-29 Jan Dj,Ad(Brv - - * gtkutil.c (xg_mark_data): Update calls to mark_object. - -2003-07-29 Richard M. Stallman - - * xterm.c (xim_open_dpy, xim_initialize, xim_close_dpy): - Conditionalize XIM code on HAVE_XIM. - - * fns.c (Fclear_string): New function. - (syms_of_fns): defsubr it. - -2003-07-28 KOBAYASHI Yasuhiro - - * xfns.c (xic_set_preeditarea): Add the left fringe width to spot.x. - -2003-07-22 Stefan Monnier - - * xfns.c: Don't check HAVE_PNG_H: autoconf doesn't seem to find it. - - * buffer.c (delete_all_overlays): New function. - * buffer.h (delete_all_overlays): Declare. - * coding.c (run_pre_post_conversion_on_str): - * print.c (temp_output_buffer_setup): - * fileio.c (Finsert_file_contents): - * minibuf.c (get_minibuffer): Use it. - -2003-07-22 Andrew Choi - - * unexmacosx.c (unexec_regions_sort_compare): - (unexec_regions_merge): New functions. Sort and merge unexec - regions before dumping them. - -2003-07-22 Dave Love - - * xfns.c [HAVE_PNG]: Consider both png.h and libpng/png.h. - -2003-07-21 Stefan Monnier - - * alloc.c (MARK_STRING, UNMARK_STRING, STRING_MARKED_P) - (GC_STRING_CHARS, string_bytes): Use ARRAY_MARK_FLAG rather than - MARKBIT as the gcmarkbit for strings. - -2003-07-21 Richard M. Stallman - - * s/openbsd.h (LD_SWITCH_SYSTEM_TEMACS): Add undef. - - * fns.c (Flocale_info): Rename from Flanginfo. Doc fixes. - (syms_of_fns): Corresponding change. - - * alloc.c (syms_of_alloc): Doc fixes. - -2003-07-20 Han Boetes (tiny change) - - * s/netbsd.h: Use -Wl syntax. - -2003-07-17 Richard M. Stallman - - * xterm.c (xim_initialize): Redo 6/24 change. - -2003-07-15 Stefan Monnier - - * buffer.c (copy_overlays): Use EMACS_INT for positions. - (Fswitch_to_buffer): Don't signal an error when switching to the same - buffer in a dedicated window. - - * alloc.c: Use bitmaps for cons, as was done for floats. - (init_float, init_cons): Let the normal code allocate the first block. - (CONS_BLOCK_SIZE): Redefine based on BLOCK_BYTES and bitmap size. - (CONS_BLOCK, CONS_INDEX, CONS_MARKED_P, CONS_MARK, CONS_UNMARK): - New macros. - (struct cons_block): Move conses to the beginning. Add gcmarkbits. - (Fcons): Use lisp_align_malloc and CONS_UNMARK. - (live_cons_p): Check the pointer is not past the `conses' array. - (mark_maybe_object, mark_maybe_pointer): Use CONS_MARKED_P. - (mark_object, mark_buffer): Use CONS_MARKED_P and CONS_MARK. - (survives_gc_p): Use CONS_MARKED_P and simplify. - (gc_sweep): Use CONS_MARKED_P, CONS_UNMARK, and lisp_align_free. - -2003-07-13 Paul Eggert - - GCC 3.3 (sparc) no longer puts "int foo = 0;" into data; it - puts it into BSS instead, at least on Solaris 8 and 9. - This is a valid optimization, and it may occur on other platforms, - so Emacs should not assume that initializing a static variable to - zero puts it into data. - * alloc.c (pure, staticvec): - Initialize these arrays to nonzero, so that they're not - put into BSS by that optimization. - -2003-07-13 Stefan Monnier - - * alloc.c (BLOCK_PADDING): Rename from ABLOCKS_PADDING. Update users. - (lisp_align_malloc): Use posix_memalign is available. - (ABLOCKS_BASE): Use HAVE_POSIX_MEMALIGN as an optimization. - (STRING_BLOCK_SIZE): Rename from STRINGS_IN_STRING_BLOCK - for consistency. Update users. - -2003-07-13 Richard M. Stallman - - * s/netbsd.h (START_FILES_1, END_FILES_1): Always define them. - -2003-07-13 Terje Rosten - - * xterm.c (x_bitmap_icon, x_wm_set_icon_pixmap): Modify to add mask, - and use the Gtk+ function gtk_window_icon_from_file if available. - - * xfns.c (x_bitmap_mask, x_create_bitmap_mask): New functions to - handle mask of bitmaps. - (x_allocate_bitmap_record, x_destroy_bitmap): Modify to handle the - mask property. - (xg_set_icon): New function, wrapper for gtk_window_icon_from_file. - - * xterm.h (xg_set_icon): New function. - -2003-07-12 Paul Eggert - - * unexelf.c (unexec): Consider a section to precede the .bss - section if its addresses overlap that of .bss. - -2003-07-12 Richard M. Stallman - - * Makefile.in (CFLAGS) [!OPTIMIZE]: Set CFLAGS to -g. - - * config.in (HAVE_CRTIN): Add #undef. - (INLINE): Really inline only if OPTIMIZE is defined. - - * s/netbsd.h (START_FILES, LIB_STANDARD): Use START_FILES_1, - END_FILES_1. - (START_FILES_1, END_FILES_1): New macros (conditional). - (LD_SWITCH_SYSTEM_TEMACS): Define. - - * s/openbsd.h: Don't include bsd4-3.h. - (TERMINFO): Define. - (LIBS_TERMCAP): Define. - (LD_SWITCH_SYSTEM): Define (two definitions). - - * xfns.c: Include libpng/png.h instead of png.h. - -2003-07-11 Andreas Schwab - - * buffer.c (modify_overlay): Update prototype. - * lisp.h (adjust_overlays_for_insert, adjust_overlays_for_delete): - Likewise. - -2003-07-09 Stefan Monnier - - * lisp.h (VALBITS): Define in terms of GCTYPEBITS. - (struct interval): Move to intervals.h. - (struct Lisp_Marker): Use EMACS_INT for position info. - (forward_point): Remove prototype of defunct function. - (Qmodification_hooks, Qrear_nonsticky, Fnext_property_change) - (Fget_text_property, Fset_text_properties, Ftext_propertes_not_all) - (syms_of_textprop, set_text_properties): Remove prototypes that are - already in intervals.h. - - * intervals.h (struct interval): Move from lisp.h. - Use EMACS_INT for position and size info. - - * coding.c: Include intervals.h for Fset_text_properties. - - * buffer.h (struct buffer_text, struct buffer): Use EMACS_INT for - position and length information. - -2003-07-09 Stefan Monnier - - * buffer.h (struct buffer_text, struct buffer): Use EMACS_INT for - position and length information. - -2003-07-09 Stefan Monnier - - Change overlays_after and overlays_before so the overlays themselves - are linked into lists, rather than using cons cells. After all each - Lisp_Misc already occupies 5 words, so we can add a `next' field to - Lisp_Overlay for free and save up one cons cell per overlay (not - to mention one indirection when traversing the list of overlay). - - * lisp.h (struct Lisp_Overlay): New field `next'. - - * buffer.h (struct buffer): Change overlays_before and overlays_after - from Lisp lists of overlays to pointers to overlays. - - * buffer.c (overlay_strings, recenter_overlay_lists): - Fix typo in eassert in last commit. - (unchain_overlay): New function. - (add_overlay_mod_hooklist): Use AREF. - (copy_overlays, reset_buffer, overlays_at, overlays_in) - (overlay_touches_p, overlay_strings, recenter_overlay_lists) - (fix_overlays_in_range, fix_overlays_before, Fmake_overlay) - (Fmove_overlay, Fdelete_overlay, Foverlay_lists) - (report_overlay_modification, evaporate_overlays, init_buffer_once): - Adjust to new type of overlays_(before|after). - - * alloc.c (mark_object): Mark the new `next' field of overlays. - (mark_buffer): Manually mark the overlays_(after|before) fields. - - * coding.c (run_pre_post_conversion_on_str): - * editfns.c (overlays_around): - * xdisp.c (load_overlay_strings): - * fileio.c (Finsert_file_contents): - * indent.c (current_column): - * insdel.c (signal_before_change, signal_after_change): - * intervals.c (set_point_both): - * print.c (temp_output_buffer_setup): Use new type for - overlays_(before|after). - -2003-07-08 Stefan Monnier - - * buffer.c (report_overlay_modification): Don't run hooks while - traversing the list of overlays. - - * buffer.h (struct buffer): Use an int for overlay_center. - (overlays_at, evaporate_overlays, recenter_overlay_lists) - (overlay_strings, fix_overlays_before): Use EMACS_INT for positions. - - * buffer.c (reset_buffer, recenter_overlay_lists) - (adjust_overlays_for_insert, adjust_overlays_for_delete) - (fix_overlays_in_range, Fmake_overlay, Fmove_overlay) - (evaporate_overlays, init_buffer_once): Update use of overlay_center. - (overlays_at, evaporate_overlays, recenter_overlay_lists) - (overlay_strings, fix_overlays_before): Use EMACS_INT for positions. - - * xdisp.c (fast_find_position): Remove unused var. - - * cmds.c (Qexpand_abbrev): New sym. - (syms_of_cmds): Initialize it. - (internal_self_insert): Use it to call expand-abbrev. - -2003-07-09 Kim F. Storm - - * xterm.c (use_xim) [!USE_XIM]: Default to disable XIM if Emacs - was configured with --without-xim. - (x_term_init) [!USE_XIM]: Use `useXIM' resource to turn on XIM. - -2003-07-07 Richard M. Stallman - - * xdisp.c (reseat_1): Set it->area to TEXT_AREA. - - * alloc.c (Fgarbage_collect): Doc fix. - -2003-07-07 Nozomu Ando - - * buffer.c (Fkill_buffer): Clear charpos cache if necessary. - -2003-07-06 Stefan Monnier - - * minibuf.c (read_minibuf): UNGCPRO before returning. - (Ftry_completion, Fall_completions): Doc fix. - - * alloc.c (live_float_p): Check that p is not past the `floats' array, - now that `floats' is not the last element of the struct any more. - -2003-07-06 Jason Rumney - - * w32term.h (ClipboardSequence_Proc): New type. - - * w32fns.c (clipboard_sequence_fn): New variable. - (globals_of_w32fns): Initialize it. - - * w32select.c (last_clipboard_sequence_number): New variable. - (Fw32_set_clipboard_data, Fw32_get_clipboard_data): Use sequence - number if possible. - -2003-07-06 Stefan Monnier - - * m/amdx86-64.h (MARKBIT): - * m/ia64.h (MARKBIT): Remove definition since lisp.h does not compare - MARKBIT and ARRAY_MARK_FLAG any more. - - * m/hp800.h (XSETMARKBIT): - * m/sr2k.h (XSETMARKBIT): - * lisp.h (XSETMARKBIT): Remove unused macro. - - * lisp.h (mark_object): Change prototype. - - * alloc.c (mark_object): Change arg *Lisp_Object -> Lisp_Object. - (last_marked): Change accordingly. - (mark_interval, mark_maybe_object, mark_maybe_pointer) - (Fgarbage_collect, mark_glyph_matrix, mark_face_cache, mark_image) - (mark_buffer): Update calls to mark_object. - - * bytecode.c (mark_byte_stack): - * fns.c (sweep_weak_table): - * keyboard.c (mark_kboards): Update calls to mark_object. - -2003-07-06 Jason Rumney - - * alloc.c (struct ablock): Only include padding when there is some. - -2003-07-04 Stefan Monnier - - * alloc.c (ALIGN): Add casts to simplify usage. - (BLOCK_ALIGN, BLOCK_BYTES, ABLOCKS_PADDING, ABLOCKS_SIZE) - (ABLOCKS_BYTES, ABLOCK_ABASE, ABLOCKS_BUSY, ABLOCKS_BASE): New macros. - (struct ablock, struct ablocks): New types. - (free_ablock): New global var. - (lisp_align_malloc, lisp_align_free): New functions. - (FLOAT_BLOCK_SIZE): Redefine in terms of BLOCK_BYTES. - (struct float_block): Reorder and add gcmarkbits. - (GETMARKBIT, SETMARKBIT, UNSETMARKBIT, FLOAT_BLOCK, FLOAT_INDEX) - (FLOAT_MARKED_P, FLOAT_MARK, FLOAT_UNMARK): New macros. - (init_float, make_float): Use lisp_align_malloc. - (free_float, live_float_p): Don't use `type' any more. - (make_float): Use FLOAT_UNMARK to access to mark bit. - (mark_maybe_object, mark_maybe_pointer, survives_gc_p): - Use FLOAT_MARKED_P to access the mark bit. - (pure_alloc): Simplify use of ALIGN. - (mark_object): Use FLOAT_MARK to access the mark bit. - (gc_sweep): Use new macros to access the float's mark bit. - (init_alloc_once): Init free_ablock. - - * lisp.h (struct Lisp_Float): Remove unused field `type'. - -2003-06-27 Stefan Monnier - - * alloc.c (VECTOR_MARK, VECTOR_UNMARK, VECTOR_MARKED_P): New macros. - (GC_STRING_BYTES): Don't mask markbit (it's only used on `size'). - (allocate_buffer): Move. - (string_bytes): Don't mask markbit of `size_byte'. - (mark_maybe_object, mark_maybe_pointer, Fgarbage_collect) - (mark_object, mark_buffer, survives_gc_p, gc_sweep): - Use the `size' field of buffers (rather than the `name' field) for - the mark bit, as is done for all other vectorlike objects. - Use the new macros to access the mark bit of vectorlike objects. - -2003-06-26 Richard M. Stallman - - * puresize.h (BASE_PURESIZE): Increment base size. - - * xdisp.c (fast_find_position): Enable Gerd's new definition. - - * xterm.c (xim_initialize): Undo previous change. - -2003-06-26 Stefan Monnier - - * alloc.c (survives_gc_p): Simplify. - - * buffer.c (set_buffer_internal_1): Test CONSP for lists. - - * window.c (Fset_window_dedicated_p): Simplify. - (display_buffer_1): Don't raise the win from which minibuf was entered. - (temp_output_buffer_show): Don't assume BEG == 1. Simplify. - (Fminibuffer_selected_window): Simplify. - - * buffer.h (struct buffer_text): Lisp_Object `markers' => Lisp_Marker. - - * lisp.h (unchain_marker): Lisp_Object arg => Lisp_Marker. - (struct Lisp_Marker): Lisp_Object `chain' => Lisp_Marker `next'. - - * insdel.c (check_markers, adjust_markers_for_delete) - (adjust_markers_for_insert, adjust_markers_for_replace) - (prepare_to_modify_buffer, RESTORE_VALUE): - * marker.c (buf_charpos_to_bytepos, buf_bytepos_to_charpos) - (Fset_marker, set_marker_restricted, set_marker_both, unchain_marker) - (set_marker_restricted_both, Fbuffer_has_markers_at, count_markers): - * alloc.c (Fmake_marker, free_marker, gc_sweep): - * buffer.c (Fget_buffer_create, Fkill_buffer, Fset_buffer_multibyte): - * editfns.c (save_excursion_restore, transpose_markers): - * window.c (delete_window): - * xdisp.c (message_dolog): Update for new types. - -2003-06-26 Jan Dj,Ad(Brv - - * xfaces.c (set_font_frame_param): Set default_face_done_p to zero. - (realize_default_face): Use default_face_done_p for the force_p - argument to set_lface_from_font_name. Set default_face_done_p to one. - - * frame.c (make_frame): Initialize default_face_done_p. - - * frame.h (struct frame): Add default_face_done_p. - - * config.in: Add XRegisterIMInstantiateCallback_arg6 so it - will be defined. - -2003-06-25 Stefan Monnier - - * alloc.c (make_interval, Fmake_symbol, allocate_misc): - Initialize the new field `gcmarkbit'. - (mark_interval, MARK_INTERVAL_TREE): Use the new `gcmarkbit' field. - (mark_interval_tree): Don't mark the tree separately from the nodes. - (UNMARK_BALANCE_INTERVALS): Don't unmark the tree. - (mark_maybe_object, mark_maybe_pointer, Fgarbage_collect) - (mark_object, survives_gc_p, gc_sweep): Use new `gcmarkbit' fields. - - * lisp.h (struct interval, struct Lisp_Symbol, struct Lisp_Free) - (struct Lisp_Marker, struct Lisp_Intfwd, struct Lisp_Boolfwd) - (struct Lisp_Kboard_Objfwd, struct Lisp_Save_Value) - (struct Lisp_Buffer_Local_Value, struct Lisp_Overlay) - (struct Lisp_Objfwd, struct Lisp_Buffer_Objfwd): Add `gcmarkbit' field. - -2003-06-24 Dave Love - - * xterm.c (xim_initialize): Use XRegisterIMInstantiateCallback_arg6. - - * strftime.c: Test HAVE_SYS__MBSTATE_H, not __hpux. Merge changes - from gnulib. - -2003-06-21 Richard M. Stallman - - * fileio.c (Fwrite_region): Alternate messages - for append and partial write. - - * keyboard.c (read_key_sequence): When converting upcase fn key to - downcase, update fkey and keytran so `backspace' gets translated. - - * keyboard.c (read_avail_input): Don't signal SIGHUP in batch mode. - - * process.c (wait_reading_process_input): Don't signal SIGIO - in batch mode. - -2003-06-17 Kenichi Handa - - * Makefile.in (xselect.o): Don't depend on charset.h, coding.h, - composite.h. - - * xselect.c: Don't include charset.h, coding.h, composite.h. - (Qforeign_selection): New variable. - (syms_of_xselect): Intern and static it. - (selection_data_to_lisp_data): Return a unibyte string made from - data with `foreign-selection' text property. - -2003-06-15 Stefan Monnier - - * termhooks.h (EVENT_INIT): New macro. - - * keyboard.c (mark_kboards): Move from alloc.c. Mark kbd_buffer. - - * alloc.c (mark_kboards): Move to keyboard.c. - - * keyboard.c (record_asynch_buffer_change, read_avail_input): - * xterm.c (x_dispatch_event): - * xmenu.c (find_and_call_menu_selection): - * xdisp.c (handle_tool_bar_click): - * w32menu.c (menubar_selection_callback): - * sysdep.c (kbd_input_ast, read_input_waiting): - * msdos.c (dos_rawgetc): - * macterm.c (mac_check_for_quit_char): - * macmenu.c (menubar_selection_callback): - * gtkutil.c (xg_tool_bar_callback): Don't pass uninitialized - data to kbd_buffer_store_event. - -2003-06-15 Kim F. Storm - - * xdisp.c (x_fix_overlapping_area): Always use area relative X - to fix redisplay problem with tall characters (such as ,AC(B). - -2003-06-13 Kai Gro,A_(Bjohann - - * fileio.c (Fcopy_file): Doc fix: copies file modes, too. - -2003-06-12 Kenichi Handa - - * fileio.c (Fwrite_region): Save and restore restriction. - -2003-06-12 Dave Love - - * alloca.c (alloca): Declare arg as size_t. - - * sysdep.c: Remove redundant include of unistd.h, stdlib.h. - Use HAVE_DECL_SYS_SIGLIST, not SYS_SIGLIST_DECLARED. - -2003-06-11 Dave Love - - * search.c (shrink_regexp_cache): Use xrealloc. - (syms_of_search): Use xmalloc. - -2003-06-10 Kim F. Storm - - * xdisp.c (phys_cursor_in_rect_p): Fix 2003-05-24 change. - Adjust phys_cursor.x to be relative to window box, rather than - text area before checking -- to ensure cursor is redrawn when - exposing window. - Note: This also fixes a similar (older) bug if display margins - are present. - -2003-06-06 Kenichi Handa - - * coding.c (encoding_buffer_size): If coding->type is - coding_type_ccl, double magnification on CRLF encoding. - -2003-06-06 Jason Rumney - - * w32reg.c (SYSTEM_DEFAULT_RESOURCES): New constant. - (w32_get_string_resource): Try SYSTEM_DEFAULT_RESOURCES last. - - * xfaces.c (Finternal_face_x_get_resource): Do it on Windows and - Mac too. - -2003-06-05 Dave Love - - * strftime.c: Merge changes from gnulib. - - * mktime.c (__mktime_internal): Merge changes from gnulib - involving year 69 and dst2. - - Changes to merge with gnulib version and be consistent with the - autoconf test: - - * getloadavg.c: Set NLIST_STRUCT from HAVE_NLIST_H. - Use HAVE_STRUCT_NLIST_N_UN_N_NAME, not NLIST_NAME_UNION. - [HAVE_LOCALE_H]: Include locale.h. - (getloadavg) [HAVE_SETLOCALE]: Run sscanf in C locale. - -2003-06-05 Kim F. Storm - - * window.c (coordinates_in_window): Convert X and Y to window - relative coordinates inside mode-line and header-line parts. - Convert X and Y to margin area relative coordinates inside left - and right display margin parts. - -2003-06-05 Jason Rumney - - * w32fns.c (add_system_logical_colors_to_map): New function. - (Fx_open_connection): Use it. - -2003-06-04 Stefan Monnier - - * process.c (allocate_pty): Revert part of the previous patch. - (Faccept_process_output): Simplify. - -2003-06-04 Jason Rumney - - * termhooks.h (enum event_kind): Remove MOUSE_WHEEL_EVENT. - - * keyboard.c (Qmouse_wheel, mouse_wheel_syms) - (lispy_mouse_wheel_names): Remove. - (syms_of_keyboard): Remove Qmouse_wheel and mouse_wheel_syms. - Always define drag_and_drop_syms. - - * macterm.c (XTread_socket): Map mouse wheel events to Emacs - WHEEL_EVENT events. - -2003-06-03 Stefan Monnier - - * xdisp.c (update_tool_bar): Add missing UNGCPRO. - - * buffer.c (init_buffer_once): Make kill-buffer-hook permanent-local. - -2003-06-03 Jan Dj,Ad(Brv - - * gtkutil.c (make_menu_item): Make sure we don't crash on a NULL - menu item label. - -2003-06-03 Richard M. Stallman - - * window.c (Fwindow_edges): Doc fix. - (Fwindow_pixel_edges, Fwindow_inside_edges) - (Fwindow_inside_pixel_edges): New functions. - (syms_of_window): defsubr them. - - * window.h (WINDOW_LEFT_FRINGE_COLS, WINDOW_RIGHT_FRINGE_COLS) - (WINDOW_MODE_LINE_LINES, WINDOW_HEADER_LINE_LINES): New macros. - -2003-06-02 Stefan Monnier - - * dispnew.c (Fsit_for): Don't lie about the number of args. - -2003-06-02 Dave Love - - * callproc.c: Use HAVE_FCNTL_H, not USG5. - (syms_of_callproc) : Doc fix. - - * doc.c: Use HAVE_FCNTL_H, not USG5. - - * xfaces.c (font_rescale_ratio): Fix for K&R. - - * termcap.c: Use HAVE_FCNTL_H, not _POSIX_VERSION. - - * mem-limits.h: Use HAVE_SYS_RESOURCE_H, HAVE_SYS_VLIMIT_H. - - * lread.c [HAVE_FCNTL_H]: Include fcntl.h. - - * gtkutil.c: Include keyboard.h, charset.h, coding.h. - (xg_create_frame_widgets): Use ENCODE_UTF_8. - - * xterm.c (Qutf_8): Move to coding.c - - * xmenu.c (ENCODE_MENU_STRING): New. - (list_of_panes, list_of_items, digest_single_submenu, xmenu_show): - Use it. - - * coding.h (ENCODE_UTF_8): New. - (Qutf_8): Declare. - - * coding.c (Qutf_8): New. - (syms_of_coding): Intern it. - - * fns.c: Doc fixes. - -2003-06-02 Kenichi Handa - - * buffer.c (Fset_buffer_multibyte): Fix previous change. - -2003-06-01 Stefan Monnier - - * lread.c (openp): Make sure STR is a string. - -2003-06-01 David Ponce - - * termhooks.h (enum event_kind): Add new WHEEL_EVENT event. - Declare MOUSE_WHEEL_EVENT only if MAC_OSX defined. - - * keyboard.c (Qmouse_wheel): Declare only if MAC_OSX defined. - (mouse_wheel_syms, lispy_mouse_wheel_names): Likewise. - (discard_mouse_events): Discard WHEEL_EVENT events too. - (lispy_wheel_names, wheel_syms): New. - (syms_of_keyboard): Init and staticpro `wheel_syms'. Init and - staticpro `Qmouse_wheel' and `mouse_wheel_syms' only if MAC_OSX defined. - (make_lispy_event): Add WHEEL_EVENT handler. - - * w32term.c (construct_mouse_wheel): Construct WHEEL_EVENT. - (w32_read_socket): Map w32 WM_MOUSEWHEEL events to Emacs - WHEEL_EVENT events. - -2003-05-31 John Paul Wallington - - * Makefile.in (lisp, shortlisp): byte-run, float-sup, map-ynp, and - timer are in lisp/emacs-lisp. - -2003-05-31 Kenichi Handa - - * buffer.c (Fset_buffer_multibyte): Correctly recover a narrowed - region when a buffer is changed to unibyte. - - * charset.h (VALID_LEADING_CODE_P): New macro. - (UNIBYTE_STR_AS_MULTIBYTE_P): Check more rigidly. - - * coding.c (DECODE_EMACS_MULE_COMPOSITION_CHAR): If coding->flags - is nonzero, accept multibyte form of eight-bit-control chars. - (decode_composition_emacs_mule): Likewise. - (decode_coding_emacs_mule): Likewise. - (encode_coding_emacs_mule): If coding->flags is nonzero, produce - multibyte form of eight-bit-control chars. - - * fileio.c (Qauto_save_coding, auto_save_coding): New variables. - (Finsert_file_contents): If coding-system-for-read is bound to - Qauto_save_coding, use the coding system emacs-mule with special - setting for recovering a file. - (choose_write_coding_system): On auto saving, use the coding - system emacs-mule with special setting for auto saving. - (syms_of_fileio) : Intern and staticpro it. - -2003-05-30 Kenichi Handa - - * coding.c (ccl_coding_driver): Set ccl->eight_bit_control - properly before calling ccl_driver. - - * ccl.h (struct ccl_program) : Comment fixed. - - * ccl.c (CCL_WRITE_CHAR): Increment extra_bytes only when it is nonzero. - (ccl_driver): Initialize extra_bytes to ccl->eight_bit_control. - (setup_ccl_program): Initialize ccl->eight_bit_control to zero. - -2003-05-29 Glenn Morris - - * xfaces.c (realize_default_face): Do not abort if lface is - non-existent - reverts change from 2003-05-19. - -2003-05-29 Kenichi Handa - - * coding.c (decode_coding_iso2022): Pay attention to the byte - sequence of CTEXT extended segment, and retain those bytes as is. - -2003-05-28 Kenichi Handa - - * coding.c (ENCODE_UNSAFE_CHARACTER): Adjust for the name change - of CODING_REPLACEMENT_CHARACTER. - (decode_coding_iso2022): If CODING_FLAG_ISO_SAFE, set - CODING_MODE_INHIBIT_UNENCODABLE_CHAR flag in coding->mode, and - check this flag on encoding. - (encode_coding_sjis_big5): - Check CODING_MODE_INHIBIT_UNENCODABLE_CHAR flag of coding->mode. - (Fset_terminal_coding_system_internal): - Set CODING_MODE_INHIBIT_UNENCODABLE_CHAR flag in terminal_coding.mode - instead of setting CODING_FLAG_ISO_SAFE flag in terminal_coding.flags. - - * coding.h (CODING_REPLACEMENT_CHARACTER): Rename from - CODING_INHIBIT_CHARACTER_SUBSTITUTION. - (CODING_MODE_INHIBIT_UNENCODABLE_CHAR): New macro. - -2003-05-28 Richard M. Stallman - - * print.c (syms_of_print) : Doc fix. - - * eval.c (unbind_to): Move init of this_binding to separate statement. - -2003-05-28 Kim F. Storm - - * xdisp.c (expose_window): Fix error in calculation of - window relative coordinates of area to redisplay. - -2003-05-27 Jason Rumney - - * w32term.c (GET_WHEEL_DELTA_WPARAM): New macro. - -2003-05-27 David Ponce - - Handle W32 mouse wheel events as mouse click events, like in X. - - * keyboard.c (make_lispy_event) [WINDOWSNT]: Don't handle - MOUSE_WHEEL_EVENT anymore. - - * w32term.c (construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. - Scrolling down/up the mouse wheel is respectively mapped to mouse - button 4 and 5. - (w32_read_socket): Map w32 WM_MOUSEWHEEL events to Emacs - MOUSE_CLICK_EVENT events. Forward w32 MSH_MOUSEWHEEL events as - WM_MOUSEWHEEL events. - -2003-05-27 Andreas Schwab - - * buffer.c (syms_of_buffer) : Doc fix. - - * xdisp.c (try_window_id): Avoid aborting if PT is inside a - partially visible line. - - * alloc.c (Fgarbage_collect): Fix last change. - -2003-05-26 John Paul Wallington - - * xfns.c (Fx_create_frame): Don't call Qface_set_after_frame_default. - -2003-05-25 Stefan Monnier - - * window.c (Fset_window_buffer): Add type of `keep_margins'. - (Fset_window_fringes, Fset_window_scroll_bars): Declare before use. - - * window.h (window_box_text_cols): Declare. - - * xdisp.c (window_text_bottom_y, draw_row_fringe_bitmaps) - (x_draw_vertical_border): Remove unused var `f'. - - * xfaces.c (build_scalable_font_name): Remove `unused var - pixel_size' warning. - - * xfns.c (png_load): Remove `unused vars intent, image_gamma' warning. - - * unexelf.c (unexec): Remove `unused var n' warning. - - * strftime.c (my_strftime_localtime_r): Remove `defined but - unused' warning. - - * process.c (allocate_pty): Remove `unused var stb' and - `cp might be used uninitialized' warnings. - - * dispnew.c (mode_line_string): Remove unused var `f'. - - * coding.c (find_safe_codings): Remove unused var `i'. - - * bytecode.c (Fbyte_code): Remove `unused val' warning. - - * buffer.c (Fkill_buffer): Remove unused var `list'. - - * alloc.c (Fgarbage_collect): Remove `unused var tail' warning. - -2003-05-25 Jan Dj,Ad(Brv - - * frame.c (make_frame): Condition want_fullscreen with - HAVE_WINDOW_SYSTEM. - -2003-05-25 Juanma Barranquero - - * window.c (Fset_window_scroll_bars): Fix typo in argument name. - (Fwindow_scroll_bars): Fix typo in docstring. - -2003-05-24 Kim F. Storm - - The following changes serve several purposes: - - 1) Swap the position of fringes and display margins in windows, i.e. - the fringes are now displayed between the margins and the text area - (by default). - - 2) Allow fringe and scroll bar parameters to be set per-buffer and - per-window (like display margins). Such settings are now stored - in window configurations, preserved when frames are resized, and - copied when windows are split vertically or horizontally. - Several bugs related to display margins have been fixed. - - 3) Consistently use FRAME_FONT and FRAME_FONTSET macros. - - 4) Use FRAME_COLUMN_WIDTH (f) consistently throughout the code - rather than FRAME_WIDTH (FRAME_FONT (f)). - - 5) Introduce a consistent naming of variables, members and macros - depending on whether their value is measured in pixels or in - canonical columns/lines. Pixel dimensions are named *_width and - *_height, while canonical columns/lines are named *_cols and - *_lines. Pixel positions are named *_x and *_y, while column/line - positions are named *_col and *_line. - - 6) Consolidate more of the X, W32, and MAC gui code by moving - common data into struct frame, and generalize it for the non-gui - case by using suitable defaults. - - 7) Cleanup and consolidate the macros controlling frame and window - layout into frame.h and window.h, and generalize the use of the - various window_box_* functions (enhanced to handle the new fringe - position and the per-window fringe and scroll bar settings). - - * frame.h (struct frame): Rename members height to text_lines, - width to text_cols, window_height to total_lines, window_width to - total_cols, new_height to new_text_lines, new_width to - new_text_cols. All uses changed. - (struct frame): New members which consolidate common members of - x_output, w32_output, and mac_output structures: left_pos, - top_pos, pixel_height, pixel_width, x_pixels_diff, y_pixels_diff, - win_gravity, size_hint_flags, border_width, internal_border_width, - line_height, fringe_cols, left_fringe_width, right_fringe_width, - want_fullscreen. All uses changed. - (struct frame): New member column_width contaning the canonical - column width, analogue to line_height. All uses changed. - (struct frame): Rename members scroll_bar_pixel_width to - config_scroll_bar_width, and scroll_bar_cols to - config_scroll_bar_cols. All uses changed. - (struct frame): New member scroll_bar_actual_width which - consolidates and renames the vertical_scroll_bar_extra member of - x_output, w32_output, and mac_output structures. All uses changed. - (FRAME_PIXEL_HEIGHT): Rename from PIXEL_HEIGHT and moved - from x/w32/macterm.h files. All uses changed. Also change code - which referred to f->output_data...->pixel_height. - (FRAME_PIXEL_WIDTH): Rename from PIXEL_WIDTH and moved - from x/w32/macterm.h files. All uses changed. Also change code - which referred to f->output_data...->pixel_width. - (FRAME_LINES): Rename from FRAME_HEIGHT. All uses changed. - Also change code which referred to f->height. - (FRAME_COLS): Rename from FRAME_WIDTH. All uses changed. - Also change code which referred to f->width. - (FRAME_NEW_HEIGHT, FRAME_NEW_WIDTH): Remove macros; change uses - to update new_text_lines and new_text_cols members directly. - (FRAME_CONFIG_SCROLL_BAR_WIDTH): Rename from - FRAME_SCROLL_BAR_PIXEL_WIDTH. All uses changed. - (FRAME_CONFIG_SCROLL_BAR_COLS): Rename from - FRAME_SCROLL_BAR_COLS. All uses changed. - (FRAME_LEFT_SCROLL_BAR_COLS, FRAME_RIGHT_SCROLL_BAR_COLS): - Rename from FRAME_LEFT_SCROLL_BAR_WIDTH and - FRAME_RIGHT_SCROLL_BAR_WIDTH, resp. All uses changed. - (FRAME_SCROLL_BAR_AREA_WIDTH, FRAME_LEFT_SCROLL_BAR_AREA_WIDTH) - (FRAME_RIGHT_SCROLL_BAR_AREA_WIDTH): New macros. - (FRAME_TOTAL_COLS): Rename from FRAME_WINDOW_WIDTH. - (SET_FRAME_COLS): Rename from SET_FRAME_WIDTH. - (FRAME_TOTAL_COLS_ARG): Rename from FRAME_WINDOW_WIDTH_ARG. - (WINDOW_VERTICAL_SCROLL_BAR_COLUMN): Remove unused macro. - (WINDOW_VERTICAL_SCROLL_BAR_HEIGHT): Remove unused macro. - (FRAME_LINE_HEIGHT): Rename from CANON_Y_UNIT. - Unconditionally return line_height member (it now has proper value - also for non-window frames). - (FRAME_COLUMN_WIDTH): Rename from CANON_X_UNIT. Unconditionally - return new column_width member (rather than the default font width). - (FRAME_FRINGE_COLS, FRAME_LEFT_FRINGE_WIDTH) - (FRAME_RIGHT_FRINGE_WIDTH): Rename from FRAME_X_... and moved - from x/w32/macterm.h files. Unconditionally return corresponding - member of frame structure (they now have proper values also for - non-window frames). - (FRAME_TOTAL_FRINGE_WIDTH): Rename from FRAME_FRINGE_WIDTH. - Calculate return value from left and right widths. - (FRAME_INTERNAL_BORDER_WIDTH): Unconditionally return - internal_border_width member (has proper value for non-window frame). - (FRAME_PIXEL_X_FROM_CANON_X): Rename from PIXEL_X_FROM_CANON_X. - (FRAME_PIXEL_Y_FROM_CANON_Y): Rename from PIXEL_Y_FROM_CANON_Y. - (FRAME_CANON_X_FROM_PIXEL_X): Rename from CANON_X_FROM_PIXEL_X. - (FRAME_CANON_Y_FROM_PIXEL_Y): Rename from CANON_Y_FROM_PIXEL_Y. - (FRAME_LINE_TO_PIXEL_Y): Rename from CHAR_TO_PIXEL_ROW, - consolidated from xterm.h, macterm.h, and w32term.h. - (FRAME_COL_TO_PIXEL_X): Rename from CHAR_TO_PIXEL_COL, - consolidated from xterm.h, macterm.h, and w32term.h. - (FRAME_TEXT_COLS_TO_PIXEL_WIDTH): Rename from - CHAR_TO_PIXEL_WIDTH consolidated from x/mac/w32term.h. - (FRAME_TEXT_LINES_TO_PIXEL_HEIGHT): Rename from - CHAR_TO_PIXEL_HEIGHT consolidated from x/mac/w32term.h. - (FRAME_PIXEL_Y_TO_LINE): Rename from PIXEL_TO_CHAR_ROW - consolidated from x/mac/w32term.h. - (FRAME_PIXEL_X_TO_COL): Rename from PIXEL_TO_CHAR_COL - consolidated from x/mac/w32term.h. - (FRAME_PIXEL_WIDTH_TO_TEXT_COLS): Rename from - PIXEL_TO_CHAR_WIDTH consolidated from x/mac/w32term.h. - (FRAME_PIXEL_HEIGHT_TO_TEXT_LINES): Rename from - PIXEL_TO_CHAR_HEIGHT consolidated from x/mac/w32term.h. - - * window.h (struct window): Rename members left to left_col, - top to top_line, height to total_lines, width to total_cols, - left_margin_width to left_margin_cols, right_margin_width to - right_margin_cols, orig_height to orig_total_lines, orig_top to - orig_top_line. All uses changed. - (struct window): New members left_fringe_width, right_fringe_width, - fringes_outside_margins, scroll_bar_width, vertical_scroll_bar_type. - (WINDOW_XFRAME, WINDOW_FRAME_COLUMN_WIDTH, WINDOW_FRAME_LINE_HEIGHT): - New macros primarily used to simplify other macros. - (WINDOW_TOTAL_COLS): New macro. Change relevant code that - referred to XINT (w->width). - (WINDOW_TOTAL_LINES): New macro. Change relevant code that - referred to XINT (w->height). - (WINDOW_TOTAL_WIDTH): New macro. Change relevant code that - referred to XINT (w->width) * canon_x_unit. - (WINDOW_TOTAL_HEIGHT): New macro. Change relevant code that - referred to XINT (w->height) * canon_y_unit. - (WINDOW_LEFT_EDGE_COL): New macro. Change relevant code that - referred to XINT (w->left). - (WINDOW_RIGHT_EDGE_COL): Rename from WINDOW_RIGHT_EDGE. Change - all uses and code that referred to XINT (w->left) + XINT (w->width). - (WINDOW_TOP_EDGE_LINE): New macro. Change relevant code that - referred to XINT (w->top). - (WINDOW_BOTTOM_EDGE_LINE): New macro. Change relevant code that - referred to XINT (w->top) + XINT (w->height). - (WINDOW_LEFT_EDGE_X): New macro. Change relevant code that - referred to XINT (w->left) * canon_x_unit. - (WINDOW_RIGHT_EDGE_X): New macro. Change relevant code that - referred to (XINT (w->left) + XINT (w->width)) * canon_x_unit. - (WINDOW_TOP_EDGE_Y): New macro. Change relevant code that - referred to XINT (w->top) * canon_y_unit. - (WINDOW_BOTTOM_EDGE_Y): New macro. Change relevant code that - referred to (XINT (w->top) + XINT (w->height)) * canon_y_unit. - (WINDOW_LEFTMOST_P): New macro. - (WINDOW_BOX_LEFT_EDGE_COL): Rename from WINDOW_LEFT_MARGIN. - All uses changed. - (WINDOW_BOX_RIGHT_EDGE_COL): Rename from WINDOW_RIGHT_MARGIN. - All uses changed. - (WINDOW_BOX_LEFT_EDGE_X): Rename from - WINDOW_DISPLAY_LEFT_EDGE_PIXEL_X, moved from dispextern.h. - Do not exclude left fringe width. - (WINDOW_BOX_RIGHT_EDGE_X): Rename from - WINDOW_DISPLAY_RIGHT_EDGE_PIXEL_X, moved from dispextern.h. - Do not exclude fringe widths. - (WINDOW_LEFT_FRINGE_WIDTH, WINDOW_RIGHT_FRINGE_WIDTH) - (WINDOW_FRINGE_COLS, WINDOW_TOTAL_FRINGE_WIDTH): New macros. - Change relevant code that referred to FRAME_LEFT_FRINGE_WIDTH, - FRAME_RIGHT_FRINGE_WIDTH, FRAME_FRINGE_COLS, and - FRAME_TOTAL_FRINGE_WIDTH to allow per-window fringe settings. - (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS): New macro. - (WINDOW_VERTICAL_SCROLL_BAR_TYPE, WINDOW_HAS_VERTICAL_SCROLL_BAR) - (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT) - (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT) - (WINDOW_CONFIG_SCROLL_BAR_WIDTH, WINDOW_CONFIG_SCROLL_BAR_COLS): - New macros. Change code which referenced corresponding - FRAME_VERTICAL_SCROLL_BAR_TYPE, FRAME_HAS_VERTICAL_SCROLL_BARS, - FRAME_HAS_VERTICAL_SCROLL_BARS_ON_LEFT, - FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT, - FRAME_SCROLL_BAR_PIXEL_WIDTH, and FRAME_SCROLL_BAR_COLS macros to - allow per-window scroll-bar settings. - (WINDOW_LEFT_SCROLL_BAR_COLS, WINDOW_RIGHT_SCROLL_BAR_COLS): New macros. - (WINDOW_LEFT_SCROLL_BAR_AREA_WIDTH): New macro. Change code that - referred to FRAME_LEFT_SCROLL_BAR_WIDTH. - (WINDOW_RIGHT_SCROLL_BAR_AREA_WIDTH): New macro. Change code - that referred to FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT and - FRAME_SCROLL_BAR_WIDTH. - (WINDOW_SCROLL_BAR_COLS, WINDOW_SCROLL_BAR_AREA_WIDTH) - (WINDOW_SCROLL_BAR_AREA_X): New macros. - (WINDOW_HEADER_LINE_HEIGHT): Rename from - WINDOW_DISPLAY_HEADER_LINE_HEIGHT, moved from dispextern.h. - (WINDOW_BOX_HEIGHT_NO_MODE_LINE): Rename from - WINDOW_DISPLAY_HEIGHT_NO_MODE_LINE, moved from dispextern.h. - (WINDOW_BOX_TEXT_HEIGHT): Rename from - WINDOW_DISPLAY_PIXEL_WIDTH, moved from dispextern.h. - (WINDOW_TO_FRAME_PIXEL_X, WINDOW_TO_FRAME_PIXEL_Y) - (FRAME_TO_WINDOW_PIXEL_X, FRAME_TO_WINDOW_PIXEL_Y) - (WINDOW_TEXT_TO_FRAME_PIXEL_X): Move here from dispextern.h. - (WINDOW_LEFT_MARGIN_WIDTH): Rename from - WINDOW_DISPLAY_LEFT_AREA_PIXEL_WIDTH, moved from dispextern.h. - (WINDOW_RIGHT_MARGIN_WIDTH): Rename from - WINDOW_DISPLAY_RIGHT_AREA_PIXEL_WIDTH, moved from dispextern.h. - (window_from_coordinates): Update prototype. - (Fset_window_buffer): Update EXFUN. - (set_window_buffer): Update prototype. - - * dispextern.h (struct glyph_matrix): Rename members window_left_x - to window_left_col, window_top_y to window_top_line. All uses - changed. - (FRAME_INTERNAL_BORDER_WIDTH_SAFE): Remove macro; can now safely - use FRAME_INTERNAL_BORDER_WIDTH macro instead as - internal_border_width is now set to 0 for non-window frames. - (WINDOW_DISPLAY_PIXEL_WIDTH, WINDOW_DISPLAY_PIXEL_HEIGHT) - (WINDOW_DISPLAY_MODE_LINE_HEIGHT, WINDOW_DISPLAY_HEADER_LINE_HEIGHT) - (WINDOW_DISPLAY_HEIGHT_NO_MODE_LINE, WINDOW_DISPLAY_TEXT_HEIGHT) - (WINDOW_DISPLAY_LEFT_EDGE_PIXEL_X, WINDOW_DISPLAY_RIGHT_EDGE_PIXEL_X) - (WINDOW_DISPLAY_TOP_EDGE_PIXEL_Y, WINDOW_DISPLAY_BOTTOM_EDGE_PIXEL_Y) - (WINDOW_TO_FRAME_PIXEL_X, WINDOW_TO_FRAME_PIXEL_Y) - (FRAME_TO_WINDOW_PIXEL_X, FRAME_TO_WINDOW_PIXEL_Y) - (WINDOW_DISPLAY_LEFT_AREA_PIXEL_WIDTH) - (WINDOW_DISPLAY_RIGHT_AREA_PIXEL_WIDTH, WINDOW_WANTS_MODELINE_P): - Move to window.h and renamed [see window.h changes]. - (WINDOW_AREA_TO_FRAME_PIXEL_X, WINDOW_AREA_PIXEL_WIDTH) - (WINDOW_DISPLAY_TEXT_AREA_PIXEL_WIDTH): Remove macros. - (WINDOW_WANTS_MODELINE_P, WINDOW_WANTS_HEADER_LINE_P): - Use WINDOW_TOTAL_LINES. - (frame_update_line_height): Remove prototype. - - * buffer.h (struct buffer): Rename members measured in columns: - left_margin_width to left_margin_cols, right_margin_width to - right_margin_cols. All uses changed. - New members left_fringe_width, right_fringe_width, - fringes_outside_margins for per-buffer fringe settings. - New members scroll_bar_width and vertical_scroll_bar_type for - per-buffer scroll bar settings. - - * buffer.c (init_buffer_once): Set buffer_defaults and - buffer_local_flags for new buffer-local variables - left_fringe_width, right_fringe_width, fringes_outside_margins, - scroll_bar_width, and vertical_scroll_bar_type. - (syms_of_buffer): Defvar_per_buffer them, and defvar_lisp_nopro - default-* variables for them. - - * dispnew.c: Make (many) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - (mode_line_string): No need to adjust width for mode lines, as it - is already adjusted by the caller. - (marginal_area_string): Handle fringes inside/outside margins. - - * frame.c: Make (many) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - (make_frame): Initialize left_fringe_width, right_fringe_width, - fringe_cols, scroll_bar_actual_width, border_width, - internal_border_width, column_width, line_height, x_pixels_diff, - y_pixels_diff, want_fullscreen, size_hint_flags, and win_gravity - members with values suitable for a non-window frames. - - * gtkutil.c: Make (many) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - - * indent.c: Make (few) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - - * keyboard.c: Make (many) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - (make_lispy_event): Use window positions returned from - window_from_coordinates when constructing the lisp event for - MOUSE_CLICK_EVENT and DRAG_N_DROP_EVENT, rather than calculating - (incorrect) values locally. - (make_lispy_movement): Use window positions returned from - window_from_coordinates when constructing the lisp event, rather - than calculating (incorrect) values locally. - - * scroll.c: Make (some) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - - * sunfns.c (Fsun_menu_internal): Adapt to per-window fringes and - scroll-bars. - - * sysdep.c: Make (few) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - - * term.c: Make (some) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - - * widget.c: Make (few) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - - * window.c: Make (many) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - (make_window): Initialize new members - left_margin_cols, right_margin_cols, left_fringe_width, - right_fringe_width, fringes_outside_margins, scroll_bar_width, - and vertical_scroll_bar_type. - (coordinates_in_window): Adapt to new fringe/margin positions - and per-window fringes and scroll-bars. - Fix bug related to incorrectly adjusting coordinates by - frame's internal_border_width (the effect normally negible since - the internal_border_width is typically 0 or 1 pixel, but very - noticeable for an internal_border_width of e.g. 25 pixels). - Upon successful return (other than ON_NOTHING), the coordinates - are now always properly converted to window relative for the - given display element. - (window_from_coordinates): Add new parameters wx and wy to - return the window relative x and y position in the returned - window and part. A null arg means, don't return the position. - All callers changed. - (adjust_window_margins): New function which may reduce the width - of the display margins if a window's text area is too small after - resizing or splitting windows. - (size_window): Fix bug that did not account for display margin - widths when checking the minimum width of a window; use - adjust_window_margins. - (set_window_buffer): Call Fset_window_fringes and - Fset_window_scroll_bars to setup per-window elements. - Add new arg KEEP_MARGINS_P. Non-nil means to keep window's - existing display margin, fringe widths, and scroll bar settings - (e.g. after splitting a window or resizing the frame). - All callers changed. - (Fset_window_buffer): New arg KEEP_MARGINS. All callers changed. - (Fsplit_window): Duplicate original window's display margin, - fringe, and scroll-bar settings; then call Fset_window_buffer with - KEEP_MARGINS non-nil. This fixes a bug which caused a split - window to only preserve the display margins in one of the windows. - When splitting horizontally, call adjust_window_margins on both - windows to ensure that the text area of the new windows is non too - narrow. This fixes a bug which could cause Emacs to trap if the - width of the split window was less than the width of the display - margins. - (window_box_text_cols): Rename from window_internal_width. - All uses changed. Adapt to per-window fringes and scroll bars. - Fix bug that caused vertical separator to be subtracted also on - window frames. Fix another bug that did not reduce the returned - value by the columns used for display margins. - (window_scroll_line_based): Fix bug related to scrolling too much - when display margins are present (implicitly fixed by the fix to - window_box_text_cols). - (scroll_left, scroll_right): Fix bug related to scrolling too far - by default when display margins are present (implicitly fixed by - the fix to window_box_text_cols). - (struct saved_window): Rename members left to left_col, top to - top_line, width to total_cols, height to total_lines, orig_top to - orig_top_line, orig_height to orig_total_lines. All uses changed. - New members left_margin_cols, right_margin_cols, - left_fringe_width, right_fringe_width, fringes_outside_margins, - scroll_bar_width, and vertical_scroll_bar_type for saving - per-window display elements. - (Fset_window_configuration): Restore display margins, fringes, - and scroll bar settings. This fixes a bug which caused display - margins to be discarded when saving and restoring a window - configuration. - (save_window_save): Save display margins, fringes, and scroll bar - settings. This fixes a bug which caused display margins to be - discarded when saving and restoring a window configuration. - (Fset_window_margins): Do nothing if display margins are not - really changed. Otherwise, call adjust_window_margins to ensure - the text area doesn't get too narrow. This fixes a bug which - could cause Emacs to trap if setting display margins wider than - the width of the window. - (Fset_window_fringes): New defun to allow user to specifically set - this window's fringe widths and position vs. display margins. - (Fwindow_fringes): New defun to return window's actual fringe settings. - (Fset_window_scroll_bars): New defun to allow user to specifically - set this window's scroll bar width and position. - (Fwindow_scroll_bars): New defun to return window's actual scroll - bar settings. - (compare_window_configurations): Also compare display margins, - fringes, and scroll bar settings. - (syms_of_window): Defsubr new defuns for fringe and scroll bars. - - * xdisp.c: Make (many) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - (window_box_width): Adapt to per-window fringes and scroll bars, - and new fringe vs. display margin position. Note that returned - value is no longer guaranteed to be a whole multiple of the frame - column width, since per-window fringes may now be any width. - (window_box_left_offset): New function like window_box_left, but - value is relative to left border of window (rather than frame). - (window_box_right_offset): New function like window_box_right, - but value is relative to left border of window. - (window_box_left): Adapt to per-window fringes and scroll bars, - and new fringe vs. display margin position. Simplify by using - WINDOW_LEFT_EDGE_X and window_box_left_offset. - (window_box): Allow null args for unnecessary return values; - change/simplify relevant callers. - (x_y_to_hpos_vpos): Adapt to per-window fringes and scroll bars, - and new fringe vs. display margin position. - Use window_box_left_offset and window_box_right_offset - (get_glyph_string_clip_rect): Adapt to per-window fringes and - scroll bars, and new fringe vs. display margin position. - Use WINDOW_LEFT_EDGE_X and WINDOW_TOTAL_WIDTH. - (draw_fringe_bitmap): Rework to handle per-window fringes and new - fringe vs. display margin position. - (hscroll_window_tree): Use window_box_width instead of window_box. - (redisplay_window): Adapt to per-window scroll bars. - (draw_glyphs): Rework to handle per-window fringes and scroll - bars, and new fringe vs. display margin position. - Use WINDOW_LEFT_EDGE_X, WINDOW_TOTAL_WIDTH, and window_box_left. - (x_clear_end_of_line): Adapt to per-window fringes and scroll - bars, and new fringe vs. display margin position. Fix bug which - increased total width of full_width rows by width of scroll bars - although window's total width already includes that. - (x_fix_overlapping_area): Simplify using window_box_left_offset. - (expose_area): Simplify using window_box_left_offset. - (x_draw_vertical_border): Handle per-window scroll bar settings, - mixing windows with left, right and no scroll bars. - - * xfaces.c [WINDOWSNT]: Move redefinition of FONT_WIDTH macro to - where it's used in x_list_fonts (for clarity). - (frame_update_line_height): Remove unused function; functionality - is now done directly when setting the default font in x_set_font. - - * xfns.c: Make (many) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - - * xmenu.c: Make (some) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - - * xterm.h (struct x_output): Move members left_pos, top_pos, - border_width, pixel_height, pixel_width, line_height, - internal_border_width, vertical_scroll_bar_extra, - left_fringe_width, right_fringe_width, fringe_cols, - fringes_extra, win_gravity, size_hint_flags, want_fullscreen, - x_pixels_diff, and y_pixels_diff to struct frame (frame.h). - (FRAME_INTERNAL_BORDER_WIDTH, FRAME_LINE_HEIGHT): Move to frame.h. - (FRAME_DEFAULT_FONT_WIDTH): Remove macro. - (PIXEL_WIDTH, PIXEL_HEIGHT) - (FRAME_X_FRINGE_COLS, FRAME_X_FRINGE_WIDTH) - (FRAME_X_LEFT_FRINGE_WIDTH, FRAME_X_RIGHT_FRINGE_WIDTH): Move to - frame.h and renamed [see frame.h changes]. - (CHAR_TO_PIXEL_ROW, CHAR_TO_PIXEL_COL, CHAR_TO_PIXEL_WIDTH) - (CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_ROW, PIXEL_TO_CHAR_COL) - (PIXEL_TO_CHAR_WIDTH, PIXEL_TO_CHAR_HEIGHT): Move to frame.h - and renamed [see frame.h changes]. - - * xterm.c: Make (several) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - (x_draw_glyph_string_box): Adapt to per-window fringes and scroll-bars. - (scroll_run): Adapt to new fringe position. - (glyph_rect): Use window coordinates returned from - window_from_coordinates rather than frame_to_window_pixel_xy. - (XTset_vertical_scroll_bar): Adapt to per-window fringes and - scroll-bars. - (handle_one_xevent): Simplify a USE_GTK conditional. - (x_clip_to_row): Remove superfluous whole_line_p arg and code - (fringes are now inside margins, i.e. always in the clipping area). - All callers changed. - (x_new_font): Set FRAME_COLUMN_WIDTH and FRAME_LINE_HEIGHT - directly, then call compute_fringe_widths. Don't call - frame_update_line_height. - - * w32term.h (struct w32_output): Move members left_pos, top_pos, - border_width, pixel_height, pixel_width, line_height, - internal_border_width, vertical_scroll_bar_extra, - left_fringe_width, right_fringe_width, fringe_cols, - fringes_extra, win_gravity, size_hint_flags, want_fullscreen, - x_pixels_diff, and y_pixels_diff to struct frame (frame.h). - (FRAME_INTERNAL_BORDER_WIDTH, FRAME_LINE_HEIGHT): Move to frame.h. - (FRAME_DEFAULT_FONT_WIDTH): Remove macro. - (PIXEL_WIDTH, PIXEL_HEIGHT) - (FRAME_X_FRINGE_COLS, FRAME_X_FRINGE_WIDTH) - (FRAME_X_LEFT_FRINGE_WIDTH, FRAME_X_RIGHT_FRINGE_WIDTH): Move to - frame.h and renamed [see frame.h changes]. - (CHAR_TO_PIXEL_ROW, CHAR_TO_PIXEL_COL, CHAR_TO_PIXEL_WIDTH) - (CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_ROW, PIXEL_TO_CHAR_COL) - (PIXEL_TO_CHAR_WIDTH, PIXEL_TO_CHAR_HEIGHT): Move to frame.h - and renamed [see frame.h changes]. - - * w32term.c: Make (several) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - (x_draw_glyph_string_box): Adapt to per-window fringes and scroll-bars. - (glyph_rect): Use window coordinates returned from - window_from_coordinates rather than frame_to_window_pixel_xy. - (XTset_vertical_scroll_bar): Adapt to per-window fringes and - scroll-bars. - (w32_clip_to_row): Remove superfluous whole_line_p arg and code - (fringes are now inside margins, i.e. always in the clipping area). - All callers changed. - (x_new_font): Set FRAME_COLUMN_WIDTH and FRAME_LINE_HEIGHT - directly, then call compute_fringe_widths. Don't call - frame_update_line_height. - - * w32console.c: Make (few) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - - * w32fns.c: Make (many) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - - * w32menu.c: Make (few) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - - * macterm.h (struct mac_output): Move members left_pos, top_pos, - border_width, pixel_height, pixel_width, line_height, - internal_border_width, vertical_scroll_bar_extra, - left_fringe_width, right_fringe_width, fringe_cols, - fringes_extra, win_gravity, size_hint_flags, want_fullscreen, - x_pixels_diff, y_pixels_diff to struct frame (frame.h). - (FRAME_INTERNAL_BORDER_WIDTH, FRAME_LINE_HEIGHT): Move to frame.h. - (FRAME_DEFAULT_FONT_WIDTH): Remove macro. - (PIXEL_WIDTH, PIXEL_HEIGHT) - (FRAME_X_FRINGE_COLS, FRAME_X_FRINGE_WIDTH) - (FRAME_X_LEFT_FRINGE_WIDTH, FRAME_X_RIGHT_FRINGE_WIDTH): Move to - frame.h and renamed [see frame.h changes]. - (CHAR_TO_PIXEL_ROW, CHAR_TO_PIXEL_COL, CHAR_TO_PIXEL_WIDTH) - (CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_ROW, PIXEL_TO_CHAR_COL) - (PIXEL_TO_CHAR_WIDTH, PIXEL_TO_CHAR_HEIGHT): Move to frame.h - and renamed [see frame.h changes]. - - * macterm.c: Make (several) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - (x_draw_glyph_string_box): Adapt to per-window fringes and scroll-bars. - (glyph_rect): Use window coordinates returned from - window_from_coordinates rather than frame_to_window_pixel_xy. - (XTset_vertical_scroll_bar): Adapt to per-window fringes and - scroll-bars. - (x_clip_to_row): Remove superfluous whole_line_p arg and code - (fringes are now inside margins, i.e. always in the clipping area). - All callers changed. - (x_new_font): Set FRAME_COLUMN_WIDTH and FRAME_LINE_HEIGHT - directly, then call compute_fringe_widths. Don't call - frame_update_line_height. - - * macfns.c: Make (several) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - (x_real_positions): Set f->x_pixels_diff and f->y_pixels_diff to 0. - - * macmenu.c: Make (few) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - - * msdos.h (struct x_output): Remove members left_pos, top_pos, - and line_height, and use corresponding new members in struct - frame. All uses changed. - (FRAME_LINE_HEIGHT, FRAME_INTERNAL_BORDER_WIDTH): Remove macros; - superseeded by corresponding macros in frame.h. - - * msdos.c: Make (several) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - (IT_note_mouse_highlight): Use updated window coordinates returned - by window_from_coordinates, rather than adjusting them locally. - (internal_terminal_init): No need to initialize line_height here; - it now defaults to 1. - -2003-05-24 Stefan Monnier - - * keyboard.c (read_key_sequence): Adjust fkey and keytran when - dropping `down' events. - -2003-05-24 Andreas Schwab - - * coding.c (find_safe_codings): Fix last change. - -2003-05-24 Istvan Marko (tiny change) - - * xfns.c (x_window): Fix typo from 2003-05-21 change. - -2003-05-23 Stefan Monnier - - * xdisp.c (display_mode_element): Increase max depth. - Simplify the error handling code. Use a different error string - for the case where we hit the depth limit. - - * lisp.h (Vfundamental_mode_abbrev_table): Don't declare. - - * buffer.c (reset_buffer_local_variables): Remove redundant setting. - -2003-05-21 Stefan Monnier - - * intervals.c (get_local_map): Don't get char-property of previous - point any more: get_pos_property already does it and better. - -2003-05-21 Dave Love - - [Merged from unicode branch.] - - * xfns.c (x_window, x_window): Use use_xim. - - * xterm.c (use_xim): Initialize. - (xim_open_dpy, xim_initialize, xim_close_dpy): Use use_xim. - (x_term_init): Maybe set use_xim. - - * xterm.h (use_xim) [HAVE_X_I18N]: Declare. - -2003-05-21 Jason Rumney - - * unexw32.c (_start): Remove _fmode initialization. - - * emacs.c (main) [WINDOWSNT]: Move it here. - -2003-05-20 Dave Love - - * s/gnu-linux.h (MAIL_USE_FLOCK): Make it conditional. - -2003-05-19 Richard M. Stallman - - * xfaces.c (Finternal_set_lisp_face_attribute): Handle Qunspecified - as value for QCfont attribute. - (realize_default_face): lface should already exist; crash if not. - Specify 0 for FORCE_P when calling set_lface_from_font_name. - - * frame.c (Fignore_event): Doc fix. - -2003-05-19 Kenichi Handa - - * coding.c (decode_coding_string): Handle post-read-conversion - even if the coding doesn't require decoding. - -2003-05-18 Richard M. Stallman - - * callproc.c (Fcall_process_region): Doc fix. - -2003-05-17 Stefan Monnier - - * lread.c (Fload): Print a message if package is obsolete. - - * window.c (Fselect_window): Add optional `norecord' arg. - (select_window_1): Fold into Fselect_window. - (select_window_norecord): New function. - (temp_output_buffer_show): Use it. Preserve current buffer. - - * window.h (Fselect_window): Update declaration. - - * window.c (delete_window, Fother_window, Fset_window_configuration): - * minibuf.c (read_minibuf): - * macterm.c (x_new_focus_frame): - * frame.c (do_switch_frame, Fset_frame_selected_window, Fdelete_frame): - * callint.c (Fcall_interactively): - * xterm.c (x_new_focus_frame): Pass nil as new arg to Fselect_window. - - * buffer.c (Fpop_to_buffer): Pass norecord to Fselect_window. - -2003-05-17 David Kastrup - - * process.c (read_process_output): Back out change from 2003-03-09. - -2003-05-17 Stefan Monnier - - * editfns.c (get_pos_property): Don't assume that `object' = nil. - - * textprop.c (text_property_stickiness): New arg `buffer'. - - * intervals.h (text_property_stickiness): New arg `buffer'. - (get_pos_property): Declare. - - * intervals.c (get_local_map): Use get_pos_property, to obey - stickiness and empty overlays. - (create_root_interval, graft_intervals_into_buffer): Use BEG. - (merge_properties, intervals_equal, merge_properties_sticky): - Use XCAR, XCDR. - (adjust_for_invis_intang): Pass new arg to text_property_stickiness. - -2003-05-17 Richard M. Stallman - - * minibuf.c (read_minibuf): If buffer is empty, record the default - in the history. - (Fminibuffer_complete_word): When deleting the overlap, take account - of its real position. - - * fns.c (map_char_table): Fix previous change. - - * syntax.c (find_defun_start): - When open_paren_in_column_0_is_defun_start, - return beginning of buffer. - - * lisp.h (map_char_table): Declare added arg. - - * fns.c (map_char_table): New arg TABLE gets the master table. - All calls changed. - Process default and inheritance, resorting to Faref if necessary. - - * keymap.c (Fset_keymap_parent, map_keymap, Fcopy_keymap) - (Faccessible_keymaps): Pass new arg to map_char_table. - - * fontset.c (Ffontset_info): Pass new arg to map_char_table. - - * casetab.c (set_case_table): Pass new arg to map_char_table. - - * data.c (let_shadows_buffer_binding_p): Make target of p volatile. - - * lisp.h (specbinding_func): New typedef. - (struct specbinding): Use specbinding_func, to put the `volatile' - in the right place. - - * alloc.c (Fgarbage_collect): Cast pointers into specpdl - to avoid GCC warning. - -2003-05-16 Ralph Schleicher - - * fileio.c (Fdelete_file): Handle symlinks pointing to directories. - -2003-05-15 Stefan Monnier - - * keyboard.c (apply_modifiers): Don't fill the other cache. - -2003-05-14 Stefan Monnier - - * .gdbinit-union: New file, for USE_LISP_UNION_TYPE users. - - * window.h (Qwindowp, Qwindow_live_p, Vwindow_list) - (Fwindow_end, Fselected_window, Fdelete_window, Fwindow_buffer) - (Fget_buffer_window, Fsave_window_excursion, Fsplit_window) - (Fset_window_configuration, Fcurrent_window_configuration) - (compare_window_configurations, Fcoordinates_in_window_p, Fwindow_at) - (Fpos_visible_in_window_p, mark_window_cursors_off) - (window_internal_height, window_internal_width, Frecenter) - (Fscroll_other_window, Fset_window_start, temp_output_buffer_show) - (replace_buffer_in_all_windows, init_window_once, init_window) - (syms_of_window, keys_of_window): Move from lisp.h. - * lisp.h: Move window.c declarations to window.h. - - * bytecode.c: Include window.h. - * emacs.c: Include window.h. - - * keyboard.c (make_lispy_event): Apply modifiers to multibyte-char key. - (keyremap): Add `parent' field. - (keyremap_step): Use it. Remove `parent' argument. - (read_key_sequence): Setup and use the new `parent' field. - -2003-05-11 Stefan Monnier - - * keyboard.c (adjust_point_for_property): Ensure termination. - -2003-05-10 Stefan Monnier - - * keyboard.c (follow_key): Remove dead variable `did_meta'. - (access_keymap_keyremap, keyremap_step): New funs, extracted from the - duplicated handling of function-key-map and key-translation-map - in read_key_sequence. - (read_key_sequence): Use them. - - * keyboard.c (adjust_point_for_property): Try harder to move point - to the non-sticky end of an invisible property. - - * xdisp.c (single_display_prop_intangible_p): Make `space' display - property intangible as well. - -2003-05-10 Andreas Schwab - - * xmenu.c (single_menu_item): Change last parameter to void* to - avoid warning. - -2003-05-09 Richard M. Stallman - - * print.c (Fprin1_to_string): Instead of gcpro, set abort_on_gc. - Bind Qinhibit_modification_hooks to t so there will be no GC. - Rename local `tem' to `save_deactivate_mark'. - - * eval.c (specpdl_ptr): Declare volatile. - (unbind_to): Copy the whole binding and decrement specpdl_ptr - before doing the work of unbinding it. - - * lisp.h (struct specbinding): Declare elements volatile. - (specpdl_ptr): Declare volatile. - - * Makefile.in (alloca.o): Specify -DDO_BLOCK_INPUT in compiling. - - * alloca.c: Test DO_BLOCK_INPUT rather than `emacs' - for use of BLOCK_INPUT and inclusion of lisp.h and blockinput.h. - -2003-05-08 Dave Love - - * coding.c (Vlast_coding_system_used): Doc fix. - -2003-05-07 Jason Rumney - - * fileio.c (Ffile_symlink_p): Let handlers handle symlinks even - when system does not support them. - -2003-05-05 Stefan Monnier - - * fileio.c (Qwrite_region_annotate_functions): New var. - (build_annotations): Use it to process the global part of the hook. - (syms_of_fileio): Init and staticpro it. - - * keyboard.c (safe_run_hooks_error): Display a message instead of - silently ignoring the error. - -2003-05-03 Stefan Monnier - - * keyboard.c (input_available_signal): Mark static. - (menu_bar_items): Use map_keymap. - (menu_bar_one_keymap): Remove. - (menu_bar_item): Adjust arglist (for use in map_keymap). - Properly hide a second binding when not both are keymaps. - - * xmenu.c (struct skp): New struct, to pass args through map_keymap. - (single_keymap_panes): Use it and map_keymap. - (single_menu_item): Use skp as well. - - * keymap.h (map_keymap_function_t): New type. - (map_keymap): Declare. - - * keymap.c (map_keymap_item, map_keymap_char_table_item, map_keymap) - (map_keymap_call, Fmap_keymap): New functions. - (syms_of_keymap): Defsubr map-keymap. - -2003-05-02 Jan Dj,Ad(Brv - - * gtkutil.c (create_dialog, make_widget_for_menu_item) - (make_menu_item, create_menus, xg_update_menu_item): Don't call - ..._with_mnemonic functions for menu items. - -2003-05-01 Kenichi Handa - - * coding.c (coding_system_accept_latin_extra_p): Delete this - function. - (find_safe_codings): Pay attention to - the property tranlsation-table-for-encode of each codings. - (syms_of_coding): Give Qtranslation_table the extra slot number 2. - -2003-05-01 Stefan Monnier - - * eval.c (Funwind_protect): Use func=Fprogn rather than symbol=Qnil. - -2003-04-30 Stefan Monnier - - * eval.c (unbind_to): Don't handle symbol = Qnil any more. - - * lisp.h (CHECK): Wrap args in parenthesis. - (specbind): Fix doc: symbol = Qnil is not supported any more. - - * bytecode.c (Fbyte_code) : - Use Fprogn rather than 0 and Qnil. - - * keyboard.c (parse_modifiers_uncached): Parse `down', `drag', - `double', and `triple' modifiers as well. - -2003-04-30 Richard M. Stallman - - * keyboard.c (echo_char): Don't clear out a dash that follows a space. - - * alloc.c (abort_on_gc): New variable. - (Fgarbage_collect): Abort if abort_on_gc is set. - - * lisp.h (abort_on_gc): Add decl. - - * eval.c (Fsignal): Clear abort_on_gc. - - * editfns.c (Fformat): Set abort_on_gc during first scan of format. - Reinit FORMAT_START and END before second scan. - - * xdisp.c (move_it_vertically_backward): Do the final big else - even if nlines is 0. - - * xdisp.c (redisplay_internal): Finish the per-frame loop - even if redisplay is suspended by input. - -2003-04-24 Andrew Choi - - * macterm.c (x_list_fonts): Return all fonts that match if - maxnames = -1. - -2003-04-25 Kenichi Handa - - * syntax.c (skip_chars): Fix previous change. - -2003-04-24 Kenichi Handa - - * syntax.c (skip_chars): Make the code faster by using the common - technique of *p, *stop, and *endp. - -2003-04-23 Jan Dj,Ad(Brv - - * xdisp.c (update_tool_bar): BLOCK_INPUT before calling - tool_bar_items so GTK tool bar expose callback does not access items - being updated. - -2003-04-19 Stefan Monnier - - * eval.c (Fapply): Undo last change and add a comment about why. - -2003-04-18 Miles Bader - - * data.c (Faset): Calculate nbytes earlier, to satisfy the now - pickier PARSE_MULTIBYTE_SEQ. - -2003-04-17 Stefan Monnier - - * eval.c (For, Fand, Fprogn, un_autoload, do_autoload): - Use XCDR, XCAR, CONSP. - (Fdefmacro): Fix docstring. Use XCAR, XCDR. - (Fapply): Remove unnecessary GCPRO. - - * doc.c (Fsubstitute_command_keys): Remove spurious casts. - - * charset.h (PARSE_MULTIBYTE_SEQ): Pretend `length' is used. - - * buffer.h: Don't hardcode BEG==1. - - * abbrev.c (Fdefine_abbrev_table): Use XCAR, XCDR. - -2003-04-16 Richard M. Stallman - - * xdisp.c (try_window, try_window_reusing_current_matrix): - When at end of window, set window_end_pos to Z-ZV. - - * buffer.c (Foverlay_recenter): Doc fix. - -2003-04-14 Stefan Monnier - - * dispnew.c (Fsit_For): Support XEmacs-style arg list. - -2003-04-14 Andrew Choi - - * macterm.c (mac_check_for_quit_char): Don't check more often than - once a second. - -2003-04-11 Stefan Monnier - - * keyboard.c (kbd_buffer_get_event): Don't handle SELECT_WINDOW_EVENT - specially, so that they can't hide an implicit switch-frame event. - (make_lispy_event): Handle SELECT_WINDOW_EVENT. - (head_table): Use switch-frame as event_kind for select-window. - (keys_of_keyboard): Don't bind [select-window] in special-event-map. - - * editfns.c (Fformat): Lisp_Object/int mixup. - (format2): Remove unused var numargs. - -2003-04-11 Kenichi Handa - - * fileio.c (Vafter_insert_file_adjust_coding_function): Delete. - (Qafter_insert_file_set_coding): New variable. - (syms_of_fileio): Initialize and staticpro it. Delete declaration - for after-insert-file-adjust-coding-function. - (Finsert_file_contents): Call Qafter_insert_file_set_coding - instead of Vafter_insert_file_adjust_coding_function. - -2003-04-11 Kenichi Handa - - * lisp.h (temp_echo_area_glyphs): Adjust prototype. - - * minibuf.c (temp_echo_area_glyphs): Change the arg to Lisp - string. Callers changed. - -2003-04-10 Kenichi Handa - - * fileio.c (Vafter_insert_file_adjust_coding_function): New variable. - (syms_of_fileio): Declare it as a lisp variable. - (Finsert_file_contents): - Call Vafter_insert_file_adjust_coding_function before calling - decode-format. - -2003-04-09 Jan Dj,Ad(Brv - - * xterm.c (xg_scroll_callback): Call gtk_range_get_adjustment to - get GtkAdjustment as widget now is a GtkRange. - - * gtkutil.c (xg_create_scroll_bar): Connect to value-changed on - GtkRange to avoid memory leak. - -2003-04-09 Kenichi Handa - - * xfaces.c (Vface_font_rescale_alist): New variable. - (struct font_name): New member rescale_ratio. - (font_rescale_ratio): New function. - (split_font_name): If NUMERIC_P is nonzero, set font->rescale_ratio. - (better_font_p): On comparing point sized, pay attention to - recale_ratio member of fonts. - (build_scalable_font_name): Reflect font->rescale_ratio in the - font name. - (syms_of_xfaces): Declare Vface_font_rescale_alist as a Lisp variable. - - * lread.c (read1): Before calling index, check if the 2nd - arguemnt is in ASCII range. - -2003-04-08 Richard M. Stallman - - * fileio.c (Ffile_symlink_p): Doc fix. - - * editfns.c (Fformat): Translate positions of text properties - in the format string to apply them to the result. - - * fileio.c (Finsert_file_contents): Doc fix. - (syms_of_fileio) : Doc fix. - -2003-04-08 Ivan Zakharyaschev (tiny change) - - * lread.c (openp): Get the Qfile_exists_p handler for STRING, not FN. - -2003-04-08 Steven Tamm - - * mac.c (init_mac_osx_environment): Switch libexec and bin so - that self-contained application finds libexec files. - -2003-04-08 Kenichi Handa - - * coding.c (code_convert_region_unwind): - Set Vlast_coding_system_used to the argument. - (code_convert_region): If post-read-conversion function changed - the value of last-coding-sytem, keep the new value in - coding->symbol so that it won't be overridden. - (run_pre_post_conversion_on_str): Likewise. - (coding_system_accept_latin_extra_p): New function. - (find_safe_codings): Pay attention to characters registered in - latin-extra-code-table. - -2003-04-07 Thien-Thi Nguyen - - * Makefile.in (md5.o): Add missing dependency info. - -2003-04-06 Richard M. Stallman - - * xselect.c (x_handle_selection_request): Move UNGCPRO to very end. - - * marker.c (verify_bytepos): New function. - - * intervals.c (set_intervals_multibyte_1): When becoming - multibyte, adjust right and left child sizes to a whole set of - characters. If an interval gets zero total-length, delete it. - If an interval consists of just its children, delete one of them. - - * intervals.h (CHECK_TOTAL_LENGTH): New macro. - * intervals.c: Add many calls to CHECK_TOTAL_LENGTH. - - * alloc.c (VALIDATE_LISP_STORAGE): Macro deleted. - All calls deleted. - (lisp_malloc): Do the work here directly. - -2003-04-06 Gareth Jones (tiny change) - - * fns.c (Flength): Return SUB_CHAR_TABLE_ORDINARY_SLOTS for sub - char tables. - -2003-04-04 Kenichi Handa - - * editfns.c (Fformat): Use a copy of FORMAT string so that we can - destructively change "%S" to "%s". - -2003-04-03 Miles Bader - - * xfaces.c (choose_face_font): Make sure *NEEDS_OVERSTRIKE is - always set. - -2003-04-01 Dave Love - - * xfns.c (xpm_lookup_color): Grok "opaque". - -2003-03-31 Andrew Choi - - * frame.c (x_report_frame_params) [HAVE_CARBON]: Do not report - parent window ID. - - * macfns.c (syms_of_macfns): Remove call to init_x_parm_symbols. - - * macterm.h (struct mac_output): Define x_pixels_diff and - y_pixels_diff. - -2003-03-31 Juanma Barranquero - - * makefile.w32-in ($(BLD)/frame.$(O)): Add dependency on - blockinput.h and files included from it. - -2003-03-31 Kim F. Storm - - The following changes consolidates the common code related to - frame-parameter handling from the xfns.c, w32fns.c, and macfns.c - files into frame.c. - - * frame.c: Include blockinput.h. - (Vx_resource_name, Vx_resource_class, Qx_frame_parameter) - (Qx_resource_name, Qface_set_after_frame_default): Define vars here. - (Qauto_raise, Qauto_lower, ...): Define all frame parameter - related vars here. - (struct frame_parm_table, frame_parms): New table for describing - frame parameters and their associated Q-variable. - The order of the parameters corresponds to the sequence of the - frame_parm_handlers table in redisplay_interface. - (x_fullscreen_move, x_set_frame_parameters) - (x_report_frame_params, x_set_fullscreen, x_set_line_spacing) - (x_set_screen_gamma, x_set_font, x_set_fringe_width) - (x_set_border_width, x_set_internal_border_width, x_set_visibility) - (x_set_autoraise, x_set_autolower, x_set_unsplittable) - (x_set_vertical_scroll_bars, x_set_scroll_bar_width, x_icon_type): - Generic functions for processing of frame parameters. - (validate_x_resource_name, xrdb_get_resource, Fx_get_resource) - (display_x_get_resource, x_get_resource_string): Functions for - generic access to X resources. - (x_get_arg, x_frame_get_arg, x_frame_get_and_record_arg) - (x_default_parameter, Fx_parse_geometry): Functions for generic - access to frame parameters. - (x_figure_window_size): Generic calculation of frame size. - Fixed to add space needed for tool bar. Also setup size_hint_flags. - (syms_of_frame): Intern and staticpro frame parameter variables. - Defvar_lisp Vx_resource_class and Vx_resource_name here. - Defsubr Sx_get_resource and Sx_parse_geometry. - - * frame.h (Qauto_raise, Qauto_lower, ...): Declare extern all frame - parameter related vars defined in frame.c. - (EMACS_CLASS): Define here. - (enum FULLSCREEN_*): Define here. - (x_set_scroll_bar_default_width, x_wm_set_icon_position) - (x_set_offset, x_new_font, x_new_fontset): Add prototypes. - (x_fullscreen_adjust, x_set_frame_parameters, x_report_frame_params) - (x_set_fullscreen, x_set_line_spacing, x_set_screen_gamma, x_set_font) - (x_set_fringe_width, x_set_border_width, x_set_internal_border_width) - (x_set_visibility, x_set_autoraise, x_set_autolower) - (x_set_unsplittable, x_set_vertical_scroll_bars) - (x_set_scroll_bar_width, x_icon_type, validate_x_resource_name) - (x_figure_window_size): Add prototypes. - - * dispextern.h (frame_parm_handler): New typedef. - (struct redisplay_interface): New member frame_parm_handlers. - (enum resource_types): Move declaration here. - (x_get_arg, x_frame_get_arg, x_frame_get_and_record_arg) - (x_default_parameter): Add prototypes. - - * window.c: Remove extern decl for frame parameter vars. - (change_window_heights): New generic function; - replaces x_change_window_heights. All users changed. - - * window.h (change_window_heights): Add prototype. - - * xfaces.c: Remove extern decl for frame parameter vars. - - * xterm.h (EMACS_CLASS): Remove. Use generic define. - (struct w32_display_info): Fix type of xrdb member. - (enum FULLSCREEN_*): Remove. - Remove prototypes for generic functions (in frame.h). - - * xfns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame - parameters now defined in frame.h and frame.c. - (Vx_resource_name): Remove. Use generic var. - (enum x_frame_parms): Remove (bogus, unused enum). - (check_x_display_info): Make non-static (for frame.c). - (struct x_frame_parm_table, x_frame_parms): Remove. - (init_x_parm_symbols, x_set_frame_parameters, x_report_frame_params) - (x_set_line_spacing, x_set_screen_gamma, x_icon_type, x_set_font) - (x_set_border_width, x_set_internal_border_width, x_set_visibility) - (x_change_window_heights, x_set_autoraise, x_set_autolower) - (x_set_vertical_scroll_bars, x_set_scroll_bar_width) - (validate_x_resource_name, Fx_get_resource, x_get_resource_string) - (x_default_parameter, Fx_parse_geometry, x_figure_window_size): - Remove. Use generic functions instead. - (enum resource_types): Remove. - (x_set_scroll_bar_default_width): New global function (for frame.c). - (Fx_create_frame): Depend on x_figure_window_size to add space for - toolbar and setup size_hint_flags. - (x_frame_parm_handlers): New table for redisplay_interface. - (syms_of_xfns): Don't intern/staticpro removed vars. - - * xterm.c: Remove unnecessary extern declarations. - (x_fullscreen_adjust): Remove. Use generic instead. - (x_redisplay_interface): Add x_frame_parm_handlers member. - - * w32gui.h (XrmDatabase): New (dummy) typedef. - - * w32term.h (EMACS_CLASS): Remove. Use generic define. - (struct w32_display_info): Fix type of xrdb member. - (enum FULLSCREEN_*): Remove. - (x_fullscreen_adjust): Remove prototype. - - * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame - parameters now defined in frame.h and frame.c. - (Vx_resource_name): Remove. Use generic var. - (enum x_frame_parms): Remove (bogus, unused enum). - (check_x_display_info): Make non-static (for frame.c). - (struct x_frame_parm_table, x_frame_parms): Remove. - (init_x_parm_symbols, x_set_frame_parameters, x_report_frame_params) - (x_set_line_spacing, x_set_screen_gamma, x_icon_type, x_set_font) - (x_set_border_width, x_set_internal_border_width, x_set_visibility) - (x_change_window_heights, x_set_autoraise, x_set_autolower) - (x_set_vertical_scroll_bars, x_set_scroll_bar_width) - (validate_x_resource_name, Fx_get_resource, x_get_resource_string) - (x_default_parameter, Fx_parse_geometry, x_figure_window_size): - Remove. Use generic functions instead. - (enum resource_types): Remove. - (x_set_scroll_bar_default_width): New global function (for frame.c). - (Fx_create_frame): Depend on x_figure_window_size to add space for - toolbar and setup size_hint_flags. - (w32_frame_parm_handlers): New table for redisplay_interface. - (syms_of_w32fns): Don't intern/staticpro removed vars. - - * w32term.c: Remove unnecessary extern declarations. - (x_fullscreen_adjust): Remove. Use generic instead. - (x_redisplay_interface): Add w32_frame_parm_handlers member. - - * w32reg.c (x_get_string_resource): Use XrmDatabase. - - * macgui.h (XrmDatabase): New (dummy) typedef. - - * macterm.h (EMACS_CLASS): Remove. - (struct mac_display_info): Add xrdb member. - (struct mac_output): Add want_fullscreen member. - - * macfns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame - parameters now defined in frame.h and frame.c. - (Vx_resource_name): Remove. Use generic var. - (check_x_display_info): Make non-static (for frame.c). - (struct x_frame_parm_table, x_frame_parms): Remove. - (init_x_parm_symbols, x_set_frame_parameters, x_report_frame_params) - (x_set_line_spacing, x_set_screen_gamma, x_icon_type, x_set_font) - (x_set_border_width, x_set_internal_border_width, x_set_visibility) - (x_change_window_heights, x_set_autoraise, x_set_autolower) - (x_set_vertical_scroll_bars, x_set_scroll_bar_width) - (validate_x_resource_name, Fx_get_resource, x_get_resource_string) - (x_default_parameter, Fx_parse_geometry, x_figure_window_size): - Remove. Use generic functions instead. - (enum resource_types): Remove. - (x_set_scroll_bar_default_width): New global function (for frame.c). - (mac_frame_parm_handlers): New table for redisplay_interface. - (syms_of_macfns): Don't intern/staticpro removed vars. - - * macterm.c: Remove unnecessary extern declarations. - (x_redisplay_interface): Add mac_frame_parm_handlers member. - - * Makefile.in (frame.o): Add dependency on blockinput.h and files - included from it (atimer.h and systime.h). - -2003-03-30 Andreas Schwab - - * xdisp.c (x_insert_glyphs): Fix swapped width and height - parameters for shift_glyphs_for_insert. - - * macterm.c (x_redisplay_interface): Add missing entry for - draw_vertical_window_border. - -2003-03-29 Kai Gro,A_(Bjohann - - * fileio.c (Fexpand_file_name): In the no-handler case, after - expanding, look again for a handler and invoke it. This is needed - for filenames like "/foo/../user@host:/bar/../baz" -- the first - expansion produces "/user@host:/bar/../baz" which needs to be - expanded again for the finame result "/user@host:/baz". - -2003-03-28 Jan Dj,Ad(Brv - - * gtkutil.c (xg_tool_bar_item_expose_callback): Reduce size - of area to be redrawn for better performance. - -2003-03-28 Stefan Monnier - - * xterm.c (take_vertical_position_into_account): Remove. - (xt_action_hook): Call set_vertical_scroll_bar if needed. - (XM_SB_MIN, XM_SB_RANGE): Remove (min is now set to 0). - (xm_scroll_callback, x_create_toolkit_scroll_bar) - (x_set_toolkit_scroll_bar_thumb): Simplify. - (x_scroll_bar_expose): Only compile if !USE_TOOLKIT_SCROLL_BARS. - (XTread_socket): Remove unused var. - (x_make_frame_invisible): Replace goto with else. - - * xdisp.c (set_vertical_scroll_bar): New fun. - (redisplay_window): Use it. - -2003-03-26 Richard M. Stallman - - * xdisp.c (update_tool_bar): Recompute tool bar if - update_mode_lines is set. Set w->update_mode_line - only if the tool bar contents actually change. - (update_menu_bar): Undo previous change. - -2003-03-26 Jan Dj,Ad(Brv - - * gtkutil.c (xg_resize_widgets): Don't call xg_frame_cleared. - (xg_frame_set_char_size): Calculate scroll bar width before frame - width. Call SET_FRAME_GARBAGED and cancel_mouse_face. - (xg_separator_p): Check for all documented separator types. - (xg_update_scrollbar_pos): Variable gheight not needed, use height. - (update_frame_tool_bar): Don't call gdk_window_process_all_updates. - - * xdisp.c (update_menu_bar): Set w->update_mode_line to Qt - so tool bar gets updated. - -2003-03-26 Stefan Monnier - - * data.c (store_symval_forwarding): Re-instate part of the code - that was deleted with too much enthusiasm. - -2003-03-25 Stefan Monnier - - * data.c (store_symval_forwarding): Delete special read-only - hack for type == -1, since we now use ->constant instead. - (Fkill_local_variable): Don't use XBUFFER if it can be nil. - - * buffer.c (overlays_in): Declare static. - (syms_of_buffer) : Use the symbol's - `constant' field rather than the variable's `type' field. - -2003-03-24 Andrew Choi - - * config.in [MAC_OSX]: Do not redefine bcopy, bzero, and bcmp. - - * dispextern.h [HAVE_CARBON]: Include Carbon.h. - - * fns.c [MAC_OSX]: Do not redefine vector. - - * keyboard.c [MAC_OSX]: Handle SIGINT with interrupt_signal. - - * macgui.h: Remove definition of No_Cursor. - - * macterm.h: Include Carbon.h. Replace (struct Cursor *) by Cursor. - - * xdisp.c: Define No_Cursor. - (x_write_glyphs, notice_overwritten_cursor) - (draw_phys_cursor_glyph, note_mode_line_or_margin_highlight) - (note_mouse_highlight): Remove Mac-specific code. - (note_mouse_highlight): Use bcmp instead of == to compare Cursors. - -2003-03-24 John Paul Wallington - - * xdisp.c (redisplay_window): If mini window's buffer is not - empty, then redisplay it like other windows. - -2003-03-23 Kim F. Storm - - * w32term.c (w32_draw_window_cursor): Fix last change. - -2003-03-23 Kenichi Handa - - * alloc.c (make_string_from_bytes, make_specified_string): - Add `const' for the arg CONTENTS. - - * lisp.h (make_string_from_bytes, make_specified_string): - Prototypes adjusted. - -2003-03-23 Jan Dj,Ad(Brv - - * xdisp.c (get_glyph_string_clip_rect): Remove ; at end of #endif. - - * gtkutil.h: Take two more arguments to xg_update_scrollbar_pos. - (XG_SB_RANGE): New define. - - * gtkutil.c (xg_fixed_handle_expose): New function. - (xg_create_frame_widgets): Call xg_fixed_handle_expose for - expose events. - (xg_update_scrollbar_pos): Take two more arguments, left and width - of scroll bar including borders. - Clear left and right part outside scroll bar separately as some - themes have bars that are not an even number of pixels. - Don't set reallocate_redraws, don't call - gdk_window_process_all_updates. - (xg_set_toolkit_scroll_bar_thumb): Upper value is fixed, - so no need to change it. Calculate size and value with XG_SB_RANGE. - - * xterm.c (x_scroll_bar_create, XTset_vertical_scroll_bar): - Pass left and width of scroll bar including borders to - xg_update_scrollbar_pos. - -2003-03-22 Thien-Thi Nguyen - - * Makefile.in: Make sure space precedes end-of-line backslashes. - -2003-03-22 Kim F. Storm - - * xdisp.c (pixel_to_glyph_coords, glyph_to_pixel_coords): - Add generic versions here. Remove system specific versions - defined elsewhere. - - * dispextern.h (pixel_to_glyph_coords, glyph_to_pixel_coords): - Add prototypes. - - * xterm.h (STORE_NATIVE_RECT): New macro. - -2003-03-21 Kim F. Storm - - * xdisp.c (get_glyph_string_clip_rect): - Use FRAME_INTERNAL_BORDER_WIDTH. - - * dispextern.h (struct redisplay_interface): Add active_p - argument to draw_window_cursor member. All uses changed. - -2003-03-21 Kim F. Storm - - The following changes consolidate code related to writing and - inserting glyphs, exposing frame, the tool bar, the mouse face, - the output cursor, and help echo from xterm.c, w32term.c and - macterm.c into xdisp.c. It also generalizes the use of the - window_part enum instead of using numeric values throughout. - - * xdisp.c: Consolidate gui-independent code here. - Include keymap.h. - (Qhelp_echo): Import. - (mouse_autoselect_window, x_stretch_cursor_p): Declare here. - (help_echo_string, help_echo_window, help_echo_object) - (previous_help_echo_string, help_echo_pos): Declare here. - (output_cursor, last_mouse_frame, last_tool_bar_item): Declare here. - (estimate_mode_line_height): Define here. Handle windowing - systems directly (without using estimate_mode_line_height_hook). - (x_y_to_hpos_vpos, get_tool_bar_item, note_tool_bar_highlight): - (update_window_cursor, update_cursor_in_window_tree) - (fast_find_position, fast_find_string_pos) - (note_mode_line_highlight, note_mode_line_or_margin_highlight) - (expose_area, expose_line, expose_overlaps, expose_window) - (expose_window_tree, phys_cursor_in_rect_p): New generic versions; - declared static as they are only used locally in xdisp.c. - (draw_glyphs): Rename from x_draw_glyphs and make static. - (tool_bar_item_info, notice_overwritten_cursor): Make static. - (frame_to_window_pixel_xy, get_glyph_string_clip_rect) - (set_output_cursor, x_cursor_to, handle_tool_bar_click) - (x_write_glyphs, x_insert_glyphs, x_clear_end_of_line): - (x_fix_overlapping_area, draw_phys_cursor_glyph, erase_phys_cursor) - (display_and_set_cursor, x_update_cursor, x_clear_cursor) - (show_mouse_face, clear_mouse_face, cursor_in_mouse_face_p) - (note_mouse_highlight, x_clear_window_mouse_face) - (cancel_mouse_face, x_draw_vertical_border, expose_frame) - (x_intersect_rectangles): New generic functions for use by xdisp.c - and GUI front-ends. - (syms_of_xdisp): Initialize and staticpro help_echo* variables. - Defvar_bool "x-streach-cursor" and "mouse-autoselect-window" here. - - * dispextern.h (Display_Info): Generic typedef for *_display_info. - (NativeRectangle): Generic typedef for rectangle type. - (enum window_part): Move here from window.c. - (struct redisplay_interface): New members flush_display_optional, - define_frame_cursor, clear_frame_area, draw_window_cursor, - draw_vertical_window_border, shift_glyphs_for_insert. - Rename member clear_mouse_face to clear_window_mouse_face. - (estimate_mode_line_height_hook): Remove hook. - (auto_raise_tool_bar_buttons_p): Don't declare extern. - (tool_bar_item_info): Remove prototype. - (help_echo_string, help_echo_window, help_echo_object) - (previous_help_echo_string, help_echo_pos) - (last_mouse_frame, last_tool_bar_item, mouse_autoselect_window): - (x_stretch_cursor_p, output_cursor): Declare extern. - (x_draw_glyphs, notice_overwritten_cursor): Remove prototypes. - (x_write_glyphs), x_insert_glyphs, x_clear_end_of_line) - (x_fix_overlapping_area, draw_phys_cursor_glyph, erase_phys_cursor) - (display_and_set_cursor, set_output_cursor, x_cursor_to) - (x_update_cursor, x_clear_cursor, x_draw_vertical_border) - (frame_to_window_pixel_xy, get_glyph_string_clip_rect) - (note_mouse_highlight, x_clear_window_mouse_face, cancel_mouse_face) - (handle_tool_bar_click, clear_mouse_face, show_mouse_face) - (cursor_in_mouse_face_p, expose_frame, x_intersect_rectangles): - Add prototypes. - (mode_line_string, marginal_area_string): Fix prototypes. - - * window.c (enum window_part): Move to dispextern.h. - (coordinates_in_window): Use enum window_part member names - instead of numbers to describe return value. - (struct check_window_data): Change part member to window_part. - (check_window_containing): Return window_part unaltered. - (window_from_coordinates): Change part arg from int to enum - window_part. Allow part arg to be null. All users changed. - - * window.h (window_from_coordinates): Fix prototype. - - * term.c (estimate_mode_line_height): Move to xdisp.c. - - * keyboard.c (make_lispy_event): Use enum window_part. - - * dispnew.c (mode_line_string, marginal_area_string): Use enum - window_part instead of int in arg list. Users changed. - - * xterm.h (No_Cursor): Declare as None for X. - (struct mac_output): Replace member cross_cursor by hand_cursor. - - * xterm.c: Remove consolidated defines and code. - (BETWEEN): Remove unused macro. - (x_draw_vertical_window_border, x_shift_glyphs_for_insert) - (x_define_frame_cursor, x_clear_frame_area) - (x_draw_window_cursor): New X-specific functions for RIF. - (x_redisplay_interface): Add new members. - - * xfns.c: Setup and use hand_cursor instead of cross_cursor. - - * w32term.h (struct w32_output): Remove cross_cursor member. - - * w32term.c: Remove consolidated defines and code. - (BETWEEN): Remove unused macro. - (w32_draw_vertical_window_border, w32_shift_glyphs_for_insert) - (w32_define_frame_cursor, w32_clear_frame_area) - (w32_draw_window_cursor): New W32-specific functions for RIF. - (w32_redisplay_interface): Add new members. - - * w32gui.h (No_Cursor): Define as 0 for W32. - (XRectangle): Add X compatible rectangle type. - (NativeRectangle): Declare as RECT for W32. - (CONVERT_TO_XRECT, CONVERT_FROM_XRECT, STORE_NATIVE_RECT): New macros. - - * w32fns.c: Remove setup of cross_cursor (already has hand_cursor). - - * w32console.c: Remove consolidated defines and code. - - * msdos.h (Display_Info): Add generic typedef. - - * msdos.c: Remove consolidated defines and code. - (IT_note_mouse_highlight, dos_rawgetc): Use enum window_part. - - * macterm.h (struct mac_output): Replace member cross_cursor by - hand_cursor. - (activate_scroll_bars, deactivate_scroll_bars): Add prototypes. - - * macterm.c: Remove consolidated defines and code. - (BETWEEN): Remove unused macro. - (mac_draw_vertical_window_border, mac_shift_glyphs_for_insert) - (mac_define_frame_cursor, mac_clear_frame_area) - (mac_draw_window_cursor): New Mac-specific functions for RIF. - (x_redisplay_interface): Add new members. - - * macgui.h (No_Cursor): Define as 0 for Mac. - (XRectangle): Add X compatible rectangle type. - (NativeRectangle): Declare as Rect for Mac. - (CONVERT_TO_XRECT, CONVERT_FROM_XRECT, STORE_NATIVE_RECT): New macros. - - * macfns.c (x_set_mouse_color): Setup hand_cursor. - (x_set_cursor_color): Use x_display_and_set_cursor. - - * Makefile.in (xdisp.o): Add dependency on blockinput.h and files - included from it. Add dependency on keymap.h. - - * makefile.w32-in (xdisp.o): Add dependency on keymap.h. - -2003-03-21 Kenichi Handa - - * fileio.c (Fexpand_file_name): Fix previous change. - -2003-03-19 Kenichi Handa - - * fileio.c (Ffile_name_directory): Reconstruct file name by - make_specified_string. - (Ffile_name_nondirectory, Ffile_name_as_directory) - (Fdirectory_file_name, Fexpand_file_name) - (Fsubstitute_in_file_name): Likewise. - (Fread_file_name): Compare decoded homedir with DIR and - DEFAULT_FILENAME. - - * alloc.c (make_specified_string): If NCHARS is negative, count - the number of characters. - -2003-03-18 Jan Dj,Ad(Brv - - * gtkutil.c (xg_frame_cleared): Call gtk_widget_queue_draw for - all widgets. - - * gtkutil.h: Removed xg_ignore_next_thumb. - -2003-03-18 Kenichi Handa - - * coding.c (Vchar_coding_system_table): Remove this variable. - (Vcoding_system_safe_chars): New variable. - (intersection): Remove this function. - (find_safe_codings): Don't use Vchar_coding_system_table, but try - all codings in SAFE_CODINGS. - (Ffind_coding_systems_region_internal): Adjust for the change of - find_safe_codings. Get generic coding systems from - Vcoding_system_safe_chars. - (Fdefine_coding_system_internal): New function. - (syms_of_coding): Defsubr Sdefine_coding_system_internal. - Initialize and staticpro Vcoding_system_safe_chars. - -2003-03-18 Jan Dj,Ad(Brv - - * gtkutil.c (xg_set_toolkit_scroll_bar_thumb): Check if new values - equal old values before updating. - - * xterm.c (xg_scroll_callback): Remove xg_ignore_next_thumb. - - * gtkutil.c (xg_initialize): Remove xg_ignore_next_thumb. - -2003-03-17 Jan Dj,Ad(Brv - - * gtkutil.c: Removed handle_fixed_child, struct xg_last_sb_pos. - (xg_resize_widgets): Don't call foreach(handle_fixed_child). - (xg_gtk_scroll_destroy): Remove free of struct xg_last_sb_pos. - (scroll_bar_button_cb): Set bar->dragging to nil on button release. - (xg_create_scroll_bar): Pass bar to button event callback. - (xg_find_top_left_in_fixed): New function. - (xg_update_scrollbar_pos): Don't call gdk_window_clear on - whole scroll bar area. Get old position with - xg_find_top_left_in_fixed, calculate and only clear needed areas. - (xg_set_toolkit_scroll_bar_thumb): Do not adjust scroll bar if - dragging is in progress. Calculate whole as for Motif. - Remove code that saved last values. Call gtk_range functions to - set scroll bar sizes. - - * gtkutil.h: Removed xg_ignore_next_thumb. - -2003-03-17 Juanma Barranquero - - * makefile.w32-in ($(BLD)/xdisp.$(O)): Add dependency on blockinput.h - and files included from it. - -2003-03-18 Stefan Monnier - - * keymap.c (accessible_keymaps_1): Break cycles but without preventing - multiple occurrences of the same keymap under different prefixes. - (Faccessible_keymaps): Remove code redundant since 1994-08-03T07:39:00Z!rms@gnu.org. - -2003-03-16 Jason Rumney - - * w32gui.h: Use HDC for Display. - - * w32term.c (w32_encode_char): Prevent double-byte chars from - crashing Emacs. - - * w32fns.c (jpeg_load, png_load, slurp_file): Read image files - as binary. - -2003-03-16 Juanma Barranquero - - * xdisp.c (x_produce_glyphs): Use FRAME_BASELINE_OFFSET. - -2003-03-16 Kim F. Storm - - The following changes consolidate some of the gui-independent - parts of the processing and drawing of "glyph strings" from - xterm.c, w32term.c, and macterm.c into xdisp.c. - - * dispextern.h (struct glyph): Reduce face_id member from 22 to - 21 bits (this reduces number of faces from 4M to 2M). - Replace W32 specific w32_font_type member (2 bits) by generic - font_type member (3 bits) for portability. - (FONT_TYPE_UNKNOWN): New define, default for font_type member. - (enum draw_glyphs_face): Define here. - (struct glyph_string): Define here. Merge W32 and X versions. - (struct redisplay_interface): New members per_char_metric, - encode_char, compute_glyph_string_overhangs, draw_glyph_string. - (VCENTER_BASELINE_OFFSET): Define here. - (dump_glyph_string, x_get_glyph_overhangs, x_produce_glyphs) - (x_draw_glyphs, notice_overwritten_cursor): Declare prototypes here. - - * xdisp.c: Consolidate gui-independent "glyph string" code here. - (dump_glyph_string): Moved here. - (init_glyph_string, append_glyph_string_lists, append_glyph_string) - (prepend_glyph_string_lists, get_glyph_face_and_encoding) - (fill_composite_glyph_string, fill_glyph_string) - (fill_image_glyph_string, fill_stretch_glyph_string) - (left_overwritten, left_overwriting, right_overwritten) - (right_overwriting, get_char_face_and_encoding) - (set_glyph_string_background_width, compute_overhangs_and_x) - (append_glyph, append_composite_glyph, produce_image_glyph) - (take_vertical_position_into_account, append_stretch_glyph) - (produce_stretch_glyph): New generic functions (based on X version). - Call platform specific functions through rif. - (INIT_GLYPH_STRING): New macro, hides W32 details. - (BUILD_STRETCH_GLYPH_STRING, BUILD_IMAGE_GLYPH_STRING) - (BUILD_CHAR_GLYPH_STRINGS, BUILD_COMPOSITE_GLYPH_STRING) - (BUILD_GLYPH_STRINGS): Generic macros (based on X version). - (x_draw_glyphs, x_get_glyph_overhangs, x_produce_glyphs) - (notice_overwritten_cursor): - Generic functions exported to platform modules. Users changed. - - * xterm.h (FONT_DESCENT, FRAME_X_OUTPUT, FRAME_BASELINE_OFFSET) - (FONT_TYPE_FOR_UNIBYTE, FONT_TYPE_FOR_MULTIBYTE) - (STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2): - New macros for consolidated code. - - * xterm.c: Remove consolidated defines and code. - (x_per_char_metric, x_encode_char) - (x_compute_glyph_string_overhangs): Adapt to RIF requirements. - (x_redisplay_interface): Add new members. - - * w32gui.h (Display): Add dummy typedef for consolidation. - (XChar2b): Define alias for wchar_t for consolidation. - (STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2): New macros. - - * w32term.h (FRAME_X_OUTPUT, FRAME_X_WINDOW, FRAME_X_DISPLAY) - (FONT_TYPE_FOR_UNIBYTE, FONT_TYPE_FOR_MULTIBYTE): - New macros for consolidation. - - * w32term.c: Remove consolidated defines and code. - (BUILD_WCHAR_T, BYTE1, BYTE2): Macros removed; callers changed - to use STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2 instead. - (w32_per_char_metric): Change font_type arg to int for RIF. - (w32_encode_char): Return int according to RIF requirements. - (w32_compute_glyph_string_overhangs): Adapt to RIF. - (w32_get_glyph_overhangs): New function for RIF. Uses generic - x_get_glyph_overhangs. - (w32_redisplay_interface): Add new members. - - * macgui.h (XChar2b): Move typedef here for consolidation. - (STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2): New macros. - - * macterm.h (FRAME_X_OUTPUT, FRAME_X_WINDOW, FRAME_X_DISPLAY): - (FONT_TYPE_FOR_UNIBYTE, FONT_TYPE_FOR_MULTIBYTE): New macros for - consolidation. - - * macterm.c: Remove consolidated defines and code. - (mac_per_char_metric): New function for RIF. - (mac_encode_char): Adapt to new RIF requirements. - (mac_compute_glyph_string_overhangs): Adapt for RIF. - (x_redisplay_interface): Add new members. - -2003-03-15 Stefan Monnier - - * keymap.c (Vmenu_events): New var. - (syms_of_keymap): Initialize it. - (where_is_internal): Check more carefully what is a menu event. - -2003-03-14 Richard M. Stallman - - * lread.c (read1): After #!, exit loop on eof. - -2003-03-14 Jan Dj,Ad(Brv - - * gtkutil.h: Add declaration for xg_frame_cleared. - - * xterm.c (x_clear_frame): Call xg_frame_cleared for GTK. - - * gtkutil.c (struct xg_last_sb_pos): New structure. - (handle_fixed_child): New function. - (xg_resize_widgets): Call handle_fixed_child on all scroll bar widgets - and force a redraw on them. - (xg_gtk_scroll_destroy): Free struct xg_last_sb_pos also. - (xg_create_scroll_bar): Add struct xg_last_sb_pos to scroll bar - so we can avoid unneeded redraws. - (xg_update_scrollbar_pos): Invalidate data in xg_last_sb_pos - and force a redraw on the scroll bar. - (xg_set_toolkit_scroll_bar_thumb): Do not change/redraw scroll bar - if xg_last_sb_pos shows the positions are up to date. - (xg_frame_cleared): New function. - -2003-03-13 Kenichi Handa - - * coding.c (Fdetect_coding_region): Fix docstring. - (Fdetect_coding_string): Fix docstring. - -2003-03-13 Andreas Schwab - - * gtkutil.c: Add prototype for create_menus. - - * data.c (long_to_cons): Fix type of top. - - * xselect.c (selection_data_to_lisp_data): Use int instead of - long for an integer of size 4. - - * gtkutil.c (xg_update_frame_menubar): Add missing return value. - (xg_tool_bar_help_callback): Likewise. - -2003-03-12 Andreas Schwab - - * xterm.c (x_term_init) [USE_GTK]: Fix typo. - -2003-03-12 Kim F. Storm - - The following changes consolidate the fringe handling from - xterm.c, w32term.c, and macterm.c into xdisp.c. - - * xdisp.c: Consolidate fringe handling code here. - (left_bits, right_bits, continued_bits, continuation_bits) - (ov_bits, zv_bits): Define fringe bitmaps. - (fringe_bitmaps): New array holding fringe bitmaps. - (draw_fringe_bitmap): Draw a specific bitmap; call display - specific drawing routine via rif->draw_fringe_bitmap. - (draw_row_fringe_bitmaps): Generic replacement for - x_draw_row_fringe_bitmaps; all callers changed. - (compute_fringe_widths): Generic replacement for - x_compute_fringe_widths; all callers changed. - - * dispextern.h (enum fringe_bitmap_type): Define here. - (struct fringe_bitmap, struct draw_fringe_bitmap_params): New. - (fringe_bitmaps): Declare extern. - (struct redisplay_interface): New member draw_fringe_bitmap. - (draw_row_fringe_bitmaps, compute_fringe_widths): Declare extern. - - * xterm.c: Remove generic fringe code. - (x_draw_fringe_bitmap): Only perform actual fringe drawing. - (x_redisplay_interface): Add x_draw_fringe_bitmap member. - - * w32term.c: Remove generic fringe code. - (w32_draw_fringe_bitmap): Only perform actual fringe drawing. - (w32_redisplay_interface): Add w32_draw_fringe_bitmap member. - - * macterm.c: Remove generic fringe code. - (x_draw_fringe_bitmap): Only perform actual fringe drawing. - (x_redisplay_interface): Add x_draw_fringe_bitmap member. - -2003-03-11 Stefan Monnier - - * print.c (Fprin1_to_string): Return unibyte string if possible. - -2003-03-09 David Kastrup - - * process.c (read_process_output): We have allocated enough space - for readmax and carryover, so actually use the alloted space. - -2003-03-09 Jan Dj,Ad(Brv - - * keyboard.c (make_lispy_event): Extend mouse_syms if needed for - toolkit scrollbar click. - - * xterm.c (x_window_to_scroll_bar): Call xg_get_scroll_id_for_window - for USE_GTK. - (x_scroll_bar_handle_click): Use this function for toolkit scrollbars - also. - (handle_one_xevent): ButtonPress/Release: If event is for a toolkit - scrollbar and control is pressed, call x_scroll_bar_handle_click. - - * gtkutil.h (xg_get_scroll_id_for_window): Declare. - - * gtkutil.c (xg_get_scroll_id_for_window): New function. - (xg_tool_bar_item_expose_callback): New function. - (xg_tool_bar_expose_callback): Call update_frame_tool_bar. - (xg_create_tool_bar): Connect xg_tool_bar_expose_callback to expose - on the tool bar widget. - (update_frame_tool_bar): Connect xg_tool_bar_item_expose_callback - to expose on the tool bar item widgets. - -2003-03-08 Jan Dj,Ad(Brv - - * gtkutil.c (update_frame_tool_bar): Compare pixmap ID instead of - struct image* when deciding to update (struct image* may have been - deleted from the image cache). - - * xterm.c (handle_one_xevent): Pass ReparentNotify to Xt even if - the event isn't for a frame (i.e. for dialogs). - -2003-03-07 Kenichi Handa - - * coding.c (CODING_ADD_COMPOSITION_COMPONENT): If the number of - composition components reaches the limit, terminate composing. - (COMPOSITION_OK): New macro. - (detect_coding_iso2022): Use it if an escape sequence for - composition is found. - (coding_restore_composition): Adjust the number of composition - components if it is not sane. - -2003-03-06 Juanma Barranquero - - * w32term.h (struct w32_display_info): Add xrdb member to support - passing resources via -xrm on Windows. - - * w32term.c (w32_make_rdb): New function. - (w32_term_init): Use it to initialize xrdb member of w32_display_info - struct. Delete leftover code. - - * w32fns.c (Fx_get_resource, x_get_resource_string): Pass xrdb to check - for resources passed on the command line. - - * w32reg.c (w32_get_rdb_resource): New function. - (x_get_string_resource): Use it, so resources passed with -xrm - supercede the ones in the registry. - -2003-03-04 Jan Dj,Ad(Brv - - * xterm.c (x_detect_focus_change): Call x_any_window_to_frame - instead of x_top_window_to_frame. - -2003-03-03 Jan Dj,Ad(Brv - - * xsmfns.c (smc_save_yourself_CB): Add --no-splash to options - when restarting Emacs. - -2003-03-03 Richard M. Stallman - - * buffer.c (Fkill_buffer): Use Frun_hook_with_args_until_failure - to run kill-buffer-query-functions. - (Qkill_buffer_query_functions): New var. - (syms_of_buffer): Init and staticpro it. - -2003-03-02 Jan Dj,Ad(Brv - - * xterm.h (XSync): Define as gdk_window_process_all_updates for GTK. - -2003-02-25 Kim F. Storm - - * xdisp.c (redisplay_window): Fix infinite loop in redisplay. - If centering point failed to make whole line visible and vscroll - is non-zero, disable vscroll and try centering point again. - - * lread.c (read1): Accept `single space' syntax like (? x). - -2003-02-25 Jan Dj,Ad(Brv - - * keyboard.c (cancel_hourglass_unwind): Surround with - #ifdef HAVE_X_WINDOWS. - -2003-02-25 Kenichi Handa - - * buffer.c (Fset_buffer_multibyte): Pay attention to the buffer - process only when "subprocesses" is defined. - -2003-02-24 Stefan Monnier - - * syntax.c (back_comment): Only check nestedness of 2nd char if needed. - -2003-02-24 Juanma Barranquero - - * callint.c (fix_command): Declare as static void and move before - Fcall_interactively. - - * xdisp.c (Qwhen): Declare external; it's now defined in callint.c. - (syms_of_xdisp): Don't initialize Qwhen. - -2003-02-23 Jan Dj,Ad(Brv - - * keyboard.c (cancel_hourglass_unwind): New function. - (command_loop_1): Cancel hourglass with unwind-protect. - -2003-02-23 Richard M. Stallman - - * callint.c (fix_command): New subroutine, from Fcall_interactively. - Detect (when ... (region-beginning)) etc. - (Fcall_interactively): Call fix_command. - (Qif, Qwhen): New variables. - (syms_of_callint): Init and staticpro them. - - * regex.c (print_partial_compiled_pattern): Output to stderr. - -2003-02-23 Kai Gro,A_(Bjohann - - * dired.c (directory_files_internal): Don't expand directory. - (Fdirectory_files, Fdirectory_files_and_attributes): Do it here - instead. From Lars Hansen . - -2003-02-22 Stefan Monnier - - * fns.c (string_to_multibyte): Remove unused var i. - (Flanginfo): Fix int/Lisp_Object mixup. - (void_call2): New fun. - (Fmap_char_table): Use it in place of call2. - - * xfaces.c (x_face_list_fonts): Fix int/Lisp_Object mixup. - - * macros.c (Fstart_kbd_macro): Remove redundant assignment. - - * keymap.c (copy_keymap_1): Make it static. - - * alloc.c (Fgarbage_collect): Don't use XSETFLOAT. - -2003-02-22 David Ponce - - * lread.c (Fload): Don't check STRING_MULTIBYTE. - -2003-02-21 Jan Dj,Ad(Brv - - * process.h: Removed subtty field from struct Lisp_Process. - - * process.c (create_process): Remove setting of subtty. - (emacs_get_tty_pgrp): New function. - (Fprocess_running_child_p, process_send_signal): - Call emacs_get_tty_pgrp instead of ioctl. - (process_send_signal): Call EMACS_KILLPG if ioctl TIOCSIGSEND fails. - -2003-02-21 Kai Gro,A_(Bjohann - - * keymap.c (Fdefine_key): Doc fix. - -2003-02-21 Juanma Barranquero - - Port of patch for RC by Klaus Zeitler . - - * s/hpux10.h: Define POLL_INTERRUPTED_SYS_CALL, not - POLLING_PROBLEM_IN_SELECT. - - * s/hpux11.h: Include hpux10-20.h instead of hpux10.h. - Delete #undef of POLLING_PROBLEM_IN_SELECT. - - * s/hpux10-20.h: New file. - - * process.c (wait_reading_process_input): - Use POLL_INTERRUPTED_SYS_CALL, not POLLING_PROBLEM_IN_SELECT. - -2003-02-20 Kenichi Handa - - * fontset.c (check_fontset_name): If NAME is nil, return the - default fontset. - (override_font_info): New function. - (Fset_fontset_font): Document that NAME nil means the default fontset. - (Ffontset_info): If FONTSET is not the default fontset, merge - FONTSET onto the copy of the default fontset, and work on that - copy. Document that NAME nil means the default fontset. - (Ffontset_font): Document that NAME nil means the default fontset. - - * process.c (setup_process_coding_systems): If the process's - in/out descriptor is -1, do nothing. - -2003-02-19 Andreas Schwab - - * lisp.h (Fcancel_kbd_macro_events, Fstring_to_multibyte): - Add prototypes. - -2003-02-19 Kenichi Handa - - * xfaces.c (try_alternative_families): Try all scalable fonts if - Vscalable_fonts_allowed is not Qt. - -2003-02-19 Jan Dj,Ad(Brv - - * xfaces.c (x_face_list_fonts): Set *pfonts to 0 if no fonts found. - -2003-02-18 Jan Dj,Ad(Brv - - * xterm.c (x_list_fonts): If maxnames is less than 0, get all font - names. - - * xfaces.c (x_face_list_fonts): Allocate struct font_name here. - (sorted_font_list): Move allocation of struct font_name to - x_face_list_fonts. - (Fx_font_family_list): Set font-list-limit to -1 to get all font names. - (Fx_list_fonts): Set maxnames to -1 to get all font names. - -2003-02-18 Kim F. Storm - - * lread.c (read1): Fix last change. - "`" is not always special. Allow "?" after a character constant. - -2003-02-18 Andrew Choi - - * unexmacosx.c (copy_data_segment): Also copy __cfstring section. - -2003-02-18 Andreas Schwab - - * window.c (window_scroll_pixel_based): Move outside a - multi-glyph character before setting new window start. - - * xdisp.c (in_display_vector_p): New function. - * dispextern.h (in_display_vector_p): Declare. - -2003-02-18 Kim F. Storm - - * lread.c (read1): Fix and relax read syntax. - Recognize "[", ";", "#", and "?" after a dotted-pair dot. - Only recognize "," after dotted-pair dot if inside backquote. - Never include "`" or "," (inside backquote) in a symbol. - Allow dotted-pair dot after a character constant. - Allow "`" and "," (inside backquote) after a character constant. - -2003-02-17 Jan Dj,Ad(Brv - - * gtkutil.c (xg_tool_bar_expose_callback): New function. - (xg_create_tool_bar): Force style of tool bar to be horizontal with - icons. Set name of tool bar to emacs-toolbar. - (update_frame_tool_bar): Connect expose event to - xg_tool_bar_expose_callback. - -2003-02-17 Richard M. Stallman - - * keyboard.c (this_command_key_count_reset): New variable. - Initiatize to 0 where this_command_key_count is set. - (read_char): Save and restore this_command_key_count_reset - around input method code. - (read_char): If this_command_key_count_reset, echo reread commands. - (Freset_this_command_lengths): Set this_command_key_count_reset to 1. - -2003-02-17 Kenichi Handa - - * fns.c (string_to_multibyte): Always return a multibyte string. - -2003-02-16 Jason Rumney - - * w32fns.c (w32_list_bdf_fonts, w32_list_fonts): - Negative max_fonts parameter means list all. - -2003-02-14 Dave Love - - * fns.c (Flanginfo): Doc fix. - -2003-02-13 Kim F. Storm - - * lread.c (read_escape): Interpret \s as a SPACE character, except - for \s-X in a character constant which still is the super modifier. - (read1): Signal an `invalid read syntax' error if a character - constant is immediately followed by a digit or symbol character. - - * search.c (Fmatch_data): Doc fix. Explicitly state that - match-data is undefined if last search failed. - - * keymap.c (Fcommand_remapping): Rename from Fremap_command. - All uses changed. - -2003-02-12 Juanma Barranquero - - * eval.c (Fdefmacro): Fix typo. - -2003-02-12 Kim F. Storm - - * macros.c (Fstart_kbd_macro): If appending, and last keyboard - macro is a string, convert meta modifiers in string when copying - the string into a vector. - -2003-02-11 Kim F. Storm - - * keymap.c (Fremap_command): Return nil if arg is not a symbol. - -2003-02-11 Kenichi Handa - - * Makefile.in (lisp, shortlisp): Add malayalam.el and tamil.el. - -2003-02-10 Kim F. Storm - - * process.c: Doc fixes. - (syms_of_process): Add `:' prefix to QCfilter_multibyte. - -2003-02-10 Kenichi Handa - - * fns.c (Fstring_to_multibyte): Fix typo in the docstring. - - * process.c (QCfilter_multibyte): New variable. - (setup_process_coding_systems): New function. - (Fset_process_buffer, Fset_process_filter): - Call setup_process_coding_systems. - (Fstart_process): Initialize the member `filter_multibyte' of - struct Lisp_Process. - (create_process): Call setup_process_coding_systems. - (Fmake_network_process): New keyward `:filter-multibyte'. - Initialize the member `filter_multibyte' of struct Lisp_Process. - Call setup_process_coding_systems. - (server_accept_connection): Call setup_process_coding_systems. - (read_process_output): If the process has a filter, decide the - multibyteness of a string to given to the filter by - `filter_multibyte' member of the process. If the process doesn't - have a filter and the result of conversion is unibyte, use - Fstring_to_multibyte (not Fstring_make_multibyte) to get the - multibyte form. - (Fset_process_coding_system): Call setup_process_coding_systems. - (Fset_process_filter_multibyte): New function. - (Fprocess_filter_multibyte_p): New function. - (syms_of_process): Intern and staticpro QCfilter_multibyte. - Defsubr Sset_process_filter_multibyte and - Sprocess_filter_multibyte_p. - - * process.h (struct Lisp_Process): New member filter_multibyte. - - * lisp.h (setup_process_coding_systems): Add prototype. - - * buffer.c (Fset_buffer_multibyte): If the current buffer has a - process, update coding systems for the process. - -2003-02-09 Kenichi Handa - - * fns.c (string_to_multibyte): New function. - (Fstring_to_multibyte): New function. - (syms_of_fns): Defsubr it. - -2003-02-08 Andreas Schwab - - * Makefile.in (EXEEXT): Define to @EXEEXT@ and use this variable - instead of the substitution. - -2003-02-08 Jan Dj,Ad(Brv - - * xterm.c (x_make_frame_visible): Call gtk_window_deiconify. - - * xmenu.c (menu_position_func): Adjust menu popup position so that - the menu is fully visible. - -2003-02-07 Jan Dj,Ad(Brv - - * xterm.c (x_text_icon, x_raise_frame, x_lower_frame) - (x_make_frame_invisible, x_wm_set_icon_position): - Use FRAME_OUTER_WINDOW instead of ifdef X_TOOLKIT/else/endif. - - * xfns.c (x_set_name, x_set_title): Ditto. - -2003-02-04 Richard M. Stallman - - * keyboard.c (echo_now): Update before_command_echo_length. - (Freset_this_command_lengths): Reset this_command_key_count etc. - immediately rather than arranging to do it later. - (before_command_key_count_1, before_command_echo_length_1) - (before_command_restore_flag): Vars deleted. - (add_command_key): Don't handle before_command_restore_flag. - (read_char, record_menu_key): Don't update before_command_key_count or - before_command_echo_length. - (read_char): Don't handle before_command_restore_flag. - - * keyboard.c (command_loop_1): Don't call adjust_point_for_property - in direct-output clauses if it wouldn't be called in the ordinary case. - -2003-02-04 Kim F. Storm - - * keyboard.c (syms_of_keyboard) : Doc fix. - -2003-02-02 Jan Dj,Ad(Brv - - * gtkutil.c (remove_from_container): Copying list is not needed. - (xg_update_menubar, xg_update_menu_item, xg_update_submenu) - (xg_modify_menubar_widgets, update_frame_tool_bar): Call g_list_free - on list returned from gtk_container_get_children to avoid memory leak. - -2003-02-01 Jason Rumney - - * w32fns.c (w32_create_pixmap_from_bitmap_data): Use alloca for - local malloc. - [HAVE_XPM]: Avoid clashes with XColor, XImage and Pixel - definitions in xpm.h. - (init_xpm_functions): New function. - (xpm_load): Sync with xfns.c. Adapt for Windows version of libXpm. - (init_external_image_libraries): Try to load libXpm.dll. - - * fileio.c (Fcopy_file) [WINDOWSNT]: Reverse logic for setting - timestamp. - -2003-01-31 Dave Love - - * syntax.c (Fskip_chars_forward) - (open-paren-in-column-0-is-defun-start): Doc fix. - -2003-01-31 Joe Buehler - - * fileio.c: Support // at start of name for Cygwin (just added proper - preprocessor tests). - - * keyboard.c: Port to Cygwin (just added proper preprocessor tests). - - * Makefile.in: Use @EXEEXT@ for Cygwin. - - * mem-limits.h: Added ifdef to define BSD4_2 for Cygwin. - - * s/cygwin.h: Added for Cygwin port. - -2003-01-31 Juanma Barranquero - - * w32fns.c (DrawText): Kludge to avoid a redefinition on Windows - when including gif_lib.h. - (init_gif_functions, init_tiff_functions): New functions. - (gif_load, tiff_load): Sync with xfns.c version. Adjust colors for - Windows. Disable color table lookups. Call library functions - through pointers determined at runtime. - (init_external_image_libraries): Try to load libungif.dll and - libtiff.dll. - -2003-01-31 Kenichi Handa - - * xdisp.c (SKIP_GLYPHS): New macro. - (set_cursor_from_row): Skip all glyphs that comes from overlay string. - -2003-01-30 Jan Dj,Ad(Brv - - * gtkutil.c (free_frame_tool_bar): Remove debug printf. - -2003-01-30 Dave Love - - * alloc.c (Vgc_elapsed, gcs_done): New variables. - (Fgarbage_collect): Use them. - (init_alloc, syms_of_alloc): Set them up. - -2003-01-30 Juanma Barranquero - - * w32fns.c (init_external_image_libraries): Add missing operator. - -2003-01-29 Jason Rumney - - * w32fns.c (init_external_image_libraries): Allow jpeg-62.dll as - an alternative name for jpeg.dll. - -2003-01-29 Kenichi Handa - - * xdisp.c (set_cursor_from_row): Pay attention to string display - properties. - -2003-01-28 Benjamin Riefenstahl - - * macterm.c (keycode_to_xkeysym_table): Add , , - . - (keycode_to_xkeysym_table): Reformat and add more comments. - (XTread_socket): Drop special case for backspace. - -2003-01-28 Andrew Choi - - * macfns.c (x_to_mac_color): Correct the order for parsing the RGB - values in old-style RGB specs. - -2003-01-27 Juanma Barranquero - - * w32fns.c (init_external_image_libraries): Try alternate names for the - jpeg dll. - -2003-01-27 Jan Dj,Ad(Brv - - * gtkutil.c (create_dialog, xg_separator_p) - (xg_item_label_same_p, xg_update_menu_item): Check for NULL string - before calling strcmp or strlen. - -2003-01-26 Jan Dj,Ad(Brv - - * gtkutil.c (update_frame_tool_bar): Call prepare_image_for_display - and handle image load failure. - -2003-01-26 Jason Rumney - - * w32fns.c (init_jpeg_functions, jpeg_resync_to_restart_wrapper): - New functions. - (jpeg_load): Sync with xfns.c version. Adjust colors for Windows. - Disable color table lookups. Call jpeg library functions - through pointers determined at runtime. - (init_external_image_libraries): Try to load jpeg.dll. - -2003-01-25 Richard M. Stallman - - * lisp.h: Declare format2 instead of format1. - - * fileio.c (barf_or_query_if_file_exists): - Call format2 instead of format1. - - * editfns.c (format2): New function, replaces format1 - but takes exactly two Lisp Objects as format args. - - * buffer.c (Fkill_buffer): Call format2 instead of format1. - -2003-01-25 Jan Dj,Ad(Brv - - * xterm.h: Change to return value of x_dispatch_event to int. - - * xterm.c (x_filter_event): New function. - (event_handler_gdk, XTread_socket): Call x_filter_event. - (x_dispatch_event): Change to return value of finish. - (event_handler_gdk): Use return value from x_dispatch_event. - - * xfns.c (x_window): Call create_frame_xic for GTK version to - initialize input methods. - - * gtkutil.h: Add (void) prototypes. - - * gtkutil.c (create_menus): Remove code that puts the help menu to - the right. - -2003-01-25 Jason Rumney - - * w32fns.c (XPutPixel): Handle monochrome images; used for masks. - [HAVE_PNG]: Sync with xfns.c version. - (png_load): Adjust colors for Windows. Use Windows - bitmaps. Disable color table lookups. - (DEF_IMGLIB_FN, LOAD_IMGLIB_FN): New macros. - (init_png_functions): New function. - (png_read_from_memory, png_load): Call png library functions - through pointers determined at runtime. - (QCloader, QCbounding_box, QCpt_width, QCpt_height): Declare. - (init_external_image_libraries): New function. - (init_xfns): Call it. - -2003-01-24 Andreas Schwab - - * minibuf.c (Fminibuffer_message): Verify type of parameter. - -2003-01-24 Jan Dj,Ad(Brv - - * gtkutil.c (xg_initialize): Initialize id_to_widget here instead - of static initializer. - -2003-01-24 Dave Love - - * s/gnu-linux.h (GC_SETJMP_WORKS, GC_MARK_STACK): Define for more - architectures. - - * alloc.c (mark_stack) [!GC_LISP_OBJECT_ALIGNMENT && __GNUC__]: - Use __alignof__. - -2003-01-24 Kenichi Handa - - * keyboard.c (adjust_point_for_property): New second arg MODIFIED. - It it is nonzero, don't pretend that an invisible area doesn't exist. - (command_loop_1): Call adjust_point_for_property with proper - second arg. - -2003-01-22 Jason Rumney - - Sync changes with xterm.c and xfns.c. - - * w32term.c (x_draw_glyph_string_foreground) - (x_draw_composite_glyph_string_foreground): Implement overstriking. - - * w32term.c (x_write_glyphs): Clear phys_cursor_on_p if current - phys_cursor's hpos is overwritten. This is still not completely - correct, as it doesn't really make sense to use hpos at all to - get the cursor glyph (as that is relative to the width of the - characters on the line, which may have changed during the update). - - * w32term.c (notice_overwritten_cursor): Handle the special case - of the cursor being in the first blank non-text line at the - end of a window. - - * w32term.c (x_draw_hollow_cursor, x_draw_bar_cursor) - (x_draw_phys_cursor_glyph): Set phys_cursor_width here. - Compute from the x position returned by x_draw_glyphs. - - (x_display_and_set_cursor): Don't set phys_cursor_width here, - except for NO_CURSOR and system caret, to make phys_cursor_width - contain what its name suggests. - (notice_overwritten_cursor): Consider the cursor image erased if - the output area intersects the cursor image in y-direction. - - * w32term.c (note_mode_line_or_margin_highlight): Rename from - note_mode_line_highlight and extend. - - * w32term.c (last_window): New variable. - (w32_read_socket) : Generate SELECT_WINDOW_EVENTs. - (note_mouse_movement): Remove reimplemented code in #if 0. - - * w32fns.c (x_set_cursor_type): Set cursor_type_changed, - not update_mode_lines, and always set it to 1. - -2003-01-21 Jason Rumney - - * w32fns.c (IDC_HAND): Define it if system headers don't. - -2003-01-21 KOBAYASHI Yasuhiro - - * w32term.h (struct w32_output): New member hand_cursor. - (WM_EMACS_SETCURSOR): New message definition. - - * w32term.c (note_mode_line_highlight): Delete #if 0 to enable - function w32_define_cursor. - (note_mouse_highlight): Initialize, setup cursor accoding to mouse - position, change member name output_data.x to output_data.w32 and - add function w32_define_cursor. - (show_mouse_face): Delete #if 0 to enable function w32_define_cursor - and change member name output_data.x to output_data.w32. - (w32_initialize_display_info): - Setup dpyinfo->vertical_scroll_bar_cursor. - - * w32fns.c (Vx_hand_shape): New variable. - (w32_wnd_proc): Add message entries for WM_SETCURSOR and - WM_EMACS_SETCURSOR. - (x-create-frame): Setup Cursor types. - -2003-01-21 David Ponce - - * w32term.c (w32_encode_char): For DIM=1 charset, set - ccl->reg[2] to -1 before calling ccl_driver. - (Sync. with xterm.c x_encode_char change by Kenichi Handa - on 2002-09-30.) - (w32_draw_relief_rect): Declare all args. - (w32_define_cursor): New. - - * w32fns.c (w32_load_cursor): New function. - (w32_init_class): Use it. - (x_put_x_image): Declare all args. - -2003-01-21 Richard Dawe - - * Makefile.in (ALL_CFLAGS): Include MYCPPFLAGS, not MYCPPFLAG. - -2003-01-21 Jan Dj,Ad(Brv - - * gtkutil.c: Must include stdio.h before termhooks.h. - -2003-01-21 Dave Love - - * alloc.c (Fgc_status): Print zombie list. - (mark_maybe_object) [GC_MARK_STACK==GC_USE_GCPROS_CHECK_ZOMBIES]: - Fix assignment of zombies. - (Fgarbage_collect) [GC_MARK_STACK==GC_USE_GCPROS_CHECK_ZOMBIES]: - Don't take car of non-cons. - - * s/sol2-5.h (GC_SETJMP_WORKS, GC_MARK_STACK): Define. - - * s/sunos4-0.h (GC_SETJMP_WORKS, GC_MARK_STACK): Define. - -2003-01-20 David Ponce - - * w32menu.c (digest_single_submenu): Declare all args. - - Sync with 2002-12-23 Richard M. Stallman - changes in xmenu.c: - - (parse_single_submenu): Use individual keymap's prompt - string as pane name, if there is one. - (set_frame_menubar): Save menu_items_n_panes from each call to - parse_single_submenu and use it when calling digest_single_submenu. - -2003-01-20 Steven Tamm - - * macterm.c (XTread_socket): Check for valid, visible window - before sending a scroll-wheel event. - -2003-01-20 Richard M. Stallman - - * xdisp.c (redisplay_window): If mini window's buffer is not - a minibuffer, then redisplay it like other windows. - -2003-01-20 Jan Dj,Ad(Brv - - * gtkutil.c (xg_create_frame_widgets): Check if there is an - external tool bar before setting tool bar height. - -2003-01-19 Jan Dj,Ad(Brv - - * xterm.c (handle_one_xevent): Surround popup_activated - with #ifdef:s for non-toolkit version. - - * Makefile.in (XOBJ): Add gtkutil.o if USE_GTK. - (gtkutil.o): New file. - (TOOLKIT_DEFINES): Set to -DUSE_GTK if HAVE_GTK. - (LIBW): Set to @GTK_LIBS@ if USE_GTK. - - * gtkutil.c: New file for GTK version. - - * gtkutil.h: New file for GTK version. - - * xterm.h: Add xt_or_gtk_widget. - Include gtk files for USE_GTK. - (struct x_output): Add toolbar_height. - (struct x_output): Add GTK widgets and Gdk size_hints. - (GTK_WIDGET_TO_X_WIN, FRAME_GTK_OUTER_WIDGET, FRAME_GTK_WIDGET) - (FRAME_OUTER_WINDOW): New macros for USE_GTK. - (FRAME_OUTER_TO_INNER_DIFF_Y): Add FRAME_TOOLBAR_HEIGHT to calculation. - - * xterm.c: Include gtkutil.h for USE_GTK. - (free_frame_menubar): Declare extern void for USE_GTK. - (note_mouse_highlight): Check popup_activated for USE_GTK. - (xt_action_hook): Don't compile if USE_GTK. - (x_scroll_bar_to_input_event): Use CurrentTime for USE_GTK. - (xg_scroll_callback): New function. - (x_create_toolkit_scroll_bar): Call xg_create_scroll_bar for USE_GTK. - (x_set_toolkit_scroll_bar_thumb): Call xg_set_toolkit_scroll_bar_thumb - for USE_GTK. - (x_scroll_bar_create): Call xg_update_scrollbar_pos and - xg_show_scroll_bar for USE_GTK. - (x_scroll_bar_remove): Call xg_remove_scroll_bar for USE_GTK. - (XTset_vertical_scroll_bar): Call xg_update_scrollbar_pos for USE_GTK. - (event_handler_gdk): New function for USE_GTK. - (handle_one_xevent): Call xg_resize_widgets for USE_GTK. - (handle_one_xevent): Make sure widget is mapped before - calling x_real_positions for USE_GTK. - (XTread_socket): Add GTK event loop for USE_GTK. - (x_set_window_size): Call xg_frame_set_char_size for USE_GTK. - (x_make_frame_visible): Call gtk_widget_show_all for USE_GTK. - (x_make_frame_invisible): Call gtk_widget_hide for USE_GTK. - (x_iconify_frame): Add code for USE_GTK. - (x_free_frame_resources): Call gtk_widget_destroy for USE_GTK. - (x_wm_set_size_hint): Only compile if not USE_GTK. GTK version - is in gtkutil.c. - (x_term_init): Add initialization for GTK. - (syms_of_xterm): Set Vx_toolkit_scroll_bars for USE_GTK. - - * xmenu.c: Include gtkutil.h for USE_GTK. - (Fx_popup_menu): Use current position if x and y are nil. - (single_menu_item, single_menu_item, Fx_popup_dialog): - Check for USE_GTK. - (popup_widget_loop): New function for USE_GTK. - (x_activate_menubar): Add code for USE_GTK. - (popup_activate_callback, popup_deactivate_callback) - (menu_highlight_callback, menubar_selection_callback): - Add USE_GTK versions. - (update_frame_menubar): Call xg_update_frame_menubar for USE_GTK. - (set_frame_menubar): Call xg_modify_menubar_widgets for USE_GTK. - (free_frame_menubar): Only compile if not USE_GTK. GTK version - is in gtkutil.c. - (popup_selection_callback): New version for USE_GTK. - (create_and_show_popup_menu): New fuction, one USE_GTK version and - one USE_X_TOOLKIT version. - (xmenu_show): Call create_and_show_popup_menu. - (dialog_selection_callback): New version for USE_GTK. - (create_and_show_dialog): New fuction, one USE_GTK version and - one USE_X_TOOLKIT version. - (xdialog_show): Call create_and_show_dialog. - - * xfns.c: Include gtkutil for USE_GTK. - (x_window_to_frame, x_any_window_to_frame) - (x_non_menubar_window_to_frame, x_menubar_window_to_frame) - (x_top_window_to_frame): Add code for USE_GTK. - (x_set_background_color): Call xg_set_background_color for GTK. - (x_set_menu_bar_lines): Check for USE_GTK. - (x_set_tool_bar_lines): Call update_frame_tool_bar for USE_GTK. - (x_set_name, x_set_title): Call gtk_window_set_title for USE_GTK. - (x_window): Call xg_create_frame_widgets for USE_GTK. - (Fx_create_frame): Check for USE_GTK. - (Fx_file_dialog): New implementation for USE_GTK. - - * xdisp.c: Add check for USE_GTK for extern void set_frame_menubar. - (update_menu_bar): Add check for USE_GTK. - (update_tool_bar): Add check for USE_GTK and external tool bar. - (redisplay_tool_bar): Add check for USE_GTK and external tool bar. - (redisplay_internal): Add check for USE_GTK and popup_activated. - (redisplay_window): Add check for USE_GTK and FRAME_EXTERNAL_MENU_BAR. - (redisplay_window): Add check for USE_GTK and FRAME_EXTERNAL_TOOL_BAR. - (display_menu_bar): Add check for USE_GTK - - * lisp.h (Vx_resource_name): Declare extern. - - * keyboard.c (kbd_buffer_get_event): Check MENU_BAR_ACTIVATE_EVENT - for USE_GTK. - (make_lispy_event): Check MENU_BAR_EVENT for USE_GTK. - - * frame.h (struct frame): Add external_tool_bar. Check for USE_GTK. - (FRAME_EXTERNAL_TOOL_BAR): New macro. - (FRAME_EXTERNAL_MENU_BAR): Check for USE_GTK. - - * fileio.c (Fread_file_name): Add check for USE_GTK. - - * dispnew.c (adjust_frame_glyphs_for_window_redisplay): - Add check for USE_GTK. - - * config.in: Added HAVE_GTK. - - * alloc.c (Fgarbage_collect): Call xg_mark_data for GTK. - -2003-01-18 Stefan Monnier - - * charset.h (Funibyte_char_to_multibyte): Export. - -2003-01-18 Jan Dj,Ad(Brv - - * xmenu.c (mouse_position_for_popup): New function. - (Fx_popup_menu): Call mouse_position_for_popup for X and - mouse_position_hook for others. - -2003-01-17 Kim F. Storm - - * editfns.c (Finsert): Mention `string-make-multibyte' and - `string-as-multibyte' in doc string. - -2003-01-17 Kenichi Handa - - * fontset.c (syms_of_fontset): Setup Vfont_encoding_alist here. - - * editfns.c (Fformat): Convert an unibyte char argument that is - formatted by "%c" to multibyte if the total result must be a - multibyte string. - -2003-01-16 Kim F. Storm - - * process.c (set-process-filter): Document unibyte/multibyte-ness - of string argument. - -2003-01-16 Kenichi Handa - - * charset.h (NEXT_CHAR_BOUNDARY, PREV_CHAR_BOUNDARY): New macros. - - * regex.c (GET_CHAR_BEFORE_2): Use PREV_CHAR_BOUNDARY. - (re_search_2): Likewise. - -2003-01-15 Kenichi Handa - - * xdisp.c (message_dolog): Fix bug of the case that *Message* - buffer is unibyte. - -2003-01-15 Francesco Potort,Al(B - - * fns.c (Fsubstring): Clarify doc string. - - * textprop.c (Ftext_properties_at, Fnext_char_property_change) - (Fprevious_char_property_change) - (Fnext_single_char_property_change) - (Fprevious_single_char_property_change, Fnext_property_change) - (Fnext_single_property_change, Fprevious_property_change) - (Fprevious_single_property_change, Fadd_text_properties) - (Fput_text_property, Fset_text_properties) - (Fremove_text_properties, Fremove_list_of_text_properties) - (Ftext_property_any, Ftext_property_not_all): Clarify doc strings. - -2003-01-14 Kim F. Storm - - * process.h (struct Lisp_Process): New member plist replaces old - member private_vars. All uses changed. - - * process.c: Reworked 2003-01-12 change -- call a plist a plist! - (QCplist): Rename from QCvars. Change all uses. - (Fprocess_plist): Replaces Fprocess_variable. Simplified. - (Fset_process_plist): Replaces Fset_process_variable. Simplify. - (syms_of_process): Intern, staticpro, defsubr these. - (Fmake_network_process): Describe :plist arg. Remove :vars arg. - -2003-01-14 Francesco Potort,Al(B - - * m/delta.h: Remove (obsolete). - -2003-01-13 Francesco Potort,Al(B - - * fileio.c (Fdelete_directory, Fdelete_file): Document the - behaviour in front of symlinks. - (Fdelete_file): Raise an error on directories. - -2003-01-13 Dave Love - - * fns.c (Freverse): Use QUIT. - -2003-01-13 Richard M. Stallman - - * minibuf.c (minibuffer_completion_contents): - Error if point is inside prompt. - - * keyboard.c (command_loop_1): Don't redisplay directly - if there's a post-command-hook. - - * fileio.c (syms_of_fileio) : Doc fix. - (Fdo_auto_save): Add gcpros around Ffile_name_directory. - -2003-01-12 Kim F. Storm - - * process.h (struct Lisp_Process): New member private_vars. - - * process.c (QCvars): New variable. - (syms_of_process): Intern and staticpro it. - (Fset_process_contact): Removed function. - (Fprocess_variable, Fset_process_variable): New functions. - (syms_of_process): Defsubr them. - (Fstart_process): Initialize private_vars plist to nil. - (Fmake_network_process): New arg :vars to setup the private - variables for new network process. - (server_accept_connection): Copy server's private variables to - client process. - - * alloc.c (pure_alloc): Fixed 2003-01-10 changed (caused spurious - crashes). Code rewritten and simplified. Now directly aligns the - pointer and recalculates pure_bytes_used, rather than aligning the - size and adjusting the pointer. - -2003-01-11 Kim F. Storm - - * process.c (Fset_process_contact): New function. - (syms_of_process): defsubr it. - (make-network-process): Update doc. - -2003-01-10 Andreas Schwab - - * alloc.c (pure_alloc): Correct alignment for Lisp_Floats. - Reported by Berthold Gunreben . - -2003-01-10 Dave Love - - * composite.c (syms_of_composite): Make composition_hash_table weak. - -2003-01-09 Kim F. Storm - - * process.c (Fmake_network_process): Convert new port number - to host byte order for `:service t' case. From Mario Lang. - -2003-01-08 Jan Dj,Ad(Brv - - * xfns.c (Fx_file_dialog): Call XtAppNextEvent and x_dispatch_event - instead of XtAppProcessEvent. - - * xterm.c (handle_one_xevent): New function. - (x_dispatch_event): New function. - (XTread_socket): Call handle_one_xevent. - - * xterm.h (FRAME_OUTER_TO_INNER_DIFF_X/Y): New. - - * xmenu.c (Fx_popup_menu): If popping up at mouse position, - call XQueryPointer to get coordinates. - (popup_get_selection): Do not set popup_activated_flag to zero, - let popup_deactivate_callback do that. Needed for Motif. - Call x_dispatch_event instead of XtDispatchEvent. - (xmenu_show): Calculate root coordinate from frame top/left position. - -2003-01-08 Kim F. Storm - - * process.c (server_accept_connection): Fix recording of new - connection's local address in :local property of contact info. - (Fmake_network_process): Record local network address for new - client processes in :local property of contact info. - (format-network-address): Add arg OMIT-PORT. Change callers. - -2003-01-07 Dave Love - - * Makefile.in (fns.o): Depend on coding.h. - -2003-01-06 Dave Love - - * fns.c: Include coding.h. Use POINTER_TYPE*, not void*. - (Vlocale_coding_system): Declare. - (Qcodeset, Qdays, Qmonths, Qpaper): New. - (Flanginfo): New. - (syms_of_fns): Initialize new stuff. - -2003-01-07 Markus Rost - - * minibuf.c (Fread_variable): Doc fix. - - * eval.c (Fuser_variable_p): Doc change. For custom variables, - use the same test as for custom-variable-p. - -2003-01-05 Richard M. Stallman - - * xdisp.c (try_scrolling): New arg LAST_LINE_MISFIT. - Count LAST_LINE_MISFIT in scroll margin for end of window. - Move label too_near_end before setting SCROLL_MARGIN_POS. - Set LAST_LINE_MISFIT before jumping there. - - * xdisp.c (try_scrolling): Calculate amount_to_scroll better in - scroll_conservatively case. If scrolling that much doesn't change - STARTP, move it down one line. - - * xdisp.c (redisplay_window): Pass last_line_misfit arg to - try_scrolling. Make it 1 after make_cursor_line_fully_visible fails. - - * xdisp.c (setup_echo_area_for_printing): Kill Emacs if no - selected frame. - - * keymap.c (apropos_predicate, apropos_accumulate): Make them static. - (syms_of_keymap): Staticpro them. - (Fapropos_internal): Initialize them and clear them out. - Don't GCPRO them. - - * buffer.c (syms_of_buffer) : Doc fixes. - - * lisp.h: New misc type Lisp_Save_Value. - (enum Lisp_Misc_Type): Add Lisp_Misc_Save_Value. - (XSAVE_VALUE): New macro. - (struct Lisp_Save_Value): New data type. - (union Lisp_Misc): Add u_save_value alternative. - (make_save_value): Declare. - - * alloc.c (make_save_value): New function. - - * xterm.c (x_catch_errors): Save dpy using make_save_value. - (x_catch_errors_unwind): Call XSync. - -2003-01-01 Richard M. Stallman - - * window.c (window_scroll_pixel_based): Partially undo last change. - - * keyboard.c (command_loop_1): Call adjust_point_for_property - in direct action cases for Qforward_char and Qbackward_char. - Set already_adjusted so it won't be done twice. - -2002-12-30 Richard Dawe - - * src/config.in (!HAVE_SIZE_T): Fix order of arguments in - type definition of size_t. - -2003-01-02 Steven Tamm - - * macterm.c (syms_of_macterm): Provide the feature "mac-carbon" to - distinguish Carbon GUI builds from X11 builds on darwin. - -2002-12-30 Steven Tamm - - * macterm.c (syms_of_macterm): Set mac-wheel-button-is-mouse-2 - to default to t. - -2002-12-29 Francesco Potort,Al(B - - * data.c (Fstring_to_number, Fminus): Better English in doc strings. - -2002-12-28 Steven Tamm - - * Makefile.in (macosx-bundle): Fix Mac OS X/Carbon port to - allow building in a different directory than source. Uses some - GNU Make extensions, but there is no other make on Mac OS X. - -2002-12-26 Francesco Potort,Al(B - - * data.c (Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local) - (Fsetq_default, Fmake_local_variable, Fkill_local_variable) - (Fmake_variable_frame_local, Faset, Fnumber_to_string, Fminus) - (Fstring_to_number): Mention the returned value in the doc strings. - -2002-12-23 Richard M. Stallman - - * buffer.c (syms_of_buffer) - : Doc fix. - - * xmenu.c (parse_single_submenu): Use individual keymap's prompt - string as pane name, if there is one. - (set_frame_menubar): Save menu_items_n_panes from each call to - parse_single_submenu and use it when calling digest_single_submenu. - - * window.c (window_scroll_pixel_based): Fix check for reaching BEGV. - Don't try to make last line fully visible if it is past end of window. - -2002-12-22 Steven Tamm - - * macmenu.c (MIN_POPUP_SUBMENU_ID): Add. - (mac_menu_show): Add support for hierarchical popup menus. - (add_menu_item): Remove indentation support. - (fill_submenu, fill_menu): Create hierarchical menus - instead of using indentation. - -2002-12-22 Richard M. Stallman - - * xdisp.c (try_cursor_movement): Don't call try_window here. - (redisplay_window): Never redisplay minibuffer when inactive. - - * window.c (select_window_1): Undo 9/21 change. - -2002-12-22 Steven Tamm - - * macterm.c (XTread_socket): Call KeyTranslate for control and - meta to deal correctly shifted non-alpha characters, like C-S-5 - being treated like C-%. Do not look for shift key to deal - with masking off control-key with mac-reverse-ctrl-meta. - -2002-12-21 Richard M. Stallman - - * xmenu.c (popup_get_selection): Now static. New arg DO_TIMERS. - If it is non-nil, run timers. Use an unwind-protect to requeue - the events that were read ahead. - (popup_get_selection_unwind): New subroutine. - (popup_get_selection_queue): File-scope variable now holds that queue. - (xmenu_show): Pass 0 for DO_TIMERS to popup_get_selection. - (xdialog_show): Pass 1 for DO_TIMERS to popup_get_selection. - Use an unwind-protect to pop down the dialog box. - (xdialog_show_unwind): New subroutine implements that. - - * xdisp.c (row_containing_pos): Change exit test using last_y. - (try_window_id): Abort if row_containing_pos returns null. - - * lread.c (load_error_handler): New function. - (Fload): Handle errors in Fsubstitute_in_file_name. - Don't expect Fsignal to return. - - * eval.c: Errors and throws work right with interrupt blocking. - (struct catchtag): New elt interrupt_input_blocked. - (unwind_to_catch): Restore interrupt_input_blocked from saved value. - (internal_catch, Fcondition_case, internal_condition_case) - (internal_condition_case_1, internal_condition_case_2): Save it. - (Fsignal): Don't do TOTALLY_UNBLOCK_INPUT. - - * editfns.c (Fformat): Add parens. - - * dired.c (file_name_completion): Fix that change. - Delete special quit-handling code; just use QUIT. - -2002-12-21 Tak Ota - - * dired.c (file_name_completion): Close directory on error - just as in directory_files_internal. - -2002-12-19 David Kastrup - - * window.c (Fset_window_configuration): Set old_point to correct - value when new_current_buffer == current_buffer. - -2002-12-17 Ben Key - - Revisited my earlier fix for the following entry in etc/PROBLEMS: - "Emacs built on Windows 9x/ME crashes at startup on Windows XP, - or Emacs builtpart of on XP crashes at startup on Windows 9x/ME." - - These changes were in part based upon suggestions made by Peter - 'Luna' Runestig [peter@runestig.com]. - - * w32.c (g_b_init_is_windows_9x, g_b_init_open_process_token) - (g_b_init_get_token_information, g_b_init_lookup_account_sid) - (g_b_init_get_sid_identifier_authority ): Add several static - global variables. - - * w32.c (globals_of_w32): New function. Used to initialize those - global variables that must always be initialized on startup even - when the global variable initialized is non zero. Its primary - purpose at this time is to set the global variables - g_b_init_is_windows_9x, g_b_init_open_process_token, - g_b_init_get_token_information, g_b_init_lookup_account_sid, and - g_b_init_get_sid_identifier_authority to 0 on startup. - Called from main. - - * w32.c (is_windows_9x): Perform initialization only if - g_b_init_is_windows_9x is equal to 0. On initialization set - g_b_init_is_windows_9x equal to 1. - - * w32.c (open_process_token): Perform initialization only if - g_b_init_open_process_token is equal to 0. On initialization set - g_b_init_open_process_token equal to 1. - - * w32.c (get_token_information): Perform initialization only if - g_b_init_get_token_information is equal to 0. On initialization - set g_b_init_get_token_information equal to 1. - - * w32.c (lookup_account_sid): Perform initialization only if - g_b_init_lookup_account_sid is equal to 0. On initialization - set g_b_init_lookup_account_sid equal to 1. - - * w32.c (get_sid_identifier_authority): Perform initialization - only if g_b_init_get_sid_identifier_authority is equal to 0. - On initialization set g_b_init_get_sid_identifier_authority equal to 1. - - * w32fns.c (globals_of_w32fns): New function. Used to initialize - those global variables that must always be initialized on startup - even when the global variable initialized is non zero. - Its primary purpose at this time is to initialize the global variable - track_mouse_event_fn. - - * w32fns.c (w32_wnd_proc): Remove initialization of - track_mouse_event_fn from the handler for the WM_SETFOCUS message. - - * w32fns.c (syms_of_w32fns): Call globals_of_w32fns. - - * w32menu.c (globals_of_w32menu): New function. Used to - initialize those global variables that must always be initialized - on startup even when the global variable initialized is non zero. - Its primary purpose at this time is to initialize the global - variables get_menu_item_info and set_menu_item_info. - - * w32menu.c (initialize_frame_menubar): Remove initialization of - get_menu_item_info and set_menu_item_info. - - * w32menu.c (syms_of_w32menu): Call globals_of_w32menu. - - * w32.h (globals_of_w32, globals_of_w32fns, globals_of_w32menu): - Declare them. - - * emacs.c (main): Call globals_of_w32 prior to calling - init_environment if WINDOWSNT is defined. Call globals_of_w32fns - and globals_of_w32menu if initialized is non zero and HAVE_NTGUI - is defined. - - * w32term.c (x_update_window_begin): Fix Windows API error - detected by BoundsChecker. Test to determine if - w32_system_caret_hwnd is NULL prior to attempting to use - SendMessage to send the WM_EMACS_HIDE_CARET message to it. - - * w32term.c (x_update_window_end): Fix Windows API error - detected by BoundsChecker. Test to determine if - w32_system_caret_hwnd is NULL prior to attempting to use - SendMessage to send the WM_EMACS_SHOW_CARET message to it. - -2002-12-17 Kenichi Handa - - * coding.c (coding_system_require_warning): New variable. - (syms_of_coding): DEFVAR it. - - * coding.h (coding_system_require_warning): Extern it. - - * fileio.c (choose_write_coding_system): Even if - Vcoding_system_for_write is non-nil, if - coding_system_require_warning is nonzero, call - Vselect_safe_coding_system_function. - -2002-12-17 Markus Rost - - * Makefile.in (lisp, shortlisp): Add cus-face and timer. - (lisp): Add font-core. - -2002-12-13 Stefan Monnier - - * textprop.c (text_read_only): New arg `propval'. - (get_char_property_and_overlay): Remove unused var `next_overlay'. - (verify_interval_modification): Use text_read_only's new arg. - -2002-12-13 Kenichi Handa - - * coding.c (Funencodable_char_position): Set pend correctly. - -2002-12-12 Jason Rumney - - * w32term.c (last_mousemove_x, last_mousemove_y): New variables. - (w32_read_socket) : Use them to detect non-movement. - Be more careful about when help_events are generated. - -2002-12-12 Steven Tamm - - * macterm.c (mac_check_for_quit_char): Correctly set the - modifiers of the event to 0. - * mac.c (sys_select): Duplicate rfds before calling select to - ensure that rfds survive the while loop. - -2002-12-11 Kim F. Storm - - * xdisp.c (try_window_id): Don't call set_cursor_from_row if - row_containing_pos returned NULL. - -2002-12-10 Steven Tamm - - * mac.c (sys_read): Fix sys_read to not call select if IO is - non-blocking. - (sys_select): Fix sys_select to not use a timeout larger than - the one given. - -2002-12-10 Juanma Barranquero - - * editfns.c (Fformat): Use alloca, not _alloca. - -2002-12-09 Richard M. Stallman - - * buffer.c (Fget_buffer_create): Call Qucs_set_table_for_input - as the last thing. - -2002-12-09 Dave Love - - * s/sol2-8.h: Removed. (Not necessary.) - -2002-12-09 Matthew Swift - - * editfns.c (Fformat): Handle precision in string conversion - specifiers like libc functions do (ie, print at most that many - characters). - -2002-12-08 Richard M. Stallman - - * xdisp.c (row_containing_pos): Check more carefully - whether charpos is really in the row before returning it. - -2002-12-07 Steven Tamm - - * sysdep.c (emacs_read) [HAVE_CARBON]: Have emacs_read use sys_read. - - * eval.c (Feval) [HAVE_CARBON]: Calls mac_check_for_quit_char at - each stack frame. This may change as it could be time consuming. - - * macterm.c (mac_check_for_quit_char, quit_char_comp) - (init_quit_char_handler, mac_determine_quit_char_modifiers) - (mac_initialize): Add code to check for pressing of quit_char - in the OS event queue. - - * mac.c (sys_select): Call mac_check_for_quit_char every second - while blocking on select. - - * mac.c (sys_read): Use sys_select to test for input first - before calling read, to allow C-g to break. - -2002-12-07 Richard M. Stallman - - * minibuf.c (Fcompleting_read): Doc fix. - - * lread.c (syms_of_lread) : Doc fix. - - * fileio.c (Fcopy_file): Set immediate_quit around emacs_open call. - - * eval.c (Fdefun, Fdefmacro): Record in load-history redefining an - autoload. - - * data.c (Fdefalias): Record in load-history redefining an autoload. - - * alloca.c: Undo ifdef change accidentally made on 12-04. - -2002-12-06 Francesco Potort,Al(B - - * xfns.c (png_load): Avoid double gamma correction for PNG images. - -2002-12-04 Richard M. Stallman - - * sysdep.c (fcntl.h): Test only HAVE_FCNTL_H. - - * fileio.c (fcntl.h): Test only HAVE_FCNTL_H. - - * alloca.c: Don't use #error. - -2002-12-03 Dave Love - - * buffer.c (Qucs_set_table_for_input): New. - (Fget_buffer_create): Use it. - (Qset_buffer_major_mode_hook): Deleted. - (Fset_buffer_major_mode): Revert previous change. - (init_buffer_once): Intern ucs-set-table-for-input. - (syms_of_buffer): Delete Qset_buffer_major_mode_hook. - Add &Qucs_set_table_for_input. - -2002-12-03 Andreas Schwab - - * callint.c (Fcall_interactively): Use next_event only if less - than key_count. - -2002-12-02 Andrew Choi - - * macmenu.c (add_menu_item, fill_menubar): Truncate menu item - names to 255 characters. - - * macterm.c (XTread_socket): If all frames have been collapsed, - expand the first one before handling drag-and-drop events. - - * s/darwin.h (GETPGRP_NO_ARG): Delete. Replaced by GETPGRP_VOID, - which is detected by autoconf. - -2002-12-01 Steven Tamm - - * unexmacosx.c (copy_twolevelhints, dump_it): Now corrects the - offset in two hints table to allow prebinding to be redone and - allow the executable to be stripped. - -2002-11-29 Dave Love - - * fns.c (Frequire): Don't call LOADHIST_ATTACH if feature was - already provided. - -2002-11-29 Richard M. Stallman - - * xdisp.c (start_display): Check more intelligently for - whether the line is continued. - (move_it_vertically_backward): Clear it->continuation_lines_width. - -2002-11-28 Dave Love - - * s/amdahl.h, s/unipl5-0.h, m/sgi3000.h, s/3700.h, s/alliant-2800.h: - * s/alliant.h, s/altos.h: Deleted. (Unused/empty.) - -2002-11-27 Steven Tamm - - * fns.c (Frequire): Change nesting allowance from 2 to 3 to cause - more descriptive error output from lread.c:Fload upon most require - cycles during boostrapping. - -2002-11-27 Jason Rumney - - * fileio.c (Finsert_file_contents): Give a more appropriate error - for files bigger than 2Gb when off_t is 32 bit. - - * dired.c (Ffile_attributes): Don't return negative file sizes for - files bigger than 2Gb when off_t is 32 bit. - -2002-11-27 Dave Love - - * s/irix6-0.h (GC_SETJMP_WORKS, GC_MARK_STACK): Define. - - * systty.h: Don't conditionally define GETPGRP_NO_ARG. - Test GETPGRP_VOID instead. - [BSD_TERMIOS]: Remove definitions (never used). - - * s/osf5-0.h (WAIT_USE_INT, SYS_SIGLIST_DECLARED, sys_siglist): - Don't define. - (GC_SETJMP_WORKS, GC_MARK_STACK): Define. - - * m/mips.h (WORDS_BIG_ENDIAN): Define conditionally. - -2002-11-25 Jason Rumney - - * w32.c (sys_write): Avoid non-blocking mode, which is not fully - supported. - -2002-11-25 Dave Love - - * unexalpha.c (update_dynamic_symbols): Cast arg of fatal_unexec. - - * Makefile.in (TEMACS_LDFLAGS): Update last change. - -2002-11-25 Andreas Schwab - - * m/ia64.h: Restore `#ifndef NOT_C_CODE' deleted by last change. - -2002-11-24 Steven Tamm - - * unexmacosx.c (unexec_realloc): Use malloc_default_zone to - determine the size of pointers alloced in unexed space instead - of using possibly invalid emacs_zone pointers. This fixes the - binary incompatibility problems caused by updates to libSystem.B. - -2002-11-24 Richard M. Stallman - - * search.c (Fstring_match): Doc fix. - - * callint.c (Fcall_interactively): If a command fails because - `*' detects a read-only buffer, but RECORD_FLAG is set, - record it anyway if the args don't actually do tty input. - -2002-11-22 Dave Love - - * sysdep.c (stuff_char) [PROTOTYPES]: Provide ISO C arglist. - - * keyboard.c (interrupt_signal): Provide forward declaration. - (kbd_buffer_store_event): Don't declare interrupt_signal. - - * xdisp.c (store_frame_title_char) [PROTOTYPES]: Provide ISO C arglist. - -2002-11-21 Richard M. Stallman - - * eval.c (interactive_p): Skip any number of bytecode - and special form frames, in any order. - -2002-11-20 Jason Rumney - - * w32fns.c (convert_mono_to_color_image): New function. - (xbm_load, xbm_load_image): Use it when foreground or background - is explicitly set. - -2002-11-19 Dave Love - - * s/usg5-4.h, sco4.h (bcopy, bzero, bcmp): Don't define. - -2002-11-18 Jason Rumney - - * w32fns.c (x_build_heuristic_mask): Filter palette info from color. - (XPutPixel): Swap blue and red. - (xpm_format, pbm_format, png_format, jpeg_format, tiff_format) - (gif_format, gs_format): Use IMAGE_ASCENT_VALUE. - (xpm_image_p, pbm_image_p, png_image_p, jpeg_image_p) - (tiff_image_p, gif_image_p, gs_image_p): Don't check ascent. - -2002-11-18 Dave Love - - * m/orion105.h (HAVE_ALLOCA): Don't define. - - * m/m68k.h, m/arm.h, mtekxd88.h, m/tower32v3.h: Don't define alloca. - - * m/intel386.h: Don't include alloca.h or define alloca. - - * m/ia64.h: Don't include alloca.h, stdlib.h. Don't declare - malloc, realloc, calloc. - - * m/hp800.h, m/sr2k.h, m/ns16000.h, m/wicat.h (bcopy, bzero) - (bcmp): Don't define. - - * m/delta.h (bcopy, bzero, bcmp, alloca): Don't define. - - * m/amdahl.h: Don't define LIB_STANDARD. - - * m/alpha.h: Move OSF1 stuff from here to s/osf1.h. - - * s/osf1.h: Move OSF1 stuff from m/alpha.h to here. - - * s/irix4-0.h, s/irix5-0.h, m/powerpcle.h, m/sparc.h: - Don't include alloca.h. - - * s/aix3-2.h (HAVE_FSYNC): Don't define. - - * regex.c (_GNU_SOURCE): Don't define. - - * process.c (_GNU_SOURCE): Don't define. - - * fileio.c (_GNU_SOURCE, HAVE_FSYNC): Don't define. - -2002-11-18 Markus Rost - - * s/sol2-8.h: Include sol2-6.h. - -2002-11-18 Miles Bader - - * dispextern.h (struct face): Add `overstrike' field. - * xterm.c (x_draw_glyph_string_foreground) - (x_draw_composite_glyph_string_foreground): Implement overstriking. - * xfaces.c (load_face_font): Set `face->overstrike' based on - result from choose_face_font. - (best_matching_font, choose_face_font): Add `needs_overstrike' - argument, and use it to return whether overstriking is desirable - for this face/font combo. - (set_font_frame_param: Pass new argument to choose_face_font. - -2002-11-17 Ben Key - - This change is my fix for the following entry in etc/PROBLEMS: - "Emacs built on Windows 9x/ME crashes at startup on Windows XP, - or Emacs builtpart of on XP crashes at startup on Windows 9x/ME." - - * w32.c: Added wrapper functions around the win32 API functions - OpenProcessToken, GetTokenInformation, LookupAccountSid, and - GetSidIdentifierAuthority. These wrapper functions serve two - purposes: - 1. They ensure that the wrapped function can never be called - when Emacs is running on an operating system on which they are - not supported (Microsoft Windows 95 / 98 / ME). - 2. They call the wrapped functions via function pointers rather - than calling them directly. This avoids taking advantage of the - undocumented fact that although these functions are not supported - in the 9x branch of Microsoft Windows, the functions do exist in - the version of advapi32.dll that is found in the 9x branch of - Microsoft Windows. - - * w32.c (init_user_info): Replace the calls to the win32 API - functions OpenProcessToken, GetTokenInformation, LookupAccountSid, - and GetSidIdentifierAuthority with calls to the newly added - wrapper functions. - - * w32.h: Added extern declarations for the following functions: - syms_of_w32term, syms_of_w32fns, syms_of_w32select, - syms_of_w32menu, and void syms_of_fontset. - - * w32fns.c (w32_wnd_proc): Add code to reinitialize the - function pointer track_mouse_event_fn in the handler for the - WM_SETFOCUS message. - - * w32menu.c (initialize_frame_menubar): Add code to - reinitialize the function pointers set_menu_item_info and - get_menu_item_info. - -2002-11-17 Ben Key - - * sound.c: Added a partial implementation of play-sound-internal - for Microsoft Windows. Added various #ifdef / #else / #endif - code blocks to separate the code that will compile under - Microsoft Windows from the code that is specific to GNU/Linux. - Moved several blocks of code around to make this separation of code - into Windows compatible and GNU/Linux compatible code blocks easier. - - * makefile.w32-in: Include sound.c and link with WinMM.lib. - - * s/ms-w32.h: Defined the symbol HAVE_SOUND so that the newly - added support for play-sound-internal under Windows would be - included in the build of Emacs. - -2002-11-16 Jason Rumney - - * w32fns.c (w32_load_system_font): Don't disable Cleartype. - - * w32term.c (w32_get_glyph_string_clip_rect): Clip cursor tightly. - -2002-11-15 Stefan Monnier - - * keyboard.c (command_loop_1): Fix int/Lisp_Object mixup. - (adjust_point_for_property): Move out of display and invisible even if - we were already inside before (in case a property was added while - we weren't looking). Be more careful when handling invisible props. - Skip invisible text as if it really wasn't there at all. - -2002-11-15 Jason Rumney - - * w32term.c (x_draw_image_foreground) - (w32_draw_image_foreground_1): Use standard copy and invert - operations to draw images. - - * w32fns.c (x_create_x_image_and_pixmap): Fill in palette for - depth of 1. - (xbm_read_bitmap_data): Invert bits as xbm is read in. - (XPutPixel): Don't invert bits here. - -2002-11-15 Jason Rumney - - * w32term.c (x_draw_image_foreground, x_draw_image_glyph_string) - (w32_draw_image_foreground_1): Handle image masks. - (x_draw_image_glyph_string): Don't BitBlt transparently. - - * w32fns.c (w32_defined_color): Adjust RGB values for Emacs. - (x_from_xcolors): Adjust RGB values for W32. - (image_background, image_background_transparent) - (postprocess_image, x_to_xcolors, x_disable_image) - (x_build_heuristic_mask): Adapt for W32 and enable. - (x_create_x_image_and_pixmap): Mark images with palettes as such. - (xbm_load): Remove unused variable. - -2002-11-14 Richard M. Stallman - - * buffer.c (syms_of_buffer): Doc fix. - -2002-11-14 Dave Love - - * alloc.c (SETJMP_WILL_NOT_WORK): Add note. - - * xterm.c (x_draw_relief_rect, x_draw_box_rect, x_update_cursor): - * xmenu.c (unuse_menu_items, digest_single_submenu): - * xfns.c (x_put_x_image): - * xdisp.c (message2_nolog, set_message): - * undo.c (record_point): - * terminfo.c (tparam): - * syntax.c (scan_sexps_forward): - * scroll.c (calculate_scrolling, calculate_direct_scrolling): - * composite.c (update_compositions): - * cm.c (calccost, cmgoto): - * charset.c (c_string_width): Declare all args (per C99). - - * frame.h (get_specified_cursor_type, get_window_cursor_type): Declare. - - * lisp.h (get_specified_cursor_type, get_window_cursor_type): - Don't declare. - - * emacs.c (main) [!VMS]: Avoid third arg. - - * fns.c (Fcopy_sequence): Doc fix. - (Fmap_char_table): Cast `call2'. - -2002-11-14 Francesco Potort,Al(B - - * s/sol2-8.h: New file. - -2002-11-14 Kim F. Storm - - * buffer.c (syms_of_buffer) : Document symbol - dependency on `risky-local-variable' and the :propertize form. - -2002-11-12 Stefan Monnier - - * fns.c (Fmap_char_table): Don't use map_char_table's function arg. - - * syntax.c (scan_sexps_forward): Undo last patch. - Use a more obvious fix: check eob before updating the syntax table. - -2002-11-09 Stefan Monnier - - * syntax.c (scan_sexps_forward): Update syntax table before reading - a char rather than after so we don't update the table past eob. - -2002-11-09 Dave Love - - * buffer.c (Fset_buffer_major_mode): Fix last change. - - * regex.c (regexec): Fix pmatch declaration. - - * cmds.c (Fself_insert_command): Apply Vtranslation_table_for_input. - - * keyboard.c (command_loop_1): Apply Vtranslation_table_for_input - to self-inserting characters. - (syms_of_keyboard) : Doc fix. - - * coding.c (Vtranslation_table_for_input): New. - (syms_of_coding): DEFVAR it. - -2002-11-08 Juanma Barranquero - - * w32term.c (w32_draw_fringe_bitmap): Remove unused local variable - window. - -2002-11-08 Pavel Jan,Am(Bk - - * process.c (Fformat_network_address): Remove unused locals p, - cp, and i. - -2002-11-06 Dave Love - - * buffer.c (Qset_buffer_major_mode_hook): New. - (Fset_buffer_major_mode): Use it. - -2002-11-06 Richard M. Stallman - - * xterm.c (x_term_init): Use turn_on_atimers, not start_polling - and stop_polling. - - * process.c (wait_reading_process_input): - Test POLLING_PROBLEM_IN_SELECT, not hpux. - Avoid initialization for auto Lisp_Object var. - - * s/hpux11.h (POLLING_PROBLEM_IN_SELECT): Add #undef. - - * s/hpux10.h (POLLING_PROBLEM_IN_SELECT): Defined. - -2002-11-05 Richard M. Stallman - - * s/sol2-5.h (BROKEN_SIGIO): Turn off the #undef. - - * callint.c (Fcall_interactively): New local filter_specs. - (Fcall_interactively): Check for progn as well as let. - Add a gcpro. - (Qprogn): New variable. - (syms_of_callint): Staticpro and init Qprogn. - -2002-11-04 John Paul Wallington - - * lread.c (Feval_buffer): Doc fix. - -2002-11-04 Dave Love - - * keyboard.c (read_char): Always translate iff - Vkeyboard_translate_table is a char table and c is valid. - - * xterm.c (XTread_socket): Check Lisp types for Vx_keysym_table - and fix C types. - -2002-11-03 Stefan Monnier - - * xdisp.c (single_display_prop_intangible_p): Strings are intangible. - - * editfns.c (get_pos_property): Don't hardcode Qfield. - - * keyboard.c (adjust_point_for_property): Handle `display' prop on - overlays. Also handle `invisible' prop. - -2002-11-02 Stefan Monnier - - * coding.c (decode_coding_emacs_mule, decode_coding_iso2022) - (decode_coding_sjis_big5, decode_eol): Allow lone \r in DOS EOL. - -2002-11-01 Andreas Schwab - - * editfns.c (Fmessage): Revert last change to properly handle %%. - -2002-11-01 Stefan Monnier - - * xmenu.c (unuse_menu_items): New fun. - (menu_items_inuse): New var. - (syms_of_xmenu): Initialize it. - (init_menu_items): Use it to detect re-entrance. - (Fx_popup_menu, Fx_popup_dialog, set_frame_menubar): Reset when done. - (Fx_popup_menu): Remove spurious XSETFRAME. - - * editfns.c (find_field): Make an exception for nil fields. - -2002-11-01 Dave Love - - * m/gec63.h: Deleted. - -2002-10-31 Dave Love - - * xterm.c (XTread_socket): Fix last change. - (xaw_scroll_callback): Cast call_data to long to avoid warning. - -2002-10-31 Stefan Monnier - - * process.c (Fformat_network_address): Fix int/Lisp_Object mixup. - -2002-10-30 Stefan Monnier - - * editfns.c (overlays_around, get_pos_property): New funs. - (find_field): Use them. - Also be careful not to modify POS before its last use. - (Fmessage): Don't Fformat if there's nothing to format. - -2002-10-30 Dave Love - - * process.c [HAVE_SYS_WAIT]: Include sys/wait.h. - [HAVE_PTY_H]; Include pty.h. - - * lread.c (Fload) : Close fd. - - * xterm.c (Qeql): Declare. - (Vx_keysym_table): New. - (syms_of_xterm): Initialize it. - (XTread_socket): Use it. Deal with ASCII keysyms. - (XSetIMValues) [HAVE_X11R6]: Prototype. - - * keyboard.c (lispy_accent_codes, lispy_accent_keys): Extended. - (lispy_kana_keys): Comment out. - (make_lispy_event) [XK_kana_A]: Comment out. - (modify_event_symbol) : - Fix sprintf call. - - * s/osf5-0.h (C_SWITCH_SYSTEM): Revert last change (fixed by - regexp.h change). - (TERMINFO, LIBS_TERMCAP): Define. - - * s/usg5-4.h (bcopy, bzero): Define conditional on HAVE_BCOPY. - (bcmp): Define conditional on HAVE_BCMP. - (NO_SIOCTL_H): Don't define. - (TIOCSIGSEND): Don't make conditional on IRIX6. - - * s/sol2-5.h: Don't include strings.h. - (bcopy, bzero, bcmp) [HAVE_BCOPY]: Don't undef. - - * s/irix6-0.h (IRIX6): Don't define. - (bcopy, bcmp, bzero): Don't undef. - - * s/irix6-5.h: Don't include strings.h. - (IRIX6): Don't define. - (bcopy, bcmp, bzero): Don't undef. - - * syntax.c (Fforward_comment): Doc fix. - -2002-10-29 Kim F. Storm - - * process.c (Fsignal_process): Allow PROCESS to be specified by - name in addition to pid (as integer or string). - -2002-10-28 Harald Maier (tiny change) - - * w32heap.c: Don't redefine _heap_init and _heap_term on MSVC 7 build - environments. - -2002-10-27 Kim F. Storm - - * xterm.c (note_mouse_highlight): Don't use mouse-face if hidden. - - * w32term.c (note_mouse_highlight): Don't use mouse-face if hidden. - - * msdos.c (IT_note_mouse_highlight): Don't use mouse-face if hidden. - - * macterm.c (note_mouse_highlight): Don't use mouse-face if hidden. - -2002-10-26 Richard M. Stallman - - * editfns.c (Fformat): Detect invalid format letters for floats. - -2002-10-25 Kenichi Handa - - * xfns.c (x_set_name): Encode by Qcompound_text unconditionally. - (x_set_title): Likewise. - -2002-10-25 Juanma Barranquero - - * macgui.h: - * w32gui.h: Remove definition of XColor. - - * dispextern.h [!HAVE_X_WINDOWS]: Define XColor. - -2002-10-24 Kim F. Storm - - * xdisp.c (get_window_cursor_type): New arg ACTIVE_CURSOR. - Callers changed (supply dummy arg). - - * lisp.h (get_window_cursor_type): Update prototype. - - * w32term.c (x_display_and_set_cursor): Get active_cursor from - get_window_cursor_type to track system caret. - -2002-10-24 Kim F. Storm - - * process.c (Fformat_network_address): New function. - (syms_of_process): Defsubr it. - (list_processes_1): Use it to format :local/:remote address if - service/host is not set; before Emacs would crash in that case. - (Fmake_network_process): Don't use Ffind_operation_coding_system - to setup coding system if host or service is not set. - -2002-10-23 Juanma Barranquero - - Patch suggested by Jay Finger . - - * w32term.c (w32_term_init): Pass XColor to w32_define_color, not - COLORREF. - - * macgui.h: - * w32gui.h: Add definition of XColor. - - * macfns.c: - * w32fns.c: - * xfaces.c: Remove definition of XColor. - -2002-10-22 Stefan Monnier - - * xfns.c (x_set_name, x_set_title): `icon.value' has unsigned char. - - * window.c (window_loop): For GET_LRU_WINDOW and GET_LARGEST_WINDOW>, - Only ignore truly dedicated windows. For UNSHOW_BUFFER, delete the - window if it is dedicated. - (Fshrink_window): Add preserve_before as was done for enlarge_window. - (Vspecial_display_function): Update docstring. - - * buffer.c (assoc_ignore_text_properties, Fother_buffer, Fkill_buffer) - (call_overlay_mod_hooks): Use CONSP and XCAR/XCDR. - (Fget_buffer_create, advance_to_char_boundary): Use BEG and BEG_BYTE; - -2002-10-21 Stefan Monnier - - * casefiddle.c (casify_region): Don't treat a prefix char as part - of a word when at the beginning. - -2002-10-17 Juanma Barranquero - - * lread.c (syms_of_lread): Fix typos. - -2002-10-17 Dave Love - - * Makefile.in (TEMACS_LDFLAGS): Add trailing comment. - -2002-10-16 Richard M. Stallman - - * fileio.c (Fcopy_file): Fix backward test of KEEP_TIME. - -2002-10-14 Juanma Barranquero - - * w16select.c (syms_of_win16select): Fix docstring for - `selection-coding-system'. - - * w32select.c (syms_of_w32select): Likewise. - -2002-10-14 Stefan Monnier - - * syntax.c (scan_lists): Don't get fooled by a symbol ending with - a backslash-quoted char. - (scan_lists, scan_sexps_forward): Pacify the compiler. - -2002-10-13 Richard M. Stallman - - * window.c (window_scroll): Set immediate_quit. - - * print.c (print): When backquote form is the car of a list, - output in old style. Use old_backquote_output to output all - comma forms inside it in old style too. - - * buffer.h (struct buffer): Move `undo_list' down below `name'. - -2002-10-11 Markus Rost - - * emacs.c (syms_of_emacs) : Doc fix (not run in - batch mode). - - * lread.c (Fload): Doc fix (load-suffixes). - -2002-10-10 Steven Tamm - - * macterm.c (syms_of_macterm, mac_get_mouse_btn): - Reverse functionality of mac-wheel-button-is-mouse-2 to be correct. - Also switch the default to Qnil from Qt. - -2002-10-08 Kenichi Handa - - * coding.c (code_convert_region): When we need more GAP for - conversion, pay attention to the case that coding->produced is not - greater than coding->consumed. - -2002-10-07 Richard M. Stallman - - * unexelf.c (unexec): Redo 9/16 change, but only if IRIX6_5. - -2002-10-06 Andrew Choi - - * macmenu.c (mac_menu_show): Add j to count menu items; match - menu_item_selection to it to find selected item. - -2002-10-06 Jan Dj,Ad(Brv - - * xterm.c (XTread_socket): Fix from 2002-10-03 didn't cover all - cases. The correct fix is to pass ReparentNotify to Xt. - The shell widget interprets ConfigureNotify differently depending - on if it has been reparented or not. - -2002-10-05 Markus Rost - - * editfns.c (Fformat_time_string): Doc fix. - -2002-10-05 John Paul Wallington - - * fns.c (Flength): Doc fix. - -2002-10-04 Stefan Monnier - - * keyboard.c (keyremap): New struct. - (read_key_sequence): Use it: globally replace keytran_foo with - keytran.foo and fkey_foo with fkey.foo. Rename temp vars - keytran_next and fkey_next to just `next'. - -2002-10-04 Steven Tamm - - * macterm.c (keycode_to_xkeysym_table): Change return to be - treated like an X keysym. - -2002-10-03 Jan Dj,Ad(Brv - - * xterm.c (XTread_socket): For ConfigureNotify, with x and y == 0, - and USE_MOTIF, call XTranslateCoordinates to get the real x and y. - This is to also handle x/y changes that occur because of a resize. - -2002-10-02 John Paul Wallington - - * frame.c (Vdelete_frame_functions): New variable. - (syms_of_frame): Initialize and defvar it. - (Fdelete_frame): Use it instead of delete-frame-hook. Don't run - it when frame's `tooltip' parameter is non-nil. - - * xfns.c (x_create_tip_frame): Set `tooltip' frame parameter to t. - - * w32fns.c (x_create_tip_frame): Likewise. - - * macfns.c (x_create_tip_frame): Likewise. - -2002-09-30 Kenichi Handa - - * xterm.c (x_encode_char): For DIM=1 charset, set ccl->reg[2] to - -1 before calling ccl_driver. - - * coding.c (decode_coding_emacs_mule): Check coding->cmp_data. - Only when it is non-nil, handle composition sequence. - (setup_coding_system) <0>: Don't force composition handling. - - * Makefile.in (lisp, shortlisp): Add utf-16.elc. - -2002-09-29 Richard M. Stallman - - * search.c (Freplace_match): Adjust match data for the substitution - just made in the buffer. - - * xdisp.c (STOP_POLLING, RESUME_POLLING): New macros. - (redisplay_internal): Use them. Do RESUME_POLLING at end of function. - -2002-09-27 Richard M. Stallman - - * keyboard.c (STOP_POLLING, RESUME_POLLING): New macros. - (read_char): Use them. Do all exits thru the end of the function. - -2002-09-27 Kenichi Handa - - * xfaces.c (try_font_list): Pay attention to the case that FAMILY - is nil. - -2002-09-26 Richard M. Stallman - - * regex.h (__restrict_arr): Don't define if already defined. - - * coding.c (run_pre_post_conversion_on_str): - Save and restore Vdeactivate_mark. - -2002-09-26 John Paul Wallington - - * minibuf.c (Fminibufferp): Add an optional `buffer' argument. - -2002-09-26 Kenichi Handa - - * xfaces.c (try_font_list): New arg PREFER_FACE_FAMILY. If it is - nonzero, try face's family at first. Otherwise try FAMILY at first. - (choose_face_font): If C is a single byte char or latin-1, call - try_font_list with PREFER_FACE_FAMILY 1. - -2002-09-21 Richard M. Stallman - - * window.c (select_window_1): Don't select frame. - Set frame's selected window only when frame itself is selected. - (Fselect_window): Doc fix. - -2002-09-18 Kim F. Storm - - * process.c (make-network-process): Doc fix (there is no - network-server-log-function hook). - -2002-09-18 Richard M. Stallman - - * print.c (print): Clear out the unused parts of Vprint_number_table. - (syms_of_print): Doc fix for `print-number-table'. - - * unexelf.c (unexec): Undo previous change. - -2002-09-17 Andreas Schwab - - * m/alpha.h [LINUX]: Don't define DATA_START. - -2002-09-16 Dave Love - - * unexelf.c (unexec): Deal with .got, reinstating change from - 25-08-1999. - -2002-09-13 Richard M. Stallman - - * s/sol2-6.h (UNEXEC): Comment out definition. - - * unexsol.c (unexec): Don't downcase first letter of error msg. - - * xfaces.c (Fcolor_supported_p): Just one arg is required. - -2002-09-12 Markus Rost - - * unexsol.c: Include buffer.h, charset.h, coding.h. - -2002-09-11 Richard M. Stallman - - * unexsol.c: Don't use report_file_error; do it by hand - using dlerror. - - * process.c (wait_reading_process_input, both versions): - Before calling turn_on_atimers, call stop_polling. - - * emacs.c (syms_of_emacs) : Doc fix. - - * xdisp.c (try_scrolling): If after make_cursor_line_fully_visible - we go to too_near_end, call clear_glyph_matrix. - (redisplay_window): After make_cursor_line_fully_visible, - call clear_glyph_matrix and bypass `goto done'. - - * xfns.c (x_report_frame_params): If FRAME_SCROLL_BAR_PIXEL_WIDTH is 0 - and we have non-toolkit scroll bars, return nil for scroll-bar-width. - -2002-09-10 Richard M. Stallman - - * fileio.c (Fdo_auto_save): Catch error making directory. - Only call push_message if we need to. - At the same time, make an unwind-protect to pop it. - Rename local message_p to old_message_p. - (do_auto_save_make_dir, do_auto_save_eh): New functions. - (do_auto_save_unwind): Don't call pop_message. - - * lisp.h (pop_message_unwind): Renamed from push_message_unwind. - - * keyboard.c (Fexecute_extended_command): Use pop_message_unwind. - - * alloc.c (Fgarbage_collect): Use pop_message_unwind. - - * xdisp.c (pop_message_unwind): Renamed from push_message_unwind. - -2002-09-10 Stefan Monnier - - * regex.c (DISCARD_FAILURE_REG_OR_COUNT): Delete. - (CHECK_INFINITE_LOOP): Don't pop anything: just set `cycle' to 1. - (re_match_2_internal): Be more careful with infinite loops. - -2002-09-10 Kim F. Storm - - * macros.c (end_kbd_macro): New function. - (Fend_kbd_macro): Use it. - - * macros.h (end_kbd_macro): Declare extern. - - * keyboard.c (Fdiscard_input): If defining keyboard macro, - end and save it instead of discarding it. - -2002-09-09 Markus Rost - - * s/sol2-6.h: Fix typo. Add comment. - -2002-09-09 Richard M. Stallman - - * regex.c (regnum_t): Use signed int, not unsigned int. - - * s/sol2-6.h: New file. - - * s/sol2-5.h (UNEXEC): Definition deleted. - -2002-09-08 Kim F. Storm - - * macros.c (executing_macro_index): Change type to EMACS_INT. - (syms_of_macros): DEFVAR_INT it (needed by kmacro). - - * macros.h (executing_macro_index): Change type to EMACS_INT. - -2002-09-06 Richard M. Stallman - - * casetab.c (set_case_table): Make canon table point to eqv table. - -2002-09-06 Juanma Barranquero - - * coding.c (syms_of_coding): Fix spacing. - - * composite.c (Fcompose_region_internal) - (Fcompose_string_internal): Likewise. - - * data.c (Flsh): Likewise. - - * fontset.c (Fset_fontset_font): Likewise. - - * macfns.c (Fx_server_max_request_size): Likewise. - - * w16select.c (syms_of_win16select): Likewise. - - * w32select.c (syms_of_w32select): Likewise. - - * xselect.c (syms_of_xselect): Likewise. - -2002-09-05 Richard M. Stallman - - * regex.c (set_image_of_range_1): In no-TRANSLATE case, - call EXTEND_RANGE_TABLE and return a proper value. - (set_image_of_range): Don't call set_image_of_range_1 - if no TRANSLATE or if range includes all of Latin-1. - Only call it for the Latin-1 part of the range. - For other cases, make two separate ranges, - one for the original specified characters and one for - their case-conversions. - -2002-09-04 Richard M. Stallman - - * s/sol2-5.h (UNEXEC): Use unexsol.o. - - * window.c (displayed_window_lines): Correct for one-off bug - in HEIGHT on non-window displays. - - * regex.c (set_image_of_range_1): New function. - (set_image_of_range): Use set_image_of_range_1 for Latin-1. - Return a value to indicate running out of memory. - (SET_RANGE_TABLE_WORK_AREA): Check value from set_image_of_range. - (extend_range_table_work_area): New subroutine. - (EXTEND_RANGE_TABLE): Replaces EXTEND_RANGE_TABLE_WORK_AREA. - Different calling conventions, and used from set_image_of_range{,_1}. - (IMMEDIATE_QUIT_CHECK): Definitions moved. - -2002-09-04 Juanma Barranquero - - * makefile.w32-in: All dependencies updated. - -2002-09-01 Richard M. Stallman - - * unexsol.c: New file. - - * xfns.c (Qbox): Declare external, don't define. - - * xdisp.c (redisplay_window) : - If point is on semi-visible last line, reposition - it at previous line. - - * alloc.c (display_malloc_warning): Use display-warning. - (malloc_warning_1): Function deleted. - - * alloc.c [ALLOC_DEBUG]: #undef INLINE. - - * lread.c (read1): Handle #! by skipping the line. - -2002-08-31 Richard M. Stallman - - * Makefile.in (TEMACS_LDFLAGS): Renamed from ALL_LDFLAGS. - Don't include LDFLAGS. - (temacs): Pass LDFLAGS separately, and not via YMF_PASS_LDFLAGS. - -2002-08-31 Eli Zaretskii - - * xdisp.c (get_window_cursor_type): Don't use x_highlight_frame - member of x_display_info unless we compile for some window system. - -2002-08-31 Kim F. Storm - - * xdisp.c (Valternate_cursor_type, Qalternate_cursor_type): Removed. - (get_window_cursor_type): Don't use them. - (syms_of_xdisp): Remove intern, staticpro, and defvar for them. - -2002-08-30 Kenichi Handa - - * xdisp.c (get_next_display_element): Fix previous change. - -2002-08-30 Andrew Choi - - * macterm.c (expose_overlaps): New function (merge code from xterm.c). - (expose_window): Use it to fix the display of overlapping - rows (merge code from xterm.c). - - * macfns.c (Qbox): Add extern declaration. - -2002-08-30 Juanma Barranquero - - * w32fns.c (Qbox): Make extern. - (syms_of_w32fns): Remove initialization of Qbox. - -2002-08-30 Rune Kleveland (tiny change) - - * xfns.c (Fx_open_connection): Fix error message. - -2002-08-30 Kim F. Storm - - The following changes consolidates the handling of the cursor - type in xdisp.c, moving duplicate code and functionality from - xfns.c, xterm.c, w32fns.c, w32term.c, macfns.c, and macterm.c. - - * frame.h (enum text_cursor_kinds): Consolidated here. - Added DEFAULT_CURSOR value. - (struct frame) - : New fields. - Consolidated from output_x, output_w32 and output_mac structs. - (FRAME_DESIRED_CURSOR, FRAME_CURSOR_WIDTH, FRAME_BLINK_OFF_CURSOR) - (FRAME_BLINK_OFF_CURSOR_WIDTH): Macros consolidated here. - - * xdisp.c (Qbar, Qhbar, Qbox, Qhollow, Vblink_cursor_alist): - Variables consolidated here. - (Valternate_cursor_type, Qalternate_cursor_type): New variables. - (Vcursor_in_non_selected_windows): Renamed from - cursor_in_non_selected_windows and changed to Lisp_Object. - (syms_of_xdisp): Define and staticpro new and moved variables. - (get_specified_cursor_type): Renamed from x_specified_cursor_type; - consolidated here. Recognize Qhollow setting. - (set_frame_cursor_types): New function to set frame cursor types - based on the frame parameters. - (get_window_cursor_type): New function to calculate new cursor - type and width for the specified window. Based on duplicated - code consolidated here. - Enhancements: cursor-in-non-selected-windows may be a cursor type, - check buffer-local alternate-cursor-type and blink-cursor-alist - before using built-in blink off methods. - - * dispextern.h (cursor_in_non_selected_windows): Extern removed. - - * lisp.h (Qcursor_in_non_selected_windows): Extern removed. - (get_specified_cursor_type, get_window_cursor_type) - (set_frame_cursor_types): Added prototypes. - - * macfns.c (x_specified_cursor_type): Removed. - (x_set_cursor_type): Use set_frame_cursor_types. - (Qbar, Qbox): Removed. - (syms_of_macfns): Don't intern or staticpro them. - - * macterm.c (x_specified_cursor_type): Remove prototype. - (x_draw_bar_cursor): Use FRAME_CURSOR_WIDTH. - (x_display_and_set_cursor): Use get_window_cursor_type. - Remove unused local variables cursor_non_selected, active_cursor. - Redraw cursor if hbar cursor width changes. - (make_mac_frame): Set FRAME_DESIRED_CURSOR. - - * macterm.h (enum text_cursor_kinds): Removed. - (struct output_mac) - : Members removed. - (FRAME_DESIRED_CURSOR): Macro removed. - - * w32fns.c (Vblink_cursor_alist): Removed. - (Qbar, Qhbar, Qbox, Qhollow): Removed. - (syms_of_w32fns): Don't intern, staticpro, or define them. - (x_specified_cursor_type): Removed. - (x_set_cursor_type): Use set_frame_cursor_types. - - * w32term.c (x_specified_cursor_type): Remove prototype. - (x_draw_bar_cursor): Use FRAME_CURSOR_WIDTH. - (x_display_and_set_cursor): Use get_window_cursor_type. - Remove unused local variables cursor_off_state. - Redraw cursor if hbar cursor width changes. - Changed all occurrences of w32_highlight_frame to x_highlight_frame. - - * w32term.h (enum text_cursor_kinds): Removed. - (struct output_w32) - : Members removed. - (FRAME_DESIRED_CURSOR, FRAME_CURSOR_WIDTH, FRAME_BLINK_OFF_CURSOR) - (FRAME_BLINK_OFF_CURSOR_WIDTH): Macros removed. - (struct w32_display_info) : Renamed member from - w32_highlight_frame. - - * xfns.c (Vblink_cursor_alist): Removed. - (Qbar, Qhbar, Qbox, Qhollow): Removed. - (syms_of_xfns): Don't intern, staticpro, or define them. - (x_specified_cursor_type): Removed. - (x_set_cursor_type): Use set_frame_cursor_types. - - * xterm.c (x_specified_cursor_type): Remove prototype. - (x_draw_bar_cursor): Use FRAME_CURSOR_WIDTH. - (x_display_and_set_cursor): Use get_window_cursor_type. - Remove unused local variables cursor_off_state. - Redraw cursor if hbar cursor width changes. - - * xterm.h (enum text_cursor_kinds): Removed. - (struct output_x) - : Members removed. - (FRAME_DESIRED_CURSOR, FRAME_CURSOR_WIDTH, FRAME_BLINK_OFF_CURSOR) - (FRAME_BLINK_OFF_CURSOR_WIDTH): Macros removed. - (x_specified_cursor_type): Remove prototype. - -2002-08-28 Richard M. Stallman - - * w32fns.c (x_set_cursor_type): Set FRAME_BLINK_OFF_CURSOR and - FRAME_BLINK_OFF_CURSOR_WIDTH using defaults and Vblink_cursor_alist. - (Vblink_cursor_alist): New variable. - (syms_of_w32fns): Initialize and defvar it. - (x_specified_cursor_type): Recognize Qbox for filled box. - Exceptions are hollow boxes. - (Qbox, Qhollow): New variables. - (syms_of_w32fns): Initialize and staticpro them. - - * w32term.h (FRAME_BLINK_OFF_CURSOR, FRAME_BLINK_OFF_CURSOR_WIDTH): - New macros. - (struct w32_output): New fields blink_off_cursor, - blink_off_cursor_width. - (FRAME_CURSOR_WIDTH): New macro. - - * w32term.c (x_display_and_set_cursor): Use FRAME_BLINK_OFF_CURSOR - and FRAME_BLINK_OFF_CURSOR_WIDTH for blinking cursor off. - - * w32term.c (x_display_and_set_cursor): Check FRAME_CURSOR_WIDTH - for bar cursor. - - * w32term.c (expose_overlaps): New function. - (expose_window): Use it to fix the display of overlapping rows. - -2002-08-28 Simon Josefsson - - * xfns.c (Fx_open_connection): Improve help when X connection - fails, xhost is insecure and xauth is better. - -2002-08-28 Juanma Barranquero - - * makefile.w32-in: Add missing dependencies on w32term.h and - composite.h. - - * emacs.c (USAGE1): Add missing newline. - -2002-08-27 Andrew Choi - - * s/darwin.h [HAVE_LIBNCURSES]: Define HAVE_TERMINFO. - -2002-08-27 Richard M. Stallman - - * xfns.c (x_set_cursor_type): Set FRAME_BLINK_OFF_CURSOR and - FRAME_BLINK_OFF_CURSOR_WIDTH using defaults and Vblink_cursor_alist. - (Vblink_cursor_alist): New variable. - (syms_of_xfns): Initialize and defvar it. - (x_specified_cursor_type): Recognize Qbox for filled box. - Exceptions are hollow boxes. - (Qbox, Qhollow): New variables. - (syms_of_xfns): Initialize and staticpro them. - - * xterm.h (FRAME_BLINK_OFF_CURSOR, FRAME_BLINK_OFF_CURSOR_WIDTH): - New macros. - (struct x_output): New fields blink_off_cursor, blink_off_cursor_width. - - * xterm.c (x_display_and_set_cursor): Use FRAME_BLINK_OFF_CURSOR - and FRAME_BLINK_OFF_CURSOR_WIDTH for blinking cursor off. - - * emacs.c (main): Handle --script. - (USAGE1): Mention --script. - (standard_args): Define sort order for --script. - -2002-08-27 Gerd Moellmann - - * xdisp.c (redisplay_updating_p): Variable removed. - (inhibit_free_realized_faces, Qinhibit_free_realized_faces): - New variables. - (init_iterator): Don't free realized faces if - inhibit_free_realized_faces is set. - (redisplay_internal): Bind Qinhibit_free_realized_faces to nil. - (syms_of_xdisp): DEFVAR_BOOL inhibit-free-realized-faces, - initialize Qinhibit_free_realized_faces. - - * dispextern.h (PRODUCE_GLYPHS): Set inhibit_free_realized_faces - when iterator is adding glyphs to a glyph matrix. - -2002-08-27 Kenichi Handa - - * xdisp.c (get_next_display_element): In unibyte case, don't use - octal form for such eight-bit characters that can be converted to - multibyte char. - -2002-08-26 Kim F. Storm - - * frame.c (make_terminal_frame) [CANNOT_DUMP]: Initialize - foreground and background colors. From Joe Buehler. - -2002-08-26 Miles Bader - - * bytecode.c (Fbyte_code): Fsub1 can GC, so protect it. - -2002-08-25 Andrew Choi - - * emacs.c (main): Call init_mac_osx_environment if HAVE_CARBON is - defined instead of MAC_OSX. - - * s/darwin.h (select): Define select to sys_select only if - HAVE_CARBON is defined. - (HAVE_WORKING_VFORK): #undef it. Define vfork to fork. - (DONT_REOPEN_PTY): #def it. - - * macterm.c (XTread_socket): Remove code to call - SendEventToEventTarget for keys with command modifiers when - mac_command_key_is_meta is nil. - -2002-08-24 Andreas Schwab - - * eval.c (Fdefvar): Fix last change. - -2002-08-23 Richard M. Stallman - - * eval.c (Fdefvar, Fdefconst, Fdefvaralias): - Record variables in load history as (defvar . VAR). - (Fdefvar): Don't record in load history if no initial value. - (Qdefvar): New variable. - (syms_of_eval): Init and staticpro it. - - * lread.c (syms_of_lread): Doc fix. - (build_load_history): Use Fmember to see if a definition - is already in the Vload_history element. - - * process.c (Fstart_process): Remove /: from program name. - - * emacs.c (decode_env_path): Don't add /: if file name handler - has a `safe-magic' property. - - * callproc.c (Fcall_process): Remove /: from program name. - -2002-08-23 Stefan Monnier - - * regex.c (PATFETCH): Remove the translating fetch. - (PATFETCH_RAW): Rename to PATFETCH. - (set_image_of_range): New fun. - (SET_RANGE_TABLE_WORK_AREA): Use it. - (regex_compile): Don't translate the pattern chars so eagerly. - Only do it when inserting an `exactn' bytecode or when handling - a char-range. - (mutually_exclusive_p): Avoid empty statement. - -2002-08-22 Kim F. Storm - - * xdisp.c (redisplay_window): Do not `goto try_to_scroll' when we - end up on a partially visible line; this reverts a specific part - of the 2002-07-07 change by Richard M. Stallman to "fix" a nasty - display error which has been reported several times now. - However it introduces the problem that changes was supposed to fix. - See my comments in the source if you want to debug this further. - -2002-08-20 Kenichi Handa - - * abbrev.c (Fexpand_abbrev): Fix for the multibyte case. - -2002-08-19 Eli Zaretskii - - * msdos.c (croak): Add `void' to definition. - - * sysdep.c (request_sigio, unrequest_sigio) [MSDOS]: - Don't define them, they are defined in msdos.c. - - * mem-limits.h [MSDOS]: Declare etext. - - * fileio.c (Ffile_name_directory) [DOS_NT]: Don't declare `beg' - `const' since CORRECT_DIR_SEPS modifies its target. - -2002-08-19 Kim F. Storm - - * keyboard.c (Fclear_this_command_keys): Add optional arg - KEEP-RECORD to avoid clearing lossage when we just want to clear - the current key sequence (kmacro needs this). - -2002-08-19 Kenichi Handa - - * composite.c (run_composition_function): Call FUNC if it is fboundp. - - * composite.h (COMPOSITION_MODIFICATION_FUNC): If PROP is not a - cons, return Qnil. - -2002-08-17 Richard M. Stallman - - * s/sol2-5.h (BROKEN_SIGIO): Add #undef. - - * sysdep.c [!VMS]: Include sys/files.h. - - * editfns.c (save_restriction_restore): Defend from unchained marker. - - * buffer.c (overlays_at): Handle extending vec uniformly. - (overlays_in): Handle extending vec from length 0 as in overlays_at. - -2002-08-15 Andrew Choi - - * mac.c (init_mac_osx_environment): New function. - - * emacs.c (main) [MAC_OSX]: Call init_mac_osx_environment. - -2002-08-14 Kim F. Storm - - * macros.c (Fstart_kbd_macro): Added NO-EXEC argument to inhibit - executing macro before appending to it (when used from Lisp). - (Fexecute_kbd_macro): Added LOOPFUNC argument to supply function - which is called prior to each iteration of macro (for kmacro.el). - (Fend_kbd_macro, Fcall_last_kbd_macro): Likewise. - - * lisp.h (Fexecute_kbd_macro): Update prototype. - - * keyboard.c (Fcommand_execute): Update call to Fexecute_kbd_macro. - -2002-08-14 Kenichi Handa - - * xselect.c (QUTF8_STRING): New variable. - (symbol_to_x_atom): Pay attention to QUTF8_STRING. - (x_atom_to_symbol): Likewise. - (x_get_local_selection): New argument local_request. If it is - nonzero, call handler_fn with the second arg nil. - (x_handle_selection_request): Call x_get_local_selection with - local_request 0. - (lisp_data_to_selection_data): Don't encode the string here. - (Fx_get_selection_internal): Call x_get_local_selection with - local_request 1. - (syms_of_xselect): Intern and staticpro QUTF8_STRING. - - * xterm.c (x_term_init): Initialize dpyinfo->Xatom_UTF8_STRING. - - * xterm.h (struct x_display_info): New member Xatom_UTF8_STRING. - -2002-08-13 Richard M. Stallman - - * minibuf.c (Fminibufferp): New function. - (syms_of_minibuf): Defsubr it. - (Fminibuffer_prompt_end): Handle non-minibuffers specially. - -2002-08-13 Gerd Moellmann - - * coding.c (Funencodable_char_position): Lisp_Object/int mixup. - -2002-08-12 Richard M. Stallman - - * syswait.h: Only the include of sys/wait.h tests HAVE_SYS_WAIT_H. - [!VMS] (WCOREDUMP, WEXITSTATUS, WIFEXITED, WIFSTOPPED, WIFSIGNALED) - (WSTOPSIG, WTERMSIG): Define each one independently if not defined - already. - - * buffer.c (syms_of_buffer) : Doc fix. - -2002-08-11 Andrew Choi - - * macterm.c (XTmouse_position): Check wp with is_emacs_window. - (Vmac_pass_command_to_system): New variable. - (Vmac_pass_control_to_system): New variable. - (do_mouse_moved): Check wp with is_emacs_window. - (XTread_socket): Check window_ptr with is_emacs_window. - Call FrontNonFloatingWindow instead of FrontWindow. Send keydown - events back to Mac Toolbox for processing, depending on values of - Vmac_pass_command_to_system and Vmac_pass_control_to_system. - (syms_of_macterm): DEFVAR_LISP Vmac_pass_command_to_system and - Vmac_pass_control_to_system. - -2002-08-10 Kenichi Handa - - * coding.c (unencodable_char_position): New function. - (Funencodable_char_position): New function. - (syms_of_coding): Defsubr Funencodable_char_position. - -2002-08-10 Andrew Choi - - * mac.c (sys_select) [MAC_OSX]: New function. - - * macterm.c (MakeMeTheFrontProcess): New function. - (mac_initialize): Call MakeMeTheFrontProcess. - - * s/darwin.h: Define select to sys_select. - -2002-08-09 Richard M. Stallman - - * keyboard.c (make_lispy_event): Test WINDOWSNT, not WINDOWS_NT. - -2002-08-09 Gerd Moellmann - - * xdisp.c (forward_to_next_line_start): Return 0 when reaching the - end of the buffer. - -2002-08-08 Ken Raeburn - - * coding.c (Ffind_operation_coding_system): Fix Lisp_Object/int mixup. - - * puresize.h (BASE_PURESIZE): Increase to 910000. - -2002-08-08 Kenichi Handa - - * coding.c (Ffind_operation_coding_system): For write-region, if - VISIT is a filename, make it the target. - -2002-08-07 Richard M. Stallman - - * alloc.c (mark_object): Detect long lists for debugging. - (mark_object_loop_halt): New variable. - - * s/hpux10.h (C_SWITCH_SYSTEM): #undef it. - - * data.c (Fmake_variable_frame_local): Doc fix. - -2002-08-01 David Ponce - - * w32menu.c (local_heap, local_alloc, local_free): New macros. - (malloc_widget_value, free_widget_value) - (w32_free_submenu_strings): Use them. - - (push_submenu_start, push_submenu_end, push_left_right_boundary) - (push_menu_pane, push_menu_item, single_keymap_panes) - (single_menu_item, Fx_popup_menu, menubar_selection_callback) - (single_submenu, set_frame_menubar) - (w32_menu_show, w32_dialog_show): Use AREF, ASET, ASIZE. - - (Fx_popup_menu): Don't show pop up menu until preceding one is - actually cleaned up. Moved UNGCPRO outside #ifdef HAVE_MENUS block. - - * w32menu.c: Changes adapted from xmenu.c - (set_frame_menubar): First parse all submenus, - then make widget_value trees from them. - Don't allocate any widget_value objects - until we are done with the parsing. - (parse_single_submenu): New function. - (digest_single_submenu): New function. - (single_submenu): Function deleted, replaced by those two. - -2002-08-04 Andrew Choi - - * macterm.c (XTread_socket): Check that FrontNonFloatingWindow - returns a valid window pointer before proceeding for keyDown and - autoKey events. - -2002-08-03 Andrew Choi - - * macterm.c (USE_CARBON_EVENTS): New macro. - (macCtrlKey, macShiftKey, macMetaKey, macAltKey): New macros. - (x_iconify_frame): Call CollapseWindow. - (Vmac_reverse_ctrl_meta): New variable. - (Vmac_wheel_button_is_mouse_2): New variable. - (init_mac_drag_n_drop): New function. - (mac_do_receive_drag): New function. - (mac_handle_service_event): New function. - (init_service_handler): New function. - (mac_to_emacs_modifiers): New function. - (mac_event_to_emacs_modifiers): New function. - (mac_get_mouse_btn): New function. - (mac_convert_event_ref): New function. - (XTread_socket) [USE_CARBON_EVENTS]: Call ReceiveNextEvent, - SendEventToEventTarget, mac_event_to_emacs_modifiers, and - mac_get_mouse_btn. - (mac_initialize): Call init_mac_drag_n_drop and init_service_handler. - - * keyboard.c: Define Qmouse_wheel, mouse_wheel_syms, and - lispy_mouse_wheel_names for MAC_OSX as well as for WINDOWS_NT. - (kbd_buffer_get_event): Set used_mouse_menu for MENU_BAR_EVENT and - TOOL_BAR_EVENT for MAC_OS as well. - (make_lispy_event): Handle MOUSE_WHEEL_EVENT for MAC_OSX as well - as for WINDOWS_NT. - (syms_of_keyboard): Initialize Qmouse_wheel for MAC_OSX. - - * termhooks.h (event_kind): Define MOUSE_WHEEL_EVENT also for MAC_OSX. - -2002-08-03 Gerd Moellmann - - * xdisp.c (forward_to_next_line_start): Fix a condition that - lead to a newline being skipped. - -2002-08-02 Andrew Choi - - * mac.c (syms_of_mac): Defsubr Sx_selection_exists_p. - -2002-08-01 Richard M. Stallman - - * Makefile.in (SOME_MACHINE_OBJECTS): Add fontset.o. - -2002-07-31 Andrew Choi - - * macfns.c: #undef init_process before #define-ing it. - - * s/darwin.h: Define MAC_OS, SYMS_SYSTEM, and OTHER_FILES only if - HAVE_CARBON is defined. - -2002-07-31 Richard M. Stallman - - * xmenu.c (set_frame_menubar): First parse all submenus, - then make widget_value trees from them. - Don't allocate any widget_value objects - until we are done with the parsing. - (parse_single_submenu): New function. - (digest_single_submenu): New function. - (single_submenu): Function deleted, replaced by those two. - -2002-07-30 Juanma Barranquero - - * w32proc.c (syms_of_ntproc): Fix docstring of - `w32-get-true-file-attributes'. - -2002-07-28 Richard M. Stallman - - * s/hpux8.h (HPUX8): Define this before including hpux.h. - (HAVE_SYS_WAIT_H): #define deleted; we let Autoconf decide. - - * s/hpux.h (HAVE_SYS_WAIT_H): The #undef is conditional on HPUX8. - - * keyboard.c (make_lispy_event): - Use #ifdef to test USE_TOOLKIT_SCROLL_BARS. - Explicitly clear up_modifier in event->modifiers. - -2002-07-27 Richard M. Stallman - - * xterm.h (FRAME_CURSOR_WIDTH): New macro. - - * xterm.c (x_display_and_set_cursor): Check FRAME_CURSOR_WIDTH - for bar cursor. - -2002-07-26 Kenichi Handa - - * coding.c (detect_coding_iso2022): While checking a byte sequence - for CODING_CATEGORY_MASK_ISO_8_2, if we read one extra byte, check - it in the normal loop. - -2002-07-24 Gerd Moellmann - - * xterm.c (expose_overlaps): New function. - (expose_window): Use it to fix the display of overlapping rows. - - * xdisp.c (unwind_redisplay): Clear redisplay_updating_p. - -2002-07-23 Ken Raeburn - - * lisp.h (XPNTR): Use NO_UNION_TYPE version for union as well, - since it only depends on XUINT. - - * m/alpha.h (BITS_PER_LONG, BITS_PER_EMACS_INT, EMACS_INT, - EMACS_UINT, SPECIAL_EMACS_INT, DATA_SEG_BITS, - PNTR_COMPARISON_TYPE, VALBITS, MARKBIT, XINT, XUINT, XPNTR): - Macros deleted. - - * mem-limits.h (start_of_data): If DATA_START is defined, prefer - its value over other approaches. - * sysdep.c (start_of_data): Don't define the function if a macro - form has been defined. - -2002-07-23 Gerd Moellmann - - * xdisp.c (redisplay_updating_p): New variable. - (init_iterator): Don't free realized faces when - redisplay_updating_p is set. - (redisplay_internal): Set redisplay_updating_p while updating - the display. - -2002-07-23 Richard M. Stallman - - * editfns.c (Fmessage): Treat "" like nil. - -2002-07-23 Kenichi Handa - - * xdisp.c (face_before_or_after_it_pos): - Call FETCH_MULTIBYTE_CHAR with byte postion, not char position. - -2002-07-22 Juanma Barranquero - - * callproc.c (init_callproc) [DOS_NT]: - Initialize Vshared_game_score_directory to nil. - (syms_of_callproc) [DOS_NT]: Likewise. - -2002-07-22 Gerd Moellmann - - * xdisp.c (display_line): Replace an abort with xassert. - -2002-07-21 Richard M. Stallman - - * xdisp.c (redisplay_window): Don't test BEG_UNCHANGED - and END_UNCHANGED when setting buffer_unchanged_p. - Use current_matrix_up_to_date_p to decide whether to use - try_cursor_movement. - - * config.in (HAVE_SHARED_GAME_DIR): Undef deleted. - - * epaths.in (PATH_GAME): New macro, edited by ../Makefile.in. - - * callproc.c (init_callproc): Set up Vshared_game_score_directory. - Set to nil if dir does not exist. - (syms_of_callproc): Init unconditionally and simply. - - * buffer.c (Fbuffer_list): Doc fix. - -2002-07-21 Ken Raeburn - - * sysdep.c (end_of_text, end_of_data): Unused functions deleted. - - * buffer.c (mmap_realloc): When shrinking, make sure number of - pages to unmap is rounded towards zero. - - * m/mips-siemens.h (XSETUINT, XSETPNTR): Unused macros deleted. - (XSETINT): Deleted. - - * m/att3b.h (XINT): Don't define. - (VALBITS, VALMASK, XTYPE): Deleted. - (DATA_SEG_BITS): Define. - * m/gec63.h (VALBITS, VALAMASK, XTYPE, XSETTYPE, XPNTR, XSET, - ARRAY_MARK_FLAG): Deleted. - (DATA_SEG_BITS): Define. - * m/pfa50.h (VALBITS, VALMASK, XTYPE): Deleted. - (DATA_SEG_BITS): Define. - -2002-07-20 Richard M. Stallman - - * print.c (print_error_message): New args CONTEXT and CALLER. - Calls changed. - - * lisp.h (print_error_message): Declare new args. - - * keyboard.c (cmd_error_internal): Pass Vsignaling_function - and CONTEXT to print_error_message, don't print them here. - For a Quit, don't use Vsignaling_function. - Call message_log_maybe_newline. - - * Makefile.in (xsmfns.o): Don't depend on lisp.h. - -2002-07-20 Kim F. Storm - - * xdisp.c (redisplay_window): Test MODIFF to set buffer_unchanged_p. - -2002-07-19 Ken Raeburn - - * bytecode.c (struct byte_stack): Pointers into byte string now - point to const. - * callproc.c (Fcall_process): Make NEW_ARGV array hold pointer to - const. - * charset.h (BCOPY_SHORT): Source pointer now points to const. - * coding.c (encode_eol, detect_coding, detect_eol): - (decode_coding, encode_coding, detect_coding_system): - Source strings now treated as const. - (decode_coding_string, encode_coding_string): Use STRING_COPYIN to - modify Lisp string contents. - * coding.h (decode_coding, encode_coding, detect_coding, - detect_eol): Declarations updated. - * composite.c (compose_chars_in_text): Treat Lisp string contents - as const. - * dispnew.c (safe_bcopy): Source pointer now points to const. - * lisp.h (STRING_COPYIN): New macro. - (detect_coding_system, safe_bcopy, temp_output_buffer_setup): - (internal_with_output_to_temp_buffer): Declarations updated. - * print.c (temp_output_buffer_setup): - (internal_with_output_to_temp_buffer): Buffer name argument is now - pointer to const. - * sound.c (struct sound_device): Function pointer field "write" - buffer argument now points to const. - (vox_write): Buffer argument points to const. - * syntax.c (Fstring_to_syntax, skip_chars): Treat Lisp string - contents as const. - * sysdep.c (emacs_write): Buffer pointer now const. - * term.c (encode_terminal_code): Buffer pointer now const. - * xfaces.c (may_use_scalable_font_p): Argument now points to const. - (x_face_list_fonts, x_update_menu_appearance): - (hash_string_case_insensitive): Treat Lisp string contents as const. - -2002-07-19 Juanma Barranquero - - * xdisp.c (syms_of_xdisp): Remove redundant deprecation info. - - * fileio.c (syms_of_fileio): Likewise. - (Ffile_name_as_directory): Fix argument name in docstring. - (file_name_as_directory): Use literal '/' instead of DIRECTORY_SEP. - -2002-07-18 Richard M. Stallman - - * data.c (Fdefalias): Doc fix. - -2002-07-17 Dave Love - - * intervals.h (text_property_stickiness): Use P_. - - * ccl.c: Remove `emacs' conditionals. - (ccl_backtrace_table): Fix size spec. - (ccl_driver): Fix type errors. - -2002-07-16 Ken Raeburn - - * alloc.c (xstrdup, make_string, make_unibyte_string) - (make_multibyte_string, build_string): String pointer args now - point to const. - * charset.c (find_charset_in_text, c_string_width): - (chars_in_text, multibyte_chars_in_text, parse_str_as_multibyte): - * fileio.c (report_file_error): - * insdel.c (copy_text, count_size_as_multibyte, insert_1): - (count_combining_before, count_combining_after, insert_1_both): - (insert, insert_and_inherit, insert_string): - (insert_before_markers, insert_before_markers_and_inherit): - * lread.c (intern, oblookup, hash_string): - * minibuf.c (temp_echo_area_glyphs): - * search.c (fast_c_string_match_ignore_case): - * sysdep.c (emacs_open, set_file_times): - * xfaces.c (xstricmp): - * xdisp.c (store_frame_title, string_char_and_length): - (message_dolog, message2, message2_nolog, set_message): Likewise. - (set_message_1): Cast message string argument to const pointer. - * editfns.c (general_insert_function): Insertion function now - takes pointer to const for input data. - * charset.h (find_charset_in_text, c_string_width): - (parse_str_as_multibyte): Declarations updated. - * dispextern.h (xstricmp): Declaration updated. - * lisp.h (chars_in_text, multibyte_chars_in_text, copy_text): - (count_size_as_multibyte, count_combining_before): - (count_combining_after, insert_1, insert_1_both, message_dolog): - (insert, insert_and_inherit, insert_before_markers) - (insert_before_markers_and_inherit, set_message, message2): - (message2_dolog, build_string, make_string, make_unibyte_string): - (make_multibyte_string, intern, oblookup, report_file_error): - (fast_c_string_match_ignore_case, temp_echo_area_glyphs): - (emacs_open, xstrdup): Declarations updated. - * systime.h (set_file_times): Declaration updated. - - * charset.c (find_charset_in_text, lisp_string_width): Use const - for pointer to lisp string data. - * charset.h (FETCH_STRING_CHAR_ADVANCE): - (FETCH_STRING_CHAR_ADVANCE_NO_CHECK): - * coding.c (Ffind_coding_systems_region_interval): - * fileio.c (Ffile_name_directory, Ffile_name_nondirectory): - (Fmake_directory_internal, Fdelete_directory): - (Ffile_name_absolute_p, Fwrite_region, double_dollars): - * fontset.c (font_family_registry, fs_query_fontset): - (list_fontsets): - * frame.c (Fframe_parameter): - * keyboard.c (cmd_error_internal): - * keymap.c (Fdescribe_buffer_bindings): - * lread.c (complete_filename_p, openp): - * minibuf.c (Fminibuffer_complete_word): - * xdisp.c (string_pos_nchars_ahead, init_from_display_pos): - (face_before_or_after_it_pos, next_element_from_string): - (get_overlay_arrow_glyph_row, display_mode_element): - (decode_mode_spec_coding): - * xterm.c (same_x_server): Likewise. - - * buffer.c (reset_buffer_local_variables): Delete "#if 0" - settings of non-existent fields. - - * editfns.c (Fstring_to_char): Don't use XSTRING/XSETSTRING to - copy a lisp value. - - * lread.c (Fintern_soft): Use string macros instead of - Lisp_String fields. - * keyboard.c (echo_char, parse_modifiers_uncached): - (parse_solitary_modifier, Fexecute_extended_command): Likewise. - * textprop.c (validate_interval_range, interval_of): Likewise. - - * fontset.c (Fset_fontset_font): Use SDATA instead of XSTRING()->data. - - * charset.h (FETCH_STRING_CHAR_ADVANCE) - (FETCH_STRING_CHAR_ADVANCE_NO_CHECK): Use SBYTES instead of - XSTRING()->size_byte. - - * lisp.h (SDATA, SREF): Produce rvalue. - (SSET): New macro. - * alloc.c (make_event_array): Use SSET for storing into a string. - * buffer.c (Fother_buffer): Use SREF when retrieving a byte from - a string. - * casefiddle.c (casify_object): Use SSET. - * charset.h (FETCH_STRING_CHAR_ADVANCE) - (FETCH_STRING_CHAR_ADVANCE_NO_CHECK): Use SDATA when getting - address of string contents. - * data.c (Faref): Use SDATA. - (Faset): Use SDATA, SSET. - * dired.c (directory_files_internal): Use SSET. - * fileio.c (Fmake_symbolic_link, Fexpand_file_name): Use SSET. - (Fread_file_name): Use SREF, SSET. - * fns.c (concat): Use SSET. - (concat, Fdelete): Use SDATA. - * insdel.c (insert_from_string_1): Use SDATA. - * keyboard.c (Fevent_convert_list): Use SREF. - * lread.c (Fload): Use SDATA, SSET. - * macfns.c (validate_x_resource_name): Use SSET. - * process.c (status_message): Use SSET. - * search.c (wordify): Use SDATA. - (Freplace_match): Use SREF. - * w32fns.c (validate_x_resource_name): Use SSET. - * xfns.c (validate_x_resource_name): Use SSET. - * xterm.c (x_catch_errors, x_clear_errors): Use SSET. - -2002-07-16 Richard M. Stallman - - * s/hpux11.h (USG_SUBTTY_WORKS): Defined. - - * xdisp.c (reconsider_clip_changes): - Don't test prevent_redisplay_optimizations_p. - (redisplay_internal): Test prevent_redisplay_optimizations_p - along with clip_changed in some cases. - (try_window_id): Likewise. - (redisplay_window): New local var buffer_unchanged_p. - - * keyboard.c (cmd_error) [HAVE_X_WINDOWS]: Maybe call cancel_houglass. - - * process.c (create_process): Test USG_SUBTTY_WORKS. - (process_send_signal): Clean up handling of GID. - Detect errors in ioctls meant to set GID. - - * window.c (temp_output_buffer_show): - Don't set prevent_redisplay_optimizations_p. - -2002-07-15 Juanma Barranquero - - * eval.c (Fdefvaralias): Add docstring argument. - -2002-07-15 Ken Raeburn - - * lisp.h (STRING_INTERVALS): Produce rvalue. - (STRING_SET_INTERVALS): New macro. - * buffer.c (Fget_buffer_create, Fmake_indirect_buffer): Use it. - * fns.c (Fstring_as_multibyte): Likewise. - * intervals.c (balance_possible_root_interval, delete_interval) - (create_root_interval, copy_intervals_to_string): Likewise. - * textprop.c (set_text_properties): Likewise. Use NULL_INTERVAL - instead of 0. - -2002-07-14 Ken Raeburn - - * lisp.h (STRING_SET_CHARS): New macro. - (SCHARS, SBYTES): Produce rvalues. - * dired.c (directory_files_internal): Use STRING_SET_CHARS. - * fns.c (concat): Likewise. - * lread.c (read_vector): Likewise. - - * lisp.h (SMBP): Delete. All uses changed to STRING_MULTIBYTE. - (STRING_SET_UNIBYTE): New macro. - (SET_STRING_BYTES): Delete. Callers (all of which supplied a - length of -1) changed to use STRING_SET_UNIBYTE. - * abbrev.c, alloc.c, buffer.c, bytecode.c, callint.c, callproc.c, - casefiddle.c, category.c, ccl.c, charset.c, charset.h, coding.c, - composite.c, data.c, dired.c, dispnew.c, disptab.h, doc.c, - dosfns.c, editfns.c, emacs.c, eval.c, fileio.c, filelock.c, fn.c, - fontset.c, frame.c, indent.c, insdel.c, intervals.c, keyboard.c, - keymap.c, lread.c, mac.c, macfns.c, macmenu.c, macterm.c, - minibuf.c, msdos.c, print.c, process.c, search.c, sound.c, - sunfns.c, syntax.c, syntax.h, sysdep.c, textprop.c, undo.c, - w16select.c, w32.c, w32fns.c, w32menu.c, w32proc.c, w32select.c, - w32term.c, window.c, xdisp.c, xfaces.c, xfns.c, xmenu.c, - xselect.c, xsmfns.c, xterm.c: Most uses of XSTRING combined with - STRING_BYTES or indirection changed to SCHARS, SBYTES, - STRING_INTERVALS, SREF, SDATA; explicit size_byte references left - unchanged for now. - -2002-07-13 Kim F. Storm - - * keyboard.c (command_loop_1): Invert check on Vmemory_full. - -2002-07-12 Richard M. Stallman - - * fileio.c (Fwrite_region): Doc fix. - - * print.c (print_error_message): Don't handle Vsignaling_function here. - - * keyboard.c (cmd_error_internal): Handle Vsignaling_function here. - (command_loop_1): Avoid certain actions after memory-full error. - - * eval.c (Fsignal): Don't call cancel_hourglass. - For a memory-full error, don't call Vsignal_hook_function - and don't set Vsignaling_function. - - * process.c (process_send_signal): Add abort call. - -2002-07-11 Markus Rost - - * keymap.c (Fkey_binding): Fix typo. - -2002-07-11 Richard M. Stallman - - * alloc.c (Vmemory_full): New variable. - (Vmemory_signal_data): Rename from memory_signal_data. - Uses changed. - (syms_of_alloc): Defvar them. - (memory_full, buffer_memory_full): Set Vmemory_full. - - * lisp.h (Vmemory_full): Add declaration. - (current_column, indented_beyond_p): Change declaration. - - * indent.c (last_known_column): Declare as double, not float. - (current_column, current_column_1, string_display_width) - (position_indentation): Return `double'. - (indented_beyond_p): Arg `column' is `double'. Callers changed. - - * xdisp.c (message_dolog): Do nothing if Vmemory_full is non-nil. - (back_to_previous_visible_line_start) - (reseat_at_next_visible_line_start, next_element_from_buffer): - Use `double', not `float', when calling indented_beyond_p. - - * s/hpux11.h (BROKEN_SA_RESTART): Define. - - * sysdep.c (sys_signal): Test BROKEN_SA_RESTART. - -2002-07-11 Juanma Barranquero - - * alloc.c, buffer.c, bytecode.c, callint.c, callproc.c, coding.c, - * composite.c, dired.c, dispnew.c, editfns.c, emacs.c, eval.c, - * fileio.c, fns.c, insdel.c, keyboard.c, keymap.c, lread.c, macfns.c, - * macmenu.c, macros.c, minibuf.c, print.c, process.c, sound.c, - * textprop.c, w32fns.c, w32menu.c, window.c, xfaces.c, xfns.c, - * xmenu.c, xselect.c, xterm.c: Use SPECPDL_INDEX wherever makes sense. - -2002-07-10 Juanma Barranquero - - * lisp.h (SPECPDL_INDEX): Rename from BINDING_STACK_SIZE. - All callers changed. - -2002-07-09 Stefan Monnier - - * data.c (Fdefalias): Add an optional `docstring' argument. - (set_internal, Fsetq_default): Use XCAR/XCDR. - - * composite.c (HASH_VALUE, HASH_KEY): - * ccl.c (HASH_VALUE): Remove (it's in lisp.h now). - -2002-07-09 Kenichi Handa - - * callproc.c (Fcall_process): Fix previous change. - -2002-07-07 Stefan Monnier - - * minibuf.c (Ftry_completion, Fall_completions, Ftest_completion): - Add support for hash-tables. - (Ftry_completion): Return t even if the string appears multiple times. - - * fns.c (Fnconc): Use XCDR. - (Fprovide): Use CONSP and XCDR. - (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX) - (HASH_TABLE_SIZE): Delete: moved to lisp.h. - (Fmake_hash_table): Accept `:size nil'. - (Fmakehash): Delete: moved to subr.el. - (syms_of_fns): Don't defsubr makehash. - - * lisp.h (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX) - (HASH_TABLE_SIZE): Move from fns.c. - -2002-07-07 Richard M. Stallman - - * xdisp.c (make_cursor_line_fully_visible): Don't try short scrolls. - Instead just return 0 when there is something to be done. - (try_scrolling): If make_cursor_line_fully_visible returns 0, - retry scrolling as if cursor were off the bottom. - (try_cursor_movement): If make_cursor_line_fully_visible returns 0, - return CURSOR_MOVEMENT_MUST_SCROLL. - (redisplay_window): If make_cursor_line_fully_visible returns 0, - go to try_to_scroll. - - * buffer.c (Fbuffer_local_value): Store current value into its binding - so we get the up-to-date value for the binding that is loaded. - - * eval.c (Fdefmacro): Doc fix. - -2002-07-05 Dave Love - - * keyboard.c (read_key_sequence): Set initial_idleness_start_time - correctly. - - * ccl.c (Vtranslation_hash_table_vector, GET_HASH_TABLE) - (HASH_VALUE, CCL_LookupIntConstTbl, CCL_LookupCharConstTbl): New. - (ccl_driver): Add cases for CCL_LookupIntConstTbl, - CCL_LookupCharConstTbl. - (syms_of_ccl): Defvar translation-hash-table-vector. - -2002-07-05 Pavel Jan,Am(Bk - - * xdisp.c: Remove unused variable `face'. - -2002-07-04 Juanma Barranquero - - * keyboard.c (post_command_idle_hook): Remove redundant (and inexact) - obsolescence information. - -2002-07-03 Andrew Choi - - * macterm.c (x_list_fonts): Fix comment. Cache fonts matching - pattern. Search cache first. - (init_font_name_table): Also add entry for jisx0201.1976-0 coding - for Japanese font. - (XLoadQueryFont): Use it. - -2002-07-02 Richard M. Stallman - - * keymap.c (Fdefine_key): Doc fix. - - * xterm.c (x_term_init): Turn off polling around XtOpenDisplay. - -2002-07-02 Juanma Barranquero - - * keymap.c (syms_of_keymap): Fix typo. - -2002-07-01 Andrew Choi - - * s/darwin.h: Define POSIX_SIGNALS. - - * macterm.c (do_ae_open_documents) [MAC_OSX]: Call FSpMakeFSRef - and FSRefMakePath to convert FSSpec returned with Apple Event to - Posix pathname. - (mac_initialize) [TARGET_API_MAC_CARBON]: - Call init_required_apple_events and disable the `Quit' menu item - provided automatically by the Carbon Toolbox. - -2002-07-01 Dave Love - - * keyboard.c (kbd_buffer_store_event): Fix interrupt_signal decl - for K&R. - - * xterm.c: Fix prototype for K&R. - - * term.c (costs_set): Declare static, non-initialized for pcc. - -2002-07-01 Richard M. Stallman - - * keyboard.c (timer_last_idleness_start_time): New variable. - (timer_start_idle): Set that. - (read_key_sequence): Use that to reset timer_idleness_start_time - to previous value. - - * window.c (Frecenter): With arg, set optional_new_start. - - * xdisp.c (redisplay_internal): Make optional_new_start really work. - - * minibuf.c (Fminibuffer_complete_and_exit): Move to end of - buffer for completion. - -2002-06-29 Ken Raeburn - - * xdisp.c (store_mode_line_string): Lisp_Object/int mixup. - -2002-06-28 Jan Dj,Ad(Brv - - * keyboard.c (readable_filtered_events): New function that filters - FOCUS_IN_EVENT depending on parameter. - (readable_events): Calls readable_filtered_events, not filtering - FOCUS_IN_EVENT. - (get_filtered_input_pending): New function, filtering parameter passed - to readable_filtered_events. - (get_input_pending): Calls get_filtered_input_pending, not filtering - FOCUS_IN_EVENT. - (Finput_pending_p): Calls get_filtered_input_pending, DO filter - FOCUS_IN_EVENT. - - * xterm.h (struct x_output): Add focus_state. - - * xterm.c (x_focus_changed): New function. - (x_detect_focus_change): New function. - (XTread_socket): Call x_detect_focus_change for FocusIn/FocusOut - EnterNotify and LeaveNotify to track X focus changes. - -2002-06-28 Andreas Schwab - - * lisp.h: Remove duplicate declaration of code_convert_string_norecord. - -2002-06-27 Kim F. Storm - - * xdisp.c (mode_line_string_list, mode_line_string_face) - (mode_line_string_face_prop): New variables. - (store_mode_line_string): New function. - (display_mode_element): Use store_mode_line_string to - add mode-line string elements to mode_line_string_list - when mode_line_string_list is non-nil. - (Fformat_mode_line): Now returns propertized string by - default. New arg NO-PROPS to ignore properties. - (decode_mode_spec): Only add two dashes for %- in propertized - mode-line string. - (syms_of_xdisp): Init and staticpro mode_line_string_list. - -2002-06-27 Stefan Monnier - - * minibuf.c (minibuffer_completion_contents): Add return type. - -2002-06-27 Juanma Barranquero - - * charset.c (Fchar_bytes): Remove obsolescence info from docstring. - -2002-06-26 Juanma Barranquero - - * fileio.c (read_file_name_cleanup): Add missing return. - -2002-06-26 Richard M. Stallman - - * window.c (Frecenter): Don't set force_start flag. - - * minibuf.c (do_completion, Fminibuffer_complete_word) - (Fminibuffer_completion_help): Complete just the text before point. - (minibuffer_completion_contents): New function. - - * buffer.c (Fbury_buffer): Use frames_discard_buffer. - - * frame.c (frames_bury_buffer): Function deleted. - -2002-06-25 Miles Bader - - * callint.c (Fcall_interactively): When checking to see if doprnt hit - the end of callint_message, allow for a terminating '\0'. - -2002-06-24 Juanma Barranquero - - * w32select.c: Include composite.h. - - * w16select.c: Likewise. - -2002-06-24 Kenichi Handa - - * callproc.c (Fcall_process): If code detection is necessary, - call detect_coding directly here. - - * coding.c (detect_eol): Preserve coding->cmp_data. - - * w16select.c (Fw16_get_clipboard_data): - * w32fns.c (w32_to_x_font): - * w32select.c (Fw32_get_clipboard_data): - * xselect.c (selection_data_to_lisp_data): - * xterm.c (XTread_socket): Disable composition handling. - -2002-06-24 Stefan Monnier - - * print.c (temp_output_buffer_setup): Kill all local variables. - -2002-06-22 Stefan Monnier - - * lread.c (Fread): Remove redundant and imprecise declaration. - - * xfns.c (check_x_display_info): Use check_x_frame. - - * .gdbinit (xprintsym): Use the new `xname' field. - (xsymbol): Use it. - -2002-06-22 Jason Rumney - - * w32fns.c (file_dialog_callback): New function. - (Fx_file_dialog): Allow selecting directories as well as files. - -2002-06-21 Pavel Jan,Am(Bk - - * m/pmax.h (START_FILES): Define START_FILES for NetBSD and - OpenBSD. Add support for mipseb-*-netbsd* machines. - -2002-06-17 Andrew Choi - - * macterm.c (mac_scroll_area): Set foreground and backcolor to - black and white before scrolling. Restore frame background and - foreground color after scrolling. - (do_window_update): Call XClearWindow before calling expose_frame. - (make_mac_frame): Don't set FRAME_BACKGROUND_PIXEL and - FRAME_FOREGROUND_PIXEL of frame. - - * macterm.c (XTread_socket): If Vmac_command_key_is_meta is nil, - test Mac command key as key. - -2002-06-17 Stefan Monnier - - * window.c (Fset_window_configuration): Lisp_Object/int mixup. - - * keyboard.c (read_key_sequence): Be more careful with first_unbound. - Lookup keys in function-key-map immediately so that key-translation-map - can be applied earlier. - Remove function_key_possible and key_translation_possible, replaced - by checking `keytran_start < t'. - - * .gdbinit (xsymbol): Use the new `xname' field. - -2002-06-17 Andrew Choi - - * macterm.c (XTread_socket): If Vmac_command_key_is_meta is nil, - test Mac command key as key. - - * mac.c (do_applescript): Call initialize_applescript if necessary - when first called. Dispose of result_desc only when there is no error. - (Fdo_applescript): Use %d format specifier instead of %ld. - -2002-06-16 Andrew Choi - - * macterm.c (XTread_socket): Call FrontNonFloatingWindow instead - of FrontWindow for cases keyDown and autoKey. - - * fontset.c (syms_of_fontset) [MAC_OS]: Set ASCII font of - Vdefault_fontset to Monaco with mac-roman coding. - - * mac.c, macfns.c, macmenu.c, macterm.c: Undefine and redefine - init_process before and after inclusion of Carbon/Carbon.h, resp. - - * macterm.c (x_new_font): Set font for normal_gc, reverse_gc, and - cursor_gc. - (add_font_name_table_entry): New function. - (init_font_name_table): Use add_font_name_table_entry; add italic, - bold, and bold-italic entries for truetype fonts. - - * xfaces.c (init_frame_faces) [MAC_OS]: Call realize_basic_faces - for Mac too. - (try_font_list) [MAC_OS]: If no font matches given registry, try - fonts with any registry matching face_family. - (realize_x_face) [MAC_OS]: Remove old ad-hoc fix to load font here. - - * s/darwin.h: If autoconf detects the Ncurses library, define - LIBS_TERMCAP to -lncurses to use it. - -2002-06-16 Eli Zaretskii - - * strftime.c [__hpux]: Include sys/_mbstate_t.h. - -2002-06-15 Richard M. Stallman - - * window.c (Fset_window_configuration): Explicitly preserve - the point value that new_current_buffer had at the start. - -2002-06-14 Juanma Barranquero - - * composite.c (Fcompose_region_internal, Fcompose_string_internal): - Fix typos. - -2002-06-14 Kim F. Storm - - * insdel.c (insert_1_both, insert_from_string_1) - (insert_from_buffer_1): Recalculate END_UNCHANGED in case the - insert happened in the end_unchanged region. Otherwise, the - redisplay may be confused and duplicate the last line in the - buffer [seen after save-buffer when require-final-newline==t]. - -2002-06-13 Jason Rumney - - * w32.c (init_environment): Remove EMACSLOCKDIR. - (stat): Swap _S_IFDIR and _S_IFREG. - -2002-06-13 Pavel Jan,Am(Bk - - * keyboard.c, macterm.c, macmenu.c, msdos.c, sysdep.c - * termhooks.h, xmenu.c, xsmfns.c, xterm.h, xterm.c, w32term.c, - * w32menu.c, w32inevt.c: Rename enum event_kind as follows: - ascii_keystroke to ASCII_KEYSTROKE_EVENT, multibyte_char_keystroke - to MULTIBYTE_CHAR_KEYSTROKE_EVENT, non_ascii_keystroke to - NON_ASCII_KEYSTROKE_EVENT, timer_event to TIMER_EVENT, mouse_click - to MOUSE_CLICK_EVENT, mouse_wheel to MOUSE_WHEEL_EVENT, - language_change_event to LANGUAGE_CHANGE_EVENT, scroll_bar_click - to SCROLL_BAR_CLICK_EVENT, w32_scroll_bar_click to - W32_SCROLL_BAR_CLICK_EVENT, selection_request_event to - SELECTION_REQUEST_EVENT, selection_clear_event to - SELECTION_CLEAR_EVENT, buffer_switch_event to BUFFER_SWITCH_EVENT, - delete_window_event to DELETE_WINDOW_EVENT, iconify_event to - ICONIFY_EVENT, deiconify_event to DEICONIFY_EVENT, - menu_bar_activate_event to MENU_BAR_ACTIVATE_EVENT, drag_n_drop to - DRAG_N_DROP_EVENT, save_session_event to SAVE_SESSION_EVENT and - no_event to NO_EVENT. - -2002-06-12 Pavel Jan,Am(Bk - - * macmenu.c: Remove declaration of Qmouse_click and Qevent_kind. - -2002-06-12 Stefan Monnier - - * intervals.c (textget): Don't forget to `return'. - (lookup_char_property): Use XCAR/XCDR. - -2002-06-12 Juanma Barranquero - - * xdisp.c (Fformat_mode_line): Fix typo. - -2002-06-12 Kim F. Storm - - * xdisp.c (Fformat_mode_line): New function. - (frame_title_buf, frame_title_buf_end, frame_title_ptr) - (store_frame_title_char, store_frame_title): Use unconditionally. - (init_xdisp): Defsubr Fformat_mode_line. - Initialize frame_title_buf etc. unconditionally. - -2002-06-11 Stefan Monnier - - * keyboard.c (read_key_sequence): - Remove prev_(fkey|keytran}_(map|start|end) since we don't want to pass - things through those maps after downcasing events. - Enforce that keytran_end <= fkey_start, i.e. that key-translation-map - applies after function-key-map. - Make sure that keytran can be done in the middle in the sequence. - Be careful not to throw away events past the one we downcase. - - * lread.c (read_integer): Remove unused var `tem'. - (read1): Fix int/Lisp_Object mixup. - - * xfaces.c (tty_lookup_color): Type bool/Lisp_Object mismatch fixed. - -2002-06-11 Richard M. Stallman - - * keyboard.c (readable_events): Ignore any number of - FOCUS_IN_EVENT events and return 0 if nothing else in buffer. - -2002-06-09 Miles Bader - - * xfaces.c (Ftty_supports_face_attributes_p): New function. - (parse_rgb_list, tty_lookup_color): New functions. - (tty_defined_color): Use `tty_lookup_color' to do all the work. - (color_distance, Fcolor_distance): New functions. - (TTY_SAME_COLOR_THRESHOLD): New macro. - (Qtty_color_standard_values): New variable. - (syms_of_xfaces): Initialize new vars & functions. - -2002-06-08 Colin Walters - - * textprop.c (Vchar_property_alias_alist): New variable. - (syms_of_textprop) : DEFVAR_LISP. - - * intervals.c (lookup_char_property): New function for looking up - overlay and text properties, created from textget. - (textget): Use it. - - * intervals.h (lookup_char_property): Declare. - (Vchar_property_alias_alist): Declare. - - * buffer.c (Foverlay_get): Use lookup_char_property. - -2002-06-07 Sam Steingold - - * xselect.c (lisp_data_to_selection_data): Fix last change: - *data_ret is not a Lisp string, while unibyte_string is. - -2002-06-07 Eli Zaretskii - - * xselect.c (lisp_data_to_selection_data): Fix last change: - set size_ret. - -2002-06-07 Andreas Schwab - - * m/amdx86-64.h: New file. - -2002-06-05 Eli Zaretskii - - * fns.c (Fstring_make_unibyte): Doc fix. - - * xselect.c (lisp_data_to_selection_data): If the requested type - is STRING, call string_make_unibyte to encode the selected text - as a string. - - * window.c (Fset_window_hscroll): Doc fix. - -2002-06-05 Pavel Jan,Am(Bk - - * fileio.c (choose_write_coding_system): - Call select-safe-coding-system properly. - -2002-06-03 Richard M. Stallman - - * xdisp.c (message_with_string): Error if STRING is not a string. - - * fns.c (md5): Pass FILE arg to Vselect_safe_coding_system_function. - - * fileio.c (choose_write_coding_system): Pass FILE arg to - Vselect_safe_coding_system_function. - -2002-06-03 Ken Raeburn - - * buffer.c (fix_overlays_before): Fix list-walking bug in 05-19 change. - -2002-06-02 Thien-Thi Nguyen - - * bytecode.c (Fbyte_code): Cast `current_column' return value to int. - * cmds.c (Fdelete_backward_char, internal_self_insert): Likewise. - * keymap.c (describe_command): Likewise. - * minibuf.c (read_minibuf): Likewise. - - * xdisp.c (redisplay_internal, redisplay_window, decode_mode_spec): - Cast `current_column' return value to int. - (back_to_previous_visible_line_start) - (reseat_at_next_visible_line_start, next_element_from_buffer): - Cast `indented_beyond_p' 3rd arg to float. - - * indent.c (last_known_column): Now a float. - (current_column_1, position_indentation, current_column) - (string_display_width): Return float. - (Fcurrent_column): Cast `current_column' return value to int. - (Fcurrent_indentation): Cast `position_indentation' retval to int. - (indented_beyond_p): Third arg now a float. - (compute_motion, vmotion): Cast `indented_beyond_p' 3rd arg to float. - - * lisp.h (current_column): Now returns float. - (indented_beyond_p): 3rd arg now a float. - -2002-05-31 Eli Zaretskii - - * xfns.c (x_encode_text): Return stringp non-NULL if coding_system - is Qcompound_text_with_extensions. - - * xselect.c (lisp_data_to_selection_data): Always set selection - type as string if x_encode_text returns streingp non-NULL. - - * s/netbsd.h: Include /usr/pkg in the run time shared library path. - -2002-05-30 Richard M. Stallman - - * window.c (Fset_window_configuration): Correct the handling - of point in current buffer, to work with multiple windows. - -2002-05-29 Colin Walters - - * lread.c (Fread_from_string): Don't depend on order of evaluation - for C function parameters. - -2002-05-28 Richard M. Stallman - - * xterm.c (x_display_and_set_cursor): Change the cursor in the same - way for blinked-off state and for a nonselected window. - - * window.c (window_scroll_pixel_based): Don't call Fbolp; - instead, see if the new start pos is at beginning of line. - - * fileio.c (Fwrite_region): If START is a string, don't - make any annotations. - - * eval.c (syms_of_eval): Doc fix. - -2002-05-28 Colin Walters - - * emacs.c (USAGE1): Add --no-splash. - (standard_args): Ditto. - -2002-05-28 Colin Walters - - * lread.c (readchar_count): New variable. - (readchar): Increment it. - (unreadchar): Decrement it. - (read_multibyte): Decrement it. - (Vread_with_symbol_positions): New variable. - (Vread_symbol_positions_list): New variable. - (read_internal_start): New function, created from Fread and - Fread_from_string. Handle Vread_symbol_positions_list and - Vread_with_symbol_positions. - (readevalloop, Fread, Fread_from_string): Use it. - (read1): Use readchar_count to add symbol positions to - Vread_symbol_positions_list if Vread_with_symbol_positions is non-nil. - (syms_of_lread): DEFVAR_LISP and initialize them. - - * lread.c (read0, read1, read_list, read_vector, read_multibyte) - (substitute_object_recurse, substitute_object_in_subtree) - (substitute_in_interval): Prototype. - (read_multibyte): Return c if it's less than zero. - -2002-05-28 Kim F. Storm - - * fileio.c (Fread_file_name_internal): Added brute-force - speed up for using predicate file-directory-p. - -2002-05-28 Kim F. Storm - - * fileio.c (Vread_file_name_function, Vread_file_name_predicate): - New variables. - (syms_of_fileio): DEFVAR_LISP them. - (read_file_name_cleanup): New unwind function. - (Fread_file_name_internal): Only return completions satifying - Vread_file_name_predicate. Temporarily unwind protect and rebind - default-directory while checking completions against the predicate. - (Fread_file_name): Added PREDICATE argument. Specbind it to - Vread_file_name_predicate during completion. - Call Vread_file_name_function to read the file name if non-nil. - - * lisp.h (Fread_file_name): Now has 6 args. - - * callint.c (Fcall_interactively) <"D">: Supply Qfile_directory_p - predicate for Fread_file_name when reading directory name. - Supply Qnil for predicate in other calls to Fread_file_name. - -2002-05-26 Miles Bader - - * term.c (tty_capable_p): New function. - * dispextern.h (tty_capable_p): New function declaration. - (TTY_CAP_INVERSE, TTY_CAP_UNDERLINE, TTY_CAP_BOLD, TTY_CAP_DIM) - (TTY_CAP_BLINK, TTY_CAP_ALT_CHARSET): New macros. - -2002-05-23 Stefan Monnier - - * fileio.c (read_non_regular, Finsert_file_contents): Use BEG_BYTE. - (Finsert_file_contents, build_annotations): Use XCAR, XCDR. - (Vwrite_region_annotate_functions): Docstring fix. - -2002-05-23 Kim F. Storm - - * xterm.c (x_write_glyphs): Clear phys_cursor_on_p if current - phys_cursor's hpos is overwritten. This is still not completely - correct, as it doesn't really make sense to use hpos at all to - get the cursor glyph (as that is relative to the width of the - characters on the line, which may have changed during the update). - -2002-05-22 Jason Rumney - - * w32fns.c (enumfont_t): Remove tail, make pattern a normal - Lisp_Object. - (enum_font_cb2, enum_font_maybe_add_to_list, w32_list_fonts): - Use modified enumfont_t struct. - - * w32term.h (text_cursor_kinds): New enumeration member HBAR_CURSOR. - - * w32term.c (x_draw_bar_cursor): New argument KIND; callers changed. - Handle the `hbar' cursor type. - (x_display_and_set_cursor): Handle the HBAR_CURSOR case. - - * w32fns.c (Qhbar): New variable. - (x_specified_cursor_type): Use it. - -2002-05-21 Ken Raeburn - - * w32fns.c (enum_font_maybe_add_to_list): Use XCDR_AS_LVALUE for - now, when the address is needed. - -2002-05-21 Colin Walters - - * Makefile.in (shortlisp): Add font-core.el. - -2002-05-20 Richard M. Stallman - - * buffer.c (syms_of_buffer) : Doc fix. - - * keyboard.c (read_char_minibuf_menu_prompt): Don't list - equivalent key bindings here. - -2002-05-20 Ken Raeburn - - Change symbol structure to contain a lisp object for the symbol - name: - * lisp.h (struct Lisp_Symbol): Replace field "name" with a lisp - object field named "xname". - (SYMBOL_NAME): New macro. - * abbrev.c (write_abbrev): Use SYMBOL_NAME instead of XSYMBOL and - name field. - * alloc.c (Fmake_symbol): Set symbol xname field instead of name. - (mark_object, gc_sweep): Use symbol xname field and XSTRING - instead of name field. - * buffer.c (buffer_slot_type_mismatch): Use XSTRING and - SYMBOL_NAME instead of XSYMBOL and name field. - * callint.c (Fcall_interactively): Use XSTRING and SYMBOL_NAME - instead of XSYMBOL and name field. - * charset.c (Fdefine_charset, Fdeclare_equiv_charset): Use XSTRING - and SYMBOL_NAME instead of XSYMBOL and name field. - * coding.c (Fread_coding_system, code_convert_region1) - (code_convert_string1, code_convert_string_norecord) - (Ffind_operation_coding_system): Use SYMBOL_NAME instead of - XSYMBOL and name field. - * data.c (Fkeywordp, Fsymbol_name, store_symval_forwarding) - (Fmake_variable_buffer_local, Fmake_local_variable) - (Fmake_variable_frame_local): Use SYMBOL_NAME and XSTRING instead - of XSYMBOL and name field. - * editfns.c (Fformat): Use SYMBOL_NAME and XSTRING instead of - XSYMBOL and name field. - * emacs.c (shut_down_emacs) [#if 0]: Use SYMBOL_NAME and XSTRING - instead of XSYMBOL and name field. - * eval.c (do_autoload): Use SYMBOL_NAME and XSTRING instead of - XSYMBOL and name field. - * fns.c (Fstring_equal, Fstring_lessp, Frequire, sxhash): - Use SYMBOL_NAME and XSTRING instead of XSYMBOL and name field. - * fontset.c (Fset_fontset_font): Use SYMBOL_NAME and XSTRING - instead of XSYMBOL and name field. - * keyboard.c (echo_char, record_char, parse_modifiers_uncached) - (parse_modifiers, apply_modifiers, Fevent_convert_list) - (parse_solitary_modifier, Fexecute_extended_command): - Use SYMBOL_NAME and XSTRING instead of XSYMBOL and name field. - * keymap.c (silly_event_symbol_error, Fsingle_key_description) - (Fdescribe_buffer_bindings): Use SYMBOL_NAME and XSTRING instead - of XSYMBOL and name field. - (describe_command, describe_translation): Use SYMBOL_NAME and - assignment instead of XSYMBOL and name field and XSETSTRING. - * lread.c (Fintern_soft, oblookup): Use SYMBOL_NAME and XSTRING - instead of XSYMBOL and name field. - (Funintern): Use SYMBOL_NAME and assignment instead of XSYMBOL and - name field and XSETSTRING. - * macfns.c (parse_image_spec): Use SYMBOL_NAME and XSTRING instead - of XSYMBOL and name field. - * minibuf.c (Fread_command, Fread_variable): Use SYMBOL_NAME and - assignment instead of XSYMBOL and name field and XSETSTRING. - * print.c (print_error_message, print_object): Use SYMBOL_NAME and - XSTRING instead of XSYMBOL and name field. - * process.c (set_socket_options, Fsignal_process): Use SYMBOL_NAME - and XSTRING instead of XSYMBOL and name field. - * w32fns.c (parse_image_spec, w32_parse_hot_key): Use SYMBOL_NAME - and XSTRING instead of XSYMBOL and name field. - * xfaces.c (merge_face_vector_with_property): Use SYMBOL_NAME and - XSTRING instead of XSYMBOL and name field. - * xfns.c (parse_image_spec): Use SYMBOL_NAME and XSTRING instead - of XSYMBOL and name field. - * xselect.c (symbol_to_x_atom, x_get_foreign_selection): - Use SYMBOL_NAME and XSTRING instead of XSYMBOL and name field. - -2002-05-19 Ken Raeburn - - * lisp.h (LISP_MAKE_RVALUE): Delete disabled version, making XCAR - and XCDR real rvalues in most configurations. - - * buffer.c (fix_overlays_in_range, fix_overlays_before): - Don't take the address of the cdr part of a cons cell; instead, track - the parent cell and call XSETCDR, or set the variable for the head - of the list if we haven't started down the list yet. - -2002-05-19 Richard M. Stallman - - * doc.c (reread_doc_file): Don't ask for confirmation. - -2002-05-18 Jason Rumney - - * w32fns.c (w32_create_pixmap_from_bitmap_data): New function. - (xbm_load_image): Use it. - (xbm_load): Ditto. - (xbm_read_bitmap_data): Reverted to xfns.c version. - From David Ponce . - -2002-05-17 Eli Zaretskii - - * msdos.c (sig_suspender, sigprocmask): Don't define for DJGPP - 2.02 and later. - -2002-05-16 Juanma Barranquero - - * keyboard.c (Fthis_command_keys, Fthis_command_keys_vector): Fix typo. - -2002-05-15 Stefan Monnier - - * keyboard.c (read_char_x_menu_prompt): Use an equivalent but more - meaningful test. - (read_char_minibuf_menu_prompt): Fix typo. - -2002-05-15 Eli Zaretskii - - * eval.c (Fcommandp): Doc fix. - -2002-05-13 Stefan Monnier - - * keymap.c (keymap_parent): New fun, extracted from Fkeymap_parent. - (Fkeymap_parent, keymap_memberp, fix_submap_inheritance): Use it. - (Fset_keymap_parent): Gcpro a bit more. - (access_keymap): Gcpro around meta_map call and around the main loop. - (get_keyelt): Gcpro when following indirect references. - (copy_keymap_item): New fun, extracted from Fcopy_keymap. - (copy_keymap_1, Fcopy_keymap): Use it. Don't copy the parent map. - (Fdefine_key, Flookup_key): Gcpro before calling get_keymap. - Remove useless ad-hoc remap code. - -2002-05-13 Richard M. Stallman - - * search.c (search_buffer): Give up boyer moore search if inverse - translation change charset_base. - -2002-05-12 Eli Zaretskii - - * coding.c (decode_coding) : If a lone CR - characters is carried over from the previous block of text, adjust - coding->produced to account for the extra character. - -2002-05-11 Andreas Schwab - - * coding.c (intersection): Keep the elements of the returned list - in the same order as in the first list. - -2002-05-11 Kim F. Storm - - * keymap.c (current_minor_maps): Fix resizing of cmm_maps; - only update cmm_size if realloc actually succeeds. - Testing with initial size of 2 elements revealed that using - realloc on GNU/Linux would cause a random trap in xmalloc - later on, so I rewrote the code to use malloc/bcopy/free instead - of realloc. - -2002-05-10 Jason Rumney - - * w32fns.c (enum_font_cb2): Avoid DBCS raster fonts. - -2002-05-10 Eli Zaretskii - - * coding.c (encode_coding_sjis_big5): Enclose bitwise AND in - parens, to ensure correct evaluation order. - -2002-05-10 Kim F. Storm - - * keymap.c (Vemulation_mode_map_alists): New variable. - (syms_of_keymap): DEFVAR_LISP it. - (current_minor_maps): Process keymap alists in that list before - minor-mode-overriding-map-alist and minor-mode-map-alist. - -2002-05-09 Richard M. Stallman - - * search.c (Freplace_match): Doc fix. - -2002-05-09 Kim F. Storm - - * macterm.c (x_draw_image_foreground, x_draw_image_foreground_1): - Enlarge cursor rectangle drawn around image with non-zero relief. - - * w32term.c (x_draw_image_foreground, w32_draw_image_foreground_1): - Enlarge cursor rectangle drawn around image with non-zero relief. - - * xterm.c (x_draw_image_foreground, x_draw_image_foreground_1): - Enlarge cursor rectangle drawn around image with non-zero relief. - -2002-05-07 Eli Zaretskii - - * xselect.c (lisp_data_to_selection_data): Don't set selection - type if comes from the Lisp object's car. If the selection - contains a pure ASCII text, always return QSTRING as its type. - -2002-05-06 Pavel Jan,Am(Bk - - * mac.c (mac-cut-function): Doc fix. - -2002-05-05 Richard M. Stallman - - * s/gnu.h [DOUG_LEA_MALLOC] (REL_ALLOC): Undefine it. - -2002-05-04 Jason Rumney - - * keyboard.c (make_lispy_event) : Set count to 1 - for event-click-count. - - * process.c (init_process): Only add server subfeature if we can - use non-blocking I/O. - -2002-05-04 Andrew Choi - - * macterm.c (XTread_socket): Call WaitNextEvent once instead of - repeatedly. - -2002-05-03 Jason Rumney - - * process.c (Fmake_network_process): Only support server sockets - when we can make them non-blocking. - - * s/ms-w32.h (HAVE_SELECT): Define. - - * w32.h (FILE_NDELAY): New flag. - - * w32.c (sys_getpeername, fcntl): New functions. - (_sys_read_ahead): Temporarily block on non-blocking sockets. - - * w32proc.c: Include sys/file.h. - -2002-05-03 Colin Walters - - * callproc.c (Vgame_score_directory): Renamed to - Vshared_game_score_directory. - -2002-04-30 Richard M. Stallman - - * s/gnu.h [emacs]: Include stdio.h. - (GNU_LIBRARY_PENDING_OUTPUT_COUNT): New definition, conditional. - - * eval.c (do_autoload): Error if called while preparing to dump. - - * fns.c (Frequire): Error if need to load while preparing to dump. - -2002-04-28 Colin Walters - - * callproc.c (Vgame_score_directory) [!HAVE_SHARED_GAME_DIR]: - Default to "~/.emacs.d/games". - -2002-04-29 Stefan Monnier - - * lread.c (openp): Change arg exec_only to predicate. - (build_load_history): Use XCAR/XCDR. - (Flocate_file_internal): New fun. - (syms_of_lread): Defsubr it. - (Fload): Update call to openp. - - * lisp.h (openp): Update prototype. - - * xfns.c (x_create_bitmap_from_file, x_find_image_file): - * w32proc.c (sys_spawnve): - * w32fns.c (x_create_bitmap_from_file, x_find_image_file): - * w32.c (check_windows_init_file): - * sound.c (Fplay_sound_internal): - * process.c (Fstart_process): - * macfns.c (x_create_bitmap_from_file, x_find_image_file): - * mac.c (run_mac_command): - * emacs.c (init_cmdargs): - * callproc.c (Fcall_process): Update call to openp. - - * textprop.c (remove_properties): Don't use XCAR without CONSP. - - * xterm.c (XTread_socket): Disable the Xutf8LookupString code. - -2002-04-29 Pavel Jan,Am(Bk - - * dispextern.h (DEFAULT_TOOL_BAR_BUTTON_MARGIN) - (DEFAULT_TOOL_BAR_BUTTON_RELIEF): Change default values. - -2002-04-28 Richard M. Stallman - - * minibuf.c (Fall_completions, Ftry_completion): New arg to Fcommandp. - - * eval.c (Fcommandp): New arg for_call_interactively. - * lisp.h (Fcommandp): Declare new arg. - -2002-04-28 Jason Rumney - - * w32proc.c (syms_of_w32proc): Get true file attributes by default. - - * w32.c (stat, fstat): Use file index information to generate - inodes for directories where available. - -2002-04-26 Andrew Choi - - * Makefile.in (C_SWITCH_SYSTEM_TEMACS): Add. - [HAVE_CARBON]: Include Mac object files. - - * alloc.c, callproc.c, dispextern.h, dispnew.c, emacs.c, - fontset.c, frame.c, frame.h, keyboard.c, sysdep.c, term.c, - termcap.c, window.c, xdisp.c, xfaces.c: Use macros MAC_OS8, - MAC_OSX, and MAC_OS instead of macintosh. - - * editfns.c [MAC_OS8]: Include stdio.h. - - * emacs.c [MAC_OS8]: Call mac_initialize instead of x_term_init. - - * fontset.c [MAC_OS]: Set Vdefault_fontset to ETL Fixed instead of - Apple Monaco. - - * process.c (QCfamily, QCfilte): Declare extern. - (wait_reading_process_input) [MAC_OSX]: Clear bit for stdin before - calling select. - - * termcap.c [MAC_OSX]: Don't define tgetnum, PC, tputs, and tgetent. - - * tparam.c [MAC_OSX]: Don't define BC and UP. - - * config.in [HAVE_CARBON]: Add. - - * mac.c, macgui.h, macfns.c, macmenu.c, macterm.c, macterm.h: - Move here from mac/src and mac/inc. - - * s/darwin.h, m/powermac.h, unexmacosx.c: New files. - -2002-04-26 Gerd Moellmann - - * xterm.c (x_draw_phys_cursor_glyph): Undo last change. - Compute phys_cursor_width from the x position returned - by x_draw_glyhs, which is cheaper. - (x_display_and_set_cursor): Compute the buffer-local value - of `cursor-in-non-selected-windows' only when needed. - -2002-04-25 Gerd Moellmann - - * xterm.c (x_draw_phys_cursor_glyph): Take into account that a box - cursor on a stretch glyph has a width that depends on - x_stretch_cursor_p. - -2002-04-25 Pavel Jan,Am(Bk - - * abbrev.c (abbrev-start-location): Doc fix. - - * indent.c (Fvertical_motion): Fix last change. - -2002-04-25 Gerd Moellmann - - * indent.c (Fvertical_motion): Move to the start of the line - containing PT before moving up or down. - -2002-04-24 Gerd Moellmann - - * dispnew.c (update_text_area): Set phys_cursor_on_p to 0 in the - case of writing a whole row, more or less analogous to the case of - writing only parts of a row. - - * xterm.c (x_display_and_set_cursor): Set phys_cursor_width to - 0 for NO_CURSOR. - - * xterm.c (notice_overwritten_cursor): Fix an off by 1 error. - -2002-04-23 Colin Walters - - * buffer.c (syms_of_buffer): Doc fix. - -2002-04-23 Gerd Moellmann - - * xterm.c (notice_overwritten_cursor): Handle the special case - of the cursor being in the first blank non-text line at the - end of a window. - - * xterm.c (x_draw_hollow_cursor, x_draw_bar_cursor) - (x_draw_phys_cursor_glyph): Set phys_cursor_width here. - (x_display_and_set_cursor): Don't set phys_cursor_width here, for - bar cursors only, to make phys_cursor_width contain what its name - suggests. - (notice_overwritten_cursor): Consider the cursor image erased if - the output area intersects the cursor image in y-direction. - -2002-04-23 Simon Marshall - - * xfns.c (x_set_mouse_color): Change default for cross_cursor - to XC_hand2. - -2002-04-23 Pavel Jan,Am(Bk - - * xdisp.c: Remove unused global variable `minibuf_prompt_pixel_width'. - -2002-04-22 Kim F. Storm - - * textprop.c (remove_properties): Fixed trap for malformed plist. - -2002-04-22 Richard M. Stallman - - * cmds.c (Fend_of_line): Handle intangible text in mid line. - - * window.c (make_window): Initialize height_fixed_p, - last_cursor_off_p, and p->cursor_off_p slots. - -2002-04-20 Pavel Jan,Am(Bk - - * fns.c (use-dialog-box): Doc fix. - -2002-04-19 Pavel Jan,Am(Bk - - * xterm.c (note_mode_line_or_margin_highlight): Remove unused - variables `row', `i' and `area'. - (XTread_socket) : Pass KeyPress events when in menu to - toolkit library. - -2002-04-19 Stefan Monnier - - * xfaces.c (clear_font_table): Don't free the default font of - a frame even if it's on another display. - (Finternal_set_lisp_face_attribute): Don't use XFRAME on something - that could be Qt. - -2002-04-19 Juanma Barranquero - - * indent.c (Fmove_to_column): Remove unused local variable - `next_boundary_byte'. - (current_column_1): Likewise. - -2002-04-19 Eli Zaretskii - - * msdos.c (Qhbar): New variable. - (syms_of_msdos): Intern and staticpro it. - (IT_set_cursor_type, IT_set_frame_parameters): Handle the `hbar' - cursor type. - -2002-04-19 Dave Lambert - - Theses change implement an underscore-like (`hbar') cursor. - - * xterm.h (text_cursor_kinds): New enumeration member HBAR_CURSOR. - - * xterm.c (x_draw_bar_cursor): New argument KIND; callers changed. - Handle the `hbar' cursor type. - (x_display_and_set_cursor): Handle the HBAR_CURSOR case. - - * xfns.c (Qhbar): New variable. - (syms_of_xfns): Intern and staticpro it. - (x_specified_cursor_type): Handle `hbar' cursor. - - * s/sol2-5.h (bcopy, bzero, bcmp): Define only if HAVE_BCOPY is - not defined. - -2002-04-18 Richard M. Stallman - - * textprop.c (remove_properties): New arg LIST allows scanning - either a list or a plist. - (interval_has_some_properties_list): New function, like - interval_has_some_properties using list instead of plist. - All callers changed. - (Fremove_list_of_text_properties): New function. - (syms_of_textprop): Defsubr it. - -2002-04-17 Eli Zaretskii - - * s/sol2.h (HAVE_LIBKSTAT): Define only if not already defined. - -2002-04-17 Juanma Barranquero - - * indent.c (Fmove_to_column): Remove unused local variable `end_byte'. - -2002-04-17 Eli Zaretskii - - * window.c (coordinates_in_window): Don't report on margin area - if its width is zero. - -2002-04-16 Jason Rumney - - * w32fns.c (Fx_file_dialog): Decode file name before using. - - * w32term.c (construct_drag_n_drop): Likewise. - -2002-04-16 Eli Zaretskii - - * puresize.h (BASE_PURESIZE): Increase to 830000, since we now - store load-history in pure space. - - * s/msdos.h (SYSTEM_PURESIZE_EXTRA): Reduce to 50000. - -2002-04-16 Stefan Monnier - - * xterm.c (Qlatin_1, Qutf_8): New vars. - (syms_of_xterm): Initialize them. - (XTread_socket): Eliminate incorrect optimization that tried to avoid - decoding the output of X*LookupString. - Always use latin-1 to decode the output of XLookupString. - Try Xutf8LookupString if XmbLookupString failed. - - * region-cache.c (new_region_cache): Use BEG. - -2002-04-16 Gerd Moellmann - - * buffer.c (MMAP_ALLOCATED_P): New macro to be set from system - configuration files. - (mmap_enlarge): Enlarge mapped regions only if MMAP_ALLOCATED_P - returns 0. - -2002-04-15 Andreas Schwab - - * config.in: Regenerated using autoheader. - - * m/7300.h, m/acorn.h, m/alliant-2800.h, m/alliant.h, m/alpha.h, - m/altos.h, m/amdahl.h, m/apollo.h, m/arm.h, m/att3b.h, m/aviion.h, - m/celerity.h, m/clipper.h, m/cnvrgnt.h, m/convex.h, m/cydra5.h, - m/delta.h, m/delta88k.h, m/dpx2.h, m/elxsi.h, m/gec63.h, - m/gould.h, m/hp800.h, m/hp9000s300.h, m/i860.h, m/ia64.h, - m/ibmps2-aix.h, m/ibmrs6000.h, m/ibmrt-aix.h, m/ibmrt.h, - m/ibms390.h, m/intel386.h, m/iris4d.h, m/irist.h, m/isi-ov.h, - m/m68k.h, m/macppc.h, m/masscomp.h, m/mg1.h, m/mips-siemens.h, - m/mips.h, m/news-r6.h, m/news.h, m/next.h, m/nh3000.h, m/nh4000.h - m/ns32000.h, m/orion.h, m/pfa50.h, m/plexus.h, m/pmax.h, - m/powerpcle.h, m/pyrmips.h, m/sequent-ptx.h, m/sequent.h, - m/sparc.h, m/sr2k.h, m/symmetry.h, m/tad68k.h, m/tahoe.h, - m/targon31.h, m/tek4300.h, m/tekxd88.h, m/template.h, m/tower32.h, - m/tower32v3.h, m/ustation.h, m/vax.h, m/wicat.h, m/windowsnt.h, - m/xps100.h, s/aix3-2.h, s/aix4-2.h, s/irix4-0.h, s/irix5-0.h, - s/sco5.h, s/unixware.h: Don't set HAVE_ALLOCA, C_ALLOCA and - STACK_DIRECTION, now set by autoconf. - -2002-04-14 Pavel Jan,Am(Bk - - * dispnew.c (marginal_area_string): Sort arguments. - - * dispextern.h (marginal_area_string): Add prototype. - -2002-04-13 Richard M. Stallman - - * fileio.c (Finsert_file_contents): - Don't call temp_output_buffer_setup--do just part, by hand. - - * coding.c (run_pre_post_conversion_on_str): - Don't call temp_output_buffer_setup--do just part, by hand. - - * keyboard.c (command_loop_1): Don't call start_hourglass - or cancel_hourglass when executing a macro. - - * marker.c (count_markers): New function. - - * xdisp.c (display_mode_element): Don't let mode_line_proptrans_alist - grow without limit. Move recently used elements to the front. - -2002-04-13 Eli Zaretskii - - * unexelf.c (unexec) [__sgi]: Undo the change from 2002-01-20. - -2002-04-12 Gerd Moellmann - - * xdisp.c (sync_frame_with_window_matrix_rows): Don't give frame - rows marginal areas. - (Fdump_frame_glyph_matrix) [GLYPH_DEBUG]: New function. - (syms_of_xdisp) [GLYPH_DEBUG]: Defsubr it. - - * dispnew.c (marginal_area_string): Check that glyph row is enabled. - -2002-04-12 Dave Love - - * dispnew.c (marginal_area_string): New. - - * window.c (window_part): Add ON_LEFT_MARGIN, ON_RIGHT_MARGIN. - (Qleft_margin, Qright_margin): Declare. - (coordinates_in_window, (Fcoordinates_in_window_p): Deal with margins. - - * xterm.c (note_mode_line_or_margin_highlight): Renamed from - note_mode_line_highlight and extended. - - * keyboard.c (Qleft_margin, Qright_margin): Declare. - (make_lispy_event): Deal with mouse events in margins. - -2002-04-12 Stefan Monnier - - * msdos.c (dos_rawgetc): Use a single event for HELP_EVENT. - - * keyboard.c (command_loop_1): Turn off transient-mark-mode rather - than deactivating the mark if tmm is set to `lambda'. - (gen_help_event, kbd_buffer_store_help_event, kbd_buffer_get_event): - Use a single event for HELP_EVENT. - (Fexecute_extended_command): Save last_point_position. - -2002-04-12 Pavel Jan,Am(Bk - - * lisp.h (Fpropertize): Add prototype. - - * fns.c (Fy_or_n_p): Use `minibuffer-prompt' face for prompt. - -2002-04-10 Colin Walters - - * config.in: Add HAVE_SHARED_GAME_DIR. - - * callproc.c (Vgame_score_directory): New variable. - (syms_of_callproc) : DEFVAR_LISP. - -2002-04-10 Richard M. Stallman - - * puresize.h (BASE_PURESIZE): Reduce again to avoid big excess. - -2002-04-09 Stefan Monnier - - * minibuf.c (read_minibuf): Use empty_string. - (Ftry_completion): Allow lambda forms and lists of strings for `alist'. - Short-circuit the search as soon as it "failed". - (Fall_completions): Allow lambda forms and lists of strings for alist. - (Fcompleting_read): Set Qminibuffer_completion_confirm to nil - when require_match is nil. - (Ftest_completion): Rename from `test_completion' and export to elisp. - Call the predicate also when alist is a list. - Obey Vcompletion_regexp_list. - (do_completion, Fminibuffer_complete_and_exit): Use it. - (Fassoc_string): Rename from `assoc_for_completion'. - Allow list of strings as well and export to elisp. - -2002-04-08 Stefan Monnier - - * puresize.h (BASE_PURESIZE): Increase to 900KB. - -2002-04-08 Juanma Barranquero - - * w32.c (sys_accept): Don't hide variable `s'. - -2002-04-05 Gerd Moellmann - - * callint.c (Fcall_interactively): Use INTEGERP instead of - NUMBERP for checking Vhistory_length. - -2002-04-05 Pavel Jan,Am(Bk - - * sound.c (Fplay_sound_internal): Renamed from Fplay_sound. - Doc fix to reflect it. - -2002-04-04 Richard M. Stallman - - * xdisp.c (display_mode_element): New arg RISKY. - Disregard text props found or specified within a variable - that isn't marked risky-local-variable. - (Qrisky_local_variable): New variable. - (syms_of_xdisp): Init and staticpro it. - -2002-04-04 Stefan Monnier - - * undo.c (record_point): New fun. - (record_delete, record_insert): Use it. - -2002-04-03 Juanma Barranquero - - * doc.c (Fdocumentation): Add missing parentheses. - (Fdocumentation_property): Likewise. - -2002-04-03 Stefan Monnier - - * doc.c (Fdocumentation, Fdocumentation_property): When the doc - data is 0, just return nil. - -2002-04-03 Eli Zaretskii - - * msdos.c (syms_of_msdos): Fix last change with - mouse_autoselect_window. - -2002-04-03 Pavel Jan,Am(Bk - - * w32term.c, xterm.c, msdos.c: Rename autoselect_window_p to - mouse_autoselect_window. - -2002-04-02 Stefan Monnier - - * keyboard.c (make_lispy_event): Handle unknown keysyms together - with system-specific keysyms. Use it also for unknown function keys. - - * doc.c (reread_doc_file): Return whether reload was attempted. - (Fdocumentation, Fdocumentation_property): Don't try to reload - if the doc is 0 and only ask once. - - * Makefile.in (lisp, shortlisp): Add ucs-tables.elc. - -2002-04-02 Eli Zaretskii - - * keyboard.c (read_char): If the event was Qselect_window, - restore timer_idleness_start_time to its previous value. - - * msdos.c (dos_rawgetc): Generate SELECT_WINDOW_EVENTs when required. - -2002-04-01 Stefan Monnier - - * region-cache.c (new_region_cache): Use BEG. - - * marker.c (buf_charpos_to_bytepos, buf_bytepos_to_charpos): - Use BEG and BEG_BYTE. - - * doc.c (get_doc_string): Return nil if the location is wrong. - (reread_doc_file): New fun. - (Fdocumentation, Fdocumentation_property): - Call it if get_doc_string fails. - (Fsnarf_documentation): Make it work for a dumped Emacs. - - * charset.h (DEC_POS, BUF_DEC_POS): Use BEG_BYTE. - Bound the search with MAX_MULTIBYTE_LENGTH to avoid pathological case. - - * charset.c (Fstring): Allow 0 arguments. - - * xterm.c (XTread_socket): Fix int/Lisp_Object confusion. - - * process.c (DATAGRAM_CONN_P, list_processes_1) - (Fprocess_datagram_address, Fset_process_datagram_address) - (Fset_network_process_options, server_accept_connection): - Fix some int/Lisp_Object confusions (thank you union types). - -2002-04-01 Pavel Jan,Am(Bk - - * msdos.c: Rename x_autoselect_window_p to autoselect_window_p. - - * w32term.c: Likewise. - (note_mouse_movement): Put code for x_autoselect_window_p in #if 0. - - * keyboard.c (Qselect_window): New symbol. - (head_table): Use it. - (keys_of_keyboard): Bound select-window event to handle-select-window. - (kbd_buffer_get_event): Make a Lisp event from SELECT_WINDOW_EVENT. - - * xterm.c: Rename x_autoselect_window_p to autoselect_window_p. - (last_window): New variable. - (XTread_socket): Generate SELECT_WINDOW_EVENTs. - (note_mouse_movement): Remove reimplemented code in #if 0. - (XTread_socket): Generate SELECT_WINDOW_EVENTs only for - Emacs windows. - - * termhooks.h (enum event_kind): New event type `SELECT_WINDOW_EVENT'. - -2002-03-31 Gerd Moellmann - - * xterm.c (x_get_char_face_and_encoding): Add parameter DISPLAY_P. - Callers changed. - -2002-03-30 Richard M. Stallman - - * window.c (window_scroll_pixel_based): Exit the move_it_by_lines - loop whenever it stops making progress. - - * widget.c (set_frame_size): Don't call change_frame_size. - -2002-03-30 Gerd Moellmann - - * dispnew.c (direct_output_for_insert): - Call mark_window_display_accurate. - -2002-03-29 Jason Rumney - - * w32term.c (w32_draw_relief_rect): Fix calculations of line lengths. - -2002-03-29 Eli Zaretskii - - * Makefile.in (lread.o): Depend on coding.h. - - * lread.c (openp, Fload): Encode the file name before passing it - to `stat', `access', and `emacs_open'. - (openp): GCPRO the encoded file name. Don't recompute Lisp - strings unnecessarily. - -2002-03-29 Kim F. Storm - - * fns.c (Flax_plist_put): Doc fix. - -2002-03-28 Miles Bader - - * process.c (DATAGRAM_CONN_P): Make sure PROC is really a process. - -2002-03-27 Pavel Jan,Am(Bk - - * process.c (set-network-process-options): Add usage. - (make-network-process): Doc fix. - -2002-03-26 Eli Zaretskii - - * emacs.c (Fdump_emacs): Fix a typo in "command-line-processed". - -2002-03-26 Richard M. Stallman - - * fns.c (Fsubstring_no_properties): New function. - (Flax_plist_get, Flax_plist_put): New functions. - (syms_of_fns): defsubr them. - - * xdisp.c (update_menu_bar): Test only update_mode_lines; - don't test or alter w->update_mode_line. - - * window.c (Fdisplay_buffer): Doc fix. - -2002-03-24 Richard M. Stallman - - * regex.c (GET_UNSIGNED_NUMBER): Give proper error for spaces. - -2002-03-24 Gerd Moellmann - - * eval.c (Qdeclare, Vmacro_declaration_function): New variables. - (Fdefmacro): Handle `(declare ...)'. - (syms_of_eval) : Initialize and staticpro. - (syms_of_eval) : DEFVAR_LISP. - -2002-03-24 Jason Rumney - - * w32fns.c (xbm_scan, xbm_load_image, xbm_read_bitmap_data) - (xbm_file_p): Add prototypes. - (xbm_format, xbm_image_p): Sync with xfns.c. - (reflect_byte): New function. - (xbm_read_bitmap_data): Sync with xfns.c, adapt for Windows. - (xbm_load_image): Create bitmaps with a depth of 1. - (init_xfns): Enable XBM images. - -2002-03-23 Jason Rumney - - * w32term.c (w32_handle_tool_bar_click): Detect up and down events - correctly. Do not pass up_modifier to keyboard buffer. - - * w32fns.c [HAVE_IMAGES, HAVE_PBM]: Remove conditionals. - -2002-03-22 Stefan Monnier - - * Makefile.in (bootstrapclean): New target. - (bootstrap-temacs, bootstrap-doc): Remove. - (bootstrap-emacs): Use a bog-standard `temacs'. - Don't bother to build a DOC file. - - * sysdep.c (wait_for_termination): Use sigsuspend rather than sigpause. - - * emacs.c (main): Handle --unibyte, --multibyte, and --no-loadup - in temacs even if !CANNOT_DUMP. - (standard_args): Keep --no-loadup even if !CANNOT_DUMP. - - * alloc.c (check_pure_size): Only output a warning. - -2002-03-22 Jason Rumney - - * w32fns.c (Fx_create_frame): Enable tool-bar when images are - supported. - - * w32term.c (zv_bits): Declare as short, for word alignment. - (w32_read_socket) : Fix last change. - (syms_of_w32term): Define x-use-underline-position-properties. - - * w32fns.c (x_set_cursor_color): Set cursor_gc as well. - (clear_image_cache): Block input, fix logic, clear matrices in - all frames that share this cache. - -2002-03-22 Eli Zaretskii - - * emacs.c (main): Update the Copyright year in the blurb printed - by "emacs --version". - - * xdisp.c (message_with_string): Fix syntax of a call to GCPRO2. - - * xterm.c (XTread_socket): If XK_ISO_Lock and - XK_ISO_Last_Group_Lock are defined, handle keysyms between - XK_ISO_Lock and XK_ISO_Last_Group_Lock similarly to Mode_switch. - -2002-03-21 Kim F. Storm - - * keyboard.c (menu_bar_items): Mostly undo 2002-02-20 patch, so - menu-bar bindings in keymap and local-map properties _are_ used. - But try keymap property first in accordance with 2002-01-03 patch. - Added comment describing why this is not always reliable. - (tool_bar_items): Ditto for tool-bar. - -2002-03-21 Jason Rumney - - * w32fns.c (x_clear_image_1): Disable color table code. - -2002-03-21 Kim F. Storm - - * lisp.h (DEFUN) [USE_NONANSI_DEFUN]: The 2001-10-17 patch - removed the wrong version of the DEFUN macro; fixed it. - - * fns.c (Ffeaturep): Allow subfeature to be a list (test using - Fmember rather than Fmemq). - (Fprovide): Check that subfeatures is a list. - - * process.c (QCfeature, QCdatagram): Removed variables. - (QCtype, Qdatagram): New variables. - (network_process_featurep): Removed function. - (Fmake_network_process): Removed :feature check. - Use :type 'datagram instead of :datagram t to create a datagram - socket. This allows us to add other connection types (e.g. raw - sockets) later in a consistent manner. - (init_process) [subprocess, HAVE_SOCKETS]: Provide list of - supported subfeatures for feature make-network-process. - (syms_of_process) [subprocess]: Remove QCfeature and QCdatagram. - Intern and staticpro QCtype and Qdatagram. - (syms_of_process) [!subprocess]: Intern and staticpro QCtype. - - * xfns.c (QCtype): Remove duplicate declaration and - initialization (is now declared in process.c). - - * w32fns.c (QCtype): Remove duplicate declaration and - initialization (is now declared in process.c). - -2002-03-21 Richard M. Stallman - - * regex.c (DISCARD_FAILURE_REG_OR_COUNT): New macro. - (CHECK_INFINITE_LOOP): Use DISCARD_FAILURE_REG_OR_COUNT - when jumping to `fail' to avoid undoing reg changes in the - last iteration of the loop. - (GET_UNSIGNED_NUMBER): Skip spaces around the number. - - * Makefile.in (dispnew.o, sysdep.o, xdisp.o, xselect.o, alloc.o): - Depend on process.h. - -2002-03-20 Jason Rumney - - Most of the following changes are still conditional on HAVE_IMAGES - which is not set by default on Windows. - - * emacs.c (main) [WINDOWSNT]: Call init_xfns. - - * w32fns.c (x_set_cursor_color): Set foreground of cursor, not frame. - (Fimage_size, Fimage_mask_p, XPutPixel): New functions. - (four_corners_best, x_clear_image_1, x_clear_image) - (x_alloc_image_color, postprocess_image) - (x_create_x_image_and_pixmap, x_destroy_x_image, xbm_load_image) - (x_from_x_colors, x_disable_image, pbm_load): Adapt for Windows. - (init_xfns, syms_of_w32fns): Initialize image functions and constants. - - * w32gui.h (struct XImage): Define. - - * w32term.c (w32_read_socket) : Use XFASTINT to - extract mouse co-ordinates. - -2002-03-20 Jason Rumney - - * w32.c (init_winsock): Dynamically load new server and UDP - socket functions. - (socket_to_fd): New function. - (sys_socket): Use it. - (sys_setsockopt, sys_listen, sys_getsockname, sys_accept) - (sys_recvfrom, sys_sendto): New wrapper functions. - - * process.c (QCfamily, QCfilter): Remove duplicate declaration - and initialization. - - * makefile.w32-in (LIBS): Remove $(WSOCK32). - -2002-03-20 Eli Zaretskii - - * process.c (conv_sockaddr_to_lisp, conv_lisp_to_sockaddr): - Don't use "sun" as a variable, it's a predefined constant on Sun - machines. - -2002-03-20 Pavel Jan,Am(Bk - - * bytecode.c (Fbyte_code): Revert last change. - -2002-03-19 Kim F. Storm - - * makefile.w32-in (LIBS): Add $(WSOCK32). - From David Ponce . - -2002-03-18 Pavel Jan,Am(Bk - - * process.c (wait_reading_process_input): Move variables `pname' - and `pnamelen' down where they are used. - - * bytecode.c (Fbyte_code): Discard unused computed value to - prevent gcc warning. - - * lisp.h (Fplist_member): Add prototype. - -2002-03-18 Kim F. Storm - - * config.in: Add HAVE_SENDTO, HAVE_RECVFROM, HAVE_SETSOCKOPT, - HAVE_GETSOCKOPT, HAVE_GETPEERNAME, HAVE_GETSOCKNAME, and HAVE_SYS_UN_H. - - * process.c: Define HAVE_LOCAL_SOCKETS based on HAVE_SYS_UN_H. - Remove explicit GNU_LINUX settings for datagram support. - -2002-03-18 Pavel Jan,Am(Bk - - * process.c (Fmake_network_process): Remove unused variable `sa'. - Doc fix. Add usage:. - (set_socket_options): Remove unused variables `optnum' and `opttype'. - -2002-03-17 Richard M. Stallman - - * xdisp.c (cursor_type_changed): New variable. - (redisplay_internal): Redisplay all windows if cursor_type_changed. - Clear it when clearing windows_or_buffers_changed. - (try_cursor_movement, redisplay_window, try_window_id) - (try_window_reusing_current_matrix): Test cursor_type_changed - along with windows_or_buffers_changed. - - * window.h (cursor_type_changed): New variable. - - * xfns.c (x_set_cursor_type): Set cursor_type_changed, - not update_mode_lines, and always set it to 1. - - * xdisp.c (clear_garbaged_frames): Don't set windows_or_buffers_changed - if no frames needed redrawing. - -2002-03-17 Kim F. Storm - - The following changes add support for network server processes, - datagram connections, and local (unix) sockets. - - * process.h (struct Lisp_Process): New member log. - Doc fix: Member command used to indicate stopped network process. - Doc fix: Member childp contains plist for network process. - Doc fix: Member kill_without_query is inverse of query-on-exit flag. - - * process.c (Qlocal, QCname, QCbuffer, QChost, QCservice, QCfamily) - (QClocal, QCremote, QCserver, QCdatagram, QCnowait, QCnoquery, QCstop) - (QCcoding, QCoptions, QCfilter, QCsentinel, QClog, QCfeature): New - variables. - (NETCONN1_P): New macro. - (DATAGRAM_SOCKETS): New conditional symbol. - (datagram_address): New array. - (DATAGRAM_CONN_P, DATAGRAM_CHAN_P): New macros. - (status_message): Use concat3. - (Fprocess_status): Add `listen' status to doc string. Return - `stop' for a stopped network process. - (Fset_process_buffer): Update contact plist for network process. - (Fset_process_filter): Ditto. Don't enable input for stopped - network processes. Server must listen, even if filter is t. - (Fset_process_query_on_exit_flag, Fprocess_query_on_exit_flag): - New functions. - (Fprocess_kill_without_query): Removed. Now defined in simple.el. - (Fprocess_contact): Added KEY argument. Handle datagrams. - (list_processes_1): Optionally show only processes with the query - on exit flag set. Dynamically adjust column widths. Omit tty - column if not needed. Report stopped network processes. Identify - server and datagram network processes. - (Flist_processes): New optional arg `query-only'. - (conv_sockaddr_to_lisp, get_lisp_to_sockaddr_size) - (conv_lisp_to_sockaddr, set_socket_options) - (network_process_featurep, unwind_request_sigio): New helper - functions. - (Fprocess_datagram_address, Fset_process_datagram_address): - (Fset_network_process_options): New lisp functions. - (Fopen_network_stream): Removed. Now defined in simple.el. - (Fmake_network_process): New lisp function. Code is based on - previous Fopen_network_stream, but heavily reworked with new - property list based argument list, support for datagrams, server - processes, and local sockets in addition to old client-only - functionality. - (server_accept_connection): New function. - (wait_reading_process_input): Use it to handle incoming connects. - Do not enable input on a new connection if process is stopped. - (read_process_output): Handle datagram sockets. Use 2k buffer for - them. - (send_process): Handle datagram sockets. - (Fstop_process, Fcontinue_process): Apply to network processes. A - stopped network process is indicated by setting command field to t. - (Fprocess_send_eof): No-op if datagram connection. - (Fstatus_notify): Don't read input for a stream server socket or a - stopped network process. - (init_process): Initialize datagram_address array. - (syms_of_process): Intern and staticpro new variables, defsubr new - functions. - -2002-03-16 Jason Rumney - - * w32fns.c (w32_to_all_x_charsets): Return correct type in - startup case. - -2002-03-16 Richard M. Stallman - - * xdisp.c (redisplay_internal, redisplay_windows): - Use list_of_error to call internal_condition_case_1. - (safe_eval, safe_call): Pass Qt to internal_condition_case_{1,2} - so as to catch all errors with no possibility of debugger redisplay. - (list_of_error): New variable. - (syms_of_xdisp): Init and staticpro it. - - * print.c (print_object): Delete `\ ' from printed rep of frame. - -2002-03-15 Eli Zaretskii - - * msdos.c (dos_rawgetc): Disable the x-autoselect-window feature, - until its implementation is fixed. - -2002-03-14 Pavel Jan,Am(Bk - - * xfns.c (png_load): Remove unused variable `gamma_str'. - -2002-03-14 Richard M. Stallman - - * xfns.c (x_real_positions): Handle failure in XQueryTree. - -2002-03-14 Miles Bader - - * intervals.c (adjust_for_invis_intang): New function. - (set_point_both): Use `adjust_for_invis_intang' to do most of the - work for dealing with invisible+intangible regions. Do so before - and after both forward and backward movements, to handle both - front-sticky and rear-sticky cases. - * textprop.c (text_property_stickiness): Function moved here from - `editfns.c'. - * intervals.h (text_property_stickiness): New declaration. - * editfns.c (char_property_eq): Function removed. - (text_property_stickiness): Function moved to `textprop.c'. - -2002-03-13 Jason Rumney - - * config.in: Add STRFTIME_NO_POSIX2. - - * strftime.c (my_strftime) [STRFTIME_NO_POSIX2]: Handle %h, %EX - and %OX when underlying strftime does not. - -2002-03-13 Stefan Monnier - - * xterm.c (x_set_toolkit_scroll_bar_thumb) : - Use a fixed-size thumb (based on an ad-hoc estimate of 30 chars per - line) to avoid annoying flicker. - (xm_scroll_callback): Get rid of the now unnecessary kludge. - (XTread_socket): Mark it static. - - * xdisp.c (display_mode_element): Fix int/Lisp_Object mixup. - -2002-03-13 Kim F. Storm - - * puresize.h (BASE_PURESIZE): Increase to 775000. - -2002-03-12 Juanma Barranquero - - * editfns.c (syms_of_editfns): Fix typo. - -2002-03-12 Gerd Moellmann - - * xsmfns.c: Include stdio.h because termhooks.h needs it. - Include termopt.h for interrupt_input. - -2002-03-11 Andreas Schwab - - * coding.c (syms_of_coding) : Doc fix. - -2002-03-11 Gerd Moellmann - - * xterm.c (note_mouse_movement): Put code for - x_autoselect_window_p in #if 0. - - * lread.c (Fload): Don't assume that message_with_string uses the - string it is given like a C string. - -2002-03-10 Jan Dj,Ad(Brv - - * xterm.h (x_session_check_input, x_session_initialize): Declare. - - * xterm.c (XTread_socket): Add call to x_session_check_input and - x_session_have_connection. - (x_initialize): Add call to x_session_initialize. - - * termhooks.h (enum event_kind): Add save_session_event. - - * keyboard.c: Add Emacs event save_session_event. - - * emacs.c (main): Add call to syms_of_xsmfns. - - * lisp.h (syms_of_xsmfns): Declare extern. - - * config.in: Add HAVE_X_SM. - - * Makefile.in (LIBXT): Add -lSM -lICE - if HAVE_X_SM and not USE_X_TOOLKIT. - (XOBJ): New file xsmfns.c added. - - * xsmfns.c: New file for X session management. - -2002-03-09 Jason Rumney - - * fileio.c (Fcopy_file) [WINDOWS_NT]: Ensure file is not - read-only when setting modified time. - -2002-03-08 Gerd Moellmann - - * xdisp.c (move_it_vertically_backward): At the end of the function, - when moving forward by lines, treat terminal frames specially. - - * keyboard.c (echo_char): Make sure to add a separator between - keys even if echo_dash hasn't been called. - - * xdisp.c: Use new string macros. - (update_echo_area): Pass number of bytes to message3 instead of - number of chars. - (set_message_1): Don't access a string's size_byte directly. - (decode_mode_spec_coding): Use number of bytes of eoltype string - instead number of chars. - - * lisp.h (SREF, SDATA, SCHARS, SBYTES, SMBP): New macros. - -2002-03-08 Juanma Barranquero - - * w32fns.c (Fx_display_color_cells): Force 24+ bit color depths to - 24-bit. - -2002-03-06 Jason Rumney - - * w32term.c (x_draw_hollow_cursor): Draw same size as block cursor. - -2002-03-06 Gerd Moellmann - - * keyboard.c (echo_prompt, echo_char, echo_dash, echo_now) - (cancel_echoing, echo_length, echo_truncate): Changed to - work with new kboard definition. - (echo_now): Use message3_nolog instead of message2_nolog. - - * alloc.c (mark_kboards): Mark echo_string. - - * keyboard.h (ECHOBUFSIZE): Removed. - (struct kboard): Member echoptr removed, member echobuf renamed - to echo_string. - - * xdisp.c (message_with_string): Use Fformat instead of doprnt and - message3 instead of message2 to display the message using STRING's - text properties. - -2002-03-05 Andreas Schwab - - * xdisp.c (hscroll_margin): Change to EMACS_INT. - -2002-03-05 Per Abrahamsen - - * frame.c (default-frame-alist): Explain that setting it doesn't - affect existing frames. - -2002-03-05 Stefan Monnier - - * indent.c (skip_invisible): Fix my brain fart. - - * dispnew.c (sit_for): Don't wait if executing a kbd macro. - -2002-03-04 Stefan Monnier - - * dosfns.c, dosfns.h, dispnew.c, dispextern.h, commands.h, charset.c, - * alloc.c, abbrev.c, emacs.c, eval.c, keyboard.c, keyboard.h, - * lisp.h, lread.c, sysdep.c, termcap.c, termchar.h, w32term.c, - * window.c, xdisp.c, xselect.c, xterm.c: Change defvar_int definition - and variables to use EMACS_INT instead of just int. - - * buffer.c (syms_of_buffer): Allow non-string `mode-name'. - -2002-03-04 Eli Zaretskii - - * sysdep.c (sys_subshell) [MSDOS]: If PWD is set in the - environment, pass it down with corrected value. - -2002-03-04 Pavel Jan,Am(Bk - - * lread.c (read_filtered_event): Do not call start_hourglass - before returning. - -2002-03-04 Juanma Barranquero - - * w32term.c (x_display_and_set_cursor): Fix typo. - -2002-03-03 Richard M. Stallman - - * fileio.c (Fmake_temp_name): Doc fix. - -2002-03-03 Gary Wong - - * termcap.c [!emacs]: Replace ospeed for building standalone - libtermcap, for binary compatibility. - - * tparam.c [!emacs]: Move #define of bcopy to after string.h. - -2002-03-03 Richard M. Stallman ++ * callint.c (syms_of_callint) : Add reference to ++ history-length in the doc string. + - * xrdb.c (file_p): Rename arg `path' to `filename'. ++2007-12-17 Jason Rumney + - * abbrev.c (Fexpand_abbrev): Increment plist as use count - only if it is an integer. ++ * w32fns.c (w32_wnd_proc) : Cast char to unsigned ++ before passing as wParam. + - * xfns.c (png_load): Set screen_gamma based on f->gamma. - If png_get_sRGB gives an answer, call png_set_gamma - using the default image gamma value. +2007-12-22 Michael Albinus - * lread.c (read1): When reading from a file, default string to - multibyte only if it has some multibyte characters. + * dbusbind.c (xd_retrieve_arg): Handle DBUS_TYPE_BYTE, + DBUS_TYPE_INT16, DBUS_TYPE_UINT16, DBUS_TYPE_INT64, + DBUS_TYPE_UINT64, DBUS_TYPE_DOUBLE and DBUS_TYPE_SIGNATURE. + Return float when DBUS_TYPE_INT32 or DBUS_TYPE_UINT32 do not fit + as number. + (Fdbus_call_method): Fix docstring. - * print.c (print_object): Output multibyte chars 128...255 - using \x even if ! print_escape_multibyte. +2007-12-21 Michael Albinus - * xdisp.c (display_mode_element): Move the places where - bytepos, charpos, this, and lisp_string are set. - Use lisp_string to set bytepos. + * dbusbind.c (XD_BASIC_DBUS_TYPE, XD_DBUS_TYPE_P, XD_NEXT_VALUE): + New macros. + (XD_SYMBOL_TO_DBUS_TYPE): Renamed from + XD_LISP_SYMBOL_TO_DBUS_TYPE. + (XD_OBJECT_TO_DBUS_TYPE): Renamed from + XD_LISP_OBJECT_TO_DBUS_TYPE. Simplify. + (xd_signature): New function. + (xd_append_arg): Compute also signatures. Major rewrite. + (xd_retrieve_arg): Make debug messages friendly. + (Fdbus_call_method, Fdbus_send_signal): Extend docstring. Check + for signatures of arguments. + +2007-12-19 Michael Albinus + + * dbusbind.c (QCdbus_type_byte, QCdbus_type_boolean) + (QCdbus_type_int16, QCdbus_type_uint16, QCdbus_type_int32) + (QCdbus_type_uint32, QCdbus_type_int64, QCdbus_type_uint64) + (QCdbus_type_double, QCdbus_type_string, QCdbus_type_object_path) + (QCdbus_type_signature, QCdbus_type_array, QCdbus_type_variant) + (QCdbus_type_struct, QCdbus_type_dict_entry): New D-Bus type + symbols. + (XD_LISP_SYMBOL_TO_DBUS_TYPE): New macro. + (XD_LISP_OBJECT_TO_DBUS_TYPE): Add compound types. + (xd_retrieve_value): Removed. Functionality included in ... + (xd_append_arg): New function. + (Fdbus_call_method, Fdbus_send_signal): Apply it. + +2007-12-16 Michael Albinus + + * dbusbind.c (top): Include . + (Fdbus_call_method, Fdbus_send_signal): Apply type cast in + dbus_message_new_method_call and dbus_message_new_signal. + (Fdbus_register_signal): Rename unique_name to uname. Check + handler for FUNCTIONP instead of CHECK_SYMBOL. Handle case of + non-existing unique name. Fix typos in matching rule. Return an + object which is useful in Fdbus_unregister_signal. + (Fdbus_unregister_signal): Reimplementation, in order to remove + only the corresponding entry. + (Vdbus_registered_functions_table): Change the order of entries. + Apply these changes in xd_read_message and Fdbus_register_signal. + +2007-12-16 Andreas Schwab + + * fileio.c (Finsert_file_contents): Fix overflow check to not + depend on undefined integer overflow. - * xdisp.c (redisplay_internal): - Call clear_image_cache only if HAVE_WINDOW_SYSTEM. +2007-12-14 Jason Rumney - * xdisp.c (display_mode_element): Merge properties specified with - :propertize onto those that come with the string. + * w32term.c (w32_read_socket): Use MULTIBYTE_CHAR_KEYSTROKE_EVENT + for characters above 127. -2002-03-03 Eli Zaretskii +2007-12-13 Jason Rumney - * xdisp.c (syms_of_xdisp) : Renamed from - automatic-hscrolling. Users changed. - : Renamed from automatic-hscroll-margin. - Users changed. - : Renamed from automatic-hscroll-step. Users changed. + * w32fns.c (w32_wnd_proc, Fw32_reconstruct_hot_key): Range check + before dereferencing array. + (lookup_vk_code): Remove zero comparison. -2002-03-02 Eli Zaretskii +2007-12-14 Michael Albinus - * buffer.c (syms_of_buffer) : Doc fix. + * dbusbind.c (xd_retrieve_value, xd_retrieve_arg) + (Fdbus_call_method, Fdbus_send_signal, xd_read_message): Use + `unsigned int' instead of `uint'. + (xd_read_message, Fdbus_register_signal): Split expressions into + multiple lines before operators "&&" and "||", according to the + GNU Coding Standards. -2002-03-02 Kim F. Storm +2007-12-14 Eli Zaretskii - * window.c (Fminibuffer_selected_window): New function. - (syms_of_window): Defsubr it. + * dispextern.h (WINDOWS_NT): Fix incorrect spelling of WINDOWSNT. -2002-03-01 Kim F. Storm +2007-12-12 Juri Linkov - * window.h (struct window): New member phys_cursor_width. + * buffer.c (Frename_buffer): In interactive spec replace + `read-buffer' with `read-string' that uses `buffer-name-history' + as history, and the current buffer's name as default. - * window.c (make_window, replace_window): Init phys_cursor_width. +2007-12-10 Stefan Monnier - * xterm.c (x_display_and_set_cursor): Blink box cursor using - hollow box cursor. Blink bar cursor using 1 pixel wide bar. + * keyboard.c (Fcommand_execute): Call Qcall_interactively instead of + manipulating the backtrace manually. + (make_lispy_event): Merge the ASCII and MULTIBYTE cases. + (struct backtrace, backtrace_list): Remove. + (command_loop_1): Remove dead var `no_direct'. - * w32term.c (x_display_and_set_cursor): Blink box cursor using - hollow box cursor. Blink bar cursor using 1 pixel wide bar. + * buffer.c (reset_buffer_local_variables): If permanent_too is 0, also + preserve non-built-in buffer-local variables. + (Fkill_all_local_variables): Don't re-create&re-set permanent + buffer-local variables. - * lisp.h (GCPRO6): New macro. +2007-12-09 Juri Linkov - * process.c (Fopen_network_stream): Use GCPRO6. + * buffer.c (Frename_buffer): Change interactive spec from "s" to + Lisp code that uses `read-buffer' with current buffer as default. -2002-03-01 Kim F. Storm +2007-12-08 Michael Albinus - * process.c (Qconnect, Qfailed): New variables. - (syms_of_process): Intern and staticpro them. - (Fprocess_status): Document connect and failed return values. - [NON_BLOCKING_CONNECT]: New conditional. - (connect_wait_mask, num_pending_connects): New variables. - (status_message): Convert Qfailed status. - (Fopen_network_stream): Added support for non-blocking connect. - New optional args: filter, sentinel, non_blocking. Doc updated. - [HAVE_GETADDRINFO, !HAVE_GETADDRINFO]: Merged common code. - (deactivate_process): Handle pending non-blocking connect. - (wait_reading_process_input): Poll for status of non-blocking - connects. Exec sentinel directly when connect succeeds. - (status_notify): Don't read process output if not yet connected. + * dbusbind.c (xd_read_message): Generate an event for every + registered handler. There might be several handlers registered + for the same signal. + (Fdbus_register_signal): Don't overwrite a registration for the + same signal. Add a new registration if handlers are different. + (Vdbus_registered_functions_table): Rework doc string. -2002-02-28 Kim F. Storm +2007-12-07 Michael Albinus - * window.c (minibuf_selected_window): Renamed from - Vminibuf_selected_window. Users changed. - (syms_of_window): Staticpro it. + * dbusbind.c (Fdbus_get_unique_name, xd_read_message) + (Fdbus_register_signal): Use DBUS_MAXIMUM_NAME_LENGTH and + DBUS_MAXIMUM_MATCH_RULE_LENGTH for string lengths. + (Fdbus_call_method, Fdbus_send_signal, Fdbus_register_signal): + Unify argument lists. + (xd_read_message, Fdbus_register_signal) Reorder and extend event + arguments and hash table keys. Use unique name for service. + (Fdbus_unregister_signal): Remove checks. + (Vdbus_registered_functions_table): Fix doc string. -2002-02-26 Kim F. Storm +2007-12-05 Magnus Henoch - The following changes add a new Vminibuf_selected_window variable - which is similar to Vminibuf_scroll_window, but which is only set - on entry to the minibuffer (from a non-minibuffer window): + * process.c (make_process): Initialize pty_flag to 0. - * window.c (Vminibuf_selected_window): New variable. - (struct save_window_data): New member minibuf_selected_window. - (Fset_window_configuration): Restore Vminibuf_selected_window. - (Fcurrent_window_configuration): Save Vminibuf_selected_window. - Set minibuf_scroll_window member to nil if minibuf_level is 0. - (compare_window_configurations): Compare minibuf_selected_window. +2007-12-05 Jason Rumney - * window.h (Vminibuf_selected_window): Declare extern. + * image.c (xbm_load) [WINDOWSNT]: Shuffle the bits of directly + specified XBMs. - * minibuf.c (read_minibuf): Set Vminibuf_selected_window on first - entry to minibuffer or on entry from a non-minibuffer window. +2007-12-05 Richard Stallman - * dispextern.h (CURRENT_MODE_LINE_FACE_ID_3): Compare with - Vminibuf_selected_window instead of Vminibuf_scroll_window. + * xdisp.c (syms_of_xdisp) : Doc fix. - * xdisp.c (init_iterator): Compare with Vminibuf_selected_window - instead of Vminibuf_scroll_window when deciding in which window - the region should be highlighted. Consequently, the region remains - highlighteded even when a completion buffer is also displayed. +2007-12-05 YAMAMOTO Mitsuharu -2002-02-26 Eli Zaretskii + * mac.c (cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]: + New variable. + (mac_try_close_socket) [MAC_OSX]: New function. + [MAC_OSX] (sys_select) [SELECT_USE_CFSOCKET]: + Update cfsockets_for_select. Replace invalid CFRunLoop source. - * fileio.c (Fsubstitute_in_file_name): Fix the change from 2002-02-08. + * sysdep.c (emacs_close) [MAC_OSX && HAVE_CARBON]: + Use mac_try_close_socket. - * xselect.c (Qcompound_text_with_extensions): Renamed from - Qcompound_text_no_extensions. - (lisp_data_to_selection_data, syms_of_xselect): Use the new name. +2007-12-05 YAMAMOTO Mitsuharu -2002-02-26 Juanma Barranquero + * unexmacosx.c (unrelocate): New argument BASE. Use it instead of + reloc_base. + (copy_dysymtab): Compute relocation base here. + (rebase_reloc_address) [__ppc64__]: New function. + (copy_dysymtab) [__ppc64__]: Use it if relocation base needs to be + changed. - * w32proc.c (syms_of_ntproc): Doc fix. +2007-12-05 Jason Rumney -2002-02-24 Pavel Jan,Am(Bk + * w32proc.c (sys_spawnve): Quote args with wildcards. - * intervals.h: Include "dispextern.h" unconditionally. +2007-12-05 YAMAMOTO Mitsuharu -2002-02-24 Jason Rumney + * unexmacosx.c (copy_data_segment): Also copy __gcc_except_tab and + __objc_* sections. + (unrelocate) [_LP64]: Set relocation base to address of data segment. - * Makefile.in (WINNT_SUPPORT) [WINDOWSNT]: Add w32-vars.elc - and disp-table.elc. - (lisp): Add emacs-lisp/backquote.elc. +2007-12-05 Michael Albinus -2002-02-24 Kim F. Storm + * dbusbind.c (xd_read_message): Return value is a Lisp_Object. + Move check for Vdbus_registered_functions_table to + xd_read_queued_messages. + (xd_read_queued_messages): Protect xd_read_message calls by + internal_condition_case_1. - * keymap.c (Flookup_key): Fix problem in 2001-12-28 patch: - The validation of the event type was too strict as it didn't - allow string events; buffer names are used in bindings for - menu-bar-select-buffer (see `menu-bar-update-buffers'). +2007-12-04 Michael Albinus -2002-02-23 Kim F. Storm + * dbusbind.c (QCdbus_system_bus, QCdbus_session_bus): Renamed from + Qdbus_system_bus and Qdbus_session_bus, respectively. + (Vdbus_intern_symbols): Removed. + (Vdbus_registered_functions_table): New hash table. + (XD_SYMBOL_INTERN_SYMBOL): Removed. + (xd_read_message, Fdbus_register_signal, Fdbus_unregister_signal): + Rewritten in order to manage registered functions by hash table + Vdbus_registered_functions_table. - The following changes rework my patch of 2002-02-06 which - added command remapping by entering the commands directly into - the keymaps. Now, command remapping uses an explicit `remap' - prefix in the keymaps, i.e. [remap COMMAND]. +2007-12-03 Jan Dj,Ad(Brv - * keymap.c (Qremap, remap_command_vector): New variables. - (is_command_symbol): Remove function. - (Fdefine_key): No longer accept a symbol for KEY. - Added validation of [remap COMMAND] argument for KEY. - The DEF is no longer required to be a symbol when remapping a command. - (Fremap_command): New function to remap command through keymaps. - (Flookup_key): Perform command remapping initiated by - Fremap_command directly for speed. - (Fkey_binding): Use Fremap_command for command remapping. - (where_is_internal): Handle new command remapping representation. - (syms_of_keymap): Intern Qremap, initialize remap_command_vector, - staticpro them. Defsubr Fremap_command. + * xterm.c: Update URL to Window Manager Specification in comment. - * keymap.h (Fremap_command): Declare extern. - (is_command_symbol): Remove extern. +2007-12-02 Michael Albinus - * keyboard.c (command_loop_1): Use Fremap_command for command - remapping; now try command remapping for all symbols. + * config.in (HAVE_DBUS): Add. -2002-02-23 Eli Zaretskii + * Makefile.in: (HAVE_DBUS): Add D-Bus definitions if defined. + (ALL_CFLAGS): Add ${DBUS_CFLAGS}. + (obj): Add $(DBUS_OBJ). + (LIBES): Add $(DBUS_LIBS). + (dbusbind.o): New target. - * coding.h (run_pre_post_conversion_on_str): Add prototype. + * dbusbind.c: New file. -2002-02-23 Jason Rumney + * emacs.c (main): Call syms_of_dbusbind when HAVE_DBUS is defined. - * w32select.c (Fw32_set_clipboard_data): Run pre-write-conversion - on the string before encoding it. - (Fw32_get_clipboard_data): Run post-read-conversion on the string - after decoding it. + * keyboard.c: All D-Bus related code is wrapped by "#ifdef HAVE_DBUS". + (Qdbus_event) New Lisp symbol. + (kbd_buffer_get_event, make_lispy_event): Handle DBUS_EVENT. + (gobble_input): Call xd_read_queued_messages, reading D-Bus + messages. + (keys_of_keyboard ): Define dbus-event. - * w32fns.c (w32_wnd_proc) : Fix last change. + * termhooks.h (event_kind): Add DBUS_EVENT when HAVE_DBUS is defined. -2002-02-23 Pavel Jan,Am(Bk +2007-12-01 Richard Stallman - * w32term.c (enter_timestamp): Remove unused static variable to - prevent warning. + * search.c (syms_of_search) : Doc fix. - * xterm.c (enter_timestamp): Put in #if 0 to prevent warning. +2007-11-30 Jason Rumney -2002-02-23 Eli Zaretskii + * w32console.c (w32con_ins_del_lines, scroll_line): Clip to window. + (w32con_reset_terminal_modes): Clear screen buffer. + (w32_face_attributes): Don't use color indexes that are out of range. + Only reverse the default colors. - * w16select.c (Fw16_get_clipboard_data): Fix last change. + * xfaces.c (map_tty_color, tty_color_name): Remove special case for + WINDOWSNT. - * xselect.c (selection_data_to_lisp_data): Fix last change. + * w32console.c, w32term.h (vga_stdcolor_name): Remove. -2002-02-22 Jason Rumney +2007-11-29 Jason Rumney - * w32term.h (struct w32_output): New member menu_command_in_progress. + * w32console.c: Leave HAVE_WINDOW_SYSTEM defined. + (w32_face_attributes): Use Vtty_defined_color_alist to determine + if the terminal colors are initialized. + (unspecified_fg, unspecified_bg): Remove unused declarations. - * w32menu.c (menubar_selection_callback): Free the menu and - clear the menu_command_in_progress flag. +2007-11-29 Andreas Schwab - * w32fns.c (mouse_move_timer, mouse_button_timer): Initialize. - (menu_free_timer): New variable. - (MENU_FREE_ID, MENU_FREE_DELAY): New constants. - (w32_wnd_proc) : Handle menu_free_timer. - : Delay before freeing menu. Do nothing if a - menu command is in progress. - : Set the menu_command_in_progress flag. - Kill any menu_free_timer that is running. + * keyboard.c (apply_modifiers): Fix typo. - * w32term.c (w32_text_out): Renamed from W32_TEXTOUT. - Call ExtTextOutA rather than ExtTextOut. +2007-11-29 Richard Stallman -2002-02-22 Eli Zaretskii + * keymap.c (Fcurrent_local_map): Doc fix. - * puresize.h (BASE_PURESIZE): Increase to 755000. +2007-11-28 Petr Salinger (tiny change) -2002-02-22 Eli Zaretskii + * s/gnu-kfreebsd.h: New file. - * w16select.c (Fw16_set_clipboard_data): Run pre-write-conversion - on the string before encoding it. - (Fw16_get_clipboard_data): Run post-read-conversion on the string - after decoding it. +2007-11-28 Stefan Monnier -2002-02-22 Eli Zaretskii + * buffer.c (Fget_buffer_create, Fmake_indirect_buffer): + Don't cast redundantly. - Support for ICCCM Extended Segments in X selections: + * keyboard.c (KEY_TO_CHAR): New macro. + (parse_modifiers, apply_modifiers): Accept integer arguments. + (read_key_sequence): Use them to unify the "shift->unshift" mapping + for chars and symbol keys. + After doing such remapping, apply function-key-map again. - * xselect.c : New variable. - (syms_of_xselect): Intern and staticpro it. - (selection_data_to_lisp_data): Run post-read-conversion on decoded - selection text. - (lisp_data_to_selection_data): If next-selection-coding-system is - compound-text-no-extensions, set the type of selection to be - compound-text. +2007-11-27 Dan Nicolaescu - * xterm.h (x_encode_text): Update prototype. + * Makefile.in (SOME_MACHINE_LISP): Remove VMS files, they are not + compiled anymore. - * xfns.c (x_encode_text): Accept additional arg SELECTIONP; all - callers changed. If SELECTIONP is non-zero, run the - pre-write-conversion function before encoding the selection text. +2007-11-26 Andreas Schwab -2002-02-21 Kim F. Storm + * process.c (list_processes_1): Fix indentation level of the + command column. - * frame.c (syms_of_frame): Change mouse-highlight default to t. +2007-11-23 Andreas Schwab - * keyboard.c (kbd_buffer_get_event) [WINDOWSNT]: - Correct composing of language-change event. + * editfns.c (Fformat): Handle %c specially since it requires the + argument to be of type int. -2002-02-20 Kim F. Storm +2007-11-23 Markus Triska - * keyboard.c (menu_bar_items): Don't include keymap or local-map - bindings at PT when building menu (the menu is not updated often - enough for this to work reliable). - (tool_bar_items): Likewise. - (current_active_maps): Removed unused (and buggy) function. + * emacs.c (main): Call init_editfns before init_process, since + init_process sets Vprocess_connection_type depending on OS release -2002-02-20 Pavel Jan,Am(Bk +2007-11-22 Stefan Monnier - * xfns.c (gif_load): Use correct width and height for GIF images. + * data.c (do_symval_forwarding): Use same code as in find_symbol_value. + (find_symbol_value): Use do_symval_forwarding. -2002-02-19 Eli Zaretskii + * data.c (set_internal): Set the value in the `cons-cell' (for + Buffer_Local_values) not only for frame-local variables. - * floatfns.c (Fatan): Accept an optional second arg and call - atan2 if passed 2 args. +2007-11-22 Andreas Schwab -2002-02-18 Jason Rumney + * data.c (Fnumber_to_string): Add cast when passing EMACS_INT + values to sprintf. + * keymap.c (Fsingle_key_description): Likewise. + * print.c (print_object): Likewise. - * w32term.c (glyph_rect): Determine the row and glyph more precisely. +2007-11-22 Jan Dj,Ad(Brv -2002-02-17 Jason Rumney + * gtkutil.c (update_frame_tool_bar): Don't call x-gtk-map-stock if + file for image is nil. - * w32term.c (x_autoselect_window_p): New variable. - (syms_of_w32term): DEFVAR_BOOL and initialize it. - (note_mouse_movement): Use it. +2007-11-22 Dan Nicolaescu - * w32fns.c (w32_load_system_font): Never set fonts_changed_p to zero. + * term.c: Include stdarg.h. + (fatal): Implement using varargs. + * lisp.h (fatal): Add argument types. (Restore 2005-09-30 change). - * w32bdf.c (w32_load_bdf_font): Maybe set fonts_changed_p. +2007-11-21 Stefan Monnier - * w32fns.c (Qfullscreen, Qfullwidth, Qfullheight, Qfullboth): - New variables. - (syms_of_w32fns): Intern and staticpro them. - (x_frame_parms) <"fullscreen">: New parameter. - (x_fullscreen_move, x_set_fullscreen): New functions. - (x_set_frame_parameters): Support Qfullscreen. - (x_real_positions): Save x/y_pixels_diff frame params. - (x_figure_window_size): Support full-screen frames. - (Fx_create_frame): Default the fullscreen parameter. + * lisp.h (struct Lisp_Buffer_Objfwd): Add a `slottype' field. + * data.c (store_symval_forwarding): Get type from buffer_objfwd. + Update call to buffer_slot_type_mismatch. + * buffer.h (buffer_local_types, PER_BUFFER_TYPE): Remove. + (buffer_slot_type_mismatch): Update. + * buffer.c (buffer_local_types): Remove. + (buffer_slot_type_mismatch): Get the symbol and type as arguments. + (defvar_per_buffer): Set the type in the buffer_objfwd. - * w32term.c (x_check_fullscreen, x_check_fullscreen_move) - (x_fullscreen_adjust): New functions. - (w32_read_socket) : Don't resize to - fullscreen. Call x_check_fullscreen_move, and set the - want_fullscreen member of output_data.w32 - : Call x_check_fullscreen. +2007-11-21 Jason Rumney - * w32term.h: New enum for FULLSCREEN_* constants. - (struct w32_output): New members want_fullscreen, x_pixels_diff, - y_pixels_diff, x_pixels_outer_diff, and y_pixels_outer_diff. - (x-fullscreen-adjust): New prototype. + * w32bdf.c (w32_init_bdf_font, w32_BDF_to_x_font): + CreateFileMapping returns NULL on failure. -2002-02-17 Kim F. Storm +2007-11-21 Stefan Monnier - * frame.c (Vmouse_highlight): New variable. - (syms_of_frame): DEFVAR_LISP it. + * search.c (Fset_match_data): Remove the `evaporate' feature. + (unwind_set_match_data): Don't use the `evaporate' feature. - * frame.h (Vmouse_highlight): Declare extern. +2007-11-21 Jason Rumney - * xterm.h (struct x_display_info): Add mouse_face_hidden. + * dispnew.c (init_display) [WINDOWSNT]: Hardcode terminal_type. - * xterm.c (disable_mouse_highlight): Removed variable. - (note_mouse_highlight): Don't highlight if Vmouse_highlight is nil. - (show_mouse_face): Don't show highlight if mouse_face_hidden is set. - (XTread_socket): Turn mouse_face_hidden off after mouse movement, - and on after keyboard input. - (x_term_init): Initialize mouse_face_hidden. + * w32console.c (w32con_write_glyphs): Remove unused variables. - * msdos.h (struct display_info): Add mouse_face_hidden. +2007-11-20 Dan Nicolaescu - * msdos.c (disable_mouse_highlight): Removed variable. - (show_mouse_face): Don't show highlight if mouse_face_hidden is set. - (IT_note_mouse_highlight): Don't highlight if Vmouse_highlight is nil. - (internal_terminal_init): Initialize mouse_face_hidden. - (dos_rawgetc): Turn mouse_face_hidden off after mouse movement, - and on after keyboard input. + * macterm.c (mac_term_init): Call add_keyboard_wait_descriptor. - * w32term.h (struct w32_display_info): Add mouse_face_hidden. + * s/darwin.h (MULTI_KBOARD): Remove. - * w32term.c (disable_mouse_highlight): Removed variable. - (note_mouse_highlight): Disable highlight if Vmouse_highlight is nil. - (show_mouse_face): Don't show highlight if mouse_face_hidden is set. - (w32_read_socket): Turn mouse_face_hidden off after mouse movement, - and on after keyboard input. - (w32_initialize_display_info): Initialize mouse_face_hidden. + * macfns.c (x_create_tip_frame, Fx_create_frame) + (x_create_tip_frame): Don't deal with MULTI_KBOARD. -2002-02-16 Eli Zaretskii +2007-11-19 Stefan Monnier - * msdos.c (last_mouse_window): New variable. - (dos_rawgetc): Fix last change--if the mouse is in the same window - as recorded in last_mouse_window, don't select this window. + * buffer.c (Fbuffer_local_value): Remove redundant test. + (swap_out_buffer_local_variables): Swap out binding in `buffer' rather + than in `current-buffer' to match the comment. + Do the swap using swap_in_global_binding. - * Makefile.in (lisp, shortlisp): Use cus-start.elc, not cus-start.el. + * data.c (store_symval_forwarding, set_internal): + * eval.c (specbind): Remove dead code. - * msdos.c (x_autoselect_window_p): New variable. - (syms_of_msdos): Defvar it. - (dos_rawgetc): If x_autoselect_window_p is set, select the window in - which the last mouse movement occured, unless it is already selected. + * coding.c (detect_coding, Fupdate_coding_systems_internal): + * fns.c (Fmd5): Use find_symbol_value rather than SYMBOL_VALUE + Since we do not want to see internal Lisp_*fwd objects here. - * xdisp.c (automatic_hscroll_margin, Vautomatic_hscroll_step): - New variables. - (syms_of_xdisp): DEVFAR them. - (hscroll_window_tree): Use automatic_hscroll_margin and - Vautomatic_hscroll_step to compute the amount of window scrolling. +2007-11-18 Jan Dj,Ad(Brv -2002-02-16 Pavel Jan,Am(Bk + * sysdep.c (init_system_name): Use getaddrinfo if available. - * xterm.c (x-autoselect-window): New variable. - (note_mouse_movement): Use it. + * xterm.c (x_scroll_bar_set_handle, x_scroll_bar_handle_click) + (x_scroll_bar_note_movement): start, end, with, height in struct + scroll_bar are integers and not Lisp_Object, so remove XINT for them. - * keyboard.c: Do not include "systime.h" twice. +2007-11-17 Dan Nicolaescu -2002-02-15 Andreas Schwab + * puresize.h (BASE_PURESIZE): Increase to 1190000. - * puresize.h (PURESIZE_RATIO): Increase to 9/5. +2007-11-16 Stefan Monnier - * alloc.c (NSTATICS): Increase to 1280. + * buffer.h (struct buffer): Move `undo_list' back to before `name'. + This undoes Richard's change of 14-Oct-2002. + + * alloc.c (allocate_other_vector): + * lisp.h (allocate_other_vector): Remove. + + * window.c (struct save_window_data): Move non-lisp data to the end + and make it `int' rather than Lisp_Object. + (Fcurrent_window_configuration): Use ALLOCATE_PSEUDOVECTOR. + Done wrap/unwrap integer values. + (Fset_window_configuration, compare_window_configurations): + Update use of fields to their new types. + + * xterm.h (struct scroll_bar): Only use Lisp_Object for lisp data. + Turn integer fields into `int'. Merge x_window_low and x_window_high. + (SCROLL_BAR_PACK, SCROLL_BAR_UNPACK, SCROLL_BAR_X_WINDOW) + (SET_SCROLL_BAR_X_WINDOW): Remove. + (SCROLL_BAR_X_WIDGET, SET_SCROLL_BAR_X_WIDGET): + Access the new x_window field directly. + * xterm.c (x_scroll_bar_create): Use a pseudovector. + Don't wrap/unwrap integers into Lisp_Objects. + (XTset_vertical_scroll_bar, x_scroll_bar_handle_click) + (x_scroll_bar_report_motion): + Don't wrap/unwrap integers into Lisp_Objects. + (x_term_init): Use SDATA. + (x_window_to_scroll_bar, x_create_toolkit_scroll_bar) + (x_scroll_bar_set_handle, x_scroll_bar_remove) + (XTset_vertical_scroll_bar, x_scroll_bar_expose) + (x_scroll_bar_report_motion, x_scroll_bar_clear): + * xfns.c (x_set_background_color): + * gtkutil.c (xg_create_scroll_bar, xg_set_toolkit_scroll_bar_thumb): + Access the new x_window field directly. + + * alloc.c (ALLOCATE_PSEUDOVECTOR): Move to lisp.h. + (allocate_pseudovector): Make non-static. + + * lisp.h (enum pvec_type): New tag PVEC_OTHER. + (allocate_pseudovector): Declare. + (ALLOCATE_PSEUDOVECTOR): Move from alloc.c -2002-02-15 Kai Gro,A_(Bjohann +2007-11-15 Andreas Schwab - * alloc.c (NSTATICS): Bump to 1026. + * editfns.c (Fformat): Correctly format EMACS_INT values. + Also take precision into account when formatting an integer. - * xterm.c (Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym) - (Vx_super_keysym): New variables. - (syms_of_xterm): DEFVAR_LISP them. - (x_x_to_emacs_modifiers, x_emacs_to_x_modifiers): Use the - variables to determine which keys to use for the various modifiers. + * keyboard.c (Fevent_symbol_parse_modifiers): Fix declaration. -2002-02-13 Kim F. Storm +2007-11-15 Stefan Monnier - * window.c (Vmode_line_in_non_selected_windows): Removed. - (mode_line_in_non_selected_windows): New variable. - (syms_of_window): DEFVAR_BOOL it. + * keyboard.c (Fevent_symbol_parse_modifiers): New function. + (syms_of_keyboard): Defsubr it. - * dispextern.h (CURRENT_MODE_LINE_FACE_ID_3): - Use mode_line_in_non_selected_windows. - (mode_line_in_non_selected_windows): Declare extern. - (Vmode_line_in_non_selected_windows): Removed extern. + * data.c (swap_in_global_binding): Fix longstanding bug where + store_symval_forwarding was not called with the right second argument, + thus causing objfwd-ing from being dropped. -2002-02-13 Richard M. Stallman +2007-11-14 Juanma Barranquero - * keyboard.c (Fthis_command_keys, Fthis_command_keys_vector) - (Fthis_single_command_keys, Fthis_single_command_raw_keys) - (Fclear_this_command_keys): Doc fixes. + * macfns.c (Fx_create_frame, Fx_display_pixel_width) + (Fx_display_pixel_height, Fx_display_planes) + (Fx_display_color_cells, Fx_server_max_request_size) + (Fx_server_vendor, Fx_server_version, Fx_display_backing_store) + (Fx_display_visual_class, Fx_display_save_under): + * w32fns.c (Fx_create_frame, Fx_display_pixel_width) + (Fx_display_pixel_height, Fx_display_planes) + (Fx_display_color_cells, Fx_server_max_request_size) + (Fx_server_vendor, Fx_server_version, Fx_display_screens) + (Fx_display_mm_height, Fx_display_mm_width) + (Fx_display_backing_store, Fx_display_visual_class) + (Fw32_select_font, Fx_display_save_under): + * xfns.c (Fx_create_frame, Fx_display_pixel_width) + (Fx_display_pixel_height, Fx_display_planes) + (Fx_display_color_cells, Fx_server_max_request_size) + (Fx_server_vendor, Fx_server_version, Fx_display_backing_store) + (Fx_display_save_under): Fix typos in docstrings. - * xfaces.c (Finternal_make_lisp_face, Finternal_copy_lisp_face) - (update_face_from_frame_parameter): Increment face_change_count - and windows_or_buffers_changed to force redisplay using changed faces. +2007-11-14 Juanma Barranquero - * xdisp.c (QCpropertize): New variable. - (mode_line_proptrans_alist): New variable. - (display_mode_element): New arg PROPS; all calls changed. - Implement this, for strings. - Handle literal output of strings by sharing the - main-line code for strings, using local var `literal'. - Handle :propertize feature. - (syms_of_xdisp): Initialze and staticpro QCpropertize and - mode_line_proptrans_alist. + * w32fns.c (Fw32_registered_hot_keys): Don't return the nil values + corresponding to deleted entries; they are an implementation detail. + (gray_bitmap_width, gray_bitmap_height, gray_bitmap_bits): + Remove variables. + (w32_pass_extra_mouse_buttons_to_system, w32_strict_fontnames) + (w32_pass_multimedia_buttons_to_system, w32_strict_painting) + (Vw32_charset_info_alist, w32_to_x_color, w32_init_class) + (w32_createscrollbar, w32_createwindow, my_post_msg, w32_get_modifiers) + (w32_grabbed_keys, cancel_all_deferred_msgs): Make static. + (Fw32_define_rgb_color, Fw32_load_color_file) + (syms_of_w32fns) : + Fix typos in docstrings. + (Fx_server_version): Reflow docstring. + (Fw32_shell_execute): Doc fixes. -2002-02-11 Kim F. Storm +2007-11-13 Juanma Barranquero - * window.c (Vmode_line_in_non_selected_windows): New variable. - (syms_of_window): DEFVAR_LISP it. + * w32fns.c (Fw32_register_hot_key): Don't try to register hot key + if w32_parse_hot_key returned nil. - * dispextern.h (CURRENT_MODE_LINE_FACE_ID_3): New macro. - (CURRENT_MODE_LINE_FACE_ID): Use it. - (Vmode_line_in_non_selected_windows): Declare extern. +2007-11-10 Stefan Monnier - * xdisp.c (display_mode_lines): Use CURRENT_MODE_LINE_FACE_ID_3 - to get mode line face. + * xdisp.c (load_overlay_strings): Fix copy&paste typo. -2002-02-11 Eli Zaretskii +2007-11-09 Jason Rumney - * msdos.c (Vx_bitmap_file_path, x_stretch_cursor_p): Remove these - variables; cus-start.el doesn't need them anymore. + * s/ms-w32.c (USE_TOOLKIT_SCROLL_BARS): Define. -2002-02-09 Kim F. Storm + * w32term.c (w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT. - * insdel.c (make_gap_smaller): Preserve BEG_UNCHANGED during gap - reduction. This fixes a display problem where stray newlines were - inserted in the window (corrected by C-l). Clarified code (IMHO). + * keyboard.c (discard_mouse_events, make_lispy_event) [WINDOWSNT]: + Remove W32_SCROLL_BAR_CLICK_EVENT. -2002-02-09 Eli Zaretskii + * termhooks.h (enum event_kind) [WINDOWSNT]: Likewise. + Add MULTIMEDIA_KEY_EVENT. - * dispextern.h (CURRENT_MODE_LINE_FACE_ID): Fix last change. + * keyboard.c (lispy_function_keys) [WINDOWSNT]: Add more keys. + (lispy_multimedia_keys) [WINDOWSNT]: New array. + (make_lispy_event) [WINDOWSNT]: Use it to translate + MULTIMEDIA_KEY_EVENT. - * xdisp.c (display_mode_lines): Fix last change. + * w32term.h (WM_APPCOMMAND): Define if not already. + (GET_APPCOMMAND_LPARAM): Likewise. -2002-02-09 Jason Rumney + * w32term.c (w32_read_socket): Generate MULTIMEDIA_KEY_EVENT from + WM_APPCOMMAND. - * w32fns.c (enum_font_cb2): Don't let charsets unknown to Windows - match each other. - (w32_load_system_font): Prevent Cleartype fonts from loading. - (Fx_show_tip): Ensure tip frames are above other topmost windows. + * w32fns.c (w32_pass_multimedia_buttons_to_system): New user option. + (syms_of_w32fns): Export and initialize it. + (w32_wnd_proc): Pass WM_APPCOMMAND on to w32_read_socket. -2002-02-09 Kim F. Storm +2007-11-09 Chong Yidong - * dispextern.h (CURRENT_MODE_LINE_FACE_ID): New macro. - (CURRENT_MODE_LINE_HEIGHT): Use it. - (enum face_id): Add MODE_LINE_INACTIVE_FACE_ID. + * dispextern.h (struct it): Don't define OVERLAY_STRING_CHUNK_SIZE + twice. - * xdisp.c (window_box_height): Use CURRENT_MODE_LINE_FACE_ID. - (pos_visible_p, handle_face_prop): Likewise. - (display_mode_lines): Likewise, but for the real selected window. - (init_iterator) [row == NULL]: Handle MODE_LINE_INACTIVE_FACE_ID. + * xdisp.c (handle_face_prop): Fix last change. - * xfaces.c (Qmode_line_inactive): New face variable for mode-line - in non-selected windows. - (realize_basic_faces): Realize it. - (syms_of_term): Intern and staticpro it. +2007-11-09 Richard Stallman -2002-02-08 Kim F. Storm + * xdisp.c (handle_face_prop): Test for strings that came from overlays, + not just for after-strings and before-strings. + Call face_for_overlay_string and pass the overlay to it. + (handle_display_prop): Determine whether property came from an overlay. + Pass OVERLAY arg to handle_single_display_spec. + (handle_single_display_spec): New arg OVERLAY sets it->from_overlay. + (load_overlay_strings): Fill in it->string_overlays. + (get_overlay_strings_1, push_it, pop_it): Handle it->from_overlays. - * alloc.c (SETJMP_WILL_LIKELY_WORK, SETJMP_WILL_NOT_WORK): - Changed mail addresses to emacs-devel@gnu.org. + * xfaces.c (face_for_overlay_string): Function renamed from + face_at_buffer_position_no_overlays, and add arg OVERLAY. -2002-02-08 Eli Zaretskii + * dispextern.h (struct it): New elt string_overlays. + New elt from_overlay, also in stack. + Rearrange a few elements. + (face_for_overlay_string): Decl renamed from + face_at_buffer_position_no_overlays, and add argument. - * fileio.c (Fsubstitute_in_file_name): If the file name includes - ~user, and there's no such user, don't discard everything before ~user. +2007-11-09 Richard Stallman - * floatfns.c (Fround): Doc fix. + * xdisp.c (handle_face_prop): Use face_at_buffer_position_no_overlays + to get the base face for an overlay string. -2002-02-08 Pavel Jan,Am(Bk + * dispextern.h (face_at_buffer_position_no_overlays): Add decl. - * sysdep.c (init_system_name): Put unused variable `p' in #if 0. + * xfaces.c (face_at_buffer_position_no_overlays): New function. -2002-02-07 Stefan Monnier + * xdisp.c (handle_stop): Move some code out of loop. - * lisp.h (Fx_file_dialog): Add extern decl (used in fileio.c). +2007-11-09 YAMAMOTO Mitsuharu -2002-02-07 Kim F. Storm + * macfns.c [USE_ATSUI] (Fmac_atsu_font_face_attributes): + Fix conversion from Lisp object to ATSUFontID. - * keymap.c (where_is_internal): Only check whether definition is - remapped if it fulfills is_command_symbol. +2007-11-09 Jason Rumney -2002-02-07 Andreas Schwab + * xdisp.c (Fformat_mode_line): Do nothing when noninteractive. - * s/gnu-linux.h (GC_LISP_OBJECT_ALIGNMENT): Define to 2 for m68k. +2007-11-09 YAMAMOTO Mitsuharu - * alloc.c (mark_stack): Don't assume sizeof (Lisp_Object) is 4. + * unexmacosx.c (unexec_regions_recorder, unexec_regions_merge): + Don't assume regions are aligned to page boundary. + (print_load_command_name): Add LC_UUID if defined. -2002-02-06 Kim F. Storm +2007-11-09 Richard Stallman - * keymap.c (Fdefine_key): Allow symbol as KEY argument for - defining command remapping. Doc updated. - (Flookup_key): Remap command through keymap if KEY is a symbol. - (is_command_symbol): New function. - (Fkey_binding): Use it. New optional argument NO-REMAP. - Doc updated. Callers changed. Perform command remapping via - recursive call unless that arg is non-nil. - (where_is_internal): New argument no_remap. Callers changed. - Call recursively to find original key bindings for a remapped - comand unless that arg is non-nil. - (Fwhere_is_internal): New optional argument NO-REMAP. - Doc updated. Callers changed. Pass arg to where_is_internal. + * emacs.c (syms_of_emacs) : Reflow docstring. - * keymap.h (Fkey_binding, Fwhere_is_internal): Update prototype. - (is_command_symbol): Add prototype. +2007-11-07 Jason Rumney - * keyboard.c (Vthis_original_command): New variable. - (syms_of_keyboard): DEFVAR_LISP it. - (command_loop_1): Set it, and perform command remapping. + * s/windows95.h: Remove. -2002-02-06 Pavel Jan,Am(Bk +2007-11-06 Jan Dj,Ad(Brv - * keyboard.c (recursive_edit_1): Call cancel_hourglass unconditionally. + * gtkutil.c (xg_tool_bar_menu_proxy): Handle GTK_IMAGE_ICON_NAME and + abort with a message on unhandled store_type values. -2002-02-06 Jason Rumney +2007-11-01 Jan Dj,Ad(Brv - * w32term.c (w32_native_per_char_metric): Disable 2002-01-20 change. + * xterm.c, xfns.c, xselect.c, xterm.h, s/msdos.h, s/sco4.h, s/sco5.h: + Remove HAVE_X11R5 and HAVE_X11R4. -2002-02-06 Eli Zaretskii +2007-11-01 Dan Nicolaescu - * charset.c (get_charset_id): Use if-else instead of ?:. + * Makefile.in: Remove references to sunfns.c and sunfns.o. -2002-02-06 Richard M. Stallman +2007-11-01 Johan Bockg,Ae(Brd - * filelock.c (S_ISLNK): Define if not defined. + * macterm.c, w32term.c, xterm.c (x_draw_stretch_glyph_string): + Don't set s->stippled_p here, since it has already been set by + x_set_glyph_string_gc from x_draw_glyph_string. -2002-02-03 Richard M. Stallman +2007-11-01 Dan Nicolaescu - * fileio.c (Fdo_auto_save): Improve "auto save disabled" msg. + * sunfns.c: Remove file - * lread.c (read1): Redesign strategy for force_multibyte and - force_singlebyte. Now is_multibyte records whether read_buffer - is multibyte. Encountering any multibyte character makes it so. + * m/sun386.h: + * m/sun2.h: + * m/sparc.h: Remove Sun windows code. -2002-02-02 Stefan Monnier +2007-10-31 Stefan Monnier - * term.c (term_get_fkeys_1): If `k0' and `k;' are both specified and - with the same sequence, map that sequence to f10 rather than f0. + * keyboard.c (syms_of_keyboard): Initialize the initial_kboard. + (init_keyboard): Set current_kboard's window-system to nil. + (tty_read_avail_input): Typo. + * frame.c (make_initial_frame): Don't initialize the initial_kboard. -2002-02-03 Andreas Schwab +2007-10-31 Dan Nicolaescu - * s/gnu-linux.h: Check for __mc68000__ instead of __m68k__, the - latter never being defined on GNU/Linux. + * s/usg5-4.h: + * s/usg5-3.h: + * s/ptx.h: + * m/is386.h: + * m/ibmps2-aix.h: + * Makefile.in: Remove all mentions of X10 -2002-02-02 Eli Zaretskii + * dispnew.c (syms_of_display): Don't mention version 10. - * xfaces.c (realize_default_face): Don't set the weight and slant of - the default face to Qnormal, unless these attributes are unspecified. +2007-10-28 Juanma Barranquero -2002-02-02 Pavel Jan,Am(Bk + * makefile.w32-in (OBJ1): Remove abbrev.$(O). + ($(BLD)/abbrev.$(O)): Remove. - * keyboard.c (command_loop_1) [HAVE_X_WINDOWS]: - Call cancel_hourglass unconditionally. +2007-10-28 Stefan Monnier - * eval.c (Fsignal): Remove duplicated declaration of - the variable `display_hourglass_p'. + Rewrite abbrev.c in Elisp. + * image.c (Qcount): Don't declare as extern. + (syms_of_image): Initialize and staticpro `Qcount'. + * puresize.h (BASE_PURESIZE): Increase for the new abbrev.el functions. + * emacs.c (main): Don't call syms_of_abbrev. + * Makefile.in (obj): Remove abbrev.o. + (abbrev.o): Remove. + * abbrev.c: Remove. -2002-01-31 Richard M. Stallman +2007-10-26 Martin Rudalics - * editfns.c (region_limit): Nicer error message. + * window.c (window_min_size_2): Don't count header-line. - * coding.c (decode_composition_emacs_mule): - Give up if NCOMPONENT gets too large to index `component'. +2007-10-26 Dan Nicolaescu - * callint.c (check_mark): New arg to specify clearer error message. - Callers changed. + * frame.h (struct frame): Move all bit fields after the first bit + field to take advantage of the available space. Group all the + chars together to reduce wasted space due to padding. -2002-01-27 Richard M. Stallman +2007-10-26 Juanma Barranquero - * minibuf.c (Fcompleting_read): Doc fix. + * minibuf.c (Fread_minibuffer, Feval_minibuffer): Reflow docstrings. -2002-01-27 Pavel Jan,Am(Bk + * alloc.c (spare_memory, stack_copy, stack_copy_size, ignore_warnings) + (Vdead, dont_register_blocks, staticvec, staticidx, interval_block) + (n_interval_blocks, init_strings, check_string_bytes, check_sblock) + (init_float, free_float, n_cons_blocks, init_cons, all_vectors) + (n_vectors, symbol_block, symbol_block_index, symbol_free_list) + (n_symbol_blocks, init_symbol, marker_block, marker_free_list) + (n_marker_blocks, init_marker, valid_pointer_p, make_pure_float) + (last_marked, mark_object_loop_halt): Make static. - * minibuf.c (Fread_from_minibuffer, Fread_command, Fread_function) - (Fread_variable, Fread_buffer, minibuffer-completion-confirm): - Fix doc-strings. + * frame.c (syms_of_frame) : + Fix typo in docstring. -2002-01-26 Richard M. Stallman +2007-10-25 Juanma Barranquero - * buffer.c (syms_of_buffer): Doc fixes for scroll-...-aggressively. + * w32.c (init_environment): Fix tiny memory leak. + (w32_get_resource): Remove unused variable `ok'. - * xdisp.c (try_scrolling): Exchange uses of scroll_down_aggressively - and scroll_up_aggressively. +2007-10-25 Stefan Monnier -2002-01-26 Pavel Jan,Am(Bk + Make `window-system' into a keyboard-local variable (rather than + frame-local as done originally by multi-tty). - * keyboard.c (parse_tool_bar_item): Remove duplicated prototypes. + * keyboard.h (struct kboard): Add Vwindow_system. + * keyboard.c (init_kboard): Set a default for Vwindow_system. + (mark_kboards): Mark Vwindow_system. -2002-01-25 Stefan Monnier + * dispnew.c (syms_of_display) : Declare terminal-local. + (init_display): Don't set the obsolete `window-system' frame-param. - * textprop.c (Fnext_property_change, Fnext_single_property_change) - (Fprevious_property_change, Fprevious_single_property_change): - Stay within the narrowed-buffer boundaries. + * xterm.c (x_term_init): + * w32term.c (w32_create_terminal): + * term.c (init_tty): Set Vwindow_system. + * macterm.c (mac_create_terminal): Set a keyboard (missing piece of the + multi-tty merge maybe?), copied from w32term.c. Set Vwindow_system. -2002-01-25 Eli Zaretskii + * xfns.c (Fx_create_frame, x_create_tip_frame): + * w32fns.c (Fx_create_frame, x_create_tip_frame): + * macfns.c (Fx_create_frame): + Don't set the obsolete `window-system' frame-param. - * term.c (Ftty_display_color_cells): New function. - (syms_of_term): Defsubr it. - (Ftty_display_color_cells, Ftty_display_color_p): Change the - argument name to DISPLAY. Doc fix. + * frame.h (Qwindow_system): Remove. + * frame.c (Qwindow_system): Remove. In `syms_of_frame' as well. + (Fmake_terminal_frame): Don't set obsolete `window-system' frame-param. - * dispextern.h: Add prototype for set_tty_color_mode and - tty_setup_colors. +2007-10-24 Richard Stallman -2002-01-24 Jason Rumney + * frame.c (x_figure_window_size): For fullscreen case, + set USPosition | PPosition without clobbering rest of window_prompting. - * w32term.c (x_scroll_run): Use ScrollWindowEx in place of BitBlt. - If region left to draw is not what was expected, mark the frame as - garbaged. + * keyboard.c (Fcurrent_idle_time): Doc fix. - * w32fns.c (w32_wnd_proc) : Initialize update_rect. - Combine the regions returned by BeginPaint and GetUpdateRect. + * print.c (Fwith_output_to_temp_buffer): Doc fix. -2002-01-23 Jason Rumney +2007-10-23 Stefan Monnier - * w32term.c (x_update_window_begin): Only hide caret if - w32_use_visible_system_caret is set. - (x_update_window_end): Only show caret if - w32_use_visible_system_caret is set. - (syms_of_w32term): Handle SystemParametersInfo call failing. + * process.c (unwind_request_sigio): Only define if __ultrix__. - * w32fns.c (syms_of_w32fns): Initialize w32_visible_system_caret_hwnd. + * callproc.c (child_setup): Remove spurious *. -2002-01-22 Richard M. Stallman + * lisp.h (Fget_text_property): Declare. + (have_menus_p): Declare it here rather than in sys-dep header files. + * macterm.h (have_menus_p): + * msdos.h (have_menus_p): + * xterm.h (have_menus_p): Remove. - * unexelf.c (unexec): Define n so as to cause compilation error - for the code where people have often written n instead of nn. + * data.c (Fmake_variable_buffer_local, Fmake_local_variable) + (Fmake_variable_frame_local): Just check the variable's const-ness + rather than checking nil or t. - * .gdbinit (hookpost-run): Defined. +2007-10-22 Jason Rumney -2002-01-22 Jan Dj,Ad(Brv + * w32fns.c: Include math.h. + (w32_abort): Declaration moved to nt/config.nt. - * xfns.c (x_set_frame_parameters): Typo in previous fix corrected. + * s/ms-w32.h (HAVE_STDLIB_H): Define. + (abort): Redefinition moved to nt/config.nt. -2002-01-21 Jan Dj,Ad(Brv + * m/windowsnt.h: Remove. - * xfns.c (x_set_frame_parameters): Just call x_fullscreen_adjust - if fullscreen is being set. +2007-10-22 Juanma Barranquero -2002-01-21 Pavel Jan,Am(Bk + * emacs.c (Fdump_emacs): Fix typo in message. + (syms_of_emacs) : Fix typo in docstring. + : Reflow docstring. - * minibuf.c (Fminibuffer_contents) - (Fminibuffer_contents_no_properties, Fread_from_minibuffer) - (Fread_string, Fread_no_blanks_input, Fcompleting_read): Doc fixes. +2007-10-22 Juri Linkov -2002-01-21 Richard M. Stallman + * minibuf.c: Allow minibuffer default to be a list of default values. + With empty input use the first element of this list as returned default. + (string_to_object) + (read_minibuf_noninteractive): If defalt is cons, set val to its car. + (read_minibuf): If defalt is cons, set histstring to its car. + (Fread_string): If default_value is cons, set val to its car. + (Fread_buffer): If def is cons, use its car. + (Fcompleting_read): If defalt is cons, set val to its car. - * window.c (check_frame_size): Fix minimum height calculation. +2007-10-21 Michael Albinus -2002-01-20 Ken Raeburn + * fileio.c (Fcopy_file): Call file name handler with preserve_uid_gid. - * dispextern.h (WINDOW_WANTS_MODELINE_P): Use XFASTINT on window - height before comparison. - (WINDOW_WANTS_HEADER_LINE_P): Likewise. +2007-10-20 Juanma Barranquero -2002-01-20 Jason Rumney + * doc.c (Fdocumentation): Check for advice in all cases. - * w32term.c (w32_system_caret_width): Remove. - (w32_use_visible_system_caret): New user flag. - (syms_of_w32term): DEFVAR_BOOL it. Initialize based on whether - Windows reports a screen reader running. - (x_update_window_begin): Hide the system caret. - (x_update_window_end): Show the system caret. - (x_display_and_set_cursor): Don't draw a cursor when - w32_use_visible_system_caret is set. Do not adjust width. +2007-10-19 Chong Yidong - * w32fns.c (w32_visible_system_caret_hwnd): New static variable. - (w32_wnd_proc) : Set it. - : Arrange for system caret to be visible if - the user requests it. Use system default width when creating. - : Handle new messages. + * Makefile.in [HAVE_LIBRESOLV]: Add -lresolv to linker flags. - * w32term.h (WM_EMACS_SHOW_CARET, WM_EMACS_HIDE_CARET): - New window messages. +2007-10-19 Richard Stallman -2002-01-20 Richard M. Stallman + * doc.c (Fdocumentation): Check for and handle an advised function. - * window.c (MIN_SAFE_WINDOW_HEIGHT): Value now 1. +2007-10-19 Juanma Barranquero -2002-01-20 Pavel Jan,Am(Bk + * process.c (Fset_process_filter): Doc fix. - * doprnt.c (doprnt1): Fix typos in error call. +2007-10-18 Stefan Monnier -2002-01-20 Eli Zaretskii + * keyboard.c (read_key_sequence): Undo a change introduced by multi-tty + which caused key-translation-map to applied repeatedly (thus breaking + double-mode). - * unexelf.c (unexec) [__sgi]: Support the .got sections. +2007-10-17 Stefan Monnier -2002-01-20 Jason Rumney + * xselect.c (x_own_selection, x_handle_selection_clear) + (x_clear_frame_selections): + * w32menu.c (list_of_panes, list_of_items): + * w32fns.c (w32_color_map_lookup, Fx_create_frame, Fx_display_list): + * textprop.c (validate_plist, interval_has_all_properties) + (interval_has_some_properties, interval_has_some_properties_list) + (add_properties, text_property_list): + * process.c (Fget_buffer_process, list_processes_1, status_notify): + * minibuf.c (Fassoc_string): + * macselect.c (x_own_selection, x_clear_frame_selections) + (Fx_disown_selection_internal): + * keymap.c (Fcommand_remapping, where_is_internal, describe_map_tree): + Use CONSP rather than !NILP and XC[AD]R rather than Fc[ad]r. - * w32term.c (w32_native_per_char_metric): Don't trust the metrics - that Windows returns. If a double check fails, try to guess how - ExtTextOut is going to act. +2007-10-17 Chong Yidong - * w32fns.c (w32_load_system_font, w32_to_x_charset): Use strnicmp - in place of stricmp. - (w32_list_synthesized_fonts): Removed. - (w32_to_all_x_charsets, enum_font_maybe_add_to_list): New functions. - (struct enumfont_t): New element; list. - (enum_font_cb2): List all style and charset variations of a font. - (Fw32_select_font): New optional argument; include_proportional. - Exclude vertical fonts. Exclude proportional fonts unless - include_proportional is non-nil. - (w32_enable_synthesized_fonts): Change to a boolean. - (Fw32_send_sys_command): Doc fix. + * process.c: Link to libs for calling res_init() if available. + (Fmake_network_process): Call res_init() before getaddrinfo or + gethostbyname, if possible. -2002-01-19 Pavel Jan,Am(Bk +2007-10-17 Stefan Monnier - * dispnew.c (update_frame): Move the variable `tem' to the block - where it is used. + * lread.c (read1): Set pvectype for char_tables. -2002-01-19 Jason Rumney + * lisp.h (XMISCANY, XMARKER, XINTFWD, XBOOLFWD, XOBJFWD, XOVERLAY) + (XBUFFER_OBJFWD, XBUFFER_LOCAL_VALUE, XKBOARD_OBJFWD, XSAVE_VALUE): + Add type checks. + (SOME_BUFFER_LOCAL_VALUEP, GC_SOME_BUFFER_LOCAL_VALUEP): Remove. - * w32fns.c (Fx_create_frame): Bind redisplay-dont-pause around - call to face-set-after-frame-default. + * alloc.c (free_misc): Use XMISCTYPE. + (live_misc_p, gc_sweep): Use Lisp_Misc_Any. -2002-01-18 Richard M. Stallman +2007-10-17 Glenn Morris - * dispextern.h (WINDOW_WANTS_MODELINE_P): Check window height > 1. - (WINDOW_WANTS_HEADER_LINE_P): Check window height provides room. + * minibuf.c (Qcompletion_ignore_case): New Lisp_Object. + (syms_of_minibuf): Add Qcompletion_ignore_case. + * dired.c (Qcompletion_ignore_case): Change to external. + (syms_of_dired) [VMS]: Remove Qcompletion_ignore_case. + * fileio.c (Qcompletion_ignore_case): New external Lisp_Object. + (Fread_file_name): Use it rather than intern'ing. -2002-01-17 Richard M. Stallman + * coding.c (Qcompletion_ignore_case): New external Lisp_Object. + (Fread_coding_system): Ignore case of user input. - * window.c (enlarge_window): When exceeding size of parent, - directly delete all the siblings instead of trying to resize it. +2007-10-16 YAMAMOTO Mitsuharu -2002-01-17 Pavel Jan,Am(Bk + * xdisp.c (handle_display_prop): Ignore display specs after + replacing one when string text is being replaced. + (handle_single_display_spec): Pretend as if characters with display + property haven't been consumed only when buffer text is being replaced. - * term.c (set_tty_color_mode): Remove unused variable `tem'. +2007-10-16 Stefan Monnier + + * xfns.c (Fx_create_frame, Fx_display_list): + * window.c (window_fixed_size_p, enlarge_window) + (shrink_window_lowest_first): + * macterm.c (init_font_name_table): + * macfns.c (Fx_create_frame, Fx_display_list): + * lread.c (close_load_descs): + * keyboard.c (read_char_x_menu_prompt): + * fns.c (Fmember, Fmemql, Fdelete, Fset_char_table_parent): + * coding.c (code_convert_region_unwind): Test the type of an object + rather than just !NILP before extracting data from it. + + * alloc.c (Fpurecopy): Set the pvec tag on pseudo vectors. + + * lisp.h (enum Lisp_Misc_Type): Del Lisp_Misc_Some_Buffer_Local_Value. + (XMISCANY): New macro. + (XMISCTYPE): Use it. + (struct Lisp_Misc_Any): New type. + (union Lisp_Misc): Use it. + (struct Lisp_Buffer_Local_Value): Add `local_if_set' bit. + * data.c (Fboundp, store_symval_forwarding, swap_in_global_binding) + (find_symbol_value, set_internal, default_value, Fset_default) + (Fmake_variable_buffer_local, Fmake_local_variable) + (Fkill_local_variable, Fmake_variable_frame_local, Flocal_variable_p) + (Flocal_variable_if_set_p, Fvariable_binding_locus): + The SOME_BUFFER_LOCAL_VALUEP distinction is replaced by local_if_set. + * alloc.c (allocate_buffer): Set the size and tag. + (allocate_misc, mark_maybe_object, mark_object, survives_gc_p): + Use XMISCANY. + (die): Follow the GNU convention for error messages. + * print.c (print_object): SOME_BUFFER_LOCAL_VALUEP -> local_if_set. + * buffer.c (Fget_buffer_create, Fmake_indirect_buffer): Don't set the + tag any more. + (set_buffer_internal_1): + * frame.c (store_frame_param): + * eval.c (specbind): + * xdisp.c (select_frame_for_redisplay): Drop SOME_BUFFER_LOCAL_VALUEP. -2002-01-16 Henrik Enberg + * doc.c (Fsnarf_documentation): Simplify. - * lread.c (init_lread): Move the installed-lisp dirs later in the path. +2007-10-14 Juanma Barranquero -2002-01-16 Kim F. Storm + * w32term.c (w32_font_is_double_byte, my_create_scrollbar): Make static. + (syms_of_w32term) : Fix typo in docstring. - * xterm.c (x_erase_phys_cursor): Don't erase cursor if cursor row - is invisible. This can happen if cursor is on top line of a - window, and we switch to a buffer with a header line. +2007-10-14 Stefan Monnier - * w32term.c (x_erase_phys_cursor): Ditto. + * buffer.c (Fmake_indirect_buffer): Set the buffer's tag. -2002-01-16 Pavel Jan,Am(Bk +2007-10-14 Juanma Barranquero - * xterm.c (XTread_socket) [!USE_X_TOOLKIT]: Compute the value of - `dont_resize' only when used. + * eval.c (do_autoload): Don't save autoloads. - * xdisp.c: Remove forgotten extern declaration of `Qimage'. + * data.c (Ffset): Save autoload of the function being set. -2002-01-15 Eli Zaretskii +2007-10-07 John Paul Wallington - * xdisp.c (display_mode_element): When computing charpos, depend - on multibyteness of elt, not the text in field. + * xfns.c (x_create_tip_frame): Set the `display-type' frame + parameter before setting up faces. -2002-01-15 Pavel Jan,Am(Bk +2007-10-13 Eli Zaretskii - * buffer.c (Fkill_all_local_variables): - Increment `update_mode_lines' only once. + * ccl.c (Fregister_code_conversion_map): + * keyboard.c (append_tool_bar_item): Reformat last change. -2002-01-14 Pavel Jan,Am(Bk + * lisp.h (eabs): Rename from `abs'. All callers changed. - * lisp.h (adjust_after_replace_noundo) - (Fupdate_coding_systems_internal): Add prototypes. +2007-10-05 Dmitry Antipov - * sound.c (Fplay_sound): Initialize header_size also for :data case. + * buffer.c (add_overlay_mod_hooklist): + * ccl.c (Fregister_ccl_program, Fregister_code_conversion_map): + * fontset.c (make_fontset): + * keyboard.c (GROW_RAW_KEYBUF, menu_bar_items, menu_bar_item) + (append_tool_bar_item): + * macmenu.c (grow_menu_items): + * w32menu.c (grow_menu_items): + * xmenu.c (grow_menu_items): Use larger_vector. -2002-01-14 Eli Zaretskii +2007-10-13 Eli Zaretskii - Support for the --color command-line argument and tty-color-mode - frame parameter: + * msdos.c (dos_rawgetc): Undo last change (there's no ``leaving + selected frame'' on MSDOS). - * term.c (tty_default_color_capabilities, tty_setup_colors) - (set_tty_color_mode): New functions. - (term_init): Call tty_default_color_capabilities. - (Qtty_color_mode_alist): New variable. - (syms_of_term): Intern and staticpro it. +2007-10-12 Martin Rudalics - * frame.c (store_frame_param): Call set_tty_color_mode for termcap - frames. - (do_switch_frame): For termcap frames, switch the tty - color mode as specified by the frame's parameters. - (Qtty_color_mode): New variable. + * frame.c (Qexplicit_name): New variable. + (x_report_frame_params): Report it in parameter alist. (syms_of_frame): Intern and staticpro it. - * emacs.c (USAGE2): Add the --color option. - (standard_args): Ditto. - -2002-01-13 Jan Dj,Ad(Brv +2007-10-10 Patrick Mahan (tiny change) - * xterm.h (struct x_output): New members want_fullscreen, - x_pixels_diff, y_pixels_diff, x_pixels_outer_diff, and - y_pixels_outer_diff. - New enum for FULLSCREEN_* constants. - (FRAME_OUTER_WINDOW): Handle the case where output_data.x->widget - is NULL. - (x_fullscreen_adjust): Add prototype. + * macfns.c (x_create_tip_frame): Set terminal for frame. - * emacs.c (USAGE2): Add the new full-screen arguments. - (standard_args): Ditto. +2007-10-10 Stefan Monnier - * xfns.c (Qfullscreen, Qfullwidth, Qfullheight, Qfullboth): - New variables. - (syms_of_xfns): Intern and staticpro them. - (x_frame_parms) <"fullscreen">: New parameter. - (x_fullscreen_move, x_set_fullscreen): New functions. - (x_set_frame_parameters): Support for Qfullscreen. - (x_real_positions): More accurate computation of the frame position. - (x_figure_window_size): Support full-screen frames. - (Fx_create_frame): Default the fullscreen parameter. + * frame.c (Qenvironment): Remove. + (syms_of_frame) : Don't initialize. + (Fdelete_frame): Don't treat the `environment' param specially. + * frame.h (Qenvironment): Don't declare. + * callproc.c (set_initial_environment): Don't set unused frame param. - * xterm.c (x_check_fullscreen, x_fullscreen_adjust): New functions. - (XTread_socket) : Call x_check_fullscreen. - : Don't resize to fullscreen. - Call x_check_fullscreen_move, and set the want_fullscreen member of - output_data.x. + * frame.c (Fframe_with_environment): Remove. + (syms_of_frame) : Don't declare. -2002-01-13 Jason Rumney + * lisp.h (Fframe_with_environment): Don't declare. - * w32term.h (WM_XBUTTONDOWN, WM_XBUTTONUP): New window messages - for mice with more than 3 buttons. +2007-10-10 Juanma Barranquero - * w32term.c (parse_button): New parameter xbutton. Callers changed. - (w32_read_socket): Handle new "XBUTTON" messages. + * indent.c (indent_tabs_mode, last_known_column) + (last_known_column_modified): Make static. + (syms_of_indent) : Remove redundant info in docstring. - * w32fns.c (w32_pass_extra_mouse_buttons_to_system): New user option. - (syms_of_w32fns): DEFVAR_BOOL it. - (w32_wnd_proc): Handle new "XBUTTON" messages. +2007-10-10 Katsumi Yamaoka -2002-01-13 Pavel Jan,Am(Bk + * puresize.h (BASE_PURESIZE): Increase to 1170000. - * keyboard.c (read_key_sequence): Remove unused variable `extra_maps'. - -2002-01-13 Andreas Schwab - - * xterm.c (x_load_font): Never set fonts_changed_p to zero. - -2002-01-12 Andreas Schwab - - * .gdbinit (xbuffer): Remove address operator since data is now a - pointer. - -2002-01-11 Richard M. Stallman - - * insdel.c (adjust_after_replace_noundo): New function. - - * coding.c (code_convert_region): Don't copy old text if undo disabled. +2007-10-09 Jason Rumney -2002-01-09 Jason Rumney + * w32term.c (x_set_window_size): Disable code that attempts to tell + Lisp code about a size change before it actually happens. - * xdisp.c (x_consider_frame_title): Don't count the tooltip frame - when checking for multiple frames. +2007-10-09 Richard Stallman -2002-01-08 Richard M. Stallman + * xdisp.c (handle_invisible_prop): After setting up an ellipsis, + return HANDLED_RETURN. - * window.c (delete_window): Rewrite the code for changing the - selected window to handle the case where WINDOW is not a leaf. +2007-10-08 Martin Rudalics -2002-01-07 Eli Zaretskii + * keyboard.c (kbd_buffer_get_event): Break loop waiting for input + when there's an unread command event. - * process.c (send_process): Set src_multibyte to 1 after the call - top setup_coding_system, not before the call. + * frame.c (focus_follows_mouse): Move here from frame.el to allow + window autoselection act appropriately when leaving selected frame. + (syms_of_frame): Initialize focus_follows_mouse. + * frame.h (focus_follows_mouse): Extern it. + * macterm.c (XTread_socket): When focus_follows_mouse is nil + make SELECT_WINDOW_EVENT only if we don't leave the selected frame. + * msdos.c (dos_rawgetc): Likewise. + * w32term.c (w32_read_socket): Likewise. + * xterm.c (handle_one_xevent): Likewise. + * xdisp.c (syms_of_xdisp): In doc-string of + mouse-autoselect-window mention focus-follows-mouse. -2002-01-07 Jason Rumney +2007-10-08 YAMAMOTO Mitsuharu - * xmenu.c (set_frame_menubar, xmenu_show): - (xdialog_show): Initialize wv->help to Qnil. + * macterm.c (mac_load_query_font): Fix missing return value. + [USE_CG_DRAWING] (mac_define_fringe_bitmap, mac_destroy_fringe_bitmap): + Add BLOCK_INPUT. - * w32menu.c (single_submenu, set_frame_menubar, w32_menu_show): - (w32_dialog_show): Initialize wv->help to Qnil. +2007-10-08 Richard Stallman -2002-01-06 Jason Rumney + * xdisp.c (get_window_cursor_type): Implement documented behavior + for cursor-in-non-selected-windows = t. - * xmenu.c (single_submenu): Initialize wv->help to Qnil. +2007-10-08 Jason Rumney - * w32menu.c (w32_menu_display_help): Revert last change. + * w32.c (w32_get_resource): Always close registry keys. - * xmenu.c (menu_highlight_callback): Revert last change. +2007-10-08 Jason Rumney -2002-01-06 Andreas Schwab + * makefile.w32-in (LIBS): Add COMCTL32. - * insdel.c (make_gap_larger): Make sure buffer size does not - overflow range of int. + * w32fns.c (globals_of_w32fns): Init common controls. -2002-01-05 Jason Rumney +2007-10-08 Richard Stallman - * w32term.c (x_draw_glyphs): Don't call notice_overwritten_cursor if - OVERLAPS_P. + * image.c (our_memory_buffer): Rename from omfib_buffer. - * w32menu.c (w32_menu_display_help): Hide any tooltip window. +2007-10-08 Richard Stallman - * w32fns.c (compute_tip_xy): If tooltip won't fit on the screen - to the left or to the right of the pointer, put it against - the left screen edge. - (x_frame_parms): Add missing braces around initializer. + * buffer.c (Foverlays_at): Doc fix. - * w32term.c (x_setup_relief_colors): Don't compute an image's - background color if it doesn't have a Pixmap. - (notice_overwritten_cursor): Don't depend on - output_cursor and updated_area. Compare pixel coordinates with - window's cursor pixel coordinates. - (x_draw_glyphs, x_clear_end_of_line, show_mouse_face): - Call notice_overwritten_cursor with new arg list. - (show_mouse_face): Fix bug setting a row's mouse_face_p flag - unconditionally. - (x_draw_image_relief): Use predefined macro instead of - constant when the value of `tool_bar_button_relief' is negative. +2007-10-08 Stefan Monnier - * w32term.c (x_display_and_set_cursor): Fix PostMessage arg types. + * fns.c (Fplist_put): Preserve uneven tail data. -2002-01-04 Richard M. Stallman +2007-10-08 Peter O'Gorman (tiny change) - * xmenu.c (menu_highlight_callback): Hide any tooltip window. + * termhooks.h (enum event_kind): Remove trailing comma. -2002-01-03 Richard M. Stallman + * frame.h (enum): Remove trailing comma. - * keymap.c (Fcurrent_active_maps): Put the `keymap' property map first. - (Fkey_binding): Try the `keymap' property map first. - (Fdescribe_buffer_bindings): Show `keymap' property bindings before - minor mode bindings. +2007-10-08 Dhuvra Krishnamurthy (tiny change) -2002-01-03 Kim F. Storm + * w32proc.c (delete_child): Don't terminate threads of zombies. - * keyboard.c (read_key_sequence): Fix cast of submaps arg to bcopy. +2007-10-08 Martin Rudalics -2002-01-02 Richard M. Stallman + * keyboard.h (struct kboard): New elt Vlast_repeatable_command. - * keyboard.c (read_key_sequence): Handle the keymap property - before minor mode maps. + * keyboard.c (syms_of_keyboard): Set up new Lisp variable + last-repeatable-command. + (init_kboard): Initialize Vlast_repeatable_command. + (command_loop_1): Set it to real_this_command unless that was + bound to an input event. + (mark_kboards): Mark it. - * editfns.c (Fformat): Update thissize from field_width - based on the actual width, in the string case. +2007-10-08 Richard Stallman -2002-01-01 Pavel Jan,Am(Bk + * eval.c (condition-case): Doc fix. - * charset.h (UNIBYTE_STR_AS_MULTIBYTE_P): Parenthesize assignment - when used as truth value to prevent gcc warnings. +2007-10-08 Masatake YAMATO - * sysdep.c, unexapollo.c, w32.c, w32bdf.c, w32heap.c, w32inevt.c, - * w32proc.c: Include . + * xfaces.c (tty_supports_face_attributes_p): Fix code + for LFACE_INVERSE_INDEX and LFACE_BACKGROUND_INDEX; code + was copied and not edited. -2002-01-01 Andreas Schwab +2007-10-09 Stefan Monnier + + Add new `input-decode-map' keymap and use it for terminal + escape sequences. + * keyboard.h (struct kboard): Add Vinput_decode_map. + Remove Vlocal_key_translation_map. + * keyboard.c (read_key_sequence): Add support for input-decode-map. + (init_kboard): Init input-decode-map. + Replace local-key-translation-map back with key-translation-map. + (syms_of_keyboard): Declare input-decode-map. + Remove local-key-translation-map. Update docstrings. + (mark_kboards): Mark Vinput_decode_map. + Don't mark Vlocal_key_translation_map. + * keymap.c (Fdescribe_buffer_bindings): Describe input-decode-map. + Replace local-key-translation-map back with key-translation-map. + * term.c (term_get_fkeys_1, CONDITIONAL_REASSIGN): + Bind in input-decode-map rather than function-key-map. + + * lisp.h (XSETPSEUDOVECTOR): Don't set the tag anymore. + This was made redundant by the previous introduction of XSETPVECTYPE. - * eval.c (max_specpdl_size, max_lisp_eval_depth): Define as int, - not EMACS_INT, to make them compatible with DEFVAR_INT. - * lisp.h (max_specpdl_size): Adjust declaration. +2007-10-09 Richard Stallman -2002-01-01 Richard M. Stallman + * image.c (free_bitmap_record): Rename from Free_Bitmap_Record. - * print.c (print_object): Test print_escape_nonascii only for - unibyte strings. - (PRINTPREPARE): Once again bind Qprint_escape_nonascii - when outputting to a multibyte buffer. +2007-09-29 Richard Stallman -2001-12-29 Richard M. Stallman + * eval.c (internal_condition_case_2, internal_condition_case_1) + (internal_condition_case): Reenable abort if x_catching_errors () + to see if that really happens and why. - * print.c (print_object): In multibyte string, use hex escapes. - Use octal only for unibyte strings. - (PRINTPREPARE): Don't ever set Qprint_escape_nonascii. +2007-10-06 Andreas Schwab - * lread.c (read_escape): New arg BYTEREP for reporting whether - escape forces unibyte or multibyte. - (read1): When reading a string, take note of that info. + * fileio.c (Fwrite_region): Ignore EINVAL error from fsync. -2001-12-29 Ken Raeburn +2007-10-04 Juanma Barranquero - * abbrev.c (Fexpand_abbrev): Use NILP instead of implicit zero - comparison to test lisp value returned by Fget. + * image.c (syms_of_image) : Fix typo in docstring. -2001-12-29 Richard M. Stallman +2007-10-03 Stefan Monnier - * lisp.h (max_specpdl_size): Add declaration. + * frame.h (struct frame): Don't try to GC-mark menu_bar_items_used. - * fileio.c (Fdo_auto_save): If NO_MESSAGE, don't call push_message. +2007-10-02 Stefan Monnier - * keymap.c (silly_event_symbol_error): New subrtn, from Fdefine_key. - Handle modifier bits. Correct typo in error message. + * window.h (struct window): + * window.c (struct save_window_data, struct saved_window): + * termhooks.h (struct terminal): + * process.h (struct Lisp_Process): + * frame.h (struct frame): + * buffer.h (struct buffer): + * lisp.h (struct Lisp_Vector, struct Lisp_Char_Table) + (struct Lisp_Bool_Vector, struct Lisp_Subr, struct Lisp_Hash_Table): + The size field of (pseudo)vectors is now unsigned. + (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG): Simplify accordingly. -2001-12-28 Richard M. Stallman + * lisp.h (struct Lisp_Hash_Table): Move non-traced elements at the end. + Turn `count' into an integer. - * abbrev.c: Use the plist of an abbrev for multiple params if nec. - (Fdefine_abbrev): New arg SYSTEM-FLAG for a system abbrev. - (Fdefine_global_abbrev, Fdefine_mode_abbrev): - Update calls to Fdefine_abbrev. - (write_abbrev): Update for changed data format. - Don't list "system" abbrevs. - (Fexpand_abbrev): Update use count with new data format. - (describe_abbrev): Update for changed data format. - (Fdefine_abbrev_table): Handle the new SYSTEM-FLAG. + * fns.c (make_hash_table, hash_put, hash_remove, hash_clear) + (sweep_weak_table, sweep_weak_hash_tables, Fhash_table_count): + * print.c (print_object) : `count' is an int. + * alloc.c (allocate_hash_table): Use ALLOCATE_PSEUDOVECTOR. + (mark_object) : Use mark_vectorlike. - * config.in (HAVE_MBSINIT): Add #undef. + * alloc.c (allocate_pseudovector): New fun. + (ALLOCATE_PSEUDOVECTOR): New macro. + (allocate_window, allocate_terminal, allocate_frame) + (allocate_process): Use it. + (mark_vectorlike): New function. + (mark_object) : Use it. + (mark_terminals): Use it. + (Fmake_bool_vector, Fmake_char_table, make_sub_char_table) + (Fmake_byte_code): Use XSETPVECTYPE. - * strftime.c (mbsinit): Define as no-op if not available. + * frame.c (Fframe_parameters): Minor simplification. - * s/sco5.h (LIBX11_SYSTEM) [MOTIF]: Add -lgen. - (sigprocmask_set): Conditionalize decl on ! NOT_C_CODE. + * insdel.c (adjust_markers_for_insert): Generalize assertion checks. - * keymap.c (Flookup_key): Error message if key has wrong data type. - (Fdefine_key): Add error message for trying to bind [DEL], [RET], etc. - (exclude_key): New variable. + * marker.c (Fmarker_buffer): Make test for odd case into a failure. -2001-12-28 Gerd Moellmann + * buffer.c (Fget_buffer_create, init_buffer_once): + * lread.c (defsubr): + * window.c (Fcurrent_window_configuration): Use XSETPVECTYPE. - * xterm.c (x_setup_relief_colors): Don't compute an image's - background color if it doesn't have a Pixmap. + * lisp.h (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG): Don't let them be + defined differently in the m/*.h files. + (XCHAR_TABLE, XBOOL_VECTOR): Add assertion checking. + (XSETPVECTYPE): New macro. + (XSETPSEUDOVECTOR): Use it. - * xterm.c (notice_overwritten_cursor): Don't depend on - output_cursor and updated_area. Compare pixel coordinates with - window's cursor pixel coordinates. - (x_draw_glyphs, x_clear_end_of_line, show_mouse_face): - Call notice_overwritten_cursor with new arg list. - (show_mouse_face): Fix bug setting a row's mouse_face_p flag - unconditionally. + * buffer.c (syms_of_buffer) : Move from abbrev.c. + (DEFVAR_PER_BUFFER, defvar_per_buffer): Move from lisp.h and lread.c. - * xdisp.c (try_scrolling) : Add the - height of the cursor line to the amount to scroll. + * lisp.h (defvar_per_buffer, DEFVAR_PER_BUFFER): + * lread.c (defvar_per_buffer): + * abbrev.c (syms_of_abbrev) : Move to buffer.c. -2001-12-27 Richard M. Stallman + * window.c (candidate_window_p): Only consider as visible frames that + are on the same terminal. - * intervals.c (set_point_both): The position after an invisible, - intangible character is not an acceptable stopping point. + * m/ibms390x.h (MARKBIT): Remove unused macro. -2001-12-27 Ken Raeburn +2007-10-01 Juanma Barranquero - * window.c (enlarge_window): In new preserve_before code, convert - CURBEG from lisp object to integer before doing arithmetic. + * lread.c (Fload): Fix typo in docstring. -2001-12-27 Richard M. Stallman +2007-10-01 Micha,Ak(Bl Cadilhac - * bytecode.c (Fbyte_code): Undo previous change. + * floatfns.c (Fexpt): Manually check for overflows, so that a power + of a non-zero value can't yield zero. -2001-12-26 Kim F. Storm +2007-09-29 Stefan Monnier - * keyboard.c (record_char): Ignore duplicate help-echo events only - separated by mouse-movement. When tracking mouse, only record - first and last mouse-movement event in same window. - Don't record mouse-movement events in keyboard macros. + * term.c (term_clear_mouse_face, term_mouse_highlight) + (tty_write_glyphs_with_face): Only define is HAVE_GPM. -2001-12-25 Richard M. Stallman + * print.c (safe_debug_print): Use XHASH. - * window.c (enlarge_window): New arg PRESERVE_BEFORE. Callers changed. - (Fenlarge_window): New arg PRESERVE_BEFORE. + * lisp.h (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of + Lisp elements such as tags. + (XHASH): New macro. + (EQ): Use it. + (SREF, SSET, STRING_COPYIN): Use SDATA. + (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): Remove. - * bytecode.c (Fbyte_code): Use Fstring_make_unibyte - instead of Fstring_as_unibyte. + * alloc.c (mark_terminal): Remove left-over declaration. + (enum mem_type): Replace all vector subtypes -> MEM_TYPE_VECTORLIKE. + (allocate_vectorlike): Remove type argument. Adjust callers. + (live_vector_p, mark_maybe_pointer, valid_lisp_object_p): + Only handle the one remaining MEM_TYPE_VECTORLIKE. -2001-12-22 Pavel Jan,Am(Bk + * alloc.c (MALLOC_BLOCK_INPUT, MALLOC_UNBLOCK_INPUT): New macros + to avoid unnecessary BLOCK_INPUTs when SYNC_INPUT is used. + (xmalloc, xrealloc, xfree, lisp_malloc, lisp_free, lisp_align_malloc) + (lisp_align_free, make_interval, allocate_string, allocate_string_data) + (make_float, Fcons, allocate_vectorlike, Fmake_symbol, allocate_misc): + Use them. - The following changes remove mocklisp support: + * xfaces.c (load_face_font, free_realized_face, clear_face_gcs): + Don't let signal handlers run when a GC is freed but not yet NULL'ed. + (x_free_gc): Remove BLOCK_INPUT since it's now redundant. - * mocklisp.h, mocklisp.c: Files removed. +2007-09-28 Dan Nicolaescu - * lisp.h: Remove declarations of variables `Vmocklisp_arguments', - `Qmocklisp' and `Qmocklisp_arguments'. - Remove prototype of syms_of_mocklisp. + * Makefile.in (lisp, shortlisp): Delete server.elc, it is not + loaded by default. - * makefile.nt, makefile.w32-in, Makefile.in: Remove mocklisp files. +2007-09-28 Stefan Monnier - * callint.c: Do not include mocklisp.h. - (Fcall_interactively): Do not test for mocklisp case. + * term.c (Fgpm_mouse_start): Don't signal an error if already activated + on this tty. + (Fgpm_mouse_stop): Only deactivate if it was activated on this tty. - * eval.c: Remove variables `Qmocklisp_arguments', - `Vmocklisp_arguments' and `Qmocklisp'. Remove prototype of ml_apply. - (Fprogn, Fwhile, Fcommandp, Feval, Ffuncall, funcall_lambda): - Do not test for mocklisp case. - (Fwhile): Remove unused variable `tem'. - (syms_of_eval): Remove variable `moclisp-arguments'. + * term.c (mouse_face_window): Rename from Qmouse_face_window. + Update all users. + (handle_one_term_event): Use Gpm_DrawPointer. + (Fgpm_mouse_start): Rename from Fterm_open_connection. + Signal errors instead of returning nil. Always return nil. + (Fgpm_mouse_stop): Rename from Fterm_close_connection. + Make it a noop if gpm-mouse was not activated. + (syms_of_term): Update names. - * data.c (wrong_type_argument): Remove mocklisp case. +2007-09-27 Stefan Monnier - * doc.c (Fdocumentation): Remove mocklisp case. + * sysdep.c (narrow_foreground_group, widen_foreground_group): Static. + (init_sys_modes): Check that gpm_tty is the current tty. - * emacs.c (main): Do not call syms_of_mocklisp. + * alloc.c (allocate_terminal): Set the vector size to only count the + lisp fields. Initialize those to nil. + (mark_object): Don't treat terminals specially. + (mark_terminal): Remove. + (mark_terminals): Use mark_object instead. -2001-12-21 Richard M. Stallman + * termhooks.h (struct terminal): Move all Lisp_Object fields traced by + the GC to the beginning. - * xfns.c (compute_tip_xy): If tooltip won't fit on the screen - to the left or to the right of the pointer, put it against - the left screen edge. + * indent.h: + * indent.c: Use EMACS_INT for ints coming from Elisp data. -2001-12-21 Eli Zaretskii + * indent.c (Fmove_to_column): Use EMACS_INT for buffer positions. - * Makefile.in (distclean): Remove .gdbinit if we are building - outside the source tree. +2007-09-25 Jason Rumney -2001-12-19 Eli Zaretskii + * frame.c (make_terminal_frame): Remove special case for WINDOWSNT. - * w32.c (emacs_root_dir): New function. + * w32console.c (create_w32cons_output): Remove. - * msdos.c (emacs_root_dir): New function. + * term.c (init_tty): Call init_sys_modes on WINDOWSNT also. - * fileio.c (Fexpand_file_name) [DOS_NT]: Use the root directory - of the current drive as the fallback for default_directory. + * sysdep.c (init_sys_modes): Use set_terminal_modes_hook. + (reset_sys_modes): Use reset_terminal_modes_hook. - * dired.c (file_name_completion): Run the elements of - completion-ignored-extensions through ENCODE_FILE. +2007-09-24 Stefan Monnier - * lisp.h (scmp): Remove prototype, since it's now a static - function private to dired.c. + * eval.c (do_autoload): Don't output any message. -2001-12-18 Richard M. Stallman +2007-09-24 Juri Linkov - * dired.c (scmp): Function moved from minibuf.c. - Delete multibyte handling--used only on encoded strings. + * emacs.c (standard_args): Change priority of "--no-splash" + from 40 to 3. Add "--no-desktop" with the same priority. - * minibuf.c (scmp): Function moved to dired.c. +2007-09-23 Dmitry Antipov - * fns.c (merge): Add QUIT call. + * alloc.c (gc_sweep): Check cons cell mark bits word by word + and optimize the case where they are all 1. -2001-12-18 Dave Love +2007-09-23 Johannes Weiner - * Makefile.in (lisp, shortlisp): Add language/utf-8-lang.el, - language/georgian.el. + * lisp.h (abs): Define if not defined. + * keyboard.c, sound.c, w32term.c, xfaces.c, xterm.c: + Don't define `abs', since it's defined in lisp.h. -2001-12-18 Eli Zaretskii +2007-09-22 Eli Zaretskii - * Makefile.in (lisp, shortlisp): Synchronize with changes to - lisp/Makefile.in:DONTCOMPILE. + * term.c (DEV_TTY): New macro. Provide a definition for MS-Windows. + (FRAME_TERMCAP_P) [WINDOWSNT]: Don't define to zero. + (Fcontrolling_tty_p, Fresume_tty, dissociate_if_controlling_tty) + (init_tty): Use DEV_TTY instead of "/dev/tty". + [WINDOWSNT]: No need to protect from NAME arg being null. -2001-12-18 Pavel Jan,Am(Bk +2007-09-21 Dan Nicolaescu - * xdisp.c (window_box_height): Do not return negative values. - From Gerd Moellmann . + * term.c (Fsuspend_tty): Run suspend-tty-functions before cleaning + up the tty state. - * keyboard.c (head_table): Add missing braces around initializer. +2007-09-21 Stefan Monnier - * term.c (keys): Likewise. + * termhooks.h (term_gpm): Delete. Use gpm_tty's NULLness instead. + (gpm_tty): Change its type. + * term.c (term_gpm): Delete. Use gpm_tty's NULLness instead. + (gpm_tty): Change its type and initialize it. + (Fterm_open_connection): Check the frame is indeed a tty. + Use the new gpm_tty. + (Fterm_close_connection): Use the new gpm_tty. + * keyboard.c (tty_read_avail_input): Use the new gpm_tty. + * sysdep.c (init_sys_modes): term_gpm -> gpm_tty. - * xfns.c (x_frame_parms, visual_classes): Likewise. +2007-09-21 Juanma Barranquero -2001-12-17 Sam Steingold + * w32term.c (x_draw_glyph_string): Use strike_through_color, not + underline_color, to draw strike-through. - * coding.c (DECODE_COMPOSITION_END): Fixed a typo in the last - patch (COMPOSING_P, not COMPOSING). +2007-09-21 Stefan Monnier -2001-12-17 Richard M. Stallman + * lisp.h (allocate_terminal): Declare. - * editfns.c (Fcompare_buffer_substrings): Add QUIT to main loop. + * window.c (candidate_window_p): Consider frames that are being placed + by the user as somewhere between visible and iconified. + (window_loop): Prefer windows on the current frame. + (Fselect_window): Move the use of select-frame to the beginning so we + can just delegate all the work (it'll call us back anyway). - * coding.c (code_convert_region): Update coding->cmp_data->char_offset - before calling decode_coding. + * frame.c (Qdisplay_environment_variable): + * frame.h (Qdisplay_environment_variable): Delete. - * charset.c (Fdefine_charset): Call Fupdate_coding_systems_internal. + * .gdbinit (xbacktrace): Print the arg's address rather than the value + of the first arg, since that value may be a union. - * coding.c (DECODE_COMPOSITION_END): Check for ! COMPOSING_P (coding) - instead of only for COMPOSITION_DISABLED. + * callproc.c (child_setup, getenv_internal): Use the frame's `display' + parameter rather than Qdisplay_environment_variable. If all else + fails, look for DISPLAY in initial-environment. -2001-12-16 Richard M. Stallman +2007-09-21 Glenn Morris - * alloc.c (pure_alloc): After overflow, allocate just a small block. + * Makefile.in (emacstool): Remove target. + (lisp, shortlisp): Remove termdev.elc. - * Makefile.in (xmenu.o, xterm.o, fontset.o): Depend on buffer.h. +2007-09-21 Markus Triska - * buffer.h (struct buffer): New field `display_error_modiff'. - * buffer.c (reset_buffer): Initialize `display_error_modiff'. + * xterm.c (x_delete_display): Compile session management conditionally. - * window.c (Frecenter): Clear display_error_modiff field. +2007-09-20 Stefan Monnier - * xdisp.c (redisplay_window_0, redisplay_window_1): New functions. - Call redisplay_window, but not if display_error_modiff field says no. - (redisplay_window_error): New function. - (displayed_buffer): New variable. - (redisplay_internal, redisplay_windows): Call the new functions - instead of redisplay_window directly. + * callproc.c (getenv_internal_1): New function. + (getenv_internal): Use it. + (Fgetenv_internal): Use it. Accept an env-list as optional arg. -2001-12-15 Richard M. Stallman + * terminal.c (get_terminal): Don't accept ints to represent terminals. + (Fterminal_name, Fterminal_parameters, Fterminal_parameter) + (Fset_terminal_parameter): Work with dead terminals as well. + (Fmodify_terminal_parameters): Remove. - * keyboard.c (syms_of_keyboard) : Doc fix. + * terminal.c (get_terminal): Handle terminals. + Make sure the terminal returned is live. + (create_terminal): Use allocate_terminal. + (mark_terminals): Move to alloc.c. + (delete_terminal): Use terminal->name as liveness status. + NULL out fields after freeing their contents. + Don't deallocate the object. + (Fframe_terminal): Use FRAME_TERMINAL. Return the terminal object + rather than an int. + (Fterminal_live_p): Accept non-integer arguments. + (Fterminal_list): Return terminal objects rather than an ints. -2001-12-14 Andrew Innes + * alloc.c (enum mem_type): New member for `terminal' objects. + (allocate_terminal): New function. + (mark_maybe_pointer, valid_lisp_object_p, mark_object): + Handle terminals. + (mark_terminal): New fun. + (mark_terminals): Move from terminal.c. - * makefile.w32-in (EMACSLOADPATH): Define. - ($(EMACS)): Run `list-load-path-shadows' after dumping Emacs. - (bootstrap-temacs): Remove dependency on bootstrap-clean. + * term.c (get_tty_terminal): Don't treat output_initial specially. + (Fsuspend_tty, Fresume_tty): Use terminal objects rather than ints. + (delete_tty): Use terminal->name as liveness status. -2001-12-13 Eli Zaretskii + * termhooks.h (struct terminal): Make it into a pseudovector. + Remove `deleted' replaced by checking `name's nullness. - * xfns.c (x_report_frame_params): Make the scroll-bar-width frame - parameter have a numeric value all the time. + * print.c (print_object): Handle terminals. - * w32fns.c (x_report_frame_params): Likewise. + * lisp.h (enum pvec_type): New `terminal' pseudovector. + (XTERMINAL, XSETTERMINAL, TERMINALP, GC_TERMINALP): New macros. -2001-12-12 Richard M. Stallman + * frame.c (make_terminal_frame): + * keyboard.c (tty_read_avail_input): + * w32term.c (x_delete_terminal): + * xfns.c (Fx_create_frame, x_create_tip_frame): + * xterm.c (x_delete_terminal): Use terminal->name as liveness status. - * fileio.c (Fwrite_region): Doc fix. +2007-09-20 Glenn Morris - * xdisp.c (CLEAR_FACE_CACHE_COUNT): Redefine as 500. - (redisplay_internal): Call clear_image_cache only for window terminals. + * process.c (Fmake_network_process): Doc fix. -2001-12-12 Gerd Moellmann +2007-09-19 Jason Rumney - * xdisp.c (move_it_vertically_backward): Change heuristic - for the case that we didn't move far enough initially. + * dispextern.h (w32_init_fringe, mac_init_fringe): Declare rif argument. - * window.c (Frecenter): Simplify computation in the case of window - system frames and ARG < 0; use window_box_height. +2007-09-19 Micha,Ak(Bl Cadilhac -2001-12-11 Richard M. Stallman + * coding.c (detect_eol_type, detect_eol_type_in_2_octet_form): + Fix a C warning regarding variable constness. - * Makefile.in, mem-limits.h, dispnew.c, emacs.c, fileio.c: - * process.c, sysdep.c, unexec.c: Test GNU_LINUX, not LINUX. + * xterm.c (handle_one_xevent): Fix a C warning. -2001-12-11 Andrew Innes +2007-09-18 Jason Rumney - * insdel.c (make_gap) [DOUG_LEA_MALLOC]: Call make_gap_smaller if - arg is negative. + * w32fns.c (Fx_focus_frame): Rename from Fw32_focus_frame. -2001-12-11 Richard M. Stallman +2007-09-17 Jan Dj,Ad(Brv - * m/hp800.h: Split the __hpux conditional into the parts - that are right for GNU/Linux too and the parts that are not. - Use the former if GNU_LINUX. - (HAVE_ALLOCA, LOAD_AVE_TYPE, LOAD_AVE_CVT): New defs for GNU/Linux. + * gtkutil.c (gdpy_def): New variable. + (xg_initialize): Initialize gdpy_def. + (xg_display_close): If no other display exists, set gdpy_def to a + new connection. - * s/gnu-linux.h (GNU_LINUX): Defined. +2007-09-16 Jan Dj,Ad(Brv -2001-12-11 Pavel Jan,Am(Bk + * gtkutil.c (xg_get_image_for_pixmap): Always create a GdkPixbuf + when we have no file name for the icon. + (xg_tool_bar_expose_callback): Remove. + (xg_create_tool_bar): Don't connect expose signal to + xg_tool_bar_expose_callback. + (xg_get_file_with_chooser): Move GCPRO1 after declarations. - * macros.c, msdos.c, w16select.c: Change doc-string comments to - `new style' [w/`doc:' keyword]. +2007-09-16 Andreas Schwab -2001-12-10 Jason Rumney + * alloc.c (reset_malloc_hooks): Set the hooks to the previous + values instead of zapping them. - * w32menu.c (w32_free_submenu_strings): Clear menu item struct - before using. +2007-09-14 Glenn Morris -2001-12-09 Pavel Jan,Am(Bk + * fringe.c (init_fringe_bitmap) : Move to file scope. + * gtkutil.c (xg_separator_p) : Move to file scope. + * image.c (our_memory_fill_input_buffer) : Move to file + scope and rename to omfib_buffer for clarity. + (gif_load) : Move to file scope. - * dosfns.c: Change doc-string comments to `new style' [w/`doc:' - keyword]. +2007-09-14 Kenichi Handa -2001-12-09 Eli Zaretskii + * xterm.c (handle_one_xevent): Skip decoding if nbytes is zero. - * dosfns.c (dos-display-scancodes, dos-decimal): Doc fix. +2007-09-13 Jason Rumney - * s/hpux10.h (srand48): Don't undefine. + * fringe.c (w32_init_fringe, mac_init_fringe): Add rif argument. -2001-12-09 Jason Rumney + * w32term.c (w32_term_init): Pass rif to w32_init_fringe. - * w32menu.c (_widget_value): Make `help' field a Lisp_Object. - Add comment to explain where the struct came from. - (single_submenu, w32_menu_show): Set `help' field as Lisp_Object. - (add_menu_item): Process pop-up menus first to avoid memory leak. - (add_menu_item, w32_menu_display_help): Use `help' field as - Lisp_Object. - (w32_free_submenu_strings): Only free owner-drawn strings. + * macterm.c (mac_initialize): Don't call mac_init_fringe here. + (mac_term_init): Call here instead, passing rif. -2001-12-09 Pavel Jan,Am(Bk +2007-09-13 Glenn Morris - * COPYING: Moved back. + * s/hpux.h: No longer define `static' as nothing. - * charset.c (char_to_string_1, translate_char, Fdefine_charset): - Add parentheses around && within ||. +2007-09-13 Johan Bockg,Ae(Brd - * indent.c (compute_motion): Likewise. + * callint.c (Fcall_interactively): Remove unused var `fun'. - * intervals.c (merge_properties_sticky): Likewise. +2007-09-12 Romain Francoise - * coding.c (setup_coding_system, shrink_encoding_region) - (Fdecode_sjis_char): Likewise. + * window.c (prefer_window_split_horizontally, display_buffer): + Revert 2007-09-08 change. -2001-12-07 Andreas Schwab +2007-09-12 Glenn Morris - * xdisp.c (display_mode_element): Don't read past end of string if - it ends with '%'. + * alloca.c: Remove file. + * Makefile.in (alloca): Do not undef. + (allocaobj, alloca.o): Remove. + (otherobj): Remove allocaobj. + * keyboard.c (command_loop_1): Remove #ifdef C_ALLOCA block. + * regex.c (C_ALLOCA): Remove all references and code that was only + used when this was defined. + * search.c (boyer_moore): Remove #ifdef C_ALLOCA block. + * xmenu.c (xmenu_show): Remove #ifdef C_ALLOCA block. + * m/ibms390x.h, m/sh3el.h (C_ALLOCA): Remove references to this. - * alloc.c (inhibit_garbage_collection): Don't exceed value an int - can hold. + * Makefile.in (SOURCES, unlock, relock): Delete. - * data.c (Vmost_positive_fixnum, Vmost_negative_fixnum): - Rename from most_positive_fixnum and most_negative_fixnum, resp., and - type changed to Lisp_Object. - (syms_of_data): DEFVAR_LISP them. + * gtkutil.c (cnt): Rename to menu_grab_callback_cnt for clarity. + (menu_grab_callback): All uses changed. -2001-12-07 Richard M. Stallman + * xselect.c (cnt): Rename to x_reply_selection_request_cnt for clarity. + (x_reply_selection_request): All uses changed. - * callproc.c (init_callproc): Set Vdata_directory based on the source - location whenever Emacs was run uninstalled. +2007-09-11 Stefan Monnier -2001-12-06 Paul Eggert + * lread.c (load_warn_old_style_backquotes): Change message to look + better when it appears in the middle of byte-compiler messages. - * config.in (HAVE_WORKING_VFORK): New #undefs. - * process.c (create_process): - Use HAVE_WORKING_VFORK, not HAVE_VFORK. - * m/cnvrgnt.h (HAVE_VFORK): Remove #define. - * m/ibm370aix.h (HAVE_VFORK): Remove #undef. - * m/ibmps2-aix.h (HAVE_VFORK): Remove #define. - * m/intel386.h (HAVE_VFORK): Likewise. - * m/mips-siemens.h (HAVE_VFORK): Likewise. - * m/mips.h (HAVE_VFORK): Likewise. - * s/freebsd.h (vfork): Remove #define. - * s/lynxos.h (HAVE_VFORK): Remove #undef. - * s/usg5-4-2.h: Fix comment about vfork. +2007-09-10 Dan Nicolaescu -2001-12-06 Richard M. Stallman + * s/darwin.h (MULTI_KBOARD): Only define for Carbon. - * s/hpux10.h (random): Add undef. - (HAVE_RANDOM): Define it just once. + * xterm.c (x_create_terminal): Add comment. -2001-12-06 Stefan Monnier + * term.c (clear_tty_hooks, set_tty_hooks): Add comments. - * eval.c: Undo last change: the standard syntax is not wanted. +2007-09-10 Richard Stallman -2001-12-06 Eli Zaretskii + * xterm.c (x_term_init): Give error if can't open DISPLAY_NAME. - * xterm.c (x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the - scroll bars of the frame before deleting the frame itself. If the - frame has a widget, delete the frame with XtDestroyWidget, and do - not call XDestroyWindow before that. +2007-09-10 Micha,Ak(Bl Cadilhac -2001-12-06 Kim F. Storm + * lisp.h (struct Lisp_Subr): Rename `prompt' field to `intspec'. + (DEFUN): Document `intspec', use it instead of `prompt'. - * xfns.c (x_report_frame_params): Return actual fringe widths. + * eval.c (Fcommandp): Change `->prompt' to `->intspec'. - * w32fns.c (x_report_frame_params): Return actual fringe widths. + * data.c (Finteractive_form): If the interactive specification starts + with a `(', use it as a Lisp form. -2001-12-05 Andrew Innes + * fileio.c (Fset_file_modes): Add an interactive spec that reads a file + name and file modes. - * alloc.c (Fgarbage_collect): Shrink buffer gaps that are - excessively large. + * callint.c (Fcall_interactively): Comment fixes. - * insdel.c (make_gap_larger): New function. - (make_gap_smaller): New function. - (make_gap) [USE_MMAP_FOR_BUFFERS || REL_ALLOC]: - Call make_gap_smaller if arg is negative. +2007-09-10 Stefan Monnier -2001-12-04 Stefan Monnier + * callint.c (Fcall_interactively): Use Finteractive_form also for subrs + and compiled functions. - * keyboard.c (kbd_buffer_store_event): Fix interrupt_signal prototype. - Pass a dummy argument when calling interrupt_signal. - (parse_menu_item): Mark disabled items before checking for empty def. - (read_char_minibuf_menu_prompt): Make safety more visible. - (read_key_sequence): Add a `first_unbound' variable. - Use it to detect C-c ESC ESC ESC ESC ... cases and drop the - unbound prefix as soon as we can detect it. +2007-09-08 Fredrik Axelsson - * doc.c (Fsnarf_documentation): Add prototype. - (get_doc_string): Handle negative arguments. - (Fdocumentation): Use AREF and ASIZE. - Move the calls to get_doc_string to a single place. - Don't confuse an interactive-spec for a docstring reference. - (Fdocumentation_property): Take advantage of the fact that - get_doc_string now ignores the sign of the docstring position. + * window.c (prefer_window_split_horizontally): New variable. + (display_buffer): Consider splitting window horizontally depending + on prefer_window_split_horizontally. - * eval.c: Use standard syntax for usage in docstrings. +2007-09-08 Eli Zaretskii -2001-12-03 Pavel Jan,Am(Bk + * sysdep.c [WINDOWSNT]: Don't include sysselect.h. - * xdisp.c (syms_of_xdisp): Make `tool-bar-button-relief' an option. +2007-09-07 Stefan Monnier -2001-12-02 Pavel Jan,Am(Bk + * s/cygwin.h (GC_MARK_STACK): Enable conservative stack marking. - * xterm.c (x_draw_image_relief): Use predefined macro instead of - constant when the value of `tool_bar_button_relief' is negative. + * frame.c (x_set_frame_parameters): Check number is positive before + using XFASTINT. -2001-12-02 Richard M. Stallman + * window.c (freeze_window_start): Don't presume selected_window holds + a window object. + (Fdisplay_buffer): Remove `register' since `buffer' needs to be gcpro'd. - * xmenu.c (menu_highlight_callback): Use `help' field as Lisp_Object. - (single_submenu, xmenu_show): Set `help' field as Lisp_Object. +2007-09-07 Angelo Graziosi (tiny change) - * fileio.c (read_non_regular): Delete Fsignal call. + * term.c (dissociate_if_controlling_tty): Call setsid on CYGWIN. -2001-12-01 Stefan Monnier +2007-09-07 Stefan Monnier - * lisp.h (run_hook_list_with_args): Undo last change. + * window.c (Vsplit_window_preferred_function): New var. + (Fdisplay_buffer): Use it. + (syms_of_window): Export, and initialize it. -2001-12-01 Gerd Moellmann +2007-09-06 Pixel (tiny change) - * xterm.c (x_draw_fringe_bitmap): Always undo clipping. + * image.c (gif_load): Fix bug: Handle nonexistent colormap. -2001-12-01 Jason Rumney +2007-09-06 Glenn Morris - * window.c (Qleft_fringe, Qright_fringe): Remove. Now in frame.c. + * gtkutil.c (menu_grab_callback) : + * xselect.c (x_reply_selection_request) : Move static + variable to file scope. - * w32term.h (WM_MOUSELEAVE, TME_LEAVE, TRACKMOUSEEVENT) - [!WM_MOUSELEAVE]: Define. +2007-09-06 Stefan Monnier - * w32menu.c (current_popup_menu, get_menu_item_info): - (set_menu_item_info): New vars. - (set_frame_menubar): Doc fix clarifying GC interaction with menus. - (w32_menu_show): Set current_popup_menu. - (add_menu_item): Allocate new strings for owner-drawn menu items - and help strings. - Use owner-draw for disabled menu items again. - (w32_menu_display_help): Ignore owner-drawn items and popup menus. - (w32_free_submenu_strings, w32_free_menu_strings): New functions. + * xdisp.c (redisplay_internal): Make sure Elisp code always sees + consistent values of selected_frame and selected_window. - * w32fns.c (trackmouse_window, track_mouse_event_fn): New vars. - (w32_wnd_proc) : Notice when mouse enters frame. - : Free menu strings. - : Stop tracking mouse. - (x_create_tip_frame): Specify no minibuffer, modeline or fringes. +2007-09-04 Jason Rumney - * w32term.c (w32_read_socket) : Cancel help echo - and mouse face. + * w32console.c (initialize_w32_display): Zero unused hooks. -2001-12-01 Kim F. Storm +2007-09-04 Dan Nicolaescu - The following changes add left-fringe and right-fringe - frame parameters to adjust fringe widths, or remove one or - both fringes. + * term.c (Vsuspend_tty_functions, Vresume_tty_functions) + (syms_of_term, Fsuspend_tty, Fresume_tty): Undo previous change. - * frame.h (struct frame): Remove trunc_area_pixel_width and - trunc_area_cols fields. - (Qleft_fringe, Qright_fringe): Declare. - (FRAME_RIGHT_FRINGE_WIDTH): New macro. +2007-09-04 Jason Rumney - * frame.c (Qleft_fringe, Qright_fringe): New vars. - (syms_of_frame): Initialize them. + * term.c (init_tty) [WINDOWSNT]: Add hooks that are not accessible + in w32console.c. Set up input. Remove XXX comments that have been + confirmed as correct. - * window.c (coordinates_in_window): Handle separate left and right - fringe widths. + * s/ms-w32.h (MULTI_KBOARD): Define. - * xterm.h (struct x_output): Add left_fringe_width, right_fringe_width, - and fringe_cols fields. - (FRAME_FRINGE_BITMAP_WIDTH, FRAME_FRINGE_BITMAP_HEIGHT): Remove macros. - (FRAME_X_FRINGE_COLS): Use fringe_cols field. - (FRAME_X_FRINGE_WIDTH): Use fringes_extra field. - (FRAME_X_LEFT_FRINGE_WIDTH): Use left_fringe_width field. - (FRAME_X_RIGHT_FRINGE_WIDTH): Use right_fringe_width field. - (x_compute_fringe_widths): Add prototype. + * w32console.c (one_and_only_w32cons): Remove. + (initialize_w32_display): Take terminal argument. - * xterm.c (zv_height, zv_bits, zv_period): Changed zv bitmap to - fill fringe evenly with small dashes. - (x_draw_fringe_bitmap): Clear background if necessary. Align and - clip the new ZV bitmap to avoid jitter between rows. - (x_draw_row_fringe_bitmaps): Rely on x_draw_fringe_bitmap to clear - background. Don't draw fringe bitmaps if fringe width is zero. - (x_compute_fringe_widths): New function. - (x_new_font, x_set_window_size_1): Use it. + * term.c (init_tty) [WINDOWSNT]: Pass terminal to + initialize_w32_display. + (init_tty) [MULTI_KBOARD]: Include this code on WINDOWSNT too. - * xfns.c (x_frame_parms): Add `left-fringe' and `right-fringe' parms. - (x_set_frame_parameters): Process `font' parameter before other - parameters as fringe widths depend on it. - (x_set_fringe_width): New function. - (x_figure_window_size): Use x_compute_fringe_widths. - (Fx_create_frame): Process `left-fringe' and `right-fringe' frame - parameters. + * termhooks.h (enum event_kind) : New event. - * widget.c (set_frame_size): Use x_compute_fringe_widths. - (EmacsFrameSetCharSize): Ditto. + * keyboard.c (discard_mouse_events): Discard it. + (make_lispy_event): Translate it to a lisp event. + (lispy_wheel_names): Add wheel-left and right events. + (syms_of_keyboard): Enlarge wheel_syms. - * w32term.h: Merged changes from xterm.h. - * w32term.c: Merged changes from xterm.c. - * w32fns.c: Merged changes from xfns.c. + * w32fns.c (w32_wnd_proc) : Merge with WM_MOUSEWHEEL. + : Pass new system message to lisp. -2001-11-29 Pavel Jan,Am(Bk + * w32term.h (WM_MOUSEHWHEEL): Define if system headers don't. - * COPYING: Removed. + * w32term.c (construct_mouse_wheel): Make HORIZ_WHEEL_EVENT + from WM_MOUSEHWHEEL. + (w32_read_socket) : Treat as WM_MOUSEWHEEL. -2001-11-29 Dave Love + * w32fns.c (x_create_tip_frame) [MULTI_KBOARD]: Get keyboard from + terminal. - * coding.c (syms_of_coding) : Give it an - extra extra slot. - (detect_coding_mask): Fix call of detect_coding_iso2022. + * w32term.c (w32_create_terminal) [MULTI_KBOARD]: Create a new + keyboard for the terminal. -2001-11-29 Pavel Jan,Am(Bk +2007-09-04 Dan Nicolaescu - * fileio.c (file-name-coding-system) - (default-file-name-coding-system): Doc fix (links to referenced - variables added). + * term.c (Vsuspend_tty_hook): Rename from Vsuspend_tty_functions. + (Vresume_tty_hook): Rename from Vresume_tty_functions. + (syms_of_term): Rename suspend-tty-functions to suspend-tty-hook + and resume-tty-function to resume-tty-hook. + (Fsuspend_tty, Fresume_tty): Use new names. -2001-11-28 Stefan Monnier +2007-09-02 Jan Dj,Ad(Brv - * lisp.h (GCPRO1, GCPRO2, GCPRO3, GCPRO4, GCPRO5): - Add dummy uses of gcproN variables. + * gtkutil.c (update_frame_tool_bar): Handle stock name as a named icon + if it starts with "n:". - * category.c (describe_category, describe_category_1) - (Fdescribe_categories): Remove. (Moved to lisp/help-fns.el.) - (syms_of_category): Don't defsubr Sdescribe_categories. +2007-08-31 Jan Dj,Ad(Brv -2001-11-28 Richard M. Stallman + * gtkutil.c (update_frame_tool_bar): Initialize wbutton to NULL. - * fileio.c (Ffind_file_name_handler): Avoid initializer for `result'. +2007-08-31 Stefan Monnier - * Makefile.in (lispdir): New variable, referring to build dir. - (TAGS-LISP): Find Makefile in $(lispdir), not $(lispsource). + * frame.h: + * frame.c (Qterm_environment_variable): Remove. + (syms_of_frame): Don't init and staticpro it. -2001-11-28 Andrew Innes + * callproc.c (getenv_internal): Remove special case for $TERM. - * w32menu.c (w32_menu_display_help): Actually add the new argument - OWNER. + * callproc.c (Vinitial_environment): New variable. + (set_initial_environment): Initialize it. + (syms_of_callproc): Declare it. + (child_setup): Don't mess with TERM via Qterm_environment_variable; the + TERM under which a process runs is never related to the TERM in which + Emacs is running. -2001-11-28 Jason Rumney +2007-08-29 Dan Nicolaescu - * w32menu.c (add_menu_item): Do not use owner-draw for disabled - menu items. From David Ponce . - (w32_dialog_show) [HAVE_DIALOGS]: Compile whole function - conditionally. - (w32_menu_display_help): New argument OWNER. Rewritten to store a - help event in the owner frame's keyboard buffer. + * config.in (HAVE_WINDOW_SYSTEM): Don't undef MULTI_KBOARD here... + * s/darwin.h: ... do it here. - * w32fns.c (w32_wnd_proc) : Display help directly. - (Fx_show_tip): Don't subtract last width from row width. +2007-08-29 Stefan Monnier - * w32term.c (w32_read_socket) : Remove. - (w32_read_socket): Use EQ to compare frames. + * lisp.h (set_initial_environment): Rename from set_global_environment. -2001-11-28 Gerd Moellmann + * Makefile.in (${etc}DOC): Re-add a ${EXEEXT} which seems to have been + removed by mistake on the multi-tty branch. - * xterm.c (x_draw_glyphs): Don't call notice_overwritten_cursor if - OVERLAPS_P. + * frame.c (make_terminal_frame): Yet Another Int/Lisp_Object Mixup. + (Fmodify_frame_parameters): Return a value. -2001-11-28 Pavel Jan,Am(Bk + * image.c (png_load): Comment-out var only used in commented-out code. - * xdisp.c (message_dolog): Remove unused variables `gcpro2', - `gcpro3' and `gcpro4'. + * term.c (mark_ttys): Don't bother checking top_frame (incorrectly) + before passing it to mark_object. - * coding.c (decode_coding_string): Remove unused variable `gcpro1'. + * xfaces.c (internal_resolve_face_name): Return a value. + (internal_resolve_face_name, resolve_face_name_error): Comment out. -2001-11-28 Stefan Monnier + * xfns.c (check_x_display_info): Yet Another Int/Lisp_Object Mixup. + (x_icon): Comment-out var only used in commented-out code. - * ccl.c: Use AREF and ASIZE. +2007-08-29 Romain Francoise -2001-11-27 Stefan Monnier + * keyboard.c (Fset_input_mode): Don't call `Fset_quit_char' if + QUIT hasn't been provided. - * lisp.h (run_hook_list_with_args): Remove. - (LIST_END_P): Fix call to wrong_type_argument. - (make_fixnum_or_float): Use EMACS_INT rather than int. +2007-08-29 Dan Nicolaescu -2001-11-26 Stefan Monnier + * callproc.c (child_setup, getenv_internal): Use the + display-environment-variable and term-environment-variable frame + params. + (set_initial_environment): Initialise Vprocess_environment. - * syntax.c (syms_of_syntax): Remove defsubr of Sdescribe_syntax. - (describe_syntax, describe_syntax_1, Fdescribe_syntax): Remove. + * config.in: Disable multi-keyboard support on a mac. - * eval.c: Use AREF and ASIZE. - (Ffetch_bytecode): Add the file name to the error message. + * frame.c (Qterm_environment_variable) + (Qdisplay_environment_variable): New variables. + (syms_of_frame): Intern and staticpro them. + (Fmake_terminal_frame): Disable output method test. - * fileio.c (Ffind_file_name_handler): Give precedence to handlers - which match the end of the file-name. - (Fsubstitute_in_file_name): Don't signal an error if $ENVVAR - is not a valid env var, but leave it as is instead. + * frame.h: Declare them here. - * keymap.c (access_keymap): Handle t bindings like nil bindings. - Make nil bindings in char-tables transparent. - (store_in_keymap): Turn a nil binding into a t binding for char-tables. + * macfns.c (x_set_mouse_color): Get rif from the frame. + (x_set_tool_bar_lines): Don't use updating_frame. + (mac_window): Add 2 new parameters for consistency with other systems. + (Fx_create_frame): Fix doc string. Rename the parameter. Set the + frame parameters following what is done in X11 and w32. Don't use + FRAME_MAC_DISPLAY_INFO. + (Fx_open_connection, start_hourglass): Remove window-system check. + (x_create_tip_frame): Get the keyboard from the terminal. -2001-11-26 Richard M. Stallman + * macmenu.c: Reorder includes. + (Fx_popup_menu): Use terminal specific mouse_position_hook. - * textprop.c (set_text_properties_1): Allow START, END in either order. - Do nothing if range is empty. + * macterm.c (XTset_terminal_modes, XTreset_terminal_modes): Add a + terminal parameter. + (x_clear_frame): Add a frame parameter. + (note_mouse_movement): Get rif from the frame. + (mac_term_init): Initialize the terminal. + (mac_initialize): Make static and move terminal initialization ... + (mac_create_terminal): ... to this new function. - * Makefile.in (mallocobj): Simplify logic using auxiliary vars. + * macterm.h (struct mac_display_info): Add terminal. + (mac_initialize): Delete declaration. - * Makefile.in (mostlyclean): Delete bootstrap-emacs here. - (clean): Not here. + * puresize.h (BASE_PURESIZE): Increase base value to 1164000. -2001-11-25 Stefan Monnier + * sysdep.c: Comment out text after #endif. - * textprop.c (set_text_properties_1): Clearly mark that the - interval should not be empty. + * term.c (init_tty): Only use terminal->kboard when MULTI_KBOARD + is defined. Better initialize ttys in windows. Use terminal + specific mouse_position_hook. - * intervals.c (graft_intervals_into_buffer): - Don't call set_text_properties_1 on an empty interval. + * termhooks.h (union display_info): Add mac_display_info. -2001-11-25 Richard M. Stallman + * w32fns.c (Fx_create_frame): Use kboard from the terminal. + Set the default minibuffer frame, window_system and the rest of the + frame parameters following what is done in X11. - * unexelf.c (unexec): Index by n, not nn, when checking for ".sbss". + * w32term.c (w32_initialize): Make static. - * callproc.c (Fcall_process): When we make a bigger buffer for bufptr, - don't lose the data in it. + * xselect.c (x_handle_selection_clear): Only access + terminal->kboard when MULTI_KBOARD is defined. -2001-11-25 Juanma Barranquero + * s/darwin.h (SYSTEM_PURESIZE_EXTRA): Define here. + (SYSTEM_PURESIZE_EXTRA): Only define on Carbon. - * abbrev.c (Fexpand_abbrev): Use Frun_hooks instead of Vrun_hooks. +2007-08-29 Jason Rumney - * buffer.c (Fkill_buffer): Likewise. + * frame.c (Fdelete_frame): Only get kboard when MULTI_KBOARD defined. + (make_terminal_frame) [WINDOWSNT]: Initialize terminal. - * print.c (temp_output_buffer_setup): Likewise. + * fringe.c (w32_init_fringe w32_reset_fringes) [HAVE_NTGUI]: + (mac_init_fringe) [MAC_OS]: Get rif from selected_frame. -2001-11-25 Stefan Monnier + * keyboard.c (restore_kboard_configuration): Only define when + MULTI_KBOARD defined. - * xfaces.c (merge_face_heights): Coerce back to int explicitly. + * makefile.w32-in: Update dependancies from Makefile.in. + (OBJ1): Add terminal.$(O) -2001-11-25 Eli Zaretskii + * term.c (dissociate_if_controlling_tty) [WINDOWSNT]: + Don't define function body. + (init_tty) [WINDOWSNT]: Use selected_frame for initializing. - * window.c (Fset_window_vscroll): Doc fix. From Kalle Olavi - Niemitalo . + * termhooks.h (display_info) [WINDOWSNT]: Add w32. -2001-11-25 Jason Rumney + * w32.c (request_sigio, unrequest_sigio): Remove. - * w32term.h (FRAME_X_FRINGE_COLS): No fringe on tip frames. + * w32console.c (w32con_move_cursor, w32con_clear_to_end) + (w32con_clear_frame, w32con_clear_end_of_line) + (w32con_ins_del_lines, w32con_insert_glyphs, w32con_write_glyphs) + (w32con_delete_glyphs, w32con_set_terminal_window) + (scroll_line, w32_sys_ring_bell): Add frame arg. + (w32con_set_terminal_modes, w32con_reset_terminal_modes): + Add terminal arg. + (PICK_FRAME): Remove. + (w32con_write_glyphs): Use frame specific terminal coding. + (one_and_only_w32cons): New global variable. + (initialize_w32_display): Use it for storing hooks. + (create_w32cons_output): New function. - * w32fns.c (x_create_tip_frame): Set frame's fringes_extra to 0. - (Fx_show_tip): Block input during frame creation. - (Fx_show_tip, Fx_hide_tip): Enable. + * w32inevt.c, w32inevt.h (w32_console_read_socket): Make first + arg a frame. -2001-11-24 Richard M. Stallman + * w32fns.c (x_create_tip_frame): Set terminal and ref count. + Set window_system. + (x_set_tool_bar_lines): Don't use updating_frame. + (Fx_create_frame): Set terminal and ref count. + (Fx_open_connection): Remove window-system check. - * lread.c (Fload): Detect recursive load error for more than 3 - nestings of the same file. - (Vrecursive_load_depth_limit): Variable deleted. - (syms_of_lread) : Variable deleted. + * w32menu.c (Fx_popup_menu): Use terminal specific mouse_position_hook. -2001-11-24 Jason Rumney + * w32term.c (w32_term_init): Call add_keyboard_wait_descriptor. + (w32_set_terminal_modes, w32_reset_terminal_modes): Add terminal arg. + (x_clear_frame, x_delete_glyphs, w32_ring_bell, x_ins_del_lines): + Add frame arg. + (x_delete_terminal, w32_create_terminal): New functions. + (w32_term_init): Create a terminal. + (w32_initialize): Move terminal specific initialization to + w32_create_terminal. - * xfns.c (compute_tip_xy): Initialize root_x and root_y from - mouse position if either left or top is not specified. + * w32term.h (x_output): Remove foreground_pixel and background_pixel. + (w32_clear_rect, w32_clear_area): Use background from frame. + (w32_display_info): Add terminal. + (w32_sys_ring_bell, x_delete_display): Declare here. - * w32fns.c (w32_wnd_proc) : Revert last change. - : Let tip frames resize without restriction. - (my_create_tip_window, Fx_show_tip): Adjust size for external border. - (my_create_tip_window): Assign tip_window. - (x_create_tip_frame): Use same defaults as X. - (compute_tip_xy): Remove unused variable. Use full screen width. - (Fx_show_tip): Do not double height. Call ShowWindow directly. + * xdisp.c (display_menu_bar) [HAVE_NTGUI]: Check frame type. - * w32term.c (x_after_update_window_line): Doc fix. - (w32_read_socket): Doc fix. Avoid SET_FRAME_GARBAGED for tip - frames. - : Redo mouse highlight when hiding tip frame. + * s/ms-w32.h (SYSTEM_PURESIZE_EXTRA): Bump to 50k. - * xdisp.c (prepare_menu_bars) [HAVE_WINDOW_SYSTEM]: Use tip_frame - for all Windowed systems. +2007-08-29 Kalle Olavi Niemitalo (tiny change) -2001-11-23 Eli Zaretskii + * keyboard.c (interrupt_signal, handle_interrupt, Fset_quit_char): + Fix get_named_tty calls for the controlling tty. - * msdos.c (IT_clear_screen): If the frame's faces are not yet - realized, use the initial screen colors to clear the screen. +2007-08-29 ARISAWA Akihiro (tiny change) -2001-11-23 Pavel Jan,Am(Bk + * term.c (dissociate_if_controlling_tty)[USG]: Fix parse error. - * textprop.c (Fset_text_properties): Remove unused variables - `unchanged', `prev_changed', `s' and `len'. +2007-08-29 Yoshiaki Kasahara (tiny change) - * search.c (Freplace_match): Remove unused variable `inslen'. - - * keymap.c (access_keymap): Remove unused variables `c1' and `c2'. - -2001-11-22 Jason Rumney - - * w32fns.c (x_window_to_frame): Remove irrelevant TODO comment. - (w32_wnd_proc) : Show help echo directly. - (my_create_tip_window): New function. - (x_create_tip_frame, compute_tip_xy): Adapt for Windows. - (Fx_show_tip, Fx_hide_tip) [TEST_TOOLTIPS]: Adapt for Windows. - -2001-11-20 Jason Rumney - - * coding.h (Vw32_system_coding_system) [WINDOWSNT]: Remove. - (ENCODE_SYSTEM, DECODE_SYSTEM) [WINDOWSNT]: Use Vlocale_coding_system. - - * w32fns.c (Vw32_system_coding_system): Remove. - (w32_to_x_font, x_to_w32_font): Use Vlocale_coding_system. - -2001-11-19 Stefan Monnier - - * fileio.c (Fwrite_region): Move choose_write_coding_system to - after build_annotations. - - * syntax.c (describe_syntax): Add dummy arg. - (describe_syntax_1): Update call to describe_vector. - - * category.c (describe_category): Add dummy arg. - (describe_category_1): Update call to describe_vector. - - * keymap.c (Fdescribe_vector): Add `describer' parameter. - (describe_command, describe_translation): Add dummy second param. - (describe_map): Call elt_describer with two arguments. - (describe_vector_princ): Add `fun' parameter. - Call it instead of the hardcoded `princ'. - (describe_vector): Add arg `args'. - Pass it as a new second argument to elt_describer. + * term.c (tty_insert_glyphs): Add missing first parameter. - * keymap.h (describe_vector): Update prototype. +2007-08-29 K,Aa(Broly L$,1 q(Brentey - * frame.c: Don't include keymap.h any more. - (keys_of_frame): Remove. + * buffer.c (Fbuffer_list, Fbury_buffer): + Take frame->buried_buffer_list into account. - * lisp.h (keys_of_frame): Remove declaration. + * cm.c (current_tty): New variable, for cmputc(). + (cmputc): Use it. + (cmcheckmagic): Add tty parameter, look up terminal streams there. + (calccost): Add tty parameter. Use emacs_tputs() instead of tputs(). + (cmgoto): Add tty parameter. Pass it on to calccost(). + Use emacs_tputs() instead of tputs(). - * emacs.c (main): Don't call `keys_of_frame' any more. + * cm.h (emacs_tputs): New macro to set current_tty, and then call + tputs(). + (current_tty): New variable, for cmputc(). + (cmcheckmagic, cmputc, cmgoto): Add prototypes. -2001-11-14 Andreas Schwab + * eval.c (unwind_to_catch): Don't call x_fully_uncatch_errors. + (internal_condition_case, internal_condition_case_1) + (internal_condition_case_2): Don't abort when x_catching_errors. - * unexelf.c [!defined MAP_ANON]: Define MAP_ANON to MAP_ANONYMOUS - if defined, 0 otherwise. - (MAP_FAILED): Define if not defined and use it to test mmap failure. - (unexec) [!MAP_ANON]: Use /dev/zero as file to map. + * fns.c (Fyes_or_no_p): Don't try to open an X dialog on tty terminals. + (Fy_or_n_p): Likewise. Use temporarily_switch_to_single_kboard to + prevent crashes caused by bogus longjmps in read_char. -2001-11-19 Richard M. Stallman + * keymap.h (Fset_keymap_parent): Add EXFUN. - * indent.c (current_column_1): Fix handling of scan_bytes for mb chars. + * macterm.h (FRAME_FOREGROUND_PIXEL, FRAME_BACKGROUND_PIXEL) + * w32term.h (FRAME_FOREGROUND_PIXEL, FRAME_BACKGROUND_PIXEL): + Remove redundant definition. -2001-11-18 Jason Rumney + * macfns.c (x_set_mouse_color, x_make_gc): + Use FRAME_BACKGROUND_PIXEL and FRAME_FOREGROUND_PIXEL. - * w32term.c (note_mouse_highlight): Fix type of variable `ignore'. - (x_draw_bar_cursor): If the background color of the glyph under - the cursor equals the frame's cursor color, use the glyph's - foreground color for drawing the bar cursor. - (x_after_update_window_line): Clear internal border in different - circumstances. - (w32_set_vertical_scroll_bar): Check for width and height > 0. - (w32_draw_relief_rect): Correct relief by 1 pixel. - (x_set_glyph_string_background_width): - Set extends_to_end_of_line_p if the row's fill_line_p is set and - drawing the last glyph with DRAW_IMAGE_{RAISED,SUNKEN}. - (x_display_and_set_cursor): If cursor_in_echo_area, use NO_CURSOR - if cursor_in_non_selected_windows is false. - (show_mouse_face): Clean up. Recognize overwritten cursor differently. - (x_draw_glyphs): Remove parameters REAL_START and REAL_END. - Notice if cursor gets overwritten. - (notice_overwritten_cursor): Renamed from - note_overwritten_text_cursor. Rewritten to take glyph widths - into account, and to take X positions as parameters. - (x_draw_phys_cursor_glyph): Save state of w->phys_cursor_on_p - around call to x_draw_glyphs. - (x_setup_relief_colors): Use `IMAGE_BACKGROUND' and - `IMAGE_BACKGROUND_TRANSPARENT' to calculate the correct background - color to use for image glyph reliefs. - (x_draw_image_relief): Accept zero tool_bar_button_relief. - (glyph_rect): Remove unused variable `area'. + * w32term.c (x_free_frame_resources): + Use FRAME_BACKGROUND_PIXEL and FRAME_FOREGROUND_PIXEL. + (w32_initialize): Use the accessor macros for terminal characteristics. - * w32fns.c (x_set_frame_parameters): Avoid infinite recursion for - some items. - (x_set_internal_border_width): Set frame garbaged when window - doesn't exist yet. - (Fx_create_frame): Accept zero tool_bar_button_relief. - (x_clear_image_1, four_corners_best, image_background) - (image_background_transparent): New functions. - (xpm_format, png_format, jpeg_format, tiff_format, gif_format) - (gs_format): Add `:background' entry. - (lookup_image): Set IMG's background color if specified. - (pbm_load, xbm_load_image, png_load): Set IMG's background field - when appropriate. - (x_clear_image_1): Reset `background_valid' and - `background_transparent_valid' fields. - (x_build_heuristic_mask): Use IMAGE_BACKGROUND instead of - calculating it here. Set IMG's background_transparent field. - (enum xpm_keyword_index): Add XPM_BACKGROUND. - (enum png_keyword_index): Add PNG_BACKGROUND. - (enum jpeg_keyword_index): Add JPEG_BACKGROUND. - (enum tiff_keyword_index): Add TIFF_BACKGROUND. - (enum gif_keyword_index): Add GIF_BACKGROUND. - (enum gs_keyword_index): Add GS_BACKGROUND. - (pbm_load, png_load, jpeg_load, tiff_load, gif_load): - Pre-calculate image background color where necessary. - (x_create_x_image_and_pixmap, xbm_load, gs_load): - Use display info's n_cbits entry for screen depth. - (Fx_show_tip): Remove unused variables `buffer', `top', - `left', `max_width' and `max_height'. + * macterm.c (mac_initialize): Use Fset_input_interrupt_mode. + Use the accessor macros for terminal characteristics. + * msdos.c (internal_terminal_init): Use the accessor macros for + terminal characteristics. + (ScreenVisualBell, internal_terminal_init): + Use FRAME_BACKGROUND_PIXEL and FRAME_FOREGROUND_PIXEL. - * w32menu.c (w32_menu_show, push_menu_pane): Doc fixes. + * termopts.h (no_redraw_on_reenter): Declare. -2001-11-18 Gerd Moellmann + * alloc.c (emacs_blocked_malloc): Disable mallopt call. + (mark_terminals, mark_ttys): Declare. + (Fgarbage_collect): Call them. + (mark_object): Mark buried_buffer_list. - * puresize.h (BASE_PURESIZE): Increase to 750000. + * prefix-args.c: Include stdlib.h for exit. -2001-11-18 Pavel Jan,Am(Bk + * syssignal.h: Add comment. - * frame.c (Fframe_live_p): Doc fix. + * indent.c: Include stdio.h. -2001-11-18 Richard M. Stallman + * window.h (Vinitial_window_system): Declare. + (Vwindow_system): Delete declaration. - * xdisp.c (message_dolog_marker1, message_dolog_marker2) - (message_dolog_marker3): New static variables hold three markers. - (syms_of_xdisp): Initialize and staticpro them. - (message_dolog): Use message_dolog_marker1..3 instead of - allocating markers each time. Unchain them when done. + * fontset.c (Finternal_char_font): Use FRAME_RIF. -2001-11-17 Richard M. Stallman + * image.c (lookup_image): Don't initialize `c' until the xasserts + have been run. - * doc.c (Fsnarf_documentation): Doc fix. + * gtkutil.c (xg_create_frame_widgets): Use FRAME_BACKGROUND_PIXEL and + FRAME_FOREGROUND_PIXEL. -2001-11-17 Andreas Schwab + * print.c (print_preprocess): Don't lose print_depth levels while + iterating. - * xterm.c (note_mouse_highlight): Fix type of variable `ignore'. + * widget.c (update_from_various_frame_slots): + Use FRAME_BACKGROUND_PIXEL and FRAME_FOREGROUND_PIXEL. -2001-11-17 Richard M. Stallman + * window.c (set_window_buffer): Don't call clear_mouse_face on tty + frames. + (window_internal_height): Remove bogus make_number call. + (init_window_once): Call make_terminal_frame with two zero parameters. - * fileio.c (Fwrite_region): Avoid initializer for Lisp_Object. + * fileio.c (Fread_file_name): Update comment. -2001-11-17 Jason Rumney + * callint.c (Fcall_interactively): + Use temporarily_switch_to_single_kboard instead of single_kboard_state. + Make sure it is correctly unwound. + + * xsmfns.c (x_session_close): New function. + + * coding.h (terminal_coding, safe_terminal_coding, keyboard_coding): + Delete declarations. + + * xterm.h: Remove declaration for x_fully_uncatch_errors. + (x_output): Remove background_pixel and foreground_pixel fields. + (x_display_info): Add new field TERMINAL. Remove KBOARD field. + (x_delete_device): + (x_session_close): Declare. + + * lread.c: Include setjmp.h. Update declaration of `read_char'. + (read_filtered_event): Call `read_char' with a local + `wrong_kboard_jmpbuf'. + + * minibuf.c (read_minibuf): Call temporarily_switch_to_single_kboard. + Don't call single_kboard_state. Use FRAME_RIF. + + * process.c (Fmake_network_process): Don't unrequest_sigio on modern + systems. + + * lisp.h (set_process_environment): Rename to `set_global_environment'. + (Fframe_with_environment, Fset_input_meta_mode) + (Fset_quit_char): EXFUN. + (x_create_device, tty_output, terminal, tty_display_info): Declare. + (init_sys_modes, reset_sys_modes): Update prototypes. + (init_all_sys_modes, reset_all_sys_modes): New prototypes. + + * keyboard.h (struct kboard): Add new fields Vlocal_function_key_map, + Vlocal_key_translation_map, and Vkeyboard_translate_table. + (Vfunction_key_map, Vkeyboard_translate_table, single_kboard_state): + Delete declarations. + (Vfunction_key_map, Vkey_translation_map, push_kboard, pop_kboard) + (temporarily_switch_to_single_kboard, tty_read_avail_input): + New declarations. + + * emacs.c (main): Don't call init_sys_modes(), the new term_init() + already does that during init_display(). Call syms_of_keymap + before syms_of_keyboard. Call `syms_of_terminal'. + Call set_initial_environment, not set_process_environment. + (shut_down_emacs): Call reset_all_sys_modes() instead of + reset_sys_modes(). + + * xfaces.c (x_free_gc): Protect xassert with GLYPH_DEBUG. + (internal_resolve_face_name, resolve_face_name_error): New functions. + (resolve_face_name): Protect against loops and errors thrown by Fget. + (realize_default_face): Don't use FRAME_FONT unless frame is an X frame. + (Ftty_supports_face_attributes_p): Update tty_capable_p call. + + * scroll.c: Replace CURTTY() with local variables throughout the + file (where applicable). + (calculate_scrolling, calculate_direct_scrolling) + (scrolling_1, scroll_cost): Use the accessor macros for terminal + characteristics. + + * keymap.c (Vfunction_key_map): Remove. + (Fdescribe_buffer_bindings): Update references to Vfunction_key_map. + (syms_of_keymap): Remove DEFVAR for Vfunction_key_map. + (Vkey_translation_map): Remove. + (syms_of_keymap): Remove DEFVAR for key-translation-map. + (Fdescribe_buffer_bindings): + (read_key_sequence, init_kboard, syms_of_keyboard, mark_kboards): + Update for terminal-local key-translation-map. + + * Makefile.in (callproc.o): Update dependencies. + (lisp, shortlisp): Add termdev.elc. + (obj): Add terminal.o. + (terminal.o): Add dependencies. + [HAVE_CARBON]: Make terminal.o depend on macgui.h. + (data.o, fns.o): Add termhooks.h dependency. + (SOME_MACHINE_LISP): Add dnd.elc. + (minibuf.o): Fix typo. + Update dependencies. + + * data.c (do_symval_forwarding, store_symval_forwarding) + (find_symbol_value): Use the selected frame's keyboard, not + current_kboard. + + * .gdbinit (init_sys_modes): Use Vinitial_window_system instead of + Vwindow_system. + + * xmenu.c (Fx_menu_bar_open) [USE_X_TOOLKIT, USE_GTK]: Rename from + Fmenu_bar_open. + (syms_of_xmenu): Update defsubr. + (mouse_position_for_popup, Fx_popup_menu) + (Fx_popup_dialog, x_activate_menubar, update_frame_menubar) + (set_frame_menubar, free_frame_menubar) + (create_and_show_popup_menu, xmenu_show, ) + (create_and_show_dialog, xdialog_show, xmenu_show): Abort if not + an X frame. + + * xselect.c (x_own_selection): Abort if not an X frame. + (some_frame_on_display): Check if it is an X frame. + (x_handle_selection_clear): Deal with MULTI_KBOARD. + + * coding.c: Include frame.h and termhooks.h. + (terminal_coding, keyboard_coding): Delete. + (Fset_terminal_coding_system_internal): + (Fset_keyboard_coding_system_internal): + (Fkeyboard_coding_system): + (Fterminal_coding_system): Add a terminal parameter. + Get terminal_coding from the terminal. + (init_coding_once): Don't call setup_coding_system here. + + * dispextern.h (set_scroll_region, turn_off_insert) + (turn_off_highlight, background_highlight, clear_end_of_line_raw) + (tty_clear_end_of_line, tty_setup_colors) + (delete_tty, updating_frame) + (produce_special_glyphs, produce_glyphs, write_glyphs) + (insert_glyphs): Remove. + (raw_cursor_to, clear_to_end, tty_turn_off_insert) + (tty_turn_off_highlight, get_tty_size): Add declaration. + (tabs_safe_p, init_baud_rate, get_tty_terminal): Update prototypes. + + * frame.h (enum output_method): Add output_initial. + (struct x_output): Delete. + (FRAME_FOREGROUND_PIXEL, FRAME_BACKGROUND_PIXEL): + Access foreground_pixel and background_pixel directly from the frame. + (tty_display): Delete. + (struct frame): Add buried_buffer_list, foreground_pixel, + background_pixel and terminal. Delete kboard + (union output_data): Add tty. + (FRAME_KBOARD): Get the kboard from the terminal. + (FRAME_INITIAL_P): New macro. + (Qtty, Qtty_type, Qterminal, Qterminal_live_p, Qenvironment) + (Qterm_environment_variable, Qdisplay_environment_variable) + (make_terminal_frame, Qburied_buffer_list, Qwindow_system): + New declarations. + + * termchar.h (tty_output, tty_display_info): New structures. + (tty_list): Declare. + (FRAME_TTY, CURTTY): New macros. + (must_write_spaces, min_padding_speed, fast_clear_end_of_line) + (line_ins_del_ok, char_ins_del_ok, scroll_region_ok) + (scroll_region_cost, memory_below_frame, fast_clear_end_of_line) + (dont_calculate_costs, no_redraw_on_reenter): Remove declarations. + + * callproc.c: Include frame.h and termhooks.h, for terminal + parameters. + (add_env): New function. + (child_setup): Use it. + (child_setup, getenv_internal): Handle the new Vprocess_environment. + (getenv_internal): Fix get_terminal_param call. + (Fgetenv_internal, egetenv): Update doc. + (syms_of_callproc): Initialize Vprocess_environment to nil. + Register and initialize them. Remove obsolete defvars. Update doc + strings. + (child_setup): Handle Vlocal_environment_variables. + (getenv_internal): Add terminal parameter. + Handle Vlocal_environment_variables. + (Fgetenv_internal): Add terminal parameter. + (child_setup, getenv_internal, Fgetenv_internal): Store the local + environment in a frame (not terminal) parameter. Update doc strings. + (set_initial_environment): Rename from set_global_environment. + Store Emacs environment in initial frame parameter. + + * xdisp.c (redisplay_internal): Update references to + `previous_terminal_frame'. + (display_mode_line, Fformat_mode_line): Replace calls to + `push_frame_kboard' with `push_kboard'. + (get_glyph_string_clip_rects): Add extra parentheses and + braces to prevent compiler warnings. + (calc_pixel_width_or_height): Add xassert to check that the + frame is alive. Don't call `lookup_image' on a termcap frame. + (message2_nolog, message3_nolog, redisplay_internal) + (set_vertical_scroll_bar, redisplay_window, check_x_display_info) + (x_set_scroll_bar_foreground, x_set_scroll_bar_background) + (Fx_create_frame, Fxw_display_color_p, Fx_display_grayscale_p) + (Fx_display_pixel_width, Fx_display_pixel_height) + (Fx_display_planes, Fx_display_color_cells) + (Fx_server_max_request_size, Fx_server_vendor, Fx_server_version) + (Fx_display_screens, Fx_display_mm_height, Fx_display_mm_width) + (Fx_display_backing_store, Fx_display_visual_class) + (Fx_display_save_under, Fx_close_connection, x_create_tip_frame): + Use FRAME_TERMINAL_P, FRAME_WINDOW_P, FRAME_TTY and FRAME_RIF. + + * xfns.c (x_set_foreground_color x_set_background_color) + (x_set_mouse_color, x_set_cursor_color, x_make_gc): + Use FRAME_BACKGROUND_PIXEL and FRAME_FOREGROUND_PIXEL. + (Fx_create_frame, x_create_tip_frame, build_string, x_window) + (Fx_create_frame, x_create_tip_frame): Don't create frames on a + terminal that is being deleted. + (Fx_create_frame): Use `store_frame_param' to set `window-system' + frame parameter, and make sure it overrides any user-supplied setting. + (Fx_close_connection, Fx_synchronize): Unify argument names with + the rest of the DEFUNs. + + * dispnew.c (Fsend_string_to_terminal): Update call to + `get_tty_terminal'. + (Fredraw_frame, Fsend_string_to_terminal) + (Fsend_string_to_terminal, init_display): Use FRAME_RIF, + FRAME_TERMCAP_P and FRAME_TTY. + (window_change_signal): Don't believe width/height values that are + impossibly small. + (Vinitial_window_system): Rename from Vwindow_system. + (termscript, Wcm, rif): Delete. + + * termhooks.h (struct terminal): New struct containing the + previously global text display hooks and new members NAME, + DELETED and PARAM_ALIST. + (FRAME_TERMINAL, TERMINAL_TERMINAL_CODING) + (TERMINAL_KEYBOARD_CODING, TERMINAL_ACTIVE_P, FRAME_WINDOW_P) + (FRAME_RIF): New macros. + (get_terminal_param, get_device): New declarations. + (termscript): Delete declaration. + + * xterm.c (x_initialize): Use Fset_input_interrupt_mode. + (XTflash, x_free_frame_resources, x_scroll_bar_create) + (x_scroll_bar_set_handle): Use FRAME_BACKGROUND_PIXEL and + FRAME_FOREGROUND_PIXEL. + (x_fully_uncatch_errors): Disable definition. + (x_scroll_bar_expose): Fix reference to foreground pixel. + (XTread_socket): Disable loop on all X displays. + (x_delete_terminal): Don't set terminal->deleted and let + delete_terminal delete the frames on the terminal. + (x_delete_display): Doc update to reflect changes in + delete_terminal. + (x_display_info) : Move member earlier in the struct. + (deleting_tty): Remove old variable. + (Fsuspend_tty): Call clear_tty_hooks. + (Fresume_tty, init_tty): Call set_tty_hooks. + (Ftty_display_color_p, Ftty_display_color_cells): Don't throw + errors on X frames. + (x_catch_errors_unwind): Abort if x_error_message is NULL. + (handle_one_xevent): Initialize `f' to NULL. + (x_delete_terminal, x_create_terminal): New functions. + (XTset_terminal_modes, XTreset_terminal_modes) + (XTread_socket, x_connection_closed, x_term_init) + (x_term_init, x_delete_display): Add terminal parameter. + (x_term_init) [!HAVE_GTK_MULTIDISPLAY]: Refuse to create secondary + X connections. + + * frame.c (Fframep): Deal with output_initial. + (Qbuffer_predicate, Qbuffer_list, Qburied_buffer_list, Qtty) + (Qtty_type, Qwindow_system, Qenvironment) + (Qterm_environment_variable, Qdisplay_environment_variable): New vars. + (x_set_screen_gamma, store_frame_param): Fix compilation errors. + (make_terminal_frame): Don't create frames on a terminal that is + being deleted. + (make_terminal_frame): Use FRAME_BACKGROUND_PIXEL and + FRAME_FOREGROUND_PIXEL. + (store_frame_param): Check for found_for_frame before calling XFRAME. + (Fmake_terminal_frame): Handle NULL tty names correctly. + (syms_of_frame): Enhance doc string of `default-frame-alist'. + (Fdelete_frame): Remove unused variable `count'. + (Qenvironment): New variable. + (Fdelete_frame): Don't allow other frames to refer to a deleted + frame in their 'environment parameter. + (Fframe_with_environment): New function. + (syms_of_frame): Defsubr it. Initialize and staticpro Qenvironment. + (get_future_frame_param): New function. + (Fmake_terminal_frame): Use it. + (x_set_frame_parameters, x_set_screen_gamma): Use FRAME_RIF. + + * sysdep.c (init_sys_modes, reset_sys_modes): Update for renames. + * sysdep.c (reset_sys_modes): Update for renames. + + * keyboard.c (tty_read_avail_input): New function. + (Fset_input_interrupt_mode, Fset_output_flow_control): New functions. + (syms_of_keyboard): Defsubr them. + (Fset_input_meta_mode, Fset_quit_char): New functions. + (Fset_input_mode): Split to above functions. + + (read_char_minibuf_menu_prompt): Add wrong_kboard_jmpbuf + parameter. Use it in call to `read_char'. + (read_char): Declare. Update call to `read_char_minibuf_menu_prompt'. + Set wrong_kboard_jmpbuf correctly in recursive calls. + Use current_kboard to access Vkeyboard_translate_table. + Enhance comment before extra longjmp to wrong_kboard_jmpbuf. + Add wrong_kboard_jmpbuf parameter to allow for recursive calls. + Update longjmp invocations. Remember the original current_kboard, + and longjmp to `wrong_kboard_jmpbuf' when a filter, timer or sentinel + changes it. Comment out unnecessary calls to + `record_single_kboard_state' and `any_kboard_state'. + Update recursive calls. + (wrong_kboard_jmpbuf): Remove global variable. + (read_key_sequence): Remove unused variable wrong_kboard_jmpbuf. + Handle deleted interrupted_kboards correctly; that is a legal + case. Add `wrong_kboard_jmpbuf' local variable. Update setjmp + and read_char calls. Abort if interrupted_kboard died in read_char. + (any_kboard_state, single_kboard_state) + (push_frame_kboard): Remove function. + (pop_kboard): Switch out of single_kboard mode if the kboard has + been deleted. Remove unused variable. Help debugging by not + changing current_kboard unnecessarily. Set current_kboard to the + kboard of the selected frame when the stored kboard object has + been deleted before pop_kboard. + (temporarily_switch_to_single_kboard): Change first parameter to a + frame pointer. Throw an error when caller wants to change kboards + while in single_kboard mode. Don't push_kboard if we weren't in + single kboard state. Don't pop_kboard if we popped into any + kboard state. + (restore_kboard_configuration): Abort if pop_kboard changed the + kboard in single_kboard mode. Call pop_kboard only after setting + up single_kboard mode. + (Frecursive_edit): Switch to single_kboard mode only in nested + command loops. + (cmd_error, command_loop, command_loop_1, timer_check): + Comment out unnecessary call to `any_kboard_state' and + `record_single_kboard_state'. + (delete_kboard): Exit single_kboard mode if we have just deleted + that kboard. Use FRAME_KBOARD. + (interrupt_signal): Use `Fkill_emacs' to exit Emacs, not + `fatal_error_signal'. + (record_single_kboard_state): Don't push_kboard if we weren't in + single kboard state. Don't pop_kboard if we popped into any + kboard state. + (push_frame_kboard): Rename to push_kboard. + (kbd_buffer_get_event): Use FRAME_TERMINAL. + (read_avail_input): Read input from all terminals. + (mark_kboards): Also mark Vkeyboard_translate_table. + (kbd_buffer_store_event_hold): Simplify condition. + (read_key_sequence): Reinitialize fkey and keytran at each replay. + (Vkeyboard_translate_table): Move to struct kboard. + (init_kboard): Initialize Vkeyboard_translate_table. + (syms_of_keyboard): Use DEFVAR_KBOARD to define + Vkeyboard_translate_table. Update doc strings. Update docs of + local-function-key-map and function-key-map. + + * terminal.c: New file. + + * term.c: Include errno.h. + (Vring_bell_function, device_list, initial_device) + (next_device_id, ring_bell, update_begin, update_end) + (set_terminal_window, cursor_to, raw_cursor_to) + (clear_to_end, clear_frame, clear_end_of_line) + (write_glyphs, insert_glyphs, delete_glyphs, ins_del_lines) + (Fdisplay_name, create_device, delete_device): Move to terminal.c. + (syms_of_term): Move their initialization to terminal.c. + (get_tty_terminal, Fdisplay_tty_type, Ftty_display_color_p) + (Ftty_display_color_cells) + (Ftty_no_underline, Fsuspend_tty, Fresume_tty, create_tty_output) + (clear_tty_hooks, set_tty_hooks) + (init_tty, maybe_fatal): New functions. + (Ftty_type): Return nil if terminal is not on a tty instead of + throwing an error. Doc update. + (syms_of_term) : + Doc update. Initialize new subrs and variables. + (delete_tty): Use terminal->deleted. + (tty_set_terminal_modes): Rename from set_terminal_modes. + (tty_reset_terminal_modes): Rename from reset_terminal_modes. + (set_scroll_region): Rename to `tty_set_scroll_region'. + (turn_on_insert): Rename to `tty_turn_on_insert'. + (turn_off_insert): Rename to `tty_turn_off_insert'. + (turn_off_highlight): Rename to `tty_turn_off_highlight'. + (turn_on_highlight): Rename to `tty_turn_on_highlight'. + (toggle_highligh): Rename to `tty_toggle_highlight'. + (background_highlight): Rename to `tty_background_highlight'. + (highlight_if_desired): Rename to `tty_highlight_if_desired'. + (tty_ring_bell, tty_update_end, tty_set_terminal_window) + (tty_set_scroll_region, tty_background_highlight) + (tty_cursor_to, tty_raw_cursor_to, tty_clear_to_end) + (tty_clear_frame, tty_clear_end_of_line, tty_write_glyphs) + (tty_insert_glyphs, tty_delete_glyphs, tty_ins_del_lines) + (term_get_fkeys, tty_setup_colors, dissociate_if_controlling_tty): + Add static modifier. + (tty_reset_terminal_modes, tty_set_terminal_window) + (tty_set_scroll_region, tty_background_highlight) + (tty_highlight_if_desired, tty_cursor_to) + (tty_raw_cursor_to, tty_clear_to_end, tty_clear_frame) + (tty_clear_end_of_line, tty_write_glyphs, tty_insert_glyphs) + (tty_delete_glyphs, tty_ins_del_lines, turn_on_face): Update for + renames. - * xterm.c (notice_overwritten_cursor): Take care of end < 0 case. +2007-08-28 Jan Dj,Ad(Brv -2001-11-17 Gerd Moellmann + * keyboard.c: Qrtl is new. + (parse_tool_bar_item): Handle :rtl keyword. + (syms_of_keyboard): Intern :rtl keyword. - * xdisp.c (tool_bar_item_info): Avoid calling Fget_text_property - with invalid position. + * dispextern.h (enum tool_bar_item_idx): Add TOOL_BAR_ITEM_RTL_IMAGE. -2001-11-16 Richard M. Stallman + * gtkutil.c (xg_tool_bar_expose_callback): Just do SET_FRAME_GARBAGED + so no Lisp code is executed. + (file_for_image, find_rtl_image): New functions. + (xg_get_image_for_pixmap): Use file_for_image + (update_frame_tool_bar): If direction is RTL, use RTL image if + defined. Use Gtk stock images if defined. - * syswait.h: Delete conditionals for HPUX7, ISC 4.1, and convex. +2007-08-27 YAMAMOTO Mitsuharu - * s/isc4-1.h (HAVE_SYS_WAIT_H): Add #undef. - * s/hpux.h (HAVE_SYS_WAIT_H): Add #undef. - * s/hpux8.h (HAVE_SYS_WAIT_H): Define it. + * macterm.c (x_draw_composite_glyph_string_foreground): Draw rectangle + for nonexistent or zero-width glyph in composition glyph. - * m/convex.h (HAVE_SYS_WAIT_H): Add #undef. +2007-08-25 Stefan Monnier -2001-11-16 Stefan Monnier + * m/amdx86-64.h: Redirect to intel386.h if compiling for i386. - * fileio.c (build_annotations): Split off the tail. - (build_annotations_2): New fun. Extracted from build_annotations. - (Fwrite_region): Split the call to build_annotations into two - calls to build_annotations and build_annotations_2. + * xdisp.c (Finvisible_p): New function. + (syms_of_xdisp): defsubr it. -2001-11-16 Pavel Jan,Am(Bk +2007-08-24 Juanma Barranquero - * sysdep.c (wait_for_kbd_input) [VMS]: Do not call - clear_waiting_for_input with argument. + * image.c (syms_of_image) : + Doc fixes. - * xterm.h (x_update_cursor): Remove duplicated prototype. +2007-08-24 YAMAMOTO Mitsuharu - * keyboard.h (clear_waiting_for_input): Remove duplicated prototype. + * mac.c [MAC_OSX] (select_and_poll_event, sys_select): Fix last changes. - * xterm.c (waiting_for_input): Remove unnecessary declaration. +2007-08-24 Martin Rudalics - * data.c (Ftimes, Fquo, Frem, Fmod): Doc fix. + * fileio.c (Finsert_file_contents): Consult CHARS_MODIFF to tell + whether decoding has modified buffer contents. -2001-11-16 Stefan Monnier +2007-08-24 Jason Rumney - * fileio.c (choose_write_coding_system): New fun, extracted - from Fwrite_region. - (Fwrite_region): Use it. + * image.c [HAVE_NTGUI]: Define dynamic loaded functions for SVG. + (Qgdk_pixbuf, Qglib) [HAVE_NTGUI]: New symbols. + (syms_of_image) [HAVE_NTGUI]: Intern and staticpro them. + (init_svg_functions) [HAVE_NTGUI]: New function. + (fn_g_type_init, fn_g_object_unref, fn_g_error_free): New #defines. + (svg_load_image): Use them. + (svg_load_image) [HAVE_NTGUI]: Implement background. - * eval.c (max_specpdl_size, max_lisp_eval_depth): Use EMACS_INT. - (funcall_lambda, run_hook_with_args): Make static and add prototype. - (ml_apply, find_handler_clause): Add prototype. +2007-08-23 YAMAMOTO Mitsuharu -2001-11-16 Eli Zaretskii + * Makefile.in (RSVG_LIBS, RSVG_CFLAGS): New variables. + (ALL_CFLAGS): Use ${RSVG_CFLAGS} instead of @RSVG_CFLAGS@. + (LIBX): Remove @RSVG_LIBS@. + (LIBES): Add $(RSVG_LIBS). - * config.in: Add #undef HAVE_COFF_H. + * image.c (svg_load_image): Blend with specified background if exists. + Use IMAGE_BACKGROUND. Add Mac OS Support. - * unexec.c (coff.h): Don't include unless HAVE_COFF_H is defined. - Required for ISC 4.1. + * mac.c (wakeup_from_rne_enabled_p) [MAC_OSX]: Remove variable. + (ENABLE_WAKEUP_FROM_RNE, DISABLE_WAKEUP_FROM_RNE) [MAC_OSX]: + Remove macros. + [MAC_OSX] (socket_callback): Do nothing. + [MAC_OSX] (select_and_poll_event): Use CFRunLoopRunInMode instead of + ReceiveNextEvent. + [MAC_OSX] (sys_select): Likewise. Don't set context as argument to + socket_callback. + (mac_wakeup_from_rne) [MAC_OSX]: Do nothing. -2001-11-16 Eli Zaretskii +2007-08-22 Glenn Morris - * syswait.h (HAVE_SYS_WAIT_H): Undef for ISC 4.1. Reported by - Andrew Wiseman . + * image.c (x_find_image_file): Search in etc/images/ rather than etc/. -2001-11-16 Kim F. Storm +2007-08-22 Paul Pogonyshev - The following changes are made to clean up the various internal - references to the fringes to actually use the term `fringe' for - them. Previously, they were called `flags areas', `bitmap areas', - `left/right side of windows', or implicitly as `flags' or - `bitmaps': + * Makefile.in (ALL_CFLAGS, LIBX): Add RSVG_LIBS. - * dispextern.h (FRINGE_FACE_ID): Renamed from BITMAP_AREA_FACE_ID. - Comments fixed. Use renamed symbols. + * image.c: Add support for SVG images. Some additional comments + by Joakim Verona . When HAVE_RSVG is defined: + (svg_image_p): New function to test for SVG image. + (svg_load): New function to load SVG image. + (svg_load_image): New function, helper for svg_load. + (Qsvg): New Lisp_object. + (svg_keyword_index): New enum. + (svg_format): New static `image_keyword' struct. + (svg_type): New static `image_type' struct. + (librsvg/rsvg.h): Include it. - * dispnew.c: Comment fix. Use renamed symbols. +2007-08-23 Stefan Monnier - * frame.h (FRAME_FRINGE_COLS): Renamed from FRAME_FLAGS_AREA_COLS. - (FRAME_FRINGE_WIDTH): Renamed from FRAME_FLAGS_AREA_WIDTH. - (FRAME_LEFT_FRINGE_WIDTH): Renamed from FRAME_LEFT_FLAGS_AREA_WIDTH. + * lread.c (load_warn_old_style_backquotes): Fix up array size typo. - * msdos.c: Comment fix. +2007-08-22 Stefan Monnier - * w32fns.c: Use renamed symbols. + * lread.c (Qold_style_backquotes): New var. + (syms_of_lread): Init and staticpro it. + (load_warn_old_style_backquotes): New fun. + (Fload): Use them to warn about old style backquotes. + (end_of_file_error, Fload): Remove unused vars. - * w32term.c: Comment fixes. Use renamed symbols. - (fringe_bitmap_type): Renamed from bitmap_type. - (NO_FRINGE_BITMAP): Renamed from NO_BITMAP. - (w32_draw_fringe_bitmap): Renamed from w32_draw_bitmap. - (x_draw_row_fringe_bitmaps): Renamed from x_draw_row_bitmaps. + * lisp.h (Fclear_face_cache, Fx_send_client_event): Declare. - * w32term.h: Comment fixes. Use renamed symbols. - (fringes_extra): Renamed from flags_areas_extra. - (FRAME_FRINGE_BITMAP_WIDTH): Renamed from FRAME_FLAGS_BITMAP_WIDTH. - (FRAME_FRINGE_BITMAP_HEIGHT): Renamed from FRAME_FLAGS_BITMAP_HEIGHT. - (FRAME_X_FRINGE_COLS): Renamed from FRAME_X_FLAGS_AREA_COLS. - (FRAME_X_FRINGE_WIDTH): Renamed from FRAME_X_FLAGS_AREA_WIDTH. - (FRAME_X_LEFT_FRINGE_WIDTH): - Renamed from FRAME_X_LEFT_FLAGS_AREA_WIDTH. - (FRAME_X_RIGHT_FRINGE_WIDTH): - Renamed from FRAME_X_RIGHT_FLAGS_AREA_WIDTH. + * lread.c (Vold_style_backquotes): New var. + (syms_of_lread): Init and export it to Elisp. + (read1): Set it when we find an old-style (back)quote. - * widget.c: Use renamed symbols. +2007-08-22 Jason Rumney - * window.c: Comment fixes. Use renamed symbols. - (coordinates-in-window-p): Doc fix. + * w32reg.c (SYSTEM_DEFAULT_RESOURCES): Add missing NULL terminator. - * xdisp.c: Comment fixes. Use renamed symbols. +2007-08-22 Katsumi Yamaoka - * xfaces.c (realize_basic_faces): Use FRINGE_FACE_ID. + * puresize.h (BASE_PURESIZE): Increase to 1140000. - * xfns.c: Use renamed symbols. +2007-08-19 Richard Stallman - * xterm.c: Comment fixes. Use renamed symbols. - (fringe_bitmap_type): Renamed from bitmap_type. - (NO_FRINGE_BITMAP): Renamed from NO_BITMAP. - (x_draw_fringe_bitmap): Renamed from x_draw_bitmap. - (x_draw_row_fringe_bitmaps): Renamed from x_draw_row_bitmaps. + * eval.c (Ffunction, Fquote): Signal error if not 1 argument. - * xterm.h: Comment fixes. Use renamed symbols. - (fringes_extra): Renamed from flags_areas_extra. - (FRAME_FRINGE_BITMAP_WIDTH): Renamed from FRAME_FLAGS_BITMAP_WIDTH. - (FRAME_FRINGE_BITMAP_HEIGHT): Renamed from FRAME_FLAGS_BITMAP_HEIGHT. - (FRAME_X_FRINGE_COLS): Renamed from FRAME_X_FLAGS_AREA_COLS. - (FRAME_X_FRINGE_WIDTH): Renamed from FRAME_X_FLAGS_AREA_WIDTH. - (FRAME_X_LEFT_FRINGE_WIDTH): - Renamed from FRAME_X_LEFT_FLAGS_AREA_WIDTH. - (FRAME_X_RIGHT_FRINGE_WIDTH): - Renamed from FRAME_X_RIGHT_FLAGS_AREA_WIDTH. +2007-08-19 Andreas Schwab -2001-11-15 Jason Rumney + * alloc.c (pure): Round PURESIZE up. - * w32menu.c (add-menu-item): Make help_echo and radio buttons - work for most menu items. From David Ponce - . +2007-08-17 Jan Dj,Ad(Brv -2001-11-15 Gerd Moellmann + * xterm.c (handle_one_xevent): Remove check that mouse click is in + active frame. - * xfns.c (x_set_frame_parameters): Revert change of 2001-11-07. - Some x_set_* function expect to be called even if old and new - value are equal. +2007-08-16 Richard Stallman - * xdisp.c (build_desired_tool_bar_string): Accept zero - tool_bar_button_relief. + * eval.c (Fcommandp): Add parens to clarify. - * xfns.c (Fx_create_frame): Accept zero tool_bar_button_relief. + * minibuf.c (Fall_completions): Use enum for type of table. - * xterm.c (x_draw_image_relief): Accept zero tool_bar_button_relief. + * emacs.c (USAGE2): Improve text. - * xterm.c (x_draw_bar_cursor): If the background color of the - glyph under the cursor equals the frame's cursor color, use - the glyph's foreground color for drawing the bar cursor. +2007-08-15 Philippe Waroquiers - * dispnew.c (direct_output_forward_char): Fix character/byte - position comparison. + * term.c (tty_default_color_capabilities): Declare static + variables in file scope, to avoid HPUX compiler problem. -2001-11-15 Miles Bader +2007-08-13 Jan Dj,Ad(Brv - * editfns.c (find_field): Add BEG_LIMIT and END_LIMIT parameters. - (Fdelete_field, Ffield_string, Ffield_string_no_properties): - Update arguments to find_field. - (Ffield_beginning, Ffield_end): Add LIMIT param, pass to find_field. - (Fconstrain_to_field): Use LIMIT arg to shorten search time. - * lisp.h (Ffield_beginning, Ffield_end): Update EXFUN decl. - * minibuf.c (Fminibuffer_prompt_end): Update args to Ffield_end. + * gtkutil.c (update_frame_tool_bar): Use -1 as index + to gtk_toolbar_insert. -2001-11-14 Richard M. Stallman +2007-08-13 Stefan Monnier - * editfns.c (Fpropertize): Allow call with 1 arg. + * fileio.c (Finsert_file_contents): Yet Another Int/Lisp_Object Mixup. - * dispextern.h (image_background, image_background_transparent): - Conditionalize on HAVE_X_WINDOWS. + * insdel.c (reset_var_on_error): New fun. + (signal_before_change, signal_after_change): + Use it to reset (after|before)-change-functions to nil in case of error. + Bind inhibit-modification-hooks to t. + Don't bind (after|before)-change-functions to nil while they run. -2001-11-13 Richard M. Stallman +2007-08-11 YAMAMOTO Mitsuharu - * print.c (Fprin1_to_string): Doc fix. + * xterm.c (x_draw_image_glyph_string): Adjust stipple origin when + filling pixmap with stippled background. - * sunfns.c (Fsun_change_cursor_icon): Doc fix. +2007-08-10 YAMAMOTO Mitsuharu - * floatfns.c (Fceiling, Ffloor): Doc fixes. + * macterm.c [TARGET_API_MAC_CARBON] (mac_handle_window_event): + Don't use invisible frame as parent window for repositioning. - * filelock.c (Funlock_buffer, Ffile_locked_p): Doc fixes. +2007-08-10 Stefan Monnier - * fileio.c (Ffile_accessible_directory_p): Doc fix. + * print.c (new_backquote_output): Rename from old_backquote_output. + (print): Inverse its logic (according to its name) so as to match the + behavior of new_backquote_flag in lread.c. - * eval.c (syms_of_eval): Doc fix. +2007-08-09 YAMAMOTO Mitsuharu - * coding.c (syms_of_coding): Doc fix. + * gmalloc.c (posix_memalign): New function. - * doc.c (Fsnarf_documentation): Doc fix. + * macterm.c (frame_highlight, frame_unhighlight): Don't call + ActivateControl/DeactivateControl here. + [USE_MAC_TOOLBAR] (free_frame_tool_bar): Suppress animation when + frame-notice-user-settings is non-nil. + [USE_MAC_FONT_PANEL] (mac_handle_font_event): Also record parameter + for kEventParamFMFontStyle. + [TARGET_API_MAC_CARBON] (mac_handle_keyboard_event): Don't check + mac_pass_command_to_system and mac_pass_control_to_system here. + (XTread_socket): Call ActivateControl/DeactivateControl here. + (XTread_socket) [TARGET_API_MAC_CARBON]: + Check mac_pass_command_to_system and mac_pass_control_to_system here. + (mac_handle_window_event) [USE_MAC_TOOLBAR]: Add further workaround + for window repositioning. - * dispnew.c (syms_of_display): Doc fix. +2007-08-08 Glenn Morris - * category.c (Fget_unused_category): Doc fix. + * Replace `iff' in doc-strings and comments. - * buffer.c (syms_of_buffer): Doc fixes. +2007-08-07 Chong Yidong -2001-11-14 Eli Zaretskii + * xdisp.c (move_it_by_lines): Remove incorrect optimization. - * print.c (prin1, print): Doc fix. +2007-08-07 Martin Rudalics -2001-11-14 Pavel Jan,Am(Bk + * fileio.c (Finsert_file_contents): Run format-decode and + after_insert_file_functions on entire buffer when REPLACE is + non-nil and inhibit modification_hooks and point_motion_hooks. + For consistency, run after_insert_file_functions iff something + got inserted. Move signal_after_change and update_compositions + after code running after_insert_file_functions. Make sure that + undo_list doesn't record intermediate steps of the decoding process. - * fontset.h: Remove declarations of variables - `Vhighlight_wrong_size_font' and `Vclip_large_size_font'. +2007-08-07 YAMAMOTO Mitsuharu - * fontset.c: Remove variables `Vhighlight_wrong_size_font' and - `Vclip_large_size_font'. + * emacs.c (main) + [HAVE_GTK_AND_PTHREAD && !SYSTEM_MALLOC && !DOUG_LEA_MALLOC]: + Call malloc_enable_thread on interactive startup. -2001-11-13 Jason Rumney + * gmalloc.c (_malloc_thread_enabled_p) [USE_PTHREAD]: New variable. + (LOCK, UNLOCK, LOCK_ALIGNED_BLOCKS, UNLOCK_ALIGNED_BLOCKS) + [USE_PTHREAD]: Conditionalize with it. + (malloc_atfork_handler_prepare, malloc_atfork_handler_parent) + (malloc_atfork_handler_child, malloc_enable_thread) [USE_PTHREAD]: + New functions. - * w32fns.c: Doc fix. +2007-08-06 Chong Yidong -2001-11-13 Pavel Jan,Am(Bk + * xdisp.c (redisplay_window): When restoring original buffer + position, make sure it is still valid. - * xfaces.c (Fface_attributes_as_vector): Doc fix. + * image.c (png_load): Ignore png-supplied background color. - * fns.c: Doc fix. +2007-08-06 YAMAMOTO Mitsuharu - * emacs.c: Doc fix. + * mac.c [TARGET_API_MAC_CARBON] (cfdate_to_lisp): Obtain microsec value. + Use kCFAbsoluteTimeIntervalSince1970. - * coding.c: Doc fix. + * macmenu.c (quit_dialog_event_loop) [TARGET_API_MAC_CARBON]: + New variable. + [TARGET_API_MAC_CARBON] (mac_handle_dialog_event): Set it if dialog + event loop should be quit. + [TARGET_API_MAC_CARBON] (create_and_show_dialog) [!MAC_OSX]: + Quit dialog event loop if quit_dialog_event_loop is set. + + * macselect.c [!TARGET_API_MAC_CARBON]: Include Scrap.h. + (Selection): New typedef. Use instead of ScrapRef. + (mac_get_selection_from_symbol): Rename from get_scrap_from_symbol. + (mac_valid_selection_target_p): Rename from valid_scrap_target_type_p. + (mac_clear_selection): Rename from clear_scrap. + (get_flavor_type_from_symbol): New argument SEL and subsume function of + scrap_has_target_type. All uses changed. + (mac_get_selection_ownership_info, mac_valid_selection_value_p) + (mac_selection_has_target_p): New functions. + (mac_put_selection_value): Rename from put_scrap_string. + (mac_get_selection_value): Rename from get_scrap_string. + (mac_get_selection_target_list): Rename from get_scrap_target_type_list. + (put_scrap_private_timestamp, scrap_has_target_type) + (get_scrap_private_timestamp): Remove functions. + (SCRAP_FLAVOR_TYPE_EMACS_TIMESTAMP): Remove define. + (x_own_selection, x_get_local_selection): + Use mac_valid_selection_value_p. + (x_own_selection): Don't use put_scrap_private_timestamp. + Record OWNERSHIP-INFO into Vselection_alist instead. + (x_get_local_selection): Don't check type if request is local. + (Fx_selection_owner_p): Don't use get_scrap_private_timestamp. + Detect ownership change with OWNERSHIP-INFO in Vselection_alist instead. + +2007-08-04 Jan Dj,Ad(Brv + + * gtkutil.c (xg_tool_bar_callback): Generate two TOOL_BAR_EVENT:s, + add comment explaining why. - * cmds.c, composite.c, dired.c, doc.c, filelock.c, floatfns.c, - * fontset.c, insdel.c, keymap.c: Change doc-string comments to - `new style' [w/`doc:' keyword]. +2007-08-03 Richard Stallman -2001-11-12 Richard M. Stallman + * fileio.c (Fvisited_file_modtime): Use make_time. - * xterm.c (XTread_socket): Don't update focus for EnterNotify or - LeaveNotify events. Only FocusIn and FocusOut do that now. - (x_display_and_set_cursor): Do display hollow cursors in active - minibuffer windows when they are not selected. +2007-08-01 Ryo Yoshitake (tiny change) -2001-11-12 Jason Rumney + * mac.c (init_mac_osx_environment): Adjust load-path on self-contained + build. - * w32console.c, w32fns.c, w32menu.c, w32proc.c, w32select.c, - * w32term.c: Change doc-string comments to `new style' - [w/`doc:' keyword]. Doc fixes. +2007-07-31 Stefan Monnier - * w32fns.c: Don't define max. - (Fx_open_connection): Only execute once. + * gtkutil.c (xg_tool_bar_callback): Generate a single TOOL_BAR_EVENT. -2001-11-12 Pavel Jan,Am(Bk +2007-07-30 Katsumi Yamaoka - * ccl.c: Change macros to use do-while block instead of if-else. - Use braces to follow GNU Coding Standards. + * puresize.h (BASE_PURESIZE): Increase to 1130000. -2001-11-11 Richard M. Stallman +2007-07-30 Richard Stallman - * sysdep.c (child_setup_tty): Don't clear ICRNL or INLCR. + * lread.c (readevalloop, read1): Treat NBSP as whitespace. - * lread.c (read_escape): Use end_of_file_error for reporting eof. +2007-07-29 Jan Dj,Ad(Brv - * insdel.c (replace_range): Use adjust_markers_for_replace - instead of adjust_markers_for_delete and adjust_markers_for_insert. + * gmalloc.c (__malloc_initialize): Remove pthread_once. Not needed. - * intervals.h (set_text_properties, set_text_properties_1): Declare. +2007-07-28 Nick Roberts - * textprop.c (set_text_properties_1): New subroutine - broken out of set_text_properties. - (set_text_properties): Use set_text_properties_1. + * xdisp.c (decode_mode_spec): Use '@' instead of 'R' to test for + remote default-directory. - * intervals.c (graft_intervals_into_buffer): - Use set_text_properties_1 to clear out properties. + * buffer.c (mode-line-format): Update doc string. - * search.c (Freplace_match): Use replace_range to insert - and delete. Don't request property inheritance from - surrounding text. +2007-07-27 YAMAMOTO Mitsuharu -2001-11-10 Jason Rumney + * w32term.c (w32_draw_fringe_bitmap): Extend fringe background to + scroll bar gap. + (x_scroll_bar_create): Set bar->fringe_extended_p. + (w32_set_vertical_scroll_bar): Put leftmost/rightmost scroll bars + on frame edge. Check fringe background extension. Don't clear + extended fringe background area. - * w32fns.c (enum_font_cb2): Use leading @ on face name to detect - vertical fonts. Allow them if face name is explicitly specified. - Do not give up if we find a font that cannot be converted to an xlfd. + * w32term.h (struct scroll_bar): New member fringe_extended_p. + (w32_fill_area): Enclose multiple statements with do ... while (0). -2001-11-10 Gerd Moellmann + * xterm.c (x_draw_fringe_bitmap) [USE_TOOLKIT_SCROLL_BARS]: + Extend fringe background to scroll bar gap. + (x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: + Set bar->fringe_extended_p. + (XTset_vertical_scroll_bar) [USE_TOOLKIT_SCROLL_BARS]: + Put leftmost/rightmost scroll bars on frame edge. Check fringe + background extension. Don't clear extended fringe background area. - * unexelf.c (unexec): Use mmap/munmap to allocate buffers - instead of malloc/free. + * xterm.h (struct scroll_bar) [USE_TOOLKIT_SCROLL_BARS]: + New member fringe_extended_p. -2001-11-09 Pavel Jan,Am(Bk +2007-07-25 Glenn Morris - * xfaces.c (merge_face_vectors): Use braces to follow GNU - Coding Standards. - (Finternal_set_lisp_face_attribute): Likewise. + * Relicense all FSF files to GPLv3 or later. - * buffer.c (Fbury_buffer): Likewise. + * COPYING: Switch to GPLv3. - * indent.c (current_column_1): Remove unused variable `prev_col'. +2007-07-25 Stefan Monnier - * coding.c (encode_coding): Use precomputed value of `src'. - (encode_coding): Remove unused variable `src_end'. - (code_convert_region): Remove unused variables `count'. + * eval.c (Fcommandp): Pay attention to the `interactive-form' property. -2001-11-07 Jason Rumney + * data.c (Finteractive_form): Check for the presence of an + `interactive-form' symbol property more thoroughly. - * w32term.c (x_display_and_set_cursor): Do not move system caret - if cursor_glyph is NULL. + * data.c (Finteractive_form): Use an `interactive-form' property if + present, analogous to the function-documentation property. -2001-11-07 Pavel Jan,Am(Bk +2007-07-24 Jason Rumney - * keymap.c (access_keymap): Fix compilation error. + * w32fns.c (x_real_positions): Get real position from OS instead of + calculating it. -2001-11-07 Miles Bader +2007-07-23 Jason Rumney - * xfns.c (x_set_frame_parameters): Avoid infinite recursion. + * filelock.c (current_lock_owner): Allow for @ sign in username. -2001-11-07 Pavel Jan,Am(Bk +2007-07-22 Nick Roberts - * intervals.c (graft_intervals_into_buffer): - Remove #ifdef'd-out code. - (graft_intervals_into_buffer): Remove unused variable `middle'. + * xdisp.c (decode_mode_spec): Add case 'R' for to test for + remote default-directory. - * lread.c (Feval_region): Remove obsolete #ifdef'd-out - code (eval-current-buffer). - Change doc-string comments to `new style' [w/`doc:' keyword]. + * buffer.c (mode-line-format): Describe above case in doc string. -2001-11-06 Richard M. Stallman +2007-07-20 Eli Zaretskii - * keymap.c (access_keymap): Don't use initializers on Lisp_Object. + * w32proc.c (IMAGE_NT_OPTIONAL_HDR32_MAGIC, IMAGE_OPTIONAL_HEADER32): + Define if not defined. -2001-11-06 Stefan Monnier +2007-07-18 Jason Rumney - * lread.c (read1): Fix behavior with nested backquoting. + * w32proc.c (w32_executable_type): Handle 64 bit executables. - * keyboard.c (make_lispy_event): Check integerness and fix - Lisp_Object/int mixup. +2007-07-18 Richard Stallman -2001-11-06 Pavel Jan,Am(Bk + * data.c (Fsetq_default): Doc fix. - * fns.c (copy_hash_table): Remove unused variable `v'. + * eval.c (Fsetq): Doc fix. - * fontset.c (fontset_font_pattern): Remove unused variable - `family_registry'. +2007-07-18 Juanma Barranquero - * indent.c (current_column_1): Remove unused variable `prev_col'. + * coding.c (Ffind_operation_coding_system): + * eval.c (For, Fand): Doc fixes. + Reported by Johan Bockg,Ae(Brd. -2001-11-05 Richard M. Stallman +2007-07-18 Jan Dj,Ad(Brv - * m/news-risc.h (BROKEN_PROTOTYPES): Defined. + * xfns.c (Fx_focus_frame): Call x_ewmh_activate_frame. - * buffer.c (Fkill_buffer): Don't delete auto save file - if buffer is modified. + * xterm.h: Declare x_ewmh_activate_frame. -2001-11-05 Andrew Innes + * xterm.c (x_ewmh_activate_frame): New function. + (XTframe_raise_lower): Move code to x_ewmh_activate_frame. - * w32proc.c (Fw32_set_keyboard_layout): Use CHECK_NUMBER_CAR and - CHECK_NUMBER_CDR. +2007-07-17 Martin Rudalics -2001-11-05 Richard M. Stallman + * window.c (Fdisplay_buffer): If largest or LRU window is the + only window, split it even if it is not eligible for splitting. + This restores the original behavior broken by the 2007-07-15 + change. - * unexelf.c (unexec): Minor changes; clean up comments. +2007-07-17 Glenn Morris -2001-11-05 Sam Steingold + * abbrev.c (abbrev_check_chars): New function. + (Fdefine_global_abbrev, Fdefine_mode_abbrev): + Call abbrev_check_chars to check abbrev characters are word + constituents. Doc fix. - * w32term.c (x_display_and_set_cursor): Fix w32 compilation error. +2007-07-17 Stefan Monnier -2001-11-05 Andreas Schwab + * process.c (Fstart_process, Fmake_network_process) + (read_process_output): Fix up last changes. - * sound.c (sound_perror): Save errno from being clobbered. +2007-07-16 Eli Zaretskii -2001-11-05 Dale Hagglund + * makefile.w32-in (clean): Don't delete *~. - * unexelf.c (unexec): Don't use `mmap'. Instead, read and write - the program image directly. +2007-07-16 Andreas Schwab -2001-11-05 Pavel Jan,Am(Bk + * window.c (Fdisplay_buffer): Use NILP. + (Fset_window_scroll_bars): Likewise. - * buffer.h (Fbuffer_local_value): Add prototype. +2007-07-15 Martin Rudalics -2001-11-04 Richard M. Stallman + * window.c (window_min_size_2): New function. + (window_min_size_1, size_window, Fdisplay_buffer) + (Fsplit_window, adjust_window_trailing_edge): Use it to avoid + windows without mode- or header-lines when window-min-height is + too small. + (size_window): Reset nodelete_p after testing it, following an + earlier note by Kim F. Storm. + (display_buffer): Do not set split_height_threshold to twice the + value of window_min_height to avoid changing the value of a + customizable variable. Rather explicitly check whether the + height of the window that shall be splitted is at least as large + as split_height_threshold. + (Fwindow_full_width_p): New defun. + (syms_of_window): Defsubr it. - * buffer.c (Fbuffer_local_value): Remove extra args from CHECK_SYMBOL - and CHECK_BUFFER. + * window.h: Add EXFUN for Fwindow_full_width_p. - * keyboard.c (read_char): Use Fcar and Fcdr, not Fnth. - (record_char): Likewise. +2007-07-14 Jason Rumney - * keyboard.c (make_lispy_event): Don't insist a drag event must - move to a different buffer position. Instead, check for moving at - least double_click_fuzz. + * process.c [WINDOWSNT]: Don't undefine AF_INET6. - * fns.c (Fmake_hash_table): Use XCAR and XCDR, not Fnth and Flength. +2007-07-14 Richard Stallman - * keyboard.c (echo-area-clear-hook): Undo Oct 29 change. + * eval.c (maybe_call_debugger): New function. + (find_handler_clause): Use maybe_call_debugger. + Call it when the handler says `debug'. + Eliminate DEBUGGER_VALUE_PTR. + (Fsignal): Eliminate debugger_value. + (Qdebug): New variable. + (syms_of_eval): Initialize it. - * indent.c (current_column_1, Fmove_to_column): Separate the code - for display-table glyphs from the code for buffer text, to fix - bugs in the former. +2007-07-14 Juanma Barranquero -2001-11-04 Michael Welsh Duggan + * eval.c (Fprogn): + * keyboard.c (Ftrack_mouse): + * print.c (Fwith_output_to_temp_buffer): + * window.c (Fsave_window_excursion): Doc fix. - * buffer.c (Fbuffer_local_value): New function. - (syms_of_buffer): Defsubr it. +2007-07-13 Stefan Monnier - * xterm.c, w32term.c (x_display_and_set_cursor): Use buffer-local - value of `cursor-in-non-selected-windows'. + * eval.c (init_eval_once): Bump max_lisp_eval_depth to 400. - * lisp.h (Qcursor_in_non_selected_windows): New declaration. - * xdisp.c (Qcursor_in_non_selected_windows): New variable. - (syms_of_xdisp): Initialize it. +2007-07-12 Stefan Monnier -2001-11-04 Pavel Jan,Am(Bk + * process.h (struct Lisp_Process): Turn slots infd, outfd, + kill_without_query, pty_flag, tick, update_tick, decoding_carryover, + inherit_coding_system_flag, filter_multibyte, adaptive_read_buffering, + read_output_delay, and read_output_skip from Lisp_Objects to ints. + Remove unused encoding_carryover. + * process.c: Adjust all functions accordingly. - * xfns.c (Fx_create_frame): Doc fix. +2007-07-12 Richard Stallman - * coding.c: Change doc-string comments to `new style' [w/`doc:' - keyword]. + * term.c: Include unistd.h only if HAVE_UNISTD_H. - * eval.c (top_level_value, top_level_set): Remove commented and - #ifdef'd-out code. - (Fdefvar): Fix usage in doc-string. +2007-07-11 Jason Rumney -2001-11-03 Richard M. Stallman + * makefile.w32-in (LIBS): Include OLE32. - * xfns.c: Include unistd.h, if it exists. + * w32fns.c (w32_msg_pump) : Initialize COM. + (w32_msg_pump) : Uninitialize COM. - * editfns.c: Move the include of ctype.h after unistd.h. +2007-07-11 Stefan Monnier - * gmalloc.c: Test BROKEN_PROTOTYPES. + * lisp.h (struct Lisp_Hash_Table): Turn next_weak into a bare pointer. + * fns.c (weak_hash_tables): Rename from Vweak_hash_tables and turned + from a Lisp_Object into a bare pointer. + (make_hash_table, copy_hash_table, sweep_weak_hash_tables, init_fns): + Adjust the code correspondingly. -2001-11-03 Ken Raeburn + * alloc.c (emacs_blocked_free): Remove unused var `bytes_used_now'. - * lisp.h (CHECK_STRING_CAR): New macro. - * lread.c (Fload): Use XSETCARFASTINT, XSETCDRFASTINT instead of - treating XCAR and XCDR as lvalues. - (openp): Use CHECK_STRING_CAR. - (read_list): Use XSETCDR instead of treating XCDR as lvalue. + * term.c: Include unistd.h for ttyname, used in handle_one_term_event. + (term_show_mouse_face): Remove unused var `j'. + (handle_one_term_event): Remove unused vars `i' and `j'. + Don't cast return value of ttyname since it's not necessary. -2001-11-03 Eli Zaretskii +2007-07-10 Stefan Monnier - * s/sco5.h (sigprocmask_set): Declare as extern SIGMASKTYPE. - (SIGMASKTYPE): Define. + * alloc.c (mark_maybe_pointer): Enforce mult-of-8 alignment when using + USE_LSB_TAG. Suggested by Dmitry Antipov . - * syssignal.h (sigunblock): Don't define if already defined. + * fns.c (map_char_table): Use an array of int for `indices' rather than + an array of Lisp_Objects (which are only ever integers anyway). + (Fmap_char_table): Update caller. + * lisp.h: Update prototype. + * keymap.c (Fset_keymap_parent, map_keymap, Fcopy_keymap): + * fontset.c (Ffontset_info): + * casetab.c (set_case_table): Update callers. -2001-11-02 Pavel Jan,Am(Bk + * editfns.c (Ftranspose_regions): Use EMACS_INT for positions. - * eval.c (debugger_may_continue, Vdebug_ignored_errors) - (call_debugger, Fcondition_case, skip_debugger, unbind_to): - Fix typos in comments. + * keymap.c (struct accessible_keymaps_data) + (struct where_is_internal_data): New structures. + (accessible_keymaps_1, where_is_internal_1): Use them to change + interface to adhere to the one used by map_keymap. + (Faccessible_keymaps, where_is_internal): Use map_keymap. + (accessible_keymaps_char_table, where_is_internal_2): Remove. - * mocklisp.c (Fml_defun, Fml_while, Fml_substr): Remove commented - and #ifdef'd-out code. - Fix and reindent comments. + * keymap.h (map_keymap_function_t): More informative prototype. - * mocklisp.h: Remove comment which is a copy of comment in mocklisp.c. +2007-07-10 Guanpeng Xu - * category.h (CHECK_CATEGORY, CHECK_CATEGORY_SET): Remove unused - argument `i' in macros. + * search.c (Vinhibit_changing_match_data, search_regs_1): New vars. + (looking_at_1): Don't change search_regs and last_thing_searched + if `inhibit-changing-match-data' is non-nil. + (string_match_1, search_buffer, set_search_regs): Likewise. + (syms_of_search): Add Lisp level definition for + `inhibit-changing-match-data' and set it to nil. + (boyer_moore): If `inhibit-changing-match-data' is non-nil, compute + start and end of the match, instead of using values in search_regs. - * frame.h (CHECK_FRAME, CHECK_LIVE_FRAME): Remove unused argument - `i' in macros. +2007-07-01 Stefan Monnier - * lisp.h (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST) - (CHECK_STRING, CHECK_CONS, CHECK_SYMBOL, CHECK_CHAR_TABLE) - (CHECK_VECTOR, CHECK_VECTOR_OR_CHAR_TABLE, CHECK_BUFFER) - (CHECK_WINDOW, CHECK_LIVE_WINDOW, CHECK_PROCESS, CHECK_NUMBER) - (CHECK_NATNUM, CHECK_MARKER, CHECK_NUMBER_COERCE_MARKER) - (CHECK_FLOAT, CHECK_NUMBER_OR_FLOAT) - (CHECK_NUMBER_OR_FLOAT_COERCE_MARKER, CHECK_OVERLAY) - (CHECK_NUMBER_CAR, CHECK_NUMBER_CDR): Remove unused argument `i' - in macros. + * minibuf.c (Fcompleting_read): New value `confirm-only' + for `require-match'. - * abbrev.c, alloc.c, buffer.c, bytecode.c, callint.c, callproc.c, - * casefiddle.c, category.c, ccl.c, charset.c, cmds.c, coding.c, - * composite.c, data.c, dired.c, dispnew.c, doc.c, dosfns.c, emacs.c, - * eval.c, fileio.c, filelock.c, fns.c, fontset.c, frame.c, frame.h, - * indent.c, keyboard.c, keymap.c, lread.c, macros.c, marker.c, - * minibuf.c, mocklisp.c, msdos.c, print.c, process.c, search.c, - * sunfns.c, syntax.c, textprop.c, undo.c, w16select.c, w32console.c, - * w32fns.c, w32menu.c, w32proc.c, w32select.c, window.c, xdisp.c, - * xfaces.c, xmenu.c, xselect.c: Update usage of CHECK_ macros - (remove unused second argument). +2007-06-28 Stefan Monnier -2001-11-02 Stefan Monnier + * fileio.c (Fdo_auto_save): Revert last patch installed unwillingly as + part of the 2007-06-27 change to syms_of_fileio. - * syntax.c (describe_syntax): New wrapper. - (Finternal_describe_syntax_value): Rename from describe_syntax. - Don't insert space at front and \n at the end. - (syms_of_syntax): Defsubr Sinternal_describe_syntax_value. +2007-06-28 YAMAMOTO Mitsuharu - * regex.c (re_wctype): Try to fix some warnings. - (regcomp, regexec): Don't forget the __restrict. + * macterm.c [USE_MAC_TSM] (mac_handle_text_input_event): + Check WINDOWP before using XWINDOW. Consolidate return statements. -2001-11-02 Richard M. Stallman +2007-06-27 Richard Stallman - * textprop.c (Fget_char_property): Doc fix. + * fileio.c (syms_of_fileio) : Doc fix. -2001-11-02 Pavel Jan,Am(Bk +2007-06-27 Juanma Barranquero - * process.c (Fstart_process): Add usage to doc-string. + * buffer.c (syms_of_buffer) : Fix typo in docstring. - * data.c (Fsetq_default): Ditto. +2007-06-26 YAMAMOTO Mitsuharu - * callint.c (Finteractive): Ditto. + * gmalloc.c [HAVE_GTK_AND_PTHREAD]: Check this after including config.h. + (_aligned_blocks_mutex) [USE_PTHREAD]: New variable. + (LOCK_ALIGNED_BLOCKS, UNLOCK_ALIGNED_BLOCKS): New macros. + (_free_internal, memalign): Use them. + (_malloc_mutex, _aligned_blocks_mutex) [USE_PTHREAD]: + Initialize to PTHREAD_MUTEX_INITIALIZER. + (malloc_initialize_1) [USE_PTHREAD]: Don't use recursive mutex. + (morecore_nolock): Rename from morecore. All uses changed. + Use only nolock versions of internal allocation functions. + (_malloc_internal_nolock, _realloc_internal_nolock) + (_free_internal_nolock): New functions created from + _malloc_internal, _realloc_internal, and _free_internal. + (_malloc_internal, _realloc_internal, _free_internal): Use them. + Copy hook value to automatic variable before its use. + (memalign): Copy hook value to automatic variable before its use. -2001-11-01 Stefan Monnier +2007-06-26 Kenichi Handa - * macros.c: Don't include keymap.h any more. + * coding.c (Ffind_operation_coding_system): Docstring improved. + (syms_of_coding): Docstring of `file-coding-system-alist' improved. -2001-11-01 Richard M. Stallman +2007-06-25 David Kastrup - * data.c (Fmake_local_variable): Doc fix. + * keymap.c (Fcurrent_active_maps): Add `position' argument. + (Fwhere_is_internal): Adjust call to `current-active-maps' to + cater for additional parameter. - * eval.c (Frun_hooks, Frun_hook_with_args_until_failure): Doc fix. - (Frun_hook_with_args_until_success, Frun_hook_with_args): Doc fix. + * keymap.h: Adjust number of parameters to `current-active-maps'. - * keymap.c (Fdescribe_buffer_bindings): Print character property - bindings along with or instead of the buffer local map. - Make the overriding maps override what they should. + * doc.c (Fsubstitute_command_keys): Adjust call of + `current-active-maps'. -2001-11-01 Pavel Jan,Am(Bk +2007-06-25 David Kastrup - * window.c (grow_mini_window): Fix typo in comment. + * callint.c (Fcall_interactively): Make the parsing of interactive + specs somewhat more readable. -2001-11-01 Gerd Moellmann +2007-06-23 YAMAMOTO Mitsuharu - * xterm.c (x_scroll_bar_create): Check for width and height > 0. - (XTset_vertical_scroll_bar): Likewise. + * macterm.c (x_draw_fringe_bitmap) [MAC_OSX]: Extend fringe background + to scroll bar gap also when bitmap fills fringe. Draw only foreground + if extended background has already been filled. - * xfns.c (x_build_heuristic_mask): Use four_corners_best - instead of IMAGE_BACKGROUND. +2007-06-22 YAMAMOTO Mitsuharu - * xfns.c (four_corners_best): Reindent. + * macgui.h (USE_CG_DRAWING): Don't require USE_ATSUI. + (USE_MAC_TOOLBAR): Require USE_CG_DRAWING. - * xfaces.c (Finternal_set_lisp_face_attribute_from_resource): - Handle :box so that it is possible to specify sexprs. + * macmenu.c (mac_dialog_modal_filter, Fx_popup_dialog) [MAC_OSX]: + Put special treatment for Fmessage_box, Fyes_or_no_p, and Fy_or_n_p + in #if 0 as it is not compatible with y-or-n-p-with-timeout. + (timer_check) [TARGET_API_MAC_CARBON]: Add extern. + [TARGET_API_MAC_CARBON] (mac_handle_dialog_event): Use QuitEventLoop + instead of QuitAppModalLoopForWindow. Consolidate QuitEventLoop calls. + (pop_down_dialog) [TARGET_API_MAC_CARBON]: New function. + [TARGET_API_MAC_CARBON] (create_and_show_dialog): Use it for unwind. + Run timers during dialog popup. + (Fmenu_or_popup_active_p) [TARGET_API_MAC_CARBON]: Use popup_activated. -2001-10-31 Eli Zaretskii +2007-06-21 Jason Rumney - * s/hpux11.h: New file. + * image.c (convert_mono_to_color_image): Swap fore and background. -2001-10-31 Pavel Jan,Am(Bk +2007-06-20 Jason Rumney - * emacs.c (USAGE1): Show command line option --no-window-system - instead of --no-windows in usage. - (standard_args): Rename --no-windows to --no-window-system. - (bug_reporting_address): Follow Emacs coding conventions. + * w32bdf.c (w32_BDF_to_x_font): Unmap memory when finished. + (w32_free_bdf_font): Unmap memory not handle. - * eval.c (Fcommandp): Doc fix. - Change doc-string comments to `new style' [w/`doc:' keyword]. +2007-06-20 Sam Steingold - * frame.c (Fframe_live_p): Doc fix. + * gmalloc.c (__morecore): Fix the declaration to comply with the + definition. - * buffer.c (selective-display-ellipses): Doc fix. +2007-06-20 Juanma Barranquero -2001-10-31 Gerd Moellmann + * w32term.c (w32_delete_display): Remove leftover declaration. + (w32_define_cursor, w32_initialize): Make static. - * lread.c (to_multibyte): Fix computation of new read_buffer_size. + * w32.c (_wsa_errlist): Fix typo in error message. + (init_environment): Ignore any environment variable from the + registry having a null value. - * xfaces.c (realize_x_face): If C is not a single-byte character, - set the face's colors_copied_bitwise_p instead of the defaulted_p - members which have a different meaning. - (free_face_colors): Do nothing for a face whose colors have been - copied bitwise. +2007-06-20 Glenn Morris - * dispextern.h (struct face) : New member. + * Makefile.in (LIBGIF): Default to -lgif. -2001-10-31 Pavel Jan,Am(Bk +2007-06-17 Jason Rumney - * marker.c, mocklisp.c: Change doc-string comments to `new style' - [w/`doc:' keyword]. + * w32menu.c (add_menu_item): Don't use multibyte string functions on + unicode strings. -2001-10-31 Gerd Moellmann +2007-06-16 Juanma Barranquero - * fns.c (require_unwind): Return Lisp_Object. + * xdisp.c (syms_of_xdisp) : + Fix typo in docstring. -2001-10-31 Pavel Jan,Am(Bk +2007-06-16 Eli Zaretskii - * keyboard.c (lucid-menu-bar-dirty-flag): Doc fix. - (last-input-char): Revert doc-string to be the same as the - doc-string of `last-input-event'. + * w32menu.c (add_menu_item): Escape `&' characters in menu items + and their keybindings. - * xdisp.c: Fix typos in comments. +2007-06-15 Chong Yidong -2001-10-31 Gerd Moellmann + * composite.c (update_compositions): Fix last fix. - * window.c (grow_mini_window): Handle case that the root - window is already smaller than the nominal mininum height. +2007-06-14 Jason Rumney -2001-10-30 Stefan Monnier + * w32.c (get_process_times_fn): New function pointer. + (globals_of_w32): Intialize it if present in kernel32.dll. + (w32_get_internal_run_time): New function. - * emacs.c (main): Don't call keys_of_macros any more. + * editfns.c (Fget_internal_run_time) [WINDOWSNT]: Use it. - * lisp.h (keys_of_macros): Remove. +2007-06-14 Kenichi Handa - * macros.c (keys_of_macros): Remove. + * composite.c (update_compositions): Check the validness of + compositions. - * xfaces.c (Fface_attribute_relative_p): Declare args. +2007-06-14 YAMAMOTO Mitsuharu -2001-10-30 Jason Rumney + * frame.h (struct frame) [MAC_OS]: New member external_tool_bar. + (FRAME_EXTERNAL_TOOL_BAR) [MAC_OS]: Use it. - * w32fns.c (w32_to_x_charset): Increase size of XLFD charset buffer. - (enum_font_cb2): Ignore fonts with vertical orientation. + * macfns.c (mac_window) [USE_MAC_TOOLBAR]: Set toolbar_win_gravity. + (x_set_tool_bar_lines) [USE_MAC_TOOLBAR]: Set FRAME_EXTERNAL_TOOL_BAR. -2001-10-30 Richard M. Stallman + * macgui.h (USE_MAC_TOOLBAR): New define. - * keyboard.c (Finput_pending_p): Doc fix. + * macmenu.c [TARGET_API_MAC_CARBON] (menu_target_item_handler): + Return immediately unless popup is activated. -2001-10-30 Gerd Moellmann + * macterm.c (x_draw_fringe_bitmap) [MAC_OSX]: Extend fringe + background to scroll bar gap. + (x_scroll_bar_create) [MAC_OSX]: Set bar->fringe_extended_p. + (XTset_vertical_scroll_bar) [MAC_OSX]: Put leftmost/rightmost + scroll bars on frame edge. Check fringe background extension. + Don't clear extended fringe background area. + (TOOLBAR_IDENTIFIER, TOOLBAR_ICON_ITEM_IDENTIFIER) + (TOOLBAR_ITEM_COMMAND_ID_OFFSET, TOOLBAR_ITEM_COMMAND_ID_P) + (TOOLBAR_ITEM_COMMAND_ID_VALUE, TOOLBAR_ITEM_MAKE_COMMAND_ID): + [USE_MAC_TOOLBAR]: New macros. + (mac_move_window_with_gravity, mac_get_window_origin_with_gravity) + (mac_handle_toolbar_event, mac_image_spec_to_cg_image) + (mac_create_frame_tool_bar, update_frame_tool_bar, free_frame_tool_bar) + (mac_tool_bar_note_mouse_movement, mac_handle_toolbar_command_event) + [USE_MAC_TOOLBAR]: New functions. + (mac_handle_window_event) [USE_MAC_TOOLBAR]: Reposition window + manually if previous repositioning has failed. + (mac_handle_keyboard_event): Use precomputed event kind. + (XTread_socket) [USE_MAC_TOOLBAR]: Handle click in structure region + as tool bar item click. Handle mouse movement over tool bar items. - * xterm.c (x_after_update_window_line): Don't run the code - clearing in borders for rows whose visible height is 0. + * macterm.h (struct mac_output) [USE_MAC_TOOLBAR]: New member + toolbar_win_gravity. + (struct scroll_bar) [MAC_OSX]: New member fringe_extended_p. + (update_frame_tool_bar, free_frame_tool_bar) [USE_MAC_TOOLBAR]: + Add externs. - * xdisp.c (clear_garbaged_frames): Redraw the frame only if its - resized_p flag is set. If not set, use the much less flickering - method previously used. + * xdisp.c (update_tool_bar, redisplay_tool_bar, redisplay_window) + [USE_MAC_TOOLBAR]: Sync with GTK+ tool bar display. - * dispnew.c (change_frame_size_1): Set frame's resized_p. +2007-06-14 Chong Yidong - * frame.h (struct frame) : New member. + * image.c (search_image_cache): Remove unused variable. - * lread.c (to_multibyte): Ensure read_buffer is at least twice - as large as the number of bytes to convert. +2007-06-13 Chong Yidong - * lread.c (to_multibyte): New function. - (read1): Use it. + * xfns.c, xmenu.c: Link to xaw3d if available. -2001-10-30 Eli Zaretskii +2007-06-13 YAMAMOTO Mitsuharu - * msdos.h (FRAME_LINE_HEIGHT): Define (it's used by xmenu.c). + * dispextern.h (struct image) [HAVE_WINDOW_SYSTEM]: New members + frame_foreground and frame_background. -2001-10-30 Gerd Moellmann + * image.c (lookup_image): Save frame foreground and background colors. + (search_image_cache): Check if saved and current frame colors match. - * xterm.c (x_draw_relief_rect): Correct bottom relief by 1 pixel. - (x_set_glyph_string_background_width): Set extends_to_end_of_line_p - if the row's fill_line_p is set and drawing the last glyph with - DRAW_IMAGE_{RAISED,SUNKEN}. +2007-06-12 Stefan Monnier - * xdisp.c (clear_garbaged_frames): Call Fredraw_frame. + * regex.c (regex_compile): Remove the `regnum' counter. + Use bufp->re_nsub instead. Add support for \(?N:RE\). -2001-10-29 Stefan Monnier +2007-06-11 Stefan Monnier - * xmenu.c: Include coding.h and charset.h. - (Fx_popup_menu): Use FRAME_PTR and FRAME_FONT and FRAME_LINE_HEIGHT. - (Fx_popup_dialog): Use FRAME_PTR and enum scroll_bar_part. - (single_submenu, xmenu_show): Use ENCODE_SYSTEM. - Explicitly set wv->help. Use `TRUE' rather than `True'. - (menu_help_callback): Use empty_string. + * term.c: Include intervals.h to declare Fget_text_property. - * w32menu.c (Fx_popup_menu): Explicitly init f, xpos, and ypos. - (Fx_popup_dialog): Explicitly init f. - (w32_menu_display_help): Use empty_string. +2007-06-10 Jason Rumney -2001-10-29 Richard M. Stallman + * w32fns.c (Fx_file_dialog): Take size from struct not pointer. - * fns.c (Frequire): Detect recursive try to require the same - feature 3 or more levels deep, and get error. - (require_unwind): New subroutine. - (require_nesting_list): New variable. - (syms_of_fns): Init and staticpro it. +2007-06-08 Juanma Barranquero - * print.c (print_object): Clarify indication of insertion type. + * callint.c (Fcall_interactively): + * editfns.c (Fdelete_and_extract_region): + * fileio.c (Fread_file_name): + * fns.c (Fmapconcat): + * keyboard.c (cmd_error_internal): + * keymap.c (Fkey_description): + * lread.c (openp): + * minibuf.c (read_minibuf): + * search.c (wordify): + * sunfns.c (sel_read): + * xdisp.c (Fformat_mode_line, syms_of_xdisp): + * xfns.c (x_default_scroll_bar_color_parameter): + * xmenu.c (menu_help_callback): + * xselect.c (Fx_get_atom_name): + * xterm.c (x_term_init): Use empty_unibyte_string. -2001-10-29 Eli Zaretskii +2007-06-08 Dmitry Antipov (tiny change) - * coding.c (syms_of_coding): Document that locale-coding-system is - used for decoding input on X. + * alloc.c (init_strings): Initialize canonical empty strings. + (make_uninit_string, make_uninit_multibyte_string): Return appropriate + canonical empty string when the requested size is 0. - * window.c (Fscroll_left, Fscroll_right): Doc fix. + * emacs.c (empty_unibyte_string): Rename from empty_string. + (empty_multibyte_string): New canonical empty string. + (syms_of_emacs): Don't initialize empty_string. -2001-10-29 Pavel Jan,Am(Bk + * lisp.h (STRING_SET_UNIBYTE): Return the canonical empty unibyte + string, if appropriate. + (empty_unibyte_string, empty_multibyte_string): New externs. + (empty_string): Remove extern. - * keyboard.c (Finput_pending_p): Fix typo in doc-string. - (echo-area-clear-hook): Properly DEFVAR_LISP and staticpro it. + * lread.c (syms_of_lread): Use empty_unibyte_string. -2001-10-29 Gerd Moellmann +2007-06-07 Jason Rumney - * xterm.c (x_display_and_set_cursor): If cursor_in_echo_area, - use NO_CURSOR if cursor_in_non_selected_windows is false. + * s/ms-w32.h: Don't define HAVE_TZNAME. - * xfaces.c (Fface_font): Use UNSPECIFIEDP instead of NILP for - the slant attribute if FRAME is t. + * editfns.c (Fcurrent_time_zone): Remove hack for Japanese Windows. - * xfns.c (x_set_internal_border_width): Set frame garbaged - when X window doesn't exist yet. +2007-06-07 YAMAMOTO Mitsuharu - * xterm.c (x_after_update_window_line): Clear internal border - in different circumstances. + * mac.c (xrm_get_preference_database): Remove BLOCK_INPUT. - * xterm.c (XTread_socket) : Don't use - STRING_CHAR_AND_LENGTH if nchars == nbytes. From Kenichi Handa - . + * macfns.c (mac_get_window_bounds): Move extern to macterm.h. + (compute_tip_xy) [TARGET_API_MAC_CARBON]: Use GetGlobalMouse. -2001-10-28 Eli Zaretskii + * macmenu.c [TARGET_API_MAC_CARBON] (menu_target_item_handler): + Don't call next handler. + [TARGET_API_MAC_CARBON] (install_menu_target_item_handler): + Remove argument. Install handler to application. + (set_frame_menubar): Don't change deep_p. + (mac_menu_show): Use FRAME_OUTER_TO_INNER_DIFF_X and + FRAME_OUTER_TO_INNER_DIFF_Y. + (DIALOG_BUTTON_COMMAND_ID_OFFSET, DIALOG_BUTTON_COMMAND_ID_P) + (DIALOG_BUTTON_COMMAND_ID_VALUE, DIALOG_BUTTON_MAKE_COMMAND_ID) + [HAVE_DIALOGS]: New macros. + [HAVE_DIALOGS] (mac_handle_dialog_event, create_and_show_dialog): + Use them. + (fill_menubar) [TARGET_API_MAC_CARBON]: Use CFString. + + * macselect.c [MAC_OSX] (install_service_handler): Rename from + init_service_handler. All callers changed. Return OSStatus value. + + * macterm.c (mac_begin_cg_clip): New arg F. Call SetPortWindowPort. + All callers changed so as not to call SetPortWindowPort. + (mac_begin_cg_clip) [USE_CG_DRAWING]: Call mac_prepare_for_quickdraw. + (mac_draw_image_string_atsui) [USE_ATSUI]: New function created from + mac_draw_string_common. + (mac_draw_image_string_qd): Likewise. + (mac_draw_string_common): Use them. Add INLINE. + (XTmouse_position, x_scroll_bar_report_motion) [TARGET_API_MAC_CARBON]: + Use FRAME_OUTER_TO_INNER_DIFF_X, FRAME_OUTER_TO_INNER_DIFF_Y, and + GetGlobalMouse. + (x_set_mouse_pixel_position) [MAC_OSX]: Use FRAME_OUTER_TO_INNER_DIFF_X + and FRAME_OUTER_TO_INNER_DIFF_Y. + [TARGET_API_MAC_CARBON] (mac_handle_mouse_event): Likewise. + [USE_MAC_TSM] (mac_handle_text_input_event): Likewise. + (x_make_frame_visible) [TARGET_API_MAC_CARBON]: Move code for + repositioning window to mac_handle_window_event. + (x_make_frame_invisible) [TARGET_API_MAC_CARBON]: Move code for + saving window location to mac_handle_window_event + [USE_MAC_FONT_PANEL] (mac_show_hide_font_panel): Install handler here. + (install_menu_target_item_handler): Remove argument in extern. + [TARGET_API_MAC_CARBON] (mac_event_to_emacs_modifiers): + Also accept command events. + (do_keystroke): New function created from XTread_socket. + (init_command_handler): Remove functions. + [TARGET_API_MAC_CARBON] (mac_handle_window_event): Reposition window + and save window location by kEventWindowShowing and kEventWindowHiding + handlers here. Don't call next handler for window state change and + focus events. + (mac_handle_application_event, mac_handle_keyboard_event) + [TARGET_API_MAC_CARBON]: New functions. + (install_window_handler) [TARGET_API_MAC_CARBON]: Register handlers for + kEventWindowShowing and kEventWindowHiding events. Move installation + of mouse, font, text input and menu target item handlers to + install_application_handler. + (install_application_handler) [TARGET_API_MAC_CARBON]: New function. + (mac_handle_cg_display_reconfig) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: + New function. + (init_dm_notification_handler) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: + Register it. + (XTread_socket) [TARGET_API_MAC_CARBON]: + Consolidate SendEventToEventTarget calls. + Use FRAME_OUTER_TO_INNER_DIFF_X and FRAME_OUTER_TO_INNER_DIFF_Y. + Move application activation handler to mac_handle_application_event. + Move keyboard handler to mac_handle_keyboard_event. + (XTread_socket) [!TARGET_API_MAC_CARBON]: Use do_keystroke. + (mac_initialize) [TARGET_API_MAC_CARBON]: Don't call + init_command_handler. Call install_application_handler. - * m/ibms390.h: New file. From Adam Thornton - . + * macterm.h (mac_get_window_bounds): Move extern from macfns.c. + (FRAME_OUTER_TO_INNER_DIFF_X, FRAME_OUTER_TO_INNER_DIFF_Y): New macros. -2001-10-28 Gerd Moellmann +2007-06-07 Glenn Morris - * xfns.c (x_build_heuristic_mask): Use x_alloc_image_color. + * emacs.c (main): Use `emacs-copyright' in --version output. - * xfns.c (x_build_heuristic_mask): Fix a bug not incrementing - a loop counter. +2007-06-06 Chong Yidong -2001-10-28 Pavel Jan,Am(Bk + * image.c (xpm_load): Remove spurious call to xpm_init_color_cache. - * emacs.c: Use argv[0] instead of "emacs" when -t was specified. +2007-06-06 YAMAMOTO Mitsuharu - * keyboard.c: Change doc-string comments to `new style' [w/`doc:' - keyword]. - Fix typos in comments. + * macfns.c (mac_window): Replace WindowPtr with WindowRef. - * emacs.c (bug_reporting_address): New function. - Use it when displaying usage message. + * macgui.h: Replace WindowPtr with WindowRef. - * minibuf.c (read_minibuf): Remove unused external declaration of - variable `Qread_only'. + * macmenu.c: Replace MenuHandle and GetMenuHandle with MenuRef and + GetMenuRef, respectively. Replace WindowPtr with WindowRef. + Replace ControlHandle with ControlRef. + (install_menu_quit_handler): Rename arg MENU_HANDLE to ROOT_MENU. - * keymap.c (access_keymap): Remove unused variable `charset'. + * macterm.c: Replace MenuHandle and GetMenuHandle with MenuRef and + GetMenuRef, respectively. Replace WindowPtr with WindowRef. + Replace ControlHandle with ControlRef. + (USE_CARBON_EVENTS): Remove. Use TARGET_API_MAC_CARBON instead. + [MAC_OS8] (do_get_menus): Rename variable `menu_handle' to `menu'. -2001-10-28 Miles Bader + * macterm.h (struct scroll_bar): Rename member control_handle_low + and control_handle_high to control_ref_low and control_ref_high. + All uses changed. + (SCROLL_BAR_CONTROL_REF, SET_SCROLL_BAR_CONTROL_REF): Rename from + SCROLL_BAR_CONTROL_HANDLE and SET_SCROLL_BAR_CONTROL_HANDLE, + respectively. All uses changed. + (XCreatePixmap, XCreatePixmapFromBitmapData, XSetWindowBackground) + (install_window_handler, remove_window_handler): Replace WindowPtr + with WindowRef in externs. - * xfaces.c (merge_face_heights): Handle TO being relative as well. - Remove #ifdef'd-out code. - (Fface_attribute_relative_p, Fmerge_face_attribute): New functions. - (syms_of_xfaces): Initialize them. +2007-06-05 Juanma Barranquero -2001-10-27 Jason Rumney + * xfaces.c (Finternal_lisp_face_p): Signal error for face alias loops. - * w32fns.c (w32_wnd_proc) : Destroy the system caret. - : Track cursor - position using the system caret. +2007-06-03 Nick Roberts - * w32term.c (w32_system_caret_hwnd, w32_system_caret_width) - (w32_system_caret_height, w32_system_caret_x) - (w32_system_caret_y): New variables for tracking system caret. - (w32_initialize): Initialize them. - (x_display_and_set_cursor): Make system caret follow the active cursor. + * keyboard.c (discard_mouse_events): Add GPM_CLICK_EVENT case. - * w32term.h (WM_EMACS_TRACK_CARET, WM_EMACS_DESTROY_CARET): - New messages types. + * frame.c (Fmouse_position, Fmouse_pixel_position): + Condition on HAVE_GPM too. - * w32term.c (note_mouse_highlight): Clear old help_echo. + * term.c (term_mouse_highlight): Remove unused variables. + (Fterm_open_connection): Set gpm_zerobased to 1. + (term_mouse_movement, term_mouse_click, handle_one_term_event): + Use zero based co-ordinates. + (handle_one_term_event): Report a drag as mouse movement too. -2001-10-27 Pavel Jan,Am(Bk + * Makefile.in (MOUSE_SUPPORT): Define for HAVE_GPM. - * xterm.c: Fix typo in a comment. +2007-06-03 Chong Yidong - * emacs.c: Fix typos in comments. - Remove unnecessary spaces. - Change doc-string comments to `new style' [w/`doc:' keyword]. - (USAGE2): Fix typos in usage string. + * image.c (search_image_cache): New function. Require background + color match if background color is unspecified in the image spec. + (uncache_image, lookup_image): Use it. - * xterm.c: Fix typo in a comment. +2007-06-01 Juanma Barranquero - * lisp.h (gdb_lisp_params): Remove code in #if 0 which is now in - emacs.c. + * window.c (Fshrink_window): Reflow docstring. -2001-10-27 Gerd Moellmann +2007-06-02 Chong Yidong - * xdisp.c (move_it_vertically_backward): Use 2/3 line_height - instead of 1/2 line_height in the heuristic for skipping - farther backward when target_y was not reached. + * Version 22.1 released. - * sound.c (sound_perror): Unblock SIGIO, turn on atimers. - Display errno only if non-zero. - (sound_warning): New function. - (vox_configure): Don't treat failing to set sample rate as error. - (various places): Improve error messages. +2007-06-01 Richard Stallman -2001-10-26 Eli Zaretskii + * xfns.c (x_encode_text): Add GCPRO. - * fileio.c (Faccess_file): Run the argument filename through - Fexpand_file_name, before using it. +2007-06-01 YAMAMOTO Mitsuharu - * dispnew.c (syms_of_display) : Add a reference to - ring-bell-function. Suggested by Alf-Ivar Holm + * xfns.c (x_set_name_internal): Save encoded name before + x_encode_text in case string data is relocated. -2001-10-26 Gerd Moellmann +2007-05-31 Richard Stallman - * insdel.c (insert_1_both): Do nothing if NCHARS == 0. + * buffer.c (syms_of_buffer): Doc fix. - * xterm.c (XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]: - Fix clearing in the case of scroll bars on the right. +2007-05-30 Nick Roberts -2001-10-26 Juanma Barranquero + * sysdep.c (init_sys_modes): Add rather than replace with + O_NONBLOCK. - * w32gui.h (XImage): Add a dummy typedef. + * frame.c [HAVE_GPM] (Fset_mouse_pixel_position): Add call to + term_mouse_moveto. -2001-10-26 Gerd Moellmann + * termhooks.h (term_mouse_moveto): New extern. - * xfns.c (XScreenNumberOfScreen): Fix struct to pointer comparison. + * term.c (mouse_face_window): Rename... + (Qmouse_face_window): ...to this. + (term_show_mouse_face, term_clear_mouse_face) + (term_mouse_highlight): Use Qmouse_face_window. + (term_mouse_moveto): New function. + (term_mouse_position): Make it work. + (syms_of_term): Uncomment assignment to mouse_position_hook. + Staticpro Qmouse_face_window. -2001-10-25 Eli Zaretskii +2007-05-28 YAMAMOTO Mitsuharu - * frame.c (Fframe_parameter): Fix last change. + * xdisp.c (redisplay_internal): Bind inhibit-point-motion-hooks to t + around current_column call. - * fileio.c: Revert last change (which removed old commented-out - version of expand-file-name). Add a comment that explains why - this old version should not be removed. +2007-05-26 Dan Nicolaescu -2001-10-25 Gerd Moellmann + * xfaces.c (syms_of_xfaces): Delete stray semicolon. + * xdisp.c (next_element_from_buffer): + * window.c (delete_window): + * term.c (term_mouse_highlight): + * msdos.c (getdefdir): + * macterm.c (mac_create_bitmap_from_bitmap_data) + (init_font_name_table): + * fns.c (Fsxhash): + * data.c (Fmake_local_variable): + * ccl.c (ccl_driver): Likewise. - * frame.c (Fframe_parameter): Fix a bug whereby some - ``artificial'' frame parameters, like `minibuffer' were not - obtained by calling Fframe_parameters. +2007-05-24 YAMAMOTO Mitsuharu - * xterm.c (show_mouse_face): Clean up. Recognize overwritten - cursor differently. + * macterm.c [USE_CARBON_EVENTS] (mac_handle_window_event): + Call mac_wakeup_from_rne on window size change. - * xdisp.c (move_it_vertically_backward): Compute line height - differently. Add heuristic to try to be more compatible to 20.x. +2007-05-25 Chong Yidong -2001-10-25 Stefan Monnier + * image.c (uncache_image): Fix typo. - * lisp.h (make_fixnum_or_float): Coerce double to int explicitly. +2007-05-23 Johannes Weiner (tiny change) - * editfns.c (text_property_stickiness): Fix Lisp_Object used as - boolean. + * keyboard.c (make_lispy_movement): Condition on HAVE_GPM too. -2001-10-25 Miles Bader +2007-05-22 Richard Stallman - * xfns.c (png_load): Make sure SPECIFIED_BG is a string. - BG is a pointer to a structure, not a structure. - (gif_format, png_format): Add missing commas. + * xterm.c (x_connection_closed): Remove NO_RETURN. -2001-10-24 Richard M. Stallman +2007-05-22 Martin Rudalics - * xfaces.c (Fface_attributes_as_vector): New function. - (syms_of_xfaces): Defsubr it. + * syntax.c (scan_words): Fix arg to UPDATE_SYNTAX_TABLE_BACKWARD. -2001-10-24 Pavel Jan,Am(Bk +2007-05-21 Chong Yidong - * dispnew.c (sync_window_with_frame_matrix_rows): Remove unused - variable `area'. + * image.c (uncache_image): New function. + (Fimage_refresh): New function. -2001-10-25 Pavel Jan,Am(Bk +2007-05-20 Jan Dj,Ad(Brv - * search.c (scan_newline): Remove unused variable `selective_display'. + * Makefile.in: Move GPM check outside HAVE_X_WINDOWS. -2001-10-25 Miles Bader +2007-05-20 Nick Roberts - * dispextern.h (struct image): Add `background', - `background_valid', and `background_transparent' fields. - (image_background, image_background_transparent): New declarations. - (IMAGE_BACKGROUND, IMAGE_BACKGROUND_TRANSPARENT): New macros. - * xfns.c (image_background, image_background_transparent) - (four_corners_best): New functions. - (xpm_format, png_format, jpeg_format, tiff_format, gif_format) - (gs_format): Add `:background' entry. - (lookup_image): Set IMG's background color if specified. - (pbm_load, xbm_load_image, png_load): Set IMG's background field - when appropriate. - (x_clear_image_1): Reset `background_valid' and - `background_transparent_valid' fields. - (x_build_heuristic_mask): Use IMAGE_BACKGROUND instead of - calculating it here. Set IMG's background_transparent field. - (enum xpm_keyword_index): Add XPM_BACKGROUND. - (enum png_keyword_index): Add PNG_BACKGROUND. - (enum jpeg_keyword_index): Add JPEG_BACKGROUND. - (enum tiff_keyword_index): Add TIFF_BACKGROUND. - (enum gif_keyword_index): Add GIF_BACKGROUND. - (enum gs_keyword_index): Add GS_BACKGROUND. - (pbm_load, png_load, jpeg_load, tiff_load, gif_load): - Pre-calculate image background color where necessary. - * xterm.c (x_setup_relief_colors): Use `IMAGE_BACKGROUND' and - `IMAGE_BACKGROUND_TRANSPARENT' to calculate the correct background - color to use for image glyph reliefs. + * config.in, keyboard.c, Makefile.in, sysdep.c, term.c, + * termhooks.h: Use HAVE_GPM instead of HAVE_GPM_H. -2001-10-24 Gerd Moellmann +2007-05-20 Nick Roberts - * xterm.c (x_draw_glyphs): Don't check for cursor overwriting - in full-width rows. + * keyboard.c (make_lispy_event): Make case GPM_CLICK_EVENT + conditional on [HAVE_GPM_H]. - * xterm.c (XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]: - Fix clearing of area not covered by scroll bar. +2007-05-19 Stefan Monnier -2001-10-24 Pavel Jan,Am(Bk + * syntax.c (skip_chars): Update syntax-table only after we checked that + the new location is valid. - * xterm.c (x_insert_glyphs): Remove unused variables `real_end' - and `real_start'. - (x_draw_image_foreground): Remove unused variables `mask' and `xgcv'. - (glyph_rect): Remove unused variable `area'. +2007-05-19 YAMAMOTO Mitsuharu -2001-10-24 Gerd Moellmann + * macterm.c (x_calc_absolute_position): Add BLOCK_INPUT around + mac_get_window_bounds. - * xdisp.c: Change #ifdef GLYPH_DEBUG to #if. +2007-05-20 Nick Roberts - * xdisp.c (try_window_reusing_current_matrix): Use row_containing_pos. - (row_containing_pos): Take additional argument DY. - Treat rows ending in middle of char differently. - (display_line): Handle tabs on window systems differently. + * Makefile.in (LIBGPM): Allow it to be set from configure. + If set then link Emacs with it. - * xterm.c, w32term.c (fast_find_position): Call row_containing_pos - with additional argument. + * config.in: Regenerate. - * dispextern.h (row_containing_pos): Adjust prototype. + * lisp.h (add_gpm_wait_descriptor, delete_gpm_wait_descriptor): + New externs. + + * termhooks.h [HAVE_GPM_H] (enum event_kind): Add GPM_CLICK_EVENT. + Include gpm.h. + (handle_one_term_event, term_gpm): New externs. + + * sysdep.c [HAVE_GPM_H] (init_sys_modes): Make gpm_fd nonblocking + and allow it to be interrupted by SIGIO. + + * process.c (gpm_wait_mask, max_gpm_desc): New variables. + (wait_reading_process_output): Wait on gpm_fd too. + (add_gpm_wait_descriptor, delete_gpm_wait_descriptor)): New functions. + (add_gpm_wait_descriptor_called_flag): New variable. + (delete_keyboard_wait_descriptor): Check gpm_wait_mask. + + * keyboard.c [HAVE_GPM_H] (Qmouse_fixup_help_message) + (make_lispy_movement, tracking_off, Ftrack_mouse, some_mouse_moved) + (show_help_echo, readable_events, kbd_buffer_get_event, init_keyboard): + Extend HAVE_MOUSE ifdefs to HAVE_GPM_H. + (make_lispy_event): Add case GPM_CLICK_EVENT. + (read_avail_input): Handle mouse input. + + * term.c (write_glyphs_with_face): New function. + [HAVE_GPM_H]: Include buffer.h, sys/fcntl.h. + (mouse_face_beg_row, mouse_face_beg_col, mouse_face_end_row) + (mouse_face_end_col, mouse_face_past_end, mouse_face_window) + (mouse_face_face_id, term_gpm, pos_x, pos_y) + (last_mouse_x, last_mouse_y): New variables. + (term_show_mouse_face, term_clear_mouse_face, fast_find_position) + (term_mouse_highlight, term_mouse_movement, term_mouse_position) + (term_mouse_click, handle_one_term_event, Fterm_open_connection) + (Fterm_close_connection): New functions. + (term_init): Initialise mouse_face_window. + +2007-05-19 Chong Yidong - * xdisp.c (inhibit_try_window_id, inhibit_try_window_reusing) - (inhibit_try_cursor_movement) [GLYPH_DEBUG]: New variables. - (try_window_id, try_window_reusing_current_matrix) - (try_cursor_movement) [GLYPH_DEBUG]: Don't run if inhibited. - (syms_of_xdisp) [GLYPH_DEBUG]: DEFVAR_BOOL the variables. + * xdisp.c (redisplay_window): If first window line is a + continuation line, recompute the new window start instead of + recentering. -2001-10-24 Pavel Jan,Am(Bk +2007-05-18 Glenn Morris - * xmenu.c: Spell the name of Emacs properly (GNU Emacs instead of - gnuemacs). - (HAVE_BOXES): Fix typo in comment. - (push_menu_pane): Fix typo in comment. + * m/alpha.h (ORDINARY_LINK): No longer define on OpenBSD. + Suggested by Alfred M. Szmidt . - * xdisp.c (display_prop_string_p): Remove unused local declaration - of `Qwhen'. - (single_display_prop_string_p): Remove unused local declarations - of `Qwhen' and `Qmargin'. - (string_buffer_position): Remove unused variable `around'. - (store_frame_title): Remove unused variable `width'. +2007-05-17 Glenn Morris - * window.c: Don't define max. - (coordinates_in_window): Remove unused variable `uy'. + * m/macppc.h (ORDINARY_LINK): No longer define on OpenBSD. - * widget.c: Don't define max. +2007-05-16 YAMAMOTO Mitsuharu - * process.c: Don't define max. - (create_process): Remove unused variable `buffer'. + * macterm.c [USE_CARBON_EVENTS] (mac_convert_event_ref): Also convert + dead key repeat and up events. -2001-10-23 Gerd Moellmann +2007-05-14 Chong Yidong - * xfaces.c (Finternal_set_lisp_face_attribute): Fix compilation error. + * image.c (pbm_load): Check image size for monochrome pbm. -2001-10-23 Eli Zaretskii +2007-05-13 Chong Yidong - * xfaces.c (Finternal_set_lisp_face_attribute) - [HAVE_WINDOW_SYSTEM]: Don't do anything for QCfont unless the - frame is on a windowed display. + * xterm.c (XTread_socket): Revert last change. -2001-10-23 Gerd Moellmann +2007-05-12 Chong Yidong - * dispnew.c (sync_window_with_frame_matrix_rows): - Fix handling of windows which aren't full-width, fix handling - of marginal areas. + * image.c (pbm_load): Correctly check image size for greyscale pbm. - * lread.c (syms_of_lread) : Raise to 50. + * xterm.c (XTread_socket): Yet Another Uncaught X Error Crash (YAUXEC). -2001-10-23 Andreas Schwab +2007-05-07 Stefan Monnier - * m/macppc.h [LINUX]: Undef LD_SWITCH_SYSTEM_TEMACS and override - LD_SWITCH_MACHINE_TEMACS with "-Xlinker -znocombreloc". + * editfns.c (Ftranspose_regions): Yet another int/Lisp_Object + mixup (YAILOM). -2001-10-23 Gerd Moellmann +2007-05-07 Andreas Schwab - * xterm.c (x_draw_glyphs): Remove parameters READ_START and - REAL_END. Notice if cursor gets overwritten. - (notice_overwritten_cursor): Take X positions as parameters. - (x_draw_phys_cursor_glyph): Save state of w->phys_cursor_on_p - around call to x_draw_glyphs. + * keymap.c (Flookup_key): Fix typo in last change. -2001-10-23 Pavel Jan,Am(Bk +2007-05-07 Stefan Monnier - * syntax.c (modify-syntax-entry): Fix argument names (use CHAR - instead of C) and usage. + * keymap.c (Fdefine_key, Flookup_key): Only do the 0x80->meta_modifier + mapping for unibyte strings. - * editfns.c (char-to-string): Fix argument names (use CHAR instead - of C) and usage. +2007-05-01 YAMAMOTO Mitsuharu - * xfns.c (Fx_show_tip): Remove unused variables `buffer', `top', - `left', `max_width' and `max_height'. + * macmenu.c (mac_dialog_show): Apply 2007-04-27 change for xmenu.c. + (Fx_popup_dialog) [MAC_OSX]: Likewise. -2001-10-23 Gerd Moellmann +2007-04-29 Richard Stallman - * xdisp.c (display_line): For a tab continued to the next line, - set row's ends_in_middle_of_char_p. + * insdel.c (replace_range): For undo, record insertion first. -2001-10-22 Gerd Moellmann +2007-04-29 Andreas Schwab - * xdisp.c (display_line): Fix computation of continuation lines - width for TABs. + * lisp.h (VECSIZE): Use OFFSETOF. -2001-10-22 Pavel Jan,Am(Bk +2007-04-29 YAMAMOTO Mitsuharu - * xdisp.c (build_desired_tool_bar_string): Remove unused variable - `Qlaplace'. + * xdisp.c (try_window_reusing_current_matrix): Fix number of + disabled lines. - * fileio.c: Remove unused code. +2007-04-28 Richard Stallman -2001-10-22 Miles Bader + * lread.c (read_escape): In a string, \s is always space. - * lisp.h (DEFVAR_LISP, DEFVAR_LISP_NOPRO, DEFVAR_BOOL) - (DEFVAR_INT, DEFVAR_PER_BUFFER, DEFVAR_KBOARD): - Remove `DOC_STRINGS_IN_COMMENTS' cases. +2007-04-27 Jan Dj,Ad(Brv -2001-10-21 Jason Rumney + * xmenu.c (xdialog_show): Call Fredisplay before showing the dialog. - * w32term.c (x_erase_phys_cursor): Remove inverse_p again. + * gtkutil.c (xg_update_menubar, create_menus): Create empty + submenu for menu bar items. -2001-10-21 Eli Zaretskii - - * mocklisp.c (Fml_if, Fml_provide_prefix_argument) - (Finsert_string): Avoid the multi-line string literals warning. - -2001-10-22 Miles Bader - - * doc.c (Vhelp_manyarg_func_alist): Variable removed. - (Fdocumentation): Don't use it. - (syms_of_doc): Don't initialize it. - - * keyboard.c (Ftrack_mouse): Add usage: string to doc string. - * print.c (Fwith_output_to_temp_buffer): Likewise. - * window.c (Fsave_window_excursion): Likewise. - * editfns.c (Fsave_excursion, Fsave_current_buffer) - (Fsave_restriction): Likewise. - * eval.c (Frun_hooks, Frun_hook_with_args) - (Frun_hook_with_args_until_failure) - (Frun_hook_with_args_until_success, Ffuncall, For, Fand, Fif) - (Fcond, Fprogn, Fprog1, Fprog2, Fsetq, Fquote, Ffunction, Fdefun) - (Fdefmacro, Fdefvar, Fdefconst, FletX, Flet, Fwhile, Fcatch) - (Funwind_protect, Fcondition_case): Likewise. - * coding.c (Ffind_operation_coding_system): Likewise. - * keyboard.c (Ftrack_mouse): Likewise. - -2001-10-21 Miles Bader - - * fns.c (Fappend, Fconcat, Fvconcat, Fnconc, Fwidget_apply) - (Fmake_hash_table): Add usage: string to doc string. - * editfns.c (Finsert, Finsert_and_inherit, Finsert_before_markers) - (Fmessage, Fmessage_box, Fmessage_or_box, Fpropertize, Fformat) - (Fencode_time, Finsert_and_inherit_before_markers): Likewise. - * mocklisp.c (Finsert_string, Fml_if, Fml_provide_prefix_argument) - (Fml_prefix_argument_loop): Likewise. - -2001-10-21 Pavel Jan,Am(Bk - - * fileio.c (Finsert_file_contents): Remove unused variable `gap_size'. - - * sysdep.c (init_sys_modes): Change doc-string comments to `new - style' [w/`doc:' keyword]. - - * data.c, fileio.c, indent.c, print.c, search.c, sound.c, - * sunfns.c, textprop.c, undo.c, xselect.c: Change doc-string - comments to `new style' [w/`doc:' keyword]. - -2001-10-21 Jason Rumney - - * w32fns.c (Fx_file_dialog): Pass a filter to GetOpenFileName. - - * w32term.c (remember_mouse_glyph): New function. - (w32_mouse_position): Use it. - (note_mouse_movement): If the mouse moved off the glyph, remember - its new position. - - * w32term.h (struct w32_output): Correct spelling of x_compatible. - (w32_display_info): Add mouse_face_overlay. - - * w32term.c (notice_overwritten_cursor): Renamed from - note_overwritten_text_cursor. Rewritten to take glyph widths into - account. - (x_y_to_hpos_vpos): Add parameter BUFFER_ONLY_P. - (fast_find_string_pos): New function. - (fast_find_position): Return the correct vpos. Add parameter - STOP. In the final row, stop before glyphs having STOP as object. - Don't consider glyphs that are not from a buffer. - (fast_find_position) [0]: Add a presumably more correct version - for after 21.1. - (expose_window_tree, expose_frame): Don't compute intersections here. - (expose_window): Do it here instead. - (expose_window_tree, expose_window, expose_line): Return 1 when - overwriting mouse-face. - (expose_window): If W is the window currently being updated, mark - the frame garbaged. - (expose_frame): If mouse-face was overwritten, redo it. - (x_use_underline_position_properties): New variable. - (syms_of_xterm): DEFVAR_BOOL it. - (x_draw_glyph_string): Add comment to use it in future. - (x_draw_glyph_string): Restore clipping after drawing box. - Fix a computation of the underline position. - (w32_get_glyph_string_clip_rect): Minor cleanup. - (x_fill_stretch_glyph_string): Remove an assertion. - (x_produce_glyphs): Don't convert multibyte characters - to unibyte characters in unibyte buffers. - (cursor_in_mouse_face_p): New function. - (x_draw_stretch_glyph_string): Use it to choose a different GC - when drawing a cursor within highlighted text. Don't draw - background again if it has already been drawn. - (x_draw_glyph_string_box): Don't draw a full-width - box just because the glyph row's full_width_p flag is set. - (x_draw_glyphs): Fix computation of rightmost x for - full-width rows. - (x_dump_glyph_string): Put in #if GLYPH_DEBUG. - (w32_draw_relief_rect): Extend left shadow to the bottom and left; - change bottom shadow accordingly. Some cleanup. - (x_update_window_end): Handle overwritten mouse face - also for tool bar windows. - (show_mouse_face): Set the glyph row's mouse_face_p flag also when - DRAW is DRAW_IMAGE_RAISED. - (clear_mouse_face): Return 1 if text with mouse face was - actually redrawn. Make the function static. - Reset dpyinfo->mouse_face_overlay otherwise note_mouse_highlight might - optimize away highlighting if we pass over that same overlay again. - (note_mouse_highlight): Call mouse_face_overlay_overlaps - to detect a case where we have to highlight a different region - despite not having left the currently highlighted region. - Set mouse_face_overlay in the x_display_info. Avoid changing the - mouse pointer shape when show_mouse_face has already done it, or - there is no need. Handle mouse-face and help-echo in strings. - (glyph_rect): New function. - (w32_mouse_position): Use it to raise the threshold for mouse - movement event generation. - (w32_initialize_display_info): Initialize the x_display_info's - mouse_face_overlay. - (w32_set_vertical_scroll_bar): Don't clear a zero height - or width area. - (w32_set_vertical_scroll_bar, x_scroll_bar_create): Don't configure - a widget to zero height. - - * w32menu.c (single_submenu, w32_menu_show) [!HAVE_MULTILINGUAL_MENU]: - Protect unibyte strings created by replacing their multibyte - equivalents in menu_items. - (w32_menu_show): Don't overwrite an item's name with its key - description in case the description is a multibyte string. - (single_submenu): Some cleanup. - - * w32fns.c (x_laplace_read_row, x_laplace_write_row): Removed. - (postprocess_image): New function. - (lookup_image): Call it for all image types except PostScript. - (x_kill_gs_process): Call postprocess_image. - (tiff_error_handler, tiff_warning_handler): New functions. - (tiff_load): Install them as handlers. - (x_kill_gs_process): Recognize if someone has cleared the image - cache under us. - (valid_image_p): Protect better against invalid image - specifications. Previous code could signal an error. - (Fx_hide_tip, Fshow_tip): Doc fix. - (Fv_max_tooltip_size): New variable. - (syns_of_xfns): DEFVAR_LISP it. - (Fx_show_tip): Add parameter TEXT. Set the tip frame's root - window buffer to *tip* right after creating the frame. Set frame's - window_width. Use a maximum tooltip size specified by - Vx_max_tooltip_size, if that has valid contents. - (compute_tip_xy): Add parameters WIDTH and HEIGHT. - Make sure the tooltip is completely visible. - (x_create_tip_frame): Set tooltip buffer's truncate-lines to nil. - (Fx_create_frame): Adjust the frame's height for presence - of the tool bar before calling x_figure_window_size. - (x_set_tool_bar_lines): Clear the tool bar window's current matrix - when the window gets smaller. - (x_set_foreground_color): Set frame's cursor_pixel. - (x_set_foreground_color, x_set_background_color): Cleaned up. - (x_set_font): Handle case of x_new_fontset returning the same name - as before, although there was a change in fontsets. - -2001-10-21 Miles Bader - - * data.c (Fplus, Fminus, Fmax, Ftimes, Fquo, Flogand, Flogior) - (Flogxor): Add usage: string to doc string. - * charset.c (Fstring): Likewise. - * callproc.c (Fcall_process_region, Fcall_process): Likewise. - * alloc.c (Fmake_byte_code, Fvector, Flist): Likewise. - -2001-10-21 Pavel Jan,Am(Bk - - * buffer.c: Reindent DEFUNs and DEFVARs with doc: keywords. - - * alloc.c: Reindent DEFUNs with doc: keywords. - - * abbrev.c (Finsert_abbrev_table_description): Reindent. - - * frame.c: Change doc-string comments to `new style' [w/`doc:' - keyword]. - -See ChangeLog.9 for earlier changes. +See ChangeLog.10 for earlier changes. ;; Local Variables: ;; coding: iso-2022-7bit diff --cc src/macmenu.c index aa0be0bdc2e,c7b63917a4c..616d136465a --- a/src/macmenu.c +++ b/src/macmenu.c @@@ -3272,34 -3201,22 +3272,35 @@@ fill_menubar (wv, deep_p } #endif /* !TARGET_API_MAC_CARBON */ } - else + + if (!menu) { +#if TARGET_API_MAC_CARBON + err = CreateNewMenu (id, 0, &menu); + if (err == noErr) + err = SetMenuTitleWithCFString (menu, title); +#else menu = NewMenu (id, title); - InsertMenu (menu, 0); +#endif + if (err == noErr) + { + InsertMenu (menu, 0); #if !TARGET_API_MAC_CARBON - title_changed_p = 1; + title_changed_p = 1; #endif + } } +#if TARGET_API_MAC_CARBON + CFRelease (title); +#endif - if (wv->contents) - submenu_id = fill_menu (menu, wv->contents, MAC_MENU_MENU_BAR_SUB, - submenu_id); + if (err == noErr) + if (wv->contents) + submenu_id = fill_menu (menu, wv->contents, MAC_MENU_MENU_BAR_SUB, + submenu_id); } - if (id < min_menu_id[MAC_MENU_MENU_BAR + 1] && GetMenuHandle (id)) + if (id < min_menu_id[MAC_MENU_MENU_BAR + 1] && GetMenuRef (id)) { dispose_menus (MAC_MENU_MENU_BAR, id); #if !TARGET_API_MAC_CARBON diff --cc src/process.c index 0204388e672,eb0dae04e96..e285ed4bde0 --- a/src/process.c +++ b/src/process.c @@@ -626,12 -621,12 +626,12 @@@ make_process (name p = allocate_process (); - XSETINT (p->infd, -1); - XSETINT (p->outfd, -1); - XSETFASTINT (p->tick, 0); - XSETFASTINT (p->update_tick, 0); + p->infd = -1; + p->outfd = -1; + p->tick = 0; + p->update_tick = 0; p->pid = 0; - p->pty_flag = 0; + p->pty_flag = Qnil; p->raw_status_new = 0; p->status = Qrun; p->mark = Fmake_marker ();