Add pcmpl-unix ssh.
[bpt/emacs.git] / etc / NEWS.unicode
CommitLineData
e5491504
MB
1GNU Emacs NEWS -- history of user-visible changes.
2
c5bb82f6
KH
3Copyright (C) 2007 Free Software Foundation, Inc.
4Copyright (C) 2007
5 National Institute of Advanced Industrial Science and Technology (AIST)
6 Registration Number H14PRO021
e5491504
MB
7See the end of the file for license conditions.
8
9Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
10If possible, use M-x report-emacs-bug.
11
12This file is about changes in the Emacs "unicode" branch.
13
e5491504 14\f
c5bb82f6 15* Changes in Emacs Unicode
e5491504
MB
16
17** The Emacs character set is now a superset of Unicode.
18(It has about four times the code space, which should be plenty).
19
20The internal encoding used for buffers and strings is now
21Unicode-based and called `utf-8-emacs'. utf-8-emacs is backwards
22compatible with the UTF-8 encoding of Unicode. The `emacs-mule'
23coding system can still read and write data in the old internal
24encoding.
25
e5491504
MB
26Since the internal encoding is also used by default for byte-compiled
27files -- i.e. the normal coding system for byte-compiled Lisp files is
28now utf-8-Emacs -- Lisp containing non-ASCII characters which is
29compiled by Emacs 23 can't be read by earlier versions of Emacs. Files
30compiled by Emacs 20, 21, or 22 are loaded correctly as emacs-mule
31(whether or not they contain multibyte characters), which makes loading
32them somewhat slower than Emacs 23-compiled files. Thus it may be worth
33recompiling existing .elc files which don't need to be shared with older
34Emacsen.
35
36** There are assorted new coding systems/aliases -- see
37M-x list-coding-systems.
38
39** New charset implementation with many new charsets.
40See M-x list-character-sets. New charsets can be defined conveniently
41as tables of unicodes.
42
43The dimension of a charset is now 0, 1, 2, or 3, and the size of each
44dimension is no longer limited to 94 or 96.
45
e5491504 46A dynamic charset priority list is used to infer the charset of
c5bb82f6
KH
47characters for display.
48
49** New minor mode Auto Composition Mode composes characters automatically
50when they are displayed. This mode is globally on by default.
51
52** Emacs now supports local fonts (fonts installed in the same machine
53as Emacs is running) by freetype and fontconfig libraries. On X, they
54are drived via Xft library with antialias support. Fontconfig-like
55font names (e.g. monospace-12) are also accepted.
56
57** New language environments Chinese-GBK, Chinese-GB18030, and
58TaiViet.
e5491504
MB
59
60** The following facilities are obsolete:
61
62Minor modes: unify-8859-on-encoding-mode, unify-8859-on-decoding-mode
63
64\f
c5bb82f6
KH
65* Lisp changes in Emacs Unicode
66
67** Character code, representation, and charset changes.
68
69Now character code space is 0x0..0x3FFFFF with no gap. Among them,
70characters of code 0x0..0x10FFFF are Unicode characters of the same
71code points. Characters of code 0x3FFF80..0x3FFFFF are raw 8-bit
72bytes.
73
74Generic characters no longer exist.
75
76In buffer and string, characters are represented by UTF-8 byte
77sequence in a multibyte buffer/string.
78
79The concept of charset is changed. A single character may belong to
80multiple charset (e.g. a-grave (U+00E0) belongs to charsets unicode,
81iso-8859-1, iso-8859-3, and etc).
82
83*** The new function `characterp' returns t if and only if the argument
84is a character.
85
86*** The new function `max-char' returns the maximum character code
87(currently it is #x3FFFFF).
88
89*** The function `encode-char' and `decode-char' now accepts any
90character sets.
91
92*** The function `define-charset' now accepts completely different
93form of argments (old-style arguments still works).
94
95*** The new function `define-charset-alias' defines an alias of a
96charset.
97
98*** The value of the function `char-charset' depends of the current
99priorities of charsets.
100
101*** The new function `charset-priority-list' returns the list of
102charsets ordered by priority.
103
104*** The new function `set-charset-priority' sets pliorities of
105charsets.
106
107*** The new function `unibyte-charset' returns the current unibyte
108charset. The unibyte charset determins how unibyte/multibyte
109conversion is done.
110
111*** The new function `set-unibyte-charset' sets the unibyte charset.
112
113*** The new function `unibyte-string' make a unibyte string from
114bytes.
115
116** Code conversion changes
117
118*** The new function `define-coding-system' should be used to define a
119coding system instead of `make-coding-system' (which is obsolete now).
120
121*** The functions `encode-coding-region' and `decode-coding-region'
122have the optional 4th argument to specify where the result of
123conversion should go.
124
125*** The functions `encode-coding-string' and `decode-coding-string'
126have the optional 4th argument specifying a buffer to store the result
127of conversion.
128
129*** The new fuction `with-coding-priority' executs the body part with
130the specified coding system priority order.
131
132*** The new function `check-coding-systems-region' checks if the text
133in the region is encodable by the specified coding systems.
134
135*** The new function `coding-system-aliases' returns a list of aliases
136of a coding system.
137
138*** The new function `coding-system-charset-list' returns a list of
139charsets supported by a coding system.
140
141*** The new funciton `coding-system-priority-list' returns a list of
142coding systems ordered by their priorities.
143
144*** Thew new function `set-coding-system-priority' sets priorities of
145coding systems.
146
147** Composition changes
148
149*** New functions and variables `auto-composition-mode' and
150`global-auto-composition-mode' toggles the new minor mode Auto
151Composition Mode locally and globally.
152
153*** New variable `auto-composition-function' is a function used in
154Auto Composition Mode to compose characters. The default value is the
155function `auto-compose-chars'.
156
c5bb82f6
KH
157** Font Backend changes.
158
159*** New frame parameter `font-backend' specifies a list of
160font-backends supported by the frame's graphic device. On X, they are
161currently `x' and `xft'.
162
163*** New function `fontp' checks if the argument is a font-spec
164or font-entity.
165
166*** New function `font-spec' creates a new font-spec object.
167
168*** New function `font-get' returns a font property value.
169
170*** New function `font-put' sets a font property value.
171
172*** New function `list-fonts' returns a list of font-entities matching
173with the give specificaiton.
174
175*** New function `list-families' returns a list family names of
176available fonts.
177
178*** New function `font-font' returns a font-entity best matching with
179the given specification.
180
181*** New function `font-xlfd-name' returns an XLFD name of a give font
182(font-spec, font-entity, or font-object).
183
184*** New function `clear-font-cache' clears all font caches.
185
186** The function get-char-code-property now accepts many Unicode base
187character properties. They are `name', `general-category',
188`canonical-combining-class', `bidi-class', `decomposition',
189`decimal-digit-value', `digit-value', `numeric-value', `mirrord',
190`old-name', `iso-10646-comment', `uppercase', `lowercase', and
191`titlecase'.
192
193** Thew new function `define-char-code-property' defines a character
194code property.
195
196** The new function `char-code-property-description' returns the
197description string of a cahracter code property.
198
199*** The new variable `find-word-boundary-function-table' is a
200char-table of functions to search for a word boundary.
201
202*** The new variable `char-script-table' is a char-table of script
203names.
204
205*** The new variable `char-width-table' is a char-table of character
206widths.
207
208*** The new variable `print-charset-text-property' controls how to
209handle `charset' text property on printing a string.
210
211*** Thew new variable `printable-chars' is a char-table defining if a
212character is printable or not.
213
214*** The new function `robin-define-package' defines a Robin package
215which is an input method system different from Quail.
216
217*** The new function `robin-modify-package' modifies an existing Robin
218package.
e5491504 219
c5bb82f6
KH
220*** The new function `robin-use-package' start using a Robin package
221as an input method.
e5491504 222
c5bb82f6
KH
223** The functions `modify-syntax-entry' and `modify-category-entry' now
224accepts a cons of characters as the first argument, and modify all
225entries in that range of characters.
e5491504 226
c5bb82f6
KH
227** The function `set-fontset-font' now accepts a script name as the
228second argument, and has the optional 5th argument to control how to
229set the font.
e5491504 230
c5bb82f6
KH
231** The functions `char-bytes', `chars-in-region', `set-coding-priority',
232, `make-coding-system', and `char-valid-p' are now obsolete.
e5491504
MB
233
234\f
235* Incompatible Lisp changes
236
c5bb82f6
KH
237** The behavior of map-char-table has changed. It may call the
238specified function with a cons (FROM . TO) as a key if characters in
239that range has the same value.
e5491504 240
c5bb82f6 241** The value of the function `charset-id' is now always 0.
e5491504 242
c5bb82f6
KH
243** The functions `register-char-codings' and `coding-system-spec' are
244deleted.
e5491504
MB
245
246\f
247----------------------------------------------------------------------
248This file is part of GNU Emacs.
249
250GNU Emacs is free software; you can redistribute it and/or modify
251it under the terms of the GNU General Public License as published by
252the Free Software Foundation; either version 2, or (at your option)
253any later version.
254
255GNU Emacs is distributed in the hope that it will be useful,
256but WITHOUT ANY WARRANTY; without even the implied warranty of
257MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
258GNU General Public License for more details.
259
260You should have received a copy of the GNU General Public License
261along with GNU Emacs; see the file COPYING. If not, write to the
262Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
263Boston, MA 02110-1301, USA.
264
265\f
266Local variables:
267mode: outline
268paragraph-separate: "[ \f]*$"
269end:
270
271arch-tag: e21801b9-0724-4cda-8c07-7d60bf3db3fd