From: tomo Date: Wed, 15 Aug 2001 05:52:39 +0000 (+0000) Subject: Sync up with r21-2-40. X-Git-Tag: r21-2-40-utf-2000-0_17-1~1 X-Git-Url: http://git.chise.org/gitweb/?a=commitdiff_plain;h=39e0cb34c24ebae691454b5b8d448838c1e1b68e;p=chise%2Fxemacs-chise.git Sync up with r21-2-40. --- diff --git a/info/emodules.info b/info/emodules.info index 2fc6147..15eb210 100644 --- a/info/emodules.info +++ b/info/emodules.info @@ -1,4 +1,4 @@ -This is ../info/emodules.info, produced by makeinfo version 4.0 from +This is ../info/emodules.info, produced by makeinfo version 4.0b from emodules.texi. This file documents the module loading technology of XEmacs. @@ -252,7 +252,14 @@ place-holder, not an actual function name. `DEFVAR_LISP()', `DEFVAR_BOOL()' etc, and its purpose is to declare and initialize all and any variables that your module defines. They syntax for declaring variables is identical to the - syntax used for all internal XEmacs source code. + syntax used for all internal XEmacs source code. If the module is + intended to be usable statically linked into XEmacs, the actions + of this function are severely restricted. *Note General Coding + Rules: (internals)General Coding Rules. Also see the comments in + `src/emacs.c' (`main_1'). Modules which perform initializations + not permitted by these rules will probably work, but dual-use + (dynamic loading and static linking) modules will require very + careful, and possibly fragile, coding. `modules_of_module' This optional function should be used to load in any modules which @@ -553,7 +560,7 @@ Link Mode Once all of your source code files have been compiled (including the generated init file) you need to link them all together to create the loadable module. To do this, you invoke `ellcc' in link mode, by -passing the `--mode-link' option. You need to specify the final output +passing the `--mode=link' option. You need to specify the final output file using the `--mod-output=NAME' option, but other than that all other arguments are passed on directly to the system compiler or linker, along with any other required arguments to create the loadable @@ -930,23 +937,23 @@ Index  Tag Table: -Node: Top1536 -Node: Introduction2883 -Node: Anatomy of a Module7391 -Node: Required Header File8205 -Node: Required Functions10124 -Node: Required Variables12371 -Node: Loading other Modules15057 -Node: Using ellcc17114 -Node: Compile Mode18908 -Node: Initialization Mode20276 -Node: Link Mode25310 -Node: Other ellcc options26455 -Node: Environment Variables29034 -Node: Defining Functions30725 -Node: Using DEFUN32736 -Node: Declaring Functions34447 -Node: Defining Variables35790 -Node: Index38033 +Node: Top1537 +Node: Introduction2884 +Node: Anatomy of a Module7392 +Node: Required Header File8206 +Node: Required Functions10125 +Node: Required Variables12849 +Node: Loading other Modules15535 +Node: Using ellcc17592 +Node: Compile Mode19386 +Node: Initialization Mode20754 +Node: Link Mode25788 +Node: Other ellcc options26933 +Node: Environment Variables29512 +Node: Defining Functions31203 +Node: Using DEFUN33214 +Node: Declaring Functions34925 +Node: Defining Variables36268 +Node: Index38511  End Tag Table diff --git a/info/texinfo.info b/info/texinfo.info index acf2780..ae4c6b1 100644 --- a/info/texinfo.info +++ b/info/texinfo.info @@ -1,4 +1,4 @@ -This is ../info/texinfo.info, produced by makeinfo version 4.0 from +This is ../info/texinfo.info, produced by makeinfo version 4.0b from texinfo.texi. INFO-DIR-SECTION Texinfo documentation system @@ -34,317 +34,317 @@ translation approved by the Free Software Foundation.  Indirect: -texinfo.info-1: 1484 -texinfo.info-2: 48703 -texinfo.info-3: 96677 -texinfo.info-4: 146069 -texinfo.info-5: 196054 -texinfo.info-6: 245146 -texinfo.info-7: 293741 -texinfo.info-8: 343556 -texinfo.info-9: 392869 -texinfo.info-10: 435247 -texinfo.info-11: 481363 -texinfo.info-12: 519523 +texinfo.info-1: 1485 +texinfo.info-2: 48704 +texinfo.info-3: 96678 +texinfo.info-4: 146070 +texinfo.info-5: 196057 +texinfo.info-6: 245149 +texinfo.info-7: 293744 +texinfo.info-8: 343559 +texinfo.info-9: 392872 +texinfo.info-10: 435250 +texinfo.info-11: 481366 +texinfo.info-12: 519526  Tag Table: (Indirect) -Node: Top1484 -Node: Copying23799 -Node: Overview25804 -Node: Overview-Footnotes27233 -Ref: Overview-Footnote-127297 -Node: Using Texinfo27769 -Node: Info Files30252 -Node: Info Files-Footnotes34288 -Ref: Info Files-Footnote-134356 -Node: Printed Books34535 -Node: Printed Books-Footnotes37207 -Ref: Printed Books-Footnote-137281 -Node: Formatting Commands37491 -Node: Formatting Commands-Footnotes40318 -Ref: Formatting Commands-Footnote-140404 -Node: Conventions41020 -Node: Comments43582 -Node: Minimum45005 -Node: Six Parts47191 -Node: Short Sample48703 -Node: Acknowledgements52839 -Node: Texinfo Mode53674 -Node: Texinfo Mode Overview55046 -Node: Emacs Editing55822 -Node: Inserting57952 -Node: Showing the Structure62233 -Node: Updating Nodes and Menus64760 -Node: Updating Commands65833 -Node: Updating Requirements71894 -Node: Other Updating Commands74191 -Node: Info Formatting77459 -Node: Printing78717 -Node: Texinfo Mode Summary81062 -Node: Beginning a File85816 -Node: Four Parts86707 -Node: Sample Beginning88177 -Node: Header89797 -Node: First Line91149 -Node: Start of Header92138 -Node: setfilename92851 -Node: settitle94787 -Node: setchapternewpage96677 -Node: paragraphindent99438 -Node: End of Header100920 -Node: Info Summary and Permissions101759 -Node: Titlepage & Copyright Page102778 -Node: titlepage104384 -Node: titlepage-Footnotes106666 -Ref: titlepage-Footnote-1106732 -Node: titlefont center sp107006 -Node: title subtitle author108232 -Node: Copyright & Permissions110504 -Node: end titlepage112505 -Node: headings on off114211 -Node: The Top Node116256 -Node: Title of Top Node117411 -Node: Master Menu Parts118664 -Node: Software Copying Permissions120901 -Node: Ending a File122069 -Node: Printing Indices & Menus122917 -Node: Contents125226 -Node: File End127566 -Node: Structuring128239 -Node: Tree Structuring129896 -Node: Structuring Command Types131339 -Node: makeinfo top133666 -Node: chapter134199 -Node: unnumbered & appendix135223 -Node: majorheading & chapheading136062 -Node: section136883 -Node: unnumberedsec appendixsec heading137647 -Node: subsection138636 -Node: unnumberedsubsec appendixsubsec subheading139208 -Node: subsubsection140161 -Node: Raise/lower sections141711 -Node: Nodes143846 -Node: Two Paths144783 -Node: Node Menu Illustration146069 -Node: node149764 -Node: Node Names152460 -Node: Writing a Node153536 -Node: Node Line Tips155554 -Node: Node Line Requirements156348 -Node: First Node157949 -Node: makeinfo top command159393 -Node: Top Node Summary160572 -Node: makeinfo Pointer Creation162022 -Node: Menus163269 -Node: Menus-Footnotes164208 -Ref: Menus-Footnote-1164266 -Node: Menu Location164559 -Node: Writing a Menu166236 -Node: Menu Parts167202 -Node: Less Cluttered Menu Entry168360 -Node: Menu Example168985 -Node: Other Info Files170506 -Node: Cross References172374 -Node: References173331 -Node: Cross Reference Commands175078 -Node: Cross Reference Parts176137 -Node: xref178973 -Node: Reference Syntax179772 -Node: One Argument181426 -Node: Two Arguments182438 -Node: Three Arguments183553 -Node: Four and Five Arguments185944 -Node: Top Node Naming188356 -Node: ref189366 -Node: pxref190756 -Node: inforef193138 -Node: uref194431 -Node: Marking Text195430 -Node: Indicating196054 -Node: Useful Highlighting197959 -Node: code199348 -Node: kbd202386 -Node: key204256 -Node: samp205589 -Node: var207176 -Node: file208969 -Node: dfn209576 -Node: cite210486 -Node: url210940 -Node: email211504 -Node: Emphasis212316 -Node: emph & strong213216 -Node: Smallcaps214202 -Node: Fonts215529 -Node: Customized Highlighting216617 -Node: Customized Highlighting-Footnotes219432 -Ref: Customized Highlighting-Footnote-1219526 -Node: Quotations and Examples219652 -Node: Block Enclosing Commands221274 -Node: quotation223299 -Node: example224389 -Node: noindent226444 -Node: Lisp Example227908 -Node: Lisp Example-Footnotes228610 -Ref: Lisp Example-Footnote-1228682 -Node: smallexample & smalllisp228800 -Node: display230825 -Node: format231457 -Node: exdent231918 -Node: flushleft & flushright232998 -Node: cartouche234264 -Node: Lists and Tables235031 -Node: Introducing Lists235707 -Node: itemize237372 -Node: enumerate239519 -Node: Two-column Tables242024 -Node: table242713 -Node: ftable vtable245146 -Node: itemx246247 -Node: Multi-column Tables247258 -Node: Multitable Column Widths247929 -Node: Multitable Rows249383 -Node: Indices251160 -Node: Index Entries252310 -Node: Predefined Indices253443 -Node: Indexing Commands254440 -Node: Combining Indices258980 -Node: syncodeindex260343 -Node: synindex262005 -Node: New Indices262530 -Node: Insertions264355 -Node: Braces Atsigns265539 -Node: Inserting An Atsign266091 -Node: Inserting Braces266365 -Node: Inserting Space266728 -Node: Not Ending a Sentence267232 -Node: Ending a Sentence268586 -Node: Multiple Spaces269715 -Node: dmn270934 -Node: Inserting Accents272141 -Node: Dots Bullets273898 -Node: dots274720 -Node: bullet275244 -Node: TeX and copyright275641 -Node: tex276208 -Node: copyright symbol276624 -Node: pounds276884 -Node: minus277248 -Node: math278170 -Node: Glyphs278898 -Node: Glyphs Summary280011 -Node: result280639 -Node: expansion281124 -Node: Print Glyph282080 -Node: Error Glyph282957 -Node: Equivalence283790 -Node: Point Glyph284478 -Node: Images286035 -Node: Breaks287702 -Node: Break Commands289133 -Node: Line Breaks289974 -Node: - and hyphenation290992 -Node: w292242 -Node: sp292955 -Node: page293364 -Node: group293741 -Node: need295484 -Node: Definition Commands296214 -Node: Def Cmd Template297785 -Node: Optional Arguments300782 -Node: deffnx302370 -Node: Def Cmds in Detail303325 -Node: Functions Commands304435 -Node: Variables Commands307440 -Node: Typed Functions309526 -Node: Typed Variables313068 -Node: Abstract Objects315051 -Node: Data Types320276 -Node: Def Cmd Conventions321531 -Node: Sample Function Definition322094 -Node: Footnotes324978 -Node: Footnotes-Footnotes325366 -Ref: Footnotes-Footnote-1325432 -Node: Footnote Commands325712 -Node: Footnote Commands-Footnotes327209 -Ref: Footnote Commands-Footnote-1327291 -Node: Footnote Styles327327 -Node: Conditionals329913 -Node: Conditional Commands330724 -Node: Conditional Not Commands332217 -Node: Raw Formatter Commands332962 -Node: set clear value334792 -Node: ifset ifclear335593 -Node: value338772 -Node: value Example340184 -Node: Macros341762 -Node: Defining Macros342467 -Node: Invoking Macros343556 -Node: Format/Print Hardcopy344662 -Node: Use TeX346499 -Node: Format with tex/texindex347127 -Node: Format with texi2dvi350768 -Node: Print with lpr351359 -Node: Within Emacs352213 -Node: Texinfo Mode Printing353132 -Node: Compile-Command356542 -Node: Requirements Summary357430 -Node: Preparing for TeX358743 -Node: Overfull hboxes361530 -Node: smallbook363089 -Node: A4 Paper364607 -Node: Cropmarks and Magnification365832 -Node: Create an Info File367773 -Node: makeinfo advantages369076 -Node: Invoking makeinfo369992 -Node: makeinfo options370680 -Node: Pointer Validation376164 -Node: makeinfo in Emacs377508 -Node: texinfo-format commands380066 -Node: Batch Formatting381337 -Node: Tag and Split Files382553 -Node: Install an Info File385907 -Node: Directory file386725 -Node: New Info File388593 -Node: Other Info Directories389654 -Node: Installing Dir Entries392869 -Node: Invoking install-info394862 -Node: Command List397277 -Node: Tips435247 -Node: Sample Texinfo File446657 -Node: Sample Permissions448776 -Node: Inserting Permissions449819 -Node: ifinfo Permissions452125 -Node: Titlepage Permissions453746 -Node: Include Files455008 -Node: Using Include Files456095 -Node: texinfo-multiple-files-update458050 -Node: Include File Requirements460411 -Node: Sample Include File461656 -Node: Include Files Evolution463175 -Node: Headings465146 -Node: Headings Introduced465783 -Node: Heading Format467671 -Node: Heading Choice470123 -Node: Custom Headings471495 -Node: Catching Mistakes475823 -Node: makeinfo Preferred477112 -Node: Debugging with Info478017 -Node: Debugging with TeX481363 -Node: Using texinfo-show-structure485643 -Node: Using occur488742 -Node: Running Info-Validate490279 -Node: Using Info-validate491340 -Node: Unsplit493182 -Node: Tagifying494228 -Node: Splitting495080 -Node: Refilling Paragraphs496696 -Node: Refilling Paragraphs-Footnotes498350 -Ref: Refilling Paragraphs-Footnote-1498438 -Node: Command Syntax498601 -Node: Obtaining TeX501558 -Node: Command and Variable Index503671 -Node: Concept Index519523 +Node: Top1485 +Node: Copying23800 +Node: Overview25805 +Node: Overview-Footnotes27234 +Ref: Overview-Footnote-127298 +Node: Using Texinfo27770 +Node: Info Files30253 +Node: Info Files-Footnotes34289 +Ref: Info Files-Footnote-134357 +Node: Printed Books34536 +Node: Printed Books-Footnotes37208 +Ref: Printed Books-Footnote-137282 +Node: Formatting Commands37492 +Node: Formatting Commands-Footnotes40319 +Ref: Formatting Commands-Footnote-140405 +Node: Conventions41021 +Node: Comments43583 +Node: Minimum45006 +Node: Six Parts47192 +Node: Short Sample48704 +Node: Acknowledgements52840 +Node: Texinfo Mode53675 +Node: Texinfo Mode Overview55047 +Node: Emacs Editing55823 +Node: Inserting57953 +Node: Showing the Structure62234 +Node: Updating Nodes and Menus64761 +Node: Updating Commands65834 +Node: Updating Requirements71895 +Node: Other Updating Commands74192 +Node: Info Formatting77460 +Node: Printing78718 +Node: Texinfo Mode Summary81063 +Node: Beginning a File85817 +Node: Four Parts86708 +Node: Sample Beginning88178 +Node: Header89798 +Node: First Line91150 +Node: Start of Header92139 +Node: setfilename92852 +Node: settitle94788 +Node: setchapternewpage96678 +Node: paragraphindent99439 +Node: End of Header100921 +Node: Info Summary and Permissions101760 +Node: Titlepage & Copyright Page102779 +Node: titlepage104385 +Node: titlepage-Footnotes106667 +Ref: titlepage-Footnote-1106733 +Node: titlefont center sp107007 +Node: title subtitle author108233 +Node: Copyright & Permissions110505 +Node: end titlepage112506 +Node: headings on off114212 +Node: The Top Node116257 +Node: Title of Top Node117412 +Node: Master Menu Parts118665 +Node: Software Copying Permissions120902 +Node: Ending a File122070 +Node: Printing Indices & Menus122918 +Node: Contents125227 +Node: File End127567 +Node: Structuring128240 +Node: Tree Structuring129897 +Node: Structuring Command Types131340 +Node: makeinfo top133667 +Node: chapter134200 +Node: unnumbered & appendix135224 +Node: majorheading & chapheading136063 +Node: section136884 +Node: unnumberedsec appendixsec heading137648 +Node: subsection138637 +Node: unnumberedsubsec appendixsubsec subheading139209 +Node: subsubsection140162 +Node: Raise/lower sections141712 +Node: Nodes143847 +Node: Two Paths144784 +Node: Node Menu Illustration146070 +Node: node149765 +Node: Node Names152461 +Node: Writing a Node153537 +Node: Node Line Tips155555 +Node: Node Line Requirements156349 +Node: First Node157950 +Node: makeinfo top command159394 +Node: Top Node Summary160573 +Node: makeinfo Pointer Creation162023 +Node: Menus163270 +Node: Menus-Footnotes164209 +Ref: Menus-Footnote-1164267 +Node: Menu Location164560 +Node: Writing a Menu166237 +Node: Menu Parts167203 +Node: Less Cluttered Menu Entry168361 +Node: Menu Example168986 +Node: Other Info Files170507 +Node: Cross References172375 +Node: References173332 +Node: Cross Reference Commands175079 +Node: Cross Reference Parts176138 +Node: xref178974 +Node: Reference Syntax179773 +Node: One Argument181427 +Node: Two Arguments182439 +Node: Three Arguments183554 +Node: Four and Five Arguments185945 +Node: Top Node Naming188357 +Node: ref189367 +Node: pxref190759 +Node: inforef193141 +Node: uref194434 +Node: Marking Text195433 +Node: Indicating196057 +Node: Useful Highlighting197962 +Node: code199351 +Node: kbd202389 +Node: key204259 +Node: samp205592 +Node: var207179 +Node: file208972 +Node: dfn209579 +Node: cite210489 +Node: url210943 +Node: email211507 +Node: Emphasis212319 +Node: emph & strong213219 +Node: Smallcaps214205 +Node: Fonts215532 +Node: Customized Highlighting216620 +Node: Customized Highlighting-Footnotes219435 +Ref: Customized Highlighting-Footnote-1219529 +Node: Quotations and Examples219655 +Node: Block Enclosing Commands221277 +Node: quotation223302 +Node: example224392 +Node: noindent226447 +Node: Lisp Example227911 +Node: Lisp Example-Footnotes228613 +Ref: Lisp Example-Footnote-1228685 +Node: smallexample & smalllisp228803 +Node: display230828 +Node: format231460 +Node: exdent231921 +Node: flushleft & flushright233001 +Node: cartouche234267 +Node: Lists and Tables235034 +Node: Introducing Lists235710 +Node: itemize237375 +Node: enumerate239522 +Node: Two-column Tables242027 +Node: table242716 +Node: ftable vtable245149 +Node: itemx246250 +Node: Multi-column Tables247261 +Node: Multitable Column Widths247932 +Node: Multitable Rows249386 +Node: Indices251163 +Node: Index Entries252313 +Node: Predefined Indices253446 +Node: Indexing Commands254443 +Node: Combining Indices258983 +Node: syncodeindex260346 +Node: synindex262008 +Node: New Indices262533 +Node: Insertions264358 +Node: Braces Atsigns265542 +Node: Inserting An Atsign266094 +Node: Inserting Braces266368 +Node: Inserting Space266731 +Node: Not Ending a Sentence267235 +Node: Ending a Sentence268589 +Node: Multiple Spaces269718 +Node: dmn270937 +Node: Inserting Accents272144 +Node: Dots Bullets273901 +Node: dots274723 +Node: bullet275247 +Node: TeX and copyright275644 +Node: tex276211 +Node: copyright symbol276627 +Node: pounds276887 +Node: minus277251 +Node: math278173 +Node: Glyphs278901 +Node: Glyphs Summary280014 +Node: result280642 +Node: expansion281127 +Node: Print Glyph282083 +Node: Error Glyph282960 +Node: Equivalence283793 +Node: Point Glyph284481 +Node: Images286038 +Node: Breaks287705 +Node: Break Commands289136 +Node: Line Breaks289977 +Node: - and hyphenation290995 +Node: w292245 +Node: sp292958 +Node: page293367 +Node: group293744 +Node: need295487 +Node: Definition Commands296217 +Node: Def Cmd Template297788 +Node: Optional Arguments300785 +Node: deffnx302373 +Node: Def Cmds in Detail303328 +Node: Functions Commands304438 +Node: Variables Commands307443 +Node: Typed Functions309529 +Node: Typed Variables313071 +Node: Abstract Objects315054 +Node: Data Types320279 +Node: Def Cmd Conventions321534 +Node: Sample Function Definition322097 +Node: Footnotes324981 +Node: Footnotes-Footnotes325369 +Ref: Footnotes-Footnote-1325435 +Node: Footnote Commands325715 +Node: Footnote Commands-Footnotes327212 +Ref: Footnote Commands-Footnote-1327294 +Node: Footnote Styles327330 +Node: Conditionals329916 +Node: Conditional Commands330727 +Node: Conditional Not Commands332220 +Node: Raw Formatter Commands332965 +Node: set clear value334795 +Node: ifset ifclear335596 +Node: value338775 +Node: value Example340187 +Node: Macros341765 +Node: Defining Macros342470 +Node: Invoking Macros343559 +Node: Format/Print Hardcopy344665 +Node: Use TeX346502 +Node: Format with tex/texindex347130 +Node: Format with texi2dvi350771 +Node: Print with lpr351362 +Node: Within Emacs352216 +Node: Texinfo Mode Printing353135 +Node: Compile-Command356545 +Node: Requirements Summary357433 +Node: Preparing for TeX358746 +Node: Overfull hboxes361533 +Node: smallbook363092 +Node: A4 Paper364610 +Node: Cropmarks and Magnification365835 +Node: Create an Info File367776 +Node: makeinfo advantages369079 +Node: Invoking makeinfo369995 +Node: makeinfo options370683 +Node: Pointer Validation376167 +Node: makeinfo in Emacs377511 +Node: texinfo-format commands380069 +Node: Batch Formatting381340 +Node: Tag and Split Files382556 +Node: Install an Info File385910 +Node: Directory file386728 +Node: New Info File388596 +Node: Other Info Directories389657 +Node: Installing Dir Entries392872 +Node: Invoking install-info394865 +Node: Command List397280 +Node: Tips435250 +Node: Sample Texinfo File446660 +Node: Sample Permissions448779 +Node: Inserting Permissions449822 +Node: ifinfo Permissions452128 +Node: Titlepage Permissions453749 +Node: Include Files455011 +Node: Using Include Files456098 +Node: texinfo-multiple-files-update458053 +Node: Include File Requirements460414 +Node: Sample Include File461659 +Node: Include Files Evolution463178 +Node: Headings465149 +Node: Headings Introduced465786 +Node: Heading Format467674 +Node: Heading Choice470126 +Node: Custom Headings471498 +Node: Catching Mistakes475826 +Node: makeinfo Preferred477115 +Node: Debugging with Info478020 +Node: Debugging with TeX481366 +Node: Using texinfo-show-structure485646 +Node: Using occur488745 +Node: Running Info-Validate490282 +Node: Using Info-validate491343 +Node: Unsplit493185 +Node: Tagifying494231 +Node: Splitting495083 +Node: Refilling Paragraphs496699 +Node: Refilling Paragraphs-Footnotes498353 +Ref: Refilling Paragraphs-Footnote-1498441 +Node: Command Syntax498604 +Node: Obtaining TeX501561 +Node: Command and Variable Index503674 +Node: Concept Index519526  End Tag Table diff --git a/info/texinfo.info-1 b/info/texinfo.info-1 index f31fc03..d0c2298 100644 --- a/info/texinfo.info-1 +++ b/info/texinfo.info-1 @@ -1,4 +1,4 @@ -This is ../info/texinfo.info, produced by makeinfo version 4.0 from +This is ../info/texinfo.info, produced by makeinfo version 4.0b from texinfo.texi. INFO-DIR-SECTION Texinfo documentation system diff --git a/info/texinfo.info-10 b/info/texinfo.info-10 index aea9a20..7ea65d1 100644 --- a/info/texinfo.info-10 +++ b/info/texinfo.info-10 @@ -1,4 +1,4 @@ -This is ../info/texinfo.info, produced by makeinfo version 4.0 from +This is ../info/texinfo.info, produced by makeinfo version 4.0b from texinfo.texi. INFO-DIR-SECTION Texinfo documentation system diff --git a/info/texinfo.info-11 b/info/texinfo.info-11 index 43fe115..3f8c007 100644 --- a/info/texinfo.info-11 +++ b/info/texinfo.info-11 @@ -1,4 +1,4 @@ -This is ../info/texinfo.info, produced by makeinfo version 4.0 from +This is ../info/texinfo.info, produced by makeinfo version 4.0b from texinfo.texi. INFO-DIR-SECTION Texinfo documentation system diff --git a/info/texinfo.info-12 b/info/texinfo.info-12 index de69019..8868116 100644 --- a/info/texinfo.info-12 +++ b/info/texinfo.info-12 @@ -1,4 +1,4 @@ -This is ../info/texinfo.info, produced by makeinfo version 4.0 from +This is ../info/texinfo.info, produced by makeinfo version 4.0b from texinfo.texi. INFO-DIR-SECTION Texinfo documentation system diff --git a/info/texinfo.info-2 b/info/texinfo.info-2 index fc54512..2d9851d 100644 --- a/info/texinfo.info-2 +++ b/info/texinfo.info-2 @@ -1,4 +1,4 @@ -This is ../info/texinfo.info, produced by makeinfo version 4.0 from +This is ../info/texinfo.info, produced by makeinfo version 4.0b from texinfo.texi. INFO-DIR-SECTION Texinfo documentation system diff --git a/info/texinfo.info-3 b/info/texinfo.info-3 index 5eab100..02f4b8b 100644 --- a/info/texinfo.info-3 +++ b/info/texinfo.info-3 @@ -1,4 +1,4 @@ -This is ../info/texinfo.info, produced by makeinfo version 4.0 from +This is ../info/texinfo.info, produced by makeinfo version 4.0b from texinfo.texi. INFO-DIR-SECTION Texinfo documentation system diff --git a/info/texinfo.info-4 b/info/texinfo.info-4 index be6cc69..cc6a9aa 100644 --- a/info/texinfo.info-4 +++ b/info/texinfo.info-4 @@ -1,4 +1,4 @@ -This is ../info/texinfo.info, produced by makeinfo version 4.0 from +This is ../info/texinfo.info, produced by makeinfo version 4.0b from texinfo.texi. INFO-DIR-SECTION Texinfo documentation system @@ -1192,7 +1192,7 @@ For example, produces - For more information, see *Note Hurricanes. + For more information, see *Note Hurricanes::. and diff --git a/info/texinfo.info-5 b/info/texinfo.info-5 index f285171..ad0ff64 100644 --- a/info/texinfo.info-5 +++ b/info/texinfo.info-5 @@ -1,4 +1,4 @@ -This is ../info/texinfo.info, produced by makeinfo version 4.0 from +This is ../info/texinfo.info, produced by makeinfo version 4.0b from texinfo.texi. INFO-DIR-SECTION Texinfo documentation system diff --git a/info/texinfo.info-6 b/info/texinfo.info-6 index 4bcdc71..5adf092 100644 --- a/info/texinfo.info-6 +++ b/info/texinfo.info-6 @@ -1,4 +1,4 @@ -This is ../info/texinfo.info, produced by makeinfo version 4.0 from +This is ../info/texinfo.info, produced by makeinfo version 4.0b from texinfo.texi. INFO-DIR-SECTION Texinfo documentation system diff --git a/info/texinfo.info-7 b/info/texinfo.info-7 index 10a127a..c64f1ee 100644 --- a/info/texinfo.info-7 +++ b/info/texinfo.info-7 @@ -1,4 +1,4 @@ -This is ../info/texinfo.info, produced by makeinfo version 4.0 from +This is ../info/texinfo.info, produced by makeinfo version 4.0b from texinfo.texi. INFO-DIR-SECTION Texinfo documentation system diff --git a/info/texinfo.info-8 b/info/texinfo.info-8 index 79ed349..7c39015 100644 --- a/info/texinfo.info-8 +++ b/info/texinfo.info-8 @@ -1,4 +1,4 @@ -This is ../info/texinfo.info, produced by makeinfo version 4.0 from +This is ../info/texinfo.info, produced by makeinfo version 4.0b from texinfo.texi. INFO-DIR-SECTION Texinfo documentation system diff --git a/info/texinfo.info-9 b/info/texinfo.info-9 index 8448388..97f0356 100644 --- a/info/texinfo.info-9 +++ b/info/texinfo.info-9 @@ -1,4 +1,4 @@ -This is ../info/texinfo.info, produced by makeinfo version 4.0 from +This is ../info/texinfo.info, produced by makeinfo version 4.0b from texinfo.texi. INFO-DIR-SECTION Texinfo documentation system diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index bfef491..792f924 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog @@ -1,15 +1,6 @@ -2000-06-03 MORIOKA Tomohiko +2001-01-08 Martin Buchholz - * update-elc.sh: Fix typo about `utf_2000_p'. - -1999-11-16 MORIOKA Tomohiko - - * update-elc.sh: Don't ignore lisp/utf-2000/ if utf-2000 is - provided. - -1999-10-04 MORIOKA Tomohiko - - * update-elc.sh (ignore_dirs): Ignore lisp/utf-2000 subdirectory. + * XEmacs 21.2.40 is released. 2000-12-31 Martin Buchholz diff --git a/lisp/ChangeLog b/lisp/ChangeLog index a5aaf8c..89da658 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -519,6 +519,26 @@ * files.el (insert-file-contents-literally): Treat file as binary; call file-name-handlers. [sync with Emacs 20.3.10] +2001-01-08 Martin Buchholz + + * XEmacs 21.2.40 is released. + +2001-01-06 Stephen J. Turnbull + + * mule/hebrew.el: Fix comments and typos. + mule/japanese.el: Fix comments, typos, and 8-bit character encoding. + +2001-01-06 Stephen J. Turnbull + + * ChangeLog.1: move ancient log from fill.el. + + * dump-paths.el: + paragraphs.el: + mule/mule-category.el: + Miscellaneous typo fixes and slight doc clarifications. + + * mule/mule-ccl.el: Correct file name in header. + 2000-12-31 Martin Buchholz * XEmacs 21.2.39 is released. diff --git a/lisp/ChangeLog.1 b/lisp/ChangeLog.1 index 3ad71dd..08d2a10 100644 --- a/lisp/ChangeLog.1 +++ b/lisp/ChangeLog.1 @@ -6580,6 +6580,11 @@ Sat Mar 15 15:14:06 1997 Steven L Baur Abrahamsen). (batch-update-autoloads): Use it. +Fri Mar 14 20:00:00 1997 Jareth Hein + + * prim/fill.el: added functions for kinsoku (Asian text line + break processing). + Fri Mar 14 19:59:36 1997 Bob Weiner * packages/jka-compr.el (jka-compr-installed-p): Simplify. diff --git a/lisp/dump-paths.el b/lisp/dump-paths.el index 780f3ad..9381a0c 100644 --- a/lisp/dump-paths.el +++ b/lisp/dump-paths.el @@ -28,6 +28,7 @@ ;; This sets up the various paths for continuing loading files for ;; dumping. +;; #### This code is duplicated in startup.el (startup-setup-paths). (let ((debug-paths (or debug-paths (and (getenv "EMACSDEBUGPATHS") diff --git a/lisp/mule/hebrew.el b/lisp/mule/hebrew.el index 9e89fa1..d396df2 100644 --- a/lisp/mule/hebrew.el +++ b/lisp/mule/hebrew.el @@ -24,7 +24,7 @@ ;;; Commentary: -;; For Hebrew, the character sets ISO8859-8 is supported. +;; ISO 8859-8 (Hebrew) support. ;;; Code: @@ -34,19 +34,9 @@ (modify-syntax-entry (make-char 'hebrew-iso8859-8 32) "w") ; no-break space -;; (make-coding-system -;; 'hebrew-iso-8bit 2 ?8 -;; "ISO 2022 based 8-bit encoding for Hebrew (MIME:ISO-8859-8)" -;; '(ascii hebrew-iso8859-8 nil nil -;; nil ascii-eol ascii-cntl nil nil nil nil nil t) -;; '((safe-charsets ascii hebrew-iso8859-8) -;; (mime-charset . iso-8859-8))) - -;; (define-coding-system-alias 'iso-8859-8 'hebrew-iso-8bit) - (make-coding-system 'iso-8859-8 'iso2022 - "MIME ISO-8859-8" + "ISO-8859-8 (ISO 2022 based 8-bit encoding for Hebrew)" '(charset-g0 ascii charset-g1 hebrew-iso8859-8 charset-g2 t @@ -57,7 +47,7 @@ (make-coding-system 'ctext-hebrew 'iso2022 - "Coding-system of Hebrew." + "Coding-system for Hebrew." '(charset-g0 ascii charset-g1 hebrew-iso8859-8 charset-g2 t @@ -67,7 +57,7 @@ (defun setup-hebrew-environment () "Setup multilingual environment (MULE) for Hebrew. -But, please note that right-to-left writing is not yet supported." +Note: right-to-left writing is not yet supported." (interactive) (set-language-environment "Hebrew")) diff --git a/lisp/mule/japanese.el b/lisp/mule/japanese.el index cc8bc03..42b2207 100644 --- a/lisp/mule/japanese.el +++ b/lisp/mule/japanese.el @@ -125,8 +125,11 @@ ;; (setq egg-default-startup-file "eggrc-wnn") (setq-default its:*current-map* (its:get-mode-map "roma-kana")))) -;; stuff for providing gramatic processing of Japanese text +;; stuff for providing grammatic processing of Japanese text ;; something like this should probably be created for all environments... +;; #### Arrgh. This stuff should defvar'd in either fill.el or kinsoku.el. +;; Then the language environment should set these things, probably buffer- +;; locally. (defvar aletter (concat "\\(" ascii-char "\\|" kanji-char "\\)")) (defvar kanji-space-insertable (concat @@ -137,6 +140,7 @@ ascii-alphanumeric kanji-kanji-char "\\|" kanji-kanji-char ascii-alphanumeric )) +;; #### will be moved to fill.el (defvar space-insertable (concat " " aletter "\\|" kanji-space-insertable) "Regexp for finding points that can have spaces inserted into them for justification") diff --git a/lisp/mule/mule-category.el b/lisp/mule/mule-category.el index 254b541..3757302 100644 --- a/lisp/mule/mule-category.el +++ b/lisp/mule/mule-category.el @@ -279,6 +279,11 @@ Each element is a list of a charset, a designator, and maybe a doc string.") ;;; At the present, I know Japanese and Chinese text can ;;; break line at any point under a restriction of 'kinsoku'. +;;; #### SJT this needs to be set by language environments and probably should +;;; be buffer-local---strategy for dealing with this: check all $language.el +;;; files and also mule-base/$language-utils.el files for variables set; +;;; these should be made buffer local and some kind of a- or p-list of vars +;;; to be set for a language environment created. (defvar word-across-newline "\\(\\cj\\|\\cc\\|\\ct\\)" "Regular expression of such characters which can be a word across newline.") diff --git a/lisp/mule/mule-ccl.el b/lisp/mule/mule-ccl.el index 72880fe..e6f72c4 100644 --- a/lisp/mule/mule-ccl.el +++ b/lisp/mule/mule-ccl.el @@ -1,4 +1,4 @@ -;;; ccl.el --- CCL (Code Conversion Language) compiler +;;; mule-ccl.el --- CCL (Code Conversion Language) compiler ;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN. ;; Licensed to the Free Software Foundation. diff --git a/lisp/paragraphs.el b/lisp/paragraphs.el index f26eb42..68b7a55 100644 --- a/lisp/paragraphs.el +++ b/lisp/paragraphs.el @@ -124,7 +124,9 @@ hard newline are considered to match.") (defconst paragraph-separate "[ \t\f]*$" "\ *Regexp for beginning of a line that separates paragraphs. -If you change this, you may have to change paragraph-start also. +If you change this, you may have to change `paragraph-start' also. + +A line matching this is not part of any paragraph. This is matched against the text at the left margin, which is not necessarily the beginning of the line, so it should not use \"^\" as an anchor. This @@ -347,7 +349,7 @@ negative arg -N means kill forward to Nth end of paragraph." With negative argument, move backward repeatedly to `sentence-beginning'. The variable `sentence-end' is a regular expression that matches ends of -sentences. Also, every paragraph boundary terminates sentences as well." +sentences. A paragraph boundary also terminates a sentence." (interactive "_p") ; XEmacs (or arg (setq arg 1)) (while (< arg 0) diff --git a/lwlib/ChangeLog b/lwlib/ChangeLog index 71cbd9d..9c8c6e8 100644 --- a/lwlib/ChangeLog +++ b/lwlib/ChangeLog @@ -1,3 +1,28 @@ +2001-01-08 Martin Buchholz + + * XEmacs 21.2.40 is released. + +2001-01-06 Martin Buchholz + + * lwlib-Xaw.c (xaw_creation_table): Make const. + * lwlib-Xaw.h (xaw_creation_table): Make const. + * lwlib-Xlw.c (xlw_creation_table): Make const. + * lwlib-Xlw.h (xlw_creation_table): Make const. + * lwlib-Xm.c (xm_creation_table): Make const. + * lwlib-Xm.h (xm_creation_table): Make const. + * lwlib.c (find_in_table): Use const. + +2001-01-02 Andy Piper + + * lwlib.h (_widget_args): add args_changed. Necessary because we + reference count args. + + * lwlib.c (lw_add_widget_value_arg): set args_changed flag. + (merge_widget_value_args): mark as changed if args_changed is + true. + (update_all_widget_values): reset args_changed. + (initialize_widget_instance): ditto. + 2000-12-31 Martin Buchholz * XEmacs 21.2.39 is released. diff --git a/lwlib/lwlib-Xaw.c b/lwlib/lwlib-Xaw.c index 5544c24..1bdafcd 100644 --- a/lwlib/lwlib-Xaw.c +++ b/lwlib/lwlib-Xaw.c @@ -880,7 +880,7 @@ xaw_create_text_field (widget_instance *instance) #endif /* LWLIB_WIDGETS_ATHENA */ -widget_creation_entry +const widget_creation_entry xaw_creation_table [] = { #ifdef LWLIB_SCROLLBARS_ATHENA diff --git a/lwlib/lwlib-Xaw.h b/lwlib/lwlib-Xaw.h index 4562448..ce4bc10 100644 --- a/lwlib/lwlib-Xaw.h +++ b/lwlib/lwlib-Xaw.h @@ -3,7 +3,7 @@ #include "lwlib-internal.h" -extern widget_creation_entry xaw_creation_table []; +extern const widget_creation_entry xaw_creation_table []; Widget xaw_create_dialog (widget_instance* instance); diff --git a/lwlib/lwlib-Xlw.c b/lwlib/lwlib-Xlw.c index bfb2dfa..92437d5 100644 --- a/lwlib/lwlib-Xlw.c +++ b/lwlib/lwlib-Xlw.c @@ -482,7 +482,7 @@ xlw_create_clip_window (widget_instance *instance) } #endif -widget_creation_entry +const widget_creation_entry xlw_creation_table [] = { #ifdef LWLIB_MENUBARS_LUCID diff --git a/lwlib/lwlib-Xlw.h b/lwlib/lwlib-Xlw.h index f4fd0ed..f1611d7 100644 --- a/lwlib/lwlib-Xlw.h +++ b/lwlib/lwlib-Xlw.h @@ -3,7 +3,7 @@ #include "lwlib-internal.h" -extern widget_creation_entry xlw_creation_table []; +extern const widget_creation_entry xlw_creation_table []; extern widget_creation_function xlw_create_dialog; Boolean diff --git a/lwlib/lwlib-Xm.c b/lwlib/lwlib-Xm.c index 28dc5f8..2903ede 100644 --- a/lwlib/lwlib-Xm.c +++ b/lwlib/lwlib-Xm.c @@ -1786,7 +1786,7 @@ xm_create_combo_box (widget_instance *instance) /* Table of functions to create widgets */ -widget_creation_entry +const widget_creation_entry xm_creation_table [] = { #ifdef LWLIB_MENUBARS_MOTIF diff --git a/lwlib/lwlib-Xm.h b/lwlib/lwlib-Xm.h index 13e48b0..b8973f6 100644 --- a/lwlib/lwlib-Xm.h +++ b/lwlib/lwlib-Xm.h @@ -3,7 +3,7 @@ #include "lwlib-internal.h" -extern widget_creation_entry xm_creation_table []; +extern const widget_creation_entry xm_creation_table []; Widget xm_create_dialog (widget_instance* instance); diff --git a/lwlib/lwlib.c b/lwlib/lwlib.c index bd6e900..44e5ebd 100644 --- a/lwlib/lwlib.c +++ b/lwlib/lwlib.c @@ -264,6 +264,10 @@ merge_widget_value_args (widget_value *old, widget_value *new) lw_copy_widget_value_args (new, old); changed = True; } + else if (new->args && new->args == old->args && new->args->args_changed == True) + { + changed = True; + } return changed; } @@ -756,7 +760,11 @@ update_all_widget_values (widget_info *info, Boolean deep_p) update_one_widget_instance (instance, deep_p); for (val = info->val; val; val = val->next) - val->change = NO_CHANGE; + { + val->change = NO_CHANGE; + if (val->args) + val->args->args_changed = False; + } } void @@ -821,7 +829,11 @@ initialize_widget_instance (widget_instance *instance) update_one_widget_instance (instance, True); for (val = instance->info->val; val; val = val->next) - val->change = NO_CHANGE; + { + val->change = NO_CHANGE; + if (val->args) + val->args->args_changed = False; + } } /* strcasecmp() is not sufficiently portable or standard, @@ -841,9 +853,9 @@ ascii_strcasecmp (const char *s1, const char *s2) } static widget_creation_function -find_in_table (const char *type, widget_creation_entry *table) +find_in_table (const char *type, const widget_creation_entry table[]) { - widget_creation_entry *cur; + const widget_creation_entry *cur; for (cur = table; cur->type; cur++) if (!ascii_strcasecmp (type, cur->type)) return cur->function; @@ -1393,6 +1405,8 @@ void lw_add_widget_value_arg (widget_value* wv, String name, XtArgVal value) if (wv->args->nargs > 10) return; + /* Register the change. */ + wv->args->args_changed = True; /* If the arg is already there then we must replace it. */ for (i = 0; i < wv->args->nargs; i++) { diff --git a/lwlib/lwlib.h b/lwlib/lwlib.h index 9ee62e8..d2f0c54 100644 --- a/lwlib/lwlib.h +++ b/lwlib/lwlib.h @@ -106,6 +106,9 @@ typedef struct _widget_args /* Copying args is impossible so we make the caller give us heap allocated args and free them when no one wants them any more. */ int ref_count; + /* Since we are reference counting we need to be able to determine + when something has changed. */ + Boolean args_changed; } widget_args; typedef struct _widget_value diff --git a/man/ChangeLog b/man/ChangeLog index cb32e69..1816c40 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,14 @@ +2001-01-08 Martin Buchholz + + * XEmacs 21.2.40 is released. + +2001-01-06 Stephen J. Turnbull + + * emodules.texi (Required Functions): Xref coding rules for dual-use + modules (module and statically linked). Typo fix. + + * texinfo.texi (ref): Typo fix. + 2000-12-31 Martin Buchholz * XEmacs 21.2.39 is released. diff --git a/man/emodules.texi b/man/emodules.texi index 415caee..b1b250a 100644 --- a/man/emodules.texi +++ b/man/emodules.texi @@ -350,7 +350,14 @@ This required function contains calls to macros such as @code{DEFVAR_LISP()}, @code{DEFVAR_BOOL()} etc, and its purpose is to declare and initialize all and any variables that your module defines. They syntax for declaring variables is identical to the syntax used for -all internal @value{emacs} source code. +all internal @value{emacs} source code. If the module is intended to be +usable statically linked into XEmacs, the actions of this function are +severely restricted. @xref{General Coding Rules,,,internals, +@value{emacs} Internals Manual}. Also see the comments in +@file{src/emacs.c} (@code{main_1}). Modules which perform +initializations not permitted by these rules will probably work, but +dual-use (dynamic loading and static linking) modules will require very +careful, and possibly fragile, coding. @item modules_of_module @findex modules_of_module @@ -665,7 +672,7 @@ although @file{.ell} is the preferred extension. Once all of your source code files have been compiled (including the generated init file) you need to link them all together to create the loadable module. To do this, you invoke @code{ellcc} in link mode, by -passing the @code{--mode-link} option. You need to specify the final +passing the @code{--mode=link} option. You need to specify the final output file using the @code{--mod-output=NAME} option, but other than that all other arguments are passed on directly to the system compiler or linker, along with any other required arguments to create the diff --git a/man/texinfo.texi b/man/texinfo.texi index 321f488..121589e 100644 --- a/man/texinfo.texi +++ b/man/texinfo.texi @@ -1,5 +1,5 @@ \input texinfo.tex @c -*-texinfo-*- -@c $Id: texinfo.texi,v 1.8.2.5 2000/11/14 23:29:15 adrian Exp $ +@c $Id: texinfo.texi,v 1.8.2.6 2001/01/06 07:51:28 stephent Exp $ @c %**start of header @c All text is ignored before the setfilename. @@ -5882,7 +5882,7 @@ For more information, see @@ref@{Hurricanes@}. produces @example -For more information, see *Note Hurricanes. +For more information, see *Note Hurricanes::. @end example @noindent diff --git a/nt/ChangeLog b/nt/ChangeLog index ac50ab0..e68d20b 100644 --- a/nt/ChangeLog +++ b/nt/ChangeLog @@ -1,3 +1,7 @@ +2001-01-08 Martin Buchholz + + * XEmacs 21.2.40 is released. + 2000-12-31 Martin Buchholz * XEmacs 21.2.39 is released. diff --git a/src/ChangeLog b/src/ChangeLog index 6e1ee63..7e87eb8 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -2858,6 +2858,101 @@ (Vcharset_thai_tis620): Likewise. (Vcharset_katakana_jisx0201): Likewise. +2001-01-08 Martin Buchholz + + * XEmacs 21.2.40 is released. + +2001-01-06 Golubev I. N. + + * regex.c: Replace PREFETCH with REGEX_PREFETCH. + +2001-01-06 Martin Buchholz + + * alloc.c (dbg_valmask): Make const. + * alloc.c (dbg_typemask): Make const. + * alloc.c (dbg_USE_UNION_TYPE): Make const. + * alloc.c (dbg_valbits): Make const. + * alloc.c (dbg_gctypebits): Make const. + +2001-01-06 Stephen J. Turnbull + + * redisplay-x.c (x_bevel_area): + redisplay.h (struct rune): + Typo fixes in comments. + +2001-01-05 Andy Piper + + * glyphs-x.c (x_redisplay_widget): use size changed for offset + adjustment. + + * menubar.c (menubar_visible_p_changed): don't mark frame changed. + +2001-01-05 Martin Buchholz + + * alloc.c (pure-bytes-used): Remove unused mendacious variable. + + * mule-ccl.c (stack_idx_of_map_multiple): + Non const global data must not be initialized! + Found by MIYASHITA Hisashi. + +2001-01-02 Andy Piper + + * frame.c (change_frame_size): make sure frame size is always + marked as changed. + + * glyphs.c (image_instance_layout): minor code reuse. + + * window.c (Fcurrent_window_configuration): revert previous + change. + +2001-01-02 Martin Buchholz + + * glyphs.h: + * glyphs.c (make_image_instance_cache_hash_table): Use ANSI prototypes. + +2000-12-31 Andy Piper + + * glyphs-x.c (x_unmap_subwindow): return focus to enclosing frame + when widget gets unmapped. + + * event-Xt.c (emacs_Xt_handle_widget_losing_focus): new + function. Make sure widgets losing focus don't just drop it. + (handle_focus_event_1): record the widget with focus. + +2000-12-31 Andy Piper + + * window.c (allocate_window): use + make_image_instance_cache_hash_table. + (make_dummy_parent): ditto. + (Fset_window_configuration): ditto. + + * glyphs.h (INSTANTIATOR_TYPE): new macro. declare new functions. + + * glyphs.c (process_image_string_instantiator): use + INSTANTIATOR_TYPE. + (get_image_instantiator_governing_domain): ditto. + (normalize_image_instantiator): ditto. + (instantiate_image_instantiator): ditto. + (make_image_instance_1): ditto. + (image_instantiate): ditto. Key on glyph *and* instantiator type. + (instantiator_eq_equal): new function for use with instance hash + tables. + (instantiator_eq_hash): ditto. + (make_image_instance_cache_hash_table): create a suitable hash + table for storing image instances. + + * elhash.h (hash_table_weakness): new internal weakness type + HASH_TABLE_KEY_CAR_VALUE_WEAK. + declare new functions. + + * elhash.c (finish_marking_weak_hash_tables): introduce yet + another weakness type for glyphs. + (make_standard_lisp_hash_table): new function split out from + make_general_lisp_hash_table. + (make_lisp_hash_table): call make_standard_lisp_hash_table. + (hash_table_instantiate): ditto. + (Fmake_hash_table): ditto. + 2000-12-31 Martin Buchholz * XEmacs 21.2.39 is released. diff --git a/src/alloc.c b/src/alloc.c index 6cb81ee..38b7755 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -490,17 +490,17 @@ disksave_object_finalization_1 (void) about expressions in src/.gdbinit. See src/.gdbinit or src/.dbxrc to see how this is used. */ -EMACS_UINT dbg_valmask = ((1UL << VALBITS) - 1) << GCBITS; -EMACS_UINT dbg_typemask = (1UL << GCTYPEBITS) - 1; +const EMACS_UINT dbg_valmask = ((1UL << VALBITS) - 1) << GCBITS; +const EMACS_UINT dbg_typemask = (1UL << GCTYPEBITS) - 1; #ifdef USE_UNION_TYPE -unsigned char dbg_USE_UNION_TYPE = 1; +const unsigned char dbg_USE_UNION_TYPE = 1; #else -unsigned char dbg_USE_UNION_TYPE = 0; +const unsigned char dbg_USE_UNION_TYPE = 0; #endif -unsigned char dbg_valbits = VALBITS; -unsigned char dbg_gctypebits = GCTYPEBITS; +const unsigned char dbg_valbits = VALBITS; +const unsigned char dbg_gctypebits = GCTYPEBITS; /* Macros turned into functions for ease of debugging. Debuggers don't know about macros! */ @@ -4065,8 +4065,6 @@ init_alloc_once_early (void) staticidx = 0; } -int pure_bytes_used = 0; - void reinit_alloc (void) { @@ -4118,10 +4116,6 @@ prevent garbage collection during a part of the program. See also `consing-since-gc'. */ ); - DEFVAR_INT ("pure-bytes-used", &pure_bytes_used /* -Number of bytes of sharable Lisp data allocated so far. -*/ ); - #ifdef DEBUG_XEMACS DEFVAR_INT ("debug-allocation", &debug_allocation /* If non-zero, print out information to stderr about all objects allocated. diff --git a/src/elhash.c b/src/elhash.c index 2fb2c04..058fdd4 100644 --- a/src/elhash.c +++ b/src/elhash.c @@ -434,36 +434,54 @@ compute_hash_table_derived_values (Lisp_Hash_Table *ht) } Lisp_Object -make_general_lisp_hash_table (enum hash_table_test test, - size_t size, - double rehash_size, - double rehash_threshold, - enum hash_table_weakness weakness) +make_standard_lisp_hash_table (enum hash_table_test test, + size_t size, + double rehash_size, + double rehash_threshold, + enum hash_table_weakness weakness) { - Lisp_Object hash_table; - Lisp_Hash_Table *ht = alloc_lcrecord_type (Lisp_Hash_Table, &lrecord_hash_table); + hash_table_hash_function_t hash_function = 0; + hash_table_test_function_t test_function = 0; switch (test) { case HASH_TABLE_EQ: - ht->test_function = 0; - ht->hash_function = 0; + test_function = 0; + hash_function = 0; break; case HASH_TABLE_EQL: - ht->test_function = lisp_object_eql_equal; - ht->hash_function = lisp_object_eql_hash; + test_function = lisp_object_eql_equal; + hash_function = lisp_object_eql_hash; break; case HASH_TABLE_EQUAL: - ht->test_function = lisp_object_equal_equal; - ht->hash_function = lisp_object_equal_hash; + test_function = lisp_object_equal_equal; + hash_function = lisp_object_equal_hash; break; default: abort (); } + return make_general_lisp_hash_table (hash_function, test_function, + size, rehash_size, rehash_threshold, + weakness); +} + +Lisp_Object +make_general_lisp_hash_table (hash_table_hash_function_t hash_function, + hash_table_test_function_t test_function, + size_t size, + double rehash_size, + double rehash_threshold, + enum hash_table_weakness weakness) +{ + Lisp_Object hash_table; + Lisp_Hash_Table *ht = alloc_lcrecord_type (Lisp_Hash_Table, &lrecord_hash_table); + + ht->test_function = test_function; + ht->hash_function = hash_function; ht->weakness = weakness; ht->rehash_size = @@ -505,7 +523,7 @@ make_lisp_hash_table (size_t size, enum hash_table_weakness weakness, enum hash_table_test test) { - return make_general_lisp_hash_table (test, size, -1.0, -1.0, weakness); + return make_standard_lisp_hash_table (test, size, -1.0, -1.0, weakness); } /* Pretty reading of hash tables. @@ -722,7 +740,7 @@ hash_table_instantiate (Lisp_Object plist) } /* Create the hash table. */ - hash_table = make_general_lisp_hash_table + hash_table = make_standard_lisp_hash_table (decode_hash_table_test (test), decode_hash_table_size (size), decode_hash_table_rehash_size (rehash_size), @@ -872,7 +890,7 @@ if (!NILP (var)) hash_table_##var##_validate (Q##var, var, ERROR_ME); VALIDATE_VAR (rehash_threshold); VALIDATE_VAR (weakness); - return make_general_lisp_hash_table + return make_standard_lisp_hash_table (decode_hash_table_test (test), decode_hash_table_size (size), decode_hash_table_rehash_size (rehash_size), @@ -1305,6 +1323,24 @@ finish_marking_weak_hash_tables (void) } break; + /* We seem to be sprouting new weakness types at an alarming + rate. At least this is not externally visible - and in + fact all of these KEY_CAR_* types are only used by the + glyph code. */ + case HASH_TABLE_KEY_CAR_VALUE_WEAK: + for (; e < sentinel; e++) + if (!HENTRY_CLEAR_P (e)) + { + if (!CONSP (e->key) || marked_p (XCAR (e->key))) + { + MARK_OBJ (e->key); + MARK_OBJ (e->value); + } + else if (marked_p (e->value)) + MARK_OBJ (e->key); + } + break; + case HASH_TABLE_VALUE_CAR_WEAK: for (; e < sentinel; e++) if (!HENTRY_CLEAR_P (e)) diff --git a/src/elhash.h b/src/elhash.h index 04c1d03..7c4fe9c 100644 --- a/src/elhash.h +++ b/src/elhash.h @@ -41,6 +41,7 @@ enum hash_table_weakness HASH_TABLE_KEY_VALUE_WEAK, HASH_TABLE_KEY_CAR_WEAK, HASH_TABLE_VALUE_CAR_WEAK, + HASH_TABLE_KEY_CAR_VALUE_WEAK, HASH_TABLE_WEAK }; @@ -66,7 +67,14 @@ typedef unsigned long (*hash_table_hash_function_t) (Lisp_Object obj); typedef int (*maphash_function_t) (Lisp_Object key, Lisp_Object value, void* extra_arg); -Lisp_Object make_general_lisp_hash_table (enum hash_table_test test, +Lisp_Object make_standard_lisp_hash_table (enum hash_table_test test, + size_t size, + double rehash_size, + double rehash_threshold, + enum hash_table_weakness weakness); + +Lisp_Object make_general_lisp_hash_table (hash_table_hash_function_t hash_function, + hash_table_test_function_t test_function, size_t size, double rehash_size, double rehash_threshold, diff --git a/src/event-Xt.c b/src/event-Xt.c index b9ef392..ae62194 100644 --- a/src/event-Xt.c +++ b/src/event-Xt.c @@ -92,6 +92,7 @@ int debug_x_events; static int process_events_occurred; static int tty_events_occurred; +static Widget widget_with_focus; /* Mask of bits indicating the descriptors that we wait for input on */ extern SELECT_TYPE input_wait_mask, process_only_mask, tty_only_mask; @@ -1536,11 +1537,12 @@ static void handle_focus_event_1 (struct frame *f, int in_p) { #if XtSpecificationRelease > 5 - Widget focus_widget = XtGetKeyboardFocusWidget (FRAME_X_TEXT_WIDGET (f)); + widget_with_focus = XtGetKeyboardFocusWidget (FRAME_X_TEXT_WIDGET (f)); #endif #ifdef HAVE_XIM XIM_focus_event (f, in_p); #endif /* HAVE_XIM */ + /* On focus change, clear all memory of sticky modifiers to avoid non-intuitive behavior. */ clear_sticky_modifiers (XDEVICE (FRAME_DEVICE (f))); @@ -1564,13 +1566,19 @@ handle_focus_event_1 (struct frame *f, int in_p) click in the frame. Why is this? */ if (in_p #if XtSpecificationRelease > 5 - && FRAME_X_TEXT_WIDGET (f) != focus_widget + && FRAME_X_TEXT_WIDGET (f) != widget_with_focus #endif ) { lw_set_keyboard_focus (FRAME_X_SHELL_WIDGET (f), FRAME_X_TEXT_WIDGET (f)); } + + /* We have the focus now. See comment in + emacs_Xt_handle_widget_losing_focus (). */ + if (in_p) + widget_with_focus = NULL; + /* do the generic event-stream stuff. */ { Lisp_Object frm; @@ -1587,6 +1595,23 @@ handle_focus_event_1 (struct frame *f, int in_p) } } +/* The idea here is that when a widget glyph gets unmapped we don't + want the focus to stay with it if it has focus - because it may + well just get deleted next andthen we have lost the focus until the + user does something. So handle_focus_event_1 records the widget + with keyboard focus when FocusOut is processed, and then, when a + widget gets unmapped, it calls this function to restore focus if + appropriate. */ +void emacs_Xt_handle_widget_losing_focus (struct frame* f, Widget losing_widget); +void +emacs_Xt_handle_widget_losing_focus (struct frame* f, Widget losing_widget) +{ + if (losing_widget == widget_with_focus) + { + handle_focus_event_1 (f, 1); + } +} + /* This is called from the external-widget code */ void emacs_Xt_handle_focus_event (XEvent *event); diff --git a/src/frame-x.c b/src/frame-x.c index dbd70cb..23ef070 100644 --- a/src/frame-x.c +++ b/src/frame-x.c @@ -2654,7 +2654,7 @@ x_focus_on_frame (struct frame *f) XFlush (XtDisplay (shell_widget)); /* hey, I'd like to DEBUG this... */ } -/* Destroy the X window of frame S. */ +/* Destroy the X window of frame F. */ static void x_delete_frame (struct frame *f) { diff --git a/src/frame.c b/src/frame.c index 422566b..1f1bc83 100644 --- a/src/frame.c +++ b/src/frame.c @@ -3007,9 +3007,15 @@ change_frame_size (struct frame *f, int newheight, int newwidth, int delay) So deal. */ check_frame_size (f, &newheight, &newwidth); + /* Unconditionally mark that the frame has changed size. This is + because many things need to know after the + fact. f->size_change_pending will get reset below. The most that + can happen is that we will cycle through redisplay once more + --andy. */ + MARK_FRAME_SIZE_CHANGED (f); + if (delay || in_display || gc_in_progress) { - MARK_FRAME_SIZE_CHANGED (f); f->new_width = newwidth; f->new_height = newheight; return; diff --git a/src/glyphs-x.c b/src/glyphs-x.c index e0fa2d2..0451996 100644 --- a/src/glyphs-x.c +++ b/src/glyphs-x.c @@ -156,6 +156,8 @@ static void update_tab_widget_face (widget_value* wv, Lisp_Image_Instance* ii, Lisp_Object domain); #endif +void +emacs_Xt_handle_widget_losing_focus (struct frame* f, Widget losing_widget); #include "bitmaps.h" @@ -2130,6 +2132,12 @@ x_unmap_subwindow (Lisp_Image_Instance *p) } else /* must be a widget */ { + /* Since we are being unmapped we want the enclosing frame to + get focus. The losing with simple scrolling but is the safest + thing to do. */ + emacs_Xt_handle_widget_losing_focus + ( XFRAME (IMAGE_INSTANCE_FRAME (p)), + IMAGE_INSTANCE_X_WIDGET_ID (p)); XtUnmapWidget (IMAGE_INSTANCE_X_CLIPWIDGET (p)); } } @@ -2261,7 +2269,7 @@ x_redisplay_widget (Lisp_Image_Instance *p) } /* Adjust offsets within the frame. */ - if (XFRAME (IMAGE_INSTANCE_FRAME (p))->frame_changed) + if (XFRAME (IMAGE_INSTANCE_FRAME (p))->size_changed) { Arg al[2]; XtSetArg (al [0], XtNx, &IMAGE_INSTANCE_X_WIDGET_XOFFSET (p)); diff --git a/src/glyphs.c b/src/glyphs.c index f831733..fd9c733 100644 --- a/src/glyphs.c +++ b/src/glyphs.c @@ -382,7 +382,7 @@ process_image_string_instantiator (Lisp_Object data, skip it. */ if (!(dest_mask & IIFORMAT_METH (decode_image_instantiator_format - (XVECTOR_DATA (typevec)[0], ERROR_ME), + (INSTANTIATOR_TYPE (typevec), ERROR_ME), possible_dest_types, ()))) continue; if (fast_string_match (exp, 0, data, 0, -1, 0, ERROR_ME, 0) >= 0) @@ -689,7 +689,7 @@ get_image_instantiator_governing_domain (Lisp_Object instantiator, int governing_domain; struct image_instantiator_methods *meths = - decode_image_instantiator_format (XVECTOR_DATA (instantiator)[0], + decode_image_instantiator_format (INSTANTIATOR_TYPE (instantiator), ERROR_ME); governing_domain = IIFORMAT_METH_OR_GIVEN (meths, governing_domain, (), GOVERNING_DOMAIN_DEVICE); @@ -742,7 +742,7 @@ normalize_image_instantiator (Lisp_Object instantiator, GCPRO1 (instantiator); - meths = decode_image_instantiator_format (XVECTOR_DATA (instantiator)[0], + meths = decode_image_instantiator_format (INSTANTIATOR_TYPE (instantiator), ERROR_ME); RETURN_UNGCPRO (IIFORMAT_METH_OR_GIVEN (meths, normalize, (instantiator, contype, dest_mask), @@ -765,20 +765,20 @@ instantiate_image_instantiator (Lisp_Object governing_domain, struct gcpro gcpro1; GCPRO1 (ii); - if (!valid_image_instantiator_format_p (XVECTOR_DATA (instantiator)[0], + if (!valid_image_instantiator_format_p (INSTANTIATOR_TYPE (instantiator), DOMAIN_DEVICE (governing_domain))) signal_simple_error ("Image instantiator format is invalid in this locale.", instantiator); - meths = decode_image_instantiator_format (XVECTOR_DATA (instantiator)[0], + meths = decode_image_instantiator_format (INSTANTIATOR_TYPE (instantiator), ERROR_ME); MAYBE_IIFORMAT_METH (meths, instantiate, (ii, instantiator, pointer_fg, pointer_bg, dest_mask, domain)); /* Now do device specific instantiation. */ device_meths = decode_device_ii_format (DOMAIN_DEVICE (governing_domain), - XVECTOR_DATA (instantiator)[0], + INSTANTIATOR_TYPE (instantiator), ERROR_ME_NOT); if (!HAS_IIFORMAT_METH_P (meths, instantiate) @@ -1469,7 +1469,7 @@ make_image_instance_1 (Lisp_Object data, Lisp_Object domain, GCPRO1 (data); /* After normalizing the data, it's always either an image instance (which we filtered out above) or a vector. */ - if (EQ (XVECTOR_DATA (data)[0], Qinherit)) + if (EQ (INSTANTIATOR_TYPE (data), Qinherit)) signal_simple_error ("Inheritance not allowed here", data); governing_domain = get_image_instantiator_governing_domain (data, domain); @@ -1992,9 +1992,6 @@ image_instance_layout (Lisp_Object image_instance, assert (XIMAGE_INSTANCE_YOFFSET (image_instance) >= 0 && XIMAGE_INSTANCE_XOFFSET (image_instance) >= 0); - type = encode_image_instance_type (IMAGE_INSTANCE_TYPE (ii)); - meths = decode_device_ii_format (Qnil, type, ERROR_ME_NOT); - /* If geometry is unspecified then get some reasonable values for it. */ if (width == IMAGE_UNSPECIFIED_GEOMETRY || @@ -2002,20 +1999,11 @@ image_instance_layout (Lisp_Object image_instance, { int dwidth = IMAGE_UNSPECIFIED_GEOMETRY; int dheight = IMAGE_UNSPECIFIED_GEOMETRY; - /* Get the desired geometry. */ - if (meths && HAS_IIFORMAT_METH_P (meths, query_geometry)) - { - IIFORMAT_METH (meths, query_geometry, (image_instance, &dwidth, &dheight, - IMAGE_DESIRED_GEOMETRY, - domain)); - } - else - { - dwidth = IMAGE_INSTANCE_WIDTH (ii); - dheight = IMAGE_INSTANCE_HEIGHT (ii); - } - + image_instance_query_geometry (image_instance, + &dwidth, &dheight, + IMAGE_DESIRED_GEOMETRY, + domain); /* Compare with allowed geometry. */ if (width == IMAGE_UNSPECIFIED_GEOMETRY) width = dwidth; @@ -2042,12 +2030,15 @@ image_instance_layout (Lisp_Object image_instance, IMAGE_INSTANCE_WIDTH (ii) = width; IMAGE_INSTANCE_HEIGHT (ii) = height; - if (IIFORMAT_METH_OR_GIVEN (meths, layout, - (image_instance, width, height, xoffset, yoffset, - domain), 1)) - /* Do not clear the dirty flag here - redisplay will do this for - us at the end. */ - IMAGE_INSTANCE_LAYOUT_CHANGED (ii) = 0; + type = encode_image_instance_type (IMAGE_INSTANCE_TYPE (ii)); + meths = decode_device_ii_format (Qnil, type, ERROR_ME_NOT); + + MAYBE_IIFORMAT_METH (meths, layout, + (image_instance, width, height, xoffset, yoffset, + domain)); + /* Do not clear the dirty flag here - redisplay will do this for + us at the end. */ + IMAGE_INSTANCE_LAYOUT_CHANGED (ii) = 0; } /* Update an image instance from its changed instantiator. */ @@ -3054,6 +3045,44 @@ image_mark (Lisp_Object obj) mark_object (IMAGE_SPECIFIER_ATTACHEE_PROPERTY (image)); } +static int +instantiator_eq_equal (Lisp_Object obj1, Lisp_Object obj2) +{ + if (EQ (obj1, obj2)) + return 1; + + else if (CONSP (obj1) && CONSP (obj2)) + { + return instantiator_eq_equal (XCAR (obj1), XCAR (obj2)) + && + instantiator_eq_equal (XCDR (obj1), XCDR (obj2)); + } + return 0; +} + +static hashcode_t +instantiator_eq_hash (Lisp_Object obj) +{ + if (CONSP (obj)) + { + /* no point in worrying about tail recursion, since we're not + going very deep */ + return HASH2 (instantiator_eq_hash (XCAR (obj)), + instantiator_eq_hash (XCDR (obj))); + } + return LISP_HASH (obj); +} + +/* We need a special hash table for storing image instances. */ +Lisp_Object +make_image_instance_cache_hash_table (void) +{ + return make_general_lisp_hash_table + (instantiator_eq_hash, instantiator_eq_equal, + 30, -1.0, -1.0, + HASH_TABLE_KEY_CAR_VALUE_WEAK); +} + static Lisp_Object image_instantiate_cache_result (Lisp_Object locative) { @@ -3110,7 +3139,7 @@ image_instantiate (Lisp_Object specifier, Lisp_Object matchspec, instantiator, domain); } else if (VECTORP (instantiator) - && EQ (XVECTOR_DATA (instantiator)[0], Qinherit)) + && EQ (INSTANTIATOR_TYPE (instantiator), Qinherit)) { assert (XVECTOR_LENGTH (instantiator) == 3); return (FACE_PROPERTY_INSTANCE @@ -3121,7 +3150,8 @@ image_instantiate (Lisp_Object specifier, Lisp_Object matchspec, { Lisp_Object instance = Qnil; Lisp_Object subtable = Qnil; - Lisp_Object ls3 = Qnil; + /* #### Should this be GCPRO'd? */ + Lisp_Object hash_key = Qnil; Lisp_Object pointer_fg = Qnil; Lisp_Object pointer_bg = Qnil; Lisp_Object governing_domain = @@ -3139,8 +3169,15 @@ image_instantiate (Lisp_Object specifier, Lisp_Object matchspec, { pointer_fg = FACE_FOREGROUND (Vpointer_face, domain); pointer_bg = FACE_BACKGROUND (Vpointer_face, domain); - ls3 = list3 (glyph, pointer_fg, pointer_bg); + hash_key = list4 (glyph, INSTANTIATOR_TYPE (instantiator), + pointer_fg, pointer_bg); } + else + /* We cannot simply key on the glyph since fallbacks could use + the same glyph but have a totally different instantiator + type. Thus we key on the glyph and the type (but not any + other parts of the instantiator. */ + hash_key = list2 (glyph, INSTANTIATOR_TYPE (instantiator)); /* First look in the device cache. */ if (DEVICEP (governing_domain)) @@ -3167,20 +3204,15 @@ image_instantiate (Lisp_Object specifier, Lisp_Object matchspec, have to use EQUAL because we massaged the instantiator into a cons3 also containing the foreground and background of the pointer face. */ + subtable = make_image_instance_cache_hash_table (); - subtable = make_lisp_hash_table - (20, pointerp ? HASH_TABLE_KEY_CAR_WEAK - : HASH_TABLE_KEY_WEAK, - pointerp ? HASH_TABLE_EQUAL - : HASH_TABLE_EQ); Fputhash (make_int (dest_mask), subtable, XDEVICE (governing_domain)->image_instance_cache); instance = Qunbound; } else { - instance = Fgethash (pointerp ? ls3 : glyph, - subtable, Qunbound); + instance = Fgethash (hash_key, subtable, Qunbound); } } else if (WINDOWP (governing_domain)) @@ -3188,7 +3220,7 @@ image_instantiate (Lisp_Object specifier, Lisp_Object matchspec, /* Subwindows have a per-window cache and have to be treated differently. */ instance = - Fgethash (pointerp ? ls3 : glyph, + Fgethash (hash_key, XWINDOW (governing_domain)->subwindow_instance_cache, Qunbound); } @@ -3201,7 +3233,7 @@ image_instantiate (Lisp_Object specifier, Lisp_Object matchspec, { Lisp_Object locative = noseeum_cons (Qnil, - noseeum_cons (pointerp ? ls3 : glyph, + noseeum_cons (hash_key, DEVICEP (governing_domain) ? subtable : XWINDOW (governing_domain) ->subwindow_instance_cache)); @@ -3234,7 +3266,7 @@ image_instantiate (Lisp_Object specifier, Lisp_Object matchspec, #ifdef ERROR_CHECK_GLYPHS if (image_instance_type_to_mask (XIMAGE_INSTANCE_TYPE (instance)) & (IMAGE_SUBWINDOW_MASK | IMAGE_WIDGET_MASK)) - assert (EQ (Fgethash ((pointerp ? ls3 : glyph), + assert (EQ (Fgethash (hash_key, XWINDOW (governing_domain) ->subwindow_instance_cache, Qunbound), instance)); @@ -3258,7 +3290,7 @@ image_instantiate (Lisp_Object specifier, Lisp_Object matchspec, possible to make changes that don't get reflected in the display. */ update_image_instance (instance, instantiator); - free_list (ls3); + free_list (hash_key); } #ifdef ERROR_CHECK_GLYPHS diff --git a/src/glyphs.h b/src/glyphs.h index 056cc23..c279f54 100644 --- a/src/glyphs.h +++ b/src/glyphs.h @@ -327,6 +327,8 @@ do { \ #define IIFORMAT_INHERITS_SHARED_DEVMETHOD(type, from, format, m, fromformat) \ (type##_##format##_image_instantiator_methods->m##_method = from##_##fromformat##_##m) +#define INSTANTIATOR_TYPE(inst) (XVECTOR_DATA ((inst))[0]) + struct image_instantiator_methods * decode_device_ii_format (Lisp_Object device, Lisp_Object format, Error_behavior errb); @@ -374,6 +376,7 @@ int layout_layout (Lisp_Object image_instance, int width, int height, int xoffset, int yoffset, Lisp_Object domain); int invalidate_glyph_geometry_maybe (Lisp_Object glyph_or_ii, struct window* w); +Lisp_Object make_image_instance_cache_hash_table (void); DECLARE_DOESNT_RETURN (incompatible_image_types (Lisp_Object instantiator, int given_dest_mask, diff --git a/src/menubar.c b/src/menubar.c index 7332455..d0d60d7 100644 --- a/src/menubar.c +++ b/src/menubar.c @@ -115,9 +115,6 @@ menubar_visible_p_changed (Lisp_Object specifier, struct window *w, Lisp_Object oldval) { MARK_MENUBAR_CHANGED; - /* This is to force subwindow offsets to be recalculated - see - x_redisplay_widget (). */ - MARK_FRAME_CHANGED (WINDOW_XFRAME (w)); } static void diff --git a/src/mule-ccl.c b/src/mule-ccl.c index 4a61e89..a6576e7 100644 --- a/src/mule-ccl.c +++ b/src/mule-ccl.c @@ -600,7 +600,7 @@ static tr_stack *mapping_stack_pointer; /* If this variable is non-zero, it indicates the stack_idx of immediately called by CCL_MapMultiple. */ -static int stack_idx_of_map_multiple = 0; +static int stack_idx_of_map_multiple; #define PUSH_MAPPING_STACK(restlen, orig) \ do { \ diff --git a/src/redisplay-x.c b/src/redisplay-x.c index ec86469..fcbd5e9 100644 --- a/src/redisplay-x.c +++ b/src/redisplay-x.c @@ -524,7 +524,7 @@ x_output_display_block (struct window *w, struct display_line *dl, int block, /***************************************************************************** x_bevel_area - Draw a shadows for the given area in the given face. + Draw shadows for the given area in the given face. ****************************************************************************/ static void x_bevel_area (struct window *w, face_index findex, diff --git a/src/redisplay.h b/src/redisplay.h index fdadb45..1e441ae 100644 --- a/src/redisplay.h +++ b/src/redisplay.h @@ -139,7 +139,7 @@ struct rune union /* Information specific to the type of rune */ { - /* #### GLyphs are rare. Is it really necessary to waste 8 bytes on every + /* #### Glyphs are rare. Is it really necessary to waste 8 bytes on every rune for that?! */ /* DGLYPH */ struct diff --git a/src/regex.c b/src/regex.c index 1fa8680..677db05 100644 --- a/src/regex.c +++ b/src/regex.c @@ -4169,7 +4169,7 @@ re_search_2 (struct re_pattern_buffer *bufp, const char *str1, /* Call before fetching a character with *d. This switches over to string2 if necessary. */ -#define PREFETCH() \ +#define REGEX_PREFETCH() \ while (d == dend) \ { \ /* End of string2 => fail. */ \ @@ -4711,7 +4711,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, re_char *string1, Emchar pat_ch, buf_ch; Bytecount pat_len; - PREFETCH (); + REGEX_PREFETCH (); pat_ch = charptr_emchar (p); buf_ch = charptr_emchar (d); if (RE_TRANSLATE (buf_ch) != pat_ch) @@ -4723,7 +4723,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, re_char *string1, mcnt -= pat_len; #else /* not MULE */ - PREFETCH (); + REGEX_PREFETCH (); if ((unsigned char) RE_TRANSLATE (*d++) != *p++) goto fail; mcnt--; @@ -4735,7 +4735,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, re_char *string1, { do { - PREFETCH (); + REGEX_PREFETCH (); if (*d++ != *p++) goto fail; } while (--mcnt); @@ -4748,7 +4748,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, re_char *string1, case anychar: DEBUG_PRINT1 ("EXECUTING anychar.\n"); - PREFETCH (); + REGEX_PREFETCH (); if ((!(bufp->syntax & RE_DOT_NEWLINE) && TRANSLATE (*d) == '\n') || (bufp->syntax & RE_DOT_NOT_NULL && TRANSLATE (*d) == '\000')) @@ -4768,7 +4768,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, re_char *string1, DEBUG_PRINT2 ("EXECUTING charset%s.\n", not ? "_not" : ""); - PREFETCH (); + REGEX_PREFETCH (); c = TRANSLATE (*d); /* The character to match. */ /* Cast to `unsigned' instead of `unsigned char' in case the @@ -4795,7 +4795,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, re_char *string1, DEBUG_PRINT2 ("EXECUTING charset_mule%s.\n", not ? "_not" : ""); - PREFETCH (); + REGEX_PREFETCH (); c = charptr_emchar ((const Bufbyte *) d); c = TRANSLATE_EXTENDED_UNSAFE (c); /* The character to match. */ @@ -5047,7 +5047,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, re_char *string1, if (d2 == dend2) break; /* If necessary, advance to next segment in data. */ - PREFETCH (); + REGEX_PREFETCH (); /* How many characters left in this segment to match. */ mcnt = dend - d; @@ -5606,7 +5606,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, re_char *string1, int matches; Emchar emch; - PREFETCH (); + REGEX_PREFETCH (); emch = charptr_emchar ((const Bufbyte *) d); matches = (SYNTAX_UNSAFE (XCHAR_TABLE (regex_emacs_buffer->mirror_syntax_table), @@ -5639,7 +5639,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, re_char *string1, Emchar emch; mcnt = *p++; - PREFETCH (); + REGEX_PREFETCH (); emch = charptr_emchar ((const Bufbyte *) d); INC_CHARPTR (d); if (check_category_char(emch, regex_emacs_buffer->category_table, @@ -5657,7 +5657,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, re_char *string1, #else /* not emacs */ case wordchar: DEBUG_PRINT1 ("EXECUTING non-Emacs wordchar.\n"); - PREFETCH (); + REGEX_PREFETCH (); if (!WORDCHAR_P_UNSAFE ((int) (*d))) goto fail; SET_REGS_MATCHED (); @@ -5666,7 +5666,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, re_char *string1, case notwordchar: DEBUG_PRINT1 ("EXECUTING non-Emacs notwordchar.\n"); - PREFETCH (); + REGEX_PREFETCH (); if (!WORDCHAR_P_UNSAFE ((int) (*d))) goto fail; SET_REGS_MATCHED (); diff --git a/src/window.c b/src/window.c index ef0cf7f..7790ce7 100644 --- a/src/window.c +++ b/src/window.c @@ -281,9 +281,8 @@ allocate_window (void) p->face_cachels = Dynarr_new (face_cachel); p->glyph_cachels = Dynarr_new (glyph_cachel); p->line_start_cache = Dynarr_new (line_start_cache); - p->subwindow_instance_cache = make_lisp_hash_table (30, - HASH_TABLE_KEY_VALUE_WEAK, - HASH_TABLE_EQ); + p->subwindow_instance_cache = make_image_instance_cache_hash_table (); + p->line_cache_last_updated = Qzero; INIT_DISP_VARIABLE (last_point_x, 0); INIT_DISP_VARIABLE (last_point_y, 0); @@ -3604,9 +3603,7 @@ make_dummy_parent (Lisp_Object window) p->face_cachels = Dynarr_new (face_cachel); p->glyph_cachels = Dynarr_new (glyph_cachel); p->subwindow_instance_cache = - make_lisp_hash_table (30, - HASH_TABLE_KEY_VALUE_WEAK, - HASH_TABLE_EQ); + make_image_instance_cache_hash_table (); /* Put new into window structure in place of window */ replace_window (window, new); @@ -5478,9 +5475,8 @@ by `current-window-configuration' (which see). set. */ if (NILP (w->subwindow_instance_cache)) w->subwindow_instance_cache = - make_lisp_hash_table (30, - HASH_TABLE_KEY_VALUE_WEAK, - HASH_TABLE_EQ); + make_image_instance_cache_hash_table (); + SET_LAST_MODIFIED (w, 1); SET_LAST_FACECHANGE (w); w->config_mark = 0; @@ -5861,14 +5857,20 @@ its value is -not- saved. /* config->frame_width = FRAME_WIDTH (f); config->frame_height = FRAME_HEIGHT (f); */ - /* When using `push-window-configuration', often the minibuffer ends + /* #### When using `push-window-configuration', often the minibuffer ends up as the selected window because functions run as the result of user interaction e.g. hyper-apropos. It seems to me the sensible - thing to do is not record the minibuffer here. */ + thing to do is not record the minibuffer here. + + #### Unfortunately this is a change to previous behaviour, however logical + it may be, so revert for the moment. */ +#if 0 if (FRAME_MINIBUF_ONLY_P (f) || minibuf_level) config->current_window = FRAME_SELECTED_WINDOW (f); else config->current_window = FRAME_LAST_NONMINIBUF_WINDOW (f); +#endif + config->current_window = FRAME_SELECTED_WINDOW (f); XSETBUFFER (config->current_buffer, current_buffer); config->minibuffer_scroll_window = Vminibuffer_scroll_window; config->root_window = FRAME_ROOT_WINDOW (f); diff --git a/tests/ChangeLog b/tests/ChangeLog index 863abf1..74bfcd5 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,7 @@ +2001-01-08 Martin Buchholz + + * XEmacs 21.2.40 is released. + 2000-12-31 Martin Buchholz * XEmacs 21.2.39 is released.