Mercurial > hg > xemacs-beta
comparison man/internals/internals.texi @ 2507:e27943beb30f
[xemacs-hg @ 2005-01-26 09:48:24 by ben]
Update Internals History
internals/internals.texi: Update History.
internals/internals.texi: Redo section on Windows 95 support for Unicode.
author | ben |
---|---|
date | Wed, 26 Jan 2005 09:48:27 +0000 |
parents | 6a51753a5f65 |
children | d6a2e12b8411 |
comparison
equal
deleted
inserted
replaced
2506:8c96bdabcaf9 | 2507:e27943beb30f |
---|---|
1 \input texinfo @c -*-texinfo-*- | 1 \input texinfo @c -*-texinfo-*- |
2 @c %**start of header | 2 @c %**start of header |
3 @setfilename ../../info/internals.info | 3 @setfilename ../../info/internals.info |
4 @settitle XEmacs Internals Manual | 4 @settitle XEmacs Internals Manual |
5 @c %**end of header | 5 @c %**end of header |
6 | 6 |
1020 | 1020 |
1021 At this point we pick up with a time line of events. (A broader timeline | 1021 At this point we pick up with a time line of events. (A broader timeline |
1022 is available at @uref{http://http://www.jwz.org/doc/emacs-timeline.html, | 1022 is available at @uref{http://http://www.jwz.org/doc/emacs-timeline.html, |
1023 ``Emacs Timeline''}.) | 1023 ``Emacs Timeline''}.) |
1024 | 1024 |
1025 @strong{NOTE}: Sometimes there are two release dates listed below. In | |
1026 this case, the first one is the date listed in the source code, and | |
1027 the second one is when the official announcement was made on | |
1028 Usenet. (Sometimes, one or the other of the dates is missing, and then | |
1029 the date below reflects the only existing one.) | |
1030 | |
1025 @itemize @bullet | 1031 @itemize @bullet |
1026 @item | 1032 @item |
1027 Unipress Emacs, a $395 commercial product, was released on May 6, 1983. | 1033 Unipress Emacs, a $395 commercial product, was released on May 6, 1983. |
1028 This was an outgrowth of the Emacs-in-C collaboration written by Gosling | 1034 This was an outgrowth of the Emacs-in-C collaboration written by Gosling |
1029 and RMS. | 1035 and RMS. |
1030 | 1036 |
1031 @item | 1037 @item |
1032 GNU Emacs version 13.0? was released on March 20, 1985. This may have | 1038 The first entry on @file{net.emacs} available on Google is dated |
1033 been the initial public release. This was also based on this same | 1039 August 20, 1984: |
1034 Emacs-in-C collaboration. | 1040 |
1041 @example | |
1042 From: B.BURGER (btb@@hogpc.UUCP) | |
1043 Subject: Arrow Key Problems | |
1044 Newsgroups: net.emacs | |
1045 Date: 1984-08-20 11:15:46 PST | |
1046 | |
1047 I would greatly appreciate some help getting my arrow keys to work | |
1048 with EMACS 4.5 on an AT&T 3B20. My terminal is an AT&T PC6300 | |
1049 (IBM-compatible) using an AT&T 4410 terminal emulator. While this | |
1050 may not yet be a common configuration, I believe the same problem | |
1051 has come up using an hp2621 emulator or a real live vt100. | |
1052 | |
1053 The problem is that, when I press an arrow key, it isn't | |
1054 transmitted/read by emacs (one or the other) correctly. | |
1055 The 4410 terminal description that I'm using defines up=M-[A | |
1056 (it appears as ^[[A, with the initial ^[ as one character). | |
1057 Pressting cntrl-Q up_arrow while in emacs shows me the same thing. | |
1058 On the vt100 the same thing happens but the terminal file says up=M-A | |
1059 (it appears as ^[A). I've tried every other imaginable up= but get | |
1060 the same results. I've also been unsuccessful writing a macro that | |
1061 understands what my keyboard is saying. | |
1062 | |
1063 Any ideas on how I can get the arrow keys to do somethingt? | |
1064 Anything? Thanks in advance. | |
1065 | |
1066 --Bruce Burger AT&T-Information Systems Freehold, NJ | |
1067 @{...ihnp4!@}hogpc!btb (201) 577-5230 | |
1068 @end example | |
1069 | |
1070 @item | |
1071 GNU Emacs versions 1.0 through 1.12 were apparently released in early | |
1072 1985. The next version after this was 13.0; there were no GNU Emacs | |
1073 versions 2 through 12. | |
1074 | |
1075 @item | |
1076 GNU Emacs version 13.0? 1.0? was released on March 20, 1985. This | |
1077 appears to be the initial public release. This was also based on this | |
1078 same Emacs-in-C collaboration. | |
1079 | |
1080 Here is the release notice: | |
1081 | |
1082 @example | |
1083 From: Chuck Wegrzyn (wegrzyn@@encore.UUCP) | |
1084 Subject: Public Domain EMACS available from GNU Project | |
1085 Newsgroups: net.emacs, net.general, net.unix, net.unix-wizards | |
1086 Date: 1985-03-20 08:03:20 PST | |
1087 | |
1088 The GNU project has released its first major subsystem, | |
1089 the EMACS editor. This editor is a sophisticated screen | |
1090 editor that is compatible and comparable with the EMACS | |
1091 editors being sold by UniPress and CCA. It comes with | |
1092 Mock Lisp ( did you know that UniPress trademarked MLISP??), | |
1093 and all the little bells and features most of us expect | |
1094 with EMACS. | |
1095 | |
1096 The GNU version of EMACS, written by Richard Stallman, is | |
1097 available for distribution. The distribution includes all | |
1098 source code for EMACS and a source code level debugger. | |
1099 Furthermore, under the GNU project banner, the EMACS system | |
1100 can be distributed (in source code form) by one and all. | |
1101 | |
1102 I was thinking of sending out the source code over the net, | |
1103 but resisted : it is over 1Mbyte of code. If there is | |
1104 enough demand, I will add a UUCP dial-in to our system, or | |
1105 send out tapes, or ... ? | |
1106 | |
1107 Is anyone interested in EMACS? If so, please tell me how | |
1108 you think I should distribute it? | |
1109 | |
1110 Chuck Wegrzyn | |
1111 @{allegra,decvax,ihnp4,princeton@}!encore!wegrzyn | |
1112 @end example | |
1035 | 1113 |
1036 @item | 1114 @item |
1037 GNU Emacs version 15.10 was released on April 11, 1985. | 1115 GNU Emacs version 15.10 was released on April 11, 1985. |
1038 | 1116 |
1039 @item | 1117 @item |
1062 @item | 1140 @item |
1063 Version 17.45 released on January 30, 1986. | 1141 Version 17.45 released on January 30, 1986. |
1064 @item | 1142 @item |
1065 Version 17.46 released on February 4, 1986. | 1143 Version 17.46 released on February 4, 1986. |
1066 @item | 1144 @item |
1067 Version 17.48 released on February 10, 1986. | 1145 Version 17.48 released on February 10, 1986 (February 9 on net.emacs). |
1068 @item | 1146 @item |
1069 Version 17.49 released on February 12, 1986. | 1147 Version 17.49 released on February 12, 1986. |
1070 @item | 1148 @item |
1071 Version 17.55 released on March 18, 1986. | 1149 Version 17.55 released on March 18, 1986. |
1072 @item | 1150 @item |
1073 Version 17.57 released on March 27, 1986. | 1151 Version 17.57 released on March 27, 1986. |
1074 @item | 1152 @item |
1075 Version 17.58 released on April 4, 1986. | 1153 Version 17.58 released on April 4, 1986. |
1076 @item | 1154 @item |
1077 Version 17.61 released on April 12, 1986. | 1155 Version 17.61 released on April 12 (?), 1986 (April 22 on net.emacs). |
1078 @item | 1156 @item |
1079 Version 17.63 released on May 7, 1986. | 1157 Version 17.63 released on May 7, 1986. |
1080 @item | 1158 @item |
1081 Version 17.64 released on May 12, 1986. | 1159 Version 17.64 released on May 12, 1986. |
1082 @item | 1160 @item |
1084 @item | 1162 @item |
1085 Version 18.30 (a beta version) released on November 15, 1986. | 1163 Version 18.30 (a beta version) released on November 15, 1986. |
1086 @item | 1164 @item |
1087 Version 18.31 (a beta version) released on November 23, 1986. | 1165 Version 18.31 (a beta version) released on November 23, 1986. |
1088 @item | 1166 @item |
1089 Version 18.32 (a beta version) released on December 7, 1986. | 1167 Version 18.32 (a beta version) released on December 6 or 7, 1986. |
1090 @item | 1168 @item |
1091 Version 18.33 (a beta version) released on December 12, 1986. | 1169 Version 18.33 (a beta version) released on December 12, 1986. |
1092 @item | 1170 @item |
1093 Version 18.35 (a beta version) released on January 5, 1987. | 1171 Version 18.35 (a beta version) released on January 5, 1987. |
1094 @item | 1172 @item |
1095 Version 18.36 (a beta version) released on January 21, 1987. | 1173 Version 18.36 (a beta version) released on January 21, 1987. |
1096 @item | 1174 @item |
1097 January 27, 1987: The Great Usenet Renaming. net.emacs is now | 1175 January 27, 1987: The Great Usenet Renaming. net.emacs is now |
1098 comp.emacs. | 1176 comp.emacs. |
1099 @item | 1177 @item |
1100 Version 18.37 (a beta version) released on February 12, 1987. | 1178 Version 18.37 (a beta version) released on February 9 or 12, 1987. |
1101 @item | 1179 @item |
1102 Version 18.38 (a beta version) released on March 3, 1987. | 1180 Version 18.38 (a beta version) released on March 2 or 3, 1987. |
1103 @item | 1181 @item |
1104 Version 18.39 (a beta version) released on March 14, 1987. | 1182 Version 18.39 (a beta version) released on March 14, 1987. |
1105 @item | 1183 @item |
1106 Version 18.40 (a beta version) released on March 18, 1987. | 1184 Version 18.40 (a beta version) released on March 18, 1987. |
1107 @item | 1185 @item |
1108 Version 18.41 (the first ``official'' release) released on March 22, | 1186 Version 18.41 (the first ``official'' release) released on March 22, |
1109 1987. | 1187 1987. |
1110 @item | 1188 @item |
1111 Version 18.45 released on June 2, 1987. | 1189 Version 18.45 released on June 2, 1987. |
1112 @item | 1190 @item |
1113 Version 18.46 released on June 9, 1987. | 1191 Version 18.46 released on June 8 or 9, 1987. |
1114 @item | 1192 @item |
1115 Version 18.47 released on June 18, 1987. | 1193 Version 18.47 released on June 10 or 18, 1987. |
1116 @item | 1194 @item |
1117 Version 18.48 released on September 3, 1987. | 1195 Version 18.48 released on August 30 or September 3, 1987. |
1118 @item | 1196 @item |
1119 Version 18.49 released on September 18, 1987. | 1197 Version 18.49 released on September 16 or 18, 1987. |
1120 @item | 1198 @item |
1121 Version 18.50 released on February 13, 1988. | 1199 Version 18.50 released on February 11 or 13, 1988. |
1122 @item | 1200 @item |
1123 Version 18.51 released on May 7, 1988. | 1201 Version 18.51 released on May 6 or 7, 1988. |
1124 @item | 1202 @item |
1125 Version 18.52 released on September 1, 1988. | 1203 Version 18.52 released on September 1, 1988. |
1126 @item | 1204 @item |
1127 Version 18.53 released on February 24, 1989. | 1205 Version 18.53 released on February 23 or 24, 1989. |
1128 @item | 1206 @item |
1129 Version 18.54 released on April 26, 1989. | 1207 Version 18.54 released on April 26, 1989. |
1130 @item | 1208 @item |
1131 Version 18.55 released on August 23, 1989. This is the earliest version | 1209 Version 18.55 released on August 18 or 23, 1989. This is the earliest version |
1132 that is still available by FTP. (Verified in November 2004.) | 1210 that is still available by FTP. (Verified in November 2004.) |
1133 @item | 1211 @item |
1134 Version 18.56 released on January 17, 1991. | 1212 Version 18.56 released on January 16 or 17, 1991. |
1135 @item | 1213 @item |
1136 Version 18.57 released late January, 1991. | 1214 Version 18.57 released on January 25, 1991. |
1137 @item | 1215 @item |
1138 Version 18.58 released sometime in 1991. | 1216 Version 18.58 released on February 18, 1991. |
1139 @item | 1217 @item |
1140 Version 18.59 released October 31, 1992. | 1218 Version 18.59 released on October 30 or 31, 1992. |
1141 @end itemize | 1219 @end itemize |
1142 | 1220 |
1143 | 1221 |
1144 @node Epoch, Lucid Emacs, Through Version 18, A History of Emacs | 1222 @node Epoch, Lucid Emacs, Through Version 18, A History of Emacs |
1145 @section Epoch | 1223 @section Epoch |
1252 | 1330 |
1253 @itemize @bullet | 1331 @itemize @bullet |
1254 @item | 1332 @item |
1255 Version 19.7 beta released May 22, 1993. First public beta v19 release. | 1333 Version 19.7 beta released May 22, 1993. First public beta v19 release. |
1256 @item | 1334 @item |
1257 Version 19.8 beta released May 27, 1993. | 1335 Version 19.8 beta released May 25 or 27, 1993. |
1258 @item | 1336 @item |
1259 Version 19.9 beta released May 27, 1993. | 1337 Version 19.9 beta released May 27, 1993. |
1260 @item | 1338 @item |
1261 Version 19.10 beta released May 30, 1993. | 1339 Version 19.10 beta released May 30, 1993. |
1262 @item | 1340 @item |
1263 Version 19.11 beta released June 1, 1993. | 1341 Version 19.11 beta released June 1, 1993. |
1264 @item | 1342 @item |
1265 Version 19.12 beta released June 2, 1993. | 1343 Version 19.12 beta released June 1 or 2, 1993. |
1266 @item | 1344 @item |
1267 Version 19.13 beta released June 8, 1993. | 1345 Version 19.13 beta released June 8, 1993. |
1268 @item | 1346 @item |
1269 Version 19.14 beta released June 17, 1993. | 1347 Version 19.14 beta released June 17, 1993. |
1270 @item | 1348 @item |
1271 Version 19.15 beta released June 19, 1993. | 1349 Version 19.15 beta released June 19, 1993. |
1272 @item | 1350 @item |
1273 Version 19.16 beta released July 6, 1993. | 1351 Version 19.16 beta released July 6, 1993. |
1274 @item | 1352 @item |
1275 Version 19.17 beta released late July, 1993. | 1353 Version 19.17 beta released July 17, 1993. |
1276 @item | 1354 @item |
1277 Version 19.18 beta released August 9, 1993. | 1355 Version 19.18 beta released August 8 or 9, 1993. |
1278 @item | 1356 @item |
1279 Version 19.19 beta released August 15, 1993. | 1357 Version 19.19 beta released August 14 or 15, 1993. |
1280 @item | 1358 @item |
1281 Version 19.20 beta released November 17, 1993. | 1359 Version 19.20 beta released November 11 or 17, 1993. |
1282 @item | 1360 @item |
1283 Version 19.21 beta released November 17, 1993. | 1361 Version 19.21 beta released November 16 or 17, 1993. |
1284 @item | 1362 @item |
1285 Version 19.22 beta released November 28, 1993. | 1363 Version 19.22 beta released November 27 or 28, 1993. |
1286 @item | 1364 @item |
1287 Version 19.23 beta released May 17, 1994. | 1365 Version 19.23 beta released May 17, 1994. |
1288 @item | 1366 @item |
1289 Version 19.24 beta released May 16, 1994. | 1367 Version 19.24 beta released May 23 or 16 (?), 1994. |
1290 @item | 1368 @item |
1291 Version 19.25 beta released June 3, 1994. | 1369 Version 19.25 beta released May 30 or June 3, 1994. |
1292 @item | 1370 @item |
1293 Version 19.26 beta released September 11, 1994. | 1371 Version 19.26 beta released September 7 or 11, 1994. |
1294 @item | 1372 @item |
1295 Version 19.27 beta released September 14, 1994. | 1373 Version 19.27 beta released September 11 or 14, 1994. |
1296 @item | 1374 @item |
1297 Version 19.28 (first ``official'' release) released November 1, 1994. | 1375 Version 19.28 (first ``official'' release) released November 1, 1994. |
1298 @item | 1376 @item |
1299 Version 19.29 released June 21, 1995. | 1377 Version 19.29 released June 19 or 21, 1995. |
1300 @item | 1378 @item |
1301 Version 19.30 released November 24, 1995. | 1379 Version 19.30 released November 24, 1995. |
1302 @item | 1380 @item |
1303 Version 19.31 released May 25, 1996. | 1381 Version 19.31 released May 25, 1996. |
1304 @item | 1382 @item |
1334 | 1412 |
1335 A timeline for GNU Emacs 20 is | 1413 A timeline for GNU Emacs 20 is |
1336 | 1414 |
1337 @itemize @bullet | 1415 @itemize @bullet |
1338 @item | 1416 @item |
1339 Version 20.1 released September 17, 1997. | 1417 Version 20.1 released September 15 or 17, 1997. |
1340 @item | 1418 @item |
1341 Version 20.2 released September 20, 1997. | 1419 Version 20.2 released September 19 or 20, 1997. |
1342 @item | 1420 @item |
1343 Version 20.3 released August 19, 1998. | 1421 Version 20.3 released August 19, 1998. |
1344 @item | 1422 @item |
1345 version 20.4 released July 12, 1999; on comp.emacs, July 27. | 1423 version 20.4 released July 12, 1999; on comp.emacs, July 27. |
1346 @item | 1424 @item |
1347 version 20.5 released ???. | 1425 version 20.5 released December 4, 1999. |
1348 @item | 1426 @item |
1349 version 20.6 released ???. | 1427 version 20.6 released February 26, 2000. |
1350 @item | 1428 @item |
1351 version 20.7 released ???. | 1429 version 20.7 released June 13, 2000. |
1352 @end itemize | 1430 @end itemize |
1353 | 1431 |
1354 A timeline for GNU Emacs 21 is | 1432 A timeline for GNU Emacs 21 is |
1355 | 1433 |
1356 @itemize @bullet | 1434 @itemize @bullet |
12659 | 12737 |
12660 According to Microsoft documentation, only the following functions are | 12738 According to Microsoft documentation, only the following functions are |
12661 provided under Windows 9x to support Unicode (see MSDN page "Windows | 12739 provided under Windows 9x to support Unicode (see MSDN page "Windows |
12662 95/98/Me General Limitations"): | 12740 95/98/Me General Limitations"): |
12663 | 12741 |
12664 EnumResourceLanguages | 12742 EnumResourceLanguagesW |
12665 EnumResourceNames | 12743 EnumResourceNamesW |
12666 EnumResourceTypes | 12744 EnumResourceTypesW |
12667 ExtTextOut | 12745 ExtTextOutW |
12668 FindResource | 12746 FindResourceW |
12669 FindResourceEx | 12747 FindResourceExW |
12670 GetCharWidth | 12748 GetCharWidthW |
12671 GetCommandLine | 12749 GetCommandLineW |
12672 GetTextExtentPoint | 12750 GetTextExtentPointW |
12673 GetTextExtentPoint32 | 12751 GetTextExtentPoint32W |
12674 lstrcat | 12752 lstrcatW |
12675 lstrcpy | 12753 lstrcpyW |
12676 lstrlen | 12754 lstrlenW |
12677 MessageBox | 12755 MessageBoxW |
12678 MessageBoxEx | 12756 MessageBoxExW |
12679 MultiByteToWideChar | 12757 MultiByteToWideChar |
12680 TextOut | 12758 TextOutW |
12681 WideCharToMultiByte | 12759 WideCharToMultiByte |
12682 | 12760 |
12683 also maybe GetTextExtentExPoint? (KB Q125671 "Unicode Functions Supported | 12761 also maybe GetTextExtentExPoint? (KB Q125671 "Unicode Functions Supported |
12684 by Windows 95") | 12762 by Windows 95") |
12763 | |
12764 Q210341 says this in addition: | |
12765 | |
12766 @quotation | |
12767 SUMMARY: | |
12768 | |
12769 Although Windows 95 is an eight-bit ANSI, or for Far East Windows, a | |
12770 Multibyte (MBCS) character set operating system, it implements a few | |
12771 Unicode functions. Windows 98 has added support for a few more | |
12772 functions and there are techniques to implement additional Unicode | |
12773 support. | |
12774 | |
12775 MORE INFORMATION: | |
12776 | |
12777 Windows 95 is natively an eight-bit character code operating | |
12778 system. That is, it fundamentally processes all character strings one | |
12779 byte at a time. Far East versions of Windows 95 are called Multibyte | |
12780 Character Set (MBCS) systems because they use a signal or lead byte | |
12781 combined with a second trailing byte to expand the character code | |
12782 range beyond the 256 limitation of a one-byte representation. | |
12783 | |
12784 The Unicode standard offers application developers an opportunity to | |
12785 work with text without the limitations of character set based | |
12786 systems. For more information on the Unicode standard see the | |
12787 "References" section of this article. Windows NT is a fully Unicode | |
12788 capable operating system so it may be desirable to write software that | |
12789 supports Unicode on Windows 95. | |
12790 | |
12791 Even though Windows 95 and Windows 98 are not Unicode based, they do | |
12792 provide some limited Unicode functionality. Drawing of Unicode text is | |
12793 possible because the TrueType fonts that are used by Windows are | |
12794 encoded using Unicode. Therefore, a small subset of Win32 functions | |
12795 have wide character (Unicode) equivalents that are implemented in | |
12796 Windows 95. To review the list of these functions that was first | |
12797 published for Windows 95 see the white paper listed in the | |
12798 "References" section of this article. | |
12799 | |
12800 The Quick Info information in the Platform SDK describes the following | |
12801 wide character functions as implemented on Windows 95: | |
12802 | |
12803 [same list as above minus GetTextExtentExPoint, and minus lstrcpy/lstrcat] | |
12804 | |
12805 For Windows 98, there have been two more functions implemented: | |
12806 | |
12807 [lstrcpyW/lstrcatW] | |
12808 | |
12809 Also available to applications on Windows 95 and later is the | |
12810 CF_UNICODETEXT clipboard format for exchanging/converting Unicode text | |
12811 across the clipboard. See Nadine Kano's book listed in the | |
12812 "References" section of this article. | |
12813 | |
12814 With this API subset, an application can read, write, display, and | |
12815 convert Unicode data. However, in some cases an application developer | |
12816 working with Unicode may find a need to work directly with the glyphs | |
12817 in the TrueType font file. | |
12818 | |
12819 Such a case arises if a software developer would like to use the | |
12820 services of the GetGlyphOutline() function. Unfortunately, there is no | |
12821 wide character implementation of this function on Windows 95. However, | |
12822 this function does work with TrueType glyph indices so the solution is | |
12823 convert the Unicode character code to a glyph index. | |
12824 | |
12825 A developer might also want to take advantage of the TrueType Open | |
12826 tables of a font to perform ligature or contextual glyph | |
12827 substitution. To do this, the application would need to work with | |
12828 glyph indices. See the "References" section of this article for more | |
12829 information on converting Unicode to glyph indices. | |
12830 | |
12831 REFERENCES: | |
12832 | |
12833 For additional information about Unicode and the GetGlyphOutline | |
12834 function, click the article number below to view the article in the | |
12835 Microsoft Knowledge Base: | |
12836 | |
12837 241358 PRB: The GetGlyphOutlineW Function Fails on Windows 95 and | |
12838 Windows 98 | |
12839 | |
12840 For additional information about converting Unicode character codes, | |
12841 click the article number below to view the article in the Microsoft | |
12842 Knowledge Base: | |
12843 | |
12844 241020 HOWTO: Translate Unicode Character Codes to TrueType Glyph | |
12845 Indices in Windows 95 | |
12846 | |
12847 For information on writing applications for world wide markets, please | |
12848 see the following book: | |
12849 | |
12850 Developing International Software for Windows 95 and Windows NT by | |
12851 Nadine Kano. | |
12852 ISBN 1-55615-840-8 | |
12853 Microsoft Press. | |
12854 Also available on MSDN in the Books section. | |
12855 | |
12856 Background white paper: Differences in Win32 API Implementations Among | |
12857 Windows Operating Systems by Noel Nyman. | |
12858 | |
12859 Available on MSDN in the Windows Platform Guidelines section | |
12860 @end quotation | |
12685 | 12861 |
12686 However, the C runtime library provides some additional support (according | 12862 However, the C runtime library provides some additional support (according |
12687 to the CRT sources, as the docs are not very clear on this): | 12863 to the CRT sources, as the docs are not very clear on this): |
12688 | 12864 |
12689 @itemize @bullet | 12865 @itemize @bullet |