home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 1 / 1139 < prev    next >
Encoding:
Internet Message Format  |  1990-12-28  |  34.0 KB

  1. From: howard@hasse.ericsson.se (Howard Gayle)
  2. Newsgroups: alt.sources
  3. Subject: GNU Emacs 8-bit mods part 12 of 12
  4. Message-ID: <1990Apr5.134438.9370@ericsson.se>
  5. Date: 5 Apr 90 13:44:38 GMT
  6.  
  7. This is a continuation of part 11.
  8.  
  9. -----cut here-----
  10. ***************
  11. *** 8151,8157 ****
  12.   @cindex indentation
  13.   @findex indent-for-comment
  14.   
  15. !   The comment commands insert, kill and align comments.
  16.   
  17.   @c WideCommands
  18.   @table @kbd
  19. --- 8207,8213 ----
  20.   @cindex indentation
  21.   @findex indent-for-comment
  22.   
  23. !   The comment commands insert, kill, and align comments.
  24.   
  25.   @c WideCommands
  26.   @table @kbd
  27. ***************
  28. *** 8480,8486 ****
  29.   @cindex etags program
  30.   
  31.     The @code{etags} program is used to create a tag table file.  It knows
  32. ! the syntax of C, Fortran, La@TeX{}, Scheme and Emacs Lisp/Common Lisp.  To
  33.   use @code{etags}, type
  34.   
  35.   @example
  36. --- 8536,8542 ----
  37.   @cindex etags program
  38.   
  39.     The @code{etags} program is used to create a tag table file.  It knows
  40. ! the syntax of C, Fortran, La@TeX{}, Scheme, and Emacs Lisp/Common Lisp.  To
  41.   use @code{etags}, type
  42.   
  43.   @example
  44. ***************
  45. *** 10324,10329 ****
  46. --- 10380,10386 ----
  47.   @kindex C-c C-c (Mail mode)
  48.   @findex mail-send
  49.   @findex mail-send-and-exit
  50. + @vindex mail-send-hook
  51.     There are two ways to send the message.  @kbd{C-c C-s} (@code{mail-send})
  52.   sends the message and marks the @samp{*mail*} buffer unmodified, but leaves
  53.   that buffer selected so that you can modify the message (perhaps with new
  54. ***************
  55. *** 10331,10337 ****
  56.   sends and then deletes the window (if there is another window) or switches
  57.   to another buffer.  It puts the @samp{*mail*} buffer at the lowest priority
  58.   for automatic reselection, since you are finished with using it.  This is
  59. ! the usual way to send the message.
  60.   
  61.   @kindex C-c C-f C-t (Mail mode)
  62.   @findex mail-to
  63. --- 10388,10396 ----
  64.   sends and then deletes the window (if there is another window) or switches
  65.   to another buffer.  It puts the @samp{*mail*} buffer at the lowest priority
  66.   for automatic reselection, since you are finished with using it.  This is
  67. ! the usual way to send the message.  If the variable
  68. ! @code{mail-send-hook} is bound and non-@code{nil}, then its value
  69. ! is called as a function just before the mail is sent.@refill
  70.   
  71.   @kindex C-c C-f C-t (Mail mode)
  72.   @findex mail-to
  73. ***************
  74. *** 10465,10471 ****
  75.   @kindex DEL (Rmail)
  76.     Since the most common thing to do while reading a message is to scroll
  77.   through it by screenfuls, Rmail makes @key{SPC} and @key{DEL} synonyms of
  78. ! @kbd{C-v} (@code{scroll-up}) and @kbd{M-v} (@code{scroll-down})
  79.   
  80.   @kindex . (Rmail)
  81.   @findex rmail-beginning-of-message
  82. --- 10524,10530 ----
  83.   @kindex DEL (Rmail)
  84.     Since the most common thing to do while reading a message is to scroll
  85.   through it by screenfuls, Rmail makes @key{SPC} and @key{DEL} synonyms of
  86. ! @kbd{C-v} (@code{scroll-up}) and @kbd{M-v} (@code{scroll-down}).
  87.   
  88.   @kindex . (Rmail)
  89.   @findex rmail-beginning-of-message
  90. ***************
  91. *** 10536,10541 ****
  92. --- 10595,10605 ----
  93.     In Rmail, you can specify a numeric argument by typing the digits.
  94.   It is not necessary to type @kbd{C-u} first.
  95.   
  96. + @vindex rmail-show-message-hook
  97. +   If the variable @code{rmail-show-message-hook} is bound and
  98. + non-@code{nil}, then its value is called as a function just
  99. + before each message is displayed.@refill
  100.   @kindex M-s (Rmail)
  101.   @findex rmail-search
  102.     The @kbd{M-s} (@code{rmail-search}) command is Rmail's version of search.  The
  103. ***************
  104. *** 10675,10680 ****
  105. --- 10739,10749 ----
  106.   a crash at the wrong time, this file will continue to exist and will be
  107.   used as an inbox the next time you get new mail.
  108.   
  109. + @vindex rmail-get-new-mail-hook
  110. +   If the variable @code{rmail-get-new-mail-hook} is bound and
  111. + non-@code{nil}, then its value is called as a function just
  112. + after new mail is appended to the Rmail file.@refill
  113.   @node Rmail Files, Rmail Output, Rmail Inbox, Rmail
  114.   @section Multiple Mail Files
  115.   
  116. ***************
  117. *** 11329,11337 ****
  118.   identify a @dfn{sort key} for each record, and then reorder the records
  119.   into the order determined by the sort keys.  The records are ordered so
  120.   that their keys are in alphabetical order, or, for numeric sorting, in
  121. ! numeric order.  In alphabetic sorting, all upper case letters `A' through
  122.   `Z' come before lower case `a', in accord with the ASCII character
  123. ! sequence.
  124.   
  125.     The various sort commands differ in how they divide the text into sort
  126.   records and in which part of each record is used as the sort key.  Most of
  127. --- 11398,11410 ----
  128.   identify a @dfn{sort key} for each record, and then reorder the records
  129.   into the order determined by the sort keys.  The records are ordered so
  130.   that their keys are in alphabetical order, or, for numeric sorting, in
  131. ! numeric order.  In alphabetic sorting, if the value of the
  132. ! variable @code{case-fold-search} is @code{nil}, then all upper
  133. ! case letters `A' through
  134.   `Z' come before lower case `a', in accord with the ASCII character
  135. ! sequence.  Otherwise, upper and lower case letters sort
  136. ! together.  The sorting order of characters can be customized.
  137. ! @xref{Sort Tables}.@refill
  138.   
  139.     The various sort commands differ in how they divide the text into sort
  140.   records and in which part of each record is used as the sort key.  Most of
  141. ***************
  142. *** 11395,11401 ****
  143.   @end smallexample
  144.   
  145.   @noindent
  146. ! then if you apply @kbd{M-x sort-lines} to the entire buffer you get
  147.   
  148.   @smallexample
  149.   On systems where clash detection (locking of files being edited) is
  150. --- 11468,11475 ----
  151.   @end smallexample
  152.   
  153.   @noindent
  154. ! then if you apply @kbd{M-x sort-lines} to the entire buffer and
  155. ! if the value of @code{case-fold-search} is @code{nil}, you get@refill
  156.   
  157.   @smallexample
  158.   On systems where clash detection (locking of files being edited) is
  159. ***************
  160. *** 11824,11829 ****
  161. --- 11898,11904 ----
  162.                        By changing them, you can "redefine keys".
  163.   * Syntax::          The syntax table controls how words and expressions
  164.                        are parsed.
  165. + * Customizing Character Sets:: How to edit other character sets than ASCII.
  166.   * Init File::       How to write common customizations in the @file{.emacs} file.
  167.   @end menu
  168.   
  169. ***************
  170. *** 12057,12064 ****
  171.   @dfn{per-buffer} variables.
  172.   
  173.     Some important variables have been marked per-buffer already.  These include
  174. ! @code{abbrev-mode}, @code{auto-fill-hook}, @code{case-fold-search},
  175. ! @code{comment-column}, @code{ctl-arrow}, @code{fill-column},
  176.   @code{fill-prefix}, @code{indent-tabs-mode}, @code{left-margin},
  177.   @code{mode-line-format}, @code{overwrite-mode},@*
  178.   @code{selective-display-ellipses}, @code{selective-display},
  179. --- 12132,12140 ----
  180.   @dfn{per-buffer} variables.
  181.   
  182.     Some important variables have been marked per-buffer already.  These include
  183. ! @code{abbrev-mode}, @code{auto-fill-hook}, @code{buffer-char-table},
  184. ! @code{case-fold-search},
  185. ! @code{comment-column}, @code{fill-column},
  186.   @code{fill-prefix}, @code{indent-tabs-mode}, @code{left-margin},
  187.   @code{mode-line-format}, @code{overwrite-mode},@*
  188.   @code{selective-display-ellipses}, @code{selective-display},
  189. ***************
  190. *** 12347,12353 ****
  191.   
  192.   @menu
  193.   * Keymaps::    Definition of the keymap data structure.
  194. !                Names of Emacs's standard keymaps.
  195.   * Rebinding::  How to redefine one key's meaning conveniently.
  196.   * Disabling::  Disabling a command means confirmation is required
  197.                   before it can be executed.  This is done to protect
  198. --- 12423,12429 ----
  199.   
  200.   @menu
  201.   * Keymaps::    Definition of the keymap data structure.
  202. !                 Names of Emacs's standard keymaps.
  203.   * Rebinding::  How to redefine one key's meaning conveniently.
  204.   * Disabling::  Disabling a command means confirmation is required
  205.                   before it can be executed.  This is done to protect
  206. ***************
  207. *** 12474,12480 ****
  208.   @subsection Changing Key Bindings Interactively
  209.   @cindex key rebinding, this session
  210.   @cindex rebinding keys, this session
  211. - @cindex rebinding keys, this session
  212.   
  213.     The way to redefine an Emacs key is to change its entry in a keymap.
  214.   You can change the global keymap, in which case the change is effective in
  215. --- 12550,12555 ----
  216. ***************
  217. *** 12575,12581 ****
  218.   Disabling a command has no effect on calling it as a function from Lisp
  219.   programs.
  220.   
  221. ! @node Syntax, Init File, Key Bindings, Customization
  222.   @section The Syntax Table
  223.   @cindex syntax table
  224.   
  225. --- 12650,12656 ----
  226.   Disabling a command has no effect on calling it as a function from Lisp
  227.   programs.
  228.   
  229. ! @node Syntax, Customizing Character Sets, Key Bindings, Customization
  230.   @section The Syntax Table
  231.   @cindex syntax table
  232.   
  233. ***************
  234. *** 12687,12693 ****
  235.   for comments have other variables that tell them where to find comments.
  236.   And the list and sexp commands notice comments only if
  237.   @code{parse-sexp-ignore-comments} is non-@code{nil}.  This variable is set
  238. ! to @code{nil} in modes where comment-terminator sequences are liable to
  239.   appear where there is no comment; for example, in Lisp mode where the
  240.   comment terminator is a newline but not every newline ends a comment.
  241.   
  242. --- 12762,12768 ----
  243.   for comments have other variables that tell them where to find comments.
  244.   And the list and sexp commands notice comments only if
  245.   @code{parse-sexp-ignore-comments} is non-@code{nil}.  This variable is set
  246. ! to @code{nil} in modes where comment-terminator sequences are likely to
  247.   appear where there is no comment; for example, in Lisp mode where the
  248.   comment terminator is a newline but not every newline ends a comment.
  249.   
  250. ***************
  251. *** 12743,12748 ****
  252. --- 12818,13250 ----
  253.   @code{modify-syntax-entry} to set up that character's current syntax, and
  254.   some English to explain that string if necessary.
  255.   
  256. + @node Customizing Character Sets, Init File, Syntax, Customization
  257. + @section Customizing Character Sets
  258. +   By default, Emacs uses an eight-bit version of the ASCII
  259. + character set, but it can display and edit any eight-bit
  260. + character set provided that:@refill
  261. + @enumerate
  262. + @item
  263. + the space character has octal value 40,
  264. + @item
  265. + the horizontal tab character has octal value 11, and
  266. + @item
  267. + the newline character has octal value 12.
  268. + @end enumerate
  269. + @noindent
  270. + In particular, Emacs can edit all @w{ISO 8859} character sets.
  271. + This capability was contributed by Howard Lee Gayle.@refill
  272. + @iftex
  273. +   This section describes the Lisp objects that hold information
  274. + about character sets, and how to manipulate them.
  275. + @end iftex
  276. + @menu
  277. + * Case Tables::      What is the case of each character?
  278. + * Char Tables::      How to customize the display of characters.
  279. + * Sort Tables::      How to customize searching and sorting.
  280. + * Trans Tables::  How to customize case mapping and character translations.
  281. + @end menu
  282. + @node Case Tables, Char Tables,, Customizing Character Sets
  283. + @subsection Case Tables
  284. + @cindex case table
  285. +   A @dfn{case table} is a Lisp object that contains information
  286. + about the case of every character in a character set.
  287. + Each character has exactly one case:@refill
  288. + @enumerate
  289. + @item
  290. + caseless,
  291. + @item
  292. + lower case, or
  293. + @item
  294. + upper case.
  295. + @end enumerate
  296. + @cindex standard case table
  297. + @findex case-table
  298. + @findex describe-buffer-case-table
  299. + @findex set-case-table
  300. + @findex set-standard-case-table
  301. + @findex standard-case-table
  302. + @noindent
  303. + A lower case character must have exactly one corresponding
  304. + upper case character, and vice versa.
  305. + A case table is associated with each buffer.
  306. + The function @code{case-table} returns the case table
  307. + associated with the current buffer.
  308. + The function @code{set-case-table} sets the case table of the
  309. + current buffer.
  310. + The command @code{describe-buffer-case-table} prints a readable
  311. + description of the current buffer's case table.
  312. + The description is printed in another buffer.
  313. + When a buffer is created, its case table is initialized to the
  314. + @dfn{standard case table}.
  315. + The function @code{standard-case-table} returns this.
  316. + The function @code{set-standard-case-table} sets the standard
  317. + case table; this does not change the case tables of any
  318. + existing buffers.@refill
  319. + @findex case-table-p
  320. + @findex lower-p
  321. + @findex nocase-p
  322. + @findex upper-p
  323. + @findex make-case-table
  324. + @findex set-case-table-nocase
  325. + @findex set-case-table-pair
  326. +   The function @code{make-case-table} creates a new case table.
  327. + Initially, all characters in it are caseless.
  328. + The function @code{set-case-table-pair} marks a pair of
  329. + characters as upper and lower case.
  330. + The function @code{set-case-table-nocase} marks a character as caseless.
  331. + The predicate functions @code{nocase-p}, @code{lower-p}, and
  332. + @code{upper-p} return @code{t} if and only if a character has
  333. + the corresponding case, otherwise @code{nil}.
  334. + The predicate @code{case-table-p}
  335. + returns @code{t} if and only if its argument is a case table,
  336. + otherwise @code{nil}.@refill
  337. + @node Char Tables, Sort Tables, Case Tables, Customizing Character Sets
  338. + @subsection Char Tables
  339. + @cindex char table
  340. +   A @dfn{char table} is a Lisp object that contains information
  341. + about how to display the characters in a character set.
  342. + Before discussing char tables, some definitions are required.@refill
  343. + @cindex glyf
  344. + @cindex rope
  345. +   A @dfn{glyf} is something that takes up exactly one position
  346. + on the display of a terminal, terminal emulator, or window system.
  347. + For example, @samp{a} is a glyf, as is a yellow, blinking,
  348. + underlined @samp{7} on a red background.
  349. + Note that it may be necessary to transmit many bytes to a
  350. + terminal to display one glyf.
  351. + A @dfn{rope} is a sequence of glyfs.
  352. + (The name is an analogy to @dfn{string}, which is a sequence of characters.)
  353. + For example, the glyf @samp{^} followed by the glyf @samp{C}
  354. + forms a rope of length 2.
  355. + Glyfs are represented as unsigned 16-bit integers.
  356. + Ropes are represented as vectors of glyfs.
  357. + Some customization details depend on whether Emacs is run on a
  358. + terminal (emulator) or on the X window system.
  359. + These details are discussed before proceeding with an
  360. + explanation of char tables.@refill
  361. + @menu
  362. + * Terminal Glyfs::  Glyfs on ordinary terminals.
  363. + * X Glyfs::            Glyfs on the X window system.
  364. + * More Char::          More about char tables.
  365. + @end menu
  366. + @node Terminal Glyfs, X Glyfs,, Char Tables
  367. + @subsubsection Terminal Glyfs
  368. + @findex find-glyf
  369. + @findex get-glyf
  370. + @findex glyf-to-string
  371. + @findex new-glyf
  372. +   The function @code{new-glyf} takes as argument a string of
  373. + bytes and returns a glyf.
  374. + The bytes are sent to the terminal when the glyf is displayed.
  375. + The function @code{find-glyf} returns an existing glyf that
  376. + corresponds to the given string of bytes, or @code{nil} if
  377. + there is none.
  378. + The function @code{get-glyf} is like @code{find-glyf}, but
  379. + creates a new glyf if one does not already exist.
  380. + The function @code{glyf-to-string} returns the string of bytes
  381. + associated with a glyf.@refill
  382. +   It is the customizer's responsibility to see to it that the
  383. + string of bytes corresponding to each glyf takes up exactly one
  384. + display position on the terminal.
  385. + Since the bytes are terminal-dependent, Emacs can not check this.
  386. + If this does not hold, Emacs's internal information about the
  387. + state of the display will not correspond to the actual state of
  388. + the display.
  389. + For example, the position of the cursor may not correspond to point.
  390. + Furthermore, the customizer must see to it that the string of
  391. + bytes associated with each glyf leaves the terminal in a
  392. + ``normal'' state.
  393. + For example, a glyf corresponding to a blinking @samp{3} might
  394. + consist of the escape sequence to turn on blinking, @samp{3},
  395. + and finally the escape sequence to turn off blinking.@refill
  396. + @node X Glyfs, More Char, Terminal Glyfs, Char Tables
  397. + @subsubsection X Glyfs
  398. + @cindex X window
  399. + @cindex graphic context
  400. + @cindex GC
  401. + @cindex face code
  402. + @cindex font
  403. +   When Emacs is used with the X window system, glyfs have a
  404. + slightly different meaning.
  405. + Recall that a glyf is represented as an unsigned 16-bit integer.
  406. + The low order byte selects one @dfn{face code} in a @dfn{font},
  407. + for example @samp{g} in the font named @file{7x14}.
  408. + The high order byte of a glyf is associated with an
  409. + X @dfn{graphic context}, abbreviated @dfn{GC}.
  410. + There are 255 different GC numbers, since 0 is not used.
  411. + For each GC number, there are actually two GCs, one for normal text and
  412. + one for highlighted text such as window mode lines.  Each GC can specify
  413. + a font, a foreground color, and a background color.  All fonts must be
  414. + fixed-width and must have the same size characters.  At present,
  415. + multiple GCs are not implemented; GC number 2 should be used for all
  416. + glyfs.@refill
  417. + @node More Char,, X Glyfs, Char Tables
  418. + @subsubsection More About Char Tables
  419. +   A char table contains the following:
  420. + @cindex frame glyf
  421. + @cindex truncation glyf
  422. + @cindex wrap glyf
  423. + @enumerate
  424. + @item
  425. + The @dfn{frame glyf}: the glyf that separates two side-by-side
  426. + windows (default @samp{|}).
  427. + @xref{Split Window,, Splitting Windows}.@refill
  428. + @item
  429. + The @dfn{truncation glyf}: the glyf that shows that a line
  430. + extends beyond the edge of a window (default @samp{$}).
  431. + @xref{Continuation Lines}.@refill
  432. + @item
  433. + The @dfn{wrap glyf}: the glyf that shows that a line continues
  434. + on the next line in a window (default @samp{\}).
  435. + @xref{Continuation Lines}.@refill
  436. + @item
  437. + The @dfn{selective display character}: the character that marks
  438. + invisible lines (default @samp{C-m}).
  439. + @xref{Selective Display}.@refill
  440. + @item
  441. + The @dfn{selective display rope}: the rope that shows that a
  442. + line is followed by one or more invisible lines (default
  443. + @samp{... }).
  444. + @xref{Selective Display}.@refill
  445. + @item
  446. + For each character (except space, tab, and newline), the rope
  447. + to be used to display that character.@refill
  448. + @end enumerate
  449. + @findex describe-window-char-table
  450. + @findex set-window-char-table
  451. + @findex window-char-table
  452. +   A char table is associated with each window.
  453. + The function @code{window-char-table} returns the char table of
  454. + a window.
  455. + The function @code{set-window-char-table} sets the char table
  456. + of a window.
  457. + Note that it is possible to display the same buffer in several
  458. + different windows, using different char tables for each window.
  459. + The command @code{describe-window-char-table} displays a
  460. + readable description of the char table of the selected window
  461. + in another buffer.@refill
  462. + @vindex buffer-char-table
  463. +   A char table can be associated with each buffer, by
  464. + means of the variable @code{buffer-char-table}.
  465. + This variable becomes local to the buffer when set.
  466. + Its value is the char table to use when displaying the buffer
  467. + in a window.
  468. + Changing its value has no effect on existing windows.@refill
  469. + @findex char-table-p
  470. + @findex copy-char-table
  471. +   The function @code{copy-char-table} creates a new char table
  472. + that is a copy of its argument.
  473. + The predicate @code{char-table-p} returns @code{t} if and only
  474. + if its argument is a char table, otherwise @code{nil}.@refill
  475. + @findex backslash-char-table
  476. + @findex ctl-arrow-char-table
  477. +   There are two ``standard'' char tables.
  478. + They differ only in the way control characters are displayed.
  479. + One displays them with ropes consisting of a @samp{^} glyf
  480. + followed by a single glyf; the other by a @samp{\} glyf
  481. + followed by three glyfs representing an octal number.
  482. + The @samp{^} char table is returned by the function
  483. + @code{ctl-arrow-char-table}; the @samp{\} char table by the
  484. + function @code{backslash-char-table}.
  485. + @xref{Unprintables} for information on how to select between
  486. + these char tables.@refill
  487. + @findex get-char-table-dispr
  488. + @findex get-char-table-frameg
  489. + @findex get-char-table-invisc
  490. + @findex get-char-table-invisr
  491. + @findex get-char-table-truncg
  492. + @findex get-char-table-wrapg
  493. + @findex put-char-table-dispr
  494. + @findex put-char-table-frameg
  495. + @findex put-char-table-invisc
  496. + @findex put-char-table-invisr
  497. + @findex put-char-table-truncg
  498. + @findex put-char-table-wrapg
  499. +   There is a set of functions for accessing and changing the information
  500. + stored in a char table.
  501. + The function @code{get-char-table-frameg} returns the frame glyf.
  502. + The function @code{get-char-table-truncg} returns the truncation glyf.
  503. + The function @code{get-char-table-wrapg} returns the wrap glyf.
  504. + The function @code{get-char-table-invisc} returns the selective
  505. + display character.
  506. + The function @code{get-char-table-invisr} returns the selective
  507. + display rope.
  508. + The function @code{get-char-table-dispr} returns the display
  509. + rope for a given character.
  510. + Each of these @code{get-} functions has a corresponding
  511. + @code{put-} function that changes the value.@refill
  512. + @node Sort Tables, Trans Tables, Char Tables, Customizing Character Sets
  513. + @subsection Sort Tables
  514. + @cindex equivalence class
  515. + @cindex sort table
  516. +   A @dfn{sort table} is a Lisp object that holds information
  517. + for searching and sorting.
  518. + Each character set is partitioned into @dfn{equivalence classes},
  519. + that is, each character in the character set is assigned to
  520. + exactly one subset, known as the character's equivalence class.
  521. + All of the characters in an equivalence class are equal for the
  522. + purposes of searching and sorting.
  523. + For example, when the variable @code{case-fold-search} is
  524. + non-@code{nil}, the characters @samp{q} and @samp{Q} (and no
  525. + others) form an equivalence class.
  526. + Each equivalence class has a number.
  527. + When comparing two characters @var{x} and @var{y}, @var{x} is
  528. + considered to be
  529. + greater than @var{y} if and only if the equivalence class
  530. + number of @var{x} is greater than the equivalence class number
  531. + of @var{y}.@refill
  532. + @findex new-sort-table
  533. +   The function @code{new-sort-table} creates and returns a new
  534. + sort table.
  535. + Its argument is a list of the equivalence classes, in increasing order.
  536. + There are three ways to denote an equivalence class:@refill
  537. + @enumerate
  538. + @item
  539. + A single character denotes the equivalence class that contains
  540. + just that character and no others.@refill
  541. + @item
  542. + A cons cell whose car @var{x} and cdr @var{y} are both characters indicates
  543. + that each character in the range from @var{x} up to and
  544. + including @var{y} goes into its own equivalence class, alone.@refill
  545. + @item
  546. + A list of characters denotes a single equivalence class
  547. + containing exactly those characters.@refill
  548. + @end enumerate
  549. + @cindex case distinct sort table
  550. + @cindex case fold sort table
  551. + @findex case-distinct-table
  552. + @findex case-fold-table
  553. + @findex describe-case-distinct-table
  554. + @findex describe-case-fold-table
  555. + @findex set-case-distinct-table
  556. + @findex set-case-fold-table
  557. +   Each buffer has two sort tables associated with it:
  558. + a @dfn{case distinct} sort table and a @dfn{case fold} sort table.
  559. + If the value of the variable @code{case-fold-search} is
  560. + @code{nil}, then the case distinct sort table is used,
  561. + otherwise the case fold sort table is used.
  562. + The function @code{case-distinct-table} returns the case
  563. + distinct sort table of the current buffer;
  564. + @code{case-fold-table} returns the case fold sort table.
  565. + The functions @code{set-case-distinct-table} and
  566. + @code{set-case-fold-table} set them.
  567. + The case distinct, but not the case fold, sort table may be @code{nil}.
  568. + In this case, each character is distinct, and is sorted by its
  569. + code in the character set.
  570. + The commands @code{describe-case-distinct-table} and
  571. + @code{describe-case-fold-table} print descriptions of the
  572. + current buffer's respective sort tables in another buffer.@refill
  573. + @findex set-standard-case-distinct-table
  574. + @findex set-standard-case-fold-table
  575. + @findex standard-case-distinct-table
  576. + @findex standard-case-fold-table
  577. +   When a buffer is created, its sort tables are set to two
  578. + standard sort tables.
  579. + The functions @code{standard-case-distinct-table} and
  580. + @code{standard-case-fold-table} return them.
  581. + The functions @code{set-standard-case-distinct-table} and
  582. + @code{set-standard-case-fold-table} set them.@refill
  583. + @findex sort-table-p
  584. + @findex string-less*
  585. +   The predicate @code{string-less*} compares two strings
  586. + according to a sort table.
  587. + The predicate @code{sort-table-p} tests if its argument is a
  588. + sort table.@refill
  589. + @node Trans Tables,, Sort Tables, Customizing Character Sets
  590. + @subsection Trans Tables
  591. + @cindex identity trans table
  592. + @cindex trans table
  593. + @findex make-trans-table
  594. + @findex set-trans-table-to
  595. + @findex trans-table-p
  596. +   A trans[lation] table is a Lisp object that maps each
  597. + character in a character set to some other, possibly identical,
  598. + character.
  599. + The function @code{make-trans-table} creates a new copy of the
  600. + @dfn{identity trans table}.
  601. + This is a trans table that maps each character to itself.
  602. + The function @code{set-trans-table-to} can then be used to
  603. + change the mapping of a character in a trans table.
  604. + The predicate @code{trans-table-p} tests if its argument is a
  605. + trans table.@refill
  606. + @findex describe-downcase-table
  607. + @findex describe-upcase-table
  608. + @findex downcase-table
  609. + @findex upcase-table
  610. + @findex set-downcase-table
  611. + @findex set-upcase-table
  612. +   Associated with each buffer are two trans tables for case conversion.
  613. + The function @code{downcase-table} returns a trans table that
  614. + maps upper case characters to lower case, and other characters
  615. + to themselves.
  616. + The function @code{upcase-table} returns a trans table for
  617. + mapping to upper case.
  618. + The functions @code{set-downcase-table} and
  619. + @code{set-upcase-table} set them.
  620. + The commands @code{describe-downcase-table} and
  621. + @code{describe-upcase-table} print representations of the
  622. + respective trans tables in another buffer.@refill
  623. + @findex set-standard-downcase-table
  624. + @findex set-standard-upcase-table
  625. + @findex standard-downcase-table
  626. + @findex standard-upcase-table
  627. +   When a buffer is created, its trans tables are set to two
  628. + standard trans tables.
  629. + The functions @code{standard-downcase-table} and
  630. + @code{standard-upcase-table} return them.
  631. + The functions @code{set-standard-downcase-table} and
  632. + @code{set-standard-upcase-table} set them.@refill
  633. + @findex translate-region
  634. +   The function @code{translate-region} applies a trans table to
  635. + a region in the current buffer.@refill
  636.   @node Init File,, Syntax, Customization
  637.   @section The Init File, .emacs
  638.   @cindex init file
  639. ***************
  640. *** 13486,13491 ****
  641. --- 13988,14007 ----
  642.   (@pxref{Command Switches}).  Switches eliminated include
  643.   @samp{-insert} and @samp{-i}, and the alternate names @samp{-funcall},
  644.   @samp{-load}, @samp{-user} and @samp{-no-init-file}.@refill
  645. + @item
  646. + Customization of character sets has been eliminated.
  647. + @xref{Customizing Character Sets}.@refill
  648. + @item
  649. + The commands that control the display of control characters
  650. + have been eliminated (@pxref{Unprintables}).
  651. + Instead, 
  652. + if the variable @code{ctl-arrow} is @code{nil}, control characters in the
  653. + buffer are displayed with octal escape sequences, all except newline and
  654. + tab.  Altering the value of @code{ctl-arrow} makes it local to the current
  655. + buffer; until that time, the default value is in effect.  The default is
  656. + initially @code{t}.@refill
  657.   @end itemize
  658.   
  659.   @unnumberedsec Changes in Major Modes
  660. ***************
  661. *** 13625,13631 ****
  662.   
  663.   Several built-in variables now are always local to all buffers.
  664.   
  665. ! These variables are @code{tab-width}, @code{ctl-arrow},
  666.   @code{truncate-lines}, @code{fill-column}, @code{left-margin},
  667.   @code{mode-line-format}, @code{abbrev-mode}, @code{overwrite-mode},
  668.   @code{case-fold-search}, @code{auto-fill-hook},
  669. --- 14141,14147 ----
  670.   
  671.   Several built-in variables now are always local to all buffers.
  672.   
  673. ! These variables are @code{tab-width},
  674.   @code{truncate-lines}, @code{fill-column}, @code{left-margin},
  675.   @code{mode-line-format}, @code{abbrev-mode}, @code{overwrite-mode},
  676.   @code{case-fold-search}, @code{auto-fill-hook},
  677. ***************
  678. *** 13667,13673 ****
  679.   GNU, which stands for Gnu's Not Unix, is the name for the complete
  680.   Unix-compatible software system which I am writing so that I can give it
  681.   away free to everyone who can use it.  Several other volunteers are helping
  682. ! me.  Contributions of time, money, programs and equipment are greatly
  683.   needed.
  684.   
  685.   So far we have an Emacs text editor with Lisp for writing editor commands,
  686. --- 14183,14189 ----
  687.   GNU, which stands for Gnu's Not Unix, is the name for the complete
  688.   Unix-compatible software system which I am writing so that I can give it
  689.   away free to everyone who can use it.  Several other volunteers are helping
  690. ! me.  Contributions of time, money, programs, and equipment are greatly
  691.   needed.
  692.   
  693.   So far we have an Emacs text editor with Lisp for writing editor commands,
  694. ***************
  695. *** 13850,13856 ****
  696.   With Unix, the price of sources puts this out of consideration for most
  697.   businesses.  With GNU this will be easy.  It is still possible for there to
  698.   be no available competent person, but this problem cannot be blamed on
  699. ! distibution arrangements.  GNU does not eliminate all the world's problems,
  700.   only some of them.
  701.   
  702.   Meanwhile, the users who know nothing about computers need handholding:
  703. --- 14366,14372 ----
  704.   With Unix, the price of sources puts this out of consideration for most
  705.   businesses.  With GNU this will be easy.  It is still possible for there to
  706.   be no available competent person, but this problem cannot be blamed on
  707. ! distribution arrangements.  GNU does not eliminate all the world's problems,
  708.   only some of them.
  709.   
  710.   Meanwhile, the users who know nothing about computers need handholding:
  711. ***************
  712. *** 14121,14127 ****
  713.   world, where nobody will have to work very hard just to make a living.
  714.   People will be free to devote themselves to activities that are fun, such
  715.   as programming, after spending the necessary ten hours a week on required
  716. ! tasks such as legislation, family counseling, robot repair and asteroid
  717.   prospecting.  There will be no need to be able to make a living from
  718.   programming.
  719.   
  720. --- 14637,14643 ----
  721.   world, where nobody will have to work very hard just to make a living.
  722.   People will be free to devote themselves to activities that are fun, such
  723.   as programming, after spending the necessary ten hours a week on required
  724. ! tasks such as legislation, family counseling, robot repair, and asteroid
  725.   prospecting.  There will be no need to be able to make a living from
  726.   programming.
  727.   
  728. ***************
  729. *** 14208,14213 ****
  730. --- 14724,14739 ----
  731.   Case conversion means changing text from upper case to lower case or
  732.   vice versa.  @xref{Case}, for the commands for case conversion.
  733.   
  734. + @item Case Table
  735. + A case table tells Emacs the case of each character in a
  736. + character set.
  737. + @xref{Case Tables}.@refill
  738. + @item Char Table
  739. + A char[acter] table tells Emacs how to display each character
  740. + in a character set.
  741. + @xref{Char Tables}.@refill
  742.   @item Characters
  743.   Characters form the contents of an Emacs buffer; also, Emacs commands
  744.   are invoked by keys (q.v.@:), which are sequences of one or more
  745. ***************
  746. *** 14266,14272 ****
  747.   do not have graphic images assigned to them.  These are the control
  748.   characters.  Any control character can be typed by holding down the
  749.   @key{CTRL} key and typing some other character; some have special keys
  750. ! on the keyboard.  @key{RET}, @key{TAB}, @key{ESC}, @key{LFD} and
  751.   @key{DEL} are all control characters.  @xref{Characters}.@refill
  752.   
  753.   @item Copyleft
  754. --- 14792,14798 ----
  755.   do not have graphic images assigned to them.  These are the control
  756.   characters.  Any control character can be typed by holding down the
  757.   @key{CTRL} key and typing some other character; some have special keys
  758. ! on the keyboard.  @key{RET}, @key{TAB}, @key{ESC}, @key{LFD}, and
  759.   @key{DEL} are all control characters.  @xref{Characters}.@refill
  760.   
  761.   @item Copyleft
  762. ***************
  763. *** 14426,14431 ****
  764. --- 14952,14963 ----
  765.   that do not have their own local (q.v.@:) values for the variable.
  766.   @xref{Variables}.
  767.   
  768. + @item Glyf
  769. + A glyf is something that a terminal, terminal emulator, or
  770. + window system can display.
  771. + A glyf takes up exactly one display position.
  772. + @xref{Char Tables}.@refill
  773.   @item Graphic Character
  774.   Graphic characters are those assigned pictorial images rather than
  775.   just names.  All the non-Meta (q.v.@:) characters except for the
  776. ***************
  777. *** 14513,14520 ****
  778.   @item Local
  779.   Local means `in effect only in a particular context'; the relevant
  780.   kind of context is a particular function execution, a particular
  781. ! buffer, or a particular major mode.  It is the opposite of `global'
  782. ! (q.v.@:).  Specific uses of `local' in Emacs terminology appear below.
  783.   
  784.   @item Local Abbrev
  785.   A local abbrev definition is effective only if a particular major mode
  786. --- 15045,15053 ----
  787.   @item Local
  788.   Local means `in effect only in a particular context'; the relevant
  789.   kind of context is a particular function execution, a particular
  790. ! buffer, a particular window, or a particular major mode.  It is
  791. ! the opposite of `global'
  792. ! (q.v.@:).  Specific uses of `local' in Emacs terminology appear below.@refill
  793.   
  794.   @item Local Abbrev
  795.   A local abbrev definition is effective only if a particular major mode
  796. ***************
  797. *** 14745,14750 ****
  798. --- 15278,15286 ----
  799.   newline into the text.  It is also used to terminate most arguments
  800.   read in the minibuffer (q.v.@:).  @xref{Characters,Return}.
  801.   
  802. + @item Rope
  803. + A rope is a sequence of glyfs (q.v.@:).
  804.   @item Saving
  805.   Saving a buffer means copying its text into the file that was visited
  806.   (q.v.@:) in that buffer.  This is the way text in files actually gets
  807. ***************
  808. *** 14785,14790 ****
  809. --- 15321,15331 ----
  810.   work.  Emacs detects all cases of simultaneous editing and warns the
  811.   user to investigate them.  @xref{Interlocking,,Simultaneous Editing}.
  812.   
  813. + @item Sort Table
  814. + A sort table tells Emacs how to perform searching and sorting
  815. + for a character set.
  816. + @xref{Sort Tables}.@refill
  817.   @item String
  818.   A string is a kind of Lisp data object which contains a sequence of
  819.   characters.  Many Emacs variables are intended to have strings as
  820. ***************
  821. *** 14834,14839 ****
  822. --- 15375,15386 ----
  823.   are not in a recursive editing level (q.v.@:) or the minibuffer
  824.   (q.v.@:), and not in the middle of a command.  You can get back to top
  825.   level by aborting (q.v.@:) and quitting (q.v.@:).  @xref{Quitting}.
  826. + @item Trans Table
  827. + A trans[lation] table maps every character in a character set
  828. + into another (possibly the same) character.
  829. + Trans tables can be used, for example, for case conversion.
  830. + @xref{Trans Tables}.@refill
  831.   
  832.   @item Transposition
  833.   Transposing two units of text means putting each one into the place
  834.