annotate etc/=TO-DO @ 33240:aaa42106f0da

(Vcomposition_function_table): New variable. (Qcomposition_function_table): New variable. (run_composition_function): Call Vcompose_chars_after_function with three arguments. (compose_chars_in_text): New function. (syms_of_composite): Modified the doc-string of Vcompose_chars_after_function. Declare composition-function-table as a lisp variable, and initialize it.
author Kenichi Handa <handa@m17n.org>
date Mon, 06 Nov 2000 12:35:27 +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