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