comparison etc/NEWS @ 90182:f042e7c0fe20

Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-53 Merge from emacs--cvs-trunk--0 Patches applied: * emacs--cvs-trunk--0 (patch 302-319) - Update from CVS - Merge from gnus--rel--5.10 * gnus--rel--5.10 (patch 69) - Update from CVS
author Miles Bader <miles@gnu.org>
date Fri, 20 May 2005 04:22:05 +0000
parents 62afea0771d8 e4728ae2ecf8
children 5b029ff3b08d
comparison
equal deleted inserted replaced
90181:0c828e2b0b6f 90182:f042e7c0fe20
104 ** You can build Emacs with Gtk+ widgets by specifying `--with-x-toolkit=gtk' 104 ** You can build Emacs with Gtk+ widgets by specifying `--with-x-toolkit=gtk'
105 when you run configure. This requires Gtk+ 2.0 or newer. This port 105 when you run configure. This requires Gtk+ 2.0 or newer. This port
106 provides a way to display multilingual text in menus (with some caveats). 106 provides a way to display multilingual text in menus (with some caveats).
107 107
108 --- 108 ---
109 ** The `emacsserver' program has been removed, replaced with elisp code. 109 ** The `emacsserver' program has been removed, replaced with Lisp code.
110 110
111 --- 111 ---
112 ** By default, Emacs now uses a setgid helper program to update game 112 ** By default, Emacs now uses a setgid helper program to update game
113 scores. The directory ${localstatedir}/games/emacs is the normal 113 scores. The directory ${localstatedir}/games/emacs is the normal
114 place for game scores to be stored. You can control this with the 114 place for game scores to be stored. You can control this with the
750 +++ 750 +++
751 *** The mode line position information now comes before the major mode. 751 *** The mode line position information now comes before the major mode.
752 When the file is maintained under version control, that information 752 When the file is maintained under version control, that information
753 appears between the position information and the major mode. 753 appears between the position information and the major mode.
754 754
755 *** Easy to overlook single character negation is now font-locked. 755 +++
756 You can use the new variable `font-lock-negation-char-face' and the face of 756 *** New face `escape-glyph' highlights control characters and escape glyphs.
757 the same name to customize this. Currently the cc-modes, sh-script-mode,
758 cperl-mode and make-mode support this.
759
760 +++
761 *** Control characters and escape glyphs are now shown in the new
762 escape-glyph face.
763 757
764 +++ 758 +++
765 *** Non-breaking space and hyphens are now prefixed with an escape 759 *** Non-breaking space and hyphens are now prefixed with an escape
766 character, unless the new user variable `show-nonbreak-escape' is set 760 character, unless the new user variable `show-nonbreak-escape' is set
767 to nil. 761 to nil.
892 *** font-lock: in modes like C and Lisp where the fontification assumes that 886 *** font-lock: in modes like C and Lisp where the fontification assumes that
893 an open-paren in column 0 is always outside of any string or comment, 887 an open-paren in column 0 is always outside of any string or comment,
894 font-lock now highlights any such open-paren-in-column-zero in bold-red 888 font-lock now highlights any such open-paren-in-column-zero in bold-red
895 if it is inside a string or a comment, to indicate that it can cause 889 if it is inside a string or a comment, to indicate that it can cause
896 trouble with fontification and/or indentation. 890 trouble with fontification and/or indentation.
891
892 +++
893 *** New standard font-lock face `font-lock-preprocessor-face'.
894
895 *** New standard font-lock face `font-lock-comment-delimiter-face'.
896
897 *** Easy to overlook single character negation can now be font-locked.
898 You can use the new variable `font-lock-negation-char-face' and the face of
899 the same name to customize this. Currently the cc-modes, sh-script-mode,
900 cperl-mode and make-mode support this.
897 901
898 --- 902 ---
899 *** The default settings for JIT stealth lock parameters are changed. 903 *** The default settings for JIT stealth lock parameters are changed.
900 The default value for the user option jit-lock-stealth-time is now 16 904 The default value for the user option jit-lock-stealth-time is now 16
901 instead of 3, and the default value of jit-lock-stealth-nice is now 905 instead of 3, and the default value of jit-lock-stealth-nice is now
1025 --- 1029 ---
1026 *** mouse-wheels can now scroll a specific fraction of the window 1030 *** mouse-wheels can now scroll a specific fraction of the window
1027 (rather than a fixed number of lines) and the scrolling is `progressive'. 1031 (rather than a fixed number of lines) and the scrolling is `progressive'.
1028 1032
1029 --- 1033 ---
1030 *** Unexpected yanking of text due to accidental clicking on the mouse 1034 *** Emacs ignores mouse-2 clicks while the mouse wheel is being moved.
1031 wheel button (typically mouse-2) during wheel scrolling is now avoided. 1035
1032 This behavior can be customized via the mouse-wheel-click-event and 1036 People tend to push the mouse wheel (which counts as a mouse-2 click)
1037 unintentionally while turning the wheel, so these clicks are now
1038 ignored. You can customize this with the mouse-wheel-click-event and
1033 mouse-wheel-inhibit-click-time variables. 1039 mouse-wheel-inhibit-click-time variables.
1034 1040
1035 +++ 1041 +++
1036 *** Under X, mouse-wheel-mode is turned on by default. 1042 *** Under X, mouse-wheel-mode is turned on by default.
1037 1043
1350 modes that can use `next-error'). In this mode, cursor motion in the 1356 modes that can use `next-error'). In this mode, cursor motion in the
1351 buffer causes automatic display in another window of the corresponding 1357 buffer causes automatic display in another window of the corresponding
1352 matches, compilation errors, etc. This minor mode can be toggled with 1358 matches, compilation errors, etc. This minor mode can be toggled with
1353 C-c C-f. 1359 C-c C-f.
1354 1360
1361 *** When the left fringe is displayed, an arrow points to current message in
1362 the compilation buffer.
1363
1364 *** The new variable `compilation-context-lines' controls lines of leading
1365 context before the current message. If nil and the left fringe is displayed,
1366 it doesn't scroll the compilation output window. If there is no left fringe,
1367 no arrow is displayed and a value of nil means display the message at the top
1368 of the window.
1369
1355 ** Occur mode changes: 1370 ** Occur mode changes:
1356 1371
1357 +++ 1372 +++
1358 *** In the *Occur* buffer, `o' switches to it in another window, and 1373 *** In the *Occur* buffer, `o' switches to it in another window, and
1359 C-o displays the current line's occurrence in another window without 1374 C-o displays the current line's occurrence in another window without
1497 *** There's a new support for colors on `rxvt' terminal emulator. 1512 *** There's a new support for colors on `rxvt' terminal emulator.
1498 1513
1499 * New Modes and Packages in Emacs 22.1 1514 * New Modes and Packages in Emacs 22.1
1500 1515
1501 +++ 1516 +++
1502 ** New package benchmark.el contains simple support for convenient
1503 timing measurements of code (including the garbage collection component).
1504
1505 +++
1506 ** Filesets are collections of files. You can define a fileset in 1517 ** Filesets are collections of files. You can define a fileset in
1507 various ways, such as based on a directory tree or based on 1518 various ways, such as based on a directory tree or based on
1508 program files that include other program files. 1519 program files that include other program files.
1509 1520
1510 Once you have defined a fileset, you can perform various operations on 1521 Once you have defined a fileset, you can perform various operations on
1518 Emacs Lisp. Its documentation is in a separate manual; within Emacs, 1529 Emacs Lisp. Its documentation is in a separate manual; within Emacs,
1519 type "C-h i m calc RET" to read that manual. A reference card is 1530 type "C-h i m calc RET" to read that manual. A reference card is
1520 available in `etc/calccard.tex' and `etc/calccard.ps'. 1531 available in `etc/calccard.tex' and `etc/calccard.ps'.
1521 1532
1522 --- 1533 ---
1523 ** `cfengine-mode' is a major mode for editing GNU Cfengine 1534 ** The new package ibuffer provides a powerful, completely
1524 configuration files. 1535 customizable replacement for buff-menu.el.
1525 1536
1526 +++ 1537 ---
1527 ** The new package conf-mode.el handles thousands of configuration files, with 1538 ** Ido mode is now part of the Emacs distribution.
1528 varying syntaxes for comments (;, #, //, /* */ or !), assignment (var = value, 1539
1529 var : value, var value or keyword var value) and sections ([section] or 1540 The ido (interactively do) package is an extension of the iswitchb
1530 section { }). Many files under /etc/, or with suffixes like .cf through 1541 package to do interactive opening of files and directories in addition
1531 .config, .properties (Java), .desktop (KDE/Gnome), .ini and many others are 1542 to interactive buffer switching. Ido is a superset of iswitchb (with
1532 recognized. 1543 a few exceptions), so don't enable both packages.
1544
1545 +++
1546 ** Image files are normally visited in Image mode, which lets you toggle
1547 between viewing the image and viewing the text using C-c C-c.
1533 1548
1534 --- 1549 ---
1535 ** CUA mode is now part of the Emacs distribution. 1550 ** CUA mode is now part of the Emacs distribution.
1536 1551
1537 The new cua package provides CUA-like keybindings using C-x for 1552 The new cua package provides CUA-like keybindings using C-x for
1540 keys (like pc-selection-mode) and typed text replaces the active 1555 keys (like pc-selection-mode) and typed text replaces the active
1541 region (like delete-selection-mode). Do not enable these modes with 1556 region (like delete-selection-mode). Do not enable these modes with
1542 cua-mode. Customize the variable `cua-mode' to enable cua. 1557 cua-mode. Customize the variable `cua-mode' to enable cua.
1543 1558
1544 In addition, cua provides unified rectangle support with visible 1559 In addition, cua provides unified rectangle support with visible
1545 rectangle highlighting: Use S-return to start a rectangle, extend it 1560 rectangle highlighting: Use C-return to start a rectangle, extend it
1546 using the movement commands (or mouse-3), and cut or copy it using C-x 1561 using the movement commands (or mouse-3), and cut or copy it using C-x
1547 or C-c (using C-w and M-w also works). 1562 or C-c (using C-w and M-w also works).
1548 1563
1549 Use M-o and M-c to `open' or `close' the rectangle, use M-b or M-f, to 1564 Use M-o and M-c to `open' or `close' the rectangle, use M-b or M-f, to
1550 fill it with blanks or another character, use M-u or M-l to upcase or 1565 fill it with blanks or another character, use M-u or M-l to upcase or
1590 be displayed by customizing the variable `file-name-shadow-properties'. 1605 be displayed by customizing the variable `file-name-shadow-properties'.
1591 1606
1592 +++ 1607 +++
1593 ** The new package flymake.el does on-the-fly syntax checking of program 1608 ** The new package flymake.el does on-the-fly syntax checking of program
1594 source files. See the Flymake's Info manual for more details. 1609 source files. See the Flymake's Info manual for more details.
1595
1596 ---
1597 ** The new Lisp library fringe.el controls the appearance of fringes.
1598
1599 ---
1600 ** GDB-Script-mode is used for files like .gdbinit.
1601
1602 ---
1603 ** The new package ibuffer provides a powerful, completely
1604 customizable replacement for buff-menu.el.
1605
1606 ---
1607 ** Ido mode is now part of the Emacs distribution.
1608
1609 The ido (interactively do) package is an extension of the iswitchb
1610 package to do interactive opening of files and directories in addition
1611 to interactive buffer switching. Ido is a superset of iswitchb (with
1612 a few exceptions), so don't enable both packages.
1613
1614 +++
1615 ** Image files are normally visited in Image mode, which lets you toggle
1616 between viewing the image and viewing the text using C-c C-c.
1617 1610
1618 +++ 1611 +++
1619 ** The new keypad setup package provides several common bindings for 1612 ** The new keypad setup package provides several common bindings for
1620 the numeric keypad which is available on most keyboards. The numeric 1613 the numeric keypad which is available on most keyboards. The numeric
1621 keypad typically has the digits 0 to 9, a decimal point, keys marked 1614 keypad typically has the digits 0 to 9, a decimal point, keys marked
1672 1665
1673 Keyboard macros can now be debugged and edited interactively. 1666 Keyboard macros can now be debugged and edited interactively.
1674 C-x C-k SPC steps through the last keyboard macro one key sequence 1667 C-x C-k SPC steps through the last keyboard macro one key sequence
1675 at a time, prompting for the actions to take. 1668 at a time, prompting for the actions to take.
1676 1669
1670 ---
1671 ** New minor mode, Visible mode, toggles invisibility in the current buffer.
1672 When enabled, it makes all invisible text visible. When disabled, it
1673 restores the previous value of `buffer-invisibility-spec'.
1674
1675 +++
1676 ** The wdired.el package allows you to use normal editing commands on Dired
1677 buffers to change filenames, permissions, etc...
1678
1677 +++ 1679 +++
1678 ** The new package longlines.el provides a minor mode for editing text 1680 ** The new package longlines.el provides a minor mode for editing text
1679 files composed of long lines, based on the `use-hard-newlines' 1681 files composed of long lines, based on the `use-hard-newlines'
1680 mechanism. The long lines are broken up by inserting soft newlines, 1682 mechanism. The long lines are broken up by inserting soft newlines,
1681 which are automatically removed when saving the file to disk or 1683 which are automatically removed when saving the file to disk or
1692 with a Print sub-menu which allows you to preview output through 1694 with a Print sub-menu which allows you to preview output through
1693 ghostview, use ghostscript to print (if you don't have a PostScript 1695 ghostview, use ghostscript to print (if you don't have a PostScript
1694 printer) or send directly to printer a PostScript code generated by 1696 printer) or send directly to printer a PostScript code generated by
1695 `ps-print' package. Use M-x pr-help for more information. 1697 `ps-print' package. Use M-x pr-help for more information.
1696 1698
1697 +++
1698 ** The new python.el package is used to edit Python and Jython programs.
1699
1700 --- 1699 ---
1701 ** The minor mode Reveal mode makes text visible on the fly as you 1700 ** The minor mode Reveal mode makes text visible on the fly as you
1702 move your cursor into hidden regions of the buffer. 1701 move your cursor into hidden regions of the buffer.
1703 It should work with any package that uses overlays to hide parts 1702 It should work with any package that uses overlays to hide parts
1704 of a buffer, such as outline-minor-mode, hs-minor-mode, hide-ifdef-mode, ... 1703 of a buffer, such as outline-minor-mode, hs-minor-mode, hide-ifdef-mode, ...
1752 If you want to disable Tramp you should set 1751 If you want to disable Tramp you should set
1753 1752
1754 (setq tramp-default-method "ftp") 1753 (setq tramp-default-method "ftp")
1755 1754
1756 --- 1755 ---
1757 ** The library tree-widget.el provides a new widget to display a set
1758 of hierarchical data as an outline. For example, the tree-widget is
1759 well suited to display a hierarchy of directories and files.
1760
1761 ---
1762 ** The URL package (which had been part of W3) is now part of Emacs. 1756 ** The URL package (which had been part of W3) is now part of Emacs.
1763 1757
1764 --- 1758 ---
1765 ** New minor mode, Visible mode, toggles invisibility in the current buffer. 1759 ** `cfengine-mode' is a major mode for editing GNU Cfengine
1766 When enabled, it makes all invisible text visible. When disabled, it 1760 configuration files.
1767 restores the previous value of `buffer-invisibility-spec'. 1761
1768 1762 +++
1769 +++ 1763 ** The new package conf-mode.el handles thousands of configuration files, with
1770 ** The wdired.el package allows you to use normal editing commands on Dired 1764 varying syntaxes for comments (;, #, //, /* */ or !), assignment (var = value,
1771 buffers to change filenames, permissions, etc... 1765 var : value, var value or keyword var value) and sections ([section] or
1766 section { }). Many files under /etc/, or with suffixes like .cf through
1767 .config, .properties (Java), .desktop (KDE/Gnome), .ini and many others are
1768 recognized.
1769
1770 ---
1771 ** GDB-Script-mode is used for files like .gdbinit.
1772
1773 +++
1774 ** The new python.el package is used to edit Python and Jython programs.
1772 1775
1773 --- 1776 ---
1774 ** The TCL package tcl-mode.el was replaced by tcl.el. 1777 ** The TCL package tcl-mode.el was replaced by tcl.el.
1775 This was actually done in Emacs-21.1, and was not documented. 1778 This was actually done in Emacs-21.1, and was not documented.
1776
1777 ** The new package bindat.el provides functions to unpack and pack
1778 binary data structures, such as network packets, to and from Lisp
1779 data structures.
1780
1781 +++
1782 ** The new package button.el implements simple and fast `clickable buttons'
1783 in emacs buffers. `buttons' are much lighter-weight than the `widgets'
1784 implemented by widget.el, and can be used by lisp code that doesn't
1785 require the full power of widgets. Emacs uses buttons for such things
1786 as help and apropos buffers.
1787
1788 ---
1789 ** master-mode.el implements a minor mode for scrolling a slave
1790 buffer without leaving your current buffer, the master buffer.
1791
1792 It can be used by sql.el, for example: the SQL buffer is the master
1793 and its SQLi buffer is the slave. This allows you to scroll the SQLi
1794 buffer containing the output from the SQL buffer containing the
1795 commands.
1796
1797 This is how to use sql.el and master.el together: the variable
1798 sql-buffer contains the slave buffer. It is a local variable in the
1799 SQL buffer.
1800
1801 (add-hook 'sql-mode-hook
1802 (function (lambda ()
1803 (master-mode t)
1804 (master-set-slave sql-buffer))))
1805 (add-hook 'sql-set-sqli-hook
1806 (function (lambda ()
1807 (master-set-slave sql-buffer))))
1808
1809 +++
1810 ** New Lisp library testcover.el works with edebug to help you determine
1811 whether you've tested all your Lisp code. Function testcover-start
1812 instruments all functions in a given file. Then test your code. Function
1813 testcover-mark-all adds overlay "splotches" to the Lisp file's buffer to
1814 show where coverage is lacking. Command testcover-next-mark (bind it to
1815 a key!) will move point forward to the next spot that has a splotch.
1816
1817 Normally, a red splotch indicates the form was never completely
1818 evaluated; a brown splotch means it always evaluated to the same
1819 value. The red splotches are skipped for forms that can't possibly
1820 complete their evaluation, such as `error'. The brown splotches are
1821 skipped for forms that are expected to always evaluate to the same
1822 value, such as (setq x 14).
1823
1824 For difficult cases, you can add do-nothing macros to your code to
1825 help out the test coverage tool. The macro `noreturn' suppresses a
1826 red splotch. It is an error if the argument to `noreturn' does
1827 return. The macro 1value suppresses a brown splotch for its argument.
1828 This macro is a no-op except during test-coverage -- then it signals
1829 an error if the argument actually returns differing values.
1830 1779
1831 * Changes in Specialized Modes and Packages in Emacs 22.1: 1780 * Changes in Specialized Modes and Packages in Emacs 22.1:
1832 1781
1833 +++ 1782 ** Makefile mode has submodes for automake, gmake, makepp and BSD make.
1834 ** In Outline mode, hide-body no longer hides lines at the top 1783
1784 The former two couldn't be differentiated before, and the latter two
1785 are new. Font-locking is robust now and offers new customizable
1786 faces.
1787
1788 +++
1789 ** In Outline mode, `hide-body' no longer hides lines at the top
1835 of the file that precede the first header line. 1790 of the file that precede the first header line.
1836 1791
1837 +++ 1792 +++
1838 ** Telnet now prompts you for a port number with C-u M-x telnet. 1793 ** Telnet now prompts you for a port number with C-u M-x telnet.
1839 1794
1840 --- 1795 ---
1841 ** The terminal emulation code in term.el has been improved, it can 1796 ** The terminal emulation code in term.el has been improved; it can
1842 run most curses applications now. 1797 run most curses applications now.
1843 1798
1844 +++ 1799 +++
1845 ** M-x diff uses diff-mode instead of compilation-mode. 1800 ** M-x diff uses Diff mode instead of Compilation mode.
1846 1801
1847 +++ 1802 +++
1848 ** You can now customize fill-nobreak-predicate to control where 1803 ** You can now customize `fill-nobreak-predicate' to control where
1849 filling can break lines. The value is now normally a list of 1804 filling can break lines. The value is now normally a list of
1850 functions, but it can also be a single function, for compatibility. 1805 functions, but it can also be a single function, for compatibility.
1851 1806
1852 We provide two sample predicates, fill-single-word-nobreak-p and 1807 Emacs provide two predicates, `fill-single-word-nobreak-p' and
1853 fill-french-nobreak-p, for use in the value of fill-nobreak-predicate. 1808 `fill-french-nobreak-p', for use as the value of
1809 `fill-nobreak-predicate'.
1854 1810
1855 --- 1811 ---
1856 ** M-x view-file and commands that use it now avoid interfering 1812 ** M-x view-file and commands that use it now avoid interfering
1857 with special modes such as Tar mode. 1813 with special modes such as Tar mode.
1858 1814
1859 --- 1815 ---
1860 ** Commands winner-redo and winner-undo, from winner.el, are now bound to 1816 ** Commands `winner-redo' and `winner-undo', from winner.el, are now
1861 C-c <left> and C-c <right>, respectively. This is an incompatible change. 1817 bound to C-c <left> and C-c <right>, respectively. This is an
1862 1818 incompatible change.
1863 --- 1819
1864 ** global-whitespace-mode is a new alias for whitespace-global-mode. 1820 ---
1821 ** `global-whitespace-mode' is a new alias for `whitespace-global-mode'.
1865 1822
1866 +++ 1823 +++
1867 ** M-x compare-windows now can automatically skip non-matching text to 1824 ** M-x compare-windows now can automatically skip non-matching text to
1868 resync points in both windows. 1825 resync points in both windows.
1869 1826
1870 +++ 1827 +++
1871 ** New user option `add-log-always-start-new-record'. 1828 ** New user option `add-log-always-start-new-record'.
1829
1872 When this option is enabled, M-x add-change-log-entry always 1830 When this option is enabled, M-x add-change-log-entry always
1873 starts a new record regardless of when the last record is. 1831 starts a new record regardless of when the last record is.
1874 1832
1875 --- 1833 ---
1876 ** PO translation files are decoded according to their MIME headers 1834 ** PO translation files are decoded according to their MIME headers
1878 1836
1879 ** Info mode changes: 1837 ** Info mode changes:
1880 1838
1881 +++ 1839 +++
1882 *** A numeric prefix argument of `info' selects an Info buffer 1840 *** A numeric prefix argument of `info' selects an Info buffer
1883 with the number appended to the *info* buffer name (e.g. "*info*<2>"). 1841 with the number appended to the `*info*' buffer name (e.g. "*info*<2>").
1884 1842
1885 --- 1843 ---
1886 *** isearch in Info uses Info-search and searches through multiple nodes. 1844 *** isearch in Info uses Info-search and searches through multiple nodes.
1845
1887 Before leaving the initial Info node isearch fails once with the error 1846 Before leaving the initial Info node isearch fails once with the error
1888 message [initial node], and with subsequent C-s/C-r continues through 1847 message [initial node], and with subsequent C-s/C-r continues through
1889 other nodes. When isearch fails for the rest of the manual, it wraps 1848 other nodes. When isearch fails for the rest of the manual, it wraps
1890 aroung the whole manual to the top/final node. The user option 1849 aroung the whole manual to the top/final node. The user option
1891 `Info-isearch-search' controls whether to use Info-search for isearch, 1850 `Info-isearch-search' controls whether to use Info-search for isearch,
1920 *** http and ftp links in Info are now operational: they look like cross 1879 *** http and ftp links in Info are now operational: they look like cross
1921 references and following them calls `browse-url'. 1880 references and following them calls `browse-url'.
1922 1881
1923 +++ 1882 +++
1924 *** Info now hides node names in menus and cross references by default. 1883 *** Info now hides node names in menus and cross references by default.
1884
1925 If you prefer the old behavior, you can set the new user option 1885 If you prefer the old behavior, you can set the new user option
1926 `Info-hide-note-references' to nil. 1886 `Info-hide-note-references' to nil.
1927 1887
1928 --- 1888 ---
1929 *** Images in Info pages are supported. 1889 *** Images in Info pages are supported.
1890
1930 Info pages show embedded images, in Emacs frames with image support. 1891 Info pages show embedded images, in Emacs frames with image support.
1931 Info documentation that includes images, processed with makeinfo 1892 Info documentation that includes images, processed with makeinfo
1932 version 4.7 or newer, compiles to Info pages with embedded images. 1893 version 4.7 or newer, compiles to Info pages with embedded images.
1933 1894
1934 +++ 1895 +++
1935 *** The default value for `Info-scroll-prefer-subnodes' is now nil. 1896 *** The default value for `Info-scroll-prefer-subnodes' is now nil.
1936 1897
1937 --- 1898 ---
1938 *** Info-index offers completion. 1899 *** `Info-index' offers completion.
1939 1900
1940 ** Lisp mode changes: 1901 ** Lisp mode changes:
1941 1902
1942 --- 1903 ---
1943 *** Lisp mode now uses font-lock-doc-face for the docstrings. 1904 *** Lisp mode now uses `font-lock-doc-face' for doc strings.
1944 1905
1945 +++ 1906 +++
1946 *** A prefix argument of C-M-q in Emacs Lisp mode pretty-printifies the 1907 *** C-u C-M-q in Emacs Lisp mode pretty-prints the list after point.
1947 list starting after point.
1948 1908
1949 *** New features in evaluation commands 1909 *** New features in evaluation commands
1950 1910
1951 +++ 1911 +++
1952 *** The function `eval-defun' (C-M-x) called on defface reinitializes 1912 **** The function `eval-defun' (C-M-x) called on defface reinitializes
1953 the face to the value specified in the defface expression. 1913 the face to the value specified in the defface expression.
1954 1914
1955 +++ 1915 +++
1956 *** Typing C-x C-e twice prints the value of the integer result 1916 **** Typing C-x C-e twice prints the value of the integer result
1957 in additional formats (octal, hexadecimal, character) specified 1917 in additional formats (octal, hexadecimal, character) specified
1958 by the new function `eval-expression-print-format'. The same 1918 by the new function `eval-expression-print-format'. The same
1959 function also defines the result format for `eval-expression' (M-:), 1919 function also defines the result format for `eval-expression' (M-:),
1960 `eval-print-last-sexp' (C-j) and some edebug evaluation functions. 1920 `eval-print-last-sexp' (C-j) and some edebug evaluation functions.
1961 1921
2077 now handled like "namespace" in C++: They are given syntactic symbols 2037 now handled like "namespace" in C++: They are given syntactic symbols
2078 module-open, module-close, inmodule, composition-open, 2038 module-open, module-close, inmodule, composition-open,
2079 composition-close, and incomposition. 2039 composition-close, and incomposition.
2080 2040
2081 *** New functions to do hungry delete without enabling hungry delete mode. 2041 *** New functions to do hungry delete without enabling hungry delete mode.
2082 The functions c-hungry-backspace and c-hungry-delete-forward can be 2042 The functions `c-hungry-backspace' and `c-hungry-delete-forward' can be
2083 bound to keys to get this feature without toggling a mode. 2043 bound to keys to get this feature without toggling a mode.
2084 Contributed by Kevin Ryde. 2044
2085 2045 *** Better control over `require-final-newline'.
2086 *** Better control over require-final-newline. The variable that 2046
2087 controls how to handle a final newline when the buffer is saved, 2047 The variable `c-require-final-newline' specifies which of the modes
2088 require-final-newline, is now customizable on a per-mode basis through 2048 implemented by CC mode should insert final newlines. Its value is a
2089 c-require-final-newline. That is a list of modes, and only those 2049 list of modes, and only those modes should do it. By default the list
2090 modes set require-final-newline. By default that's C, C++ and 2050 includes C, C++ and Objective-C modes.
2091 Objective-C. 2051
2092 2052 Whichever modes are in this list will set `require-final-newline'
2093 The specified modes set require-final-newline based on 2053 based on `mode-require-final-newline'.
2094 mode-require-final-newline, as usual.
2095 2054
2096 *** Format change for syntactic context elements. 2055 *** Format change for syntactic context elements.
2097 The elements in the syntactic context returned by c-guess-basic-syntax 2056
2098 and stored in c-syntactic-context has been changed somewhat to allow 2057 The elements in the syntactic context returned by `c-guess-basic-syntax'
2058 and stored in `c-syntactic-context' has been changed somewhat to allow
2099 attaching more information. They are now lists instead of single cons 2059 attaching more information. They are now lists instead of single cons
2100 cells. E.g. a line that previously had the syntactic analysis 2060 cells. E.g. a line that previously had the syntactic analysis
2101 2061
2102 ((inclass . 11) (topmost-intro . 13)) 2062 ((inclass . 11) (topmost-intro . 13))
2103 2063
2106 ((inclass 11) (topmost-intro 13)) 2066 ((inclass 11) (topmost-intro 13))
2107 2067
2108 In some cases there are more than one position given for a syntactic 2068 In some cases there are more than one position given for a syntactic
2109 symbol. 2069 symbol.
2110 2070
2111 This change might affect code that call c-guess-basic-syntax directly, 2071 This change might affect code that call `c-guess-basic-syntax' directly,
2112 and custom lineup functions if they use c-syntactic-context. However, 2072 and custom lineup functions if they use `c-syntactic-context'. However,
2113 the argument given to lineup functions is still a single cons cell 2073 the argument given to lineup functions is still a single cons cell
2114 with nil or an integer in the cdr. 2074 with nil or an integer in the cdr.
2115 2075
2116 *** API changes for derived modes. 2076 *** API changes for derived modes.
2077
2117 There have been extensive changes "under the hood" which can affect 2078 There have been extensive changes "under the hood" which can affect
2118 derived mode writers. Some of these changes are likely to cause 2079 derived mode writers. Some of these changes are likely to cause
2119 incompatibilities with existing derived modes, but on the other hand 2080 incompatibilities with existing derived modes, but on the other hand
2120 care has now been taken to make it possible to extend and modify CC 2081 care has now been taken to make it possible to extend and modify CC
2121 Mode with less risk of such problems in the future. 2082 Mode with less risk of such problems in the future.
2123 **** New language variable system. 2084 **** New language variable system.
2124 See the comment blurb near the top of cc-langs.el. 2085 See the comment blurb near the top of cc-langs.el.
2125 2086
2126 **** New initialization functions. 2087 **** New initialization functions.
2127 The initialization procedure has been split up into more functions to 2088 The initialization procedure has been split up into more functions to
2128 give better control: c-basic-common-init, c-font-lock-init, and 2089 give better control: `c-basic-common-init', `c-font-lock-init', and
2129 c-init-language-vars. 2090 `c-init-language-vars'.
2130 2091
2131 *** Changes in analysis of nested syntactic constructs. 2092 *** Changes in analysis of nested syntactic constructs.
2132 The syntactic analysis engine has better handling of cases where 2093 The syntactic analysis engine has better handling of cases where
2133 several syntactic constructs appear nested on the same line. They are 2094 several syntactic constructs appear nested on the same line. They are
2134 now handled as if each construct started on a line of its own. 2095 now handled as if each construct started on a line of its own.
2150 *** Better handling of multiline macros. 2111 *** Better handling of multiline macros.
2151 2112
2152 **** Syntactic indentation inside macros. 2113 **** Syntactic indentation inside macros.
2153 The contents of multiline #define's are now analyzed and indented 2114 The contents of multiline #define's are now analyzed and indented
2154 syntactically just like other code. This can be disabled by the new 2115 syntactically just like other code. This can be disabled by the new
2155 variable c-syntactic-indentation-in-macros. A new syntactic symbol 2116 variable `c-syntactic-indentation-in-macros'. A new syntactic symbol
2156 cpp-define-intro has been added to control the initial indentation 2117 `cpp-define-intro' has been added to control the initial indentation
2157 inside #define's. 2118 inside `#define's.
2158 2119
2159 **** New lineup function c-lineup-cpp-define. 2120 **** New lineup function `c-lineup-cpp-define'.
2121
2160 Now used by default to line up macro continuation lines. The behavior 2122 Now used by default to line up macro continuation lines. The behavior
2161 of this function closely mimics the indentation one gets if the macro 2123 of this function closely mimics the indentation one gets if the macro
2162 is indented while the line continuation backslashes are temporarily 2124 is indented while the line continuation backslashes are temporarily
2163 removed. If syntactic indentation in macros is turned off, it works 2125 removed. If syntactic indentation in macros is turned off, it works
2164 much line c-lineup-dont-change, which was used earlier, but handles 2126 much line `c-lineup-dont-change', which was used earlier, but handles
2165 empty lines within the macro better. 2127 empty lines within the macro better.
2166 2128
2167 **** Automatically inserted newlines continues the macro if used within one. 2129 **** Automatically inserted newlines continues the macro if used within one.
2168 This applies to the newlines inserted by the auto-newline mode, and to 2130 This applies to the newlines inserted by the auto-newline mode, and to
2169 c-context-line-break and c-context-open-line. 2131 `c-context-line-break' and `c-context-open-line'.
2170 2132
2171 **** Better alignment of line continuation backslashes. 2133 **** Better alignment of line continuation backslashes.
2172 c-backslash-region tries to adapt to surrounding backslashes. New 2134 `c-backslash-region' tries to adapt to surrounding backslashes. New
2173 variable c-backslash-max-column which put a limit on how far out 2135 variable `c-backslash-max-column' which put a limit on how far out
2174 backslashes can be moved. 2136 backslashes can be moved.
2175 2137
2176 **** Automatic alignment of line continuation backslashes. 2138 **** Automatic alignment of line continuation backslashes.
2177 This is controlled by the new variable c-auto-align-backslashes. It 2139 This is controlled by the new variable `c-auto-align-backslashes'. It
2178 affects c-context-line-break, c-context-open-line and newlines 2140 affects `c-context-line-break', `c-context-open-line' and newlines
2179 inserted in auto-newline mode. 2141 inserted in Auto-Newline mode.
2180
2181 **** Line indentation works better inside macros. 2142 **** Line indentation works better inside macros.
2143
2182 Regardless whether syntactic indentation and syntactic indentation 2144 Regardless whether syntactic indentation and syntactic indentation
2183 inside macros are enabled or not, line indentation now ignores the 2145 inside macros are enabled or not, line indentation now ignores the
2184 line continuation backslashes. This is most noticeable when syntactic 2146 line continuation backslashes. This is most noticeable when syntactic
2185 indentation is turned off and there are empty lines (save for the 2147 indentation is turned off and there are empty lines (save for the
2186 backslash) in the macro. 2148 backslash) in the macro.
2187 2149
2188 *** indent-for-comment is more customizable. 2150 *** indent-for-comment is more customizable.
2189 The behavior of M-; (indent-for-comment) is now configurable through 2151 The behavior of M-; (indent-for-comment) is now configurable through
2190 the variable c-indent-comment-alist. The indentation behavior based 2152 the variable `c-indent-comment-alist'. The indentation behavior based
2191 on the preceding code on the line, e.g. to get two spaces after #else 2153 on the preceding code on the line, e.g. to get two spaces after #else
2192 and #endif but indentation to comment-column in most other cases 2154 and #endif but indentation to `comment-column' in most other cases
2193 (something which was hardcoded earlier). 2155 (something which was hardcoded earlier).
2194 2156
2195 *** New function c-context-open-line. 2157 *** New function `c-context-open-line'.
2196 It's the open-line equivalent of c-context-line-break. 2158 It's the open-line equivalent of `c-context-line-break'.
2197 2159
2198 *** New lineup functions 2160 *** New lineup functions
2199 2161
2200 **** c-lineup-string-cont 2162 **** `c-lineup-string-cont'
2201 This lineup function lines up a continued string under the one it 2163 This lineup function lines up a continued string under the one it
2202 continues. E.g: 2164 continues. E.g:
2203 2165
2204 result = prefix + "A message " 2166 result = prefix + "A message "
2205 "string."; <- c-lineup-string-cont 2167 "string."; <- c-lineup-string-cont
2206 2168
2207 **** c-lineup-cascaded-calls 2169 **** `c-lineup-cascaded-calls'
2208 Lines up series of calls separated by "->" or ".". 2170 Lines up series of calls separated by "->" or ".".
2209 2171
2210 **** c-lineup-knr-region-comment 2172 **** `c-lineup-knr-region-comment'
2211 Gives (what most people think is) better indentation of comments in 2173 Gives (what most people think is) better indentation of comments in
2212 the "K&R region" between the function header and its body. 2174 the "K&R region" between the function header and its body.
2213 2175
2214 **** c-lineup-gcc-asm-reg 2176 **** `c-lineup-gcc-asm-reg'
2215 Provides better indentation inside asm blocks. Contributed by Kevin 2177 Provides better indentation inside asm blocks.
2216 Ryde. 2178
2217 2179 **** `c-lineup-argcont'
2218 **** c-lineup-argcont
2219 Lines up continued function arguments after the preceding comma. 2180 Lines up continued function arguments after the preceding comma.
2220 Contributed by Kevin Ryde.
2221 2181
2222 *** Better caching of the syntactic context. 2182 *** Better caching of the syntactic context.
2223 CC Mode caches the positions of the opening parentheses (of any kind) 2183 CC Mode caches the positions of the opening parentheses (of any kind)
2224 of the lists surrounding the point. Those positions are used in many 2184 of the lists surrounding the point. Those positions are used in many
2225 places as anchor points for various searches. The cache is now 2185 places as anchor points for various searches. The cache is now
2235 *** Statements are recognized in a more robust way. 2195 *** Statements are recognized in a more robust way.
2236 Statements are recognized most of the time even when they occur in an 2196 Statements are recognized most of the time even when they occur in an
2237 "invalid" context, e.g. in a function argument. In practice that can 2197 "invalid" context, e.g. in a function argument. In practice that can
2238 happen when macros are involved. 2198 happen when macros are involved.
2239 2199
2240 *** Improved the way c-indent-exp chooses the block to indent. 2200 *** Improved the way `c-indent-exp' chooses the block to indent.
2241 It now indents the block for the closest sexp following the point 2201 It now indents the block for the closest sexp following the point
2242 whose closing paren ends on a different line. This means that the 2202 whose closing paren ends on a different line. This means that the
2243 point doesn't have to be immediately before the block to indent. 2203 point doesn't have to be immediately before the block to indent.
2244 Also, only the block and the closing line is indented; the current 2204 Also, only the block and the closing line is indented; the current
2245 line is left untouched. 2205 line is left untouched.
2246 2206
2247 *** Added toggle for syntactic indentation. 2207 *** Added toggle for syntactic indentation.
2248 The function c-toggle-syntactic-indentation can be used to toggle 2208 The function `c-toggle-syntactic-indentation' can be used to toggle
2249 syntactic indentation. 2209 syntactic indentation.
2250 2210
2251 --- 2211 ---
2252 ** Perl mode has a new variable `perl-indent-continued-arguments'. 2212 ** Perl mode has a new variable `perl-indent-continued-arguments'.
2253 2213
2273 `f90-end-of-block', `f90-beginning-of-block', `f90-next-block', 2233 `f90-end-of-block', `f90-beginning-of-block', `f90-next-block',
2274 `f90-previous-block', `fortran-end-of-block', 2234 `f90-previous-block', `fortran-end-of-block',
2275 `fortran-beginning-of-block'. 2235 `fortran-beginning-of-block'.
2276 2236
2277 --- 2237 ---
2278 *** F90 mode and Fortran mode have support for hs-minor-mode (hideshow). 2238 *** F90 mode and Fortran mode have support for `hs-minor-mode' (hideshow).
2279 It cannot deal with every code format, but ought to handle a sizeable 2239 It cannot deal with every code format, but ought to handle a sizeable
2280 majority. 2240 majority.
2281 2241
2282 --- 2242 ---
2283 *** The new function `f90-backslash-not-special' can be used to change 2243 *** The new function `f90-backslash-not-special' can be used to change
2318 --- 2278 ---
2319 *** verbatim environments are now highlighted in courier by font-lock 2279 *** verbatim environments are now highlighted in courier by font-lock
2320 and super/sub-scripts are made into super/sub-scripts. 2280 and super/sub-scripts are made into super/sub-scripts.
2321 2281
2322 +++ 2282 +++
2323 *** New major mode doctex-mode for *.dtx files. 2283 *** New major mode Doctex mode, for *.dtx files.
2324 2284
2325 ** BibTeX mode: 2285 ** BibTeX mode:
2326 *** The new command bibtex-url browses a URL for the BibTeX entry at 2286
2287 *** The new command `bibtex-url' browses a URL for the BibTeX entry at
2327 point (bound to C-c C-l and mouse-2, RET on clickable fields). 2288 point (bound to C-c C-l and mouse-2, RET on clickable fields).
2328 2289
2329 *** The new command bibtex-entry-update (bound to C-c C-u) updates 2290 *** The new command `bibtex-entry-update' (bound to C-c C-u) updates
2330 an existing BibTeX entry. 2291 an existing BibTeX entry.
2331 2292
2332 *** New `bibtex-entry-format' option `required-fields', enabled by default. 2293 *** New `bibtex-entry-format' option `required-fields', enabled by default.
2333 2294
2334 *** bibtex-maintain-sorted-entries can take values `plain', 2295 *** `bibtex-maintain-sorted-entries' can take values `plain',
2335 `crossref', and `entry-class' which control the sorting scheme used 2296 `crossref', and `entry-class' which control the sorting scheme used
2336 for BibTeX entries. `bibtex-sort-entry-class' controls the sorting 2297 for BibTeX entries. `bibtex-sort-entry-class' controls the sorting
2337 scheme `entry-class'. TAB completion for reference keys and 2298 scheme `entry-class'. TAB completion for reference keys and
2338 automatic detection of duplicates does not require anymore that 2299 automatic detection of duplicates does not require anymore that
2339 bibtex-maintain-sorted-entries is non-nil. 2300 `bibtex-maintain-sorted-entries' is non-nil.
2340 2301
2341 *** If the new variable bibtex-parse-keys-fast is non-nil, 2302 *** If the new variable `bibtex-parse-keys-fast' is non-nil,
2342 use fast but simplified algorithm for parsing BibTeX keys. 2303 use fast but simplified algorithm for parsing BibTeX keys.
2343 2304
2344 *** If the new variable bibtex-autoadd-commas is non-nil, 2305 *** If the new variable `bibtex-autoadd-commas' is non-nil,
2345 automatically add missing commas at end of BibTeX fields. 2306 automatically add missing commas at end of BibTeX fields.
2346 2307
2347 *** The new variable bibtex-autofill-types contains a list of entry 2308 *** The new variable `bibtex-autofill-types' contains a list of entry
2348 types for which fields are filled automatically (if possible). 2309 types for which fields are filled automatically (if possible).
2349 2310
2350 *** The new command bibtex-complete completes word fragment before 2311 *** The new command `bibtex-complete' completes word fragment before
2351 point according to context (bound to M-tab). 2312 point according to context (bound to M-tab).
2352 2313
2353 *** The new commands bibtex-find-entry and bibtex-find-crossref 2314 *** The new commands `bibtex-find-entry' and `bibtex-find-crossref'
2354 locate entries and crossref'd entries (bound to C-c C-s and C-c C-x). 2315 locate entries and crossref'd entries (bound to C-c C-s and C-c C-x).
2355 Crossref fields are clickable (bound to mouse-2, RET). 2316 Crossref fields are clickable (bound to mouse-2, RET).
2356 2317
2357 *** In BibTeX mode the command fill-paragraph (bound to M-q) fills 2318 *** In BibTeX mode the command `fill-paragraph' (M-q) fills
2358 individual fields of a BibTeX entry. 2319 individual fields of a BibTeX entry.
2359 2320
2360 *** The new variables bibtex-files and bibtex-file-path define a set 2321 *** The new variables `bibtex-files' and `bibtex-file-path' define a set
2361 of BibTeX files that are searched for entry keys. 2322 of BibTeX files that are searched for entry keys.
2362 2323
2363 *** The new command bibtex-validate-globally checks for duplicate keys 2324 *** The new command `bibtex-validate-globally' checks for duplicate keys
2364 in multiple BibTeX files. 2325 in multiple BibTeX files.
2365 2326
2366 *** The new command bibtex-copy-summary-as-kill pushes summary 2327 *** The new command `bibtex-copy-summary-as-kill' pushes summary
2367 of BibTeX entry to kill ring (bound to C-c C-t). 2328 of BibTeX entry to kill ring (bound to C-c C-t).
2368 2329
2369 +++ 2330 +++
2370 ** In Enriched mode, `set-left-margin' and `set-right-margin' are now 2331 ** In Enriched mode, `set-left-margin' and `set-right-margin' are now
2371 by default bound to `C-c [' and `C-c ]' instead of the former `C-c C-l' 2332 by default bound to `C-c [' and `C-c ]' instead of the former `C-c C-l'
2383 2344
2384 +++ 2345 +++
2385 *** The new package gdb-ui.el provides an enhanced graphical interface to 2346 *** The new package gdb-ui.el provides an enhanced graphical interface to
2386 GDB. You can interact with GDB through the GUD buffer in the usual way, but 2347 GDB. You can interact with GDB through the GUD buffer in the usual way, but
2387 there are also further buffers which control the execution and describe the 2348 there are also further buffers which control the execution and describe the
2388 state of your program. It separates the input/output of your program from 2349 state of your program. It can separate the input/output of your program from
2389 that of GDB and watches expressions in the speedbar. It also uses features of 2350 that of GDB and watches expressions in the speedbar. It also uses features of
2390 Emacs 21 such as the display margin for breakpoints, and the toolbar. 2351 Emacs 21/22 such as the the toolbar, and bitmaps in the fringe to indicate
2391 2352 breakpoints.
2392 Use M-x gdba to start GDB-UI. 2353
2393 2354 Use M-x gdb to start GDB-UI.
2394 *** GUD tooltips can be toggled independently of normal tooltips 2355
2395 with the minor mode, gud-tooltip-mode. 2356 *** The variable tooltip-gud-tips-p has been removed. GUD tooltips can now be
2357 toggled independently of normal tooltips with the minor mode
2358 `gud-tooltip-mode'.
2396 2359
2397 +++ 2360 +++
2398 *** In graphical mode, with a C program, GUD Tooltips have been extended to 2361 *** In graphical mode, with a C program, GUD Tooltips have been extended to
2399 display the #define directive associated with an identifier when program is 2362 display the #define directive associated with an identifier when program is
2400 not executing. 2363 not executing.
2416 *** Supports new jdb (Java 1.2 and later) in addition to oldjdb 2379 *** Supports new jdb (Java 1.2 and later) in addition to oldjdb
2417 (Java 1.1 jdb). 2380 (Java 1.1 jdb).
2418 2381
2419 *** The previous method of searching for source files has been 2382 *** The previous method of searching for source files has been
2420 preserved in case someone still wants/needs to use it. 2383 preserved in case someone still wants/needs to use it.
2421 Set gud-jdb-use-classpath to nil. 2384 Set `gud-jdb-use-classpath' to nil.
2422 2385
2423 Added Customization Variables 2386 Added Customization Variables
2424 2387
2425 *** gud-jdb-command-name. What command line to use to invoke jdb. 2388 *** `gud-jdb-command-name'. What command line to use to invoke jdb.
2426 2389
2427 *** gud-jdb-use-classpath. Allows selection of java source file searching 2390 *** `gud-jdb-use-classpath'. Allows selection of java source file searching
2428 method: set to t for new method, nil to scan gud-jdb-directories for 2391 method: set to t for new method, nil to scan `gud-jdb-directories' for
2429 java sources (previous method). 2392 java sources (previous method).
2430 2393
2431 *** gud-jdb-directories. List of directories to scan and search for java 2394 *** `gud-jdb-directories'. List of directories to scan and search for java
2432 classes using the original gud-jdb method (if gud-jdb-use-classpath 2395 classes using the original gud-jdb method (if `gud-jdb-use-classpath'
2433 is nil). 2396 is nil).
2434 2397
2435 Minor Improvements 2398 Minor Improvements
2436 2399
2437 *** The STARTTLS elisp wrapper (starttls.el) can now use GNUTLS 2400 *** The STARTTLS wrapper (starttls.el) can now use GNUTLS
2438 instead of the OpenSSL based "starttls" tool. For backwards 2401 instead of the OpenSSL based `starttls' tool. For backwards
2439 compatibility, it prefers "starttls", but you can toggle 2402 compatibility, it prefers `starttls', but you can toggle
2440 `starttls-use-gnutls' to switch to GNUTLS (or simply remove the 2403 `starttls-use-gnutls' to switch to GNUTLS (or simply remove the
2441 "starttls" tool). 2404 `starttls' tool).
2442 2405
2443 *** Do not allow debugger output history variable to grow without bounds. 2406 *** Do not allow debugger output history variable to grow without bounds.
2444 2407
2445 ** Auto-Revert changes: 2408 ** Auto-Revert changes:
2446 2409
2447 +++ 2410 +++
2448 *** You can now use Auto Revert mode to `tail' a file. 2411 *** You can now use Auto Revert mode to `tail' a file.
2412
2449 If point is at the end of a file buffer before reverting, Auto Revert 2413 If point is at the end of a file buffer before reverting, Auto Revert
2450 mode keeps it at the end after reverting. Similarly if point is 2414 mode keeps it at the end after reverting. Similarly if point is
2451 displayed at the end of a file buffer in any window, it stays at 2415 displayed at the end of a file buffer in any window, it stays at
2452 the end of the buffer in that window. This allows to tail a file: 2416 the end of the buffer in that window. This allows to tail a file:
2453 just put point at the end of the buffer and it stays there. This 2417 just put point at the end of the buffer and it stays there. This
2499 2463
2500 +++ 2464 +++
2501 ** Desktop package 2465 ** Desktop package
2502 2466
2503 +++ 2467 +++
2504 *** Desktop saving is now a minor mode, desktop-save-mode. Variable 2468 *** Desktop saving is now a minor mode, `desktop-save-mode'.
2505 desktop-enable is obsolete. Customize desktop-save-mode to enable desktop 2469
2506 saving. 2470 *** The variable `desktop-enable' is obsolete.
2471
2472 Customize `desktop-save-mode' to enable desktop saving.
2507 2473
2508 --- 2474 ---
2509 *** Buffers are saved in the desktop file in the same order as that in the 2475 *** Buffers are saved in the desktop file in the same order as that in the
2510 buffer list. 2476 buffer list.
2511 2477
2512 +++ 2478 +++
2513 *** The desktop package can be customized to restore only some buffers immediately, 2479 *** The desktop package can be customized to restore only some buffers
2514 remaining buffers are restored lazily (when Emacs is idle). 2480 immediately, remaining buffers are restored lazily (when Emacs is
2481 idle).
2515 2482
2516 +++ 2483 +++
2517 *** New commands: 2484 *** New commands:
2518 - desktop-revert reverts to the last loaded desktop. 2485 - desktop-revert reverts to the last loaded desktop.
2519 - desktop-change-dir kills current desktop and loads a new. 2486 - desktop-change-dir kills current desktop and loads a new.
2545 - desktop-after-read-hook run after a desktop is loaded. 2512 - desktop-after-read-hook run after a desktop is loaded.
2546 - desktop-no-desktop-file-hook run when no desktop file is found. 2513 - desktop-no-desktop-file-hook run when no desktop file is found.
2547 2514
2548 --- 2515 ---
2549 ** The saveplace.el package now filters out unreadable files. 2516 ** The saveplace.el package now filters out unreadable files.
2517
2550 When you exit Emacs, the saved positions in visited files no longer 2518 When you exit Emacs, the saved positions in visited files no longer
2551 include files that aren't readable, e.g. files that don't exist. 2519 include files that aren't readable, e.g. files that don't exist.
2552 Customize the new option `save-place-forget-unreadable-files' to nil 2520 Customize the new option `save-place-forget-unreadable-files' to nil
2553 to get the old behavior. The new options `save-place-save-skipped' 2521 to get the old behavior. The new options `save-place-save-skipped'
2554 and `save-place-skip-check-regexp' allow further fine-tuning of this 2522 and `save-place-skip-check-regexp' allow further fine-tuning of this
2577 ** Etags changes. 2545 ** Etags changes.
2578 2546
2579 *** New regular expressions features 2547 *** New regular expressions features
2580 2548
2581 **** New syntax for regular expressions, multi-line regular expressions. 2549 **** New syntax for regular expressions, multi-line regular expressions.
2550
2582 The syntax --ignore-case-regexp=/regex/ is now undocumented and retained 2551 The syntax --ignore-case-regexp=/regex/ is now undocumented and retained
2583 only for backward compatibility. The new equivalent syntax is 2552 only for backward compatibility. The new equivalent syntax is
2584 --regex=/regex/i. More generally, it is --regex=/TAGREGEX/TAGNAME/MODS, 2553 --regex=/regex/i. More generally, it is --regex=/TAGREGEX/TAGNAME/MODS,
2585 where `/TAGNAME' is optional, as usual, and MODS is a string of 0 or 2554 where `/TAGNAME' is optional, as usual, and MODS is a string of 0 or
2586 more characters among `i' (ignore case), `m' (multi-line) and `s' 2555 more characters among `i' (ignore case), `m' (multi-line) and `s'
2588 expressions: `m' allows regexps to match more than one line, while `s' 2557 expressions: `m' allows regexps to match more than one line, while `s'
2589 (which implies `m') means that `.' matches newlines. The ability to 2558 (which implies `m') means that `.' matches newlines. The ability to
2590 span newlines allows writing of much more powerful regular expressions 2559 span newlines allows writing of much more powerful regular expressions
2591 and rapid prototyping for tagging new languages. 2560 and rapid prototyping for tagging new languages.
2592 2561
2593 **** Regular expressions can use char escape sequences as in Gcc. 2562 **** Regular expressions can use char escape sequences as in GCC.
2563
2594 The escaped character sequence \a, \b, \d, \e, \f, \n, \r, \t, \v, 2564 The escaped character sequence \a, \b, \d, \e, \f, \n, \r, \t, \v,
2595 respectively, stand for the ASCII characters BEL, BS, DEL, ESC, FF, NL, 2565 respectively, stand for the ASCII characters BEL, BS, DEL, ESC, FF, NL,
2596 CR, TAB, VT, 2566 CR, TAB, VT,
2597 2567
2598 **** Regular expressions can be bound to a given language. 2568 **** Regular expressions can be bound to a given language.
2569
2599 The syntax --regex={LANGUAGE}REGEX means that REGEX is used to make tags 2570 The syntax --regex={LANGUAGE}REGEX means that REGEX is used to make tags
2600 only for files of language LANGUAGE, and ignored otherwise. This is 2571 only for files of language LANGUAGE, and ignored otherwise. This is
2601 particularly useful when storing regexps in a file. 2572 particularly useful when storing regexps in a file.
2602 2573
2603 **** Regular expressions can be read from a file. 2574 **** Regular expressions can be read from a file.
2575
2604 The --regex=@regexfile option means read the regexps from a file, one 2576 The --regex=@regexfile option means read the regexps from a file, one
2605 per line. Lines beginning with space or tab are ignored. 2577 per line. Lines beginning with space or tab are ignored.
2606 2578
2607 *** New language parsing features 2579 *** New language parsing features
2608 2580
2609 **** The `::' qualifier triggers C++ parsing in C file. 2581 **** The `::' qualifier triggers C++ parsing in C file.
2582
2610 Previously, only the `template' and `class' keywords had this effect. 2583 Previously, only the `template' and `class' keywords had this effect.
2611 2584
2612 **** The gnucc __attribute__ keyword is now recognised and ignored. 2585 **** The GCC __attribute__ keyword is now recognised and ignored.
2613 2586
2614 **** New language HTML. 2587 **** New language HTML.
2615 Title and h1, h2, h3 are tagged. Also, tags are generated when name= is 2588
2616 used inside an anchor and whenever id= is used. 2589 Tags are generated for `title' as well as `h1', `h2', and `h3'. Also,
2590 when `name=' is used inside an anchor and whenever `id=' is used.
2617 2591
2618 **** In Makefiles, constants are tagged. 2592 **** In Makefiles, constants are tagged.
2593
2619 If you want the old behavior instead, thus avoiding to increase the 2594 If you want the old behavior instead, thus avoiding to increase the
2620 size of the tags file, use the --no-globals option. 2595 size of the tags file, use the --no-globals option.
2621 2596
2622 **** New language Lua. 2597 **** New language Lua.
2598
2623 All functions are tagged. 2599 All functions are tagged.
2624 2600
2625 **** In Perl, packages are tags. 2601 **** In Perl, packages are tags.
2602
2626 Subroutine tags are named from their package. You can jump to sub tags 2603 Subroutine tags are named from their package. You can jump to sub tags
2627 as you did before, by the sub name, or additionally by looking for 2604 as you did before, by the sub name, or additionally by looking for
2628 package::sub. 2605 package::sub.
2629 2606
2630 **** In Prolog, etags creates tags for rules in addition to predicates. 2607 **** In Prolog, etags creates tags for rules in addition to predicates.
2631 2608
2632 **** New language PHP. 2609 **** New language PHP.
2633 Tags are functions, classes and defines. 2610
2634 If the --members option is specified to etags, tags are variables also. 2611 Functions, classes and defines are tags. If the --members option is
2612 specified to etags, variables are tags also.
2635 2613
2636 **** New default keywords for TeX. 2614 **** New default keywords for TeX.
2615
2637 The new keywords are def, newcommand, renewcommand, newenvironment and 2616 The new keywords are def, newcommand, renewcommand, newenvironment and
2638 renewenvironment. 2617 renewenvironment.
2639 2618
2640 *** Honour #line directives. 2619 *** Honour #line directives.
2620
2641 When Etags parses an input file that contains C preprocessor's #line 2621 When Etags parses an input file that contains C preprocessor's #line
2642 directives, it creates tags using the file name and line number 2622 directives, it creates tags using the file name and line number
2643 specified in those directives. This is useful when dealing with code 2623 specified in those directives. This is useful when dealing with code
2644 created from Cweb source files. When Etags tags the generated file, it 2624 created from Cweb source files. When Etags tags the generated file, it
2645 writes tags pointing to the source file. 2625 writes tags pointing to the source file.
2646 2626
2647 *** New option --parse-stdin=FILE. 2627 *** New option --parse-stdin=FILE.
2628
2648 This option is mostly useful when calling etags from programs. It can 2629 This option is mostly useful when calling etags from programs. It can
2649 be used (only once) in place of a file name on the command line. Etags 2630 be used (only once) in place of a file name on the command line. Etags
2650 reads from standard input and marks the produced tags as belonging to 2631 reads from standard input and marks the produced tags as belonging to
2651 the file FILE. 2632 the file FILE.
2652 2633
2653 ** VC Changes 2634 ** VC Changes
2654 2635
2655 +++ 2636 +++
2656 *** The key C-x C-q no longer checks files in or out, it only changes 2637 *** The key C-x C-q only changes the read-only state of the buffer
2657 the read-only state of the buffer (toggle-read-only). We made this 2638 (toggle-read-only). It no longer checks files in or out.
2658 change because we held a poll and found that many users were unhappy 2639
2659 with the previous behavior. If you do prefer this behavior, you 2640 We made this change because we held a poll and found that many users
2660 can bind `vc-toggle-read-only' to C-x C-q in your .emacs: 2641 were unhappy with the previous behavior. If you do prefer this
2642 behavior, you can bind `vc-toggle-read-only' to C-x C-q in your
2643 `.emacs' file:
2661 2644
2662 (global-set-key "\C-x\C-q" 'vc-toggle-read-only) 2645 (global-set-key "\C-x\C-q" 'vc-toggle-read-only)
2663 2646
2664 The function `vc-toggle-read-only' will continue to exist. 2647 The function `vc-toggle-read-only' will continue to exist.
2665 2648
2666 +++ 2649 +++
2667 *** There is a new user option `vc-cvs-global-switches' that allows 2650 *** The new variable `vc-cvs-global-switches' specifies switches that
2668 you to specify switches that are passed to any CVS command invoked 2651 are passed to any CVS command invoked by VC.
2669 by VC. These switches are used as "global options" for CVS, which 2652
2670 means they are inserted before the command name. For example, this 2653 These switches are used as "global options" for CVS, which means they
2671 allows you to specify a compression level using the "-z#" option for 2654 are inserted before the command name. For example, this allows you to
2672 CVS. 2655 specify a compression level using the `-z#' option for CVS.
2673 2656
2674 +++ 2657 +++
2675 *** New backends for Subversion and Meta-CVS. 2658 *** New backends for Subversion and Meta-CVS.
2676 2659
2677 +++ 2660 +++
2678 *** vc-annotate-mode enhancements 2661 *** VC-Annotate mode enhancements
2679 2662
2680 In vc-annotate mode, you can now use the following key bindings for 2663 In VC-Annotate mode, you can now use the following key bindings for
2681 enhanced functionality to browse the annotations of past revisions, or 2664 enhanced functionality to browse the annotations of past revisions, or
2682 to view diffs or log entries directly from vc-annotate-mode: 2665 to view diffs or log entries directly from vc-annotate-mode:
2683 2666
2684 P: annotates the previous revision 2667 P: annotates the previous revision
2685 N: annotates the next revision 2668 N: annotates the next revision
2697 in the repository. 2680 in the repository.
2698 2681
2699 +++ 2682 +++
2700 *** In pcl-cvs mode, there is a new `d r' command to view the changes 2683 *** In pcl-cvs mode, there is a new `d r' command to view the changes
2701 anyone has committed to the repository since you last executed 2684 anyone has committed to the repository since you last executed
2702 "checkout", "update" or "commit". That means using cvs diff options 2685 `checkout', `update' or `commit'. That means using cvs diff options
2703 -rBASE -rHEAD. 2686 -rBASE -rHEAD.
2704 2687
2705 +++ 2688 +++
2706 ** There is a new user option `mail-default-directory' that allows you 2689 ** The new variable `mail-default-directory' specifies
2707 to specify the value of `default-directory' for mail buffers. This 2690 `default-directory' for mail buffers. This directory is used for
2708 directory is used for auto-save files of mail buffers. It defaults to 2691 auto-save files of mail buffers. It defaults to "~/".
2709 "~/". 2692
2710 2693 +++
2711 +++ 2694 ** The mode line can indicate new mail in a directory or file.
2712 ** Emacs can now indicate in the mode-line the presence of new e-mail 2695
2713 in a directory or in a file. See the documentation of the user option 2696 See the documentation of the user option
2714 `display-time-mail-directory'. 2697 `display-time-mail-directory'.
2715 2698
2716 ** Rmail changes: 2699 ** Rmail changes:
2717 2700
2718 --- 2701 ---
2719 *** Rmail now displays 5-digit message ids in its summary buffer. 2702 *** Rmail now displays 5-digit message ids in its summary buffer.
2720 2703
2721 +++ 2704 +++
2722 *** Support for `movemail' from GNU mailutils was added to Rmail. 2705 *** Support for `movemail' from GNU mailutils was added to Rmail.
2706
2723 This version of `movemail' allows to read mail from a wide range of 2707 This version of `movemail' allows to read mail from a wide range of
2724 mailbox formats, including remote POP3 and IMAP4 mailboxes with or 2708 mailbox formats, including remote POP3 and IMAP4 mailboxes with or
2725 without TLS encryption. If GNU mailutils is installed on the system 2709 without TLS encryption. If GNU mailutils is installed on the system
2726 and its version of `movemail' can be found in exec-path, it will be 2710 and its version of `movemail' can be found in exec-path, it will be
2727 used instead of the native one. 2711 used instead of the native one.
2728 2712
2729 ** Gnus package 2713 ** Gnus package
2730 2714
2731 --- 2715 ---
2732 *** Gnus now includes Sieve and PGG 2716 *** Gnus now includes Sieve and PGG
2717
2733 Sieve is a library for managing Sieve scripts. PGG is a library to handle 2718 Sieve is a library for managing Sieve scripts. PGG is a library to handle
2734 PGP/MIME. 2719 PGP/MIME.
2735 2720
2736 --- 2721 ---
2737 *** There are many news features, bug fixes and improvements. 2722 *** There are many news features, bug fixes and improvements.
2723
2738 See the file GNUS-NEWS or the node "Oort Gnus" in the Gnus manual for details. 2724 See the file GNUS-NEWS or the node "Oort Gnus" in the Gnus manual for details.
2739 2725
2740 --- 2726 ---
2741 ** MH-E changes. 2727 ** MH-E changes.
2742 2728
2784 *** The function `simple-diary-display' now by default sets a header line. 2770 *** The function `simple-diary-display' now by default sets a header line.
2785 This can be controlled through the variables `diary-header-line-flag' 2771 This can be controlled through the variables `diary-header-line-flag'
2786 and `diary-header-line-format'. 2772 and `diary-header-line-format'.
2787 2773
2788 +++ 2774 +++
2789 *** The procedure for activating appointment reminders has changed: use 2775 *** The procedure for activating appointment reminders has changed:
2790 the new function `appt-activate'. The new variable 2776 use the new function `appt-activate'. The new variable
2791 `appt-display-format' controls how reminders are displayed, replacing 2777 `appt-display-format' controls how reminders are displayed, replacing
2792 appt-issue-message, appt-visible, and appt-msg-window. 2778 `appt-issue-message', `appt-visible', and `appt-msg-window'.
2793 2779
2794 +++ 2780 +++
2795 *** The new functions `diary-from-outlook', `diary-from-outlook-gnus', 2781 *** The new functions `diary-from-outlook', `diary-from-outlook-gnus',
2796 and `diary-from-outlook-rmail' can be used to import diary entries 2782 and `diary-from-outlook-rmail' can be used to import diary entries
2797 from Outlook-format appointments in mail messages. The variable 2783 from Outlook-format appointments in mail messages. The variable
2825 2811
2826 The current product name will be shown on the mode line following the 2812 The current product name will be shown on the mode line following the
2827 SQL mode indicator. 2813 SQL mode indicator.
2828 2814
2829 The technique of setting `sql-mode-font-lock-defaults' directly in 2815 The technique of setting `sql-mode-font-lock-defaults' directly in
2830 your .emacs will no longer establish the default highlighting -- Use 2816 your `.emacs' will no longer establish the default highlighting -- Use
2831 `sql-product' to accomplish this. 2817 `sql-product' to accomplish this.
2832 2818
2833 ANSI keywords are always highlighted. 2819 ANSI keywords are always highlighted.
2834 2820
2835 *** The function `sql-add-product-keywords' can be used to add 2821 *** The function `sql-add-product-keywords' can be used to add
2836 font-lock rules to the product specific rules. For example, to have 2822 font-lock rules to the product specific rules. For example, to have
2837 all identifiers ending in "_t" under MS SQLServer treated as a type, 2823 all identifiers ending in `_t' under MS SQLServer treated as a type,
2838 you would use the following line in your .emacs file: 2824 you would use the following line in your .emacs file:
2839 2825
2840 (sql-add-product-keywords 'ms 2826 (sql-add-product-keywords 'ms
2841 '(("\\<\\w+_t\\>" . font-lock-type-face))) 2827 '(("\\<\\w+_t\\>" . font-lock-type-face)))
2842 2828
2843 *** Oracle support includes keyword highlighting for Oracle 9i. Most 2829 *** Oracle support includes keyword highlighting for Oracle 9i.
2844 SQL and PL/SQL keywords are implemented. SQL*Plus commands are 2830
2831 Most SQL and PL/SQL keywords are implemented. SQL*Plus commands are
2845 highlighted in `font-lock-doc-face'. 2832 highlighted in `font-lock-doc-face'.
2846 2833
2847 *** Microsoft SQLServer support has been significantly improved. 2834 *** Microsoft SQLServer support has been significantly improved.
2835
2848 Keyword highlighting for SqlServer 2000 is implemented. 2836 Keyword highlighting for SqlServer 2000 is implemented.
2849 sql-interactive-mode defaults to use osql, rather than isql, because 2837 sql-interactive-mode defaults to use osql, rather than isql, because
2850 osql flushes its error stream more frequently. Thus error messages 2838 osql flushes its error stream more frequently. Thus error messages
2851 are displayed when they occur rather than when the session is 2839 are displayed when they occur rather than when the session is
2852 terminated. 2840 terminated.
2853 2841
2854 If the username and password are not provided to `sql-ms', osql is 2842 If the username and password are not provided to `sql-ms', osql is
2855 called with the -E command line argument to use the operating system 2843 called with the `-E' command line argument to use the operating system
2856 credentials to authenticate the user. 2844 credentials to authenticate the user.
2857 2845
2858 *** Postgres support is enhanced. 2846 *** Postgres support is enhanced.
2859 Keyword highlighting of Postgres 7.3 is implemented. Prompting for 2847 Keyword highlighting of Postgres 7.3 is implemented. Prompting for
2860 the username and the pgsql `-U' option is added. 2848 the username and the pgsql `-U' option is added.
2865 *** Imenu support has been enhanced to locate tables, views, indexes, 2853 *** Imenu support has been enhanced to locate tables, views, indexes,
2866 packages, procedures, functions, triggers, sequences, rules, and 2854 packages, procedures, functions, triggers, sequences, rules, and
2867 defaults. 2855 defaults.
2868 2856
2869 *** Added SQL->Start SQLi Session menu entry which calls the 2857 *** Added SQL->Start SQLi Session menu entry which calls the
2870 appropriate sql-interactive-mode wrapper for the current setting of 2858 appropriate `sql-interactive-mode' wrapper for the current setting of
2871 `sql-product'. 2859 `sql-product'.
2872 2860
2873 --- 2861 ---
2874 *** Support for the SQLite interpreter has been added to sql.el by calling 2862 *** sql.el supports the SQLite interpreter--call 'sql-sqlite'.
2875 'sql-sqlite'.
2876 2863
2877 ** FFAP changes: 2864 ** FFAP changes:
2878 2865
2879 +++ 2866 +++
2880 *** New ffap commands and keybindings: C-x C-r (`ffap-read-only'), 2867 *** New ffap commands and keybindings:
2868
2869 C-x C-r (`ffap-read-only'),
2881 C-x C-v (`ffap-alternate-file'), C-x C-d (`ffap-list-directory'), 2870 C-x C-v (`ffap-alternate-file'), C-x C-d (`ffap-list-directory'),
2882 C-x 4 r (`ffap-read-only-other-window'), C-x 4 d (`ffap-dired-other-window'), 2871 C-x 4 r (`ffap-read-only-other-window'), C-x 4 d (`ffap-dired-other-window'),
2883 C-x 5 r (`ffap-read-only-other-frame'), C-x 5 d (`ffap-dired-other-frame'). 2872 C-x 5 r (`ffap-read-only-other-frame'), C-x 5 d (`ffap-dired-other-frame').
2884 2873
2885 --- 2874 ---
2886 *** FFAP accepts wildcards in a file name by default. C-x C-f passes 2875 *** FFAP accepts wildcards in a file name by default.
2887 it to `find-file' with non-nil WILDCARDS argument, which visits 2876
2888 multiple files, and C-x d passes it to `dired'. 2877 C-x C-f passes the file name to `find-file' with non-nil WILDCARDS
2889 2878 argument, which visits multiple files, and C-x d passes it to `dired'.
2890 --- 2879
2891 ** skeleton.el now supports using - to mark the skeleton-point without 2880 ---
2892 interregion interaction. @ has reverted to only setting 2881 ** In skeleton.el, `-' marks the `skeleton-point' without interregion interaction.
2893 skeleton-positions and no longer sets skeleton-point. Skeletons 2882
2894 which used @ to mark skeleton-point independent of _ should now use - 2883 `@' has reverted to only setting `skeleton-positions' and no longer
2895 instead. The updated skeleton-insert docstring explains these new 2884 sets `skeleton-point'. Skeletons which used @ to mark
2896 features along with other details of skeleton construction. 2885 `skeleton-point' independent of `_' should now use `-' instead. The
2886 updated `skeleton-insert' docstring explains these new features along
2887 with other details of skeleton construction.
2897 2888
2898 --- 2889 ---
2899 ** New variable `hs-set-up-overlay' allows customization of the overlay 2890 ** New variable `hs-set-up-overlay' allows customization of the overlay
2900 used to effect hiding for hideshow minor mode. Integration with isearch 2891 used to effect hiding for hideshow minor mode. Integration with isearch
2901 handles the overlay property `display' specially, preserving it during 2892 handles the overlay property `display' specially, preserving it during
2902 temporary overlay showing in the course of an isearch operation. 2893 temporary overlay showing in the course of an isearch operation.
2903 2894
2904 +++ 2895 +++
2905 ** hide-ifdef-mode now uses overlays rather than selective-display 2896 ** `hide-ifdef-mode' now uses overlays rather than selective-display
2906 to hide its text. This should be mostly transparent but slightly 2897 to hide its text. This should be mostly transparent but slightly
2907 changes the behavior of motion commands like C-e and C-p. 2898 changes the behavior of motion commands like C-e and C-p.
2908 2899
2909 --- 2900 ---
2910 ** partial-completion-mode now does partial completion on directory names. 2901 ** `partial-completion-mode' now handles partial completion on directory names.
2911 2902
2912 --- 2903 ---
2913 ** The type-break package now allows `type-break-file-name' to be nil 2904 ** The type-break package now allows `type-break-file-name' to be nil
2914 and if so, doesn't store any data across sessions. This is handy if 2905 and if so, doesn't store any data across sessions. This is handy if
2915 you don't want the .type-break file in your home directory or are 2906 you don't want the `.type-break' file in your home directory or are
2916 annoyed by the need for interaction when you kill Emacs. 2907 annoyed by the need for interaction when you kill Emacs.
2917 2908
2918 --- 2909 ---
2919 ** `ps-print' can now print characters from the mule-unicode charsets. 2910 ** `ps-print' can now print characters from the mule-unicode charsets.
2920 2911
2921 Printing text with characters from the mule-unicode-* sets works with 2912 Printing text with characters from the mule-unicode-* sets works with
2922 ps-print, provided that you have installed the appropriate BDF fonts. 2913 `ps-print', provided that you have installed the appropriate BDF
2923 See the file INSTALL for URLs where you can find these fonts. 2914 fonts. See the file INSTALL for URLs where you can find these fonts.
2924 2915
2925 --- 2916 ---
2926 ** New command `strokes-global-set-stroke-string'. 2917 ** New command `strokes-global-set-stroke-string'.
2927 This is like `strokes-global-set-stroke', but it allows you to bind 2918 This is like `strokes-global-set-stroke', but it allows you to bind
2928 the stroke directly to a string to insert. This is convenient for 2919 the stroke directly to a string to insert. This is convenient for
2938 % emacsclient -s foo file1 2929 % emacsclient -s foo file1
2939 % emacsclient -s bar file2 2930 % emacsclient -s bar file2
2940 2931
2941 +++ 2932 +++
2942 *** The `emacsclient' command understands the options `--eval' and 2933 *** The `emacsclient' command understands the options `--eval' and
2943 `--display' which tell Emacs respectively to evaluate the given elisp 2934 `--display' which tell Emacs respectively to evaluate the given Lisp
2944 expression and to use the given display when visiting files. 2935 expression and to use the given display when visiting files.
2945 2936
2946 +++ 2937 +++
2947 *** User option `server-mode' can be used to start a server process. 2938 *** User option `server-mode' can be used to start a server process.
2948 2939
2949 --- 2940 ---
2950 ** LDAP support now defaults to ldapsearch from OpenLDAP version 2. 2941 ** LDAP support now defaults to ldapsearch from OpenLDAP version 2.
2951 2942
2952 +++ 2943 +++
2953 ** You can now disable pc-selection-mode after enabling it. 2944 ** You can now disable pc-selection-mode after enabling it.
2945
2954 M-x pc-selection-mode behaves like a proper minor mode, and with no 2946 M-x pc-selection-mode behaves like a proper minor mode, and with no
2955 argument it toggles the mode. 2947 argument it toggles the mode. Turning off PC-Selection mode restores
2956 2948 the global key bindings that were replaced by turning on the mode.
2957 Turning off PC-Selection mode restores the global key bindings
2958 that were replaced by turning on the mode.
2959 2949
2960 --- 2950 ---
2961 ** `uniquify-strip-common-suffix' tells uniquify to prefer 2951 ** `uniquify-strip-common-suffix' tells uniquify to prefer
2962 `file|dir1' and `file|dir2' to `file|dir1/subdir' and `file|dir2/subdir'. 2952 `file|dir1' and `file|dir2' to `file|dir1/subdir' and `file|dir2/subdir'.
2963 2953
2964 --- 2954 ---
2965 ** Support for `magic cookie' standout modes has been removed. 2955 ** Support for `magic cookie' standout modes has been removed.
2966 Emacs will still work on terminals that require magic cookies in order 2956
2967 to use standout mode, however they will not be able to display 2957 Emacs still works on terminals that require magic cookies in order to
2968 mode-lines in inverse-video. 2958 use standout mode, but they can no longer display mode-lines in
2959 inverse-video.
2969 2960
2970 --- 2961 ---
2971 ** The game `mpuz' is enhanced. 2962 ** The game `mpuz' is enhanced.
2972 2963
2973 `mpuz' now allows the 2nd factor not to have two identical digits. By 2964 `mpuz' now allows the 2nd factor not to have two identical digits. By
2974 default, all trivial operations involving whole lines are performed 2965 default, all trivial operations involving whole lines are performed
2975 automatically. The game uses faces for better visual feedback. 2966 automatically. The game uses faces for better visual feedback.
2976 2967
2977 --- 2968 ---
2978 ** display-battery has been replaced by display-battery-mode. 2969 ** display-battery-mode replaces display-battery.
2979 2970
2980 --- 2971 ---
2981 ** calculator.el now has radix grouping mode, which is available when 2972 ** calculator.el now has radix grouping mode.
2982 `calculator-output-radix' is non-nil. In this mode a separator 2973
2983 character is used every few digits, making it easier to see byte 2974 To enable this, set `calculator-output-radix' non-nil. In this mode a
2984 boundries etc. For more info, see the documentation of the variable 2975 separator character is used every few digits, making it easier to see
2985 `calculator-radix-grouping-mode'. 2976 byte boundries etc. For more info, see the documentation of the
2977 variable `calculator-radix-grouping-mode'.
2986 2978
2987 --- 2979 ---
2988 ** fast-lock.el and lazy-lock.el are obsolete. Use jit-lock.el instead. 2980 ** fast-lock.el and lazy-lock.el are obsolete. Use jit-lock.el instead.
2989 2981
2990 --- 2982 ---
2991 ** iso-acc.el is now obsolete. Use one of the latin input methods instead. 2983 ** iso-acc.el is now obsolete. Use one of the latin input methods instead.
2992 2984
2993 --- 2985 ---
2994 ** cplus-md.el has been removed to avoid problems with Custom. 2986 ** cplus-md.el has been deleted.
2995 2987
2996 * Changes in Emacs 22.1 on non-free operating systems 2988 * Changes in Emacs 22.1 on non-free operating systems
2997 2989
2998 +++ 2990 +++
2999 ** Passing resources on the command line now works on MS Windows. 2991 ** Passing resources on the command line now works on MS Windows.
2992
3000 You can use --xrm to pass resource settings to Emacs, overriding any 2993 You can use --xrm to pass resource settings to Emacs, overriding any
3001 existing values. For example: 2994 existing values. For example:
3002 2995
3003 emacs --xrm "Emacs.Background:red" --xrm "Emacs.Geometry:100x20" 2996 emacs --xrm "Emacs.Background:red" --xrm "Emacs.Geometry:100x20"
3004 2997
3005 will start up Emacs on an initial frame of 100x20 with red background, 2998 will start up Emacs on an initial frame of 100x20 with red background,
3006 irrespective of geometry or background setting on the Windows registry. 2999 irrespective of geometry or background setting on the Windows registry.
3007 3000
3008 --- 3001 ---
3009 ** On MS Windows, the "system caret" now follows the cursor. 3002 ** On MS Windows, the "system caret" now follows the cursor.
3003
3010 This enables Emacs to work better with programs that need to track 3004 This enables Emacs to work better with programs that need to track
3011 the cursor, for example screen magnifiers and text to speech programs. 3005 the cursor, for example screen magnifiers and text to speech programs.
3012 3006
3013 --- 3007 ---
3014 ** Tooltips now work on MS Windows. 3008 ** Tooltips now work on MS Windows.
3009
3015 See the Emacs 21.1 NEWS entry for tooltips for details. 3010 See the Emacs 21.1 NEWS entry for tooltips for details.
3016 3011
3017 --- 3012 ---
3018 ** Images are now supported on MS Windows. 3013 ** Images are now supported on MS Windows.
3014
3019 PBM and XBM images are supported out of the box. Other image formats 3015 PBM and XBM images are supported out of the box. Other image formats
3020 depend on external libraries. All of these libraries have been ported 3016 depend on external libraries. All of these libraries have been ported
3021 to Windows, and can be found in both source and binary form at 3017 to Windows, and can be found in both source and binary form at
3022 http://gnuwin32.sourceforge.net/. Note that libpng also depends on 3018 http://gnuwin32.sourceforge.net/. Note that libpng also depends on
3023 zlib, and tiff depends on the version of jpeg that it was compiled 3019 zlib, and tiff depends on the version of jpeg that it was compiled
3024 against. For additional information, see nt/INSTALL. 3020 against. For additional information, see nt/INSTALL.
3025 3021
3026 --- 3022 ---
3027 ** Sound is now supported on MS Windows. 3023 ** Sound is now supported on MS Windows.
3024
3028 WAV format is supported on all versions of Windows, other formats such 3025 WAV format is supported on all versions of Windows, other formats such
3029 as AU, AIFF and MP3 may be supported in the more recent versions of 3026 as AU, AIFF and MP3 may be supported in the more recent versions of
3030 Windows, or when other software provides hooks into the system level 3027 Windows, or when other software provides hooks into the system level
3031 sound support for those formats. 3028 sound support for those formats.
3032 3029
3033 --- 3030 ---
3034 ** Different shaped mouse pointers are supported on MS Windows. 3031 ** Different shaped mouse pointers are supported on MS Windows.
3032
3035 The mouse pointer changes shape depending on what is under the pointer. 3033 The mouse pointer changes shape depending on what is under the pointer.
3036 3034
3037 --- 3035 ---
3038 ** Pointing devices with more than 3 buttons are now supported on MS Windows. 3036 ** Pointing devices with more than 3 buttons are now supported on MS Windows.
3037
3039 The new variable `w32-pass-extra-mouse-buttons-to-system' controls 3038 The new variable `w32-pass-extra-mouse-buttons-to-system' controls
3040 whether Emacs should handle the extra buttons itself (the default), or 3039 whether Emacs should handle the extra buttons itself (the default), or
3041 pass them to Windows to be handled with system-wide functions. 3040 pass them to Windows to be handled with system-wide functions.
3042 3041
3043 --- 3042 ---
3044 ** Emacs takes note of colors defined in Control Panel on MS-Windows. 3043 ** Emacs takes note of colors defined in Control Panel on MS-Windows.
3044
3045 The Control Panel defines some default colors for applications in much 3045 The Control Panel defines some default colors for applications in much
3046 the same way as wildcard X Resources do on X. Emacs now adds these 3046 the same way as wildcard X Resources do on X. Emacs now adds these
3047 colors to the colormap prefixed by System (eg SystemMenu for the 3047 colors to the colormap prefixed by System (eg SystemMenu for the
3048 default Menu background, SystemMenuText for the foreground), and uses 3048 default Menu background, SystemMenuText for the foreground), and uses
3049 some of them to initialize some of the default faces. 3049 some of them to initialize some of the default faces.
3050 `list-colors-display' shows the list of System color names, in case 3050 `list-colors-display' shows the list of System color names, in case
3051 you wish to use them in other faces. 3051 you wish to use them in other faces.
3052 3052
3053 --- 3053 ---
3054 ** On MS Windows NT/W2K/XP, Emacs uses Unicode for clipboard operations. 3054 ** On MS Windows NT/W2K/XP, Emacs uses Unicode for clipboard operations.
3055
3055 Those systems use Unicode internally, so this allows Emacs to share 3056 Those systems use Unicode internally, so this allows Emacs to share
3056 multilingual text with other applications. On other versions of 3057 multilingual text with other applications. On other versions of
3057 MS Windows, Emacs now uses the appropriate locale coding-system, so 3058 MS Windows, Emacs now uses the appropriate locale coding-system, so
3058 the clipboard should work correctly for your local language without 3059 the clipboard should work correctly for your local language without
3059 any customizations. 3060 any customizations.
3060 3061
3061 --- 3062 ---
3062 ** On Mac OS, the value of the variable `keyboard-coding-system' is 3063 ** On Mac OS, `keyboard-coding-system' changes based on the keyboard script.
3063 now dynamically changed according to the current keyboard script. The 3064
3064 variable `mac-keyboard-text-encoding' and the constants 3065 ---
3066 ** The variable `mac-keyboard-text-encoding' and the constants
3065 `kTextEncodingMacRoman', `kTextEncodingISOLatin1', and 3067 `kTextEncodingMacRoman', `kTextEncodingISOLatin1', and
3066 `kTextEncodingISOLatin2' are obsolete. 3068 `kTextEncodingISOLatin2' are obsolete.
3067 3069
3068 * Incompatible Lisp Changes in Emacs 22.1 3070 * Incompatible Lisp Changes in Emacs 22.1
3069 3071
3083 3085
3084 * Lisp Changes in Emacs 22.1 3086 * Lisp Changes in Emacs 22.1
3085 3087
3086 ** General Lisp changes: 3088 ** General Lisp changes:
3087 3089
3090 ---
3091 *** The variables post-command-idle-hook and post-command-idle-delay have
3092 been removed. Use run-with-idle-timer instead.
3093
3088 +++ 3094 +++
3089 *** The function `eql' is now available without requiring the CL package. 3095 *** The function `eql' is now available without requiring the CL package.
3090 3096
3091 +++ 3097 +++
3092 *** `makehash' is now obsolete. Use `make-hash-table' instead. 3098 *** `makehash' is now obsolete. Use `make-hash-table' instead.
3093 3099
3094 +++ 3100 +++
3095 *** If optional third argument APPEND to `add-to-list' is non-nil, a 3101 *** `add-to-list' takes an optional third argument, APPEND.
3096 new element gets added at the end of the list instead of at the 3102
3097 beginning. This change actually occurred in Emacs-21.1, but was not 3103 If APPEND is non-nil, the new element gets added at the end of the
3098 documented. 3104 list instead of at the beginning. This change actually occurred in
3099 3105 Emacs 21.1, but was not documented then.
3100 +++ 3106
3101 *** New function `copy-tree' makes a copy of a tree, recursively copying 3107 +++
3102 both cars and cdrs. 3108 *** New function `copy-tree' makes a copy of a tree.
3103 3109
3104 +++ 3110 It recursively copyies through both CARs and CDRs.
3105 *** New function `delete-dups' destructively removes `equal' 3111
3106 duplicates from a list. Of several `equal' occurrences of an element 3112 +++
3107 in the list, the first one is kept. 3113 *** New function `delete-dups' deletes `equal' duplicate elements from a list.
3108 3114
3109 +++ 3115 It modifies the list destructively, like `delete'. Of several `equal'
3110 *** `declare' is now a macro. This change was made mostly for 3116 occurrences of an element in the list, the one that's kept is the
3111 documentation purposes and should have no real effect on Lisp code. 3117 first one.
3112 3118
3113 +++ 3119 +++
3114 *** The new function `rassq-delete-all' deletes all elements from an 3120 *** New function `rassq-delete-all'.
3115 alist whose cdr is `eq' to a specified value. 3121
3116 3122 (rassq-delete-all VALUE ALIST) deletes, from ALIST, each element whose
3117 +++ 3123 CDR is `eq' to the specified value.
3118 *** The function `number-sequence' returns a list of equally-separated 3124
3119 numbers. For instance, (number-sequence 4 9) returns (4 5 6 7 8 9). 3125 +++
3120 By default, the separation is 1, but you can specify a different separation 3126 *** The function `number-sequence' makes a list of equally-separated numbers.
3121 as the third argument. (number-sequence 1.5 6 2) returns (1.5 3.5 5.5). 3127
3122 3128 For instance, (number-sequence 4 9) returns (4 5 6 7 8 9). By
3123 +++ 3129 default, the separation is 1, but you can specify a different
3124 *** The variables `most-positive-fixnum' and `most-negative-fixnum' 3130 separation as the third argument. (number-sequence 1.5 6 2) returns
3125 hold the largest and smallest possible integer values. 3131 (1.5 3.5 5.5).
3126 3132
3127 +++ 3133 +++
3128 *** The flags, width, and precision options for %-specifications in function 3134 *** New variables `most-positive-fixnum' and `most-negative-fixnum'.
3129 `format' are now documented. Some flags that were accepted but not 3135
3130 implemented (such as "*") are no longer accepted. 3136 They hold the largest and smallest possible integer values.
3131 3137
3132 +++ 3138 +++
3133 *** Functions `get' and `plist-get' no longer signals an error for 3139 *** Minor change in the function `format'.
3134 a malformed property list. They also detect cyclic lists. 3140
3135 3141 Some flags that were accepted but not implemented (such as "*") are no
3136 +++ 3142 longer accepted.
3137 *** The new functions `lax-plist-get' and `lax-plist-put' are like 3143
3138 `plist-get' and `plist-put', except that they compare the property 3144 +++
3139 name using `equal' rather than `eq'. 3145 *** Functions `get' and `plist-get' no longer give errors for bad plists.
3140 3146
3141 +++ 3147 They return nil for a malformed property list or if the list is
3142 *** The new variable `print-continuous-numbering', when non-nil, says 3148 cyclic.
3143 that successive calls to print functions should use the same 3149
3144 numberings for circular structure references. This is only relevant 3150 +++
3145 when `print-circle' is non-nil. 3151 *** New functions `lax-plist-get' and `lax-plist-put'.
3152
3153 They are like `plist-get' and `plist-put', except that they compare
3154 the property name using `equal' rather than `eq'.
3155
3156 +++
3157 *** New variable `print-continuous-numbering'.
3158
3159 When this is non-nil, successive calls to print functions use a single
3160 numbering scheme for circular structure references. This is only
3161 relevant when `print-circle' is non-nil.
3146 3162
3147 When you bind `print-continuous-numbering' to t, you should 3163 When you bind `print-continuous-numbering' to t, you should
3148 also bind `print-number-table' to nil. 3164 also bind `print-number-table' to nil.
3149 3165
3150 +++ 3166 +++
3160 When called with 2 arguments, as in `(atan Y X)', `atan' returns the 3176 When called with 2 arguments, as in `(atan Y X)', `atan' returns the
3161 angle in radians between the vector [X, Y] and the X axis. (This is 3177 angle in radians between the vector [X, Y] and the X axis. (This is
3162 equivalent to the standard C library function `atan2'.) 3178 equivalent to the standard C library function `atan2'.)
3163 3179
3164 +++ 3180 +++
3165 *** A function's doc string can now specify the calling pattern. 3181 *** A function or macro's doc string can now specify the calling pattern.
3166 3182
3167 You put this in the doc string's last line, which should match the 3183 You put this info in the doc string's last line. It should be
3168 regexp "\n\n(fn.*)\\'". 3184 formatted so as to match the regexp "\n\n(fn .*)\\'". If you don't
3169 3185 specify this explicitly, Emacs determines it from the actual argument
3170 +++ 3186 names. Usually that default is right, but not always.
3171 *** New macro `with-local-quit' temporarily sets `inhibit-quit' to nil. 3187
3172 3188 +++
3173 This is for use around potentially blocking or long-running code in 3189 *** New macro `with-local-quit' temporarily allows quitting.
3174 timers and `post-command-hook' functions. 3190
3175 3191 A quit inside the body of `with-local-quit' is caught by the
3176 *** `define-obsolete-function-alias' 3192 `with-local-quit' form itself, but another quit will happen later once
3177 combines `defalias' and `make-obsolete'. 3193 the code that has inhibitted quitting exits.
3178 3194
3179 +++ 3195 This is for use around potentially blocking or long-running code
3180 *** New function `unsafep' returns nil if the given Lisp form can't 3196 inside timer functions and `post-command-hook' functions.
3181 possibly do anything dangerous; otherwise it returns a reason why the 3197
3182 form might be unsafe (calls unknown function, alters global variable, 3198 +++
3183 etc). 3199 *** New macro `define-obsolete-function-alias'.
3200
3201 This combines `defalias' and `make-obsolete'.
3202
3203 +++
3204 *** New function `unsafep' determines whether a Lisp form is safe.
3205
3206 It returns nil if the given Lisp form can't possibly do anything
3207 dangerous; otherwise it returns a reason why the form might be unsafe
3208 (calls unknown function, alters global variable, etc).
3184 3209
3185 ** Lisp code indentation features: 3210 ** Lisp code indentation features:
3186 3211
3187 +++ 3212 +++
3188 *** The `defmacro' form can contain declarations specifying how to 3213 *** The `defmacro' form can contain indentation and edebug declarations.
3189 indent the macro in Lisp mode and how to debug it with Edebug. The 3214
3190 syntax of defmacro has been extended to 3215 These declarations specify how to indent the macro calls in Lisp mode
3216 and how to debug them with Edebug. You write them like this:
3191 3217
3192 (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...) 3218 (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...)
3193 3219
3194 DECLARATION is a list `(declare DECLARATION-SPECIFIER ...)'. The 3220 DECLARATION is a list `(declare DECLARATION-SPECIFIER ...)'. The
3195 declaration specifiers supported are: 3221 possible declaration specifiers are:
3196 3222
3197 (indent INDENT) 3223 (indent INDENT)
3198 Set NAME's `lisp-indent-function' property to INDENT. 3224 Set NAME's `lisp-indent-function' property to INDENT.
3199 3225
3200 (edebug DEBUG) 3226 (edebug DEBUG)
3201 Set NAME's `edebug-form-spec' property to DEBUG. (This is 3227 Set NAME's `edebug-form-spec' property to DEBUG. (This is
3202 equivalent to writing a `def-edebug-spec' for the macro. 3228 equivalent to writing a `def-edebug-spec' for the macro,
3229 but this is cleaner.)
3203 3230
3204 --- 3231 ---
3205 *** cl-indent now allows customization of Indentation of backquoted forms. 3232 *** cl-indent now allows customization of Indentation of backquoted forms.
3206 3233
3207 See the new user option `lisp-backquote-indentation'. 3234 See the new user option `lisp-backquote-indentation'.
3215 forms. 3242 forms.
3216 3243
3217 +++ 3244 +++
3218 ** Variable aliases: 3245 ** Variable aliases:
3219 3246
3220 *** defvaralias ALIAS-VAR BASE-VAR [DOCSTRING] 3247 *** New function: defvaralias ALIAS-VAR BASE-VAR [DOCSTRING]
3221 3248
3222 This function defines the symbol ALIAS-VAR as a variable alias for 3249 This function defines the symbol ALIAS-VAR as a variable alias for
3223 symbol BASE-VAR. This means that retrieving the value of ALIAS-VAR 3250 symbol BASE-VAR. This means that retrieving the value of ALIAS-VAR
3224 returns the value of BASE-VAR, and changing the value of ALIAS-VAR 3251 returns the value of BASE-VAR, and changing the value of ALIAS-VAR
3225 changes the value of BASE-VAR. 3252 changes the value of BASE-VAR.
3226 3253
3227 DOCSTRING, if present, is the documentation for ALIAS-VAR; else it has 3254 DOCSTRING, if present, is the documentation for ALIAS-VAR; else it has
3228 the same documentation as BASE-VAR. 3255 the same documentation as BASE-VAR.
3229 3256
3230 *** indirect-variable VARIABLE 3257 *** New function: indirect-variable VARIABLE
3231 3258
3232 This function returns the variable at the end of the chain of aliases 3259 This function returns the variable at the end of the chain of aliases
3233 of VARIABLE. If VARIABLE is not a symbol, or if VARIABLE is not 3260 of VARIABLE. If VARIABLE is not a symbol, or if VARIABLE is not
3234 defined as an alias, the function returns VARIABLE. 3261 defined as an alias, the function returns VARIABLE.
3235 3262
3241 `make-obsolete-variable'. 3268 `make-obsolete-variable'.
3242 3269
3243 ** defcustom changes: 3270 ** defcustom changes:
3244 3271
3245 +++ 3272 +++
3246 *** defcustom and other custom declarations now use a default group 3273 *** The new customization type `float' requires a floating point number.
3247 (the last prior group defined in the same file) when no :group was given.
3248
3249 ---
3250 *** The new customization type `float' specifies numbers with floating
3251 point (no integers are allowed).
3252 3274
3253 ** String changes: 3275 ** String changes:
3254 3276
3255 +++ 3277 +++
3256 *** The escape sequence \s is now interpreted as a SPACE character, 3278 *** The escape sequence \s is now interpreted as a SPACE character.
3257 unless it is followed by a `-' in a character constant (e.g. ?\s-A), 3279
3258 in which case it is still interpreted as the super modifier. 3280 Exception: In a character constant, if it is followed by a `-' in a
3259 In strings, \s is always interpreted as a space. 3281 character constant (e.g. ?\s-A), it is still interpreted as the super
3260 3282 modifier. In strings, \s is always interpreted as a space.
3261 +++ 3283
3262 *** A hex escape in a string forces the string to be multibyte. 3284 +++
3263 An octal escape makes it unibyte. 3285 *** A hex escape in a string constant forces the string to be multibyte.
3286
3287 +++
3288 *** An octal escape in a string constant forces the string to be unibyte.
3264 3289
3265 +++ 3290 +++
3266 *** `split-string' now includes null substrings in the returned list if 3291 *** `split-string' now includes null substrings in the returned list if
3267 the optional argument SEPARATORS is non-nil and there are matches for 3292 the optional argument SEPARATORS is non-nil and there are matches for
3268 SEPARATORS at the beginning or end of the string. If SEPARATORS is 3293 SEPARATORS at the beginning or end of the string. If SEPARATORS is
3272 +++ 3297 +++
3273 *** New function `string-to-multibyte' converts a unibyte string to a 3298 *** New function `string-to-multibyte' converts a unibyte string to a
3274 multibyte string with the same individual character codes. 3299 multibyte string with the same individual character codes.
3275 3300
3276 +++ 3301 +++
3277 *** New function `substring-no-properties returns a substring without 3302 *** New function `substring-no-properties' returns a substring without
3278 text properties. 3303 text properties.
3279 3304
3280 +++ 3305 +++
3281 *** The new function `assoc-string' replaces `assoc-ignore-case' and 3306 *** The new function `assoc-string' replaces `assoc-ignore-case' and
3282 `assoc-ignore-representation', which are still available, but have 3307 `assoc-ignore-representation', which are still available, but have
3283 been declared obsolete. 3308 been declared obsolete.
3284 3309
3285 ** Buffer/variable changes: 3310 +++
3311 ** Displaying warnings to the user.
3312
3313 See the functions `warn' and `display-warning', or the Lisp Manual.
3314 If you want to be sure the warning will not be overlooked, this
3315 facility is much better than using `message', since it displays
3316 warnings in a separate window.
3317
3318 +++
3319 ** Progress reporters.
3320
3321 These provide a simple and uniform way for commands to present
3322 progress messages for the user.
3323
3324 See the new functions `make-progress-reporter',
3325 `progress-reporter-update', `progress-reporter-force-update',
3326 `progress-reporter-done', and `dotimes-with-progress-reporter'.
3327
3328 ** Buffer positions:
3329
3330 +++
3331 *** Function `compute-motion' now calculates the usable window
3332 width if the WIDTH argument is nil. If the TOPOS argument is nil,
3333 the usable window height and width is used.
3334
3335 +++
3336 *** The `line-move', `scroll-up', and `scroll-down' functions will now
3337 modify the window vscroll to scroll through display rows that are
3338 taller that the height of the window, for example in the presence of
3339 large images. To disable this feature, bind the new variable
3340 `auto-window-vscroll' to nil.
3341
3342 +++
3343 *** The argument to `forward-word', `backward-word' is optional.
3344
3345 It defaults to 1.
3346
3347 +++
3348 *** Argument to `forward-to-indentation' and `backward-to-indentation' is optional.
3349
3350 It defaults to 1.
3351
3352 +++
3353 *** New function `mouse-on-link-p' test if a position is in a clickable link.
3354
3355 This is the function used by the new `mouse-1-click-follows-link'
3356 functionality.
3357
3358 +++
3359 *** New function `line-number-at-pos' returns the line number of a position.
3360
3361 It an optional buffer position argument that defaults to point.
3362
3363 +++
3364 *** `field-beginning' and `field-end' take new optional argument, LIMIT.
3365
3366 This argument tells them not to search beyond LIMIT. Instead they
3367 give up and return LIMIT.
3368
3369 +++
3370 *** Function `pos-visible-in-window-p' now returns the pixel coordinates
3371 and partial visiblity state of the corresponding row, if the PARTIALLY
3372 arg is non-nil.
3373
3374 +++
3375 *** New functions `posn-at-point' and `posn-at-x-y' return
3376 click-event-style position information for a given visible buffer
3377 position or for a given window pixel coordinate.
3378
3379 ** Text modification:
3380
3381 +++
3382 *** The new function `insert-for-yank' normally works like `insert', but
3383 removes the text properties in the `yank-excluded-properties' list
3384 and handles the `yank-handler' text property.
3385
3386 +++
3387 *** The new function `insert-buffer-substring-as-yank' is like
3388 `insert-for-yank' except that it gets the text from another buffer as
3389 in `insert-buffer-substring'.
3390
3391 +++
3392 *** The new function `insert-buffer-substring-no-properties' is like
3393 `insert-buffer-substring', but removes all text properties from the
3394 inserted substring.
3395
3396 +++
3397 *** The new function `filter-buffer-substring' extracts a buffer
3398 substring, passes it through a set of filter functions, and returns
3399 the filtered substring. Use it instead of `buffer-substring' or
3400 `delete-and-extract-region' when copying text into a user-accessible
3401 data structure, such as the kill-ring, X clipboard, or a register.
3402
3403 The list of filter function is specified by the new variable
3404 `buffer-substring-filters'. For example, Longlines mode adds to
3405 `buffer-substring-filters' to remove soft newlines from the copied
3406 text.
3407
3408 +++
3409 *** Function `translate-region' accepts also a char-table as TABLE
3410 argument.
3411
3412 +++
3413 *** The new translation table `translation-table-for-input'
3414 is used for customizing self-insertion. The character to
3415 be inserted is translated through it.
3416
3417 ---
3418 *** Text clones.
3419
3420 The new function `text-clone-create'. Text clones are chunks of text
3421 that are kept identical by transparently propagating changes from one
3422 clone to the other.
3423
3424 ---
3425 *** The function `insert-string' is now obsolete.
3426
3427 +++
3428 ** Atomic change groups.
3429
3430 To perform some changes in the current buffer "atomically" so that
3431 they either all succeed or are all undone, use `atomic-change-group'
3432 around the code that makes changes. For instance:
3433
3434 (atomic-change-group
3435 (insert foo)
3436 (delete-region x y))
3437
3438 If an error (or other nonlocal exit) occurs inside the body of
3439 `atomic-change-group', it unmakes all the changes in that buffer that
3440 were during the execution of the body. The change group has no effect
3441 on any other buffers--any such changes remain.
3442
3443 If you need something more sophisticated, you can directly call the
3444 lower-level functions that `atomic-change-group' uses. Here is how.
3445
3446 To set up a change group for one buffer, call `prepare-change-group'.
3447 Specify the buffer as argument; it defaults to the current buffer.
3448 This function returns a "handle" for the change group. You must save
3449 the handle to activate the change group and then finish it.
3450
3451 Before you change the buffer again, you must activate the change
3452 group. Pass the handle to `activate-change-group' afterward to
3453 do this.
3454
3455 After you make the changes, you must finish the change group. You can
3456 either accept the changes or cancel them all. Call
3457 `accept-change-group' to accept the changes in the group as final;
3458 call `cancel-change-group' to undo them all.
3459
3460 You should use `unwind-protect' to make sure the group is always
3461 finished. The call to `activate-change-group' should be inside the
3462 `unwind-protect', in case the user types C-g just after it runs.
3463 (This is one reason why `prepare-change-group' and
3464 `activate-change-group' are separate functions.) Once you finish the
3465 group, don't use the handle again--don't try to finish the same group
3466 twice.
3467
3468 To make a multibuffer change group, call `prepare-change-group' once
3469 for each buffer you want to cover, then use `nconc' to combine the
3470 returned values, like this:
3471
3472 (nconc (prepare-change-group buffer-1)
3473 (prepare-change-group buffer-2))
3474
3475 You can then activate the multibuffer change group with a single call
3476 to `activate-change-group', and finish it with a single call to
3477 `accept-change-group' or `cancel-change-group'.
3478
3479 Nested use of several change groups for the same buffer works as you
3480 would expect. Non-nested use of change groups for the same buffer
3481 will lead to undesirable results, so don't let it happen; the first
3482 change group you start for any given buffer should be the last one
3483 finished.
3484
3485 ** Buffer-related changes:
3486
3487 ---
3488 *** `list-buffers-noselect' now takes an additional argument, BUFFER-LIST.
3489
3490 If it is non-nil, it specifies which buffers to list.
3491
3492 +++
3493 *** `kill-buffer-hook' is now a permanent local.
3286 3494
3287 +++ 3495 +++
3288 *** The new function `buffer-local-value' returns the buffer-local 3496 *** The new function `buffer-local-value' returns the buffer-local
3289 binding of VARIABLE (a symbol) in buffer BUFFER. If VARIABLE does not 3497 binding of VARIABLE (a symbol) in buffer BUFFER. If VARIABLE does not
3290 have a buffer-local binding in buffer BUFFER, it returns the default 3498 have a buffer-local binding in buffer BUFFER, it returns the default
3291 value of VARIABLE instead. 3499 value of VARIABLE instead.
3292
3293 +++
3294 ** There is a new facility for displaying warnings to the user.
3295
3296 See the functions `warn' and `display-warning' .
3297
3298 +++
3299 ** Progress reporters.
3300
3301 These provide a simple and uniform way for commands to present
3302 progress messages for the user.
3303
3304 See the new functions `make-progress-reporter',
3305 `progress-reporter-update', `progress-reporter-force-update',
3306 `progress-reporter-done', and `dotimes-with-progress-reporter'.
3307
3308 ** Buffer positions:
3309
3310 +++
3311 *** Function `compute-motion' now calculates the usable window
3312 width if the WIDTH argument is nil. If the TOPOS argument is nil,
3313 the usable window height and width is used.
3314
3315 +++
3316 *** The `line-move', `scroll-up', and `scroll-down' functions will now
3317 modify the window vscroll to scroll through display rows that are
3318 taller that the height of the window, for example in the presense of
3319 large images. To disable this feature, Lisp code can bind the new
3320 variable `auto-window-vscroll' to nil.
3321
3322 +++
3323 *** The argument to `forward-word', `backward-word',
3324 `forward-to-indentation' and `backward-to-indentation' is now
3325 optional, and defaults to 1.
3326
3327 +++
3328 *** Lisp code can now test if a given buffer position is inside a
3329 clickable link with the new function `mouse-on-link-p'. This is the
3330 function used by the new `mouse-1-click-follows-link' functionality.
3331
3332 +++
3333 *** New function `line-number-at-pos' returns the line number of the
3334 current line in the current buffer, or if optional buffer position is
3335 given, line number of corresponding line in current buffer.
3336
3337 +++
3338 *** `field-beginning' and `field-end' now accept an additional optional
3339 argument, LIMIT.
3340
3341 +++
3342 *** Function `pos-visible-in-window-p' now returns the pixel coordinates
3343 and partial visiblity state of the corresponding row, if the PARTIALLY
3344 arg is non-nil.
3345
3346 +++
3347 *** New functions `posn-at-point' and `posn-at-x-y' return
3348 click-event-style position information for a given visible buffer
3349 position or for a given window pixel coordinate.
3350
3351 ** Text modification:
3352
3353 +++
3354 *** The new function `insert-buffer-substring-as-yank' works like
3355 `insert-buffer-substring', but removes the text properties in the
3356 `yank-excluded-properties' list.
3357
3358 +++
3359 *** The new function `insert-buffer-substring-no-properties' is like
3360 insert-buffer-substring, but removes all text properties from the
3361 inserted substring.
3362
3363 +++
3364 *** The new function `filter-buffer-substring' extracts a buffer
3365 substring, passes it through a set of filter functions, and returns
3366 the filtered substring. It is used instead of `buffer-substring' or
3367 `delete-and-extract-region' when copying text into a user-accessible
3368 data structure, like the kill-ring, X clipboard, or a register. The
3369 list of filter function is specified by the new variable
3370 `buffer-substring-filters'. For example, Longlines mode uses
3371 `buffer-substring-filters' to remove soft newlines from the copied
3372 text.
3373
3374 +++
3375 *** Function `translate-region' accepts also a char-table as TABLE
3376 argument.
3377
3378 +++
3379 *** The new translation table `translation-table-for-input'
3380 is used for customizing self-insertion. The character to
3381 be inserted is translated through it.
3382
3383 ---
3384 *** Text clones.
3385
3386 The new function `text-clone-create'. Text clones are chunks of text
3387 that are kept identical by transparently propagating changes from one
3388 clone to the other.
3389
3390 ---
3391 *** The function `insert-string' is now obsolete.
3392
3393 ** Syntax table changes:
3394
3395 +++
3396 *** The macro `with-syntax-table' does not copy the table any more.
3397
3398 +++
3399 *** The new function `syntax-after' returns the syntax code
3400 of the character after a specified buffer position, taking account
3401 of text properties as well as the character code.
3402
3403 +++
3404 *** `syntax-class' extracts the class of a syntax code (as returned
3405 by syntax-after).
3406
3407 *** The new package `syntax.el' provides an efficient way to find the
3408 current syntactic context (as returned by `parse-partial-sexp').
3409
3410 ** GC changes:
3411
3412 +++
3413 *** New variables `gc-elapsed' and `gcs-done' provide extra information
3414 on garbage collection.
3415
3416 +++
3417 *** Functions from `post-gc-hook' are run at the end of garbage
3418 collection. The hook is run with GC inhibited, so use it with care.
3419
3420 ** Buffer-related changes:
3421
3422 ---
3423 *** `list-buffers-noselect' now takes an additional argument, BUFFER-LIST.
3424 If it is non-nil, it specifies which buffers to list.
3425
3426 +++
3427 *** `kill-buffer-hook' is now a permanent local.
3428 3500
3429 ** Local variables lists: 3501 ** Local variables lists:
3430 3502
3431 +++ 3503 +++
3432 *** Text properties in local variables. 3504 *** Text properties in local variables.
3450 with the form as argument, and if any returns t, the form is ok to call. 3522 with the form as argument, and if any returns t, the form is ok to call.
3451 3523
3452 If the form is not "ok to call", that means Emacs asks for 3524 If the form is not "ok to call", that means Emacs asks for
3453 confirmation as before. 3525 confirmation as before.
3454 3526
3455 ** Abbrev changes: 3527 ** Searching and matching changes:
3456 3528
3457 *** The new function copy-abbrev-table returns a new abbrev table that 3529 +++
3458 is a copy of a given abbrev table. 3530 *** New function `looking-back' checks whether a regular expression matches
3459 3531 the text before point. Specifying the LIMIT argument bounds how far
3460 +++ 3532 back the match can start; this is a way to keep it from taking too long.
3461 *** define-abbrev now accepts an optional argument SYSTEM-FLAG. If 3533
3462 non-nil, this marks the abbrev as a "system" abbrev, which means that 3534 +++
3463 it won't be stored in the user's abbrevs file if he saves the abbrevs. 3535 *** The new variable `search-spaces-regexp' controls how to search
3464 Major modes that predefine some abbrevs should always specify this 3536 for spaces in a regular expression. If it is non-nil, it should be a
3465 flag. 3537 regular expression, and any series of spaces stands for that regular
3538 expression. If it is nil, spaces stand for themselves.
3539
3540 Spaces inside of constructs such as `[..]' and inside loops such as
3541 `*', `+', and `?' are never replaced with `search-spaces-regexp'.
3542
3543 +++
3544 *** New regular expression operators, `\_<' and `\_>'.
3545
3546 These match the beginning and end of a symbol. A symbol is a
3547 non-empty sequence of either word or symbol constituent characters, as
3548 specified by the syntax table.
3549
3550 ---
3551 *** rx.el has new corresponding `symbol-end' and `symbol-start' elements.
3552
3553 +++
3554 *** `skip-chars-forward' and `skip-chars-backward' now handle
3555 character classes such as `[:alpha:]', along with individual
3556 characters and ranges.
3557
3558 ---
3559 *** In `replace-match', the replacement text no longer inherits
3560 properties from surrounding text.
3561
3562 +++
3563 *** The list returned by `(match-data t)' now has the buffer as a final
3564 element, if the last match was on a buffer. `set-match-data'
3565 accepts such a list for restoring the match state.
3566
3567 +++
3568 *** The default value of `sentence-end' is now defined using the new
3569 variable `sentence-end-without-space', which contains such characters
3570 that end a sentence without following spaces.
3571
3572 The function `sentence-end' should be used to obtain the value of the
3573 variable `sentence-end'. If the variable `sentence-end' is nil, then
3574 this function returns the regexp constructed from the variables
3575 `sentence-end-without-period', `sentence-end-double-space' and
3576 `sentence-end-without-space'.
3466 3577
3467 ** Undo changes: 3578 ** Undo changes:
3468 3579
3469 +++ 3580 +++
3470 *** An element of buffer-undo-list can now have the form (apply FUNNAME 3581 *** `buffer-undo-list' can allows programmable elements.
3471 . ARGS), where FUNNAME is a symbol other than t or nil. That stands 3582
3472 for a high-level change that should be undone by evaluating (apply 3583 These elements have the form (apply FUNNAME . ARGS), where FUNNAME is
3473 FUNNAME ARGS). 3584 a symbol other than t or nil. That stands for a high-level change
3585 that should be undone by evaluating (apply FUNNAME ARGS).
3474 3586
3475 These entries can also have the form (apply DELTA BEG END FUNNAME . ARGS) 3587 These entries can also have the form (apply DELTA BEG END FUNNAME . ARGS)
3476 which indicates that the change which took place was limited to the 3588 which indicates that the change which took place was limited to the
3477 range BEG...END and increased the buffer size by DELTA. 3589 range BEG...END and increased the buffer size by DELTA.
3478 3590
3479 +++ 3591 +++
3480 *** If the buffer's undo list for the current command gets longer than 3592 *** If the buffer's undo list for the current command gets longer than
3481 undo-outer-limit, garbage collection empties it. This is to prevent 3593 `undo-outer-limit', garbage collection empties it. This is to prevent
3482 it from using up the available memory and choking Emacs. 3594 it from using up the available memory and choking Emacs.
3483 3595
3484 +++ 3596 +++
3485 ** New `yank-handler' text property can be used to control how 3597 ** New `yank-handler' text property can be used to control how
3486 previously killed text on the kill-ring is reinserted. 3598 previously killed text on the kill ring is reinserted.
3487 3599
3488 The value of the yank-handler property must be a list with one to four 3600 The value of the `yank-handler' property must be a list with one to four
3489 elements with the following format: 3601 elements with the following format:
3490 (FUNCTION PARAM NOEXCLUDE UNDO). 3602 (FUNCTION PARAM NOEXCLUDE UNDO).
3491 3603
3492 The `insert-for-yank' function looks for a yank-handler property on 3604 The `insert-for-yank' function looks for a yank-handler property on
3493 the first character on its string argument (typically the first 3605 the first character on its string argument (typically the first
3494 element on the kill-ring). If a yank-handler property is found, 3606 element on the kill-ring). If a `yank-handler' property is found,
3495 the normal behavior of `insert-for-yank' is modified in various ways: 3607 the normal behavior of `insert-for-yank' is modified in various ways:
3496 3608
3497 When FUNCTION is present and non-nil, it is called instead of `insert' 3609 When FUNCTION is present and non-nil, it is called instead of `insert'
3498 to insert the string. FUNCTION takes one argument--the object to insert. 3610 to insert the string. FUNCTION takes one argument--the object to insert.
3499 If PARAM is present and non-nil, it replaces STRING as the object 3611 If PARAM is present and non-nil, it replaces STRING as the object
3500 passed to FUNCTION (or `insert'); for example, if FUNCTION is 3612 passed to FUNCTION (or `insert'); for example, if FUNCTION is
3501 `yank-rectangle', PARAM should be a list of strings to insert as a 3613 `yank-rectangle', PARAM should be a list of strings to insert as a
3502 rectangle. 3614 rectangle.
3503 If NOEXCLUDE is present and non-nil, the normal removal of the 3615 If NOEXCLUDE is present and non-nil, the normal removal of the
3504 yank-excluded-properties is not performed; instead FUNCTION is 3616 `yank-excluded-properties' is not performed; instead FUNCTION is
3505 responsible for removing those properties. This may be necessary 3617 responsible for removing those properties. This may be necessary
3506 if FUNCTION adjusts point before or after inserting the object. 3618 if FUNCTION adjusts point before or after inserting the object.
3507 If UNDO is present and non-nil, it is a function that will be called 3619 If UNDO is present and non-nil, it is a function that will be called
3508 by `yank-pop' to undo the insertion of the current object. It is 3620 by `yank-pop' to undo the insertion of the current object. It is
3509 called with two arguments, the start and end of the current region. 3621 called with two arguments, the start and end of the current region.
3510 FUNCTION can set `yank-undo-function' to override the UNDO value. 3622 FUNCTION can set `yank-undo-function' to override the UNDO value.
3511 3623
3512 *** The functions kill-new, kill-append, and kill-region now have an 3624 *** The functions `kill-new', `kill-append', and `kill-region' now have an
3513 optional argument to specify the yank-handler text property to put on 3625 optional argument to specify the `yank-handler' text property to put on
3514 the killed text. 3626 the killed text.
3515 3627
3516 *** The function yank-pop will now use a non-nil value of the variable 3628 *** The function `yank-pop' will now use a non-nil value of the variable
3517 `yank-undo-function' (instead of delete-region) to undo the previous 3629 `yank-undo-function' (instead of `delete-region') to undo the previous
3518 yank or yank-pop command (or a call to insert-for-yank). The function 3630 `yank' or `yank-pop' command (or a call to `insert-for-yank'). The function
3519 insert-for-yank automatically sets that variable according to the UNDO 3631 `insert-for-yank' automatically sets that variable according to the UNDO
3520 element of the string argument's yank-handler text property if present. 3632 element of the string argument's `yank-handler' text property if present.
3521 3633
3522 *** The function `insert-for-yank' now supports strings where the 3634 *** The function `insert-for-yank' now supports strings where the
3523 `yank-handler' property does not span the first character of the 3635 `yank-handler' property does not span the first character of the
3524 string. The old behavior is available if you call 3636 string. The old behavior is available if you call
3525 `insert-for-yank-1' instead. 3637 `insert-for-yank-1' instead.
3526 3638
3527 *** The new function insert-for-yank normally works like `insert', but 3639 ** Syntax table changes:
3528 removes the text properties in the `yank-excluded-properties' list. 3640
3529 However, the insertion of the text can be modified by a `yank-handler' 3641 +++
3530 text property. 3642 *** The macro `with-syntax-table' no longer copies the syntax table.
3643
3644 +++
3645 *** The new function `syntax-after' returns the syntax code
3646 of the character after a specified buffer position, taking account
3647 of text properties as well as the character code.
3648
3649 +++
3650 *** `syntax-class' extracts the class of a syntax code (as returned
3651 by `syntax-after').
3652
3653 *** The new function `syntax-ppss' rovides an efficient way to find the
3654 current syntactic context at point.
3531 3655
3532 ** File operation changes: 3656 ** File operation changes:
3533 3657
3534 +++ 3658 +++
3535 *** New vars `exec-suffixes' and `load-suffixes' used when 3659 *** New vars `exec-suffixes' and `load-suffixes' used when
3536 searching for an executable resp. an elisp file. 3660 searching for an executable or an Emacs Lisp file.
3537 3661
3538 +++ 3662 +++
3539 *** The new primitive `set-file-times' sets a file's access and 3663 *** The new primitive `set-file-times' sets a file's access and
3540 modification times. Magic file name handlers can handle this 3664 modification times. Magic file name handlers can handle this
3541 operation. 3665 operation.
3545 non-nil if it specifies a remote file (one that Emacs accesses using 3669 non-nil if it specifies a remote file (one that Emacs accesses using
3546 its own special methods and not directly through the file system). 3670 its own special methods and not directly through the file system).
3547 The value in that case is an identifier for the remote file system. 3671 The value in that case is an identifier for the remote file system.
3548 3672
3549 +++ 3673 +++
3550 *** `auto-save-file-format' has been renamed to 3674 *** `buffer-auto-save-file-format' is the new name for what was
3551 `buffer-auto-save-file-format' and made into a permanent local. 3675 formerly called `auto-save-file-format'. It is now a permanent local.
3552 3676
3553 +++ 3677 +++
3554 *** Functions `file-name-sans-extension' and `file-name-extension' now 3678 *** Functions `file-name-sans-extension' and `file-name-extension' now
3555 ignore the leading dots in file names, so that file names such as 3679 ignore the leading dots in file names, so that file names such as
3556 `.emacs' are treated as extensionless. 3680 `.emacs' are treated as extensionless.
3557 3681
3558 +++ 3682 +++
3559 *** copy-file now takes an additional option arg MUSTBENEW. 3683 *** `copy-file' now takes an additional option arg MUSTBENEW.
3560 3684
3561 This argument works like the MUSTBENEW argument of write-file. 3685 This argument works like the MUSTBENEW argument of write-file.
3562
3563 +++
3564 *** If the second argument to `copy-file' is the name of a directory,
3565 the file is copied to that directory instead of signaling an error.
3566 3686
3567 +++ 3687 +++
3568 *** `visited-file-modtime' and `calendar-time-from-absolute' now return 3688 *** `visited-file-modtime' and `calendar-time-from-absolute' now return
3569 a list of two integers, instead of a cons. 3689 a list of two integers, instead of a cons.
3570 3690
3579 before saving buffers. This allows packages to perform various final 3699 before saving buffers. This allows packages to perform various final
3580 tasks, for example; it can be used by the copyright package to make 3700 tasks, for example; it can be used by the copyright package to make
3581 sure saved files have the current year in any copyright headers. 3701 sure saved files have the current year in any copyright headers.
3582 3702
3583 +++ 3703 +++
3584 *** If a buffer sets buffer-save-without-query to non-nil, 3704 *** If `buffer-save-without-query' is non-nil in some buffer,
3585 save-some-buffers will always save that buffer without asking 3705 `save-some-buffers' will always save that buffer without asking (if
3586 (if it's modified). 3706 it's modified).
3587 3707
3588 *** New function `locate-file' searches for a file in a list of directories. 3708 *** New function `locate-file' searches for a file in a list of directories.
3589 `locate-file' accepts a name of a file to search (a string), and two 3709 `locate-file' accepts a name of a file to search (a string), and two
3590 lists: a list of directories to search in and a list of suffixes to 3710 lists: a list of directories to search in and a list of suffixes to
3591 try; typical usage might use `exec-path' and `load-path' for the list 3711 try; typical usage might use `exec-path' and `load-path' for the list
3596 One advantage of using this function is that the list of suffixes in 3716 One advantage of using this function is that the list of suffixes in
3597 `exec-suffixes' is OS-dependant, so this function will find 3717 `exec-suffixes' is OS-dependant, so this function will find
3598 executables without polluting Lisp code with OS dependancies. 3718 executables without polluting Lisp code with OS dependancies.
3599 3719
3600 --- 3720 ---
3601 *** The precedence of file-name-handlers has been changed. 3721 *** The precedence of file name handlers has been changed.
3602 Instead of blindly choosing the first handler that matches, 3722
3603 find-file-name-handler now gives precedence to a file-name handler 3723 Instead of choosing the first handler that matches,
3604 that matches near the end of the file name. More specifically, the 3724 `find-file-name-handler' now gives precedence to a file name handler
3605 handler whose (match-beginning 0) is the largest is chosen. 3725 that matches nearest the end of the file name. More precisely, the
3606 In case of ties, the old "first matched" rule applies. 3726 handler whose (match-beginning 0) is the largest is chosen. In case
3727 of ties, the old "first matched" rule applies.
3607 3728
3608 +++ 3729 +++
3609 *** A file name handler can declare which operations it handles. 3730 *** A file name handler can declare which operations it handles.
3610 3731
3611 You do this by putting an `operation' property on the handler name 3732 You do this by putting an `operation' property on the handler name
3619 ** Input changes: 3740 ** Input changes:
3620 3741
3621 +++ 3742 +++
3622 *** An interactive specification can now use the code letter 'U' to get 3743 *** An interactive specification can now use the code letter 'U' to get
3623 the up-event that was discarded in case the last key sequence read for a 3744 the up-event that was discarded in case the last key sequence read for a
3624 previous 'k' or 'K' argument was a down-event; otherwise nil is used. 3745 previous `k' or `K' argument was a down-event; otherwise nil is used.
3625 3746
3626 +++ 3747 +++
3627 *** The new interactive-specification `G' reads a file name 3748 *** The new interactive-specification `G' reads a file name
3628 much like `F', but if the input is a directory name (even defaulted), 3749 much like `F', but if the input is a directory name (even defaulted),
3629 it returns just the directory name. 3750 it returns just the directory name.
3630 3751
3631 --- 3752 ---
3632 *** Functions y-or-n-p, read-char, read-key-sequence and the like, that 3753 *** Functions `y-or-n-p', `read-char', `read-key-sequence' and the like, that
3633 display a prompt but don't use the minibuffer, now display the prompt 3754 display a prompt but don't use the minibuffer, now display the prompt
3634 using the text properties (esp. the face) of the prompt string. 3755 using the text properties (esp. the face) of the prompt string.
3635 3756
3636 +++ 3757 +++
3637 *** (while-no-input BODY...) runs BODY, but only so long as no input 3758 *** (while-no-input BODY...) runs BODY, but only so long as no input
3638 arrives. If the user types or clicks anything, BODY stops as if a 3759 arrives. If the user types or clicks anything, BODY stops as if a
3639 quit had occurred. while-no-input returns the value of BODY, if BODY 3760 quit had occurred. `while-no-input' returns the value of BODY, if BODY
3640 finishes. It returns nil if BODY was aborted. 3761 finishes. It returns nil if BODY was aborted.
3641 3762
3642 ** Minibuffer changes: 3763 ** Minibuffer changes:
3643 3764
3765 +++
3644 *** The new function `minibufferp' returns non-nil if its optional 3766 *** The new function `minibufferp' returns non-nil if its optional
3645 buffer argument is a minibuffer. If the argument is omitted, it 3767 buffer argument is a minibuffer. If the argument is omitted, it
3646 defaults to the current buffer. 3768 defaults to the current buffer.
3647 3769
3648 +++ 3770 +++
3649 *** New function minibuffer-selected-window returns the window which 3771 *** New function `minibuffer-selected-window' returns the window which
3650 was selected when entering the minibuffer. 3772 was selected when entering the minibuffer.
3651 3773
3652 +++ 3774 +++
3653 *** read-from-minibuffer now accepts an additional argument KEEP-ALL 3775 *** `read-from-minibuffer' now accepts an additional argument KEEP-ALL
3654 saying to put all inputs in the history list, even empty ones. 3776 saying to put all inputs in the history list, even empty ones.
3655 3777
3656 +++ 3778 +++
3657 *** The `read-file-name' function now takes an additional argument which 3779 *** The `read-file-name' function now takes an additional argument which
3658 specifies a predicate which the file name read must satify. The 3780 specifies a predicate which the file name read must satify. The
3659 new variable `read-file-name-predicate' contains the predicate argument 3781 new variable `read-file-name-predicate' contains the predicate argument
3660 while reading the file name from the minibuffer; the predicate in this 3782 while reading the file name from the minibuffer; the predicate in this
3661 variable is used by read-file-name-internal to filter the completion list. 3783 variable is used by read-file-name-internal to filter the completion list.
3662 3784
3663 --- 3785 ---
3664 *** The new variable `read-file-name-function' can be used by lisp code 3786 *** The new variable `read-file-name-function' can be used by Lisp code
3665 to override the internal read-file-name function. 3787 to override the built-in `read-file-name' function.
3666 3788
3667 +++ 3789 +++
3668 *** The new variable `read-file-name-completion-ignore-case' specifies 3790 *** The new variable `read-file-name-completion-ignore-case' specifies
3669 whether completion ignores case when reading a file name with the 3791 whether completion ignores case when reading a file name with the
3670 `read-file-name' function. 3792 `read-file-name' function.
3671 3793
3672 +++ 3794 +++
3673 *** The new function `read-directory-name' can be used instead of 3795 *** The new function `read-directory-name' for reading a directory name.
3674 `read-file-name' to read a directory name; when used, completion 3796
3675 will only show directories. 3797 It is like `read-file-name' except that the defaulting works better
3676 3798 for directories, and completion inside it shows only directories.
3677 ** Searching and matching changes: 3799
3678 3800 ** Completion changes:
3679 +++ 3801
3680 *** New function `looking-back' checks whether a regular expression matches 3802 +++
3681 the text before point. Specifying the LIMIT argument bounds how far 3803 *** The functions `all-completions' and `try-completion' now accept lists
3682 back the match can start; this is a way to keep it from taking too long. 3804 of strings as well as hash-tables additionally to alists, obarrays
3683 3805 and functions. Furthermore, the function `test-completion' is now
3684 +++ 3806 exported to Lisp. The keys in alists and hash tables can be either
3685 *** The new variable search-spaces-regexp controls how to search 3807 strings or symbols, which are automatically converted with to strings.
3686 for spaces in a regular expression. If it is non-nil, it should be a 3808
3687 regular expression, and any series of spaces stands for that regular 3809 +++
3688 expression. If it is nil, spaces stand for themselves. 3810 *** The new macro `dynamic-completion-table' supports using functions
3689 3811 as a dynamic completion table.
3690 Spaces inside of constructs such as [..] and *, +, ? are never 3812
3691 replaced with search-spaces-regexp. 3813 (dynamic-completion-table FUN)
3692 3814
3693 +++ 3815 FUN is called with one argument, the string for which completion is required,
3694 *** There are now two new regular expression operators, \_< and \_>, 3816 and it should return an alist containing all the intended possible
3695 for matching the beginning and end of a symbol. A symbol is a 3817 completions. This alist can be a full list of possible completions so that FUN
3696 non-empty sequence of either word or symbol constituent characters, as 3818 can ignore the value of its argument. If completion is performed in the
3697 specified by the syntax table. 3819 minibuffer, FUN will be called in the buffer from which the minibuffer was
3698 3820 entered. `dynamic-completion-table' then computes the completion.
3699 +++ 3821
3700 *** skip-chars-forward and skip-chars-backward now handle 3822 +++
3701 character classes such as [:alpha:], along with individual characters 3823 *** The new macro `lazy-completion-table' initializes a variable
3702 and ranges. 3824 as a lazy completion table.
3703 3825
3704 --- 3826 (lazy-completion-table VAR FUN &rest ARGS)
3705 *** In `replace-match', the replacement text no longer inherits 3827
3706 properties from surrounding text. 3828 If the completion table VAR is used for the first time (e.g., by passing VAR
3707 3829 as an argument to `try-completion'), the function FUN is called with arguments
3708 +++ 3830 ARGS. FUN must return the completion table that will be stored in VAR. If
3709 *** The list returned by `(match-data t)' now has the buffer as a final 3831 completion is requested in the minibuffer, FUN will be called in the buffer
3710 element, if the last match was on a buffer. `set-match-data' 3832 from which the minibuffer was entered. The return value of
3711 accepts such a list for restoring the match state. 3833 `lazy-completion-table' must be used to initialize the value of VAR.
3712
3713 ---
3714 *** rx.el has new corresponding `symbol-end' and `symbol-start' elements.
3715
3716 +++
3717 *** The default value of `sentence-end' is now defined using the new
3718 variable `sentence-end-without-space', which contains such characters
3719 that end a sentence without following spaces.
3720
3721 The function `sentence-end' should be used to obtain the value of the
3722 variable `sentence-end'. If the variable `sentence-end' is nil, then
3723 this function returns the regexp constructed from the variables
3724 `sentence-end-without-period', `sentence-end-double-space' and
3725 `sentence-end-without-space'.
3726 3834
3727 +++ 3835 +++
3728 ** Enhancements to keymaps. 3836 ** Enhancements to keymaps.
3729 3837
3730 *** Cleaner way to enter key sequences. 3838 *** Cleaner way to enter key sequences.
3735 3843
3736 (kbd "C-x C-f") => "\^x\^f" 3844 (kbd "C-x C-f") => "\^x\^f"
3737 3845
3738 *** Interactive commands can be remapped through keymaps. 3846 *** Interactive commands can be remapped through keymaps.
3739 3847
3740 This is an alternative to using defadvice or substitute-key-definition 3848 This is an alternative to using `defadvice' or `substitute-key-definition'
3741 to modify the behavior of a key binding using the normal keymap 3849 to modify the behavior of a key binding using the normal keymap
3742 binding and lookup functionality. 3850 binding and lookup functionality.
3743 3851
3744 When a key sequence is bound to a command, and that command is 3852 When a key sequence is bound to a command, and that command is
3745 remapped to another command, that command is run instead of the 3853 remapped to another command, that command is run instead of the
3746 original command. 3854 original command.
3747 3855
3748 Example: 3856 Example:
3749 Suppose that minor mode my-mode has defined the commands 3857 Suppose that minor mode `my-mode' has defined the commands
3750 my-kill-line and my-kill-word, and it wants C-k (and any other key 3858 `my-kill-line' and `my-kill-word', and it wants C-k (and any other key
3751 bound to kill-line) to run the command my-kill-line instead of 3859 bound to `kill-line') to run the command `my-kill-line' instead of
3752 kill-line, and likewise it wants to run my-kill-word instead of 3860 `kill-line', and likewise it wants to run `my-kill-word' instead of
3753 kill-word. 3861 `kill-word'.
3754 3862
3755 Instead of rebinding C-k and the other keys in the minor mode map, 3863 Instead of rebinding C-k and the other keys in the minor mode map,
3756 command remapping allows you to directly map kill-line into 3864 command remapping allows you to directly map `kill-line' into
3757 my-kill-line and kill-word into my-kill-word through the minor mode 3865 `my-kill-line' and `kill-word' into `my-kill-word' using `define-key':
3758 map using define-key:
3759 3866
3760 (define-key my-mode-map [remap kill-line] 'my-kill-line) 3867 (define-key my-mode-map [remap kill-line] 'my-kill-line)
3761 (define-key my-mode-map [remap kill-word] 'my-kill-word) 3868 (define-key my-mode-map [remap kill-word] 'my-kill-word)
3762 3869
3763 Now, when my-mode is enabled, and the user enters C-k or M-d, 3870 When `my-mode' is enabled, its minor mode keymap is enabled too. So
3764 the commands my-kill-line and my-kill-word are run. 3871 when the user types C-k, that runs the command `my-kill-line'.
3765 3872
3766 Notice that only one level of remapping is supported. In the above 3873 Only one level of remapping is supported. In the above example, this
3767 example, this means that if my-kill-line is remapped to other-kill, 3874 means that if `my-kill-line' is remapped to `other-kill', then C-k still
3768 then C-k still runs my-kill-line. 3875 runs `my-kill-line'.
3769 3876
3770 The following changes have been made to provide command remapping: 3877 The following changes have been made to provide command remapping:
3771 3878
3772 - Command remappings are defined using `define-key' with a prefix-key 3879 - Command remappings are defined using `define-key' with a prefix-key
3773 `remap', i.e. `(define-key MAP [remap CMD] DEF)' remaps command CMD 3880 `remap', i.e. `(define-key MAP [remap CMD] DEF)' remaps command CMD
3775 another command; it can be anything accepted for a normal binding. 3882 another command; it can be anything accepted for a normal binding.
3776 3883
3777 - The new function `command-remapping' returns the binding for a 3884 - The new function `command-remapping' returns the binding for a
3778 remapped command in the current keymaps, or nil if not remapped. 3885 remapped command in the current keymaps, or nil if not remapped.
3779 3886
3780 - key-binding now remaps interactive commands unless the optional 3887 - `key-binding' now remaps interactive commands unless the optional
3781 third argument NO-REMAP is non-nil. 3888 third argument NO-REMAP is non-nil.
3782 3889
3783 - where-is-internal now returns nil for a remapped command (e.g. 3890 - `where-is-internal' now returns nil for a remapped command (e.g.
3784 kill-line if my-mode is enabled), and the actual key binding for 3891 `kill-line', when `my-mode' is enabled), and the actual key binding for
3785 the command it is remapped to (e.g. C-k for my-kill-line). 3892 the command it is remapped to (e.g. C-k for my-kill-line).
3786 It also has a new optional fifth argument, NO-REMAP, which inhibits 3893 It also has a new optional fifth argument, NO-REMAP, which inhibits
3787 remapping if non-nil (e.g. it returns C-k for kill-line and 3894 remapping if non-nil (e.g. it returns "C-k" for `kill-line', and
3788 <kill-line> for my-kill-line). 3895 "<kill-line>" for `my-kill-line').
3789 3896
3790 - The new variable `this-original-command' contains the original 3897 - The new variable `this-original-command' contains the original
3791 command before remapping. It is equal to `this-command' when the 3898 command before remapping. It is equal to `this-command' when the
3792 command was not remapped. 3899 command was not remapped.
3793 3900
3794 *** If text has a `keymap' property, that keymap takes precedence 3901 *** If text has a `keymap' property, that keymap takes precedence
3795 over minor mode keymaps. 3902 over minor mode keymaps.
3796 3903
3797 *** The `keymap' property now also works at the ends of overlays and 3904 *** The `keymap' property now also works at the ends of overlays and
3798 text-properties, according to their stickiness. This also means that it 3905 text properties, according to their stickiness. This also means that it
3799 works with empty overlays. The same hold for the `local-map' property. 3906 works with empty overlays. The same hold for the `local-map' property.
3800 3907
3801 *** Dense keymaps now handle inheritance correctly. 3908 *** Dense keymaps now handle inheritance correctly.
3909
3802 Previously a dense keymap would hide all of the simple-char key 3910 Previously a dense keymap would hide all of the simple-char key
3803 bindings of the parent keymap. 3911 bindings of the parent keymap.
3804 3912
3805 *** `define-key-after' now accepts keys longer than 1. 3913 *** `define-key-after' now accepts keys longer than 1.
3806 3914
3808 active keymaps. 3916 active keymaps.
3809 3917
3810 *** New function `describe-buffer-bindings' inserts the list of all 3918 *** New function `describe-buffer-bindings' inserts the list of all
3811 defined keys and their definitions. 3919 defined keys and their definitions.
3812 3920
3813 *** New function `keymap-prompt' returns the prompt-string of a keymap 3921 *** New function `keymap-prompt' returns the prompt string of a keymap.
3814 3922
3815 *** (map-keymap FUNCTION KEYMAP) applies the function to each binding 3923 *** (map-keymap FUNCTION KEYMAP) applies the function to each binding
3816 in the keymap. 3924 in the keymap.
3817 3925
3818 *** New variable emulation-mode-map-alists. 3926 *** New variable `emulation-mode-map-alists'.
3819 3927
3820 Lisp packages using many minor mode keymaps can now maintain their own 3928 Lisp packages using many minor mode keymaps can now maintain their own
3821 keymap alist separate from minor-mode-map-alist by adding their keymap 3929 keymap alist separate from `minor-mode-map-alist' by adding their
3822 alist to this list. 3930 keymap alist to this list.
3823 3931
3824 +++ 3932 ** Abbrev changes:
3825 ** Atomic change groups. 3933
3826 3934 +++
3827 To perform some changes in the current buffer "atomically" so that 3935 *** The new function `copy-abbrev-table' copies an abbrev table.
3828 they either all succeed or are all undone, use `atomic-change-group' 3936
3829 around the code that makes changes. For instance: 3937 It returns a new abbrev table that is a copy of a given abbrev table.
3830 3938
3831 (atomic-change-group 3939 +++
3832 (insert foo) 3940 *** `define-abbrev' now accepts an optional argument SYSTEM-FLAG.
3833 (delete-region x y)) 3941
3834 3942 If non-nil, this marks the abbrev as a "system" abbrev, which means
3835 If an error (or other nonlocal exit) occurs inside the body of 3943 that it won't be stored in the user's abbrevs file if he saves the
3836 `atomic-change-group', it unmakes all the changes in that buffer that 3944 abbrevs. Major modes that predefine some abbrevs should always
3837 were during the execution of the body. The change group has no effect 3945 specify this flag.
3838 on any other buffers--any such changes remain.
3839
3840 If you need something more sophisticated, you can directly call the
3841 lower-level functions that `atomic-change-group' uses. Here is how.
3842
3843 To set up a change group for one buffer, call `prepare-change-group'.
3844 Specify the buffer as argument; it defaults to the current buffer.
3845 This function returns a "handle" for the change group. You must save
3846 the handle to activate the change group and then finish it.
3847
3848 Before you change the buffer again, you must activate the change
3849 group. Pass the handle to `activate-change-group' afterward to
3850 do this.
3851
3852 After you make the changes, you must finish the change group. You can
3853 either accept the changes or cancel them all. Call
3854 `accept-change-group' to accept the changes in the group as final;
3855 call `cancel-change-group' to undo them all.
3856
3857 You should use `unwind-protect' to make sure the group is always
3858 finished. The call to `activate-change-group' should be inside the
3859 `unwind-protect', in case the user types C-g just after it runs.
3860 (This is one reason why `prepare-change-group' and
3861 `activate-change-group' are separate functions.) Once you finish the
3862 group, don't use the handle again--don't try to finish the same group
3863 twice.
3864
3865 To make a multibuffer change group, call `prepare-change-group' once
3866 for each buffer you want to cover, then use `nconc' to combine the
3867 returned values, like this:
3868
3869 (nconc (prepare-change-group buffer-1)
3870 (prepare-change-group buffer-2))
3871
3872 You can then activate the multibuffer change group with a single call
3873 to `activate-change-group', and finish it with a single call to
3874 `accept-change-group' or `cancel-change-group'.
3875
3876 Nested use of several change groups for the same buffer works as you
3877 would expect. Non-nested use of change groups for the same buffer
3878 will lead to undesirable results, so don't let it happen; the first
3879 change group you start for any given buffer should be the last one
3880 finished.
3881 3946
3882 +++ 3947 +++
3883 ** Enhancements to process support 3948 ** Enhancements to process support
3884 3949
3885 *** Function list-processes now has an optional argument; if non-nil, 3950 *** Function `list-processes' now has an optional argument; if non-nil,
3886 only the processes whose query-on-exit flag is set are listed. 3951 it lists only the processes whose query-on-exit flag is set.
3887 3952
3888 *** New set-process-query-on-exit-flag and process-query-on-exit-flag 3953 *** New fns `set-process-query-on-exit-flag' and `process-query-on-exit-flag'.
3889 functions. The existing process-kill-without-query function is still 3954
3890 supported, but new code should use the new functions. 3955 These replace the old function `process-kill-without-query'. That
3891 3956 function is still supported, but new code should use the new
3892 *** Function signal-process now accepts a process object or process 3957 functions.
3958
3959 *** Function `signal-process' now accepts a process object or process
3893 name in addition to a process id to identify the signalled process. 3960 name in addition to a process id to identify the signalled process.
3894 3961
3895 *** Processes now have an associated property list where programs can 3962 *** Processes now have an associated property list where programs can
3896 maintain process state and other per-process related information. 3963 maintain process state and other per-process related information.
3897 3964
3898 The new functions process-get and process-put are used to access, add, 3965 Use the new functions `process-get' and `process-put' to access, add,
3899 and modify elements on this property list. 3966 and modify elements on this property list. Use the new functions
3900 3967 `process-plist' and `set-process-plist' to access and replace the
3901 The new low-level functions process-plist and set-process-plist are 3968 entire property list of a process.
3902 used to access and replace the entire property list of a process. 3969
3903 3970 *** Function `accept-process-output' has a new optional fourth arg
3904 *** Function accept-process-output now has an optional fourth arg 3971 JUST-THIS-ONE. If non-nil, only output from the specified process
3905 `just-this-one'. If non-nil, only output from the specified process
3906 is handled, suspending output from other processes. If value is an 3972 is handled, suspending output from other processes. If value is an
3907 integer, also inhibit running timers. This feature is generally not 3973 integer, also inhibit running timers. This feature is generally not
3908 recommended, but may be necessary for specific applications, such as 3974 recommended, but may be necessary for specific applications, such as
3909 speech synthesis. 3975 speech synthesis.
3910 3976
3911 *** Adaptive read buffering of subprocess output. 3977 *** Adaptive read buffering of subprocess output.
3912 3978
3913 On some systems, when emacs reads the output from a subprocess, the 3979 On some systems, when emacs reads the output from a subprocess, the
3914 output data is read in very small blocks, potentially resulting in 3980 output data is read in very small blocks, potentially resulting in
3915 very poor performance. This behavior can be remedied to some extent 3981 very poor performance. This behavior can be remedied to some extent
3916 by setting the new variable process-adaptive-read-buffering to a 3982 by setting the new variable `process-adaptive-read-buffering' to a
3917 non-nil value (the default), as it will automatically delay reading 3983 non-nil value (the default), as it will automatically delay reading
3918 from such processes, to allowing them to produce more output before 3984 from such processes, to allowing them to produce more output before
3919 emacs tries to read it. 3985 emacs tries to read it.
3920 3986
3921 *** The new function `call-process-shell-command'. 3987 *** The new function `call-process-shell-command'.
3925 3991
3926 *** The new function `process-file' is similar to `call-process', but 3992 *** The new function `process-file' is similar to `call-process', but
3927 obeys file handlers. The file handler is chosen based on 3993 obeys file handlers. The file handler is chosen based on
3928 `default-directory'. 3994 `default-directory'.
3929 3995
3930 *** A filter function of a process is called with a multibyte string 3996 *** A process filter function gets the output as multibyte string
3931 if the filter's multibyteness is t. That multibyteness is decided by 3997 if the process specifies t for its filter's multibyteness.
3932 the value of `default-enable-multibyte-characters' when the process is 3998
3933 created and can be changed later by `set-process-filter-multibyte'. 3999 That multibyteness is decided by the value of
4000 `default-enable-multibyte-characters' when the process is created, and
4001 you can change it later with `set-process-filter-multibyte'.
3934 4002
3935 *** The new function `set-process-filter-multibyte' sets the 4003 *** The new function `set-process-filter-multibyte' sets the
3936 multibyteness of the strings passed to the process's filter. 4004 multibyteness of the strings passed to the process's filter.
3937 4005
3938 *** The new function `process-filter-multibyte-p' returns the 4006 *** The new function `process-filter-multibyte-p' returns the
3945 which was not compatible with the behavior of file reading. 4013 which was not compatible with the behavior of file reading.
3946 4014
3947 +++ 4015 +++
3948 ** Enhanced networking support. 4016 ** Enhanced networking support.
3949 4017
3950 *** There is a new `make-network-process' function which supports 4018 *** The new `make-network-process' function makes network connections.
3951 opening of stream and datagram connections to a server, as well as 4019 It allows opening of stream and datagram connections to a server, as well as
3952 create a stream or datagram server inside emacs. 4020 create a stream or datagram server inside emacs.
3953 4021
3954 - A server is started using :server t arg. 4022 - A server is started using :server t arg.
3955 - Datagram connection is selected using :type 'datagram arg. 4023 - Datagram connection is selected using :type 'datagram arg.
3956 - A server can open on a random port using :service t arg. 4024 - A server can open on a random port using :service t arg.
3961 by new client processes created to handle incoming connections. 4029 by new client processes created to handle incoming connections.
3962 4030
3963 To test for the availability of a given feature, use featurep like this: 4031 To test for the availability of a given feature, use featurep like this:
3964 (featurep 'make-network-process '(:type datagram)) 4032 (featurep 'make-network-process '(:type datagram))
3965 4033
3966 *** Original open-network-stream is now emulated using make-network-process. 4034 *** The old `open-network-stream' now uses `make-network-process'.
3967 4035
3968 *** New function open-network-stream-nowait. 4036 *** New functions `process-datagram-address', `set-process-datagram-address'.
3969
3970 This function initiates a non-blocking connect and returns immediately
3971 without waiting for the connection to be established. It takes the
3972 filter and sentinel functions as arguments; when the non-blocking
3973 connect completes, the sentinel is called with a status string
3974 matching "open" or "failed".
3975
3976 *** New function open-network-stream-server.
3977
3978 This function creates a network server process for a TCP service.
3979 When a client connects to the specified service, a new subprocess
3980 is created to handle the new connection, and the sentinel function
3981 is called for the new process.
3982
3983 *** New functions process-datagram-address and set-process-datagram-address.
3984 4037
3985 These functions are used with datagram-based network processes to get 4038 These functions are used with datagram-based network processes to get
3986 and set the current address of the remote partner. 4039 and set the current address of the remote partner.
3987 4040
3988 *** New function format-network-address. 4041 *** New function `format-network-address'.
3989 4042
3990 This function reformats the lisp representation of a network address 4043 This function reformats the Lisp representation of a network address
3991 to a printable string. For example, an IP address A.B.C.D and port 4044 to a printable string. For example, an IP address A.B.C.D and port
3992 number P is represented as a five element vector [A B C D P], and the 4045 number P is represented as a five element vector [A B C D P], and the
3993 printable string returned for this vector is "A.B.C.D:P". See the doc 4046 printable string returned for this vector is "A.B.C.D:P". See the doc
3994 string for other formatting options. 4047 string for other formatting options.
3995 4048
3996 *** By default, the function process-contact still returns (HOST SERVICE) 4049 *** `process-contact' has an optional KEY argument.
3997 for a network process. Using the new optional KEY arg, the complete list 4050
3998 of network process properties or a specific property can be selected. 4051 Depending on this argument, you can get the complete list of network
3999 4052 process properties or a specific property. Using :local or :remote as
4000 Using :local and :remote as the KEY, the address of the local or 4053 the KEY, you get the address of the local or remote end-point.
4001 remote end-point is returned. An Inet address is represented as a 5 4054
4002 element vector, where the first 4 elements contain the IP address and 4055 An Inet address is represented as a 5 element vector, where the first
4003 the fifth is the port number. 4056 4 elements contain the IP address and the fifth is the port number.
4004 4057
4005 *** Network processes can now be stopped and restarted with 4058 *** New functions `stop-process' and `continue-process'.
4006 `stop-process' and `continue-process'. For a server process, no 4059
4007 connections are accepted in the stopped state. For a client process, 4060 These functions stop and restart communication through a network
4008 no input is received in the stopped state. 4061 connection. For a server process, no connections are accepted in the
4009 4062 stopped state. For a client process, no input is received in the
4010 *** New function network-interface-list. 4063 stopped state.
4064
4065 *** New function `network-interface-list'.
4011 4066
4012 This function returns a list of network interface names and their 4067 This function returns a list of network interface names and their
4013 current network addresses. 4068 current network addresses.
4014 4069
4015 *** New function network-interface-info. 4070 *** New function `network-interface-info'.
4016 4071
4017 This function returns the network address, hardware address, current 4072 This function returns the network address, hardware address, current
4018 status, and other information about a specific network interface. 4073 status, and other information about a specific network interface.
4019 4074
4020 *** The sentinel is now called when a network process is deleted with 4075 *** Deleting a network process with `delete-process' calls the sentinel.
4021 delete-process. The status message passed to the sentinel for a 4076
4022 deleted network process is "deleted". The message passed to the 4077 The status message passed to the sentinel for a deleted network
4023 sentinel when the connection is closed by the remote peer has been 4078 process is "deleted". The message passed to the sentinel when the
4024 changed to "connection broken by remote peer". 4079 connection is closed by the remote peer has been changed to
4080 "connection broken by remote peer".
4025 4081
4026 ** Using window objects: 4082 ** Using window objects:
4027 4083
4028 +++ 4084 +++
4029 *** New function `window-body-height'. 4085 *** New function `window-body-height'.
4032 header line. 4088 header line.
4033 4089
4034 +++ 4090 +++
4035 *** New function `window-body-height'. 4091 *** New function `window-body-height'.
4036 4092
4037 This is like window-height but does not count the mode line 4093 This is like `window-height' but does not count the mode line
4038 or the header line. 4094 or the header line.
4039 4095
4040 +++ 4096 +++
4041 *** You can now make a window as short as one line. 4097 *** You can now make a window as short as one line.
4042 4098
4059 +++ 4115 +++
4060 *** The new macro `with-selected-window' temporarily switches the 4116 *** The new macro `with-selected-window' temporarily switches the
4061 selected window without impacting the order of `buffer-list'. 4117 selected window without impacting the order of `buffer-list'.
4062 4118
4063 +++ 4119 +++
4064 *** `select-window' takes an optional second argument `norecord'. 4120 *** `select-window' takes an optional second argument NORECORD.
4065 4121
4066 This is like `switch-to-buffer'. 4122 This is like `switch-to-buffer'.
4067 4123
4068 +++ 4124 +++
4069 *** `save-selected-window' now saves and restores the selected window 4125 *** `save-selected-window' now saves and restores the selected window
4086 identifing the bitmap such as `left-truncation or `continued-line'. 4142 identifing the bitmap such as `left-truncation or `continued-line'.
4087 4143
4088 *** New function `destroy-fringe-bitmap' deletes a fringe bitmap 4144 *** New function `destroy-fringe-bitmap' deletes a fringe bitmap
4089 or restores a built-in one to its default value. 4145 or restores a built-in one to its default value.
4090 4146
4091 *** New function `set-fringe-bitmap-face' can now be used to set a 4147 *** New function `set-fringe-bitmap-face' specifies the face to be
4092 specific face to be used for a specific fringe bitmap. The face is 4148 used for a specific fringe bitmap. The face is automatically merged
4093 automatically merged with the `fringe' face, so normally, the face 4149 with the `fringe' face, so normally, the face should only specify the
4094 should only specify the foreground color of the bitmap. 4150 foreground color of the bitmap.
4095 4151
4096 *** There are new display properties, `left-fringe; and `right-fringe', 4152 *** There are new display properties, `left-fringe' and `right-fringe',
4097 that can be used to show a specific bitmap in the left or right fringe 4153 that can be used to show a specific bitmap in the left or right fringe
4098 bitmap of the display line. 4154 bitmap of the display line.
4099 4155
4100 Format is `display (left-fringe BITMAP [FACE])', where BITMAP is a 4156 Format is `display (left-fringe BITMAP [FACE])', where BITMAP is a
4101 symbol identifying a fringe bitmap, either built-in or defined with 4157 symbol identifying a fringe bitmap, either built-in or defined with
4234 4290
4235 If the `line-spacing' property is a float or cons, the line spacing 4291 If the `line-spacing' property is a float or cons, the line spacing
4236 is calculated as specified above for the `line-height' property. 4292 is calculated as specified above for the `line-height' property.
4237 4293
4238 +++ 4294 +++
4239 *** The buffer local line-spacing variable can now have a float value, 4295 *** The buffer local `line-spacing' variable can now have a float value,
4240 which is used as a height relative to the default frame line height. 4296 which is used as a height relative to the default frame line height.
4241 4297
4242 +++ 4298 +++
4243 *** Enhancements to stretch display properties 4299 *** Enhancements to stretch display properties
4244 4300
4284 For example, to align to the center of the left-margin, use 4340 For example, to align to the center of the left-margin, use
4285 :align-to (+ left-margin (0.5 . left-margin)) 4341 :align-to (+ left-margin (0.5 . left-margin))
4286 4342
4287 If no specific base offset is set for alignment, it is always relative 4343 If no specific base offset is set for alignment, it is always relative
4288 to the left edge of the text area. For example, :align-to 0 in a 4344 to the left edge of the text area. For example, :align-to 0 in a
4289 header-line aligns with the first text column in the text area. 4345 header line aligns with the first text column in the text area.
4290 4346
4291 The value of the form `(NUM . EXPR)' is the value of NUM multiplied by 4347 The value of the form `(NUM . EXPR)' is the value of NUM multiplied by
4292 the value of the expression EXPR. For example, (2 . in) specifies a 4348 the value of the expression EXPR. For example, (2 . in) specifies a
4293 width of 2 inches, while (0.5 . IMAGE) specifies half the width (or 4349 width of 2 inches, while (0.5 . IMAGE) specifies half the width (or
4294 height) of the specified image. 4350 height) of the specified image.
4310 *** Support for displaying image slices 4366 *** Support for displaying image slices
4311 4367
4312 **** New display property (slice X Y WIDTH HEIGHT) can be used with 4368 **** New display property (slice X Y WIDTH HEIGHT) can be used with
4313 an image property to display only a specific slice of the image. 4369 an image property to display only a specific slice of the image.
4314 4370
4315 **** Function insert-image has new optional fourth arg to 4371 **** Function `insert-image' has new optional fourth arg to
4316 specify image slice (X Y WIDTH HEIGHT). 4372 specify image slice (X Y WIDTH HEIGHT).
4317 4373
4318 **** New function insert-sliced-image inserts a given image as a 4374 **** New function `insert-sliced-image' inserts a given image as a
4319 specified number of evenly sized slices (rows x columns). 4375 specified number of evenly sized slices (rows x columns).
4320 4376
4321 +++ 4377 +++
4322 *** Images can now have an associated image map via the :map property. 4378 *** Images can now have an associated image map via the :map property.
4323 4379
4332 4388
4333 When the mouse pointer is above a hot-spot area of an image, the 4389 When the mouse pointer is above a hot-spot area of an image, the
4334 PLIST of that hot-spot is consulted; if it contains a `help-echo' 4390 PLIST of that hot-spot is consulted; if it contains a `help-echo'
4335 property it defines a tool-tip for the hot-spot, and if it contains 4391 property it defines a tool-tip for the hot-spot, and if it contains
4336 a `pointer' property, it defines the shape of the mouse cursor when 4392 a `pointer' property, it defines the shape of the mouse cursor when
4337 it is over the hot-spot. See the variable 'void-area-text-pointer' 4393 it is over the hot-spot. See the variable `void-area-text-pointer'
4338 for possible pointer shapes. 4394 for possible pointer shapes.
4339 4395
4340 When you click the mouse when the mouse pointer is over a hot-spot, 4396 When you click the mouse when the mouse pointer is over a hot-spot,
4341 an event is composed by combining the ID of the hot-spot with the 4397 an event is composed by combining the ID of the hot-spot with the
4342 mouse event, e.g. [area4 mouse-1] if the hot-spot's ID is `area4'. 4398 mouse event, e.g. [area4 mouse-1] if the hot-spot's ID is `area4'.
4360 controlled/overriden via the `pointer' text property. 4416 controlled/overriden via the `pointer' text property.
4361 4417
4362 ** Mouse event enhancements: 4418 ** Mouse event enhancements:
4363 4419
4364 +++ 4420 +++
4365 *** Mouse clicks on fringes now generates left-fringe or right-fringes 4421 *** Mouse events for clicks on window fringes now specify `left-fringe'
4366 events, rather than a text area click event. 4422 or `right-fringe' as the area.
4367 4423
4368 +++ 4424 +++
4369 *** Mouse clicks in the left and right marginal areas now includes a 4425 *** All mouse events now include a buffer position regardless of where
4370 sensible buffer position corresponding to the first character in the 4426 you clicked. For mouse clicks in window margins and fringes, this is
4371 corresponding text row. 4427 a sensible buffer position corresponding to the surrounding text.
4428
4429 +++
4430 *** `posn-point' now returns buffer position for non-text area events.
4372 4431
4373 +++ 4432 +++
4374 *** Function `mouse-set-point' now works for events outside text area. 4433 *** Function `mouse-set-point' now works for events outside text area.
4375
4376 +++
4377 *** Mouse events now includes buffer position for all event types.
4378
4379 +++
4380 *** `posn-point' now returns buffer position for non-text area events.
4381 4434
4382 +++ 4435 +++
4383 *** New function `posn-area' returns window area clicked on (nil means 4436 *** New function `posn-area' returns window area clicked on (nil means
4384 text area). 4437 text area).
4385 4438
4386 +++ 4439 +++
4387 *** Mouse events include actual glyph column and row for all event types. 4440 *** Mouse events include actual glyph column and row for all event types
4388 4441 and all areas.
4389 +++ 4442
4390 *** New function `posn-actual-col-row' returns actual glyph coordinates. 4443 +++
4391 4444 *** New function `posn-actual-col-row' returns the actual glyph coordinates
4392 +++ 4445 of the mouse event position.
4393 *** Mouse events can now include image object in addition to string object. 4446
4394 4447 +++
4395 +++ 4448 *** Mouse events can now indicate an image object clicked on.
4396 *** Mouse events include relative x and y pixel coordinates relative to 4449
4450 +++
4451 *** Mouse events include relative X and Y pixel coordinates relative to
4397 the top left corner of the object (image or character) clicked on. 4452 the top left corner of the object (image or character) clicked on.
4398 4453
4399 +++ 4454 +++
4400 *** Mouse events include the pixel width and height of the object 4455 *** Mouse events include the pixel width and height of the object
4401 (image or character) clicked on. 4456 (image or character) clicked on.
4402 4457
4403 +++ 4458 +++
4404 *** New functions 'posn-object', 'posn-object-x-y', and 4459 *** New functions 'posn-object', 'posn-object-x-y', 'posn-object-width-height'.
4405 'posn-object-width-height' return the image or string object of a mouse 4460
4406 click, the x and y pixel coordinates relative to the top left corner 4461 These return the image or string object of a mouse click, the X and Y
4407 of that object, and the total width and height of that object. 4462 pixel coordinates relative to the top left corner of that object, and
4463 the total width and height of that object.
4408 4464
4409 ** Text property and overlay changes: 4465 ** Text property and overlay changes:
4410 4466
4411 +++ 4467 +++
4412 *** Arguments for remove-overlays are now optional, so that you can 4468 *** Arguments for `remove-overlays' are now optional, so that you can
4413 remove all overlays in the buffer by just calling (remove-overlays). 4469 remove all overlays in the buffer with just (remove-overlays).
4414 4470
4415 +++ 4471 +++
4416 *** New variable char-property-alias-alist. 4472 *** New variable `char-property-alias-alist'.
4417 4473
4418 This variable allows you to create alternative names for text 4474 This variable allows you to create alternative names for text
4419 properties. It works at the same level as `default-text-properties', 4475 properties. It works at the same level as `default-text-properties',
4420 although it applies to overlays as well. This variable was introduced 4476 although it applies to overlays as well. This variable was introduced
4421 to implement the `font-lock-face' property. 4477 to implement the `font-lock-face' property.
4426 return value of `get-char-property' called with those arguments and 4482 return value of `get-char-property' called with those arguments and
4427 whose cdr is the overlay in which the property was found, or nil if 4483 whose cdr is the overlay in which the property was found, or nil if
4428 it was found as a text property or not found at all. 4484 it was found as a text property or not found at all.
4429 4485
4430 +++ 4486 +++
4431 *** The new function remove-list-of-text-properties is almost the same 4487 *** The new function `remove-list-of-text-properties'.
4432 as `remove-text-properties'. The only difference is that it takes a 4488
4433 list of property names as argument rather than a property list. 4489 It is like `remove-text-properties' except that it takes a list of
4490 property names as argument rather than a property list.
4434 4491
4435 ** Face changes 4492 ** Face changes
4436 4493
4437 +++ 4494 +++
4438 *** The new face attribute condition `min-colors' can be used to tailor 4495 *** The new face attribute condition `min-colors' can be used to tailor
4441 look best on a terminal that supports at least this many colors. This 4498 look best on a terminal that supports at least this many colors. This
4442 is now the preferred method for defining default faces in a way that 4499 is now the preferred method for defining default faces in a way that
4443 makes a good use of the capabilities of the display. 4500 makes a good use of the capabilities of the display.
4444 4501
4445 +++ 4502 +++
4446 *** New function display-supports-face-attributes-p can be used to test 4503 *** New function `display-supports-face-attributes-p' can be used to test
4447 whether a given set of face attributes is actually displayable. 4504 whether a given set of face attributes is actually displayable.
4448 4505
4449 A new predicate `supports' has also been added to the `defface' face 4506 A new predicate `supports' has also been added to the `defface' face
4450 specification language, which can be used to do this test for faces 4507 specification language, which can be used to do this test for faces
4451 defined with defface. 4508 defined with `defface'.
4452 4509
4453 --- 4510 ---
4454 *** The special treatment of faces whose names are of the form `fg:COLOR' 4511 *** The special treatment of faces whose names are of the form `fg:COLOR'
4455 or `bg:COLOR' has been removed. Lisp programs should use the 4512 or `bg:COLOR' has been removed. Lisp programs should use the
4456 `defface' facility for defining faces with specific colors, or use 4513 `defface' facility for defining faces with specific colors, or use
4474 *** The function `face-differs-from-default-p' now truly checks 4531 *** The function `face-differs-from-default-p' now truly checks
4475 whether the given face displays differently from the default face or 4532 whether the given face displays differently from the default face or
4476 not (previously it did only a very cursory check). 4533 not (previously it did only a very cursory check).
4477 4534
4478 +++ 4535 +++
4479 *** `face-attribute', `face-foreground', `face-background', and 4536 *** `face-attribute', `face-foreground', `face-background', `face-stipple'.
4480 `face-stipple' now accept a new optional argument, INHERIT, which 4537
4481 controls how face inheritance is used when determining the value of a 4538 These now accept a new optional argument, INHERIT, which controls how
4482 face attribute. 4539 face inheritance is used when determining the value of a face
4540 attribute.
4483 4541
4484 +++ 4542 +++
4485 *** New functions `face-attribute-relative-p' and `merge-face-attribute' 4543 *** New functions `face-attribute-relative-p' and `merge-face-attribute'
4486 help with handling relative face attributes. 4544 help with handling relative face attributes.
4487 4545
4492 faces in the list override later faces in the list; in previous 4550 faces in the list override later faces in the list; in previous
4493 releases of Emacs, the order was the opposite. This change was made 4551 releases of Emacs, the order was the opposite. This change was made
4494 so that :inherit face lists operate identically to face lists in text 4552 so that :inherit face lists operate identically to face lists in text
4495 `face' properties. 4553 `face' properties.
4496 4554
4497 +++
4498 *** New standard font-lock face `font-lock-preprocessor-face'.
4499
4500 --- 4555 ---
4501 *** `set-fontset-font', `fontset-info', `fontset-font' now operate on 4556 *** `set-fontset-font', `fontset-info', `fontset-font' now operate on
4502 the default fontset if the argument NAME is nil.. 4557 the default fontset if the argument NAME is nil..
4503 4558
4504 ** Font-Lock changes: 4559 ** Font-Lock changes:
4512 new variable `char-property-alias-alist'. 4567 new variable `char-property-alias-alist'.
4513 4568
4514 +++ 4569 +++
4515 *** font-lock can manage arbitrary text-properties beside `face'. 4570 *** font-lock can manage arbitrary text-properties beside `face'.
4516 4571
4517 *** the FACENAME returned in `font-lock-keywords' can be a list of the 4572 **** the FACENAME returned in `font-lock-keywords' can be a list of the
4518 form (face FACE PROP1 VAL1 PROP2 VAL2 ...) so you can set other 4573 form (face FACE PROP1 VAL1 PROP2 VAL2 ...) so you can set other
4519 properties than `face'. 4574 properties than `face'.
4520 4575
4521 *** `font-lock-extra-managed-props' can be set to make sure those 4576 **** `font-lock-extra-managed-props' can be set to make sure those
4522 extra properties are automatically cleaned up by font-lock. 4577 extra properties are automatically cleaned up by font-lock.
4523 4578
4524 --- 4579 ---
4525 *** jit-lock obeys a new text-property `jit-lock-defer-multiline'. 4580 *** jit-lock obeys a new text-property `jit-lock-defer-multiline'.
4526 4581
4548 precedence over the file name. Likewise an `<?xml' or `<!DOCTYPE' 4603 precedence over the file name. Likewise an `<?xml' or `<!DOCTYPE'
4549 declaration will give the buffer XML or SGML mode, based on the new 4604 declaration will give the buffer XML or SGML mode, based on the new
4550 var `magic-mode-alist'. 4605 var `magic-mode-alist'.
4551 4606
4552 +++ 4607 +++
4553 *** Major mode functions now run the new normal hook 4608 *** Use the new function `run-mode-hooks' to run the major mode's mode hook.
4554 `after-change-major-mode-hook', at their very end, after the mode hooks. 4609
4610 +++
4611 *** All major mode functions should now run the new normal hook
4612 `after-change-major-mode-hook', at their very end, after the mode
4613 hooks. `run-mode-hooks' does this automatically.
4555 4614
4556 --- 4615 ---
4557 *** If a major mode function has a non-nil `no-clone-indirect' 4616 *** If a major mode function has a non-nil `no-clone-indirect'
4558 property, `clone-indirect-buffer' signals an error if you use 4617 property, `clone-indirect-buffer' signals an error if you use
4559 it in that buffer. 4618 it in that buffer.
4579 and simply passes them to `defcustom', if applicable. 4638 and simply passes them to `defcustom', if applicable.
4580 4639
4581 +++ 4640 +++
4582 *** `minor-mode-list' now holds a list of minor mode commands. 4641 *** `minor-mode-list' now holds a list of minor mode commands.
4583 4642
4584 --- 4643 +++
4585 *** `define-global-minor-mode'. 4644 *** `define-global-minor-mode'.
4586 4645
4587 This is a new name for what was formerly called 4646 This is a new name for what was formerly called
4588 `easy-mmode-define-global-mode'. The old name remains as an alias. 4647 `easy-mmode-define-global-mode'. The old name remains as an alias.
4589 4648
4590 ** Command loop changes: 4649 ** Command loop changes:
4591 4650
4592 +++ 4651 +++
4593 *** The new function `called-interactively-p' does what many people 4652 *** The new function `called-interactively-p' does what many people
4594 have mistakenly believed `interactive-p' did: it returns t if the 4653 have mistakenly believed `interactive-p' to do: it returns t if the
4595 calling function was called through `call-interactively'. This should 4654 calling function was called through `call-interactively'.
4596 only be used when you cannot solve the problem by adding a new 4655
4656 Only use this when you cannot solve the problem by adding a new
4597 INTERACTIVE argument to the command. 4657 INTERACTIVE argument to the command.
4598 4658
4599 +++ 4659 +++
4600 *** The function `commandp' takes an additional optional argument. 4660 *** The function `commandp' takes an additional optional argument.
4601 4661
4628 4688
4629 +++ 4689 +++
4630 *** `emacsserver' now runs `pre-command-hook' and `post-command-hook' 4690 *** `emacsserver' now runs `pre-command-hook' and `post-command-hook'
4631 when it receives a request from emacsclient. 4691 when it receives a request from emacsclient.
4632 4692
4633 ** Minibuffer changes:
4634
4635 +++
4636 *** The functions all-completions and try-completion now accept lists
4637 of strings as well as hash-tables additionally to alists, obarrays
4638 and functions. Furthermore, the function `test-completion' is now
4639 exported to Lisp. The keys in alists and hash tables can be either
4640 strings or symbols, which are automatically converted with to strings.
4641
4642 +++
4643 *** The new macro `dynamic-completion-table' supports using functions
4644 as a dynamic completion table.
4645
4646 (dynamic-completion-table FUN)
4647
4648 FUN is called with one argument, the string for which completion is required,
4649 and it should return an alist containing all the intended possible
4650 completions. This alist can be a full list of possible completions so that FUN
4651 can ignore the value of its argument. If completion is performed in the
4652 minibuffer, FUN will be called in the buffer from which the minibuffer was
4653 entered. `dynamic-completion-table' then computes the completion.
4654
4655 +++
4656 *** The new macro `lazy-completion-table' initializes a variable
4657 as a lazy completion table.
4658
4659 (lazy-completion-table VAR FUN &rest ARGS)
4660
4661 If the completion table VAR is used for the first time (e.g., by passing VAR
4662 as an argument to `try-completion'), the function FUN is called with arguments
4663 ARGS. FUN must return the completion table that will be stored in VAR. If
4664 completion is requested in the minibuffer, FUN will be called in the buffer
4665 from which the minibuffer was entered. The return value of
4666 `lazy-completion-table' must be used to initialize the value of VAR.
4667
4668 ** Lisp file loading changes: 4693 ** Lisp file loading changes:
4669 4694
4670 +++ 4695 +++
4671 *** `load-history' can now have elements of the form (t . FUNNAME), 4696 *** `load-history' can now have elements of the form (t . FUNNAME),
4672 which means FUNNAME was previously defined as an autoload (before the 4697 which means FUNNAME was previously defined as an autoload (before the
4675 +++ 4700 +++
4676 *** `load-history' now records (defun . FUNNAME) when a function is 4701 *** `load-history' now records (defun . FUNNAME) when a function is
4677 defined. For a variable, it records just the variable name. 4702 defined. For a variable, it records just the variable name.
4678 4703
4679 +++ 4704 +++
4680 *** The function symbol-file can now search specifically for function or 4705 *** The function `symbol-file' can now search specifically for function,
4681 variable definitions. 4706 variable or face definitions.
4682 4707
4683 +++ 4708 +++
4684 *** `provide' and `featurep' now accept an optional second argument 4709 *** `provide' and `featurep' now accept an optional second argument
4685 to test/provide subfeatures. Also `provide' now checks `after-load-alist' 4710 to test/provide subfeatures. Also `provide' now checks `after-load-alist'
4686 and runs any code associated with the provided feature. 4711 and runs any code associated with the provided feature.
4691 than 3 levels of nesting. 4716 than 3 levels of nesting.
4692 4717
4693 +++ 4718 +++
4694 ** Byte compiler changes: 4719 ** Byte compiler changes:
4695 4720
4696 *** The byte-compiler now displays the actual line and character 4721 *** The byte compiler now displays the actual line and character
4697 position of errors, where possible. Additionally, the form of its 4722 position of errors, where possible. Additionally, the form of its
4698 warning and error messages have been brought more in line with the 4723 warning and error messages have been brought into line with GNU standards
4699 output of other GNU tools. 4724 for these. As a result, you can use next-error and friends on the
4725 compilation output buffer.
4700 4726
4701 *** The new macro `with-no-warnings' suppresses all compiler warnings 4727 *** The new macro `with-no-warnings' suppresses all compiler warnings
4702 inside its body. In terms of execution, it is equivalent to `progn'. 4728 inside its body. In terms of execution, it is equivalent to `progn'.
4703 4729
4704 *** You can avoid warnings for possibly-undefined symbols with a 4730 *** You can avoid warnings for possibly-undefined symbols with a
4722 Emacs and XEmacs and can sometimes make the result significantly more 4748 Emacs and XEmacs and can sometimes make the result significantly more
4723 efficient. Since byte code from recent versions of XEmacs won't 4749 efficient. Since byte code from recent versions of XEmacs won't
4724 generally run in Emacs and vice versa, this optimization doesn't lose 4750 generally run in Emacs and vice versa, this optimization doesn't lose
4725 you anything. 4751 you anything.
4726 4752
4727 *** The local variable `no-byte-compile' in elisp files is now obeyed. 4753 *** The local variable `no-byte-compile' in Lisp files is now obeyed.
4728 4754
4729 --- 4755 ---
4730 *** When a Lisp file uses CL functions at run-time, compiling the file 4756 *** When a Lisp file uses CL functions at run-time, compiling the file
4731 now issues warnings about these calls, unless the file performs 4757 now issues warnings about these calls, unless the file performs
4732 (require 'cl) when loaded. 4758 (require 'cl) when loaded.
4770 4796
4771 3. For binary files where format conversion would be pointless and 4797 3. For binary files where format conversion would be pointless and
4772 wasteful. 4798 wasteful.
4773 4799
4774 --- 4800 ---
4775 *** set-buffer-file-coding-system now takes an additional argument, 4801 *** `set-buffer-file-coding-system' now takes an additional argument,
4776 NOMODIFY. If it is non-nil, it means don't mark the buffer modified. 4802 NOMODIFY. If it is non-nil, it means don't mark the buffer modified.
4777 4803
4778 +++ 4804 +++
4779 *** The new variable `auto-coding-functions' lets you specify functions 4805 *** The new variable `auto-coding-functions' lets you specify functions
4780 to examine a file being visited and deduce the proper coding system 4806 to examine a file being visited and deduce the proper coding system
4797 --- 4823 ---
4798 *** New CCL functions `lookup-character' and `lookup-integer' access 4824 *** New CCL functions `lookup-character' and `lookup-integer' access
4799 hash tables defined by the Lisp function `define-translation-hash-table'. 4825 hash tables defined by the Lisp function `define-translation-hash-table'.
4800 4826
4801 --- 4827 ---
4802 *** New function quail-find-key returns a list of keys to type in the 4828 *** New function `quail-find-key' returns a list of keys to type in the
4803 current input method to input a character. 4829 current input method to input a character.
4804 4830
4805 ** Mode line changes: 4831 ** Mode line changes:
4806 4832
4807 +++ 4833 +++
4808 *** New function `format-mode-line'. 4834 *** New function `format-mode-line'.
4809 4835
4810 This returns the mode-line or header-line of the selected (or a 4836 This returns the mode line or header line of the selected (or a
4811 specified) window as a string with or without text properties. 4837 specified) window as a string with or without text properties.
4812 4838
4813 +++ 4839 +++
4814 *** The new mode-line construct `(:propertize ELT PROPS...)' can be 4840 *** The new mode-line construct `(:propertize ELT PROPS...)' can be
4815 used to add text properties to mode-line elements. 4841 used to add text properties to mode-line elements.
4867 ** Miscellaneous: 4893 ** Miscellaneous:
4868 4894
4869 +++ 4895 +++
4870 *** A number of hooks have been renamed to better follow the conventions: 4896 *** A number of hooks have been renamed to better follow the conventions:
4871 4897
4872 find-file-hooks to find-file-hook, 4898 `find-file-hooks' to `find-file-hook',
4873 find-file-not-found-hooks to find-file-not-found-functions, 4899 `find-file-not-found-hooks' to `find-file-not-found-functions',
4874 write-file-hooks to write-file-functions, 4900 `write-file-hooks' to `write-file-functions',
4875 write-contents-hooks to write-contents-functions, 4901 `write-contents-hooks' to `write-contents-functions',
4876 x-lost-selection-hooks to x-lost-selection-functions, 4902 `x-lost-selection-hooks' to `x-lost-selection-functions',
4877 x-sent-selection-hooks to x-sent-selection-functions, 4903 `x-sent-selection-hooks' to `x-sent-selection-functions',
4878 delete-frame-hook to delete-frame-functions. 4904 `delete-frame-hook' to `delete-frame-functions'.
4879 4905
4880 In each case the old name remains as an alias for the moment. 4906 In each case the old name remains as an alias for the moment.
4881 4907
4882 +++ 4908 +++
4883 *** local-write-file-hooks is marked obsolete 4909 *** local-write-file-hooks is marked obsolete
4885 Use the LOCAL arg of `add-hook'. 4911 Use the LOCAL arg of `add-hook'.
4886 4912
4887 --- 4913 ---
4888 *** New function `x-send-client-message' sends a client message when 4914 *** New function `x-send-client-message' sends a client message when
4889 running under X. 4915 running under X.
4916
4917 ** GC changes:
4918
4919 +++
4920 *** New variables `gc-elapsed' and `gcs-done' provide extra information
4921 on garbage collection.
4922
4923 +++
4924 *** The normal hook `post-gc-hook' is run at the end of garbage collection.
4925
4926 The hook is run with GC inhibited, so use it with care.
4927
4928 * New Packages for Lisp Programming in Emacs 22.1
4929
4930 +++
4931 ** The new library button.el implements simple and fast `clickable
4932 buttons' in emacs buffers. Buttons are much lighter-weight than the
4933 `widgets' implemented by widget.el, and can be used by lisp code that
4934 doesn't require the full power of widgets. Emacs uses buttons for
4935 such things as help and apropos buffers.
4936
4937 ---
4938 ** The new library tree-widget.el provides a widget to display a set
4939 of hierarchical data as an outline. For example, the tree-widget is
4940 well suited to display a hierarchy of directories and files.
4941
4942 ** The new library bindat.el provides functions to unpack and pack
4943 binary data structures, such as network packets, to and from Lisp
4944 data structures.
4945
4946 ---
4947 ** master-mode.el implements a minor mode for scrolling a slave
4948 buffer without leaving your current buffer, the master buffer.
4949
4950 It can be used by sql.el, for example: the SQL buffer is the master
4951 and its SQLi buffer is the slave. This allows you to scroll the SQLi
4952 buffer containing the output from the SQL buffer containing the
4953 commands.
4954
4955 This is how to use sql.el and master.el together: the variable
4956 sql-buffer contains the slave buffer. It is a local variable in the
4957 SQL buffer.
4958
4959 (add-hook 'sql-mode-hook
4960 (function (lambda ()
4961 (master-mode t)
4962 (master-set-slave sql-buffer))))
4963 (add-hook 'sql-set-sqli-hook
4964 (function (lambda ()
4965 (master-set-slave sql-buffer))))
4966
4967 +++
4968 ** The new library benchmark.el does timing measurements on Lisp code.
4969
4970 This includes measuring garbage collection time.
4971
4972 +++
4973 ** The new library testcover.el does test coverage checking.
4974
4975 This is so you can tell whether you've tested all paths in your Lisp
4976 code. It works with edebug.
4977
4978 The function `testcover-start' instruments all functions in a given
4979 file. Then test your code. The function `testcover-mark-all' adds
4980 overlay "splotches" to the Lisp file's buffer to show where coverage
4981 is lacking. The command `testcover-next-mark' (bind it to a key!)
4982 will move point forward to the next spot that has a splotch.
4983
4984 Normally, a red splotch indicates the form was never completely
4985 evaluated; a brown splotch means it always evaluated to the same
4986 value. The red splotches are skipped for forms that can't possibly
4987 complete their evaluation, such as `error'. The brown splotches are
4988 skipped for forms that are expected to always evaluate to the same
4989 value, such as (setq x 14).
4990
4991 For difficult cases, you can add do-nothing macros to your code to
4992 help out the test coverage tool. The macro `noreturn' suppresses a
4993 red splotch. It is an error if the argument to `noreturn' does
4994 return. The macro `1value' suppresses a brown splotch for its argument.
4995 This macro is a no-op except during test-coverage -- then it signals
4996 an error if the argument actually returns differing values.
4890 4997
4891 * Installation changes in Emacs 21.3 4998 * Installation changes in Emacs 21.3
4892 4999
4893 ** Support for GNU/Linux on little-endian MIPS and on IBM S390 has 5000 ** Support for GNU/Linux on little-endian MIPS and on IBM S390 has
4894 been added. 5001 been added.
10713 the time the message was written or the time it is being sent; this 10820 the time the message was written or the time it is being sent; this
10714 can make FCC copies more closely resemble copies that recipients get 10821 can make FCC copies more closely resemble copies that recipients get
10715 10822
10716 **** you can specify an arbitrary function for actually transmitting 10823 **** you can specify an arbitrary function for actually transmitting
10717 the message; included in feedmail are interfaces for /bin/[r]mail, 10824 the message; included in feedmail are interfaces for /bin/[r]mail,
10718 /usr/lib/sendmail, and elisp smtpmail; it's easy to write a new 10825 /usr/lib/sendmail, and Emacs Lisp smtpmail; it's easy to write a new
10719 function for something else (10-20 lines of elisp) 10826 function for something else (10-20 lines of Lisp code).
10720 10827
10721 ** Dired changes 10828 ** Dired changes
10722 10829
10723 *** The Dired function dired-do-toggle, which toggles marked and unmarked 10830 *** The Dired function dired-do-toggle, which toggles marked and unmarked
10724 files, is now bound to "t" instead of "T". 10831 files, is now bound to "t" instead of "T".