annotate etc/=TO-DO @ 26847:2f17ea330dae

Include composite.h. (DECODE_CHARACTER_ASCII): Don't handle composition here. (DECODE_CHARACTER_DIMENSION1): Likewise. Don't check the validity of multibyte code here. (DECODE_CHARACTER_DIMENSION2): Likewise. (detect_coding_emacs_mule): Change the case label from EMACS_leading_code_composition to 0x80. (detect_coding_iso2022): Handle new composition sequence. (DECODE_ISO_CHARACTER): Likewise. (check_composing_code): Deleted. (coding_allocate_composition_data): New function. (CODING_ADD_COMPOSITION_START) (CODING_ADD_COMPOSITION_END) (CODING_ADD_COMPOSITION_COMPONENT) (DECODE_COMPOSITION_START) (DECODE_COMPOSITION_END) (DECODE_COMPOSITION_RULE): New macros. (decode_coding_iso2022): Handle new composition sequence. (ENCODE_ISO_CHARACTER): Don't check composition here. (ENCODE_COMPOSITION_RULE) (ENCODE_COMPOSITION_START): New macros. (ENCODE_COMPOSITION_NO_RULE_START) (ENCODE_COMPOSITION_WITH_RULE_START): Deleted. (ENCODE_COMPOSITION_END): Handle new composition sequence. (ENCODE_COMPOSITION_FAKE_START): New macro. (encode_coding_iso2022): Handle new composition sequence. (ENCODE_SJIS_BIG5_CHARACTER): Delete superfluous `;' at the tail. (encode_coding_sjis_big5): Ignore composition. (setup_coding_system): Initialize new members of struct coding_system. Enable composition only when the coding system has `composition' property t. (coding_free_composition_data) (coding_adjust_composition_offset) (coding_save_composition) (coding_restore_composition): New functions. (code_convert_region): Call coding_save_composition for encoding and coding_allocate_composition_data for decoding. Don't skip ASCII characters if we handle composition on encoding. Call signal_after_change with Check_BORDER. (code_convert_string): Call coding_save_composition for encoding and coding_allocate_composition_data for decoding. Don't skip ASCII characters if we handle composition on encoding. (code_convert_string1): Set Vlast_coding_system_used after calling code_convert_string. (code_convert_string_norecord): Disable composition. (Fset_terminal_coding_system_internal): Likewise. (Fset_safe_terminal_coding_system_internal): Likewise. (Fset_keyboard_coding_system_internal): Likewise. (init_coding_once): Set emacs_code_class[0x80] to EMACS_invalid_code.
author Kenichi Handa <handa@m17n.org>
date Wed, 15 Dec 1999 00:06:45 +0000
parents 59c8668f70c7
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2251
216f86e5891d Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1 Things useful to do for GNU Emacs:
216f86e5891d Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2
216f86e5891d Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3 * Primitive for random access insertion of part of a file.
216f86e5891d Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
4
216f86e5891d Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
5 * Making I/O streams for files, so that read and prin1 can
216f86e5891d Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
6 be used on files directly. The I/O stream itself would
216f86e5891d Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
7 serve as a function to read or write one character.
216f86e5891d Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
8
216f86e5891d Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
9 * If a file you can't write is in a directory you can write,
216f86e5891d Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
10 make sure it works to modify and save this file.
216f86e5891d Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
11
216f86e5891d Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
12 * Make dired's commands handle correctly the case where
216f86e5891d Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
13 ls has listed several subdirectories' contents.
216f86e5891d Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
14 It needs to be able to tell which directory each file
216f86e5891d Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
15 is really in, by searching backward for the line
216f86e5891d Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
16 which identifies the start of a directory.
216f86e5891d Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
17
216f86e5891d Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
18 * Add more dired commands, such as sorting (use the
216f86e5891d Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
19 sort utility through call-process-region).
216f86e5891d Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
20
216f86e5891d Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
21 * Make display.c record inverse-video-ness on
216f86e5891d Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
22 a character by character basis. Then make non-full-screen-width
216f86e5891d Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
23 mode lines inverse video, and display the marked location in
216f86e5891d Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
24 inverse video.
216f86e5891d Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
25
216f86e5891d Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
26 * VMS code to list a file directory. Make dired work.
2306
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
27
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
28 Long range:
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
29
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
30 Ideas for extending GNU Emacs to deal with arbitrary character sets.
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
31
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
32 I would like GNU Emacs to be extended to handle all the world's alphabets
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
33 and word signs. I don't expect to have time to do such a thing in the next
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
34 few years, so here are my ideas on the best way to do it.
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
35
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
36 * Each graphic is represented by a sequence of ordinary 8-bit characters.
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
37
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
38 * All the characters that make up such a sequence have codes >= 0200.
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
39
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
40 * The first character of such a sequence is between 0200 and 0237.
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
41
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
42 * The remaining characters of such a sequence are all 0240 or higher.
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
43
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
44 * The first character of the sequence determines the number of characters
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
45 in the sequence. Thus, 0200...0207 could start two-character sequences,
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
46 0210...0227 could start three-character sequences, and 0230 could start
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
47 four-character sequences. (Codes 0231...0237 would be reserved.)
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
48
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
49 * Several common alphabets, and some mathematical symbols, would get
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
50 two-character sequences. (Probably Greek, Russian, Hebrew(?), Arabic(?),
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
51 Korean, and Japanese kana). The remaining alphabets, and some versions of
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
52 Chinese, would get three-character sequences. Other sets of Chinese
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
53 characters would get four-character sequences.
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
54
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
55 Each country that uses Chinese characters has its own standard character
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
56 set, and it is not easy to correlate them to avoid overlap. So there may
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
57 need to be several sets of Chinese characters. That is why they need so
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
58 much code space.
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
59
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
60 True support for Hebrew and Arabic requires dealing with the problem of
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
61 writing direction for mixed text; I don't know what to do for that.
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
62
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
63 * The functions that use syntax table would determine the
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
64 syntax of a sequence from its first character.
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
65
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
66 * Functions in indent.c for computing widths and columns would
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
67 determine the width of a sequence from its first character.
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
68 So would display routines.
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
69
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
70 * Only a few other editing routines would need any change. In
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
71 particular, searching and regexp matching might not need any change.
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
72
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
73 * Most of the work required would be in redisplay. The only case that
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
74 needs to be supported is with X windows, since ordinary terminals
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
75 can't display all these characters anyway.
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
76
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
77 * There might need to be code to translate files from this format
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
78 to whatever format is typically stored on disk.
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
79
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
80
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
81 I would be very unhappy with half-measures, such as support for
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
82 Japanese only.
59c8668f70c7 Merged in CHARACTERS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2251
diff changeset
83