PageRenderTime 30ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/etc/NEWS.19

http://github.com/emacsmirror/emacs
Unknown | 1631 lines | 1163 code | 468 blank | 0 comment | 0 complexity | a7848f4bcac06446a7f02498a9296f8e MD5 | raw file
Possible License(s): GPL-3.0, LGPL-2.0, AGPL-3.0
  1. GNU Emacs NEWS -- history of user-visible changes. 1992.
  2. Copyright (C) 1993-1995, 2001, 2006-2012 Free Software Foundation, Inc.
  3. See the end of the file for license conditions.
  4. This file is about changes in emacs versions 19.
  5. * Emacs 19.34 is a bug-fix release with no user-visible changes.
  6. * Changes in Emacs 19.33.
  7. ** Bibtex mode no longer turns on Auto Fill automatically. (No major
  8. mode should do that--it is the user's choice.)
  9. ** The variable normal-auto-fill-function specifies the function to
  10. use for auto-fill-function, if and when Auto Fill is turned on.
  11. Major modes can set this locally to alter how Auto Fill works.
  12. * Editing Changes in Emacs 19.32
  13. ** C-x f with no argument now signals an error.
  14. To set the fill column at the current column, use C-u C-x f.
  15. ** Expanding dynamic abbrevs with M-/ is now smarter about case
  16. conversion. If you type the abbreviation with mixed case, and it
  17. matches the beginning of the expansion including case, then the
  18. expansion is copied verbatim. Using SPC M-/ to copy an additional
  19. word always copies it verbatim except when the previous copied word is
  20. all caps.
  21. ** On a non-windowing terminal, which can display only one Emacs frame
  22. at a time, creating a new frame with C-x 5 2 also selects that frame.
  23. When using a display that can show multiple frames at once, C-x 5 2
  24. does make the frame visible, but does not select it. This is the same
  25. as in previous Emacs versions.
  26. ** You can use C-x 5 2 to create multiple frames on MSDOS, just as on a
  27. non-X terminal on Unix. Of course, only one frame is visible at any
  28. time, since your terminal doesn't have the ability to display multiple
  29. frames.
  30. ** On Windows, set win32-pass-alt-to-system to a non-nil value
  31. if you would like tapping the Alt key to invoke the Windows menu.
  32. This feature is not enabled by default; since the Alt key is also the
  33. Meta key, it is too easy and painful to activate this feature by
  34. accident.
  35. ** The command apply-macro-to-region-lines repeats the last defined
  36. keyboard macro once for each complete line within the current region.
  37. It does this line by line, by moving point to the beginning of that
  38. line and then executing the macro.
  39. This command is not new, but was never documented before.
  40. ** You can now use Mouse-1 to place the region around a string constant
  41. (something surrounded by doublequote characters or other delimiter
  42. characters of like syntax) by double-clicking on one of the delimiting
  43. characters.
  44. ** Font Lock mode
  45. *** Font Lock support modes
  46. Font Lock can be configured to use Fast Lock mode and Lazy Lock mode (see
  47. below) in a flexible way. Rather than adding the appropriate function to the
  48. hook font-lock-mode-hook, you can use the new variable font-lock-support-mode
  49. to control which modes have Fast Lock mode or Lazy Lock mode turned on when
  50. Font Lock mode is enabled.
  51. For example, to use Fast Lock mode when Font Lock mode is turned on, put:
  52. (setq font-lock-support-mode 'fast-lock-mode)
  53. in your ~/.emacs.
  54. *** lazy-lock
  55. The lazy-lock package speeds up Font Lock mode by making fontification occur
  56. only when necessary, such as when a previously unfontified part of the buffer
  57. becomes visible in a window. When you create a buffer with Font Lock mode and
  58. Lazy Lock mode turned on, the buffer is not fontified. When certain events
  59. occur (such as scrolling), Lazy Lock makes sure that the visible parts of the
  60. buffer are fontified. Lazy Lock also defers on-the-fly fontification until
  61. Emacs has been idle for a given amount of time.
  62. To use this package, put in your ~/.emacs:
  63. (setq font-lock-support-mode 'lazy-lock-mode)
  64. To control the package behavior, see the documentation for `lazy-lock-mode'.
  65. ** Changes in BibTeX mode.
  66. *** For all entries allow spaces and tabs between opening brace or
  67. paren and key.
  68. *** Non-escaped double-quoted characters (as in `Sch"of') are now
  69. supported.
  70. ** Gnus changes.
  71. Gnus, the Emacs news reader, has undergone further rewriting. Many new
  72. commands and variables have been added. There should be no
  73. significant incompatibilities between this Gnus version and the
  74. previously released version, except in the message composition area.
  75. Below is a list of the more user-visible changes. Coding changes
  76. between Gnus 5.1 and 5.2 are more extensive.
  77. *** A new message composition mode is used. All old customization
  78. variables for mail-mode, rnews-reply-mode and gnus-msg are now
  79. obsolete.
  80. *** Gnus is now able to generate "sparse" threads -- threads where
  81. missing articles are represented by empty nodes.
  82. (setq gnus-build-sparse-threads 'some)
  83. *** Outgoing articles are stored on a special archive server.
  84. To disable this: (setq gnus-message-archive-group nil)
  85. *** Partial thread regeneration now happens when articles are
  86. referred.
  87. *** Gnus can make use of GroupLens predictions:
  88. (setq gnus-use-grouplens t)
  89. *** A trn-line tree buffer can be displayed.
  90. (setq gnus-use-trees t)
  91. *** An nn-like pick-and-read minor mode is available for the summary
  92. buffers.
  93. (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode)
  94. *** In binary groups you can use a special binary minor mode:
  95. `M-x gnus-binary-mode'
  96. *** Groups can be grouped in a folding topic hierarchy.
  97. (add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
  98. *** Gnus can re-send and bounce mail.
  99. Use the `S D r' and `S D b'.
  100. *** Groups can now have a score, and bubbling based on entry frequency
  101. is possible.
  102. (add-hook 'gnus-summary-exit-hook 'gnus-summary-bubble-group)
  103. *** Groups can be process-marked, and commands can be performed on
  104. groups of groups.
  105. *** Caching is possible in virtual groups.
  106. *** nndoc now understands all kinds of digests, mail boxes, rnews news
  107. batches, ClariNet briefs collections, and just about everything else.
  108. *** Gnus has a new backend (nnsoup) to create/read SOUP packets.
  109. *** The Gnus cache is much faster.
  110. *** Groups can be sorted according to many criteria.
  111. For instance: (setq gnus-group-sort-function 'gnus-group-sort-by-rank)
  112. *** New group parameters have been introduced to set list-address and
  113. expiration times.
  114. *** All formatting specs allow specifying faces to be used.
  115. *** There are several more commands for setting/removing/acting on
  116. process marked articles on the `M P' submap.
  117. *** The summary buffer can be limited to show parts of the available
  118. articles based on a wide range of criteria. These commands have been
  119. bound to keys on the `/' submap.
  120. *** Articles can be made persistent -- as an alternative to saving
  121. articles with the `*' command.
  122. *** All functions for hiding article elements are now toggles.
  123. *** Article headers can be buttonized.
  124. (add-hook 'gnus-article-display-hook 'gnus-article-add-buttons-to-head)
  125. *** All mail backends support fetching articles by Message-ID.
  126. *** Duplicate mail can now be treated properly. See the
  127. `nnmail-treat-duplicates' variable.
  128. *** All summary mode commands are available directly from the article
  129. buffer.
  130. *** Frames can be part of `gnus-buffer-configuration'.
  131. *** Mail can be re-scanned by a daemonic process.
  132. *** Gnus can make use of NoCeM files to filter spam.
  133. (setq gnus-use-nocem t)
  134. *** Groups can be made permanently visible.
  135. (setq gnus-permanently-visible-groups "^nnml:")
  136. *** Many new hooks have been introduced to make customizing easier.
  137. *** Gnus respects the Mail-Copies-To header.
  138. *** Threads can be gathered by looking at the References header.
  139. (setq gnus-summary-thread-gathering-function
  140. 'gnus-gather-threads-by-references)
  141. *** Read articles can be stored in a special backlog buffer to avoid
  142. refetching.
  143. (setq gnus-keep-backlog 50)
  144. *** A clean copy of the current article is always stored in a separate
  145. buffer to allow easier treatment.
  146. *** Gnus can suggest where to save articles. See `gnus-split-methods'.
  147. *** Gnus doesn't have to do as much prompting when saving.
  148. (setq gnus-prompt-before-saving t)
  149. *** gnus-uu can view decoded files asynchronously while fetching
  150. articles.
  151. (setq gnus-uu-grabbed-file-functions 'gnus-uu-grab-view)
  152. *** Filling in the article buffer now works properly on cited text.
  153. *** Hiding cited text adds buttons to toggle hiding, and how much
  154. cited text to hide is now customizable.
  155. (setq gnus-cited-lines-visible 2)
  156. *** Boring headers can be hidden.
  157. (add-hook 'gnus-article-display-hook 'gnus-article-hide-boring-headers)
  158. *** Default scoring values can now be set from the menu bar.
  159. *** Further syntax checking of outgoing articles have been added.
  160. The Gnus manual has been expanded. It explains all these new features
  161. in greater detail.
  162. * Lisp Changes in Emacs 19.32
  163. ** The function set-visited-file-name now accepts an optional
  164. second argument NO-QUERY. If it is non-nil, then the user is not
  165. asked for confirmation in the case where the specified file already
  166. exists.
  167. ** The variable print-length applies to printing vectors and bitvectors,
  168. as well as lists.
  169. ** The new function keymap-parent returns the parent keymap
  170. of a given keymap.
  171. ** The new function set-keymap-parent specifies a new parent for a
  172. given keymap. The arguments are KEYMAP and PARENT. PARENT must be a
  173. keymap or nil.
  174. ** Sometimes menu keymaps use a command name, a symbol, which is really
  175. an automatically generated alias for some other command, the "real"
  176. name. In such a case, you should give that alias symbol a non-nil
  177. menu-alias property. That property tells the menu system to look for
  178. equivalent keys for the real name instead of equivalent keys for the
  179. alias.
  180. * Editing Changes in Emacs 19.31
  181. ** Freedom of the press restricted in the United States.
  182. Emacs has been censored in accord with the Communications Decency Act.
  183. This includes removing some features of the doctor program. That law
  184. was described by its supporters as a ban on pornography, but it bans
  185. far more than that. The Emacs distribution has never contained any
  186. pornography, but parts of it were nonetheless prohibited.
  187. For information on US government censorship of the Internet, and what
  188. you can do to bring back freedom of the press, see the web site
  189. `http://www.vtw.org/'.
  190. ** A note about C mode indentation customization.
  191. The old (Emacs 19.29) ways of specifying a C indentation style
  192. do not normally work in the new implementation of C mode.
  193. It has its own methods of customizing indentation, which are
  194. much more powerful than the old C mode. See the Editing Programs
  195. chapter of the manual for details.
  196. However, you can load the library cc-compat to make the old
  197. customization variables take effect.
  198. ** Marking with the mouse.
  199. When you mark a region with the mouse, the region now remains
  200. highlighted until the next input event, regardless of whether you are
  201. using M-x transient-mark-mode.
  202. ** Improved Windows NT/95 support.
  203. *** Emacs now supports scroll bars on Windows NT and Windows 95.
  204. *** Emacs now supports subprocesses on Windows 95. (Subprocesses used
  205. to work on NT only and not on 95.)
  206. *** There are difficulties with subprocesses, though, due to problems
  207. in Windows, beyond the control of Emacs. They work fine as long as
  208. you run Windows applications. The problems arise when you run a DOS
  209. application in a subprocesses. Since current shells run as DOS
  210. applications, these problems are significant.
  211. If you run a DOS application in a subprocess, then the application is
  212. likely to busy-wait, which means that your machine will be 100% busy.
  213. However, if you don't mind the temporary heavy load, the subprocess
  214. will work OK as long as you tell it to terminate before you start any
  215. other DOS application as a subprocess.
  216. Emacs is unable to terminate or interrupt a DOS subprocess.
  217. You have to do this by providing input directly to the subprocess.
  218. If you run two DOS applications at the same time in two separate
  219. subprocesses, even if one of them is asynchronous, you will probably
  220. have to reboot your machine--until then, it will remain 100% busy.
  221. Windows simply does not cope when one Windows process tries to run two
  222. separate DOS subprocesses. Typing CTL-ALT-DEL and then choosing
  223. Shutdown seems to work although it may take a few minutes.
  224. ** M-x resize-minibuffer-mode.
  225. This command, not previously mentioned in NEWS, toggles a mode in
  226. which the minibuffer window expands to show as many lines as the
  227. minibuffer contains.
  228. ** `title' frame parameter and resource.
  229. The `title' X resource now specifies just the frame title, nothing else.
  230. It does not affect the name used for looking up other X resources.
  231. It works by setting the new `title' frame parameter, which likewise
  232. affects just the displayed title of the frame.
  233. The `name' parameter continues to do what it used to do:
  234. it specifies the frame name for looking up X resources,
  235. and also serves as the default for the displayed title
  236. when the `title' parameter is unspecified or nil.
  237. ** Emacs now uses the X toolkit by default, if you have a new
  238. enough version of X installed (X11R5 or newer).
  239. ** When you compile Emacs with the Motif widget set, Motif handles the
  240. F10 key by activating the menu bar. To avoid confusion, the usual
  241. Emacs binding of F10 is replaced with a no-op when using Motif.
  242. If you want to be able to use F10 in Emacs, you can rebind the Motif
  243. menubar to some other key which you don't use. To do so, add
  244. something like this to your X resources file. This example rebinds
  245. the Motif menu bar activation key to S-F12:
  246. Emacs*defaultVirtualBindings: osfMenuBar : Shift<Key>F12
  247. ** In overwrite mode, DEL now inserts spaces in most cases
  248. to replace the characters it "deletes".
  249. ** The Rmail summary now shows the number of lines in each message.
  250. ** Rmail has a new command M-x unforward-rmail-message, which extracts
  251. a forwarded message from the message that forwarded it. To use it,
  252. select a message which contains a forwarded message and then type the command.
  253. It inserts the forwarded message as a separate Rmail message
  254. immediately after the selected one.
  255. This command also undoes the textual modifications that are standardly
  256. made, as part of forwarding, by Rmail and other mail reader programs.
  257. ** Turning off saving of .saves-... files in your home directory.
  258. Each Emacs session writes a file named .saves-... in your home
  259. directory to record which files M-x recover-session should recover.
  260. If you exit Emacs normally with C-x C-c, it deletes that file. If
  261. Emacs or the operating system crashes, the file remains for M-x
  262. recover-session.
  263. You can turn off the writing of these files by setting
  264. auto-save-list-file-name to nil. If you do this, M-x recover-session
  265. will not work.
  266. Some previous Emacs versions failed to delete these files even on
  267. normal exit. This is fixed now. If you are thinking of turning off
  268. this feature because of past experiences with versions that had this
  269. bug, it would make sense to check whether you still want to do so
  270. now that the bug is fixed.
  271. ** Changes to Version Control (VC)
  272. There is a new variable, vc-follow-symlinks. It indicates what to do
  273. when you visit a link to a file that is under version control.
  274. Editing the file through the link bypasses the version control system,
  275. which is dangerous and probably not what you want.
  276. If this variable is t, VC follows the link and visits the real file,
  277. telling you about it in the echo area. If it is `ask' (the default),
  278. VC asks for confirmation whether it should follow the link. If nil,
  279. the link is visited and a warning displayed.
  280. ** iso-acc.el now lets you specify a choice of language.
  281. Languages include "latin-1" (the default) and "latin-2" (which
  282. is designed for entering ISO Latin-2 characters).
  283. There are also choices for specific human languages such as French and
  284. Portuguese. These are subsets of Latin-1, which differ in that they
  285. enable only the accent characters needed for particular language.
  286. The other accent characters, not needed for the chosen language,
  287. remain normal.
  288. ** Posting articles and sending mail now has M-TAB completion on various
  289. header fields (Newsgroups, To, CC, ...).
  290. Completion in the Newsgroups header depends on the list of groups
  291. known to your news reader. Completion in the Followup-To header
  292. offers those groups which are in the Newsgroups header, since
  293. Followup-To usually just holds one of those.
  294. Completion in fields that hold mail addresses works based on the list
  295. of local users plus your aliases. Additionally, if your site provides
  296. a mail directory or a specific host to use for any unrecognized user
  297. name, you can arrange to query that host for completion also. (See the
  298. documentation of variables `mail-directory-process' and
  299. `mail-directory-stream'.)
  300. ** A greatly extended sgml-mode offers new features such as (to be configured)
  301. skeletons with completing read for tags and attributes, typing named
  302. characters including optionally all 8bit characters, making tags invisible
  303. with optional alternate display text, skipping and deleting tag(pair)s.
  304. Note: since Emacs' syntax feature cannot limit the special meaning of ', " and
  305. - to inside <>, for some texts the result, especially of font locking, may be
  306. wrong (see `sgml-specials' if you get wrong results).
  307. The derived html-mode configures this with tags and attributes more or
  308. less HTML3ish. It also offers optional quick keys like C-c 1 for
  309. headline or C-c u for unordered list (see `html-quick-keys'). Edit /
  310. Text Properties / Face or M-g combinations create tags as applicable.
  311. Outline minor mode is supported and level 1 font-locking tries to
  312. fontify tag contents (which only works when they fit on one line, due
  313. to a limitation in font-lock).
  314. External viewing via browse-url can occur automatically upon saving.
  315. ** M-x imenu-add-to-menubar now adds to the menu bar for the current
  316. buffer only. If you want to put an Imenu item in the menu bar for all
  317. buffers that use a particular major mode, use the mode hook, as in
  318. this example:
  319. (add-hook 'emacs-lisp-mode-hook
  320. '(lambda () (imenu-add-to-menubar "Index")))
  321. ** Changes in BibTeX mode.
  322. *** Field names may now contain digits, hyphens, and underscores.
  323. *** Font Lock mode is now supported.
  324. *** bibtex-make-optional-field is no longer interactive.
  325. *** If bibtex-maintain-sorted-entries is non-nil, inserting new
  326. entries is now done with a faster algorithm. However, inserting
  327. will fail in this case if the buffer contains invalid entries or
  328. isn't in sorted order, so you should finish each entry with C-c C-c
  329. (bibtex-close-entry) after you have inserted or modified it.
  330. The default value of bibtex-maintain-sorted-entries is nil.
  331. *** Function `show-all' is no longer bound to a key, since C-u C-c C-q
  332. does the same job.
  333. *** Entries with quotes inside quote-delimited fields (as `author =
  334. "Stefan Sch{\"o}f"') are now supported.
  335. *** Case in field names doesn't matter anymore when searching for help
  336. text.
  337. ** Font Lock mode
  338. *** Global Font Lock mode
  339. Font Lock mode can be turned on globally, in buffers that support it, by the
  340. new command global-font-lock-mode. You can use the new variable
  341. font-lock-global-modes to control which modes have Font Lock mode automagically
  342. turned on. By default, this variable is set so that Font Lock mode is turned
  343. on globally where the buffer mode supports it.
  344. For example, to automagically turn on Font Lock mode where supported, put:
  345. (global-font-lock-mode t)
  346. in your ~/.emacs.
  347. *** Local Refontification
  348. In Font Lock mode, editing a line automatically refontifies that line only.
  349. However, if your change alters the syntactic context for following lines,
  350. those lines remain incorrectly fontified. To refontify them, use the new
  351. command M-g M-g (font-lock-fontify-block).
  352. In certain major modes, M-g M-g refontifies the entire current function.
  353. (The variable font-lock-mark-block-function controls how to find the
  354. current function.) In other major modes, M-g M-g refontifies 16 lines
  355. above and below point.
  356. With a prefix argument N, M-g M-g refontifies N lines above and below point.
  357. ** Follow mode
  358. Follow mode is a new minor mode combining windows showing the same
  359. buffer into one tall "virtual window". The windows are typically two
  360. side-by-side windows. Follow mode makes them scroll together as if
  361. they were a unit. To use it, go to a frame with just one window,
  362. split it into two side-by-side windows using C-x 3, and then type M-x
  363. follow-mode.
  364. M-x follow-mode turns off Follow mode if it is already enabled.
  365. To display two side-by-side windows and activate Follow mode, use the
  366. command M-x follow-delete-other-windows-and-split.
  367. ** hide-show changes.
  368. The hooks hs-hide-hooks and hs-show-hooks have been renamed
  369. to hs-hide-hook and hs-show-hook, to follow the convention for
  370. normal hooks.
  371. ** Simula mode now has a menu containing the most important commands.
  372. The new command simula-indent-exp is bound to C-M-q.
  373. ** etags can now handle programs written in Erlang. Files are
  374. recognized by the extensions .erl and .hrl. The tagged lines are
  375. those that begin a function, record, or macro.
  376. ** MSDOS Changes
  377. *** It is now possible to compile Emacs with the version 2 of DJGPP.
  378. Compilation with DJGPP version 1 also still works.
  379. *** The documentation of DOS-specific aspects of Emacs was rewritten
  380. and expanded; see the ``MS-DOS'' node in the on-line docs.
  381. *** Emacs now uses ~ for backup file names, not .bak.
  382. *** You can simulate mouse-3 on two-button mice by simultaneously
  383. pressing both mouse buttons.
  384. *** A number of packages and commands which previously failed or had
  385. restricted functionality on MS-DOS, now work. The most important ones
  386. are:
  387. **** Printing (both with `M-x lpr-buffer' and with `ps-print' package)
  388. now works.
  389. **** `Ediff' works (in a single-frame mode).
  390. **** `M-x display-time' can be used on MS-DOS (due to the new
  391. implementation of Emacs timers, see below).
  392. **** `Dired' supports Unix-style shell wildcards.
  393. **** The `c-macro-expand' command now works as on other platforms.
  394. **** `M-x recover-session' works.
  395. **** `M-x list-colors-display' displays all the available colors.
  396. **** The `TPU-EDT' package works.
  397. * Lisp changes in Emacs 19.31.
  398. ** The function using-unix-filesystems on Windows NT and Windows 95
  399. tells Emacs to read and write files assuming that they reside on a
  400. remote Unix filesystem. No CR/LF translation is done on any files in
  401. this case. Invoking using-unix-filesystems with t activates this
  402. behavior, and invoking it with any other value deactivates it.
  403. ** Change in system-type and system-configuration values.
  404. The value of system-type on a Linux-based GNU system is now `lignux',
  405. not `linux'. This means that some programs which use `system-type'
  406. need to be changed. The value of `system-configuration' will also
  407. be different.
  408. It is generally recommended to use `system-configuration' rather
  409. than `system-type'.
  410. See the file LINUX-GNU in this directory for more about this.
  411. ** The functions shell-command and dired-call-process
  412. now run file name handlers for default-directory, if it has them.
  413. ** Undoing the deletion of text now restores the positions of markers
  414. that pointed into or next to the deleted text.
  415. ** Timers created with run-at-time now work internally to Emacs, and
  416. no longer use a separate process. Therefore, they now work more
  417. reliably and can be used for shorter time delays.
  418. The new function run-with-timer is a convenient way to set up a timer
  419. to run a specified amount of time after the present. A call looks
  420. like this:
  421. (run-with-timer SECS REPEAT FUNCTION ARGS...)
  422. SECS says how many seconds should elapse before the timer happens.
  423. It may be an integer or a floating point number. When the timer
  424. becomes ripe, the action is to call FUNCTION with arguments ARGS.
  425. REPEAT gives the interval for repeating the timer (measured in
  426. seconds). It may be an integer or a floating point number. nil or 0
  427. means don't repeat at all--call FUNCTION just once.
  428. *** with-timeout provides an easy way to do something but give
  429. up if too much time passes.
  430. (with-timeout (SECONDS TIMEOUT-FORMS...) BODY...)
  431. This executes BODY, but gives up after SECONDS seconds.
  432. If it gives up, it runs the TIMEOUT-FORMS and returns the value
  433. of the last one of them. Normally it returns the value of the last
  434. form in BODY.
  435. *** You can now arrange to call a function whenever Emacs is idle for
  436. a certain length of time. To do this, call run-with-idle-timer. A
  437. call looks like this:
  438. (run-with-idle-timer SECS REPEAT FUNCTION ARGS...)
  439. SECS says how many seconds of idleness should elapse before the timer
  440. runs. It may be an integer or a floating point number. When the
  441. timer becomes ripe, the action is to call FUNCTION with arguments
  442. ARGS.
  443. Emacs becomes idle whenever it finishes executing a keyboard or mouse
  444. command. It remains idle until it receives another keyboard or mouse
  445. command.
  446. REPEAT, if non-nil, means this timer should be activated again each
  447. time Emacs becomes idle and remains idle for SECS seconds The timer
  448. does not repeat if Emacs *remains* idle; it runs at most once after
  449. each time Emacs becomes idle.
  450. If REPEAT is nil, the timer runs just once, the first time Emacs is
  451. idle for SECS seconds.
  452. *** post-command-idle-hook is now obsolete; you shouldn't use it at
  453. all, because it interferes with the idle timer mechanism. If your
  454. programs use post-command-idle-hook, convert them to use idle timers
  455. instead.
  456. *** y-or-n-p-with-timeout lets you ask a question but give up if
  457. there is no answer within a certain time.
  458. (y-or-n-p-with-timeout PROMPT SECONDS DEFAULT-VALUE)
  459. asks the question PROMPT (just like y-or-n-p). If the user answers
  460. within SECONDS seconds, it returns the answer that the user gave.
  461. Otherwise it gives up after SECONDS seconds, and returns DEFAULT-VALUE.
  462. ** Minor change to `encode-time': you can now pass more than seven
  463. arguments. If you do that, the first six arguments have the usual
  464. meaning, the last argument is interpreted as the time zone, and the
  465. arguments in between are ignored.
  466. This means that it works to use the list returned by `decode-time' as
  467. the list of arguments for `encode-time'.
  468. ** The default value of load-path now includes the directory
  469. /usr/local/share/emacs/VERSION/site-lisp In addition to
  470. /usr/local/share/emacs/site-lisp. You can use this new directory for
  471. site-specific Lisp packages that belong with a particular Emacs
  472. version.
  473. It is not unusual for a Lisp package that works well in one Emacs
  474. version to cause trouble in another. Sometimes packages need updating
  475. for incompatible changes; sometimes they look at internal data that
  476. has changed; sometimes the package has been installed in Emacs itself
  477. and the installed version should be used. Whatever the reason for the
  478. problem, this new feature makes it easier to solve.
  479. ** When your program contains a fixed file name (like .completions or
  480. .abbrev.defs), the file name usually needs to be different on operating
  481. systems with limited file name syntax.
  482. Now you can avoid ad-hoc conditionals by using the function
  483. convert-standard-filename to convert the file name to a proper form
  484. for each operating system. Here is an example of use, from the file
  485. completions.el:
  486. (defvar save-completions-file-name
  487. (convert-standard-filename "~/.completions")
  488. "*The filename to save completions to.")
  489. This sets the variable save-completions-file-name to a value that
  490. depends on the operating system, because the definition of
  491. convert-standard-filename depends on the operating system. On
  492. Unix-like systems, it returns the specified file name unchanged. On
  493. MS-DOS, it adapts the name to fit the limitations of that system.
  494. ** The interactive spec N now returns the numeric prefix argument
  495. rather than the raw prefix argument. (It still reads a number using the
  496. minibuffer if there is no prefix argument at all.)
  497. ** When a process is deleted, this no longer disconnects the process
  498. marker from its buffer position.
  499. ** The variable garbage-collection-messages now controls whether
  500. Emacs displays a message at the beginning and end of garbage collection.
  501. The default is nil, meaning there are no messages.
  502. ** The variable debug-ignored-errors specifies certain kinds of errors
  503. that should not enter the debugger. Its value is a list of error
  504. condition symbols and/or regular expressions. If the error has any
  505. of the condition symbols listed, or if any of the regular expressions
  506. matches the error message, then that error does not enter the debugger,
  507. regardless of the value of debug-on-error.
  508. This variable is initialized to match certain common but uninteresting
  509. errors that happen often during editing.
  510. ** The new function error-message-string converts an error datum
  511. into its error message. The error datum is what condition-case
  512. puts into the variable, to describe the error that happened.
  513. ** Anything that changes which buffer appears in a given window
  514. now runs the window-scroll-functions for that window.
  515. ** The new function get-buffer-window-list returns a list of windows displaying
  516. a buffer. The function is called with the buffer (a buffer object or a buffer
  517. name) and two optional arguments specifying the minibuffer windows and frames
  518. to search. Therefore this function takes optional args like next-window etc.,
  519. and not get-buffer-window.
  520. ** buffer-substring now runs the hook buffer-access-fontify-functions,
  521. calling each function with two arguments--the range of the buffer
  522. being accessed. buffer-substring-no-properties does not call them.
  523. If you use this feature, you should set the variable
  524. buffer-access-fontified-property to a non-nil symbol, which is a
  525. property name. Then, if all the characters in the buffer range have a
  526. non-nil value for that property, the buffer-access-fontify-functions
  527. are not called. When called, these functions should put a non-nil
  528. property on the text that they fontify, so that they won't get called
  529. over and over for the same text.
  530. ** Changes in lisp-mnt.el
  531. *** The lisp-mnt package can now recognize file headers that are written
  532. in the formats used by the `what' command and the RCS `ident' command:
  533. ;; @(#) HEADER: text
  534. ;; $HEADER: text $
  535. in addition to the normal
  536. ;; HEADER: text
  537. *** The commands lm-verify and lm-synopsis are now interactive. lm-verify
  538. checks that the library file has proper sections and headers, and
  539. lm-synopsis extracts first line "synopsis'"information.
  540. * Editing Changes in Emacs 19.30.
  541. ** Be sure to recompile your byte-compiled Emacs Lisp files
  542. if you last compiled them with Emacs 19.28 or earlier.
  543. You can use M-x byte-force-recompile to recompile all the .elc files
  544. in a specified directory.
  545. ** Emacs now provides multiple-frame support on Windows NT
  546. and Windows 95.
  547. ** M-x column-number-mode toggles a minor mode which displays
  548. the current column number in the mode line.
  549. ** Line Number mode is now enabled by default.
  550. ** M-x what-line now displays the line number in the accessible
  551. portion of the buffer as well as the line number in the full buffer,
  552. when narrowing is in effect.
  553. ** If you type a M-x command that has an equivalent key binding,
  554. the equivalent is shown in the minibuffer before the command executes.
  555. This feature is enabled by default for the sake of beginning users.
  556. You can turn the feature off by setting suggest-key-bindings to nil.
  557. ** The menu bar is now visible on text-only terminals. To choose a
  558. command from the menu bar when you have no mouse, type M-`
  559. (Meta-Backquote) or F10. To turn off menu bar display,
  560. do (menu-bar-mode -1).
  561. ** Whenever you invoke a minibuffer, it appears in the minibuffer
  562. window that the current frame uses.
  563. Emacs can only use one minibuffer window at a time. If you activate
  564. the minibuffer while a minibuffer window is active in some other
  565. frame, the outer minibuffer window disappears while the inner one is
  566. active.
  567. ** Echo area messages always appear in the minibuffer window that the
  568. current frame uses. If a minibuffer is active in some other frame,
  569. the echo area message does not hide it even temporarily.
  570. ** The minibuffer now has a menu-bar menu. You can use it to exit or
  571. abort the minibuffer, or to ask for completion.
  572. ** Dead-key and composite character processing is done in the standard
  573. X11R6 manner (through the default "input method" using the
  574. /usr/lib/X11/locale/*/Compose databases of key combinations). I.e. if
  575. it works in xterm, it should also work in emacs now.
  576. ** Mouse changes
  577. *** You can now use the mouse when running Emacs in an xterm.
  578. Use M-x xterm-mouse-mode to let emacs take control over the mouse.
  579. *** C-mouse-1 now once again provides a menu of buffers to select.
  580. S-mouse-1 is now the way to select a default font for the frame.
  581. *** There is a new mouse-scroll-min-lines variable to control the
  582. minimum number of lines scrolled by dragging the mouse outside a
  583. window's edge.
  584. *** Dragging mouse-1 on a vertical line that separates windows
  585. now moves the line, thus changing the widths of the two windows.
  586. (This feature is available only if you don't have vertical scroll bars.
  587. If you do use them, a scroll bar separates two side-by-side windows.)
  588. *** Double-click mouse-1 on a character with "symbol" syntax (such as
  589. underscore, in C mode) selects the entire symbol surrounding that
  590. character. (Double-click mouse-1 on a letter selects a whole word.)
  591. ** When incremental search wraps around to the beginning (or end) of
  592. the buffer, if you keep on searching until you go past the original
  593. starting point of the search, the echo area changes from "Wrapped" to
  594. "Overwrapped". That tells you that you are revisiting matches that
  595. you have already seen.
  596. ** Filling changes.
  597. *** If the variable colon-double-space is non-nil, the explicit fill
  598. commands put two spaces after a colon.
  599. *** Auto-Fill mode now supports Adaptive Fill mode just as the
  600. explicit fill commands do. The variable adaptive-fill-regexp
  601. specifies a regular expression to match text at the beginning of
  602. a line that should be the fill prefix.
  603. *** Adaptive Fill mode can take a fill prefix from the first line of a
  604. paragraph, *provided* that line is not a paragraph-starter line.
  605. Paragraph-starter lines are indented lines that start a new
  606. paragraph because they are indented. This indentation shouldn't
  607. be copied to additional lines.
  608. Whether indented lines are paragraph lines depends on the value of the
  609. variable paragraph-start. Some major modes set this; you can set it
  610. by hand or in mode hooks as well. For editing text in which paragraph
  611. first lines are not indented, and which contains paragraphs in which
  612. all lines are indented, you should use Indented Text mode or arrange
  613. for paragraph-start not to match these lines.
  614. *** You can specify more complex ways of choosing a fill prefix
  615. automatically by setting `adaptive-fill-function'. This function
  616. is called with point after the left margin of a line, and it should
  617. return the appropriate fill prefix based on that line.
  618. If it returns nil, that means it sees no fill prefix in that line.
  619. ** Gnus changes.
  620. Gnus, the Emacs news reader, has been rewritten and expanded. Most
  621. things that worked with the old version should still work with the new
  622. version. Code that relies heavily on Gnus internals is likely to
  623. fail, though.
  624. *** Incompatibilities with the old GNUS.
  625. **** All interactive commands have kept their names, but many internal
  626. functions have changed names.
  627. **** The summary mode gnus-uu commands have been moved from the `C-c
  628. C-v' keymap to the `X' keymap.
  629. **** There can now be several summary buffers active at once.
  630. Variables that are relevant to each summary buffer are buffer-local to
  631. that buffer.
  632. **** Old hilit code doesn't work at all. Gnus performs its own
  633. highlighting based not only on what's visible in the buffer, but on
  634. other data structures.
  635. **** Old packages like `expire-kill' will no longer work.
  636. **** `C-c C-l' in the group buffer no longer switches to a different
  637. buffer, but instead lists killed groups in the group buffer.
  638. *** New features.
  639. **** The look of all buffers can be changed by setting format-like
  640. variables.
  641. **** Local spool and several NNTP servers can be used at once.
  642. **** Groups can be combined into virtual groups.
  643. **** Different mail formats can be read much the same way as one would
  644. read newsgroups. All the mail backends implement mail expiry schemes.
  645. **** Gnus can use various strategies for gathering threads that have
  646. lost their roots (thereby gathering loose sub-threads into one thread)
  647. or it can go back and retrieve enough headers to build a complete
  648. thread.
  649. **** Killed groups can be read.
  650. **** Gnus can do partial group updates - you do not have to retrieve
  651. the entire active file just to check for new articles in a few groups.
  652. **** Gnus implements a sliding scale of subscribedness to groups.
  653. **** You can score articles according to any number of criteria. You
  654. can get Gnus to score articles for you using adaptive scoring.
  655. **** Gnus maintains a dribble buffer that is auto-saved the normal
  656. Emacs manner, so it should be difficult to lose much data on what you
  657. have read if your machine should go down.
  658. **** Gnus now has its own startup file (`.gnus.el') to avoid
  659. cluttering up the `.emacs' file.
  660. **** You can set the process mark on both groups and articles and
  661. perform operations on all the marked items.
  662. **** You can grep through a subset of groups and create a group from
  663. the results.
  664. **** You can list subsets of groups using matches on group names or
  665. group descriptions.
  666. **** You can browse foreign servers and subscribe to groups from those
  667. servers.
  668. **** Gnus can pre-fetch articles asynchronously on a second connection
  669. to the servers.
  670. **** You can cache articles locally.
  671. **** Gnus can fetch FAQs to and descriptions of groups.
  672. **** Digests (and other files) can be used as the basis for groups.
  673. **** Articles can be highlighted and customized.
  674. ** Changes to Version Control (VC)
  675. *** General changes (all backends).
  676. VC directory listings (C-x v d) are now kept up to date when you do a
  677. vc-next-action (C-x v v) on the marked files. The `g' command updates
  678. the buffer properly. `=' in a VC dired buffer produces a version
  679. control diff, not an ordinary diff.
  680. *** CVS changes.
  681. Under CVS, you no longer need to type C-x C-q before you can edit a
  682. file. VC doesn't write-protect unmodified buffers anymore; you can
  683. freely change them at any time. The mode line keeps track of the
  684. file status.
  685. If you do want unmodified files to be write-protected, set your
  686. CVSREAD environment variable. VC sees this and behaves accordingly;
  687. that will give you the behavior of Emacs 19.29, similar to that under
  688. RCS and SCCS. In this mode, if the variable vc-mistrust-permissions
  689. is nil, VC learns the modification state from the file permissions.
  690. When setting CVSREAD for the first time, you should check out the
  691. whole module anew, so that the file permissions are set correctly.
  692. VC also works with remote repositories now. When you visit a file, it
  693. doesn't run "cvs status" anymore, so there shouldn't be any long delays.
  694. Directory listings under VC/CVS have been enhanced. Type C-x v d, and
  695. you get a list of all files in or below the current directory that are
  696. not up-to-date. The actual status (modified, merge, conflict, ...) is
  697. displayed for each file. If you give a prefix argument (C-u C-x v d),
  698. up-to-date files are also listed. You can mark any number of files,
  699. and execute the next logical version control command on them (C-x v v).
  700. *** Starting a new branch.
  701. If you try to lock a version that is not the latest on its branch,
  702. VC asks for confirmation in the minibuffer. If you say no, it offers
  703. to lock the latest version instead.
  704. *** RCS non-strict locking.
  705. VC can now handle RCS non-strict locking, too. In this mode, working
  706. files are always writable and you needn't lock the file before making
  707. changes, similar to the default mode under CVS. To enable non-strict
  708. locking for a file, use the "rcs -U" command.
  709. *** Sharing RCS master files.
  710. If you share RCS subdirs with other users (through symbolic links),
  711. and you always want to work on the latest version, set
  712. vc-consult-headers to nil and vc-mistrust-permissions to `t'.
  713. Then you see the state of the *latest* version on the mode line, not
  714. that of your working file. When you do a check out, VC overwrites
  715. your working file with the latest version from the master.
  716. *** RCS customization.
  717. There is a new variable vc-consult-headers. If it is t (the default),
  718. VC searches for RCS headers in working files (like `$Id$') and
  719. determines the state of the file from them, not from the master file.
  720. This is fast and more reliable when you use branches. (The variable
  721. was already present in Emacs 19.29, but didn't get mentioned in the
  722. NEWS.)
  723. ** Calendar changes.
  724. *** New calendars supported: Chinese, Coptic, Ethiopic
  725. Here are the commands for converting to and from these calendars:
  726. gC: calendar-goto-chinese-date
  727. gk: calendar-goto-coptic-date
  728. ge: calendar-goto-ethiopic-date
  729. pC: calendar-print-chinese-date
  730. pk: calendar-print-coptic-date
  731. pe: calendar-print-ethiopic-date
  732. *** Printed calendars
  733. Calendar mode now has commands to produce fancy printed calendars via
  734. LaTeX. You can ask for a calendar for one or more days, weeks, months
  735. or years. The commands all start with `t'; see the manual for a list
  736. of them.
  737. *** New sexp diary entry type
  738. Reminders that apply in the days leading up to an event.
  739. ** The CC-mode package now provides the default C and C++ modes.
  740. See the manual for documentation of its features.
  741. ** The uniquify package chooses buffer names differently when you
  742. visit multiple files with the same name (in different directories).
  743. ** RMAIL now always uses the movemail program when it renames an
  744. inbox file, so that it can interlock properly with the mailer
  745. no matter where it is delivering mail.
  746. ** tex-start-of-header and tex-end-of-header are now regular expressions,
  747. not strings.
  748. ** To enable automatic uncompression of compressed files,
  749. type M-x auto-compression-mode. (This command used to be called
  750. toggle-auto-compression, but was not documented before.) In Lisp,
  751. you can do
  752. (auto-compression-mode 1)
  753. to turn the mode on.
  754. ** The new pc-select package emulates the key bindings for cutting and
  755. pasting, and selection of regions, found in Windows, Motif, and the
  756. Macintosh.
  757. ** Help buffers now use a special major mode, Help mode. This mode
  758. normally turns on View mode; it also provides a hook, help-mode-hook,
  759. which you can use for other customization.
  760. ** Apropos now uses faces for enhanced legibility. It now describes
  761. symbol properties as well as their function definitions and variable
  762. values. You can use Mouse-2 or RET to get more information about a
  763. function definition, variable, or property.
  764. ** Font Lock mode
  765. *** Supports Scheme, TCL and Help modes
  766. For example, to automatically turn on Font Lock mode in the *Help*
  767. buffer, put:
  768. (add-hook 'help-mode-hook 'turn-on-font-lock)
  769. in your ~/.emacs.
  770. *** Enhanced fontification
  771. The structure of font-lock-keywords is extended to allow "anchored" keywords.
  772. Typically, a keyword item of font-lock-keywords comprises a regexp to search
  773. for and information to specify how the regexp should be highlighted. However,
  774. the highlighting information is extended so that it can be another keyword
  775. item. This keyword item, its regexp and highlighting information, is processed
  776. before resuming with the keyword item of which it is part.
  777. For example, a typical keyword item might be:
  778. ("\\<anchor\\>" (0 anchor-face))
  779. which fontifies each occurrence of the discrete word "anchor" in the value of
  780. the variable anchor-face. However, the highlighting information can be used to
  781. fontify text that is anchored to the word "anchor". For example:
  782. ("\\<anchor\\>" (0 anchor-face) ("\\=[ ,]*\\(item\\)" nil nil (1 item-face)))
  783. which fontifies each occurrence of "anchor" as above, but for each occurrence
  784. of "anchor", each occurrence of "item", in any following comma separated list,
  785. is fontified in the value of the variable item-face. Thus the "item" text is
  786. anchored to the "anchor" text. See the variable documentation for further
  787. information.
  788. This feature is used to extend the level and quality of fontification in a
  789. number of modes. For example, C/C++ modes now have level 3 decoration that
  790. includes the fontification of variable and function names in declaration lists.
  791. In this instance, the "anchor" described in the above example is a type or
  792. class name, and an "item" is a variable or function name.
  793. *** Fontification levels
  794. The variables font-lock-maximum-decoration and font-lock-maximum-size are
  795. extended to specify levels and sizes for specific modes. The variable
  796. font-lock-maximum-decoration specifies the preferred level of fontification for
  797. modes that provide multiple levels (typically from "subdued" to "gaudy"). The
  798. variable font-lock-maximum-size specifies the buffer size for which buffer
  799. fontification is suppressed when Font Lock mode is turned on (typically because
  800. it would take too long).
  801. These variables can now specify values for individual modes, by supplying
  802. lists of mode names and values. For example, to use the above mentioned level
  803. 3 decoration for buffers in C/C++ modes, and default decoration otherwise, put:
  804. (setq font-lock-maximum-decoration '((c-mode . 3) (c++-mode . 3)))
  805. in your ~/.emacs. Maximum buffer size values for individual modes are
  806. specified in the same way with the variable font-lock-maximum-size.
  807. *** Font Lock configuration
  808. The mechanism to provide default settings for Font Lock mode are the variables
  809. font-lock-defaults and font-lock-maximum-decoration. Typically, you should
  810. only need to change the value of font-lock-maximum-decoration. However, to
  811. support Font Lock mode for buffers in modes that currently do not support Font
  812. Lock mode, you should set a buffer local value of font-lock-defaults for that
  813. mode, typically via its mode hook.
  814. These variables are used by Font Lock mode to set the values of the variables
  815. font-lock-keywords, font-lock-keywords-only, font-lock-syntax-table,
  816. font-lock-beginning-of-syntax-function and font-lock-keywords-case-fold-search.
  817. You need not set these variables directly, and should not set them yourself
  818. since the underlining mechanism may change in future.
  819. ** Archive mode is now the default mode for various sorts of
  820. archive files (files whose names end with .arc, .lzh, .zip, and .zoo).
  821. ** You can automatically update the years in copyright notice by
  822. means of (add-hook 'write-file-hooks 'copyright-update).
  823. Optionally it can update the GPL version as well.
  824. ** Scripts of various languages (Shell, AWK, Perl, makefiles ...) can
  825. be automatically provided with a magic number and be made executable
  826. by their respective modes under control of various user variables.
  827. The mode must call (executable-set-magic "perl") or
  828. (executable-set-magic "make" "-f"). The latter for example has no
  829. effect on [Mm]akefile.
  830. ** Shell script mode now supports over 15 different shells. The new
  831. command C-c ! executes the region, and optionally beginning of script
  832. as well, by passing them to the shell.
  833. Cases such as `sh' being a `bash' are now accounted for.
  834. Fontification now also does variables, the magic number and all
  835. builtin commands. Shell script mode no longer mingles `tab-width' and
  836. indentation style. The variable `sh-tab-width' has been renamed to
  837. `sh-indentation'. Empty lines are now indented like previous
  838. non-empty line, rather than just previous line.
  839. The annoying $ variable prompting has been eliminated. Instead, shell
  840. script mode uses `comint-dynamic-completion' for commands, variables
  841. and filenames.
  842. ** Two-column mode now automatically scrolls both buffers together,
  843. which makes it possible to eliminate the special scrolling commands
  844. that used to do so.
  845. The commands that operate in two-column mode are no longer bound to
  846. keys outside that mode. f2 o will now position at the same point in
  847. associated buffer.
  848. the new command f2 RET inserts a newline in both buffers, at point and
  849. at the corresponding position in the associated buffer.
  850. ** Skeleton commands now work smoothly as abbrev definitions. The
  851. element < no longer exists, ' is a new element.
  852. ** The autoinsert insert facility for prefilling empty files as soon
  853. as they are found has been extended to accommodate skeletons or calling
  854. functions. See the function auto-insert.
  855. ** TPU-edt Changes
  856. Loading tpu-edt no longer turns on tpu-edt mode. In fact, it is no
  857. longer necessary to explicitly load tpu-edt. All you need to do to
  858. turn on tpu-edt is run the tpu-edt function. Here's how to run
  859. tpu-edt instead of loading the file:
  860. Running Emacs: Type emacs -f tpu-edt
  861. not emacs -l tpu-edt
  862. Within Emacs: Type M-x tpu-edt <ret>
  863. not M-x load-library <ret> tpu-edt <ret>
  864. In .emacs: Use (tpu-edt)
  865. not (load "tpu-edt")
  866. The default name of the tpu-edt X key definition file has changed from
  867. ~/.tpu-gnu-keys to ~/.tpu-keys. If you don't rename the file yourself,
  868. tpu-edt will offer to rename it the first time you invoke it under
  869. x-windows.
  870. ** MS-DOS Enhancements:
  871. *** Better mouse control by adding the following functions [in dosfns.c]
  872. msdos-mouse-enable, msdos-mouse-disable, msdos-mouse-init.
  873. *** If another foreground/background color than the default is setup in
  874. your ~/_emacs, then the screen briefly flickers with the default
  875. colors before changing to the colors you have specified. To avoid
  876. this, the EMACSCOLORS environment variable exists. It shall be
  877. defined as a string with the following elements:
  878. set EMACSCOLORS=fb;fb
  879. The first set of "fb" defines the initial foreground and background
  880. colors using standard dos color numbers (0=black,.., 7=white).
  881. If specified, the second set of "fb" defines the colors which are
  882. restored when you leave emacs.
  883. *** The new SUSPEND environment variable can now be set as the shell to
  884. use when suspending emacs. This can be used to override the stupid
  885. limitation on the environment of sub-shells in MS-DOS (they are just
  886. large enough to hold the currently defined variables, not leaving
  887. room for more); to overcome this limitation, add this to autoexec.bat:
  888. set SUSPEND=%COMSPEC% /E:2000
  889. ** The escape character can now be displayed on X frames. Try
  890. this:
  891. (aset standard-display-table 27 (vector 27))
  892. after first creating a display table (you can do that by loading
  893. the disp-table library).
  894. ** The new command-line option --eval specifies an expression to evaluate
  895. from the command line.
  896. ** etags has now the ability to tag Perl files. They are recognized
  897. either by the .pm and .pl suffixes or by a first line which starts
  898. with `#!' and specifies a Perl interpreter. The tagged lines are
  899. those beginning with the `sub' keyword.
  900. New suffixes recognized are .hpp for C++; .f90 for Fortran; .bib,
  901. .ltx, .TeX for TeX (.bbl, .dtx removed); .ml for Lisp; .prolog for
  902. prolog (.pl is now Perl).
  903. ** The files etc/termcap.dat and etc/termcap.ucb have been replaced
  904. with a new, merged, and much more comprehensive termcap file. The
  905. new file should include all the special entries from the old one.
  906. This new file is under active development as part of the ncurses
  907. project. If you have any questions about this file, or problems with
  908. an entry in it, email terminfo@ccil.org.
  909. * Lisp changes in Emacs 19.30.
  910. ** New Data Types
  911. *** There is a new data type called a char-table which is an array
  912. indexed by a character. Currently this is mostly equivalent to a
  913. vector of length 256, but in the future, when a wider character set is
  914. in use, it will be different. To create one, call
  915. (make-char-table SUBTYPE INITIAL-VALUE)
  916. SUBTYPE is a symbol that identifies the specific use of this
  917. character table. It can be any of these values:
  918. syntax-table
  919. display-table
  920. keyboard-translate-table
  921. case-table
  922. The function `char-table-subtype' returns the subtype of a char-table.
  923. You cannot alter the subtype of an existing char-table.
  924. A char-table has an element for each character code. It also has some
  925. "extra slots". The number of extra slots depends on the subtype and
  926. their use depends on the subtype. (Each subtype symbol has a
  927. `char-table-extra-slots' property that says how many extra slots to
  928. make.) Use (char-table-extra-slot TABLE N) to access extra slot N and
  929. (set-char-table-extra-slot TABLE N VALUE) to store VALUE in slot N.
  930. A char-table T can have a parent, which should be another char-table
  931. P. If you look for the value in T for character C, and the table T
  932. actually holds nil, P's element for character C is used instead.
  933. The functions `char-table-parent' and `set-char-table-parent'
  934. let you read or set the parent of a char-table.
  935. To scan all the values in a char-table, do not try to loop through all
  936. possible character codes. That would work for now, but will not work
  937. in the future. Instead, call map-char-table. (map-char-table
  938. FUNCTION TABLE) calls FUNCTION once for each character or character
  939. set that has a distinct value in TABLE. FUNCTION gets two arguments,
  940. RANGE and VALUE. RANGE specifies a range of TABLE that has one
  941. uniform value, and VALUE is the value in TABLE for that range.
  942. Currently, RANGE is always a vector containing a single character
  943. and it refers to that character alone. In the future, other kinds
  944. of ranges will occur. You can set the value for a given range
  945. with (set-char-table-range TABLE RANGE VALUE) and examine the value
  946. for a range with (char-table-range TABLE RANGE).
  947. *** Syntax tables are now represented as char-tables.
  948. All syntax tables other than the standard syntax table
  949. normally have the standard syntax table as their parent.
  950. Their subtype is `syntax-table'.
  951. *** Display tables are now represented as char-tables.
  952. Their subtype is `display-table'.
  953. *** Case tables are now represented as char-tables.
  954. Their subtype is `case-table'.
  955. *** The value of keyboard-translate-table may now be a char-table
  956. instead of a string. Normally the char-tables used for this purpose
  957. have the subtype `keyboard-translate-table', but that is not required.
  958. *** A new data type called a bool-vector is a vector of values
  959. that are either t or nil. To create one, do
  960. (make-bool-vector LENGTH INITIAL-VALUE)
  961. ** You can now specify, for each marker, how it should relocate when
  962. text is inserted at the place where the marker points. This is called
  963. the "insertion type" of the marker.
  964. To set the insertion type, do (set-marker-insertion-type MARKER TYPE).
  965. If TYPE is t, it means the marker advances when text is inserted. If
  966. TYPE is nil, it means the marker does not advance. (In Emacs 19.29,
  967. markers did not advance.)
  968. The function marker-insertion-type reports the insertion type of a
  969. given marker. The function copy-marker takes a second argument TYPE
  970. which specifies the insertion type of the new copied marker.
  971. ** When you create an overlay, you can specify the insertion type of
  972. the beginning and of the end. To do this, you can use two new
  973. arguments to make-overlay: front-advance and rear-advance.
  974. ** The new function overlays-in returns a list of the overlays that
  975. overlap a specified range of the buffer. The returned list includes
  976. empty overlays at the beginning of this range, as well as within the
  977. range.
  978. ** The new hook window-scroll-functions is run when a window has been
  979. scrolled. The functions in this list are called just before
  980. redisplay, after the new window-start has been computed. Each function
  981. is called with two arguments--the window that has been scrolled, and its
  982. new window-start position.
  983. This hook is useful for on-the-fly fontification and other features
  984. that affect how the redisplayed text will look when it is displayed.
  985. The window-end value of the window is not valid when these functions
  986. are called. The computation of window-end is byproduct of actual
  987. redisplay of the window contents, which means it has not yet happened
  988. when the hook is run. Computing window-end specially in advance for
  989. the sake of these functions would cause a slowdown.
  990. The hook functions can determine where the text on the window will end
  991. by calling vertical-motion starting with the window-start position.
  992. ** The new hook redisplay-end-trigger-functions is run whenever
  993. redisplay in window uses text that extends past a specified end
  994. trigger position. You set the end trigger position with the function
  995. set-window-redisplay-end-trigger. The functions are called with two
  996. arguments: the window, and the end trigger position. Storing nil for
  997. the end trigger position turns off the feature, and the trigger value
  998. is automatically reset to nil just after the hook is run.
  999. You can use the function window-redisplay-end-trigger to read a
  1000. window's current end trigger value.
  1001. ** The new function insert-file-contents-literally inserts the
  1002. contents of a file without any character set translation or decoding.
  1003. ** The new function safe-length computes the length of a list.
  1004. It never gets an error--it treats any non-list like nil.
  1005. If given a circular list, it returns an upper bound for the number
  1006. of elements before the circularity.
  1007. ** replace-match now takes a fifth argument, SUBEXP. If SUBEXP is
  1008. non-nil, that says to replace just subexpression number SUBEXP of the
  1009. regexp that was matched, not the entire match. For example, after
  1010. matching `foo \(ba*r\)' calling replace-match with 1 as SUBEXP means
  1011. to replace just the text that matched `\(ba*r\)'.
  1012. ** The new keymap special-event-map defines bindings for certain
  1013. events that should be handled at a very low level--as soon as they
  1014. are read. The read-event function processes these events itself,
  1015. and never returns them.
  1016. Events that are handled in this way do not echo, they are never
  1017. grouped into key sequences, and they never appear in the value of
  1018. last-command-event or (this-command-keys). They do not discard a
  1019. numeric argument, they cannot be unread with unread-command-events,
  1020. they may not appear in a keyboard macro, and they are not recorded
  1021. in a keyboard macro while you are defining one.
  1022. These events do, however, appear in last-input-event immediately after
  1023. they are read, and this is the way for the event's definition to find
  1024. the actual event.
  1025. The events types iconify-frame, make-frame-visible and delete-frame
  1026. are normally handled in this way.
  1027. ** encode-time now supports simple date arithmetic by means of
  1028. out-of-range values for its SEC, MINUTE, HOUR, DAY, and MONTH
  1029. arguments; for example, day 0 means the day preceding the given month.
  1030. Also, the ZONE argument can now be a TZ-style string.
  1031. ** command-execute and call-interactively now accept an optional third
  1032. argument KEYS. If specified and non-nil, this specifies the key
  1033. sequence containing the events that were used to invoke the command.
  1034. ** The environment variable NAME, if set, now specifies the value of
  1035. (user-full-name), when Emacs starts up.
  1036. * User Editing Changes in Emacs 19.29
  1037. ** If you run out of memory.
  1038. If you get the error message "Virtual memory exhausted", type C-x s.
  1039. That way of saving files has the least additional memory needs. Emacs
  1040. 19.29 keeps a reserve of memory which it makes available when this
  1041. error happens; that is to ensure that C-x s can complete its work.
  1042. Once you have saved your data, you can exit and restart Emacs, or use
  1043. M-x kill-some-buffers to free up space. If you kill buffers
  1044. containing a substantial amount of text, you can go on editing.
  1045. Do not use M-x buffer-menu to save or kill buffers when you are out of
  1046. memory, because that needs a fair amount memory itself and you may not
  1047. have enough to get it started.
  1048. ** The format of compiled files has changed incompatibly.
  1049. Byte-compiled files made with Emacs 19.29 normally use a new format
  1050. that will not work in older Emacs versions. You can compile files
  1051. in the old format if you wish; see "Changes in compilation," below.
  1052. ** Emacs 19.29 supports the DEC Alpha.
  1053. ** Emacs runs on Windows NT.
  1054. This port does not yet support windowing features. It works like a
  1055. text-only terminal, but it does support a mouse.
  1056. In general, support for non-GNU-like operating systems is not a high
  1057. priority for the GNU project. We merged in the support for Windows NT
  1058. because that system is expected to be very widely used.
  1059. ** Emacs supports Motif widgets.
  1060. You can build Emacs with Motif widgets by specifying --with-x-toolkit=motif
  1061. when you run configure.
  1062. Motif defines collections of windows called "tab groups", and uses the
  1063. tab key and the cursor keys to move between windows in a tab group.
  1064. Emacs naturally does not support this--it has other uses for the tab
  1065. key and cursor keys. Emacs does not support Motif accelerators either,
  1066. because it uses its normal keymap event binding features.
  1067. We give higher priority to operation with a free widget set than to
  1068. operation with a proprietary one.
  1069. ** If Emacs or the computer crashes, you can recover all the files you
  1070. were editing from their auto save files by typing M-x recover-session.
  1071. This first shows you a list of recorded interrupted sessions. Move
  1072. point to the one you choose, and type C-c C-c.
  1073. Then recover-session asks about each of the files that were being
  1074. edited during that session, asking whether to recover that file. If
  1075. you answer y, it calls recover-file, which works in its normal
  1076. fashion. It shows the dates of the original file and its auto-save
  1077. file and asks once again whether to recover that file.
  1078. When recover-session is done, the files you've chosen to recover
  1079. are present in Emacs buffers. You should then save them.
  1080. Only this--saving them--updates the files themselves.
  1081. ** Menu bar menus now stay up if you click on the menu bar item and
  1082. release the mouse button within a certain amount of time. This is in
  1083. the X Toolkit version.
  1084. ** The menu bar menus have been rearranged and split up to make for a
  1085. better organization. Two new menu bar menus, Tools and Search,
  1086. contain items that were formerly in the Files and Edit menus, as well
  1087. as some that did not exist in the menu bar menus before.
  1088. ** Emacs can now display on more than one X display at the same time.
  1089. Use the command make-frame-on-display to create a frame, specifying
  1090. which display to use.
  1091. ** M-x talk-connect sets up a multi-user talk connection
  1092. via Emacs. Specify the X display of the person you want to talk to.
  1093. You can talk to any number of people (within reason) by using
  1094. this command repeatedly to specify different people.
  1095. Emacs does not make a fuss about security; the people who you talk to
  1096. can use all Emacs features, including visiting and editing files. If
  1097. this frightens you, don't use M-x talk-connect.
  1098. ** The range of integer values is now at least 2**28 on all machines.
  1099. This means the maximum size of a buffer is at least 2**27-1,
  1100. or 134,217,727.
  1101. ** When you start Emacs, you can now specify option names in
  1102. long GNU form (starting with `--') and you can abbreviate the names.
  1103. You can now specify the options in any order.
  1104. The previous requirements about the order of options
  1105. have been eliminated.
  1106. The -L or --directory option lets you specify an additional
  1107. directory to search for Lisp libraries (including libraries
  1108. that you specify with the -l or --load options).
  1109. ** Incremental search in Transient Mark mode, if the mark is already
  1110. active, now leaves the mark active and does not change its position.
  1111. You can make incremental search deactivate the mark once again with
  1112. this expression.
  1113. (add-hook 'isearch-mode-hook 'deactivate-mark)
  1114. ** C-delete now deletes a word backwards. This is for compatibility
  1115. with some editors in the PC world. (This key is not available on
  1116. ordinary ASCII terminals, because C-delete is not a distinct character
  1117. on those terminals.)
  1118. ** ESC ESC ESC is now a command to escape from various temporary modes
  1119. and states.
  1120. ** M-x pc-bindings-mode sets up bindings compatible with many PC editors.
  1121. In particular, Delete and its variants delete forward instead of backward.
  1122. Use Backspace to delete backward.
  1123. C-Backspace kills backward a word (as C-Delete normally would).
  1124. M-Backspace does undo.
  1125. Home and End move to beginning and end of line
  1126. C-Home and C-End move to beginning and end of buffer.
  1127. ** The key sequence for evaluating a Lisp expression using the minibuffer
  1128. is now ESC :. It used to be ESC ESC, but we moved it to make way for
  1129. the ESC ESC ESC feature, on the grounds that people who evaluate Lisp
  1130. expressions are experienced users and can cope with a change.
  1131. If you prefer the old ESC ESC binding, put in your `~/.emacs':
  1132. (global-set-key "\e\e" 'eval-expression)
  1133. ** The f1 function key is now equivalent to the help key. This is
  1134. done with key-translation-map; delete the binding for f1 in that map
  1135. if you want to use f1 for something else.
  1136. ** Mouse-3, in the simplest case, still sets the region. But now, it
  1137. places the mark where point was, and sets point where you click.
  1138. (It used to set the mark where you click and leave point alone.)
  1139. If you position point with Mouse-1, then scroll with the scroll bar
  1140. and use Mouse-3, Mouse-3 uses the position you specified with Mouse-1
  1141. even if it has scrolled off the screen (and point is no longer there).
  1142. This makes it easier to select a region with the mouse which is bigger
  1143. than a screenful.
  1144. Any editing of the buffer, and any cursor motion or scrolling for any
  1145. reason other than the scroll bar, cancels the special state set up by
  1146. Mouse-1--so that a subsequent Mouse-3 click will use the actual value
  1147. of point.
  1148. ** C-mouse-3 now pops up a mode-specific menu of commands--normally
  1149. the same ones available in the mode's own menu bar menus.
  1150. ** C-mouse-2 now pops up a menu of faces, indentation, justification,
  1151. and certain other text properties. This menu is also available
  1152. through the menu-bar Edit menu. It is meant for use with Enriched
  1153. mode.
  1154. *** You can use this menu to