Mercurial > hg > xemacs-beta
comparison man/internals/internals.texi @ 802:19dfb459d51a
[xemacs-hg @ 2002-04-03 10:47:37 by ben]
fix tty problem et al
internals/internals.texi: Add section on correctly merging a branch back into the trunk.
console-tty.c, eval.c, event-unixoid.c, file-coding.c, file-coding.h, lisp.h, print.c, sysdep.c: Fix data corruption error in print.c from print_depth becoming
negative. Borrow primitives internal_bind_int,
internal_bind_lisp_object from my stderr-proc ws, soon to be
integrated; use them to properly bind print_depth et al.
First fix for TTY problem. The basic problem is I switched things
so that the TTY I/O is filtered through a coding system, for the
support of kterm and such, that speak JIS or similar
encodings. (#### I ***swear*** I had this working way back in
19.12.) Anyway, this introduced buffering issues, in which instead
of one char being read, it tried to read 1024 chars. I tried
setting the stdin descriptor non-blocking, but it doesn't appear
to work on Cygwin. (#### Andy, do you know anything about this?)
So I fixed it elsewhere. If you get weirdness on the TTY, look in
console-tty.c and see how it gets the coding system; maybe there's
a way to change it (and if not, there should be!).
Also fix warning in sysdep.c.
author | ben |
---|---|
date | Wed, 03 Apr 2002 10:47:52 +0000 |
parents | 943eaba38521 |
children | 48eed784e93a |
comparison
equal
deleted
inserted
replaced
801:2b676dc88c66 | 802:19dfb459d51a |
---|---|
115 * XEmacs From the Perspective of Building:: | 115 * XEmacs From the Perspective of Building:: |
116 * XEmacs From the Inside:: | 116 * XEmacs From the Inside:: |
117 * The XEmacs Object System (Abstractly Speaking):: | 117 * The XEmacs Object System (Abstractly Speaking):: |
118 * How Lisp Objects Are Represented in C:: | 118 * How Lisp Objects Are Represented in C:: |
119 * Rules When Writing New C Code:: | 119 * Rules When Writing New C Code:: |
120 * CVS Techniques:: | |
120 * A Summary of the Various XEmacs Modules:: | 121 * A Summary of the Various XEmacs Modules:: |
121 * Allocation of Objects in XEmacs Lisp:: | 122 * Allocation of Objects in XEmacs Lisp:: |
122 * Dumping:: | 123 * Dumping:: |
123 * Events and the Event Loop:: | 124 * Events and the Event Loop:: |
124 * Evaluation; Stack Frames; Bindings:: | 125 * Evaluation; Stack Frames; Bindings:: |
152 | 153 |
153 Rules When Writing New C Code | 154 Rules When Writing New C Code |
154 | 155 |
155 * General Coding Rules:: | 156 * General Coding Rules:: |
156 * Writing Lisp Primitives:: | 157 * Writing Lisp Primitives:: |
158 * Writing Good Comments:: | |
157 * Adding Global Lisp Variables:: | 159 * Adding Global Lisp Variables:: |
160 * Proper Use of Unsigned Types:: | |
158 * Coding for Mule:: | 161 * Coding for Mule:: |
159 * Techniques for XEmacs Developers:: | 162 * Techniques for XEmacs Developers:: |
160 | 163 |
161 Coding for Mule | 164 Coding for Mule |
162 | 165 |
163 * Character-Related Data Types:: | 166 * Character-Related Data Types:: |
164 * Working With Character and Byte Positions:: | 167 * Working With Character and Byte Positions:: |
165 * Conversion to and from External Data:: | 168 * Conversion to and from External Data:: |
166 * General Guidelines for Writing Mule-Aware Code:: | 169 * General Guidelines for Writing Mule-Aware Code:: |
167 * An Example of Mule-Aware Code:: | 170 * An Example of Mule-Aware Code:: |
171 | |
172 CVS Techniques | |
173 | |
174 * Merging a Branch into the Trunk:: | |
168 | 175 |
169 A Summary of the Various XEmacs Modules | 176 A Summary of the Various XEmacs Modules |
170 | 177 |
171 * Low-Level Modules:: | 178 * Low-Level Modules:: |
172 * Basic Lisp Modules:: | 179 * Basic Lisp Modules:: |
1837 performance is an issue, use @code{type_checking_assert}, | 1844 performance is an issue, use @code{type_checking_assert}, |
1838 @code{bufpos_checking_assert}, and @code{gc_checking_assert}, which do | 1845 @code{bufpos_checking_assert}, and @code{gc_checking_assert}, which do |
1839 nothing unless the corresponding configure error checking flag was | 1846 nothing unless the corresponding configure error checking flag was |
1840 specified. | 1847 specified. |
1841 | 1848 |
1842 @node Rules When Writing New C Code, A Summary of the Various XEmacs Modules, How Lisp Objects Are Represented in C, Top | 1849 @node Rules When Writing New C Code, CVS Techniques, How Lisp Objects Are Represented in C, Top |
1843 @chapter Rules When Writing New C Code | 1850 @chapter Rules When Writing New C Code |
1844 @cindex writing new C code, rules when | 1851 @cindex writing new C code, rules when |
1845 @cindex C code, rules when writing new | 1852 @cindex C code, rules when writing new |
1846 @cindex code, rules when writing new C | 1853 @cindex code, rules when writing new C |
1847 | 1854 |
3094 add a DEFINE_LRECORD_IMPLEMENTATION call to @file{@var{foo}.c} | 3101 add a DEFINE_LRECORD_IMPLEMENTATION call to @file{@var{foo}.c} |
3095 @item | 3102 @item |
3096 add an INIT_LRECORD_IMPLEMENTATION call to @code{syms_of_@var{foo}.c} | 3103 add an INIT_LRECORD_IMPLEMENTATION call to @code{syms_of_@var{foo}.c} |
3097 @end enumerate | 3104 @end enumerate |
3098 | 3105 |
3099 @node A Summary of the Various XEmacs Modules, Allocation of Objects in XEmacs Lisp, Rules When Writing New C Code, Top | 3106 @node CVS Techniques, A Summary of the Various XEmacs Modules, Rules When Writing New C Code, Top |
3107 @chapter CVS Techniques | |
3108 @cindex CVS techniques | |
3109 | |
3110 @menu | |
3111 * Merging a Branch into the Trunk:: | |
3112 @end menu | |
3113 | |
3114 @node Merging a Branch into the Trunk | |
3115 @section Merging a Branch into the Trunk | |
3116 @cindex merging a branch into the trunk | |
3117 | |
3118 @enumerate | |
3119 @item | |
3120 If you haven't already done a merge, you will be merging from the branch | |
3121 point; otherwise you'll be merging from the last merge point, which | |
3122 should be marked by a tag, e.g. @samp{last-sync-ben-mule-21-5}. In the | |
3123 former case, create the last-sync tag, e.g. | |
3124 | |
3125 @example | |
3126 crw rtag -r ben-mule-21-5-bp last-sync-ben-mule-21-5 xemacs | |
3127 @end example | |
3128 | |
3129 (You did create a branch point tag when you created the branch, didn't | |
3130 you?) | |
3131 | |
3132 @item | |
3133 Check everything in on your branch. | |
3134 | |
3135 @item | |
3136 Tag your branch with a pre-sync tag, e.g. | |
3137 | |
3138 @example | |
3139 crw rtag -r ben-mule-21-5 ben-mule-21-5-pre-feb-20-2002-sync xemacs | |
3140 @end example | |
3141 | |
3142 Note, you need to use rtag and specify a version with @samp{-r} (use | |
3143 @samp{-r HEAD} if necessary) so that removed files are handled correctly | |
3144 in some obscure cases. See section 4.8 of the CVS manual. | |
3145 | |
3146 @item | |
3147 Tag the trunk so you have a stable place to merge up to in case people | |
3148 are asynchronously committing to the trunk, e.g. | |
3149 | |
3150 @example | |
3151 crw rtag -r HEAD main-branch-ben-mule-21-5-syncpoint-feb-20-2002 xemacs | |
3152 crw rtag -F -r main-branch-ben-mule-21-5-syncpoint-feb-20-2002 next-sync-ben-mule-21-5 xemacs | |
3153 @end example | |
3154 | |
3155 Use -F in the second case because the name might already exist, e.g. if | |
3156 you've already done a merge. We make two tags because one is a | |
3157 permanent mark indicating a syncpoint when merging, and the other is a | |
3158 symbolic tag to make other operations easier. | |
3159 | |
3160 @item | |
3161 Make a backup of your source tree (not totally necessary but useful for | |
3162 reference and peace of mind): Move one level up from the top directory | |
3163 of your branch and do, e.g. | |
3164 | |
3165 @example | |
3166 cp -a mule mule-backup-2-23-02 | |
3167 @end example | |
3168 | |
3169 @item | |
3170 Now, we're ready to merge! Make sure you're in the top directory of | |
3171 your branch and do, e.g. | |
3172 | |
3173 @example | |
3174 cvs update -j last-sync-ben-mule-21-5 -j next-sync-ben-mule-21-5 | |
3175 @end example | |
3176 | |
3177 @item | |
3178 Fix all merge conflicts. Get the sucker to compile and run. | |
3179 | |
3180 @item | |
3181 Tag your branch with a post-sync tag, e.g. | |
3182 | |
3183 @example | |
3184 crw rtag -r ben-mule-21-5 ben-mule-21-5-post-feb-20-2002-sync xemacs | |
3185 @end example | |
3186 | |
3187 @item | |
3188 Update the last-sync tag, e.g. | |
3189 | |
3190 @example | |
3191 crw rtag -F -r next-sync-ben-mule-21-5 last-sync-ben-mule-21-5 xemacs | |
3192 @end example | |
3193 @end enumerate | |
3194 | |
3195 | |
3196 @node A Summary of the Various XEmacs Modules, Allocation of Objects in XEmacs Lisp, CVS Techniques, Top | |
3100 @chapter A Summary of the Various XEmacs Modules | 3197 @chapter A Summary of the Various XEmacs Modules |
3101 @cindex modules, a summary of the various XEmacs | 3198 @cindex modules, a summary of the various XEmacs |
3102 | 3199 |
3103 This is accurate as of XEmacs 20.0. | 3200 This is accurate as of XEmacs 20.0. |
3104 | 3201 |