81024
|
1 GNU Emacs NEWS -- history of user-visible changes.
|
|
2
|
100972
|
3 Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
|
81024
|
4 Free Software Foundation, Inc.
|
|
5 See the end of the file for license conditions.
|
|
6
|
|
7 Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
|
|
8 If possible, use M-x report-emacs-bug.
|
|
9
|
|
10 This file is about changes in Emacs version 22.
|
|
11
|
|
12 See files NEWS.21, NEWS.20, NEWS.19, NEWS.18, and NEWS.1-17 for changes
|
|
13 in older Emacs versions.
|
|
14
|
|
15 You can narrow news to a specific version by calling `view-emacs-news'
|
|
16 with a prefix argument or by typing C-u C-h C-n.
|
|
17
|
|
18 * About external Lisp packages
|
|
19
|
|
20 When you upgrade to Emacs 22 from a previous version, some older
|
|
21 versions of external Lisp packages are known to behave badly.
|
|
22 So in general, it is recommended that you upgrade to the latest
|
|
23 versions of any external Lisp packages that you are using.
|
|
24
|
|
25 You should also be aware that many Lisp packages have been included
|
|
26 with Emacs 22 (see the extensive list below), and you should remove
|
|
27 any older versions of these packages to ensure that the Emacs 22
|
|
28 version is used. You can use M-x list-load-path-shadows to find such
|
|
29 older packages.
|
|
30
|
82374
|
31 Some specific packages that are known to cause problems are given
|
|
32 below. Emacs tries to warn you about these through `bad-packages-alist'.
|
81024
|
33
|
|
34 ** Semantic (used by CEDET, ECB, JDEE): upgrade to latest version.
|
|
35
|
|
36 ** cua.el, cua-mode.el: remove old versions.
|
85885
|
37
|
81291
|
38
|
97432
|
39 * Changes in Emacs 22.3
|
|
40
|
|
41 ** Support for several obsolete platforms will be removed in the next
|
|
42 major version of Emacs: Apollo, Acorn, Alliant, Amdahl, Altos 3068,
|
|
43 Bull DPX/2, Bull SPS-7, AT&T UNIX 7300, AT&T 3b, Aviion Berkeley 4.1
|
|
44 to 4.3, Celerity, Clipper, Convergent S series, Convex, Cydra, DG/UX,
|
|
45 Dual, Elxsi, ESIX, Fujitsu F301, GEC 63, Gould, Honeywell XPS100,
|
|
46 i860, IBM ps/2 aix386, Harris CXUX, Harris Night Hawk 1200/3000,
|
|
47 Harris Power PC, HP 9000 series 200 or 300, HLH Orion, Hitachi
|
|
48 SR2001/SR2201, IBM PS/2, Integrated Solutions 386, Integrated
|
|
49 Solutions Optimum V, Iris, Irix < v6, ISC Unix, ISI 68000, Masscomp
|
|
50 5000, Megatest 68000, Motorola System V/88, ns16000, National
|
|
51 Semiconductor 32000, osf1 (s/osf*) Paragon i860, PFU A-series, Plexus,
|
|
52 Pyramid, RTU 3.0, RISCiX SCO 3.2, sh3el, Sinix, Stride, Sun 1-3, Sun
|
|
53 RoadRunner, Sequent Symmetry, Sony News, SunOS 4, System V rel 0 to 3,
|
|
54 Tadpole 68k machines, tahoe, Tandem Integrity S2, targon31, Tektronix,
|
|
55 TI Nu, NCR Tower 32, U-station, Ultrix, UMAX, UniPlus 5.2, Whitechapel
|
|
56 Computer Works MG1, Wicat, and Xenix.
|
|
57
|
|
58 *** Support for systems without alloca will be removed.
|
|
59
|
|
60 *** Support for Sun windows will be removed.
|
|
61
|
|
62 *** Support for VMS will be removed.
|
|
63
|
94609
|
64 * Incompatible Editing Changes in Emacs 22.3
|
|
65
|
|
66 ** The following input methods were removed in Emacs 22.2, but this was
|
94644
|
67 not advertised: danish-alt-postfix, esperanto-alt-postfix,
|
94609
|
68 finnish-alt-postfix, german-alt-postfix, icelandic-alt-postfix,
|
|
69 norwegian-alt-postfix, scandinavian-alt-postfix, spanish-alt-postfix,
|
|
70 and swedish-alt-postfix. Use the versions without "alt-", which are
|
|
71 identical.
|
|
72
|
|
73
|
81291
|
74 * Installation Changes in Emacs 22.2
|
|
75
|
82140
|
76 ** Emacs is now licensed under the GNU GPL version 3 (or later).
|
|
77
|
86804
|
78 ** Support for GNU/kFreeBSD (GNU userland and FreeBSD kernel) was added.
|
|
79
|
92692
|
80 ** Deprecated machine types and operating systems
|
|
81
|
|
82 Certain machine types and operating systems have been deprecated. On
|
|
83 these systems, configure will print a warning and exit, and you must
|
|
84 edit the configure script for compilation to proceed. The deprecated
|
|
85 systems will not be supported at all in Emacs 23. We are not aware of
|
|
86 anyone running Emacs on these systems; if you are, please email
|
|
87 emacs-devel@gnu.org to take it off the list of deprecated systems.
|
|
88
|
|
89 *** Deprecated machine types
|
|
90 pmax, hp9000s300, ibm370aix, ncr386, ews4800, mips-siemens, powerpcle,
|
|
91 and tandem-s2
|
|
92
|
|
93 *** Deprecated operating systems
|
|
94 bsd386, bsdos2-1, bsdos2, bsdos3, bsdos4, bsd4-1, bsd4-2, bsd4-3,
|
|
95 usg5-0, usg5-2-2, usg5-2, usg5-3, ultrix4-3, 386bsd, hpux, hpux8,
|
|
96 hpux9, hpux9shr, hpux10, hpux10-20, aix3-1, aix3-2-5, aix3-2, aix4-1,
|
|
97 nextstep, ux4800, uxpds, and uxpv
|
|
98
|
81291
|
99 * Changes in Emacs 22.2
|
|
100
|
92692
|
101 ** `describe-project' is renamed to `describe-gnu-project'.
|
|
102
|
|
103 ** `view-todo' is renamed to `view-emacs-todo'.
|
|
104
|
87453
|
105 ** `find-name-dired' now uses -iname rather than -name
|
|
106 for case-insensitive filesystems. The default behavior is determined
|
|
107 by the value of `read-file-name-completion-ignore-case'; if you don't
|
|
108 like that, customize the value of the new option `find-name-arg'.
|
|
109
|
81291
|
110 ** In Image mode, whenever the displayed image is wider and/or higher
|
|
111 than the window, the usual keys for moving the cursor cause the image
|
|
112 to be scrolled horizontally or vertically instead.
|
|
113
|
92360
|
114 ** Emacs can use stock icons in the tool bar when compiled with Gtk+.
|
|
115 However, this feature is disabled by default. To enable it, put
|
|
116
|
|
117 (setq icon-map-list '(x-gtk-stock-map))
|
|
118
|
|
119 in your .emacs or some other startup file. For more information, see
|
|
120 the documentation for the two variables icon-map-list and x-gtk-stock-map.
|
|
121
|
81778
|
122 ** Scrollbars follow the system theme on Windows XP and later.
|
|
123 Windows XP introduced themed scrollbars, but applications have to take
|
|
124 special steps to use them. Emacs now has the appropriate resources linked
|
|
125 in to make it use the scrollbars from the system theme.
|
|
126
|
85688
|
127 ** focus-follows-mouse defaults to nil on MS Windows.
|
85114
|
128 Previously this variable was incorrectly documented as having no effect
|
|
129 on MS Windows, and the default was inappropriate for the majority of
|
96376
|
130 Windows installations. Users of software which modifies the behavior of
|
85114
|
131 Windows to cause focus to follow the mouse will now need to explicitly set
|
|
132 this variable.
|
|
133
|
85973
|
134 ** `bad-packages-alist' will warn about external packages that are known
|
|
135 to cause problems in this version of Emacs.
|
|
136
|
|
137 ** The values of `dired-recursive-deletes' and `dired-recursive-copies'
|
|
138 have been changed to `top'. This means that the user is asked once,
|
|
139 before deleting/copying the indicated directory recursively.
|
|
140
|
|
141 ** `browse-url-emacs' loads a URL into an Emacs buffer. Handy for *.el URLs.
|
|
142
|
85114
|
143 ** The command gdba has been removed as gdb works now for those cases where it
|
|
144 was needed. In text command mode, if you have problems before execution has
|
|
145 started, use M-x gud-gdb.
|
|
146
|
85688
|
147 ** desktop.el now detects conflicting uses of the desktop file.
|
|
148 When loading the desktop, desktop.el can now detect that the file is already
|
|
149 in use. The default behavior is to ask the user what to do, but you can
|
|
150 customize it with the new option `desktop-load-locked-desktop'. When saving,
|
|
151 desktop.el warns about attempts to overwrite a desktop file if it determines
|
|
152 that the desktop being saved is not an update of the one on disk.
|
|
153
|
92148
|
154 ** Compilation mode now correctly respects the value of
|
|
155 `compilation-scroll-output' between invocations. Previously, output
|
|
156 was mistakenly scrolled on compiles after the first. Customize
|
|
157 `compilation-scroll-output' if you want to retain the scrolling.
|
|
158
|
92949
|
159 ** `font-lock-comment-face' no longer differs from the default on
|
93759
|
160 displays with fewer than 16 colors and dark background (e.g. older
|
|
161 xterms and the Linux console). On such displays, only the comment
|
|
162 delimiters will appear to be fontified (in the new face
|
|
163 `font-lock-comment-delimiter-face'). To restore the old appearance,
|
|
164 customize `font-lock-comment-face'. Another alternative is to use a
|
|
165 newer terminal emulator that supports more colors (256 is now common).
|
|
166 For example, for xterm compatible emulators that support 256 colors,
|
|
167 you can run emacs like this:
|
|
168 env TERM=xterm-256color emacs -nw
|
|
169 (This was new in Emacs 22.1, but was not described. In Emacs 22.1
|
|
170 this also happened for terminals with a light background, that is not
|
|
171 the case anymore).
|
92949
|
172
|
81291
|
173 * New Modes and Packages in Emacs 22.2
|
|
174
|
82365
|
175 ** bibtex-style-mode helps you write BibTeX's *.bst files.
|
|
176
|
81291
|
177 ** The new package css-mode.el provides a major mode for editing CSS files.
|
|
178
|
81509
|
179 ** The new package vera-mode.el provides a major mode for editing Vera files.
|
|
180
|
87301
|
181 ** The new package verilog-mode.el provides a major mode for editing Verilog files.
|
|
182
|
81291
|
183 ** The new package socks.el implements the SOCKS v5 protocol.
|
81024
|
184
|
81727
|
185 ** VC
|
|
186
|
82221
|
187 *** VC backends can provide completion of revision names.
|
|
188
|
92692
|
189 *** VC backends can provide extra menu entries to the "Version Control" menu.
|
85114
|
190 This can be used to add menu entries for backend specific functions.
|
|
191
|
|
192 *** VC has some support for Mercurial (Hg).
|
|
193
|
|
194 *** VC has some support for Monotone (Mtn).
|
81727
|
195
|
82365
|
196 *** VC has some support for Bazaar (Bzr).
|
|
197
|
82221
|
198 *** VC has some support for Git.
|
|
199
|
87903
|
200 * Incompatible Lisp Changes in Emacs 22.2
|
|
201
|
|
202 ** shell.el no longer defines the aliases `dirtrack-toggle' and
|
|
203 `dirtrack-mode' for `shell-dirtrack-mode'. These names were removed
|
|
204 because they clash with commands provided by dirtrack.el. Use
|
|
205 `shell-dirtrack-mode' instead.
|
|
206
|
82321
|
207 * Lisp Changes in Emacs 22.2.
|
|
208
|
85688
|
209 ** Frame-local variables are deprecated and are slated for removal.
|
92385
|
210 They can easily be emulated. Rather than calling `make-variable-frame-local'
|
|
211 and accessing the variable value directly, explicitly check for a
|
|
212 frame-parameter, and if there is one, use its value in preference to
|
92424
|
213 that of the variable. Note that buffer-local values should take
|
92425
|
214 precedence over frame-local ones, so you may wish to check `local-variable-p'
|
92424
|
215 first.
|
85973
|
216
|
82907
|
217 ** The function invisible-p returns non-nil if the character
|
85492
|
218 after a specified position is invisible.
|
82907
|
219
|
|
220 ** inhibit-modification-hooks is bound to t while running modification hooks.
|
|
221 As a happy consequence, after-change-functions and before-change-functions
|
|
222 are not bound to nil any more while running an (after|before)-change-function.
|
|
223
|
82321
|
224 ** New function `window-full-width-p' returns t if a window is as wide
|
|
225 as its frame.
|
|
226
|
|
227 ** The new function `image-refresh' refreshes all images associated
|
|
228 with a given image specification.
|
|
229
|
85973
|
230 ** The new function `combine-and-quote-strings' concatenates a list of strings
|
|
231 using a specified separator. If a string contains double quotes, they
|
|
232 are escaped in the output.
|
|
233
|
|
234 ** The new function `split-string-and-unquote' performs the inverse operation to
|
|
235 `combine-and-quote-strings', i.e. splits a single string into a list
|
|
236 of strings, undoing any quoting added by `combine-and-quote-strings'.
|
|
237 (For some separator/string combinations, the original strings cannot
|
|
238 be recovered.)
|
|
239
|
81024
|
240
|
|
241 * Installation Changes in Emacs 22.1
|
|
242
|
|
243 ** You can build Emacs with Gtk+ widgets by specifying `--with-x-toolkit=gtk'
|
|
244 when you run configure. This requires Gtk+ 2.4 or newer. This port
|
|
245 provides a way to display multilingual text in menus (with some caveats).
|
|
246
|
|
247 ** The Emacs Lisp Reference Manual is now part of the distribution.
|
|
248
|
|
249 The Emacs Lisp Reference Manual in Info format is built as part of the
|
|
250 Emacs build procedure and installed together with the Emacs User
|
|
251 Manual. A menu item was added to the menu bar to make it easily
|
|
252 accessible (Help->More Manuals->Emacs Lisp Reference).
|
|
253
|
|
254 ** The Introduction to Programming in Emacs Lisp manual is now part of
|
|
255 the distribution.
|
|
256
|
|
257 This manual is now part of the standard distribution and is installed,
|
|
258 together with the Emacs User Manual, into the Info directory. A menu
|
|
259 item was added to the menu bar to make it easily accessible
|
|
260 (Help->More Manuals->Introduction to Emacs Lisp).
|
|
261
|
|
262 ** Leim is now part of the Emacs distribution.
|
|
263 You no longer need to download a separate tarball in order to build
|
|
264 Emacs with Leim.
|
|
265
|
|
266 ** Support for MacOS X was added.
|
|
267 See the files mac/README and mac/INSTALL for build instructions.
|
|
268
|
|
269 ** Mac OS 9 port now uses the Carbon API by default. You can also
|
|
270 create a non-Carbon build by specifying `NonCarbon' as a target. See
|
|
271 the files mac/README and mac/INSTALL for build instructions.
|
|
272
|
|
273 ** Support for a Cygwin build of Emacs was added.
|
|
274
|
|
275 ** Support for GNU/Linux systems on X86-64 machines was added.
|
|
276
|
|
277 ** Support for GNU/Linux systems on S390 machines was added.
|
|
278
|
|
279 ** Support for GNU/Linux systems on Tensilica Xtensa machines was added.
|
|
280
|
|
281 ** Support for FreeBSD/Alpha has been added.
|
|
282
|
|
283 ** New translations of the Emacs Tutorial are available in the
|
|
284 following languages: Brasilian Portuguese, Bulgarian, Chinese (both
|
|
285 with simplified and traditional characters), French, Russian, and
|
|
286 Italian. Type `C-u C-h t' to choose one of them in case your language
|
|
287 setup doesn't automatically select the right one.
|
|
288
|
|
289 ** New translations of the Emacs reference card are available in the
|
|
290 Brasilian Portuguese and Russian. The corresponding PostScript files
|
|
291 are also included.
|
|
292
|
|
293 ** A French translation of the `Emacs Survival Guide' is available.
|
|
294
|
|
295 ** Emacs now supports new configure options `--program-prefix',
|
|
296 `--program-suffix' and `--program-transform-name' that affect the names of
|
|
297 installed programs.
|
|
298
|
|
299 ** By default, Emacs now uses a setgid helper program to update game
|
|
300 scores. The directory ${localstatedir}/games/emacs is the normal
|
|
301 place for game scores to be stored. You can control this with the
|
|
302 configure option `--with-game-dir'. The specific user that Emacs uses
|
|
303 to own the game scores is controlled by `--with-game-user'. If access
|
|
304 to a game user is not available, then scores will be stored separately
|
|
305 in each user's home directory.
|
|
306
|
|
307 ** Emacs now includes support for loading image libraries on demand.
|
|
308 (Currently this feature is only used on MS Windows.) You can configure
|
|
309 the supported image types and their associated dynamic libraries by
|
|
310 setting the variable `image-library-alist'.
|
|
311
|
|
312 ** Emacs can now be built without sound support.
|
|
313
|
|
314 ** Emacs Lisp source files are compressed by default if `gzip' is available.
|
|
315
|
|
316 ** All images used in Emacs have been consolidated in etc/images and subdirs.
|
|
317 See also the changes to `find-image', documented below.
|
|
318
|
|
319 ** Emacs comes with a new set of icons.
|
|
320 These icons are displayed on the taskbar and/or titlebar when Emacs
|
|
321 runs in a graphical environment. Source files for these icons can be
|
|
322 found in etc/images/icons. (You can't change the icons displayed by
|
|
323 Emacs by changing these files directly. On X, the icon is compiled
|
|
324 into the Emacs executable; see gnu.h in the source tree. On MS
|
|
325 Windows, see nt/icons/emacs.ico.)
|
|
326
|
|
327 ** The `emacsserver' program has been removed, replaced with Lisp code.
|
|
328
|
|
329 ** The `yow' program has been removed.
|
|
330 Use the corresponding Emacs feature instead.
|
|
331
|
|
332 ** The Emacs terminal emulation in term.el uses a different terminfo name.
|
|
333 The Emacs terminal emulation in term.el now uses "eterm-color" as its
|
|
334 terminfo name, since term.el now supports color.
|
|
335
|
|
336 ** The script etc/emacs-buffer.gdb can be used with gdb to retrieve the
|
|
337 contents of buffers from a core dump and save them to files easily, should
|
|
338 Emacs crash.
|
|
339
|
|
340 ** Building with -DENABLE_CHECKING does not automatically build with union
|
|
341 types any more. Add -DUSE_LISP_UNION_TYPE if you want union types.
|
|
342
|
|
343 ** When pure storage overflows while dumping, Emacs now prints how
|
|
344 much pure storage it will approximately need.
|
|
345
|
|
346
|
|
347 * Startup Changes in Emacs 22.1
|
|
348
|
|
349 ** Init file changes
|
|
350 If the init file ~/.emacs does not exist, Emacs will try
|
|
351 ~/.emacs.d/init.el or ~/.emacs.d/init.elc. Likewise, if the shell init file
|
|
352 ~/.emacs_SHELL is not found, Emacs will try ~/.emacs.d/init_SHELL.sh.
|
|
353
|
|
354 ** Emacs can now be invoked in full-screen mode on a windowed display.
|
|
355 When Emacs is invoked on a window system, the new command-line options
|
|
356 `--fullwidth', `--fullheight', and `--fullscreen' produce a frame
|
|
357 whose width, height, or both width and height take up the entire
|
|
358 screen size. (For now, this does not work with some window managers.)
|
|
359
|
|
360 ** Emacs now displays a splash screen by default even if command-line
|
|
361 arguments were given. The new command-line option --no-splash
|
|
362 disables the splash screen; see also the variable
|
|
363 `inhibit-splash-screen' (which is also aliased as
|
|
364 `inhibit-startup-message').
|
|
365
|
|
366 ** New user option `inhibit-startup-buffer-menu'.
|
|
367 When loading many files, for instance with `emacs *', Emacs normally
|
|
368 displays a buffer menu. This option turns the buffer menu off.
|
|
369
|
|
370 ** New command line option -nbc or --no-blinking-cursor disables
|
|
371 the blinking cursor on graphical terminals.
|
|
372
|
|
373 ** The option --script FILE runs Emacs in batch mode and loads FILE.
|
|
374 It is useful for writing Emacs Lisp shell script files, because they
|
|
375 can start with this line:
|
|
376
|
|
377 #!/usr/bin/emacs --script
|
|
378
|
|
379 ** The -f option, used from the command line to call a function,
|
|
380 now reads arguments for the function interactively if it is
|
|
381 an interactively callable function.
|
|
382
|
|
383 ** The option --directory DIR now modifies `load-path' immediately.
|
|
384 Directories are added to the front of `load-path' in the order they
|
|
385 appear on the command line. For example, with this command line:
|
|
386
|
|
387 emacs -batch -L .. -L /tmp --eval "(require 'foo)"
|
|
388
|
|
389 Emacs looks for library `foo' in the parent directory, then in /tmp, then
|
|
390 in the other directories in `load-path'. (-L is short for --directory.)
|
|
391
|
|
392 ** When you specify a frame size with --geometry, the size applies to
|
|
393 all frames you create. A position specified with --geometry only
|
|
394 affects the initial frame.
|
|
395
|
|
396 ** Emacs built for MS-Windows now behaves like Emacs on X does,
|
|
397 with respect to its frame position: if you don't specify a position
|
|
398 (in your .emacs init file, in the Registry, or with the --geometry
|
|
399 command-line option), Emacs leaves the frame position to the Windows'
|
|
400 window manager.
|
|
401
|
|
402 ** The command line option --no-windows has been changed to
|
|
403 --no-window-system. The old one still works, but is deprecated.
|
|
404
|
|
405 ** If the environment variable DISPLAY specifies an unreachable X display,
|
|
406 Emacs will now startup as if invoked with the --no-window-system option.
|
|
407
|
|
408 ** Emacs now reads the standard abbrevs file ~/.abbrev_defs
|
|
409 automatically at startup, if it exists. When Emacs offers to save
|
|
410 modified buffers, it saves the abbrevs too if they have changed. It
|
|
411 can do this either silently or asking for confirmation first,
|
|
412 according to the value of `save-abbrevs'.
|
|
413
|
|
414 ** New command line option -Q or --quick.
|
|
415 This is like using -q --no-site-file, but in addition it also disables
|
|
416 the fancy startup screen.
|
|
417
|
|
418 ** New command line option -D or --basic-display.
|
|
419 Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and
|
|
420 the blinking cursor.
|
|
421
|
|
422 ** The default is now to use a bitmap as the icon.
|
|
423 The command-line options --icon-type, -i have been replaced with
|
|
424 options --no-bitmap-icon, -nbi to turn the bitmap icon off.
|
|
425
|
|
426 ** If the environment variable EMAIL is defined, Emacs now uses its value
|
|
427 to compute the default value of `user-mail-address', in preference to
|
|
428 concatenation of `user-login-name' with the name of your host machine.
|
|
429
|
|
430
|
|
431 * Incompatible Editing Changes in Emacs 22.1
|
|
432
|
|
433 ** You can now follow links by clicking Mouse-1 on the link.
|
|
434
|
|
435 See below for more details.
|
|
436
|
|
437 ** When the undo information of the current command gets really large
|
|
438 (beyond the value of `undo-outer-limit'), Emacs discards it and warns
|
|
439 you about it.
|
|
440
|
|
441 ** When Emacs prompts for file names, SPC no longer completes the file name.
|
|
442 This is so filenames with embedded spaces could be input without the
|
|
443 need to quote the space with a C-q. The underlying changes in the
|
|
444 keymaps that are active in the minibuffer are described below under
|
|
445 "New keymaps for typing file names".
|
|
446
|
85423
|
447 If you want the old behavior back, add these two key bindings to your
|
81722
|
448 ~/.emacs init file:
|
|
449
|
|
450 (define-key minibuffer-local-filename-completion-map
|
|
451 " " 'minibuffer-complete-word)
|
|
452 (define-key minibuffer-local-must-match-filename-map
|
|
453 " " 'minibuffer-complete-word)
|
|
454
|
81024
|
455 ** The completion commands TAB, SPC and ? in the minibuffer apply only
|
|
456 to the text before point. If there is text in the buffer after point,
|
|
457 it remains unchanged.
|
|
458
|
|
459 ** In incremental search, C-w is changed. M-%, C-M-w and C-M-y are special.
|
|
460
|
|
461 See below under "incremental search changes".
|
|
462
|
|
463 ** M-g is now a prefix key.
|
|
464 M-g g and M-g M-g run goto-line.
|
|
465 M-g n and M-g M-n run next-error (like C-x `).
|
|
466 M-g p and M-g M-p run previous-error.
|
|
467
|
|
468 ** C-u M-g M-g switches to the most recent previous buffer,
|
|
469 and goes to the specified line in that buffer.
|
|
470
|
|
471 When goto-line starts to execute, if there's a number in the buffer at
|
|
472 point then it acts as the default argument for the minibuffer.
|
|
473
|
|
474 ** M-o now is the prefix key for setting text properties;
|
|
475 M-o M-o requests refontification.
|
|
476
|
|
477 ** C-x C-f RET (find-file), typing nothing in the minibuffer, is no longer
|
|
478 a special case.
|
|
479
|
|
480 Since the default input is the current directory, this has the effect
|
|
481 of specifying the current directory. Normally that means to visit the
|
|
482 directory with Dired.
|
|
483
|
|
484 You can get the old behavior by typing C-x C-f M-n RET, which fetches
|
|
485 the actual file name into the minibuffer.
|
|
486
|
|
487 ** In Dired's ! command (dired-do-shell-command), `*' and `?' now
|
|
488 control substitution of the file names only when they are surrounded
|
|
489 by whitespace. This means you can now use them as shell wildcards
|
|
490 too. If you want to use just plain `*' as a wildcard, type `*""'; the
|
|
491 doublequotes make no difference in the shell, but they prevent
|
|
492 special treatment in `dired-do-shell-command'.
|
|
493
|
|
494 ** The info-search bindings on C-h C-f, C-h C-k and C-h C-i
|
|
495 have been moved to C-h F, C-h K and C-h S.
|
|
496
|
|
497 ** `apply-macro-to-region-lines' now operates on all lines that begin
|
|
498 in the region, rather than on all complete lines in the region.
|
|
499
|
|
500 ** line-move-ignore-invisible now defaults to t.
|
|
501
|
|
502 ** Adaptive filling misfeature removed.
|
|
503 It no longer treats `NNN.' or `(NNN)' as a prefix.
|
|
504
|
|
505 ** The old bindings C-M-delete and C-M-backspace have been deleted,
|
|
506 since there are situations where one or the other will shut down
|
|
507 the operating system or your X server.
|
|
508
|
|
509 ** The register compatibility key bindings (deprecated since Emacs 19)
|
|
510 have been removed:
|
|
511 C-x / point-to-register (Use: C-x r SPC)
|
|
512 C-x j jump-to-register (Use: C-x r j)
|
|
513 C-x x copy-to-register (Use: C-x r s)
|
|
514 C-x g insert-register (Use: C-x r i)
|
|
515
|
|
516
|
|
517 * Editing Changes in Emacs 22.1
|
|
518
|
|
519 ** The max size of buffers and integers has been doubled.
|
|
520 On 32bit machines, it is now 256M (i.e. 268435455).
|
|
521
|
|
522 ** !MEM FULL! at the start of the mode line indicates that Emacs
|
|
523 cannot get any more memory for Lisp data. This often means it could
|
|
524 crash soon if you do things that use more memory. On most systems,
|
|
525 killing buffers will get out of this state. If killing buffers does
|
|
526 not make !MEM FULL! disappear, you should save your work and start
|
|
527 a new Emacs.
|
|
528
|
|
529 ** `undo-only' does an undo which does not redo any previous undo.
|
|
530
|
|
531 ** Yanking text now discards certain text properties that can
|
|
532 be inconvenient when you did not expect them. The variable
|
|
533 `yank-excluded-properties' specifies which ones. Insertion
|
|
534 of register contents and rectangles also discards these properties.
|
|
535
|
|
536 ** New command `kill-whole-line' kills an entire line at once.
|
|
537 By default, it is bound to C-S-<backspace>.
|
|
538
|
|
539 ** M-SPC (just-one-space) when given a numeric argument N
|
|
540 converts whitespace around point to N spaces.
|
|
541
|
|
542 ** You can now switch buffers in a cyclic order with C-x C-left
|
|
543 (previous-buffer) and C-x C-right (next-buffer). C-x left and
|
|
544 C-x right can be used as well. The functions keep a different buffer
|
|
545 cycle for each frame, using the frame-local buffer list.
|
|
546
|
|
547 ** C-x 5 C-o displays a specified buffer in another frame
|
|
548 but does not switch to that frame. It's the multi-frame
|
|
549 analogue of C-x 4 C-o.
|
|
550
|
|
551 ** `special-display-buffer-names' and `special-display-regexps' now
|
|
552 understand two new boolean pseudo-frame-parameters `same-frame' and
|
|
553 `same-window'.
|
|
554
|
|
555 ** New commands to operate on pairs of open and close characters:
|
|
556 `insert-pair', `delete-pair', `raise-sexp'.
|
|
557
|
|
558 ** M-x setenv now expands environment variable references.
|
|
559
|
|
560 Substrings of the form `$foo' and `${foo}' in the specified new value
|
|
561 now refer to the value of environment variable foo. To include a `$'
|
|
562 in the value, use `$$'.
|
|
563
|
|
564 ** The default values of paragraph-start and indent-line-function have
|
|
565 been changed to reflect those used in Text mode rather than those used
|
|
566 in Paragraph-Indent Text mode.
|
|
567
|
|
568 ** The default for the paper size (variable ps-paper-type) is taken
|
|
569 from the locale.
|
|
570
|
|
571 ** Help command changes:
|
|
572
|
|
573 *** Changes in C-h bindings:
|
|
574
|
|
575 C-h e displays the *Messages* buffer.
|
|
576
|
|
577 C-h d runs apropos-documentation.
|
|
578
|
|
579 C-h r visits the Emacs Manual in Info.
|
|
580
|
|
581 C-h followed by a control character is used for displaying files
|
|
582 that do not change:
|
|
583
|
|
584 C-h C-f displays the FAQ.
|
|
585 C-h C-e displays the PROBLEMS file.
|
|
586
|
|
587 The info-search bindings on C-h C-f, C-h C-k and C-h C-i
|
|
588 have been moved to C-h F, C-h K and C-h S.
|
|
589
|
|
590 C-h c, C-h k, C-h w, and C-h f now handle remapped interactive commands.
|
|
591 - C-h c and C-h k report the actual command (after possible remapping)
|
|
592 run by the key sequence.
|
|
593 - C-h w and C-h f on a command which has been remapped now report the
|
|
594 command it is remapped to, and the keys which can be used to run
|
|
595 that command.
|
|
596
|
|
597 For example, if C-k is bound to kill-line, and kill-line is remapped
|
|
598 to new-kill-line, these commands now report:
|
|
599 - C-h c and C-h k C-k reports:
|
|
600 C-k runs the command new-kill-line
|
|
601 - C-h w and C-h f kill-line reports:
|
|
602 kill-line is remapped to new-kill-line which is on C-k, <deleteline>
|
|
603 - C-h w and C-h f new-kill-line reports:
|
|
604 new-kill-line is on C-k
|
|
605
|
|
606 *** The apropos commands now accept a list of words to match.
|
|
607 When more than one word is specified, at least two of those words must
|
|
608 be present for an item to match. Regular expression matching is still
|
|
609 available.
|
|
610
|
|
611 *** The new option `apropos-sort-by-scores' causes the matching items
|
|
612 to be sorted according to their score. The score for an item is a
|
|
613 number calculated to indicate how well the item matches the words or
|
|
614 regular expression that you entered to the apropos command. The best
|
|
615 match is listed first, and the calculated score is shown for each
|
|
616 matching item.
|
|
617
|
|
618 *** Help commands `describe-function' and `describe-key' now show function
|
|
619 arguments in lowercase italics on displays that support it. To change the
|
|
620 default, customize face `help-argument-name' or redefine the function
|
|
621 `help-default-arg-highlight'.
|
|
622
|
|
623 *** C-h v and C-h f commands now include a hyperlink to the C source for
|
|
624 variables and functions defined in C (if the C source is available).
|
|
625
|
|
626 *** Help mode now only makes hyperlinks for faces when the face name is
|
|
627 preceded or followed by the word `face'. It no longer makes
|
|
628 hyperlinks for variables without variable documentation, unless
|
|
629 preceded by one of the words `variable' or `option'. It now makes
|
|
630 hyperlinks to Info anchors (or nodes) if the anchor (or node) name is
|
|
631 enclosed in single quotes and preceded by `info anchor' or `Info
|
|
632 anchor' (in addition to earlier `info node' and `Info node'). In
|
|
633 addition, it now makes hyperlinks to URLs as well if the URL is
|
|
634 enclosed in single quotes and preceded by `URL'.
|
|
635
|
|
636 *** The new command `describe-char' (C-u C-x =) pops up a buffer with
|
|
637 description various information about a character, including its
|
|
638 encodings and syntax, its text properties, how to input, overlays, and
|
|
639 widgets at point. You can get more information about some of them, by
|
|
640 clicking on mouse-sensitive areas or moving there and pressing RET.
|
|
641
|
|
642 *** The command `list-text-properties-at' has been deleted because
|
|
643 C-u C-x = gives the same information and more.
|
|
644
|
|
645 *** New command `display-local-help' displays any local help at point
|
|
646 in the echo area. It is bound to `C-h .'. It normally displays the
|
|
647 same string that would be displayed on mouse-over using the
|
|
648 `help-echo' property, but, in certain cases, it can display a more
|
|
649 keyboard oriented alternative.
|
|
650
|
81089
|
651 *** New user option `help-at-pt-display-when-idle' allows you to
|
81024
|
652 automatically show the help provided by `display-local-help' on
|
|
653 point-over, after suitable idle time. The amount of idle time is
|
|
654 determined by the user option `help-at-pt-timer-delay' and defaults
|
|
655 to one second. This feature is turned off by default.
|
|
656
|
|
657 ** Mark command changes:
|
|
658
|
|
659 *** A prefix argument is no longer required to repeat a jump to a
|
81210
|
660 previous mark if you set `set-mark-command-repeat-pop' to t. I.e. C-u
|
|
661 C-SPC C-SPC C-SPC ... cycles through the mark ring. Use C-u C-u C-SPC
|
|
662 to set the mark immediately after a jump.
|
81024
|
663
|
|
664 *** Marking commands extend the region when invoked multiple times.
|
|
665
|
|
666 If you type C-M-SPC (mark-sexp), M-@ (mark-word), M-h
|
|
667 (mark-paragraph), or C-M-h (mark-defun) repeatedly, the marked region
|
|
668 extends each time, so you can mark the next two sexps with M-C-SPC
|
|
669 M-C-SPC, for example. This feature also works for
|
|
670 mark-end-of-sentence, if you bind that to a key. It also extends the
|
|
671 region when the mark is active in Transient Mark mode, regardless of
|
|
672 the last command. To start a new region with one of marking commands
|
|
673 in Transient Mark mode, you can deactivate the active region with C-g,
|
|
674 or set the new mark with C-SPC.
|
|
675
|
|
676 *** Some commands do something special in Transient Mark mode when the
|
|
677 mark is active--for instance, they limit their operation to the
|
|
678 region. Even if you don't normally use Transient Mark mode, you might
|
|
679 want to get this behavior from a particular command. There are two
|
|
680 ways you can enable Transient Mark mode and activate the mark, for one
|
|
681 command only.
|
|
682
|
|
683 One method is to type C-SPC C-SPC; this enables Transient Mark mode
|
|
684 and sets the mark at point. The other method is to type C-u C-x C-x.
|
|
685 This enables Transient Mark mode temporarily but does not alter the
|
|
686 mark or the region.
|
|
687
|
|
688 After these commands, Transient Mark mode remains enabled until you
|
|
689 deactivate the mark. That typically happens when you type a command
|
|
690 that alters the buffer, but you can also deactivate the mark by typing
|
|
691 C-g.
|
|
692
|
|
693 *** Movement commands `beginning-of-buffer', `end-of-buffer',
|
|
694 `beginning-of-defun', `end-of-defun' do not set the mark if the mark
|
|
695 is already active in Transient Mark mode.
|
|
696
|
|
697 *** M-h (mark-paragraph) now accepts a prefix arg.
|
|
698
|
|
699 With positive arg, M-h marks the current and the following paragraphs;
|
|
700 if the arg is negative, it marks the current and the preceding
|
|
701 paragraphs.
|
|
702
|
|
703 ** Incremental Search changes:
|
|
704
|
|
705 *** M-% typed in isearch mode invokes `query-replace' or
|
|
706 `query-replace-regexp' (depending on search mode) with the current
|
|
707 search string used as the string to replace.
|
|
708
|
|
709 *** C-w in incremental search now grabs either a character or a word,
|
|
710 making the decision in a heuristic way. This new job is done by the
|
|
711 command `isearch-yank-word-or-char'. To restore the old behavior,
|
|
712 bind C-w to `isearch-yank-word' in `isearch-mode-map'.
|
|
713
|
|
714 *** C-y in incremental search now grabs the next line if point is already
|
|
715 at the end of a line.
|
|
716
|
|
717 *** C-M-w deletes and C-M-y grabs a character in isearch mode.
|
|
718 Another method to grab a character is to enter the minibuffer by `M-e'
|
|
719 and to type `C-f' at the end of the search string in the minibuffer.
|
|
720
|
|
721 *** Vertical scrolling is now possible within incremental search.
|
|
722 To enable this feature, customize the new user option
|
|
723 `isearch-allow-scroll'. User written commands which satisfy stringent
|
|
724 constraints can be marked as "scrolling commands". See the Emacs manual
|
|
725 for details.
|
|
726
|
|
727 *** Isearch no longer adds `isearch-resume' commands to the command
|
|
728 history by default. To enable this feature, customize the new
|
|
729 user option `isearch-resume-in-command-history'.
|
|
730
|
|
731 ** Replace command changes:
|
|
732
|
|
733 *** When used interactively, the commands `query-replace-regexp' and
|
|
734 `replace-regexp' allow \,expr to be used in a replacement string,
|
|
735 where expr is an arbitrary Lisp expression evaluated at replacement
|
|
736 time. `\#' in a replacement string now refers to the count of
|
|
737 replacements already made by the replacement command. All regular
|
|
738 expression replacement commands now allow `\?' in the replacement
|
|
739 string to specify a position where the replacement string can be
|
|
740 edited for each replacement. `query-replace-regexp-eval' is now
|
|
741 deprecated since it offers no additional functionality.
|
|
742
|
|
743 *** query-replace uses isearch lazy highlighting when the new user option
|
|
744 `query-replace-lazy-highlight' is non-nil.
|
|
745
|
|
746 *** The current match in query-replace is highlighted in new face
|
|
747 `query-replace' which by default inherits from isearch face.
|
|
748
|
|
749 *** New user option `query-replace-skip-read-only': when non-nil,
|
|
750 `query-replace' and related functions simply ignore
|
|
751 a match if part of it has a read-only property.
|
|
752
|
|
753 ** Local variables lists:
|
|
754
|
|
755 *** If the local variables list contains any variable-value pairs that
|
|
756 are not known to be safe, Emacs shows a prompt asking whether to apply
|
|
757 the local variables list as a whole. In earlier versions, a prompt
|
|
758 was only issued for variables explicitly marked as risky (for the
|
|
759 definition of risky variables, see `risky-local-variable-p').
|
|
760
|
|
761 At the prompt, you can choose to save the contents of this local
|
|
762 variables list to `safe-local-variable-values'. This new customizable
|
|
763 option is a list of variable-value pairs that are known to be safe.
|
|
764 Variables can also be marked as safe with the existing
|
|
765 `safe-local-variable' property (see `safe-local-variable-p').
|
|
766 However, risky variables will not be added to
|
|
767 `safe-local-variable-values' in this way.
|
|
768
|
|
769 *** The variable `enable-local-variables' controls how local variable
|
|
770 lists are handled. t, the default, specifies the standard querying
|
|
771 behavior. :safe means use only safe values, and ignore the rest.
|
|
772 :all means set all variables, whether or not they are safe.
|
|
773 nil means ignore them all. Anything else means always query.
|
|
774
|
|
775 *** The variable `safe-local-eval-forms' specifies a list of forms that
|
|
776 are ok to evaluate when they appear in an `eval' local variables
|
|
777 specification. Normally Emacs asks for confirmation before evaluating
|
|
778 such a form, but if the form appears in this list, no confirmation is
|
|
779 needed.
|
|
780
|
|
781 *** If a function has a non-nil `safe-local-eval-function' property,
|
|
782 that means it is ok to evaluate some calls to that function when it
|
|
783 appears in an `eval' local variables specification. If the property
|
|
784 is t, then any form calling that function with constant arguments is
|
|
785 ok. If the property is a function or list of functions, they are called
|
|
786 with the form as argument, and if any returns t, the form is ok to call.
|
|
787
|
|
788 If the form is not "ok to call", that means Emacs asks for
|
|
789 confirmation as before.
|
|
790
|
|
791 *** In processing a local variables list, Emacs strips the prefix and
|
|
792 suffix from every line before processing all the lines.
|
|
793
|
|
794 *** Text properties in local variables.
|
|
795
|
|
796 A file local variables list cannot specify a string with text
|
|
797 properties--any specified text properties are discarded.
|
|
798
|
|
799 ** File operation changes:
|
|
800
|
|
801 *** Unquoted `$' in file names do not signal an error any more when
|
|
802 the corresponding environment variable does not exist.
|
|
803 Instead, the `$ENVVAR' text is left as is, so that `$$' quoting
|
|
804 is only rarely needed.
|
|
805
|
|
806 *** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case.
|
|
807
|
|
808 Since the default input is the current directory, this has the effect
|
|
809 of specifying the current directory. Normally that means to visit the
|
|
810 directory with Dired.
|
|
811
|
|
812 *** C-x s (save-some-buffers) now offers an option `d' to diff a buffer
|
|
813 against its file, so you can see what changes you would be saving.
|
|
814
|
|
815 *** Auto Compression mode is now enabled by default.
|
|
816
|
|
817 *** If the user visits a file larger than `large-file-warning-threshold',
|
|
818 Emacs asks for confirmation.
|
|
819
|
|
820 *** The commands copy-file, rename-file, make-symbolic-link and
|
|
821 add-name-to-file, when given a directory as the "new name" argument,
|
|
822 convert it to a file name by merging in the within-directory part of
|
|
823 the existing file's name. (This is the same convention that shell
|
|
824 commands cp, mv, and ln follow.) Thus, M-x copy-file RET ~/foo RET
|
|
825 /tmp RET copies ~/foo to /tmp/foo.
|
|
826
|
|
827 *** require-final-newline now has two new possible values:
|
|
828
|
|
829 `visit' means add a newline (as an undoable change) if it's needed
|
|
830 when visiting the file.
|
|
831
|
|
832 `visit-save' means add a newline (as an undoable change) if it's
|
|
833 needed when visiting the file, and also add a newline if it's needed
|
|
834 when saving the file.
|
|
835
|
|
836 *** The new option mode-require-final-newline controls how certain
|
|
837 major modes enable require-final-newline. Any major mode that's
|
|
838 designed for a kind of file that should normally end in a newline
|
|
839 sets require-final-newline based on mode-require-final-newline.
|
|
840 So you can customize mode-require-final-newline to control what these
|
|
841 modes do.
|
|
842
|
|
843 *** When you are root, and you visit a file whose modes specify
|
|
844 read-only, the Emacs buffer is now read-only too. Type C-x C-q if you
|
|
845 want to make the buffer writable. (As root, you can in fact alter the
|
|
846 file.)
|
|
847
|
|
848 *** find-file-read-only visits multiple files in read-only mode,
|
|
849 when the file name contains wildcard characters.
|
|
850
|
|
851 *** find-alternate-file replaces the current file with multiple files,
|
|
852 when the file name contains wildcard characters. It now asks if you
|
|
853 wish save your changes and not just offer to kill the buffer.
|
|
854
|
|
855 *** When used interactively, `format-write-file' now asks for confirmation
|
|
856 before overwriting an existing file, unless a prefix argument is
|
|
857 supplied. This behavior is analogous to `write-file'.
|
|
858
|
|
859 *** The variable `auto-save-file-name-transforms' now has a third element that
|
|
860 controls whether or not the function `make-auto-save-file-name' will
|
|
861 attempt to construct a unique auto-save name (e.g. for remote files).
|
|
862
|
|
863 *** The new option `write-region-inhibit-fsync' disables calls to fsync
|
|
864 in `write-region'. This can be useful on laptops to avoid spinning up
|
|
865 the hard drive upon each file save. Enabling this variable may result
|
|
866 in data loss, use with care.
|
|
867
|
|
868 ** Minibuffer changes:
|
|
869
|
|
870 *** The completion commands TAB, SPC and ? in the minibuffer apply only
|
|
871 to the text before point. If there is text in the buffer after point,
|
|
872 it remains unchanged.
|
|
873
|
|
874 *** The new file-name-shadow-mode is turned ON by default, so that when
|
|
875 entering a file name, any prefix which Emacs will ignore is dimmed.
|
|
876
|
|
877 *** There's a new face `minibuffer-prompt'.
|
|
878 Emacs adds this face to the list of text properties stored in the
|
|
879 variable `minibuffer-prompt-properties', which is used to display the
|
|
880 prompt string.
|
|
881
|
|
882 *** Enhanced visual feedback in `*Completions*' buffer.
|
|
883
|
|
884 Completions lists use faces to highlight what all completions
|
|
885 have in common and where they begin to differ.
|
|
886
|
|
887 The common prefix shared by all possible completions uses the face
|
|
888 `completions-common-part', while the first character that isn't the
|
|
889 same uses the face `completions-first-difference'. By default,
|
|
890 `completions-common-part' inherits from `default', and
|
|
891 `completions-first-difference' inherits from `bold'. The idea of
|
|
892 `completions-common-part' is that you can use it to make the common
|
|
893 parts less visible than normal, so that the rest of the differing
|
|
894 parts is, by contrast, slightly highlighted.
|
|
895
|
|
896 Above fontification is always done when listing completions is
|
|
897 triggered at minibuffer. If you want to fontify completions whose
|
|
898 listing is triggered at the other normal buffer, you have to pass
|
|
899 the common prefix of completions to `display-completion-list' as
|
|
900 its second argument.
|
|
901
|
|
902 *** File-name completion can now ignore specified directories.
|
|
903 If an element of the list in `completion-ignored-extensions' ends in a
|
|
904 slash `/', it indicates a subdirectory that should be ignored when
|
|
905 completing file names. Elements of `completion-ignored-extensions'
|
|
906 which do not end in a slash are never considered when a completion
|
|
907 candidate is a directory.
|
|
908
|
|
909 *** New user option `history-delete-duplicates'.
|
|
910 If set to t when adding a new history element, all previous identical
|
|
911 elements are deleted from the history list.
|
|
912
|
|
913 ** Redisplay changes:
|
|
914
|
|
915 *** The new face `mode-line-inactive' is used to display the mode line
|
|
916 of non-selected windows. The `mode-line' face is now used to display
|
|
917 the mode line of the currently selected window.
|
|
918
|
|
919 The new variable `mode-line-in-non-selected-windows' controls whether
|
|
920 the `mode-line-inactive' face is used.
|
|
921
|
|
922 *** The mode line position information now comes before the major mode.
|
|
923 When the file is maintained under version control, that information
|
|
924 appears between the position information and the major mode.
|
|
925
|
|
926 *** You can now customize the use of window fringes. To control this
|
|
927 for all frames, use M-x fringe-mode or the Show/Hide submenu of the
|
|
928 top-level Options menu, or customize the `fringe-mode' variable. To
|
|
929 control this for a specific frame, use the command M-x
|
|
930 set-fringe-style.
|
|
931
|
|
932 *** Angle icons in the fringes can indicate the buffer boundaries. In
|
|
933 addition, up and down arrow bitmaps in the fringe indicate which ways
|
|
934 the window can be scrolled.
|
|
935
|
|
936 This behavior is activated by setting the buffer-local variable
|
|
937 `indicate-buffer-boundaries' to a non-nil value. The default value of
|
|
938 this variable is found in `default-indicate-buffer-boundaries'.
|
|
939
|
|
940 If value is `left' or `right', both angle and arrow bitmaps are
|
|
941 displayed in the left or right fringe, resp.
|
|
942
|
|
943 The value can also be an alist which specifies the presence and
|
|
944 position of each bitmap individually.
|
|
945
|
|
946 For example, ((top . left) (t . right)) places the top angle bitmap
|
|
947 in left fringe, the bottom angle bitmap in right fringe, and both
|
|
948 arrow bitmaps in right fringe. To show just the angle bitmaps in the
|
|
949 left fringe, but no arrow bitmaps, use ((top . left) (bottom . left)).
|
|
950
|
|
951 *** On window systems, lines which are exactly as wide as the window
|
|
952 (not counting the final newline character) are no longer broken into
|
|
953 two lines on the display (with just the newline on the second line).
|
|
954 Instead, the newline now "overflows" into the right fringe, and the
|
|
955 cursor will be displayed in the fringe when positioned on that newline.
|
|
956
|
|
957 The new user option 'overflow-newline-into-fringe' can be set to nil to
|
|
958 revert to the old behavior of continuing such lines.
|
|
959
|
|
960 *** A window can now have individual fringe and scroll-bar settings,
|
|
961 in addition to the individual display margin settings.
|
|
962
|
|
963 Such individual settings are now preserved when windows are split
|
|
964 horizontally or vertically, a saved window configuration is restored,
|
|
965 or when the frame is resized.
|
|
966
|
|
967 *** When a window has display margin areas, the fringes are now
|
|
968 displayed between the margins and the buffer's text area, rather than
|
|
969 outside those margins.
|
|
970
|
|
971 *** New face `escape-glyph' highlights control characters and escape glyphs.
|
|
972
|
|
973 *** Non-breaking space and hyphens are now displayed with a special
|
|
974 face, either nobreak-space or escape-glyph. You can turn this off or
|
|
975 specify a different mode by setting the variable `nobreak-char-display'.
|
|
976
|
|
977 *** The parameters of automatic hscrolling can now be customized.
|
|
978 The variable `hscroll-margin' determines how many columns away from
|
|
979 the window edge point is allowed to get before automatic hscrolling
|
|
980 will horizontally scroll the window. The default value is 5.
|
|
981
|
|
982 The variable `hscroll-step' determines how many columns automatic
|
|
983 hscrolling scrolls the window when point gets too close to the
|
|
984 window edge. If its value is zero, the default, Emacs scrolls the
|
|
985 window so as to center point. If its value is an integer, it says how
|
|
986 many columns to scroll. If the value is a floating-point number, it
|
|
987 gives the fraction of the window's width to scroll the window.
|
|
988
|
|
989 The variable `automatic-hscrolling' was renamed to
|
|
990 `auto-hscroll-mode'. The old name is still available as an alias.
|
|
991
|
|
992 *** Moving or scrolling through images (and other lines) taller than
|
|
993 the window now works sensibly, by automatically adjusting the window's
|
|
994 vscroll property.
|
|
995
|
|
996 *** Preemptive redisplay now adapts to current load and bandwidth.
|
|
997
|
|
998 To avoid preempting redisplay on fast computers, networks, and displays,
|
|
999 the arrival of new input is now performed at regular intervals during
|
|
1000 redisplay. The new variable `redisplay-preemption-period' specifies
|
|
1001 the period; the default is to check for input every 0.1 seconds.
|
|
1002
|
|
1003 *** The %c and %l constructs are now ignored in frame-title-format.
|
|
1004 Due to technical limitations in how Emacs interacts with windowing
|
|
1005 systems, these constructs often failed to render properly, and could
|
|
1006 even cause Emacs to crash.
|
|
1007
|
|
1008 *** If value of `auto-resize-tool-bars' is `grow-only', the tool bar
|
|
1009 will expand as needed, but not contract automatically. To contract
|
|
1010 the tool bar, you must type C-l.
|
|
1011
|
|
1012 *** New customize option `overline-margin' controls the space between
|
|
1013 overline and text.
|
|
1014
|
|
1015 *** New variable `x-underline-at-descent-line' controls the relative
|
|
1016 position of the underline. When set, it overrides the
|
|
1017 `x-use-underline-position-properties' variables.
|
|
1018
|
|
1019 ** New faces:
|
|
1020
|
|
1021 *** `mode-line-highlight' is the standard face indicating mouse sensitive
|
|
1022 elements on mode-line (and header-line) like `highlight' face on text
|
|
1023 areas.
|
|
1024
|
|
1025 *** `mode-line-buffer-id' is the standard face for buffer identification
|
|
1026 parts of the mode line.
|
|
1027
|
|
1028 *** `shadow' face defines the appearance of the "shadowed" text, i.e.
|
|
1029 the text which should be less noticeable than the surrounding text.
|
|
1030 This can be achieved by using shades of grey in contrast with either
|
|
1031 black or white default foreground color. This generic shadow face
|
|
1032 allows customization of the appearance of shadowed text in one place,
|
|
1033 so package-specific faces can inherit from it.
|
|
1034
|
|
1035 *** `vertical-border' face is used for the vertical divider between windows.
|
|
1036
|
|
1037 ** Font-Lock (syntax highlighting) changes:
|
|
1038
|
|
1039 *** All modes now support using M-x font-lock-mode to toggle
|
|
1040 fontification, even those such as Occur, Info, and comint-derived
|
|
1041 modes that do their own fontification in a special way.
|
|
1042
|
|
1043 The variable `Info-fontify' is no longer applicable; to disable
|
|
1044 fontification in Info, remove `turn-on-font-lock' from
|
|
1045 `Info-mode-hook'.
|
|
1046
|
|
1047 *** New standard font-lock face `font-lock-comment-delimiter-face'.
|
92791
|
1048 This is used for the characters that indicate the start of a comment,
|
|
1049 e.g. `;' in Lisp mode.
|
|
1050
|
81024
|
1051 *** New standard font-lock face `font-lock-preprocessor-face'.
|
|
1052
|
|
1053 *** Easy to overlook single character negation can now be font-locked.
|
|
1054 You can use the new variable `font-lock-negation-char-face' and the face of
|
|
1055 the same name to customize this. Currently the cc-modes, sh-script-mode,
|
|
1056 cperl-mode and make-mode support this.
|
|
1057
|
|
1058 *** Font-Lock mode: in major modes such as Lisp mode, where some Emacs
|
|
1059 features assume that an open-paren in column 0 is always outside of
|
|
1060 any string or comment, Font-Lock now highlights any such open-paren in
|
|
1061 bold-red if it is inside a string or a comment, to indicate that it
|
|
1062 can cause trouble. You should rewrite the string or comment so that
|
|
1063 the open-paren is not in column 0.
|
|
1064
|
|
1065 *** M-o now is the prefix key for setting text properties;
|
|
1066 M-o M-o requests refontification.
|
|
1067
|
|
1068 *** The default settings for JIT stealth lock parameters are changed.
|
|
1069 The default value for the user option jit-lock-stealth-time is now nil
|
|
1070 instead of 3. This setting of jit-lock-stealth-time disables stealth
|
|
1071 fontification: on today's machines, it may be a bug in font lock
|
|
1072 patterns if fontification otherwise noticeably degrades interactivity.
|
|
1073 If you find movement in infrequently visited buffers sluggish (and the
|
|
1074 major mode maintainer has no better idea), customizing
|
|
1075 jit-lock-stealth-time to a non-nil value will let Emacs fontify
|
|
1076 buffers in the background when it considers the system to be idle.
|
|
1077 jit-lock-stealth-nice is now 0.5 instead of 0.125 which is supposed to
|
|
1078 cause less load than the old defaults.
|
|
1079
|
|
1080 *** jit-lock can now be delayed with `jit-lock-defer-time'.
|
|
1081
|
|
1082 If this variable is non-nil, its value should be the amount of Emacs
|
|
1083 idle time in seconds to wait before starting fontification. For
|
|
1084 example, if you set `jit-lock-defer-time' to 0.25, fontification will
|
|
1085 only happen after 0.25s of idle time.
|
|
1086
|
|
1087 *** contextual refontification is now separate from stealth fontification.
|
|
1088
|
|
1089 jit-lock-defer-contextually is renamed jit-lock-contextually and
|
|
1090 jit-lock-context-time determines the delay after which contextual
|
|
1091 refontification takes place.
|
|
1092
|
|
1093 *** lazy-lock is considered obsolete.
|
|
1094
|
|
1095 The `lazy-lock' package is superseded by `jit-lock' and is considered
|
|
1096 obsolete. `jit-lock' is activated by default; if you wish to continue
|
|
1097 using `lazy-lock', activate it in your ~/.emacs like this:
|
|
1098 (setq font-lock-support-mode 'lazy-lock-mode)
|
|
1099
|
|
1100 If you invoke `lazy-lock-mode' directly rather than through
|
|
1101 `font-lock-support-mode', it now issues a warning:
|
|
1102 "Use font-lock-support-mode rather than calling lazy-lock-mode"
|
|
1103
|
|
1104 ** Menu support:
|
|
1105
|
|
1106 *** A menu item "Show/Hide" was added to the top-level menu "Options".
|
|
1107 This menu allows you to turn various display features on and off (such
|
|
1108 as the fringes, the tool bar, the speedbar, and the menu bar itself).
|
|
1109 You can also move the vertical scroll bar to either side here or turn
|
|
1110 it off completely. There is also a menu-item to toggle displaying of
|
|
1111 current date and time, current line and column number in the mode-line.
|
|
1112
|
|
1113 *** Speedbar has moved from the "Tools" top level menu to "Show/Hide".
|
|
1114
|
|
1115 *** The menu item "Open File..." has been split into two items, "New File..."
|
|
1116 and "Open File...". "Open File..." now opens only existing files. This is
|
|
1117 to support existing GUI file selection dialogs better.
|
|
1118
|
|
1119 *** The file selection dialog for Gtk+, Mac, W32 and Motif/LessTif can be
|
|
1120 disabled by customizing the variable `use-file-dialog'.
|
|
1121
|
|
1122 *** The pop up menus for Lucid now stay up if you do a fast click and can
|
|
1123 be navigated with the arrow keys (like Gtk+, Mac and W32).
|
|
1124
|
|
1125 *** The menu bar for Motif/LessTif/Lucid/Gtk+ can be navigated with keys.
|
|
1126 Pressing F10 shows the first menu in the menu bar. Navigation is done with
|
|
1127 the arrow keys, select with the return key and cancel with the escape keys.
|
|
1128
|
|
1129 *** The Lucid menus can display multilingual text in your locale. You have
|
|
1130 to explicitly specify a fontSet resource for this to work, for example
|
|
1131 `-xrm "Emacs*fontSet: -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*"'.
|
|
1132
|
|
1133 *** Dialogs for Lucid/Athena and LessTif/Motif now pop down on pressing
|
|
1134 ESC, like they do for Gtk+, Mac and W32.
|
|
1135
|
|
1136 *** For the Gtk+ version, you can make Emacs use the old file dialog
|
|
1137 by setting the variable `x-gtk-use-old-file-dialog' to t. Default is to use
|
|
1138 the new dialog.
|
|
1139
|
|
1140 *** You can exit dialog windows and menus by typing C-g.
|
|
1141
|
|
1142 ** Buffer Menu changes:
|
|
1143
|
|
1144 *** The new options `buffers-menu-show-directories' and
|
|
1145 `buffers-menu-show-status' let you control how buffers are displayed
|
|
1146 in the menu dropped down when you click "Buffers" from the menu bar.
|
|
1147
|
|
1148 `buffers-menu-show-directories' controls whether the menu displays
|
|
1149 leading directories as part of the file name visited by the buffer.
|
|
1150 If its value is `unless-uniquify', the default, directories are
|
|
1151 shown unless uniquify-buffer-name-style' is non-nil. The value of nil
|
|
1152 and t turn the display of directories off and on, respectively.
|
|
1153
|
|
1154 `buffers-menu-show-status' controls whether the Buffers menu includes
|
|
1155 the modified and read-only status of the buffers. By default it is
|
|
1156 t, and the status is shown.
|
|
1157
|
|
1158 Setting these variables directly does not take effect until next time
|
|
1159 the Buffers menu is regenerated.
|
|
1160
|
|
1161 *** New command `Buffer-menu-toggle-files-only' toggles display of file
|
|
1162 buffers only in the Buffer Menu. It is bound to T in Buffer Menu
|
|
1163 mode.
|
|
1164
|
|
1165 *** `buffer-menu' and `list-buffers' now list buffers whose names begin
|
|
1166 with a space, when those buffers are visiting files. Normally buffers
|
|
1167 whose names begin with space are omitted.
|
|
1168
|
|
1169 ** Mouse changes:
|
|
1170
|
|
1171 *** You can now follow links by clicking Mouse-1 on the link.
|
|
1172
|
|
1173 Traditionally, Emacs uses a Mouse-1 click to set point and a Mouse-2
|
|
1174 click to follow a link, whereas most other applications use a Mouse-1
|
|
1175 click for both purposes, depending on whether you click outside or
|
|
1176 inside a link. Now the behavior of a Mouse-1 click has been changed
|
|
1177 to match this context-sensitive dual behavior. (If you prefer the old
|
|
1178 behavior, set the user option `mouse-1-click-follows-link' to nil.)
|
|
1179
|
|
1180 Depending on the current mode, a Mouse-2 click in Emacs can do much
|
|
1181 more than just follow a link, so the new Mouse-1 behavior is only
|
|
1182 activated for modes which explicitly mark a clickable text as a "link"
|
|
1183 (see the new function `mouse-on-link-p' for details). The Lisp
|
|
1184 packages that are included in release 22.1 have been adapted to do
|
|
1185 this, but external packages may not yet support this. However, there
|
|
1186 is no risk in using such packages, as the worst thing that could
|
|
1187 happen is that you get the original Mouse-1 behavior when you click
|
|
1188 on a link, which typically means that you set point where you click.
|
|
1189
|
|
1190 If you want to get the original Mouse-1 action also inside a link, you
|
|
1191 just need to press the Mouse-1 button a little longer than a normal
|
|
1192 click (i.e. press and hold the Mouse-1 button for half a second before
|
|
1193 you release it).
|
|
1194
|
|
1195 Dragging the Mouse-1 inside a link still performs the original
|
|
1196 drag-mouse-1 action, typically copy the text.
|
|
1197
|
|
1198 You can customize the new Mouse-1 behavior via the new user options
|
|
1199 `mouse-1-click-follows-link' and `mouse-1-click-in-non-selected-windows'.
|
|
1200
|
|
1201 *** If you set the new variable `mouse-autoselect-window' to a non-nil
|
|
1202 value, windows are automatically selected as you move the mouse from
|
|
1203 one Emacs window to another, even within a frame. A minibuffer window
|
|
1204 can be selected only when it is active.
|
|
1205
|
|
1206 *** On X, when the window manager requires that you click on a frame to
|
|
1207 select it (give it focus), the selected window and cursor position
|
|
1208 normally changes according to the mouse click position. If you set
|
|
1209 the variable x-mouse-click-focus-ignore-position to t, the selected
|
|
1210 window and cursor position do not change when you click on a frame
|
|
1211 to give it focus.
|
|
1212
|
|
1213 *** Emacs normally highlights mouse sensitive text whenever the mouse
|
|
1214 is over the text. By setting the new variable `mouse-highlight', you
|
|
1215 can optionally enable mouse highlighting only after you move the
|
|
1216 mouse, so that highlighting disappears when you press a key. You can
|
|
1217 also disable mouse highlighting.
|
|
1218
|
|
1219 *** You can now customize if selecting a region by dragging the mouse
|
|
1220 shall not copy the selected text to the kill-ring by setting the new
|
|
1221 variable mouse-drag-copy-region to nil.
|
|
1222
|
|
1223 *** Under X, mouse-wheel-mode is turned on by default.
|
|
1224
|
|
1225 *** Emacs ignores mouse-2 clicks while the mouse wheel is being moved.
|
|
1226
|
|
1227 People tend to push the mouse wheel (which counts as a mouse-2 click)
|
|
1228 unintentionally while turning the wheel, so these clicks are now
|
|
1229 ignored. You can customize this with the mouse-wheel-click-event and
|
|
1230 mouse-wheel-inhibit-click-time variables.
|
|
1231
|
|
1232 *** mouse-wheels can now scroll a specific fraction of the window
|
|
1233 (rather than a fixed number of lines) and the scrolling is `progressive'.
|
|
1234
|
|
1235 ** Multilingual Environment (Mule) changes:
|
|
1236
|
|
1237 *** You can disable character translation for a file using the -*-
|
|
1238 construct. Include `enable-character-translation: nil' inside the
|
|
1239 -*-...-*- to disable any character translation that may happen by
|
|
1240 various global and per-coding-system translation tables. You can also
|
|
1241 specify it in a local variable list at the end of the file. For
|
|
1242 shortcut, instead of using this long variable name, you can append the
|
|
1243 character "!" at the end of coding-system name specified in -*-
|
|
1244 construct or in a local variable list. For example, if a file has the
|
|
1245 following header, it is decoded by the coding system `iso-latin-1'
|
|
1246 without any character translation:
|
|
1247 ;; -*- coding: iso-latin-1!; -*-
|
|
1248
|
|
1249 *** Language environment and various default coding systems are setup
|
|
1250 more correctly according to the current locale name. If the locale
|
|
1251 name doesn't specify a charset, the default is what glibc defines.
|
|
1252 This change can result in using the different coding systems as
|
|
1253 default in some locale (e.g. vi_VN).
|
|
1254
|
|
1255 *** The keyboard-coding-system is now automatically set based on your
|
|
1256 current locale settings if you are not using a window system. This
|
|
1257 can mean that the META key doesn't work but generates non-ASCII
|
|
1258 characters instead, depending on how the terminal (or terminal
|
|
1259 emulator) works. Use `set-keyboard-coding-system' (or customize
|
|
1260 keyboard-coding-system) if you prefer META to work (the old default)
|
|
1261 or if the locale doesn't describe the character set actually generated
|
|
1262 by the keyboard. See Info node `Unibyte Mode'.
|
|
1263
|
|
1264 *** The new command `set-file-name-coding-system' (C-x RET F) sets
|
|
1265 coding system for encoding and decoding file names. A new menu item
|
|
1266 (Options->Mule->Set Coding Systems->For File Name) invokes this
|
|
1267 command.
|
|
1268
|
|
1269 *** The new command `revert-buffer-with-coding-system' (C-x RET r)
|
|
1270 revisits the current file using a coding system that you specify.
|
|
1271
|
|
1272 *** New command `recode-region' decodes the region again by a specified
|
|
1273 coding system.
|
|
1274
|
|
1275 *** The new command `recode-file-name' changes the encoding of the name
|
|
1276 of a file.
|
|
1277
|
|
1278 *** New command `ucs-insert' inserts a character specified by its
|
|
1279 unicode.
|
|
1280
|
|
1281 *** New command quail-show-key shows what key (or key sequence) to type
|
|
1282 in the current input method to input a character at point.
|
|
1283
|
|
1284 *** Limited support for character `unification' has been added.
|
|
1285 Emacs now knows how to translate between different representations of
|
|
1286 the same characters in various Emacs charsets according to standard
|
|
1287 Unicode mappings. This applies mainly to characters in the ISO 8859
|
|
1288 sets plus some other 8-bit sets, but can be extended. For instance,
|
|
1289 translation works amongst the Emacs ...-iso8859-... charsets and the
|
|
1290 mule-unicode-... ones.
|
|
1291
|
|
1292 By default this translation happens automatically on encoding.
|
|
1293 Self-inserting characters are translated to make the input conformant
|
|
1294 with the encoding of the buffer in which it's being used, where
|
|
1295 possible.
|
|
1296
|
|
1297 You can force a more complete unification with the user option
|
|
1298 unify-8859-on-decoding-mode. That maps all the Latin-N character sets
|
|
1299 into Unicode characters (from the latin-iso8859-1 and
|
|
1300 mule-unicode-0100-24ff charsets) on decoding. Note that this mode
|
|
1301 will often effectively clobber data with an iso-2022 encoding.
|
|
1302
|
|
1303 *** New language environments (set up automatically according to the
|
|
1304 locale): Belarusian, Bulgarian, Chinese-EUC-TW, Croatian, Esperanto,
|
|
1305 French, Georgian, Italian, Latin-7, Latvian, Lithuanian, Malayalam,
|
|
1306 Russian, Russian, Slovenian, Swedish, Tajik, Tamil, UTF-8,Ukrainian,
|
|
1307 Welsh,Latin-6, Windows-1255.
|
|
1308
|
|
1309 *** New input methods: latin-alt-postfix, latin-postfix, latin-prefix,
|
|
1310 belarusian, bulgarian-bds, bulgarian-phonetic, chinese-sisheng (for
|
|
1311 Chinese Pinyin characters), croatian, dutch, georgian, latvian-keyboard,
|
|
1312 lithuanian-numeric, lithuanian-keyboard, malayalam-inscript, rfc1345,
|
|
1313 russian-computer, sgml, slovenian, tamil-inscript, ukrainian-computer,
|
|
1314 ucs, vietnamese-telex, welsh.
|
|
1315
|
|
1316 *** There is support for decoding Greek and Cyrillic characters into
|
|
1317 either Unicode (the mule-unicode charsets) or the iso-8859 charsets,
|
|
1318 when possible. The latter are more space-efficient.
|
|
1319 This is controlled by user option utf-fragment-on-decoding.
|
|
1320
|
|
1321 *** Improved Thai support. A new minor mode `thai-word-mode' (which is
|
|
1322 automatically activated if you select Thai as a language
|
|
1323 environment) changes key bindings of most word-oriented commands to
|
|
1324 versions which recognize Thai words. Affected commands are
|
|
1325 M-f (forward-word)
|
|
1326 M-b (backward-word)
|
|
1327 M-d (kill-word)
|
|
1328 M-DEL (backward-kill-word)
|
|
1329 M-t (transpose-words)
|
|
1330 M-q (fill-paragraph)
|
|
1331
|
|
1332 *** Indian support has been updated.
|
|
1333 The in-is13194 coding system is now Unicode-based. CDAC fonts are
|
|
1334 assumed. There is a framework for supporting various Indian scripts,
|
|
1335 but currently only Devanagari, Malayalam and Tamil are supported.
|
|
1336
|
|
1337 *** The utf-8/16 coding systems have been enhanced.
|
|
1338 By default, untranslatable utf-8 sequences are simply composed into
|
|
1339 single quasi-characters. User option `utf-translate-cjk-mode' (it is
|
|
1340 turned on by default) arranges to translate many utf-8 CJK character
|
|
1341 sequences into real Emacs characters in a similar way to the Mule-UCS
|
|
1342 system. As this loads a fairly big data on demand, people who are not
|
|
1343 interested in CJK characters may want to customize it to nil.
|
|
1344 You can augment/amend the CJK translation via hash tables
|
|
1345 `ucs-mule-cjk-to-unicode' and `ucs-unicode-to-mule-cjk'. The utf-8
|
|
1346 coding system now also encodes characters from most of Emacs's
|
|
1347 one-dimensional internal charsets, specifically the ISO-8859 ones.
|
|
1348 The utf-16 coding system is affected similarly.
|
|
1349
|
|
1350 *** A UTF-7 coding system is available in the library `utf-7'.
|
|
1351
|
|
1352 *** A new coding system `euc-tw' has been added for traditional Chinese
|
|
1353 in CNS encoding; it accepts both Big 5 and CNS as input; on saving,
|
|
1354 Big 5 is then converted to CNS.
|
|
1355
|
|
1356 *** Many new coding systems are available in the `code-pages' library.
|
|
1357 These include complete versions of most of those in codepage.el, based
|
|
1358 on Unicode mappings. `codepage-setup' is now obsolete and is used
|
|
1359 only in the MS-DOS port of Emacs. All coding systems defined in
|
|
1360 `code-pages' are auto-loaded.
|
|
1361
|
|
1362 *** New variable `utf-translate-cjk-unicode-range' controls which
|
|
1363 Unicode characters to translate in `utf-translate-cjk-mode'.
|
|
1364
|
|
1365 *** iso-10646-1 (`Unicode') fonts can be used to display any range of
|
|
1366 characters encodable by the utf-8 coding system. Just specify the
|
|
1367 fontset appropriately.
|
|
1368
|
|
1369 ** Customize changes:
|
|
1370
|
|
1371 *** Custom themes are collections of customize options. Create a
|
|
1372 custom theme with M-x customize-create-theme. Use M-x load-theme to
|
|
1373 load and enable a theme, and M-x disable-theme to disable it. Use M-x
|
|
1374 enable-theme to enable a disabled theme.
|
|
1375
|
|
1376 *** The commands M-x customize-face and M-x customize-face-other-window
|
|
1377 now look at the character after point. If a face or faces are
|
|
1378 specified for that character, the commands by default customize those
|
|
1379 faces.
|
|
1380
|
|
1381 *** The face-customization widget has been reworked to be less confusing.
|
|
1382 In particular, when you enable a face attribute using the corresponding
|
|
1383 check-box, there's no longer a redundant `*' option in value selection
|
|
1384 for that attribute; the values you can choose are only those which make
|
|
1385 sense for the attribute. When an attribute is de-selected by unchecking
|
|
1386 its check-box, then the (now ignored, but still present temporarily in
|
|
1387 case you re-select the attribute) value is hidden.
|
|
1388
|
|
1389 *** When you set or reset a variable's value in a Customize buffer,
|
|
1390 the previous value becomes the "backup value" of the variable.
|
|
1391 You can go back to that backup value by selecting "Use Backup Value"
|
|
1392 under the "[State]" button.
|
|
1393
|
|
1394 ** Dired mode:
|
|
1395
|
|
1396 *** In Dired's ! command (dired-do-shell-command), `*' and `?' now
|
|
1397 control substitution of the file names only when they are surrounded
|
|
1398 by whitespace. This means you can now use them as shell wildcards
|
|
1399 too. If you want to use just plain `*' as a wildcard, type `*""'; the
|
|
1400 double quotes make no difference in the shell, but they prevent
|
|
1401 special treatment in `dired-do-shell-command'.
|
|
1402
|
|
1403 *** The Dired command `dired-goto-file' is now bound to j, not M-g.
|
|
1404 This is to avoid hiding the global key binding of M-g.
|
|
1405
|
|
1406 *** New faces dired-header, dired-mark, dired-marked, dired-flagged,
|
|
1407 dired-ignored, dired-directory, dired-symlink, dired-warning
|
|
1408 introduced for Dired mode instead of font-lock faces.
|
|
1409
|
|
1410 *** New Dired command `dired-compare-directories' marks files
|
|
1411 with different file attributes in two dired buffers.
|
|
1412
|
|
1413 *** New Dired command `dired-do-touch' (bound to T) changes timestamps
|
|
1414 of marked files with the value entered in the minibuffer.
|
|
1415
|
|
1416 *** In Dired, the w command now stores the current line's file name
|
|
1417 into the kill ring. With a zero prefix arg, it stores the absolute file name.
|
|
1418
|
|
1419 *** In Dired-x, Omitting files is now a minor mode, dired-omit-mode.
|
|
1420
|
|
1421 The mode toggling command is bound to M-o. A new command
|
|
1422 dired-mark-omitted, bound to * O, marks omitted files. The variable
|
|
1423 dired-omit-files-p is obsoleted, use the mode toggling function
|
|
1424 instead.
|
|
1425
|
|
1426 *** The variables dired-free-space-program and dired-free-space-args
|
|
1427 have been renamed to directory-free-space-program and
|
|
1428 directory-free-space-args, and they now apply whenever Emacs puts a
|
|
1429 directory listing into a buffer.
|
|
1430
|
|
1431 ** Comint changes:
|
|
1432
|
|
1433 *** The new INSIDE_EMACS environment variable is set to "t" in subshells
|
|
1434 running inside Emacs. This supersedes the EMACS environment variable,
|
|
1435 which will be removed in a future Emacs release. Programs that need
|
|
1436 to know whether they are started inside Emacs should check INSIDE_EMACS
|
|
1437 instead of EMACS.
|
|
1438
|
|
1439 *** The comint prompt can now be made read-only, using the new user
|
|
1440 option `comint-prompt-read-only'. This is not enabled by default,
|
|
1441 except in IELM buffers. The read-only status of IELM prompts can be
|
|
1442 controlled with the new user option `ielm-prompt-read-only', which
|
|
1443 overrides `comint-prompt-read-only'.
|
|
1444
|
|
1445 The new commands `comint-kill-whole-line' and `comint-kill-region'
|
|
1446 support editing comint buffers with read-only prompts.
|
|
1447
|
|
1448 `comint-kill-whole-line' is like `kill-whole-line', but ignores both
|
|
1449 read-only and field properties. Hence, it always kill entire
|
|
1450 lines, including any prompts.
|
|
1451
|
|
1452 `comint-kill-region' is like `kill-region', except that it ignores
|
|
1453 read-only properties, if it is safe to do so. This means that if any
|
|
1454 part of a prompt is deleted, then the entire prompt must be deleted
|
|
1455 and that all prompts must stay at the beginning of a line. If this is
|
|
1456 not the case, then `comint-kill-region' behaves just like
|
|
1457 `kill-region' if read-only properties are involved: it copies the text
|
|
1458 to the kill-ring, but does not delete it.
|
|
1459
|
|
1460 *** The new command `comint-insert-previous-argument' in comint-derived
|
|
1461 modes (shell-mode, etc.) inserts arguments from previous command lines,
|
|
1462 like bash's `ESC .' binding. It is bound by default to `C-c .', but
|
|
1463 otherwise behaves quite similarly to the bash version.
|
|
1464
|
|
1465 *** `comint-use-prompt-regexp-instead-of-fields' has been renamed
|
|
1466 `comint-use-prompt-regexp'. The old name has been kept as an alias,
|
|
1467 but declared obsolete.
|
|
1468
|
|
1469 ** M-x Compile changes:
|
|
1470
|
|
1471 *** M-x compile has become more robust and reliable
|
|
1472
|
|
1473 Quite a few more kinds of messages are recognized. Messages that are
|
|
1474 recognized as warnings or informational come in orange or green, instead of
|
|
1475 red. Informational messages are by default skipped with `next-error'
|
|
1476 (controlled by `compilation-skip-threshold').
|
|
1477
|
|
1478 Location data is collected on the fly as the *compilation* buffer changes.
|
|
1479 This means you could modify messages to make them point to different files.
|
|
1480 This also means you can not go to locations of messages you may have deleted.
|
|
1481
|
|
1482 The variable `compilation-error-regexp-alist' has now become customizable. If
|
|
1483 you had added your own regexps to this, you'll probably need to include a
|
|
1484 leading `^', otherwise they'll match anywhere on a line. There is now also a
|
|
1485 `compilation-mode-font-lock-keywords' and it nicely handles all the checks
|
|
1486 that configure outputs and -o options so you see at a glance where you are.
|
|
1487
|
|
1488 The new file etc/compilation.txt gives examples of each type of message.
|
|
1489
|
|
1490 *** New user option `compilation-environment'.
|
|
1491 This option allows you to specify environment variables for inferior
|
|
1492 compilation processes without affecting the environment that all
|
|
1493 subprocesses inherit.
|
|
1494
|
|
1495 *** New user option `compilation-disable-input'.
|
|
1496 If this is non-nil, send end-of-file as compilation process input.
|
|
1497
|
|
1498 *** New options `next-error-highlight' and `next-error-highlight-no-select'
|
|
1499 specify the method of highlighting of the corresponding source line
|
|
1500 in new face `next-error'.
|
|
1501
|
|
1502 *** A new minor mode `next-error-follow-minor-mode' can be used in
|
|
1503 compilation-mode, grep-mode, occur-mode, and diff-mode (i.e. all the
|
|
1504 modes that can use `next-error'). In this mode, cursor motion in the
|
|
1505 buffer causes automatic display in another window of the corresponding
|
|
1506 matches, compilation errors, etc. This minor mode can be toggled with
|
|
1507 C-c C-f.
|
|
1508
|
|
1509 *** When the left fringe is displayed, an arrow points to current message in
|
|
1510 the compilation buffer.
|
|
1511
|
|
1512 *** The new variable `compilation-context-lines' controls lines of leading
|
|
1513 context before the current message. If nil and the left fringe is displayed,
|
|
1514 it doesn't scroll the compilation output window. If there is no left fringe,
|
|
1515 no arrow is displayed and a value of nil means display the message at the top
|
|
1516 of the window.
|
|
1517
|
|
1518 ** Occur mode changes:
|
|
1519
|
|
1520 *** The new command `multi-occur' is just like `occur', except it can
|
|
1521 search multiple buffers. There is also a new command
|
|
1522 `multi-occur-in-matching-buffers' which allows you to specify the
|
|
1523 buffers to search by their filenames or buffer names. Internally,
|
|
1524 Occur mode has been rewritten, and now uses font-lock, among other
|
|
1525 changes.
|
|
1526
|
|
1527 *** You can now use next-error (C-x `) and previous-error to advance to
|
|
1528 the next/previous matching line found by M-x occur.
|
|
1529
|
|
1530 *** In the *Occur* buffer, `o' switches to it in another window, and
|
|
1531 C-o displays the current line's occurrence in another window without
|
|
1532 switching to it.
|
|
1533
|
|
1534 ** Grep changes:
|
|
1535
|
|
1536 *** Grep has been decoupled from compilation mode setup.
|
|
1537
|
|
1538 There's a new separate package grep.el, with its own submenu and
|
|
1539 customization group.
|
|
1540
|
|
1541 *** `grep-find' is now also available under the name `find-grep' where
|
|
1542 people knowing `find-grep-dired' would probably expect it.
|
|
1543
|
|
1544 *** New commands `lgrep' (local grep) and `rgrep' (recursive grep) are
|
|
1545 more user-friendly versions of `grep' and `grep-find', which prompt
|
|
1546 separately for the regular expression to match, the files to search,
|
|
1547 and the base directory for the search. Case sensitivity of the
|
|
1548 search is controlled by the current value of `case-fold-search'.
|
|
1549
|
|
1550 These commands build the shell commands based on the new variables
|
|
1551 `grep-template' (lgrep) and `grep-find-template' (rgrep).
|
|
1552
|
|
1553 The files to search can use aliases defined in `grep-files-aliases'.
|
|
1554
|
|
1555 Subdirectories listed in `grep-find-ignored-directories' such as those
|
|
1556 typically used by various version control systems, like CVS and arch,
|
|
1557 are automatically skipped by `rgrep'.
|
|
1558
|
|
1559 *** The grep commands provide highlighting support.
|
|
1560
|
|
1561 Hits are fontified in green, and hits in binary files in orange. Grep buffers
|
|
1562 can be saved and automatically revisited.
|
|
1563
|
|
1564 *** New option `grep-highlight-matches' highlights matches in *grep*
|
|
1565 buffer. It uses a special feature of some grep programs which accept
|
|
1566 --color option to output markers around matches. When going to the next
|
|
1567 match with `next-error' the exact match is highlighted in the source
|
|
1568 buffer. Otherwise, if `grep-highlight-matches' is nil, the whole
|
|
1569 source line is highlighted.
|
|
1570
|
|
1571 *** New key bindings in grep output window:
|
|
1572 SPC and DEL scrolls window up and down. C-n and C-p moves to next and
|
|
1573 previous match in the grep window. RET jumps to the source line of
|
|
1574 the current match. `n' and `p' shows next and previous match in
|
|
1575 other window, but does not switch buffer. `{' and `}' jumps to the
|
|
1576 previous or next file in the grep output. TAB also jumps to the next
|
|
1577 file.
|
|
1578
|
|
1579 *** M-x grep now tries to avoid appending `/dev/null' to the command line
|
|
1580 by using GNU grep `-H' option instead. M-x grep automatically
|
|
1581 detects whether this is possible or not the first time it is invoked.
|
|
1582 When `-H' is used, the grep command line supplied by the user is passed
|
|
1583 unchanged to the system to execute, which allows more complicated
|
|
1584 command lines to be used than was possible before.
|
|
1585
|
|
1586 *** The new variables `grep-window-height' and `grep-scroll-output' override
|
|
1587 the corresponding compilation mode settings, for grep commands only.
|
|
1588
|
|
1589 ** Cursor display changes:
|
|
1590
|
|
1591 *** Emacs can produce an underscore-like (horizontal bar) cursor.
|
|
1592 The underscore cursor is set by putting `(cursor-type . hbar)' in
|
|
1593 default-frame-alist. It supports variable heights, like the `bar'
|
|
1594 cursor does.
|
|
1595
|
|
1596 *** The variable `cursor-in-non-selected-windows' can now be set to any
|
|
1597 of the recognized cursor types.
|
|
1598
|
|
1599 *** Display of hollow cursors now obeys the buffer-local value (if any)
|
|
1600 of `cursor-in-non-selected-windows' in the buffer that the cursor
|
|
1601 appears in.
|
|
1602
|
|
1603 *** On text terminals, the variable `visible-cursor' controls whether Emacs
|
|
1604 uses the "very visible" cursor (the default) or the normal cursor.
|
|
1605
|
|
1606 *** The X resource cursorBlink can be used to turn off cursor blinking.
|
|
1607
|
|
1608 *** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is
|
|
1609 now controlled by the variable `blink-cursor-alist'.
|
|
1610
|
|
1611 ** X Windows Support:
|
|
1612
|
|
1613 *** Emacs now supports drag and drop for X. Dropping a file on a window
|
|
1614 opens it, dropping text inserts the text. Dropping a file on a dired
|
|
1615 buffer copies or moves the file to that directory.
|
|
1616
|
|
1617 *** Under X11, it is possible to swap Alt and Meta (and Super and Hyper).
|
|
1618 The new variables `x-alt-keysym', `x-hyper-keysym', `x-meta-keysym',
|
|
1619 and `x-super-keysym' can be used to choose which keysyms Emacs should
|
|
1620 use for the modifiers. For example, the following two lines swap
|
|
1621 Meta and Alt:
|
|
1622 (setq x-alt-keysym 'meta)
|
|
1623 (setq x-meta-keysym 'alt)
|
|
1624
|
|
1625 *** The X resource useXIM can be used to turn off use of XIM, which can
|
|
1626 speed up Emacs with slow networking to the X server.
|
|
1627
|
|
1628 If the configure option `--without-xim' was used to turn off use of
|
|
1629 XIM by default, the X resource useXIM can be used to turn it on.
|
|
1630
|
|
1631 *** The new variable `x-select-request-type' controls how Emacs
|
|
1632 requests X selection. The default value is nil, which means that
|
|
1633 Emacs requests X selection with types COMPOUND_TEXT and UTF8_STRING,
|
|
1634 and use the more appropriately result.
|
|
1635
|
|
1636 *** The scrollbar under LessTif or Motif has a smoother drag-scrolling.
|
|
1637 On the other hand, the size of the thumb does not represent the actual
|
|
1638 amount of text shown any more (only a crude approximation of it).
|
|
1639
|
|
1640 ** Xterm support:
|
|
1641
|
|
1642 *** If you enable Xterm Mouse mode, Emacs will respond to mouse clicks
|
|
1643 on the mode line, header line and display margin, when run in an xterm.
|
|
1644
|
|
1645 *** Improved key bindings support when running in an xterm.
|
|
1646 When Emacs is running in an xterm more key bindings are available.
|
|
1647 The following should work:
|
|
1648 {C,S,C-S,A}-{right,left,up,down,prior,next,delete,insert,F1-12}.
|
|
1649 These key bindings work on xterm from X.org 6.8 (and later versions),
|
|
1650 they might not work on some older versions of xterm, or on some
|
|
1651 proprietary versions.
|
|
1652 The various keys generated by xterm when the "modifyOtherKeys"
|
|
1653 resource is set are also supported.
|
|
1654
|
|
1655 ** Character terminal color support changes:
|
|
1656
|
|
1657 *** The new command-line option --color=MODE lets you specify a standard
|
|
1658 mode for a tty color support. It is meant to be used on character
|
|
1659 terminals whose capabilities are not set correctly in the terminal
|
|
1660 database, or with terminal emulators which support colors, but don't
|
|
1661 set the TERM environment variable to a name of a color-capable
|
|
1662 terminal. "emacs --color" uses the same color commands as GNU `ls'
|
|
1663 when invoked with "ls --color", so if your terminal can support colors
|
|
1664 in "ls --color", it will support "emacs --color" as well. See the
|
|
1665 user manual for the possible values of the MODE parameter.
|
|
1666
|
|
1667 *** Emacs now supports several character terminals which provide more
|
|
1668 than 8 colors. For example, for `xterm', 16-color, 88-color, and
|
|
1669 256-color modes are supported. Emacs automatically notes at startup
|
|
1670 the extended number of colors, and defines the appropriate entries for
|
|
1671 all of these colors.
|
|
1672
|
|
1673 *** Emacs now uses the full range of available colors for the default
|
|
1674 faces when running on a color terminal, including 16-, 88-, and
|
|
1675 256-color xterms. This means that when you run "emacs -nw" on an
|
|
1676 88-color or 256-color xterm, you will see essentially the same face
|
|
1677 colors as on X.
|
|
1678
|
|
1679 *** There's a new support for colors on `rxvt' terminal emulator.
|
|
1680
|
|
1681 ** ebnf2ps changes:
|
|
1682
|
|
1683 *** New option `ebnf-arrow-extra-width' which specify extra width for arrow
|
|
1684 shape drawing.
|
|
1685 The extra width is used to avoid that the arrowhead and the terminal border
|
|
1686 overlap. It depends on `ebnf-arrow-shape' and `ebnf-line-width'.
|
|
1687
|
|
1688 *** New option `ebnf-arrow-scale' which specify the arrow scale.
|
|
1689 Values lower than 1.0, shrink the arrow.
|
|
1690 Values greater than 1.0, expand the arrow.
|
|
1691
|
|
1692 * New Modes and Packages in Emacs 22.1
|
|
1693
|
|
1694 ** CUA mode is now part of the Emacs distribution.
|
|
1695
|
|
1696 The new cua package provides CUA-like keybindings using C-x for
|
|
1697 cut (kill), C-c for copy, C-v for paste (yank), and C-z for undo.
|
|
1698 With cua, the region can be set and extended using shifted movement
|
|
1699 keys (like pc-selection-mode) and typed text replaces the active
|
|
1700 region (like delete-selection-mode). Do not enable these modes with
|
|
1701 cua-mode. Customize the variable `cua-mode' to enable cua.
|
|
1702
|
|
1703 The cua-selection-mode enables the CUA keybindings for the region but
|
|
1704 does not change the bindings for C-z/C-x/C-c/C-v. It can be used as a
|
|
1705 replacement for pc-selection-mode.
|
|
1706
|
|
1707 In addition, cua provides unified rectangle support with visible
|
|
1708 rectangle highlighting: Use C-return to start a rectangle, extend it
|
|
1709 using the movement commands (or mouse-3), and cut or copy it using C-x
|
|
1710 or C-c (using C-w and M-w also works).
|
|
1711
|
|
1712 Use M-o and M-c to `open' or `close' the rectangle, use M-b or M-f, to
|
|
1713 fill it with blanks or another character, use M-u or M-l to upcase or
|
|
1714 downcase the rectangle, use M-i to increment the numbers in the
|
|
1715 rectangle, use M-n to fill the rectangle with a numeric sequence (such
|
|
1716 as 10 20 30...), use M-r to replace a regexp in the rectangle, and use
|
|
1717 M-' or M-/ to restrict command on the rectangle to a subset of the
|
|
1718 rows. See the commentary in cua-base.el for more rectangle commands.
|
|
1719
|
|
1720 Cua also provides unified support for registers: Use a numeric
|
|
1721 prefix argument between 0 and 9, i.e. M-0 .. M-9, for C-x, C-c, and
|
|
1722 C-v to cut or copy into register 0-9, or paste from register 0-9.
|
|
1723
|
|
1724 The last text deleted (not killed) is automatically stored in
|
|
1725 register 0. This includes text deleted by typing text.
|
|
1726
|
|
1727 Finally, cua provides a global mark which is set using S-C-space.
|
|
1728 When the global mark is active, any text which is cut or copied is
|
|
1729 automatically inserted at the global mark position. See the
|
|
1730 commentary in cua-base.el for more global mark related commands.
|
|
1731
|
|
1732 The features of cua also works with the standard Emacs bindings for
|
|
1733 kill, copy, yank, and undo. If you want to use cua mode, but don't
|
|
1734 want the C-x, C-c, C-v, and C-z bindings, you can customize the
|
|
1735 `cua-enable-cua-keys' variable.
|
|
1736
|
|
1737 Note: This version of cua mode is not backwards compatible with older
|
|
1738 versions of cua.el and cua-mode.el. To ensure proper operation, you
|
|
1739 must remove older versions of cua.el or cua-mode.el as well as the
|
|
1740 loading and customization of those packages from the .emacs file.
|
|
1741
|
|
1742 ** Tramp is now part of the distribution.
|
|
1743
|
|
1744 This package is similar to Ange-FTP: it allows you to edit remote
|
|
1745 files. But whereas Ange-FTP uses FTP to access the remote host,
|
|
1746 Tramp uses a shell connection. The shell connection is always used
|
|
1747 for filename completion and directory listings and suchlike, but for
|
|
1748 the actual file transfer, you can choose between the so-called
|
|
1749 `inline' methods (which transfer the files through the shell
|
|
1750 connection using base64 or uu encoding) and the `out-of-band' methods
|
|
1751 (which invoke an external copying program such as `rcp' or `scp' or
|
|
1752 `rsync' to do the copying).
|
|
1753
|
|
1754 Shell connections can be acquired via `rsh', `ssh', `telnet' and also
|
|
1755 `su' and `sudo'. Ange-FTP is still supported via the `ftp' method.
|
|
1756
|
|
1757 If you want to disable Tramp you should set
|
|
1758
|
|
1759 (setq tramp-default-method "ftp")
|
|
1760
|
|
1761 Removing Tramp, and re-enabling Ange-FTP, can be achieved by M-x
|
|
1762 tramp-unload-tramp.
|
|
1763
|
|
1764 ** The image-dired.el package allows you to easily view, tag and in
|
|
1765 other ways manipulate image files and their thumbnails, using dired as
|
|
1766 the main interface. Image-Dired provides functionality to generate
|
|
1767 simple image galleries.
|
|
1768
|
|
1769 ** Image files are normally visited in Image mode, which lets you toggle
|
|
1770 between viewing the image and viewing the text using C-c C-c.
|
|
1771
|
|
1772 ** The new python.el package is used to edit Python and Jython programs.
|
|
1773
|
|
1774 ** The URL package (which had been part of W3) is now part of Emacs.
|
|
1775
|
|
1776 ** Calc is now part of the Emacs distribution.
|
|
1777
|
|
1778 Calc is an advanced desk calculator and mathematical tool written in
|
|
1779 Emacs Lisp. The prefix for Calc has been changed to `C-x *' and Calc
|
|
1780 can be started with `C-x * *'. The Calc manual is separate from the
|
|
1781 Emacs manual; within Emacs, type "C-h i m calc RET" to read the
|
|
1782 manual. A reference card is available in `etc/calccard.tex' and
|
|
1783 `etc/calccard.ps'.
|
|
1784
|
|
1785 ** Org mode is now part of the Emacs distribution
|
|
1786
|
|
1787 Org mode is a mode for keeping notes, maintaining ToDo lists, and
|
|
1788 doing project planning with a fast and effective plain-text system.
|
|
1789 It also contains a plain-text table editor with spreadsheet-like
|
|
1790 capabilities.
|
|
1791
|
|
1792 The Org mode table editor can be integrated into any major mode by
|
85114
|
1793 activating the minor mode, Orgtbl mode.
|
81024
|
1794
|
|
1795 The documentation for org-mode is in a separate manual; within Emacs,
|
|
1796 type "C-h i m org RET" to read that manual. A reference card is
|
|
1797 available in `etc/orgcard.tex' and `etc/orgcard.ps'.
|
|
1798
|
|
1799 ** ERC is now part of the Emacs distribution.
|
|
1800
|
|
1801 ERC is a powerful, modular, and extensible IRC client for Emacs.
|
|
1802
|
|
1803 To see what modules are available, type
|
|
1804 M-x customize-option erc-modules RET.
|
|
1805
|
|
1806 To start an IRC session with ERC, type M-x erc, and follow the prompts
|
|
1807 for server, port, and nick.
|
|
1808
|
|
1809 ** Rcirc is now part of the Emacs distribution.
|
|
1810
|
|
1811 Rcirc is an Internet relay chat (IRC) client. It supports
|
|
1812 simultaneous connections to multiple IRC servers. Each discussion
|
|
1813 takes place in its own buffer. For each connection you can join
|
|
1814 several channels (many-to-many) and participate in private
|
|
1815 (one-to-one) chats. Both channel and private chats are contained in
|
|
1816 separate buffers.
|
|
1817
|
|
1818 To start an IRC session using the default parameters, type M-x irc.
|
|
1819 If you type C-u M-x irc, it prompts you for the server, nick, port and
|
|
1820 startup channel parameters before connecting.
|
|
1821
|
|
1822 ** The new package ibuffer provides a powerful, completely
|
|
1823 customizable replacement for buff-menu.el.
|
|
1824
|
|
1825 ** Newsticker is now part of the Emacs distribution.
|
|
1826
|
|
1827 Newsticker asynchronously retrieves headlines (RSS) from a list of news
|
|
1828 sites, prepares these headlines for reading, and allows for loading the
|
|
1829 corresponding articles in a web browser. Its documentation is in a
|
|
1830 separate manual.
|
|
1831
|
|
1832 ** The wdired.el package allows you to use normal editing commands on Dired
|
|
1833 buffers to change filenames, permissions, etc...
|
|
1834
|
|
1835 ** Ido mode is now part of the Emacs distribution.
|
|
1836
|
|
1837 The ido (interactively do) package is an extension of the iswitchb
|
|
1838 package to do interactive opening of files and directories in addition
|
|
1839 to interactive buffer switching. Ido is a superset of iswitchb (with
|
|
1840 a few exceptions), so don't enable both packages.
|
|
1841
|
|
1842 ** The new global minor mode `file-name-shadow-mode' modifies the way
|
|
1843 filenames being entered by the user in the minibuffer are displayed, so
|
|
1844 that it's clear when part of the entered filename will be ignored due to
|
|
1845 Emacs' filename parsing rules. The ignored portion can be made dim,
|
|
1846 invisible, or otherwise less visually noticeable. The display method can
|
|
1847 be displayed by customizing the variable `file-name-shadow-properties'.
|
|
1848
|
|
1849 ** Emacs' keyboard macro facilities have been enhanced by the new
|
|
1850 kmacro package.
|
|
1851
|
|
1852 Keyboard macros are now defined and executed via the F3 and F4 keys:
|
|
1853 F3 starts a macro, F4 ends the macro, and pressing F4 again executes
|
|
1854 the last macro. While defining the macro, F3 inserts a counter value
|
|
1855 which automatically increments every time the macro is executed.
|
|
1856
|
|
1857 There is now a keyboard macro ring which stores the most recently
|
|
1858 defined macros.
|
|
1859
|
|
1860 The C-x C-k sequence is now a prefix for the kmacro keymap which
|
|
1861 defines bindings for moving through the keyboard macro ring,
|
|
1862 C-x C-k C-p and C-x C-k C-n, editing the last macro C-x C-k C-e,
|
|
1863 manipulating the macro counter and format via C-x C-k C-c,
|
|
1864 C-x C-k C-a, and C-x C-k C-f. See the commentary in kmacro.el
|
|
1865 for more commands.
|
|
1866
|
|
1867 The original macro bindings C-x (, C-x ), and C-x e are still
|
|
1868 available, but they now interface to the keyboard macro ring too.
|
|
1869
|
|
1870 The C-x e command now automatically terminates the current macro
|
|
1871 before calling it, if used while defining a macro.
|
|
1872
|
|
1873 In addition, when ending or calling a macro with C-x e, the macro can
|
|
1874 be repeated immediately by typing just the `e'. You can customize
|
|
1875 this behavior via the variables kmacro-call-repeat-key and
|
|
1876 kmacro-call-repeat-with-arg.
|
|
1877
|
|
1878 Keyboard macros can now be debugged and edited interactively.
|
|
1879 C-x C-k SPC steps through the last keyboard macro one key sequence
|
|
1880 at a time, prompting for the actions to take.
|
|
1881
|
|
1882 ** The new keypad setup package provides several common bindings for
|
|
1883 the numeric keypad which is available on most keyboards. The numeric
|
|
1884 keypad typically has the digits 0 to 9, a decimal point, keys marked
|
|
1885 +, -, /, and *, an Enter key, and a NumLock toggle key. The keypad
|
|
1886 package only controls the use of the digit and decimal keys.
|
|
1887
|
|
1888 By customizing the variables `keypad-setup', `keypad-shifted-setup',
|
|
1889 `keypad-numlock-setup', and `keypad-numlock-shifted-setup', or by
|
|
1890 using the function `keypad-setup', you can rebind all digit keys and
|
|
1891 the decimal key of the keypad in one step for each of the four
|
|
1892 possible combinations of the Shift key state (not pressed/pressed) and
|
|
1893 the NumLock toggle state (off/on).
|
|
1894
|
|
1895 The choices for the keypad keys in each of the above states are:
|
|
1896 `Plain numeric keypad' where the keys generates plain digits,
|
|
1897 `Numeric keypad with decimal key' where the character produced by the
|
|
1898 decimal key can be customized individually (for internationalization),
|
|
1899 `Numeric Prefix Arg' where the keypad keys produce numeric prefix args
|
|
1900 for Emacs editing commands, `Cursor keys' and `Shifted Cursor keys'
|
|
1901 where the keys work like (shifted) arrow keys, home/end, etc., and
|
|
1902 `Unspecified/User-defined' where the keypad keys (kp-0, kp-1, etc.)
|
|
1903 are left unspecified and can be bound individually through the global
|
|
1904 or local keymaps.
|
|
1905
|
|
1906 ** The printing package is now part of the Emacs distribution.
|
|
1907
|
|
1908 If you enable the printing package by including (require 'printing) in
|
|
1909 the .emacs file, the normal Print item on the File menu is replaced
|
|
1910 with a Print sub-menu which allows you to preview output through
|
|
1911 ghostview, use ghostscript to print (if you don't have a PostScript
|
|
1912 printer) or send directly to printer a PostScript code generated by
|
|
1913 `ps-print' package. Use M-x pr-help for more information.
|
|
1914
|
|
1915 ** The new package longlines.el provides a minor mode for editing text
|
|
1916 files composed of long lines, based on the `use-hard-newlines'
|
|
1917 mechanism. The long lines are broken up by inserting soft newlines,
|
|
1918 which are automatically removed when saving the file to disk or
|
|
1919 copying into the kill ring, clipboard, etc. By default, Longlines
|
|
1920 mode inserts soft newlines automatically during editing, a behavior
|
|
1921 referred to as "soft word wrap" in other text editors. This is
|
|
1922 similar to Refill mode, but more reliable. To turn the word wrap
|
|
1923 feature off, set `longlines-auto-wrap' to nil.
|
|
1924
|
|
1925 ** SES mode (ses-mode) is a new major mode for creating and editing
|
|
1926 spreadsheet files. Besides the usual Emacs features (intuitive command
|
|
1927 letters, undo, cell formulas in Lisp, plaintext files, etc.) it also offers
|
|
1928 viral immunity and import/export of tab-separated values.
|
|
1929
|
|
1930 ** The new package table.el implements editable, WYSIWYG, embedded
|
|
1931 `text tables' in Emacs buffers. It simulates the effect of putting
|
|
1932 these tables in a special major mode. The package emulates WYSIWYG
|
|
1933 table editing available in modern word processors. The package also
|
|
1934 can generate a table source in typesetting and markup languages such
|
|
1935 as latex and html from the visually laid out text table.
|
|
1936
|
|
1937 ** Filesets are collections of files. You can define a fileset in
|
|
1938 various ways, such as based on a directory tree or based on
|
|
1939 program files that include other program files.
|
|
1940
|
|
1941 Once you have defined a fileset, you can perform various operations on
|
|
1942 all the files in it, such as visiting them or searching and replacing
|
|
1943 in them.
|
|
1944
|
|
1945 ** The minor mode Reveal mode makes text visible on the fly as you
|
|
1946 move your cursor into hidden regions of the buffer.
|
|
1947 It should work with any package that uses overlays to hide parts
|
|
1948 of a buffer, such as outline-minor-mode, hs-minor-mode, hide-ifdef-mode, ...
|
|
1949
|
|
1950 There is also Global Reveal mode which affects all buffers.
|
|
1951
|
|
1952 ** New minor mode, Visible mode, toggles invisibility in the current buffer.
|
|
1953 When enabled, it makes all invisible text visible. When disabled, it
|
|
1954 restores the previous value of `buffer-invisibility-spec'.
|
|
1955
|
|
1956 ** The new package flymake.el does on-the-fly syntax checking of program
|
|
1957 source files. See the Flymake's Info manual for more details.
|
|
1958
|
|
1959 ** savehist saves minibuffer histories between sessions.
|
|
1960 To use this feature, turn on savehist-mode in your `.emacs' file.
|
|
1961
|
|
1962 ** The ruler-mode.el library provides a minor mode for displaying an
|
|
1963 "active" ruler in the header line. You can use the mouse to visually
|
|
1964 change the `fill-column', `window-margins' and `tab-stop-list'
|
|
1965 settings.
|
|
1966
|
|
1967 ** The file t-mouse.el is now part of Emacs and provides access to mouse
|
|
1968 events from the console. It still requires gpm to work but has been updated
|
|
1969 for Emacs 22. In particular, the mode-line is now position sensitive.
|
|
1970
|
|
1971 ** The new package scroll-lock.el provides the Scroll Lock minor mode
|
|
1972 for pager-like scrolling. Keys which normally move point by line or
|
|
1973 paragraph will scroll the buffer by the respective amount of lines
|
|
1974 instead and point will be kept vertically fixed relative to window
|
|
1975 boundaries during scrolling.
|
|
1976
|
|
1977 ** The new global minor mode `size-indication-mode' (off by default)
|
|
1978 shows the size of accessible part of the buffer on the mode line.
|
|
1979
|
|
1980 ** The new package conf-mode.el handles thousands of configuration files, with
|
|
1981 varying syntaxes for comments (;, #, //, /* */ or !), assignment (var = value,
|
|
1982 var : value, var value or keyword var value) and sections ([section] or
|
|
1983 section { }). Many files under /etc/, or with suffixes like .cf through
|
|
1984 .config, .properties (Java), .desktop (KDE/Gnome), .ini and many others are
|
|
1985 recognized.
|
|
1986
|
|
1987 ** GDB-Script-mode is used for files like .gdbinit.
|
|
1988
|
|
1989 ** The new package dns-mode.el adds syntax highlighting of DNS master files.
|
|
1990 It is a modern replacement for zone-mode.el, which is now obsolete.
|
|
1991
|
|
1992 ** `cfengine-mode' is a major mode for editing GNU Cfengine
|
|
1993 configuration files.
|
|
1994
|
|
1995 ** The TCL package tcl-mode.el was replaced by tcl.el.
|
|
1996 This was actually done in Emacs-21.1, and was not documented.
|
|
1997
|
|
1998 * Changes in Specialized Modes and Packages in Emacs 22.1:
|
|
1999
|
|
2000 ** Changes in Dired
|
|
2001
|
|
2002 *** Bindings for Image-Dired added.
|
|
2003 Several new keybindings, all starting with the C-t prefix, have been
|
|
2004 added to Dired. They are all bound to commands in Image-Dired. As a
|
|
2005 starting point, mark some image files in a dired buffer and do C-t d
|
|
2006 to display thumbnails of them in a separate buffer.
|
|
2007
|
|
2008 ** Info mode changes
|
|
2009
|
|
2010 *** Images in Info pages are supported.
|
|
2011
|
|
2012 Info pages show embedded images, in Emacs frames with image support.
|
|
2013 Info documentation that includes images, processed with makeinfo
|
|
2014 version 4.7 or newer, compiles to Info pages with embedded images.
|
|
2015
|
|
2016 *** `Info-index' offers completion.
|
|
2017
|
|
2018 *** http and ftp links in Info are now operational: they look like cross
|
|
2019 references and following them calls `browse-url'.
|
|
2020
|
|
2021 *** isearch in Info uses Info-search and searches through multiple nodes.
|
|
2022
|
|
2023 Before leaving the initial Info node isearch fails once with the error
|
|
2024 message [initial node], and with subsequent C-s/C-r continues through
|
|
2025 other nodes. When isearch fails for the rest of the manual, it wraps
|
|
2026 around the whole manual to the top/final node. The user option
|
|
2027 `Info-isearch-search' controls whether to use Info-search for isearch,
|
|
2028 or the default isearch search function that wraps around the current
|
|
2029 Info node.
|
|
2030
|
|
2031 *** New search commands: `Info-search-case-sensitively' (bound to S),
|
|
2032 `Info-search-backward', and `Info-search-next' which repeats the last
|
|
2033 search without prompting for a new search string.
|
|
2034
|
|
2035 *** New command `info-apropos' searches the indices of the known
|
|
2036 Info files on your system for a string, and builds a menu of the
|
|
2037 possible matches.
|
|
2038
|
|
2039 *** New command `Info-history-forward' (bound to r and new toolbar icon)
|
|
2040 moves forward in history to the node you returned from after using
|
|
2041 `Info-history-back' (renamed from `Info-last').
|
|
2042
|
|
2043 *** New command `Info-history' (bound to L) displays a menu of visited nodes.
|
|
2044
|
|
2045 *** New command `Info-toc' (bound to T) creates a node with table of contents
|
|
2046 from the tree structure of menus of the current Info file.
|
|
2047
|
|
2048 *** New command `Info-copy-current-node-name' (bound to w) copies
|
|
2049 the current Info node name into the kill ring. With a zero prefix
|
|
2050 arg, puts the node name inside the `info' function call.
|
|
2051
|
|
2052 *** New face `info-xref-visited' distinguishes visited nodes from unvisited
|
|
2053 and a new option `Info-fontify-visited-nodes' to control this.
|
|
2054
|
|
2055 *** A numeric prefix argument of `info' selects an Info buffer
|
|
2056 with the number appended to the `*info*' buffer name (e.g. "*info*<2>").
|
|
2057
|
|
2058 *** Info now hides node names in menus and cross references by default.
|
|
2059
|
|
2060 If you prefer the old behavior, you can set the new user option
|
|
2061 `Info-hide-note-references' to nil.
|
|
2062
|
|
2063 *** The default value for `Info-scroll-prefer-subnodes' is now nil.
|
|
2064
|
|
2065 ** Emacs server changes
|
|
2066
|
|
2067 *** You can have several Emacs servers on the same machine.
|
|
2068
|
|
2069 % emacs --eval '(setq server-name "foo")' -f server-start &
|
|
2070 % emacs --eval '(setq server-name "bar")' -f server-start &
|
|
2071 % emacsclient -s foo file1
|
|
2072 % emacsclient -s bar file2
|
|
2073
|
|
2074 *** The `emacsclient' command understands the options `--eval' and
|
|
2075 `--display' which tell Emacs respectively to evaluate the given Lisp
|
|
2076 expression and to use the given display when visiting files.
|
|
2077
|
|
2078 *** User option `server-mode' can be used to start a server process.
|
|
2079
|
|
2080 ** Locate changes
|
|
2081
|
|
2082 *** By default, reverting the *Locate* buffer now just runs the last
|
|
2083 `locate' command back over again without offering to update the locate
|
|
2084 database (which normally only works if you have root privileges). If
|
|
2085 you prefer the old behavior, set the new customizable option
|
|
2086 `locate-update-when-revert' to t.
|
|
2087
|
|
2088 ** Desktop package
|
|
2089
|
|
2090 *** Desktop saving is now a minor mode, `desktop-save-mode'.
|
|
2091
|
|
2092 *** The variable `desktop-enable' is obsolete.
|
|
2093
|
|
2094 Customize `desktop-save-mode' to enable desktop saving.
|
|
2095
|
|
2096 *** Buffers are saved in the desktop file in the same order as that in the
|
|
2097 buffer list.
|
|
2098
|
|
2099 *** The desktop package can be customized to restore only some buffers
|
|
2100 immediately, remaining buffers are restored lazily (when Emacs is
|
|
2101 idle).
|
|
2102
|
|
2103 *** New command line option --no-desktop
|
|
2104
|
|
2105 *** New commands:
|
|
2106 - desktop-revert reverts to the last loaded desktop.
|
|
2107 - desktop-change-dir kills current desktop and loads a new.
|
|
2108 - desktop-save-in-desktop-dir saves desktop in the directory from which
|
|
2109 it was loaded.
|
|
2110 - desktop-lazy-complete runs the desktop load to completion.
|
|
2111 - desktop-lazy-abort aborts lazy loading of the desktop.
|
|
2112
|
|
2113 *** New customizable variables:
|
|
2114 - desktop-save. Determines whether the desktop should be saved when it is
|
|
2115 killed.
|
|
2116 - desktop-file-name-format. Format in which desktop file names should be saved.
|
|
2117 - desktop-path. List of directories in which to lookup the desktop file.
|
|
2118 - desktop-locals-to-save. List of local variables to save.
|
|
2119 - desktop-globals-to-clear. List of global variables that `desktop-clear' will clear.
|
|
2120 - desktop-clear-preserve-buffers-regexp. Regexp identifying buffers that `desktop-clear'
|
|
2121 should not delete.
|
|
2122 - desktop-restore-eager. Number of buffers to restore immediately. Remaining buffers are
|
|
2123 restored lazily (when Emacs is idle).
|
|
2124 - desktop-lazy-verbose. Verbose reporting of lazily created buffers.
|
|
2125 - desktop-lazy-idle-delay. Idle delay before starting to create buffers.
|
|
2126
|
|
2127 *** New hooks:
|
|
2128 - desktop-after-read-hook run after a desktop is loaded.
|
|
2129 - desktop-no-desktop-file-hook run when no desktop file is found.
|
|
2130
|
|
2131 ** Recentf changes
|
|
2132
|
|
2133 The recent file list is now automatically cleaned up when recentf mode is
|
|
2134 enabled. The new option `recentf-auto-cleanup' controls when to do
|
|
2135 automatic cleanup.
|
|
2136
|
|
2137 The ten most recent files can be quickly opened by using the shortcut
|
|
2138 keys 1 to 9, and 0, when the recent list is displayed in a buffer via
|
|
2139 the `recentf-open-files', or `recentf-open-more-files' commands.
|
|
2140
|
|
2141 The `recentf-keep' option replaces `recentf-keep-non-readable-files-p'
|
|
2142 and provides a more general mechanism to customize which file names to
|
|
2143 keep in the recent list.
|
|
2144
|
|
2145 With the more advanced option `recentf-filename-handlers', you can
|
|
2146 specify functions that successively transform recent file names. For
|
|
2147 example, if set to `file-truename' plus `abbreviate-file-name', the
|
|
2148 same file will not be in the recent list with different symbolic
|
|
2149 links, and the file name will be abbreviated.
|
|
2150
|
|
2151 To follow naming convention, `recentf-menu-append-commands-flag'
|
|
2152 replaces the misnamed option `recentf-menu-append-commands-p'. The
|
|
2153 old name remains available as alias, but has been marked obsolete.
|
|
2154
|
|
2155 ** Auto-Revert changes
|
|
2156
|
|
2157 *** You can now use Auto Revert mode to `tail' a file.
|
|
2158
|
|
2159 If point is at the end of a file buffer before reverting, Auto Revert
|
|
2160 mode keeps it at the end after reverting. Similarly if point is
|
81097
|
2161 displayed at the end of a file buffer in any window, it stays at the end
|
|
2162 of the buffer in that window. This allows you to "tail" a file: just
|
|
2163 put point at the end of the buffer and it stays there. This rule
|
|
2164 applies to file buffers. For non-file buffers, the behavior can be mode
|
|
2165 dependent.
|
81024
|
2166
|
|
2167 If you are sure that the file will only change by growing at the end,
|
|
2168 then you can tail the file more efficiently by using the new minor
|
|
2169 mode Auto Revert Tail mode. The function `auto-revert-tail-mode'
|
|
2170 toggles this mode.
|
|
2171
|
|
2172 *** Auto Revert mode is now more careful to avoid excessive reverts and
|
|
2173 other potential problems when deciding which non-file buffers to
|
|
2174 revert. This matters especially if Global Auto Revert mode is enabled
|
|
2175 and `global-auto-revert-non-file-buffers' is non-nil. Auto Revert
|
|
2176 mode only reverts a non-file buffer if the buffer has a non-nil
|
|
2177 `revert-buffer-function' and a non-nil `buffer-stale-function', which
|
|
2178 decides whether the buffer should be reverted. Currently, this means
|
|
2179 that auto reverting works for Dired buffers (although this may not
|
|
2180 work properly on all operating systems) and for the Buffer Menu.
|
|
2181
|
|
2182 *** If the new user option `auto-revert-check-vc-info' is non-nil, Auto
|
|
2183 Revert mode reliably updates version control info (such as the version
|
|
2184 control number in the mode line), in all version controlled buffers in
|
|
2185 which it is active. If the option is nil, the default, then this info
|
|
2186 only gets updated whenever the buffer gets reverted.
|
|
2187
|
|
2188 ** Changes in Shell Mode
|
|
2189
|
|
2190 *** Shell output normally scrolls so that the input line is at the
|
|
2191 bottom of the window -- thus showing the maximum possible text. (This
|
|
2192 is similar to the way sequential output to a terminal works.)
|
|
2193
|
|
2194 ** Changes in Hi Lock
|
|
2195
|
|
2196 *** hi-lock-mode now only affects a single buffer, and a new function
|
|
2197 `global-hi-lock-mode' enables Hi Lock in all buffers. By default, if
|
|
2198 hi-lock-mode is used in what appears to be the initialization file, a
|
|
2199 warning message suggests to use global-hi-lock-mode instead. However,
|
|
2200 if the new variable `hi-lock-archaic-interface-deduce' is non-nil,
|
|
2201 using hi-lock-mode in an initialization file will turn on Hi Lock in all
|
|
2202 buffers and no warning will be issued (for compatibility with the
|
|
2203 behavior in older versions of Emacs).
|
|
2204
|
|
2205 ** Changes in Allout
|
|
2206
|
|
2207 *** Topic cryptography added, enabling easy gpg topic encryption and
|
|
2208 decryption. Per-topic basis enables interspersing encrypted-text and
|
|
2209 clear-text within a single file to your heart's content, using symmetric
|
|
2210 and/or public key modes. Time-limited key caching, user-provided
|
|
2211 symmetric key hinting and consistency verification, auto-encryption of
|
|
2212 pending topics on save, and more, make it easy to use encryption in
|
|
2213 powerful ways. Encryption behavior customization is collected in the
|
|
2214 allout-encryption customization group.
|
|
2215
|
|
2216 *** Default command prefix was changed to "\C-c " (control-c space), to
|
|
2217 avoid intruding on user's keybinding space. Customize the
|
|
2218 `allout-command-prefix' variable to your preference.
|
|
2219
|
|
2220 *** Some previously rough topic-header format edge cases are reconciled.
|
|
2221 Level 1 topics use the mode's comment format, and lines starting with the
|
|
2222 asterisk - for instance, the comment close of some languages (eg, c's "*/"
|
|
2223 or mathematica's "*)") - at the beginning of line are no longer are
|
|
2224 interpreted as level 1 topics in those modes.
|
|
2225
|
|
2226 *** Many or most commonly occurring "accidental" topics are disqualified.
|
|
2227 Text in item bodies that looks like a low-depth topic is no longer mistaken
|
|
2228 for one unless its first offspring (or that of its next sibling with
|
|
2229 offspring) is only one level deeper.
|
|
2230
|
|
2231 For example, pasting some text with a bunch of leading asterisks into a
|
|
2232 topic that's followed by a level 3 or deeper topic will not cause the
|
|
2233 pasted text to be mistaken for outline structure.
|
|
2234
|
|
2235 The same constraint is applied to any level 2 or 3 topics.
|
|
2236
|
|
2237 This settles an old issue where typed or pasted text needed to be carefully
|
|
2238 reviewed, and sometimes doctored, to avoid accidentally disrupting the
|
|
2239 outline structure. Now that should be generally unnecessary, as the most
|
|
2240 prone-to-occur accidents are disqualified.
|
|
2241
|
|
2242 *** Allout now refuses to create "containment discontinuities", where a
|
|
2243 topic is shifted deeper than the offspring-depth of its container. On the
|
|
2244 other hand, allout now operates gracefully with existing containment
|
|
2245 discontinuities, revealing excessively contained topics rather than either
|
|
2246 leaving them hidden or raising an error.
|
|
2247
|
|
2248 *** Navigation within an item is easier. Repeated beginning-of-line and
|
|
2249 end-of-line key commands (usually, ^A and ^E) cycle through the
|
|
2250 beginning/end-of-line and then beginning/end of topic, etc. See new
|
|
2251 customization vars `allout-beginning-of-line-cycles' and
|
|
2252 `allout-end-of-line-cycles'.
|
|
2253
|
|
2254 *** New or revised allout-mode activity hooks enable creation of
|
|
2255 cooperative enhancements to allout mode without changes to the mode,
|
|
2256 itself.
|
|
2257
|
|
2258 See `allout-exposure-change-hook', `allout-structure-added-hook',
|
|
2259 `allout-structure-deleted-hook', and `allout-structure-shifted-hook'.
|
|
2260
|
|
2261 `allout-exposure-change-hook' replaces the existing
|
|
2262 `allout-view-change-hook', which is being deprecated. Both are still
|
|
2263 invoked, but `allout-view-change-hook' will eventually be ignored.
|
|
2264 `allout-exposure-change-hook' is called with explicit arguments detailing
|
|
2265 the specifics of each change (as are the other new hooks), making it easier
|
|
2266 to use than the old version.
|
|
2267
|
|
2268 There is a new mode deactivation hook, `allout-mode-deactivate-hook', for
|
|
2269 coordinating with deactivation of allout-mode. Both that and the mode
|
|
2270 activation hook, `allout-mode-hook' are now run after the `allout-mode'
|
|
2271 variable is changed, rather than before.
|
|
2272
|
|
2273 *** Allout now uses text overlay's `invisible' property for concealed text,
|
|
2274 instead of selective-display. This simplifies the code, in particular
|
|
2275 avoiding the need for kludges for isearch dynamic-display, discretionary
|
|
2276 handling of edits of concealed text, undo concerns, etc.
|
|
2277
|
|
2278 *** There are many other fixes and refinements, including:
|
|
2279
|
|
2280 - repaired inhibition of inadvertent edits to concealed text, without
|
|
2281 inhibiting undo; we now reveal undo changes within concealed text.
|
|
2282 - auto-fill-mode is now left inactive when allout-mode starts, if it
|
|
2283 already was inactive. also, `allout-inhibit-auto-fill' custom
|
|
2284 configuration variable makes it easy to disable auto fill in allout
|
|
2285 outlines in general or on a per-buffer basis.
|
|
2286 - allout now tolerates fielded text in outlines without disruption.
|
|
2287 - hot-spot navigation now is modularized with a new function,
|
|
2288 `allout-hotspot-key-handler', enabling easier use and enhancement of
|
|
2289 the functionality in allout addons.
|
|
2290 - repaired retention of topic body hanging indent upon topic depth shifts
|
|
2291 - bulleting variation is simpler and more accommodating, both in the
|
|
2292 default behavior and in ability to vary when creating new topics
|
|
2293 - mode deactivation now does cleans up effectively, more properly
|
|
2294 restoring affected variables and hooks to former state, removing
|
|
2295 overlays, etc. see `allout-add-resumptions' and
|
|
2296 `allout-do-resumptions', which replace the old `allout-resumptions'.
|
|
2297 - included a few unit-tests for interior functionality. developers can
|
|
2298 have them automatically run at the end of module load by customizing
|
|
2299 the option `allout-run-unit-tests-on-load'.
|
|
2300 - many, many other, more minor tweaks, fixes, and refinements.
|
|
2301 - version number incremented to 2.2
|
|
2302
|
|
2303 ** Hideshow mode changes
|
|
2304
|
|
2305 *** New variable `hs-set-up-overlay' allows customization of the overlay
|
|
2306 used to effect hiding for hideshow minor mode. Integration with isearch
|
|
2307 handles the overlay property `display' specially, preserving it during
|
|
2308 temporary overlay showing in the course of an isearch operation.
|
|
2309
|
|
2310 *** New variable `hs-allow-nesting' non-nil means that hiding a block does
|
|
2311 not discard the hidden state of any "internal" blocks; when the parent
|
|
2312 block is later shown, the internal blocks remain hidden. Default is nil.
|
|
2313
|
|
2314 ** FFAP changes
|
|
2315
|
|
2316 *** New ffap commands and keybindings:
|
|
2317
|
|
2318 C-x C-r (`ffap-read-only'),
|
|
2319 C-x C-v (`ffap-alternate-file'), C-x C-d (`ffap-list-directory'),
|
|
2320 C-x 4 r (`ffap-read-only-other-window'), C-x 4 d (`ffap-dired-other-window'),
|
|
2321 C-x 5 r (`ffap-read-only-other-frame'), C-x 5 d (`ffap-dired-other-frame').
|
|
2322
|
|
2323 *** FFAP accepts wildcards in a file name by default.
|
|
2324
|
|
2325 C-x C-f passes the file name to `find-file' with non-nil WILDCARDS
|
|
2326 argument, which visits multiple files, and C-x d passes it to `dired'.
|
|
2327
|
|
2328 ** Changes in Skeleton
|
|
2329
|
|
2330 *** In skeleton.el, `-' marks the `skeleton-point' without interregion interaction.
|
|
2331
|
|
2332 `@' has reverted to only setting `skeleton-positions' and no longer
|
|
2333 sets `skeleton-point'. Skeletons which used @ to mark
|
|
2334 `skeleton-point' independent of `_' should now use `-' instead. The
|
|
2335 updated `skeleton-insert' docstring explains these new features along
|
|
2336 with other details of skeleton construction.
|
|
2337
|
|
2338 *** The variables `skeleton-transformation', `skeleton-filter', and
|
|
2339 `skeleton-pair-filter' have been renamed to
|
|
2340 `skeleton-transformation-function', `skeleton-filter-function', and
|
|
2341 `skeleton-pair-filter-function'. The old names are still available
|
|
2342 as aliases.
|
|
2343
|
|
2344 ** HTML/SGML changes
|
|
2345
|
|
2346 *** Emacs now tries to set up buffer coding systems for HTML/XML files
|
|
2347 automatically.
|
|
2348
|
|
2349 *** SGML mode has indentation and supports XML syntax.
|
|
2350 The new variable `sgml-xml-mode' tells SGML mode to use XML syntax.
|
|
2351 When this option is enabled, SGML tags are inserted in XML style,
|
|
2352 i.e., there is always a closing tag.
|
|
2353 By default, its setting is inferred on a buffer-by-buffer basis
|
|
2354 from the file name or buffer contents.
|
|
2355
|
|
2356 *** The variable `sgml-transformation' has been renamed to
|
|
2357 `sgml-transformation-function'. The old name is still available as
|
|
2358 alias.
|
|
2359
|
|
2360 *** `xml-mode' is now an alias for `sgml-mode', which has XML support.
|
|
2361
|
|
2362 ** TeX modes
|
|
2363
|
|
2364 *** New major mode Doctex mode, for *.dtx files.
|
|
2365
|
|
2366 *** C-c C-c prompts for a command to run, and tries to offer a good default.
|
|
2367
|
|
2368 *** The user option `tex-start-options-string' has been replaced
|
|
2369 by two new user options: `tex-start-options', which should hold
|
|
2370 command-line options to feed to TeX, and `tex-start-commands' which should hold
|
|
2371 TeX commands to use at startup.
|
|
2372
|
|
2373 *** verbatim environments are now highlighted in courier by font-lock
|
|
2374 and super/sub-scripts are made into super/sub-scripts.
|
|
2375
|
|
2376 ** RefTeX mode changes
|
|
2377
|
|
2378 *** Changes to RefTeX's table of contents
|
|
2379
|
|
2380 The new command keys "<" and ">" in the TOC buffer promote/demote the
|
|
2381 section at point or all sections in the current region, with full
|
|
2382 support for multifile documents.
|
|
2383
|
|
2384 The new command `reftex-toc-recenter' (`C-c -') shows the current
|
|
2385 section in the TOC buffer without selecting the TOC window.
|
|
2386 Recentering can happen automatically in idle time when the option
|
|
2387 `reftex-auto-recenter-toc' is turned on. The highlight in the TOC
|
|
2388 buffer stays when the focus moves to a different window. A dedicated
|
|
2389 frame can show the TOC with the current section always automatically
|
|
2390 highlighted. The frame is created and deleted from the toc buffer
|
|
2391 with the `d' key.
|
|
2392
|
|
2393 The toc window can be split off horizontally instead of vertically.
|
|
2394 See new option `reftex-toc-split-windows-horizontally'.
|
|
2395
|
|
2396 Labels can be renamed globally from the table of contents using the
|
|
2397 key `M-%'.
|
|
2398
|
|
2399 The new command `reftex-goto-label' jumps directly to a label
|
|
2400 location.
|
|
2401
|
|
2402 *** Changes related to citations and BibTeX database files
|
|
2403
|
|
2404 Commands that insert a citation now prompt for optional arguments when
|
|
2405 called with a prefix argument. Related new options are
|
|
2406 `reftex-cite-prompt-optional-args' and `reftex-cite-cleanup-optional-args'.
|
|
2407
|
|
2408 The new command `reftex-create-bibtex-file' creates a BibTeX database
|
|
2409 with all entries referenced in the current document. The keys "e" and
|
|
2410 "E" allow to produce a BibTeX database file from entries marked in a
|
|
2411 citation selection buffer.
|
|
2412
|
|
2413 The command `reftex-citation' uses the word in the buffer before the
|
|
2414 cursor as a default search string.
|
|
2415
|
|
2416 The support for chapterbib has been improved. Different chapters can
|
|
2417 now use BibTeX or an explicit `thebibliography' environment.
|
|
2418
|
|
2419 The macros which specify the bibliography file (like \bibliography)
|
|
2420 can be configured with the new option `reftex-bibliography-commands'.
|
|
2421
|
|
2422 Support for jurabib has been added.
|
|
2423
|
|
2424 *** Global index matched may be verified with a user function.
|
|
2425
|
|
2426 During global indexing, a user function can verify an index match.
|
|
2427 See new option `reftex-index-verify-function'.
|
|
2428
|
|
2429 *** Parsing documents with many labels can be sped up.
|
|
2430
|
|
2431 Operating in a document with thousands of labels can be sped up
|
|
2432 considerably by allowing RefTeX to derive the type of a label directly
|
|
2433 from the label prefix like `eq:' or `fig:'. The option
|
|
2434 `reftex-trust-label-prefix' needs to be configured in order to enable
|
|
2435 this feature. While the speed-up is significant, this may reduce the
|
|
2436 quality of the context offered by RefTeX to describe a label.
|
|
2437
|
|
2438 *** Miscellaneous changes
|
|
2439
|
|
2440 The macros which input a file in LaTeX (like \input, \include) can be
|
|
2441 configured in the new option `reftex-include-file-commands'.
|
|
2442
|
|
2443 RefTeX supports global incremental search.
|
|
2444
|
|
2445 ** BibTeX mode
|
|
2446
|
|
2447 *** The new command `bibtex-url' browses a URL for the BibTeX entry at
|
|
2448 point (bound to C-c C-l and mouse-2, RET on clickable fields).
|
|
2449
|
|
2450 *** The new command `bibtex-entry-update' (bound to C-c C-u) updates
|
|
2451 an existing BibTeX entry by inserting fields that may occur but are not
|
|
2452 present.
|
|
2453
|
|
2454 *** New `bibtex-entry-format' option `required-fields', enabled by default.
|
|
2455
|
|
2456 *** `bibtex-maintain-sorted-entries' can take values `plain',
|
|
2457 `crossref', and `entry-class' which control the sorting scheme used
|
|
2458 for BibTeX entries. `bibtex-sort-entry-class' controls the sorting
|
|
2459 scheme `entry-class'. TAB completion for reference keys and
|
|
2460 automatic detection of duplicates does not require anymore that
|
|
2461 `bibtex-maintain-sorted-entries' is non-nil.
|
|
2462
|
|
2463 *** The new command `bibtex-complete' completes word fragment before
|
|
2464 point according to context (bound to M-tab).
|
|
2465
|
|
2466 *** In BibTeX mode the command `fill-paragraph' (M-q) fills
|
|
2467 individual fields of a BibTeX entry.
|
|
2468
|
|
2469 *** The new variable `bibtex-autofill-types' contains a list of entry
|
|
2470 types for which fields are filled automatically (if possible).
|
|
2471
|
|
2472 *** The new commands `bibtex-find-entry' and `bibtex-find-crossref'
|
|
2473 locate entries and crossref'd entries (bound to C-c C-s and C-c C-x).
|
|
2474 Crossref fields are clickable (bound to mouse-2, RET).
|
|
2475
|
|
2476 *** The new variables `bibtex-files' and `bibtex-file-path' define a set
|
|
2477 of BibTeX files that are searched for entry keys.
|
|
2478
|
|
2479 *** The new command `bibtex-validate-globally' checks for duplicate keys
|
|
2480 in multiple BibTeX files.
|
|
2481
|
|
2482 *** If the new variable `bibtex-autoadd-commas' is non-nil,
|
|
2483 automatically add missing commas at end of BibTeX fields.
|
|
2484
|
|
2485 *** The new command `bibtex-copy-summary-as-kill' pushes summary
|
|
2486 of BibTeX entry to kill ring (bound to C-c C-t).
|
|
2487
|
|
2488 *** If the new variable `bibtex-parse-keys-fast' is non-nil,
|
|
2489 use fast but simplified algorithm for parsing BibTeX keys.
|
|
2490
|
|
2491 *** The new variables bibtex-expand-strings and
|
|
2492 bibtex-autokey-expand-strings control the expansion of strings when
|
|
2493 extracting the content of a BibTeX field.
|
|
2494
|
|
2495 *** The variables `bibtex-autokey-name-case-convert' and
|
|
2496 `bibtex-autokey-titleword-case-convert' have been renamed to
|
|
2497 `bibtex-autokey-name-case-convert-function' and
|
|
2498 `bibtex-autokey-titleword-case-convert-function'. The old names are
|
|
2499 still available as aliases.
|
|
2500
|
|
2501 ** GUD changes
|
|
2502
|
|
2503 *** The new package gdb-ui.el provides an enhanced graphical interface to
|
|
2504 GDB. You can interact with GDB through the GUD buffer in the usual way, but
|
|
2505 there are also further buffers which control the execution and describe the
|
|
2506 state of your program. It can separate the input/output of your program from
|
|
2507 that of GDB and watches expressions in the speedbar. It also uses features of
|
|
2508 Emacs 21/22 such as the toolbar, and bitmaps in the fringe to indicate
|
|
2509 breakpoints.
|
|
2510
|
|
2511 To use this package just type M-x gdb. See the Emacs manual if you want the
|
96376
|
2512 old behavior.
|
81024
|
2513
|
|
2514 *** GUD mode has its own tool bar for controlling execution of the inferior
|
|
2515 and other common debugger commands.
|
|
2516
|
|
2517 *** In GUD mode, when talking to GDB, C-x C-a C-j "jumps" the program
|
|
2518 counter to the specified source line (the one where point is).
|
|
2519
|
|
2520 *** The variable tooltip-gud-tips-p has been removed. GUD tooltips can now be
|
|
2521 toggled independently of normal tooltips with the minor mode
|
|
2522 `gud-tooltip-mode'.
|
|
2523
|
|
2524 *** In graphical mode, with a C program, GUD Tooltips have been extended to
|
|
2525 display the #define directive associated with an identifier when program is
|
|
2526 not executing.
|
|
2527
|
|
2528 *** GUD mode improvements for jdb:
|
|
2529
|
|
2530 **** Search for source files using jdb classpath and class information.
|
|
2531 Fast startup since there is no need to scan all source files up front.
|
|
2532 There is also no need to create and maintain lists of source
|
|
2533 directories to scan. Look at `gud-jdb-use-classpath' and
|
|
2534 `gud-jdb-classpath' customization variables documentation.
|
|
2535
|
|
2536 **** The previous method of searching for source files has been
|
|
2537 preserved in case someone still wants/needs to use it.
|
|
2538 Set `gud-jdb-use-classpath' to nil.
|
|
2539
|
|
2540 **** Supports the standard breakpoint (gud-break, gud-clear)
|
|
2541 set/clear operations from Java source files under the classpath, stack
|
|
2542 traversal (gud-up, gud-down), and run until current stack finish
|
|
2543 (gud-finish).
|
|
2544
|
|
2545 **** Supports new jdb (Java 1.2 and later) in addition to oldjdb
|
|
2546 (Java 1.1 jdb).
|
|
2547
|
|
2548 *** Added jdb Customization Variables
|
|
2549
|
|
2550 **** `gud-jdb-command-name'. What command line to use to invoke jdb.
|
|
2551
|
|
2552 **** `gud-jdb-use-classpath'. Allows selection of java source file searching
|
|
2553 method: set to t for new method, nil to scan `gud-jdb-directories' for
|
|
2554 java sources (previous method).
|
|
2555
|
|
2556 **** `gud-jdb-directories'. List of directories to scan and search for Java
|
|
2557 classes using the original gud-jdb method (if `gud-jdb-use-classpath'
|
|
2558 is nil).
|
|
2559
|
|
2560 *** Minor Improvements
|
|
2561
|
|
2562 **** The STARTTLS wrapper (starttls.el) can now use GNUTLS
|
|
2563 instead of the OpenSSL based `starttls' tool. For backwards
|
|
2564 compatibility, it prefers `starttls', but you can toggle
|
|
2565 `starttls-use-gnutls' to switch to GNUTLS (or simply remove the
|
|
2566 `starttls' tool).
|
|
2567
|
|
2568 **** Do not allow debugger output history variable to grow without bounds.
|
|
2569
|
|
2570 ** Lisp mode changes
|
|
2571
|
|
2572 *** Lisp mode now uses `font-lock-doc-face' for doc strings.
|
|
2573
|
|
2574 *** C-u C-M-q in Emacs Lisp mode pretty-prints the list after point.
|
|
2575
|
|
2576 *** New features in evaluation commands
|
|
2577
|
|
2578 **** The function `eval-defun' (C-M-x) called on defface reinitializes
|
|
2579 the face to the value specified in the defface expression.
|
|
2580
|
|
2581 **** Typing C-x C-e twice prints the value of the integer result
|
|
2582 in additional formats (octal, hexadecimal, character) specified
|
|
2583 by the new function `eval-expression-print-format'. The same
|
|
2584 function also defines the result format for `eval-expression' (M-:),
|
|
2585 `eval-print-last-sexp' (C-j) and some edebug evaluation functions.
|
|
2586
|
|
2587 ** Changes to cmuscheme
|
|
2588
|
|
2589 *** Emacs now offers to start Scheme if the user tries to
|
|
2590 evaluate a Scheme expression but no Scheme subprocess is running.
|
|
2591
|
|
2592 *** If the file ~/.emacs_NAME or ~/.emacs.d/init_NAME.scm (where NAME
|
|
2593 is the name of the Scheme interpreter) exists, its contents are sent
|
|
2594 to the Scheme subprocess upon startup.
|
|
2595
|
|
2596 *** There are new commands to instruct the Scheme interpreter to trace
|
|
2597 procedure calls (`scheme-trace-procedure') and to expand syntactic forms
|
|
2598 (`scheme-expand-current-form'). The commands actually sent to the Scheme
|
|
2599 subprocess are controlled by the user options `scheme-trace-command',
|
|
2600 `scheme-untrace-command' and `scheme-expand-current-form'.
|
|
2601
|
|
2602 ** Ewoc changes
|
|
2603
|
|
2604 *** The new function `ewoc-delete' deletes specified nodes.
|
|
2605
|
|
2606 *** `ewoc-create' now takes optional arg NOSEP, which inhibits insertion of
|
|
2607 a newline after each pretty-printed entry and after the header and footer.
|
|
2608 This allows you to create multiple-entry ewocs on a single line and to
|
|
2609 effect "invisible" nodes by arranging for the pretty-printer to not print
|
|
2610 anything for those nodes.
|
|
2611
|
|
2612 For example, these two sequences of expressions behave identically:
|
|
2613
|
|
2614 ;; NOSEP nil
|
|
2615 (defun PP (data) (insert (format "%S" data)))
|
|
2616 (ewoc-create 'PP "start\n")
|
|
2617
|
|
2618 ;; NOSEP t
|
|
2619 (defun PP (data) (insert (format "%S\n" data)))
|
|
2620 (ewoc-create 'PP "start\n\n" "\n" t)
|
|
2621
|
|
2622 ** CC mode changes
|
|
2623
|
|
2624 *** The CC Mode manual has been extensively revised.
|
|
2625 The information about using CC Mode has been separated from the larger
|
|
2626 and more difficult chapters about configuration.
|
|
2627
|
|
2628 *** New Minor Modes
|
|
2629 **** Electric Minor Mode toggles the electric action of non-alphabetic keys.
|
|
2630 The new command c-toggle-electric-mode is bound to C-c C-l. Turning the
|
|
2631 mode off can be helpful for editing chaotically indented code and for
|
|
2632 users new to CC Mode, who sometimes find electric indentation
|
|
2633 disconcerting. Its current state is displayed in the mode line with an
|
|
2634 'l', e.g. "C/al".
|
|
2635
|
|
2636 **** Subword Minor Mode makes Emacs recognize word boundaries at upper case
|
|
2637 letters in StudlyCapsIdentifiers. You enable this feature by C-c C-w. It can
|
|
2638 also be used in non-CC Mode buffers. :-) Contributed by Masatake YAMATO.
|
|
2639
|
|
2640 *** Support for the AWK language.
|
|
2641 Support for the AWK language has been introduced. The implementation is
|
|
2642 based around GNU AWK version 3.1, but it should work pretty well with
|
|
2643 any AWK. As yet, not all features of CC Mode have been adapted for AWK.
|
|
2644 Here is a summary:
|
|
2645
|
|
2646 **** Indentation Engine
|
|
2647 The CC Mode indentation engine fully supports AWK mode.
|
|
2648
|
|
2649 AWK mode handles code formatted in the conventional AWK fashion: `{'s
|
|
2650 which start actions, user-defined functions, or compound statements are
|
|
2651 placed on the same line as the associated construct; the matching `}'s
|
|
2652 are normally placed under the start of the respective pattern, function
|
|
2653 definition, or structured statement.
|
|
2654
|
|
2655 The predefined line-up functions haven't yet been adapted for AWK
|
|
2656 mode, though some of them may work serendipitously. There shouldn't
|
|
2657 be any problems writing custom indentation functions for AWK mode.
|
|
2658
|
|
2659 **** Font Locking
|
|
2660 There is a single level of font locking in AWK mode, rather than the
|
|
2661 three distinct levels the other modes have. There are several
|
|
2662 idiosyncrasies in AWK mode's font-locking due to the peculiarities of
|
|
2663 the AWK language itself.
|
|
2664
|
|
2665 **** Comment and Movement Commands
|
|
2666 These commands all work for AWK buffers. The notion of "defun" has
|
|
2667 been augmented to include AWK pattern-action pairs - the standard
|
|
2668 "defun" commands on key sequences C-M-a, C-M-e, and C-M-h use this
|
|
2669 extended definition.
|
|
2670
|
|
2671 **** "awk" style, Auto-newline Insertion and Clean-ups
|
|
2672 A new style, "awk" has been introduced, and this is now the default
|
|
2673 style for AWK code. With auto-newline enabled, the clean-up
|
|
2674 c-one-liner-defun (see above) is useful.
|
|
2675
|
|
2676 *** Font lock support.
|
|
2677 CC Mode now provides font lock support for all its languages. This
|
|
2678 supersedes the font lock patterns that have been in the core font lock
|
|
2679 package for C, C++, Java and Objective-C. Like indentation, font
|
|
2680 locking is done in a uniform way across all languages (except the new
|
|
2681 AWK mode - see below). That means that the new font locking will be
|
|
2682 different from the old patterns in various details for most languages.
|
|
2683
|
|
2684 The main goal of the font locking in CC Mode is accuracy, to provide a
|
|
2685 dependable aid in recognizing the various constructs. Some, like
|
|
2686 strings and comments, are easy to recognize while others like
|
|
2687 declarations and types can be very tricky. CC Mode can go to great
|
|
2688 lengths to recognize declarations and casts correctly, especially when
|
|
2689 the types aren't recognized by standard patterns. This is a fairly
|
|
2690 demanding analysis which can be slow on older hardware, and it can
|
|
2691 therefore be disabled by choosing a lower decoration level with the
|
|
2692 variable font-lock-maximum-decoration.
|
|
2693
|
|
2694 Note that the most demanding font lock level has been tuned with lazy
|
|
2695 fontification in mind; Just-In-Time-Lock mode should be enabled for
|
|
2696 the highest font lock level (by default, it is). Fontifying a file
|
|
2697 with several thousand lines in one go can take the better part of a
|
|
2698 minute.
|
|
2699
|
|
2700 **** The (c|c++|objc|java|idl|pike)-font-lock-extra-types variables
|
|
2701 are now used by CC Mode to recognize identifiers that are certain to
|
|
2702 be types. (They are also used in cases that aren't related to font
|
|
2703 locking.) At the maximum decoration level, types are often recognized
|
|
2704 properly anyway, so these variables should be fairly restrictive and
|
|
2705 not contain patterns for uncertain types.
|
|
2706
|
|
2707 **** Support for documentation comments.
|
|
2708 There is a "plugin" system to fontify documentation comments like
|
|
2709 Javadoc and the markup within them. It's independent of the host
|
|
2710 language, so it's possible to e.g. turn on Javadoc font locking in C
|
|
2711 buffers. See the variable c-doc-comment-style for details.
|
|
2712
|
|
2713 Currently three kinds of doc comment styles are recognized: Sun's
|
|
2714 Javadoc, Autodoc (which is used in Pike) and GtkDoc (used in C). (The
|
|
2715 last was contributed by Masatake YAMATO). This is by no means a
|
|
2716 complete list of the most common tools; if your doc comment extractor
|
|
2717 of choice is missing then please drop a note to bug-cc-mode@gnu.org.
|
|
2718
|
|
2719 **** Better handling of C++ templates.
|
|
2720 As a side effect of the more accurate font locking, C++ templates are
|
|
2721 now handled much better. The angle brackets that delimit them are
|
|
2722 given parenthesis syntax so that they can be navigated like other
|
|
2723 parens.
|
|
2724
|
|
2725 This also improves indentation of templates, although there still is
|
|
2726 work to be done in that area. E.g. it's required that multiline
|
|
2727 template clauses are written in full and then refontified to be
|
|
2728 recognized, and the indentation of nested templates is a bit odd and
|
|
2729 not as configurable as it ought to be.
|
|
2730
|
|
2731 **** Improved handling of Objective-C and CORBA IDL.
|
|
2732 Especially the support for Objective-C and IDL has gotten an overhaul.
|
|
2733 The special "@" declarations in Objective-C are handled correctly.
|
|
2734 All the keywords used in CORBA IDL, PSDL, and CIDL are recognized and
|
|
2735 handled correctly, also wrt indentation.
|
|
2736
|
|
2737 *** Changes in Key Sequences
|
|
2738 **** c-toggle-auto-hungry-state is no longer bound to C-c C-t.
|
|
2739
|
|
2740 **** c-toggle-hungry-state is no longer bound to C-c C-d.
|
|
2741 This binding has been taken over by c-hungry-delete-forwards.
|
|
2742
|
|
2743 **** c-toggle-auto-state (C-c C-t) has been renamed to c-toggle-auto-newline.
|
|
2744 c-toggle-auto-state remains as an alias.
|
|
2745
|
|
2746 **** The new commands c-hungry-backspace and c-hungry-delete-forwards
|
|
2747 have key bindings C-c C-DEL (or C-c DEL, for the benefit of TTYs) and
|
|
2748 C-c C-d (or C-c C-<delete> or C-c <delete>) respectively. These
|
|
2749 commands delete entire blocks of whitespace with a single
|
|
2750 key-sequence. [N.B. "DEL" is the <backspace> key.]
|
|
2751
|
|
2752 **** The new command c-toggle-electric-mode is bound to C-c C-l.
|
|
2753
|
|
2754 **** The new command c-subword-mode is bound to C-c C-w.
|
|
2755
|
|
2756 *** C-c C-s (`c-show-syntactic-information') now highlights the anchor
|
|
2757 position(s).
|
|
2758
|
|
2759 *** New syntactic symbols in IDL mode.
|
|
2760 The top level constructs "module" and "composition" (from CIDL) are
|
|
2761 now handled like "namespace" in C++: They are given syntactic symbols
|
|
2762 module-open, module-close, inmodule, composition-open,
|
|
2763 composition-close, and incomposition.
|
|
2764
|
|
2765 *** New functions to do hungry delete without enabling hungry delete mode.
|
|
2766 The new functions `c-hungry-backspace' and `c-hungry-delete-forward'
|
|
2767 provide hungry deletion without having to toggle a mode. They are
|
|
2768 bound to C-c C-DEL and C-c C-d (and several variants, for the benefit
|
|
2769 of different keyboard setups. See "Changes in key sequences" above).
|
|
2770
|
|
2771 *** Better control over `require-final-newline'.
|
|
2772
|
|
2773 The variable `c-require-final-newline' specifies which of the modes
|
|
2774 implemented by CC mode should insert final newlines. Its value is a
|
|
2775 list of modes, and only those modes should do it. By default the list
|
|
2776 includes C, C++ and Objective-C modes.
|
|
2777
|
|
2778 Whichever modes are in this list will set `require-final-newline'
|
|
2779 based on `mode-require-final-newline'.
|
|
2780
|
|
2781 *** Format change for syntactic context elements.
|
|
2782
|
|
2783 The elements in the syntactic context returned by `c-guess-basic-syntax'
|
|
2784 and stored in `c-syntactic-context' has been changed somewhat to allow
|
|
2785 attaching more information. They are now lists instead of single cons
|
|
2786 cells. E.g. a line that previously had the syntactic analysis
|
|
2787
|
|
2788 ((inclass . 11) (topmost-intro . 13))
|
|
2789
|
|
2790 is now analyzed as
|
|
2791
|
|
2792 ((inclass 11) (topmost-intro 13))
|
|
2793
|
|
2794 In some cases there are more than one position given for a syntactic
|
|
2795 symbol.
|
|
2796
|
|
2797 This change might affect code that calls `c-guess-basic-syntax'
|
|
2798 directly, and custom lineup functions if they use
|
|
2799 `c-syntactic-context'. However, the argument given to lineup
|
|
2800 functions is still a single cons cell with nil or an integer in the
|
|
2801 cdr.
|
|
2802
|
|
2803 *** API changes for derived modes.
|
|
2804
|
|
2805 There have been extensive changes "under the hood" which can affect
|
|
2806 derived mode writers. Some of these changes are likely to cause
|
|
2807 incompatibilities with existing derived modes, but on the other hand
|
|
2808 care has now been taken to make it possible to extend and modify CC
|
|
2809 Mode with less risk of such problems in the future.
|
|
2810
|
|
2811 **** New language variable system.
|
|
2812 These are variables whose values vary between CC Mode's different
|
|
2813 languages. See the comment blurb near the top of cc-langs.el.
|
|
2814
|
|
2815 **** New initialization functions.
|
|
2816 The initialization procedure has been split up into more functions to
|
|
2817 give better control: `c-basic-common-init', `c-font-lock-init', and
|
|
2818 `c-init-language-vars'.
|
|
2819
|
|
2820 *** Changes in analysis of nested syntactic constructs.
|
|
2821 The syntactic analysis engine has better handling of cases where
|
|
2822 several syntactic constructs appear nested on the same line. They are
|
|
2823 now handled as if each construct started on a line of its own.
|
|
2824
|
|
2825 This means that CC Mode now indents some cases differently, and
|
|
2826 although it's more consistent there might be cases where the old way
|
|
2827 gave results that's more to one's liking. So if you find a situation
|
|
2828 where you think that the indentation has become worse, please report
|
|
2829 it to bug-cc-mode@gnu.org.
|
|
2830
|
|
2831 **** New syntactic symbol substatement-label.
|
|
2832 This symbol is used when a label is inserted between a statement and
|
|
2833 its substatement. E.g:
|
|
2834
|
|
2835 if (x)
|
|
2836 x_is_true:
|
|
2837 do_stuff();
|
|
2838
|
|
2839 *** Better handling of multiline macros.
|
|
2840
|
|
2841 **** Syntactic indentation inside macros.
|
|
2842 The contents of multiline #define's are now analyzed and indented
|
|
2843 syntactically just like other code. This can be disabled by the new
|
|
2844 variable `c-syntactic-indentation-in-macros'. A new syntactic symbol
|
|
2845 `cpp-define-intro' has been added to control the initial indentation
|
|
2846 inside `#define's.
|
|
2847
|
|
2848 **** New lineup function `c-lineup-cpp-define'.
|
|
2849
|
|
2850 Now used by default to line up macro continuation lines. The behavior
|
|
2851 of this function closely mimics the indentation one gets if the macro
|
|
2852 is indented while the line continuation backslashes are temporarily
|
|
2853 removed. If syntactic indentation in macros is turned off, it works
|
|
2854 much line `c-lineup-dont-change', which was used earlier, but handles
|
|
2855 empty lines within the macro better.
|
|
2856
|
|
2857 **** Automatically inserted newlines continues the macro if used within one.
|
|
2858 This applies to the newlines inserted by the auto-newline mode, and to
|
|
2859 `c-context-line-break' and `c-context-open-line'.
|
|
2860
|
|
2861 **** Better alignment of line continuation backslashes.
|
|
2862 `c-backslash-region' tries to adapt to surrounding backslashes. New
|
|
2863 variable `c-backslash-max-column' puts a limit on how far out
|
|
2864 backslashes can be moved.
|
|
2865
|
|
2866 **** Automatic alignment of line continuation backslashes.
|
|
2867 This is controlled by the new variable `c-auto-align-backslashes'. It
|
|
2868 affects `c-context-line-break', `c-context-open-line' and newlines
|
|
2869 inserted in Auto-Newline mode.
|
|
2870
|
|
2871 **** Line indentation works better inside macros.
|
|
2872 Regardless whether syntactic indentation and syntactic indentation
|
|
2873 inside macros are enabled or not, line indentation now ignores the
|
|
2874 line continuation backslashes. This is most noticeable when syntactic
|
|
2875 indentation is turned off and there are empty lines (save for the
|
|
2876 backslash) in the macro.
|
|
2877
|
|
2878 *** indent-for-comment is more customizable.
|
|
2879 The behavior of M-; (indent-for-comment) is now configurable through
|
|
2880 the variable `c-indent-comment-alist'. The indentation behavior is
|
|
2881 based on the preceding code on the line, e.g. to get two spaces after
|
|
2882 #else and #endif but indentation to `comment-column' in most other
|
|
2883 cases (something which was hardcoded earlier).
|
|
2884
|
|
2885 *** New function `c-context-open-line'.
|
|
2886 It's the open-line equivalent of `c-context-line-break'.
|
|
2887
|
|
2888 *** New clean-ups
|
|
2889
|
|
2890 **** `comment-close-slash'.
|
|
2891 With this clean-up, a block (i.e. c-style) comment can be terminated by
|
|
2892 typing a slash at the start of a line.
|
|
2893
|
|
2894 **** `c-one-liner-defun'
|
|
2895 This clean-up compresses a short enough defun (for example, an AWK
|
|
2896 pattern/action pair) onto a single line. "Short enough" is configurable.
|
|
2897
|
|
2898 *** New lineup functions
|
|
2899
|
|
2900 **** `c-lineup-string-cont'
|
|
2901 This lineup function lines up a continued string under the one it
|
|
2902 continues. E.g:
|
|
2903
|
|
2904 result = prefix + "A message "
|
|
2905 "string."; <- c-lineup-string-cont
|
|
2906
|
|
2907 **** `c-lineup-cascaded-calls'
|
|
2908 Lines up series of calls separated by "->" or ".".
|
|
2909
|
|
2910 **** `c-lineup-knr-region-comment'
|
|
2911 Gives (what most people think is) better indentation of comments in
|
|
2912 the "K&R region" between the function header and its body.
|
|
2913
|
|
2914 **** `c-lineup-gcc-asm-reg'
|
|
2915 Provides better indentation inside asm blocks.
|
|
2916
|
|
2917 **** `c-lineup-argcont'
|
|
2918 Lines up continued function arguments after the preceding comma.
|
|
2919
|
|
2920 *** Added toggle for syntactic indentation.
|
|
2921 The function `c-toggle-syntactic-indentation' can be used to toggle
|
|
2922 syntactic indentation.
|
|
2923
|
|
2924 *** Better caching of the syntactic context.
|
|
2925 CC Mode caches the positions of the opening parentheses (of any kind)
|
|
2926 of the lists surrounding the point. Those positions are used in many
|
|
2927 places as anchor points for various searches. The cache is now
|
|
2928 improved so that it can be reused to a large extent when the point is
|
|
2929 moved. The less it moves, the less needs to be recalculated.
|
|
2930
|
|
2931 The effect is that CC Mode should be fast most of the time even when
|
|
2932 opening parens are hung (i.e. aren't in column zero). It's typically
|
|
2933 only the first time after the point is moved far down in a complex
|
|
2934 file that it'll take noticeable time to find out the syntactic
|
|
2935 context.
|
|
2936
|
|
2937 *** Statements are recognized in a more robust way.
|
|
2938 Statements are recognized most of the time even when they occur in an
|
|
2939 "invalid" context, e.g. in a function argument. In practice that can
|
|
2940 happen when macros are involved.
|
|
2941
|
|
2942 *** Improved the way `c-indent-exp' chooses the block to indent.
|
|
2943 It now indents the block for the closest sexp following the point
|
|
2944 whose closing paren ends on a different line. This means that the
|
|
2945 point doesn't have to be immediately before the block to indent.
|
|
2946 Also, only the block and the closing line is indented; the current
|
|
2947 line is left untouched.
|
|
2948
|
|
2949 ** Changes in Makefile mode
|
|
2950
|
|
2951 *** Makefile mode has submodes for automake, gmake, makepp, BSD make and imake.
|
|
2952
|
|
2953 The former two couldn't be differentiated before, and the latter three
|
|
2954 are new. Font-locking is robust now and offers new customizable
|
|
2955 faces.
|
|
2956
|
|
2957 *** The variable `makefile-query-one-target-method' has been renamed
|
|
2958 to `makefile-query-one-target-method-function'. The old name is still
|
|
2959 available as alias.
|
|
2960
|
|
2961 ** Sql changes
|
|
2962
|
|
2963 *** The variable `sql-product' controls the highlighting of different
|
|
2964 SQL dialects. This variable can be set globally via Customize, on a
|
|
2965 buffer-specific basis via local variable settings, or for the current
|
|
2966 session using the new SQL->Product submenu. (This menu replaces the
|
|
2967 SQL->Highlighting submenu.)
|
|
2968
|
|
2969 The following values are supported:
|
|
2970
|
|
2971 ansi ANSI Standard (default)
|
|
2972 db2 DB2
|
|
2973 informix Informix
|
|
2974 ingres Ingres
|
|
2975 interbase Interbase
|
|
2976 linter Linter
|
|
2977 ms Microsoft
|
|
2978 mysql MySQL
|
|
2979 oracle Oracle
|
|
2980 postgres Postgres
|
|
2981 solid Solid
|
|
2982 sqlite SQLite
|
|
2983 sybase Sybase
|
|
2984
|
|
2985 The current product name will be shown on the mode line following the
|
|
2986 SQL mode indicator.
|
|
2987
|
|
2988 The technique of setting `sql-mode-font-lock-defaults' directly in
|
|
2989 your `.emacs' will no longer establish the default highlighting -- Use
|
|
2990 `sql-product' to accomplish this.
|
|
2991
|
|
2992 ANSI keywords are always highlighted.
|
|
2993
|
|
2994 *** The function `sql-add-product-keywords' can be used to add
|
|
2995 font-lock rules to the product specific rules. For example, to have
|
|
2996 all identifiers ending in `_t' under MS SQLServer treated as a type,
|
|
2997 you would use the following line in your .emacs file:
|
|
2998
|
|
2999 (sql-add-product-keywords 'ms
|
|
3000 '(("\\<\\w+_t\\>" . font-lock-type-face)))
|
|
3001
|
|
3002 *** Oracle support includes keyword highlighting for Oracle 9i.
|
|
3003
|
|
3004 Most SQL and PL/SQL keywords are implemented. SQL*Plus commands are
|
|
3005 highlighted in `font-lock-doc-face'.
|
|
3006
|
|
3007 *** Microsoft SQLServer support has been significantly improved.
|
|
3008
|
|
3009 Keyword highlighting for SqlServer 2000 is implemented.
|
|
3010 sql-interactive-mode defaults to use osql, rather than isql, because
|
|
3011 osql flushes its error stream more frequently. Thus error messages
|
|
3012 are displayed when they occur rather than when the session is
|
|
3013 terminated.
|
|
3014
|
|
3015 If the username and password are not provided to `sql-ms', osql is
|
|
3016 called with the `-E' command line argument to use the operating system
|
|
3017 credentials to authenticate the user.
|
|
3018
|
|
3019 *** Postgres support is enhanced.
|
|
3020 Keyword highlighting of Postgres 7.3 is implemented. Prompting for
|
|
3021 the username and the pgsql `-U' option is added.
|
|
3022
|
|
3023 *** MySQL support is enhanced.
|
|
3024 Keyword highlighting of MySql 4.0 is implemented.
|
|
3025
|
|
3026 *** Imenu support has been enhanced to locate tables, views, indexes,
|
|
3027 packages, procedures, functions, triggers, sequences, rules, and
|
|
3028 defaults.
|
|
3029
|
|
3030 *** Added SQL->Start SQLi Session menu entry which calls the
|
|
3031 appropriate `sql-interactive-mode' wrapper for the current setting of
|
|
3032 `sql-product'.
|
|
3033
|
|
3034 *** sql.el supports the SQLite interpreter--call 'sql-sqlite'.
|
|
3035
|
|
3036 ** Fortran mode changes
|
|
3037
|
|
3038 *** F90 mode and Fortran mode have support for `hs-minor-mode' (hideshow).
|
|
3039 It cannot deal with every code format, but ought to handle a sizeable
|
|
3040 majority.
|
|
3041
|
|
3042 *** F90 mode and Fortran mode have new navigation commands
|
|
3043 `f90-end-of-block', `f90-beginning-of-block', `f90-next-block',
|
|
3044 `f90-previous-block', `fortran-end-of-block',
|
|
3045 `fortran-beginning-of-block'.
|
|
3046
|
|
3047 *** Fortran mode does more font-locking by default. Use level 3
|
|
3048 highlighting for the old default.
|
|
3049
|
|
3050 *** Fortran mode has a new variable `fortran-directive-re'.
|
|
3051 Adapt this to match the format of any compiler directives you use.
|
|
3052 Lines that match are never indented, and are given distinctive font-locking.
|
|
3053
|
|
3054 *** The new function `f90-backslash-not-special' can be used to change
|
|
3055 the syntax of backslashes in F90 buffers.
|
|
3056
|
|
3057 ** Miscellaneous programming mode changes
|
|
3058
|
|
3059 *** In sh-script, a continuation line is only indented if the backslash was
|
|
3060 preceded by a SPC or a TAB.
|
|
3061
|
|
3062 *** Perl mode has a new variable `perl-indent-continued-arguments'.
|
|
3063
|
|
3064 *** The old Octave mode bindings C-c f and C-c i have been changed
|
|
3065 to C-c C-f and C-c C-i. The C-c C-i subcommands now have duplicate
|
|
3066 bindings on control characters--thus, C-c C-i C-b is the same as
|
|
3067 C-c C-i b, and so on.
|
|
3068
|
|
3069 *** Prolog mode has a new variable `prolog-font-lock-keywords'
|
|
3070 to support use of font-lock.
|
|
3071
|
|
3072 ** VC Changes
|
|
3073
|
|
3074 *** New backends for Subversion and Meta-CVS.
|
|
3075
|
|
3076 *** The new variable `vc-cvs-global-switches' specifies switches that
|
|
3077 are passed to any CVS command invoked by VC.
|
|
3078
|
|
3079 These switches are used as "global options" for CVS, which means they
|
|
3080 are inserted before the command name. For example, this allows you to
|
|
3081 specify a compression level using the `-z#' option for CVS.
|
|
3082
|
|
3083 *** The key C-x C-q only changes the read-only state of the buffer
|
|
3084 (toggle-read-only). It no longer checks files in or out.
|
|
3085
|
|
3086 We made this change because we held a poll and found that many users
|
|
3087 were unhappy with the previous behavior. If you do prefer this
|
|
3088 behavior, you can bind `vc-toggle-read-only' to C-x C-q in your
|
|
3089 `.emacs' file:
|
|
3090
|
|
3091 (global-set-key "\C-x\C-q" 'vc-toggle-read-only)
|
|
3092
|
|
3093 The function `vc-toggle-read-only' will continue to exist.
|
|
3094
|
|
3095 *** VC-Annotate mode enhancements
|
|
3096
|
|
3097 In VC-Annotate mode, you can now use the following key bindings for
|
|
3098 enhanced functionality to browse the annotations of past revisions, or
|
|
3099 to view diffs or log entries directly from vc-annotate-mode:
|
|
3100
|
|
3101 P: annotates the previous revision
|
|
3102 N: annotates the next revision
|
|
3103 J: annotates the revision at line
|
|
3104 A: annotates the revision previous to line
|
|
3105 D: shows the diff of the revision at line with its previous revision
|
|
3106 L: shows the log of the revision at line
|
|
3107 W: annotates the workfile (most up to date) version
|
|
3108
|
|
3109 ** pcl-cvs changes
|
|
3110
|
|
3111 *** In pcl-cvs mode, there is a new `d y' command to view the diffs
|
|
3112 between the local version of the file and yesterday's head revision
|
|
3113 in the repository.
|
|
3114
|
|
3115 *** In pcl-cvs mode, there is a new `d r' command to view the changes
|
|
3116 anyone has committed to the repository since you last executed
|
|
3117 `checkout', `update' or `commit'. That means using cvs diff options
|
|
3118 -rBASE -rHEAD.
|
|
3119
|
|
3120 ** Diff changes
|
|
3121
|
|
3122 *** M-x diff uses Diff mode instead of Compilation mode.
|
|
3123
|
|
3124 *** Diff mode key bindings changed.
|
|
3125
|
|
3126 These are the new bindings:
|
|
3127
|
|
3128 C-c C-e diff-ediff-patch (old M-A)
|
|
3129 C-c C-n diff-restrict-view (old M-r)
|
|
3130 C-c C-r diff-reverse-direction (old M-R)
|
|
3131 C-c C-u diff-context->unified (old M-U)
|
|
3132 C-c C-w diff-refine-hunk (old C-c C-r)
|
|
3133
|
|
3134 To convert unified to context format, use C-u C-c C-u.
|
|
3135 In addition, C-c C-u now operates on the region
|
|
3136 in Transient Mark mode when the mark is active.
|
|
3137
|
|
3138 ** EDiff changes.
|
|
3139
|
|
3140 *** When comparing directories.
|
|
3141 Typing D brings up a buffer that lists the differences between the contents of
|
|
3142 directories. Now it is possible to use this buffer to copy the missing files
|
|
3143 from one directory to another.
|
|
3144
|
|
3145 *** When comparing files or buffers.
|
|
3146 Typing the = key now offers to perform the word-by-word comparison of the
|
|
3147 currently highlighted regions in an inferior Ediff session. If you answer 'n'
|
|
3148 then it reverts to the old behavior and asks the user to select regions for
|
|
3149 comparison.
|
|
3150
|
|
3151 *** The new command `ediff-backup' compares a file with its most recent
|
|
3152 backup using `ediff'. If you specify the name of a backup file,
|
|
3153 `ediff-backup' compares it with the file of which it is a backup.
|
|
3154
|
|
3155 ** Etags changes.
|
|
3156
|
|
3157 *** New regular expressions features
|
|
3158
|
|
3159 **** New syntax for regular expressions, multi-line regular expressions.
|
|
3160
|
|
3161 The syntax --ignore-case-regexp=/regex/ is now undocumented and retained
|
|
3162 only for backward compatibility. The new equivalent syntax is
|
|
3163 --regex=/regex/i. More generally, it is --regex=/TAGREGEX/TAGNAME/MODS,
|
|
3164 where `/TAGNAME' is optional, as usual, and MODS is a string of 0 or
|
|
3165 more characters among `i' (ignore case), `m' (multi-line) and `s'
|
|
3166 (single-line). The `m' and `s' modifiers behave as in Perl regular
|
|
3167 expressions: `m' allows regexps to match more than one line, while `s'
|
|
3168 (which implies `m') means that `.' matches newlines. The ability to
|
|
3169 span newlines allows writing of much more powerful regular expressions
|
|
3170 and rapid prototyping for tagging new languages.
|
|
3171
|
|
3172 **** Regular expressions can use char escape sequences as in GCC.
|
|
3173
|
|
3174 The escaped character sequence \a, \b, \d, \e, \f, \n, \r, \t, \v,
|
|
3175 respectively, stand for the ASCII characters BEL, BS, DEL, ESC, FF, NL,
|
|
3176 CR, TAB, VT.
|
|
3177
|
|
3178 **** Regular expressions can be bound to a given language.
|
|
3179
|
|
3180 The syntax --regex={LANGUAGE}REGEX means that REGEX is used to make tags
|
|
3181 only for files of language LANGUAGE, and ignored otherwise. This is
|
|
3182 particularly useful when storing regexps in a file.
|
|
3183
|
|
3184 **** Regular expressions can be read from a file.
|
|
3185
|
|
3186 The --regex=@regexfile option means read the regexps from a file, one
|
|
3187 per line. Lines beginning with space or tab are ignored.
|
|
3188
|
|
3189 *** New language parsing features
|
|
3190
|
|
3191 **** New language HTML.
|
|
3192
|
|
3193 Tags are generated for `title' as well as `h1', `h2', and `h3'. Also,
|
|
3194 when `name=' is used inside an anchor and whenever `id=' is used.
|
|
3195
|
|
3196 **** New language PHP.
|
|
3197
|
|
3198 Functions, classes and defines are tags. If the --members option is
|
|
3199 specified to etags, variables are tags also.
|
|
3200
|
|
3201 **** New language Lua.
|
|
3202
|
|
3203 All functions are tagged.
|
|
3204
|
|
3205 **** The `::' qualifier triggers C++ parsing in C file.
|
|
3206
|
|
3207 Previously, only the `template' and `class' keywords had this effect.
|
|
3208
|
|
3209 **** The GCC __attribute__ keyword is now recognized and ignored.
|
|
3210
|
|
3211 **** In C and derived languages, etags creates tags for #undef
|
|
3212
|
|
3213 **** In Makefiles, constants are tagged.
|
|
3214
|
|
3215 If you want the old behavior instead, thus avoiding to increase the
|
|
3216 size of the tags file, use the --no-globals option.
|
|
3217
|
|
3218 **** In Perl, packages are tags.
|
|
3219
|
|
3220 Subroutine tags are named from their package. You can jump to sub tags
|
|
3221 as you did before, by the sub name, or additionally by looking for
|
|
3222 package::sub.
|
|
3223
|
|
3224 **** In Prolog, etags creates tags for rules in addition to predicates.
|
|
3225
|
|
3226 **** New default keywords for TeX.
|
|
3227
|
|
3228 The new keywords are def, newcommand, renewcommand, newenvironment and
|
|
3229 renewenvironment.
|
|
3230
|
|
3231 *** Honor #line directives.
|
|
3232
|
|
3233 When Etags parses an input file that contains C preprocessor's #line
|
|
3234 directives, it creates tags using the file name and line number
|
|
3235 specified in those directives. This is useful when dealing with code
|
|
3236 created from Cweb source files. When Etags tags the generated file, it
|
|
3237 writes tags pointing to the source file.
|
|
3238
|
|
3239 *** New option --parse-stdin=FILE.
|
|
3240
|
|
3241 This option is mostly useful when calling etags from programs. It can
|
|
3242 be used (only once) in place of a file name on the command line. Etags
|
|
3243 reads from standard input and marks the produced tags as belonging to
|
|
3244 the file FILE.
|
|
3245
|
|
3246 ** Ctags changes.
|
|
3247
|
|
3248 *** Ctags now allows duplicate tags
|
|
3249
|
|
3250 ** Rmail changes
|
|
3251
|
|
3252 *** Support for `movemail' from GNU mailutils was added to Rmail.
|
|
3253
|
81089
|
3254 This version of `movemail' allows you to read mail from a wide range of
|
81024
|
3255 mailbox formats, including remote POP3 and IMAP4 mailboxes with or
|
|
3256 without TLS encryption. If GNU mailutils is installed on the system
|
|
3257 and its version of `movemail' can be found in exec-path, it will be
|
|
3258 used instead of the native one.
|
|
3259
|
|
3260 *** The new commands rmail-end-of-message and rmail-summary end-of-message,
|
|
3261 by default bound to `/', go to the end of the current mail message in
|
|
3262 Rmail and Rmail summary buffers.
|
|
3263
|
|
3264 *** Rmail now displays 5-digit message ids in its summary buffer.
|
|
3265
|
|
3266 ** Gnus package
|
|
3267
|
|
3268 *** Gnus now includes Sieve and PGG
|
|
3269
|
|
3270 Sieve is a library for managing Sieve scripts. PGG is a library to handle
|
|
3271 PGP/MIME.
|
|
3272
|
|
3273 *** There are many news features, bug fixes and improvements.
|
|
3274
|
|
3275 See the file GNUS-NEWS or the node "Oort Gnus" in the Gnus manual for details.
|
|
3276
|
|
3277 ** MH-E changes.
|
|
3278
|
|
3279 Upgraded to MH-E version 8.0.3. There have been major changes since
|
|
3280 version 5.0.2; see MH-E-NEWS for details.
|
|
3281
|
|
3282 ** Miscellaneous mail changes
|
|
3283
|
|
3284 *** The new variable `mail-default-directory' specifies
|
|
3285 `default-directory' for mail buffers. This directory is used for
|
|
3286 auto-save files of mail buffers. It defaults to "~/".
|
|
3287
|
|
3288 *** The mode line can indicate new mail in a directory or file.
|
|
3289
|
|
3290 See the documentation of the user option `display-time-mail-directory'.
|
|
3291
|
|
3292 ** Calendar changes
|
|
3293
|
|
3294 *** There is a new calendar package, icalendar.el, that can be used to
|
|
3295 convert Emacs diary entries to/from the iCalendar format.
|
|
3296
|
|
3297 *** The new package cal-html.el writes HTML files with calendar and
|
|
3298 diary entries.
|
|
3299
|
|
3300 *** The new functions `diary-from-outlook', `diary-from-outlook-gnus',
|
|
3301 and `diary-from-outlook-rmail' can be used to import diary entries
|
|
3302 from Outlook-format appointments in mail messages. The variable
|
|
3303 `diary-outlook-formats' can be customized to recognize additional
|
|
3304 formats.
|
|
3305
|
|
3306 *** The procedure for activating appointment reminders has changed:
|
|
3307 use the new function `appt-activate'. The new variable
|
|
3308 `appt-display-format' controls how reminders are displayed, replacing
|
|
3309 `appt-issue-message', `appt-visible', and `appt-msg-window'.
|
|
3310
|
|
3311 *** The function `simple-diary-display' now by default sets a header line.
|
|
3312 This can be controlled through the variables `diary-header-line-flag'
|
|
3313 and `diary-header-line-format'.
|
|
3314
|
|
3315 *** Diary sexp entries can have custom marking in the calendar.
|
|
3316 Diary sexp functions which only apply to certain days (such as
|
|
3317 `diary-block' or `diary-cyclic') now take an optional parameter MARK,
|
|
3318 which is the name of a face or a single-character string indicating
|
|
3319 how to highlight the day in the calendar display. Specifying a
|
|
3320 single-character string as @var{mark} places the character next to the
|
|
3321 day in the calendar. Specifying a face highlights the day with that
|
|
3322 face. This lets you have different colors or markings for vacations,
|
|
3323 appointments, paydays or anything else using a sexp.
|
|
3324
|
|
3325 *** The meanings of C-x < and C-x > have been interchanged.
|
|
3326 < means to scroll backward in time, and > means to scroll forward.
|
|
3327
|
|
3328 *** You can now use < and >, instead of C-x < and C-x >, to scroll
|
|
3329 the calendar left or right.
|
|
3330
|
|
3331 *** The new function `calendar-goto-day-of-year' (g D) prompts for a
|
|
3332 year and day number, and moves to that date. Negative day numbers
|
|
3333 count backward from the end of the year.
|
|
3334
|
|
3335 *** The new Calendar function `calendar-goto-iso-week' (g w)
|
|
3336 prompts for a year and a week number, and moves to the first
|
|
3337 day of that ISO week.
|
|
3338
|
|
3339 *** The functions `holiday-easter-etc' and `holiday-advent' now take
|
|
3340 optional arguments, in order to only report on the specified holiday
|
|
3341 rather than all. This makes customization of variables such as
|
|
3342 `christian-holidays' simpler.
|
|
3343
|
|
3344 *** The new variable `calendar-minimum-window-height' affects the
|
|
3345 window generated by the function `generate-calendar-window'.
|
|
3346
|
|
3347 ** Speedbar changes
|
|
3348
|
|
3349 *** Speedbar items can now be selected by clicking mouse-1, based on
|
|
3350 the `mouse-1-click-follows-link' mechanism.
|
|
3351
|
|
3352 *** The new command `speedbar-toggle-line-expansion', bound to SPC,
|
|
3353 contracts or expands the line under the cursor.
|
|
3354
|
|
3355 *** New command `speedbar-create-directory', bound to `M'.
|
|
3356
|
|
3357 *** The new commands `speedbar-expand-line-descendants' and
|
|
3358 `speedbar-contract-line-descendants', bound to `[' and `]'
|
|
3359 respectively, expand and contract the line under cursor with all of
|
|
3360 its descendents.
|
|
3361
|
|
3362 *** The new user option `speedbar-use-tool-tips-flag', if non-nil,
|
|
3363 means to display tool-tips for speedbar items.
|
|
3364
|
|
3365 *** The new user option `speedbar-query-confirmation-method' controls
|
|
3366 how querying is performed for file operations. A value of 'always
|
|
3367 means to always query before file operations; 'none-but-delete means
|
|
3368 to not query before any file operations, except before a file
|
|
3369 deletion.
|
|
3370
|
|
3371 *** The new user option `speedbar-select-frame-method' specifies how
|
|
3372 to select a frame for displaying a file opened with the speedbar. A
|
|
3373 value of 'attached means to use the attached frame (the frame that
|
|
3374 speedbar was started from.) A number such as 1 or -1 means to pass
|
|
3375 that number to `other-frame'.
|
|
3376
|
|
3377 *** SPC and DEL are no longer bound to scroll up/down in the speedbar
|
|
3378 keymap.
|
|
3379
|
|
3380 *** The frame management code in speedbar.el has been split into a new
|
|
3381 `dframe' library. Emacs Lisp code that makes use of the speedbar
|
|
3382 should use `dframe-attached-frame' instead of
|
|
3383 `speedbar-attached-frame', `dframe-timer' instead of `speedbar-timer',
|
|
3384 `dframe-close-frame' instead of `speedbar-close-frame', and
|
|
3385 `dframe-activity-change-focus-flag' instead of
|
|
3386 `speedbar-activity-change-focus-flag'. The variables
|
|
3387 `speedbar-update-speed' and `speedbar-navigating-speed' are also
|
|
3388 obsolete; use `dframe-update-speed' instead.
|
|
3389
|
|
3390 ** battery.el changes
|
|
3391
|
|
3392 *** display-battery-mode replaces display-battery.
|
|
3393
|
|
3394 *** battery.el now works on recent versions of OS X.
|
|
3395
|
|
3396 ** Games
|
|
3397
|
|
3398 *** The game `mpuz' is enhanced.
|
|
3399
|
|
3400 `mpuz' now allows the 2nd factor not to have two identical digits. By
|
|
3401 default, all trivial operations involving whole lines are performed
|
|
3402 automatically. The game uses faces for better visual feedback.
|
|
3403
|
|
3404 ** Obsolete and deleted packages
|
|
3405
|
|
3406 *** fast-lock.el and lazy-lock.el are obsolete. Use jit-lock.el instead.
|
|
3407
|
|
3408 *** iso-acc.el is now obsolete. Use one of the latin input methods instead.
|
|
3409
|
|
3410 *** zone-mode.el is now obsolete. Use dns-mode.el instead.
|
|
3411
|
|
3412 *** cplus-md.el has been deleted.
|
|
3413
|
|
3414 ** Miscellaneous
|
|
3415
|
|
3416 *** The variable `woman-topic-at-point' is renamed
|
|
3417 to `woman-use-topic-at-point' and behaves differently: if this
|
|
3418 variable is non-nil, the `woman' command uses the word at point
|
|
3419 automatically, without asking for a confirmation. Otherwise, the word
|
|
3420 at point is suggested as default, but not inserted at the prompt.
|
|
3421
|
|
3422 *** You can now customize `fill-nobreak-predicate' to control where
|
|
3423 filling can break lines. The value is now normally a list of
|
|
3424 functions, but it can also be a single function, for compatibility.
|
|
3425
|
|
3426 Emacs provide two predicates, `fill-single-word-nobreak-p' and
|
|
3427 `fill-french-nobreak-p', for use as the value of
|
|
3428 `fill-nobreak-predicate'.
|
|
3429
|
|
3430 *** M-x view-file and commands that use it now avoid interfering
|
|
3431 with special modes such as Tar mode.
|
|
3432
|
|
3433 *** `global-whitespace-mode' is a new alias for `whitespace-global-mode'.
|
|
3434
|
|
3435 *** The saveplace.el package now filters out unreadable files.
|
|
3436
|
|
3437 When you exit Emacs, the saved positions in visited files no longer
|
|
3438 include files that aren't readable, e.g. files that don't exist.
|
|
3439 Customize the new option `save-place-forget-unreadable-files' to nil
|
|
3440 to get the old behavior. The new options `save-place-save-skipped'
|
|
3441 and `save-place-skip-check-regexp' allow further fine-tuning of this
|
|
3442 feature.
|
|
3443
|
|
3444 *** Commands `winner-redo' and `winner-undo', from winner.el, are now
|
|
3445 bound to C-c <left> and C-c <right>, respectively. This is an
|
|
3446 incompatible change.
|
|
3447
|
|
3448 *** The type-break package now allows `type-break-file-name' to be nil
|
|
3449 and if so, doesn't store any data across sessions. This is handy if
|
|
3450 you don't want the `.type-break' file in your home directory or are
|
|
3451 annoyed by the need for interaction when you kill Emacs.
|
|
3452
|
|
3453 *** `ps-print' can now print characters from the mule-unicode charsets.
|
|
3454
|
|
3455 Printing text with characters from the mule-unicode-* sets works with
|
|
3456 `ps-print', provided that you have installed the appropriate BDF
|
|
3457 fonts. See the file INSTALL for URLs where you can find these fonts.
|
|
3458
|
|
3459 *** New command `strokes-global-set-stroke-string'.
|
|
3460 This is like `strokes-global-set-stroke', but it allows you to bind
|
|
3461 the stroke directly to a string to insert. This is convenient for
|
|
3462 using strokes as an input method.
|
|
3463
|
|
3464 *** In Outline mode, `hide-body' no longer hides lines at the top
|
|
3465 of the file that precede the first header line.
|
|
3466
|
|
3467 *** `hide-ifdef-mode' now uses overlays rather than selective-display
|
|
3468 to hide its text. This should be mostly transparent but slightly
|
|
3469 changes the behavior of motion commands like C-e and C-p.
|
|
3470
|
|
3471 *** In Artist mode the variable `artist-text-renderer' has been
|
|
3472 renamed to `artist-text-renderer-function'. The old name is still
|
|
3473 available as alias.
|
|
3474
|
|
3475 *** In Enriched mode, `set-left-margin' and `set-right-margin' are now
|
|
3476 by default bound to `C-c [' and `C-c ]' instead of the former `C-c C-l'
|
|
3477 and `C-c C-r'.
|
|
3478
|
|
3479 *** `partial-completion-mode' now handles partial completion on directory names.
|
|
3480
|
|
3481 *** You can now disable pc-selection-mode after enabling it.
|
|
3482
|
|
3483 M-x pc-selection-mode behaves like a proper minor mode, and with no
|
|
3484 argument it toggles the mode. Turning off PC-Selection mode restores
|
|
3485 the global key bindings that were replaced by turning on the mode.
|
|
3486
|
|
3487 *** `uniquify-strip-common-suffix' tells uniquify to prefer
|
|
3488 `file|dir1' and `file|dir2' to `file|dir1/subdir' and `file|dir2/subdir'.
|
|
3489
|
|
3490 *** New user option `add-log-always-start-new-record'.
|
|
3491
|
|
3492 When this option is enabled, M-x add-change-log-entry always
|
|
3493 starts a new record regardless of when the last record is.
|
|
3494
|
|
3495 *** M-x compare-windows now can automatically skip non-matching text to
|
|
3496 resync points in both windows.
|
|
3497
|
|
3498 *** PO translation files are decoded according to their MIME headers
|
|
3499 when Emacs visits them.
|
|
3500
|
|
3501 *** Telnet now prompts you for a port number with C-u M-x telnet.
|
|
3502
|
|
3503 *** calculator.el now has radix grouping mode.
|
|
3504
|
|
3505 To enable this, set `calculator-output-radix' non-nil. In this mode a
|
|
3506 separator character is used every few digits, making it easier to see
|
|
3507 byte boundaries etc. For more info, see the documentation of the
|
|
3508 variable `calculator-radix-grouping-mode'.
|
|
3509
|
|
3510 *** LDAP support now defaults to ldapsearch from OpenLDAP version 2.
|
|
3511
|
|
3512 *** The terminal emulation code in term.el has been improved; it can
|
|
3513 run most curses applications now.
|
|
3514
|
|
3515 *** Support for `magic cookie' standout modes has been removed.
|
|
3516
|
|
3517 Emacs still works on terminals that require magic cookies in order to
|
|
3518 use standout mode, but they can no longer display mode-lines in
|
|
3519 inverse-video.
|
|
3520
|
|
3521
|
|
3522 * Changes in Emacs 22.1 on non-free operating systems
|
|
3523
|
|
3524 ** The HOME directory defaults to Application Data under the user profile.
|
|
3525
|
|
3526 If you used a previous version of Emacs without setting the HOME
|
|
3527 environment variable and a `.emacs' was saved, then Emacs will continue
|
|
3528 using C:/ as the default HOME. But if you are installing Emacs afresh,
|
|
3529 the default location will be the "Application Data" (or similar
|
|
3530 localized name) subdirectory of your user profile. A typical location
|
|
3531 of this directory is "C:\Documents and Settings\USERNAME\Application Data",
|
|
3532 where USERNAME is your user name.
|
|
3533
|
|
3534 This change means that users can now have their own `.emacs' files on
|
|
3535 shared computers, and the default HOME directory is less likely to be
|
|
3536 read-only on computers that are administered by someone else.
|
|
3537
|
|
3538 ** Images are now supported on MS Windows.
|
|
3539
|
|
3540 PBM and XBM images are supported out of the box. Other image formats
|
|
3541 depend on external libraries. All of these libraries have been ported
|
|
3542 to Windows, and can be found in both source and binary form at
|
|
3543 http://gnuwin32.sourceforge.net/. Note that libpng also depends on
|
|
3544 zlib, and tiff depends on the version of jpeg that it was compiled
|
|
3545 against. For additional information, see nt/INSTALL.
|
|
3546
|
|
3547 ** Sound is now supported on MS Windows.
|
|
3548
|
|
3549 WAV format is supported on all versions of Windows, other formats such
|
|
3550 as AU, AIFF and MP3 may be supported in the more recent versions of
|
|
3551 Windows, or when other software provides hooks into the system level
|
|
3552 sound support for those formats.
|
|
3553
|
|
3554 ** Tooltips now work on MS Windows.
|
|
3555
|
|
3556 See the Emacs 21.1 NEWS entry for tooltips for details.
|
|
3557
|
|
3558 ** Pointing devices with more than 3 buttons are now supported on MS Windows.
|
|
3559
|
|
3560 The new variable `w32-pass-extra-mouse-buttons-to-system' controls
|
|
3561 whether Emacs should handle the extra buttons itself (the default), or
|
|
3562 pass them to Windows to be handled with system-wide functions.
|
|
3563
|
|
3564 ** Passing resources on the command line now works on MS Windows.
|
|
3565
|
|
3566 You can use --xrm to pass resource settings to Emacs, overriding any
|
|
3567 existing values. For example:
|
|
3568
|
|
3569 emacs --xrm "Emacs.Background:red" --xrm "Emacs.Geometry:100x20"
|
|
3570
|
|
3571 will start up Emacs on an initial frame of 100x20 with red background,
|
|
3572 irrespective of geometry or background setting on the Windows registry.
|
|
3573
|
|
3574 ** Emacs takes note of colors defined in Control Panel on MS-Windows.
|
|
3575
|
|
3576 The Control Panel defines some default colors for applications in much
|
|
3577 the same way as wildcard X Resources do on X. Emacs now adds these
|
|
3578 colors to the colormap prefixed by System (eg SystemMenu for the
|
|
3579 default Menu background, SystemMenuText for the foreground), and uses
|
|
3580 some of them to initialize some of the default faces.
|
|
3581 `list-colors-display' shows the list of System color names, in case
|
|
3582 you wish to use them in other faces.
|
|
3583
|
|
3584 ** Running in a console window in Windows now uses the console size.
|
|
3585
|
|
3586 Previous versions of Emacs erred on the side of having a usable Emacs
|
|
3587 through telnet, even though that was inconvenient if you use Emacs in
|
|
3588 a local console window with a scrollback buffer. The default value of
|
|
3589 w32-use-full-screen-buffer is now nil, which favors local console
|
|
3590 windows. Recent versions of Windows telnet also work well with this
|
|
3591 setting. If you are using an older telnet server then Emacs detects
|
|
3592 that the console window dimensions that are reported are not sane, and
|
|
3593 defaults to 80x25. If you use such a telnet server regularly at a size
|
|
3594 other than 80x25, you can still manually set
|
|
3595 w32-use-full-screen-buffer to t.
|
|
3596
|
|
3597 ** Different shaped mouse pointers are supported on MS Windows.
|
|
3598
|
|
3599 The mouse pointer changes shape depending on what is under the pointer.
|
|
3600
|
|
3601 ** On MS Windows, the "system caret" now follows the cursor.
|
|
3602
|
|
3603 This enables Emacs to work better with programs that need to track the
|
|
3604 cursor, for example screen magnifiers and text to speech programs.
|
|
3605 When such a program is in use, the system caret is made visible
|
|
3606 instead of Emacs drawing its own cursor. This seems to be required by
|
|
3607 some programs. The new variable w32-use-visible-system-caret allows
|
|
3608 the caret visibility to be manually toggled.
|
|
3609
|
|
3610 ** On MS Windows NT/W2K/XP, Emacs uses Unicode for clipboard operations.
|
|
3611
|
|
3612 Those systems use Unicode internally, so this allows Emacs to share
|
|
3613 multilingual text with other applications. On other versions of
|
|
3614 MS Windows, Emacs now uses the appropriate locale coding-system, so
|
|
3615 the clipboard should work correctly for your local language without
|
|
3616 any customizations.
|
|
3617
|
|
3618 ** On Mac OS, `keyboard-coding-system' changes based on the keyboard script.
|
|
3619
|
|
3620 ** The variable `mac-keyboard-text-encoding' and the constants
|
|
3621 `kTextEncodingMacRoman', `kTextEncodingISOLatin1', and
|
|
3622 `kTextEncodingISOLatin2' are obsolete.
|
|
3623
|
|
3624 ** The variable `mac-command-key-is-meta' is obsolete. Use
|
|
3625 `mac-command-modifier' and `mac-option-modifier' instead.
|
|
3626
|
|
3627 * Incompatible Lisp Changes in Emacs 22.1
|
|
3628
|
|
3629 ** Mode line display ignores text properties as well as the
|
|
3630 :propertize and :eval forms in the value of a variable whose
|
|
3631 `risky-local-variable' property is nil.
|
|
3632
|
|
3633 The function `comint-send-input' now accepts 3 optional arguments:
|
|
3634
|
|
3635 (comint-send-input &optional no-newline artificial)
|
|
3636
|
|
3637 Callers sending input not from the user should use bind the 3rd
|
|
3638 argument `artificial' to a non-nil value, to prevent Emacs from
|
|
3639 deleting the part of subprocess output that matches the input.
|
|
3640
|
|
3641 ** The `read-file-name' function now returns a null string if the
|
|
3642 user just types RET.
|
|
3643
|
|
3644 ** The variables post-command-idle-hook and post-command-idle-delay have
|
|
3645 been removed. Use run-with-idle-timer instead.
|
|
3646
|
|
3647 ** A hex or octal escape in a string constant forces the string to
|
|
3648 be multibyte or unibyte, respectively.
|
|
3649
|
|
3650 ** The explicit method of creating a display table element by
|
|
3651 combining a face number and a character code into a numeric
|
|
3652 glyph code is deprecated.
|
|
3653
|
|
3654 Instead, the new functions `make-glyph-code', `glyph-char', and
|
|
3655 `glyph-face' must be used to create and decode glyph codes in
|
|
3656 display tables.
|
|
3657
|
|
3658 ** `suppress-keymap' now works by remapping `self-insert-command' to
|
|
3659 the command `undefined'. (In earlier Emacs versions, it used
|
|
3660 `substitute-key-definition' to rebind self inserting characters to
|
|
3661 `undefined'.)
|
|
3662
|
|
3663 ** The third argument of `accept-process-output' is now milliseconds.
|
|
3664 It used to be microseconds.
|
|
3665
|
|
3666 ** The function find-operation-coding-system may be called with a cons
|
|
3667 (FILENAME . BUFFER) in the second argument if the first argument
|
|
3668 OPERATION is `insert-file-contents', and thus a function registered in
|
|
3669 `file-coding-system-alist' is also called with such an argument.
|
|
3670
|
|
3671 ** When Emacs receives a USR1 or USR2 signal, this generates
|
|
3672 input events: sigusr1 or sigusr2. Use special-event-map to
|
|
3673 handle these events.
|
|
3674
|
|
3675 ** The variable `memory-full' now remains t until
|
|
3676 there is no longer a shortage of memory.
|
|
3677
|
|
3678 ** Support for Mocklisp has been removed.
|
|
3679
|
|
3680
|
|
3681 * Lisp Changes in Emacs 22.1
|
|
3682
|
|
3683 ** General Lisp changes:
|
|
3684
|
|
3685 *** New syntax: \s now stands for the SPACE character.
|
|
3686
|
|
3687 `?\s' is a new way to write the space character. You must make sure
|
|
3688 it is not followed by a dash, since `?\s-...' indicates the "super"
|
|
3689 modifier. However, it would be strange to write a character constant
|
|
3690 and a following symbol (beginning with `-') with no space between
|
|
3691 them.
|
|
3692
|
|
3693 `\s' stands for space in strings, too, but it is not really meant for
|
|
3694 strings; it is easier and nicer just to write a space.
|
|
3695
|
|
3696 *** New syntax: \uXXXX and \UXXXXXXXX specify Unicode code points in hex.
|
|
3697
|
|
3698 For instance, you can use "\u0428" to specify a string consisting of
|
|
3699 CYRILLIC CAPITAL LETTER SHA, or `"U0001D6E2" to specify one consisting
|
|
3700 of MATHEMATICAL ITALIC CAPITAL ALPHA (the latter is greater than
|
|
3701 #xFFFF and thus needs the longer syntax).
|
|
3702
|
|
3703 This syntax works for both character constants and strings.
|
|
3704
|
|
3705 *** New function `unsafep' determines whether a Lisp form is safe.
|
|
3706
|
|
3707 It returns nil if the given Lisp form can't possibly do anything
|
|
3708 dangerous; otherwise it returns a reason why the form might be unsafe
|
|
3709 (calls unknown function, alters global variable, etc.).
|
|
3710
|
|
3711 *** The function `eql' is now available without requiring the CL package.
|
|
3712
|
|
3713 *** The new function `memql' is like `memq', but uses `eql' for comparison,
|
|
3714 that is, floats are compared by value and other elements with `eq'.
|
|
3715
|
|
3716 *** New functions `string-or-null-p' and `booleanp'.
|
|
3717
|
82365
|
3718 `string-or-null-p' returns non-nil if OBJECT is a string or nil.
|
|
3719 `booleanp' returns non-nil if OBJECT is t or nil.
|
81024
|
3720
|
|
3721 *** `makehash' is now obsolete. Use `make-hash-table' instead.
|
|
3722
|
|
3723 *** Minor change in the function `format'.
|
|
3724
|
|
3725 Some flags that were accepted but not implemented (such as "*") are no
|
|
3726 longer accepted.
|
|
3727
|
|
3728 *** `add-to-list' takes an optional third argument, APPEND.
|
|
3729
|
|
3730 If APPEND is non-nil, the new element gets added at the end of the
|
|
3731 list instead of at the beginning. This change actually occurred in
|
|
3732 Emacs 21.1, but was not documented then.
|
|
3733
|
|
3734 *** New function `add-to-ordered-list' is like `add-to-list' but
|
|
3735 associates a numeric ordering of each element added to the list.
|
|
3736
|
|
3737 *** New function `add-to-history' adds an element to a history list.
|
|
3738
|
|
3739 Lisp packages should use this function to add elements to their
|
|
3740 history lists.
|
|
3741
|
|
3742 If `history-delete-duplicates' is non-nil, it removes duplicates of
|
|
3743 the new element from the history list it updates.
|
|
3744
|
|
3745 *** New function `copy-tree' makes a copy of a tree.
|
|
3746
|
|
3747 It recursively copies through both CARs and CDRs.
|
|
3748
|
|
3749 *** New function `delete-dups' deletes `equal' duplicate elements from a list.
|
|
3750
|
|
3751 It modifies the list destructively, like `delete'. Of several `equal'
|
|
3752 occurrences of an element in the list, the one that's kept is the
|
|
3753 first one.
|
|
3754
|
|
3755 *** New function `rassq-delete-all'.
|
|
3756
|
|
3757 (rassq-delete-all VALUE ALIST) deletes, from ALIST, each element whose
|
|
3758 CDR is `eq' to the specified value.
|
|
3759
|
|
3760 *** Functions `get' and `plist-get' no longer give errors for bad plists.
|
|
3761
|
|
3762 They return nil for a malformed property list or if the list is
|
|
3763 cyclic.
|
|
3764
|
|
3765 *** New functions `lax-plist-get' and `lax-plist-put'.
|
|
3766
|
|
3767 They are like `plist-get' and `plist-put', except that they compare
|
|
3768 the property name using `equal' rather than `eq'.
|
|
3769
|
|
3770 *** The function `number-sequence' makes a list of equally-separated numbers.
|
|
3771
|
|
3772 For instance, (number-sequence 4 9) returns (4 5 6 7 8 9). By
|
|
3773 default, the separation is 1, but you can specify a different
|
|
3774 separation as the third argument. (number-sequence 1.5 6 2) returns
|
|
3775 (1.5 3.5 5.5).
|
|
3776
|
|
3777 *** New variables `most-positive-fixnum' and `most-negative-fixnum'.
|
|
3778
|
|
3779 They hold the largest and smallest possible integer values.
|
|
3780
|
|
3781 *** The function `expt' handles negative exponents differently.
|
|
3782 The value for `(expt A B)', if both A and B are integers and B is
|
|
3783 negative, is now a float. For example: (expt 2 -2) => 0.25.
|
|
3784
|
|
3785 *** The function `atan' now accepts an optional second argument.
|
|
3786
|
|
3787 When called with 2 arguments, as in `(atan Y X)', `atan' returns the
|
|
3788 angle in radians between the vector [X, Y] and the X axis. (This is
|
|
3789 equivalent to the standard C library function `atan2'.)
|
|
3790
|
|
3791 *** New macro `with-case-table'
|
|
3792
|
|
3793 This executes the body with the case table temporarily set to a given
|
|
3794 case table.
|
|
3795
|
|
3796 *** New macro `with-local-quit' temporarily allows quitting.
|
|
3797
|
|
3798 A quit inside the body of `with-local-quit' is caught by the
|
|
3799 `with-local-quit' form itself, but another quit will happen later once
|
|
3800 the code that has inhibited quitting exits.
|
|
3801
|
|
3802 This is for use around potentially blocking or long-running code
|
|
3803 inside timer functions and `post-command-hook' functions.
|
|
3804
|
|
3805 *** New macro `define-obsolete-function-alias'.
|
|
3806
|
|
3807 This combines `defalias' and `make-obsolete'.
|
|
3808
|
|
3809 *** New macro `eval-at-startup' specifies expressions to
|
|
3810 evaluate when Emacs starts up. If this is done after startup,
|
|
3811 it evaluates those expressions immediately.
|
|
3812
|
|
3813 This is useful in packages that can be preloaded.
|
|
3814
|
|
3815 *** New function `macroexpand-all' expands all macros in a form.
|
|
3816
|
|
3817 It is similar to the Common-Lisp function of the same name.
|
|
3818 One difference is that it guarantees to return the original argument
|
|
3819 if no expansion is done, which can be tested using `eq'.
|
|
3820
|
|
3821 *** A function or macro's doc string can now specify the calling pattern.
|
|
3822
|
|
3823 You put this info in the doc string's last line. It should be
|
|
3824 formatted so as to match the regexp "\n\n(fn .*)\\'". If you don't
|
|
3825 specify this explicitly, Emacs determines it from the actual argument
|
|
3826 names. Usually that default is right, but not always.
|
|
3827
|
|
3828 *** New variable `print-continuous-numbering'.
|
|
3829
|
|
3830 When this is non-nil, successive calls to print functions use a single
|
|
3831 numbering scheme for circular structure references. This is only
|
|
3832 relevant when `print-circle' is non-nil.
|
|
3833
|
|
3834 When you bind `print-continuous-numbering' to t, you should
|
|
3835 also bind `print-number-table' to nil.
|
|
3836
|
|
3837 *** `list-faces-display' takes an optional argument, REGEXP.
|
|
3838
|
|
3839 If it is non-nil, the function lists only faces matching this regexp.
|
|
3840
|
|
3841 *** New hook `command-error-function'.
|
|
3842
|
|
3843 By setting this variable to a function, you can control
|
|
3844 how the editor command loop shows the user an error message.
|
|
3845
|
|
3846 *** `debug-on-entry' accepts primitive functions that are not special forms.
|
|
3847
|
|
3848 ** Lisp code indentation features:
|
|
3849
|
|
3850 *** The `defmacro' form can contain indentation and edebug declarations.
|
|
3851
|
|
3852 These declarations specify how to indent the macro calls in Lisp mode
|
|
3853 and how to debug them with Edebug. You write them like this:
|
|
3854
|
|
3855 (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...)
|
|
3856
|
|
3857 DECLARATION is a list `(declare DECLARATION-SPECIFIER ...)'. The
|
|
3858 possible declaration specifiers are:
|
|
3859
|
|
3860 (indent INDENT)
|
|
3861 Set NAME's `lisp-indent-function' property to INDENT.
|
|
3862
|
|
3863 (edebug DEBUG)
|
|
3864 Set NAME's `edebug-form-spec' property to DEBUG. (This is
|
|
3865 equivalent to writing a `def-edebug-spec' for the macro,
|
|
3866 but this is cleaner.)
|
|
3867
|
|
3868 *** cl-indent now allows customization of Indentation of backquoted forms.
|
|
3869
|
|
3870 See the new user option `lisp-backquote-indentation'.
|
|
3871
|
|
3872 *** cl-indent now handles indentation of simple and extended `loop' forms.
|
|
3873
|
|
3874 The new user options `lisp-loop-keyword-indentation',
|
|
3875 `lisp-loop-forms-indentation', and `lisp-simple-loop-indentation' can
|
|
3876 be used to customize the indentation of keywords and forms in loop
|
|
3877 forms.
|
|
3878
|
|
3879 ** Variable aliases:
|
|
3880
|
|
3881 *** New function: defvaralias ALIAS-VAR BASE-VAR [DOCSTRING]
|
|
3882
|
|
3883 This function defines the symbol ALIAS-VAR as a variable alias for
|
|
3884 symbol BASE-VAR. This means that retrieving the value of ALIAS-VAR
|
|
3885 returns the value of BASE-VAR, and changing the value of ALIAS-VAR
|
|
3886 changes the value of BASE-VAR.
|
|
3887
|
|
3888 DOCSTRING, if present, is the documentation for ALIAS-VAR; else it has
|
|
3889 the same documentation as BASE-VAR.
|
|
3890
|
|
3891 *** The macro `define-obsolete-variable-alias' combines `defvaralias' and
|
|
3892 `make-obsolete-variable'.
|
|
3893
|
|
3894 *** New function: indirect-variable VARIABLE
|
|
3895
|
|
3896 This function returns the variable at the end of the chain of aliases
|
|
3897 of VARIABLE. If VARIABLE is not a symbol, or if VARIABLE is not
|
|
3898 defined as an alias, the function returns VARIABLE.
|
|
3899
|
|
3900 It might be noteworthy that variables aliases work for all kinds of
|
|
3901 variables, including buffer-local and frame-local variables.
|
|
3902
|
|
3903 ** defcustom changes:
|
|
3904
|
|
3905 *** The package-version keyword has been added to provide
|
|
3906 `customize-changed-options' functionality to packages in the future.
|
|
3907 Developers who make use of this keyword must also update the new
|
|
3908 variable `customize-package-emacs-version-alist'.
|
|
3909
|
|
3910 *** The new customization type `float' requires a floating point number.
|
|
3911
|
|
3912 ** String changes:
|
|
3913
|
|
3914 *** A hex escape in a string constant forces the string to be multibyte.
|
|
3915
|
|
3916 *** An octal escape in a string constant forces the string to be unibyte.
|
|
3917
|
|
3918 *** New function `string-to-multibyte' converts a unibyte string to a
|
|
3919 multibyte string with the same individual character codes.
|
|
3920
|
|
3921 *** `split-string' now includes null substrings in the returned list if
|
|
3922 the optional argument SEPARATORS is non-nil and there are matches for
|
|
3923 SEPARATORS at the beginning or end of the string. If SEPARATORS is
|
|
3924 nil, or if the new optional third argument OMIT-NULLS is non-nil, all
|
|
3925 empty matches are omitted from the returned list.
|
|
3926
|
|
3927 *** The new function `assoc-string' replaces `assoc-ignore-case' and
|
|
3928 `assoc-ignore-representation', which are still available, but have
|
|
3929 been declared obsolete.
|
|
3930
|
|
3931 *** New function `substring-no-properties' returns a substring without
|
|
3932 text properties.
|
|
3933
|
|
3934 ** Displaying warnings to the user.
|
|
3935
|
|
3936 See the functions `warn' and `display-warning', or the Lisp Manual.
|
|
3937 If you want to be sure the warning will not be overlooked, this
|
|
3938 facility is much better than using `message', since it displays
|
|
3939 warnings in a separate window.
|
|
3940
|
|
3941 ** Progress reporters.
|
|
3942
|
|
3943 These provide a simple and uniform way for commands to present
|
|
3944 progress messages for the user.
|
|
3945
|
|
3946 See the new functions `make-progress-reporter',
|
|
3947 `progress-reporter-update', `progress-reporter-force-update',
|
|
3948 `progress-reporter-done', and `dotimes-with-progress-reporter'.
|
|
3949
|
|
3950 ** Buffer positions:
|
|
3951
|
|
3952 *** Function `compute-motion' now calculates the usable window
|
|
3953 width if the WIDTH argument is nil. If the TOPOS argument is nil,
|
|
3954 the usable window height and width is used.
|
|
3955
|
|
3956 *** The `line-move', `scroll-up', and `scroll-down' functions will now
|
|
3957 modify the window vscroll to scroll through display rows that are
|
|
3958 taller that the height of the window, for example in the presence of
|
|
3959 large images. To disable this feature, bind the new variable
|
|
3960 `auto-window-vscroll' to nil.
|
|
3961
|
|
3962 *** The argument to `forward-word', `backward-word' is optional.
|
|
3963
|
|
3964 It defaults to 1.
|
|
3965
|
|
3966 *** Argument to `forward-to-indentation' and `backward-to-indentation' is optional.
|
|
3967
|
|
3968 It defaults to 1.
|
|
3969
|
|
3970 *** `field-beginning' and `field-end' take new optional argument, LIMIT.
|
|
3971
|
|
3972 This argument tells them not to search beyond LIMIT. Instead they
|
|
3973 give up and return LIMIT.
|
|
3974
|
|
3975 *** New function `window-line-height' is an efficient way to get
|
|
3976 information about a specific text line in a window provided that the
|
|
3977 window's display is up-to-date.
|
|
3978
|
|
3979 *** New function `line-number-at-pos' returns the line number of a position.
|
|
3980
|
|
3981 It an optional buffer position argument that defaults to point.
|
|
3982
|
|
3983 *** Function `pos-visible-in-window-p' now returns the pixel coordinates
|
|
3984 and partial visibility state of the corresponding row, if the PARTIALLY
|
|
3985 arg is non-nil.
|
|
3986
|
|
3987 *** New functions `posn-at-point' and `posn-at-x-y' return
|
|
3988 click-event-style position information for a given visible buffer
|
|
3989 position or for a given window pixel coordinate.
|
|
3990
|
|
3991 *** New function `mouse-on-link-p' tests if a position is in a clickable link.
|
|
3992
|
|
3993 This is the function used by the new `mouse-1-click-follows-link'
|
|
3994 functionality.
|
|
3995
|
|
3996 ** Text modification:
|
|
3997
|
|
3998 *** The new function `buffer-chars-modified-tick' returns a buffer's
|
|
3999 tick counter for changes to characters. Each time text in that buffer
|
|
4000 is inserted or deleted, the character-change counter is updated to the
|
|
4001 tick counter (`buffer-modified-tick'). Text property changes leave it
|
|
4002 unchanged.
|
|
4003
|
|
4004 *** The new function `insert-for-yank' normally works like `insert', but
|
|
4005 removes the text properties in the `yank-excluded-properties' list
|
|
4006 and handles the `yank-handler' text property.
|
|
4007
|
|
4008 *** The new function `insert-buffer-substring-as-yank' is like
|
|
4009 `insert-for-yank' except that it gets the text from another buffer as
|
|
4010 in `insert-buffer-substring'.
|
|
4011
|
|
4012 *** The new function `insert-buffer-substring-no-properties' is like
|
|
4013 `insert-buffer-substring', but removes all text properties from the
|
|
4014 inserted substring.
|
|
4015
|
|
4016 *** The new function `filter-buffer-substring' extracts a buffer
|
|
4017 substring, passes it through a set of filter functions, and returns
|
|
4018 the filtered substring. Use it instead of `buffer-substring' or
|
|
4019 `delete-and-extract-region' when copying text into a user-accessible
|
|
4020 data structure, such as the kill-ring, X clipboard, or a register.
|
|
4021
|
|
4022 The list of filter function is specified by the new variable
|
|
4023 `buffer-substring-filters'. For example, Longlines mode adds to
|
|
4024 `buffer-substring-filters' to remove soft newlines from the copied
|
|
4025 text.
|
|
4026
|
|
4027 *** Function `translate-region' accepts also a char-table as TABLE
|
|
4028 argument.
|
|
4029
|
|
4030 *** The new translation table `translation-table-for-input'
|
|
4031 is used for customizing self-insertion. The character to
|
|
4032 be inserted is translated through it.
|
|
4033
|
|
4034 *** Text clones.
|
|
4035
|
|
4036 The new function `text-clone-create'. Text clones are chunks of text
|
|
4037 that are kept identical by transparently propagating changes from one
|
|
4038 clone to the other.
|
|
4039
|
|
4040 *** The function `insert-string' is now obsolete.
|
|
4041
|
|
4042 ** Filling changes.
|
|
4043
|
|
4044 *** In determining an adaptive fill prefix, Emacs now tries the function in
|
|
4045 `adaptive-fill-function' _before_ matching the buffer line against
|
|
4046 `adaptive-fill-regexp' rather than _after_ it.
|
|
4047
|
|
4048 ** Atomic change groups.
|
|
4049
|
|
4050 To perform some changes in the current buffer "atomically" so that
|
|
4051 they either all succeed or are all undone, use `atomic-change-group'
|
|
4052 around the code that makes changes. For instance:
|
|
4053
|
|
4054 (atomic-change-group
|
|
4055 (insert foo)
|
|
4056 (delete-region x y))
|
|
4057
|
|
4058 If an error (or other nonlocal exit) occurs inside the body of
|
|
4059 `atomic-change-group', it unmakes all the changes in that buffer that
|
|
4060 were during the execution of the body. The change group has no effect
|
|
4061 on any other buffers--any such changes remain.
|
|
4062
|
|
4063 If you need something more sophisticated, you can directly call the
|
|
4064 lower-level functions that `atomic-change-group' uses. Here is how.
|
|
4065
|
|
4066 To set up a change group for one buffer, call `prepare-change-group'.
|
|
4067 Specify the buffer as argument; it defaults to the current buffer.
|
|
4068 This function returns a "handle" for the change group. You must save
|
|
4069 the handle to activate the change group and then finish it.
|
|
4070
|
|
4071 Before you change the buffer again, you must activate the change
|
|
4072 group. Pass the handle to `activate-change-group' afterward to
|
|
4073 do this.
|
|
4074
|
|
4075 After you make the changes, you must finish the change group. You can
|
|
4076 either accept the changes or cancel them all. Call
|
|
4077 `accept-change-group' to accept the changes in the group as final;
|
|
4078 call `cancel-change-group' to undo them all.
|
|
4079
|
|
4080 You should use `unwind-protect' to make sure the group is always
|
|
4081 finished. The call to `activate-change-group' should be inside the
|
|
4082 `unwind-protect', in case the user types C-g just after it runs.
|
|
4083 (This is one reason why `prepare-change-group' and
|
|
4084 `activate-change-group' are separate functions.) Once you finish the
|
|
4085 group, don't use the handle again--don't try to finish the same group
|
|
4086 twice.
|
|
4087
|
|
4088 To make a multibuffer change group, call `prepare-change-group' once
|
|
4089 for each buffer you want to cover, then use `nconc' to combine the
|
|
4090 returned values, like this:
|
|
4091
|
|
4092 (nconc (prepare-change-group buffer-1)
|
|
4093 (prepare-change-group buffer-2))
|
|
4094
|
|
4095 You can then activate the multibuffer change group with a single call
|
|
4096 to `activate-change-group', and finish it with a single call to
|
|
4097 `accept-change-group' or `cancel-change-group'.
|
|
4098
|
|
4099 Nested use of several change groups for the same buffer works as you
|
|
4100 would expect. Non-nested use of change groups for the same buffer
|
|
4101 will lead to undesirable results, so don't let it happen; the first
|
|
4102 change group you start for any given buffer should be the last one
|
|
4103 finished.
|
|
4104
|
|
4105 ** Buffer-related changes:
|
|
4106
|
|
4107 *** The new function `buffer-local-value' returns the buffer-local
|
|
4108 binding of VARIABLE (a symbol) in buffer BUFFER. If VARIABLE does not
|
|
4109 have a buffer-local binding in buffer BUFFER, it returns the default
|
|
4110 value of VARIABLE instead.
|
|
4111
|
|
4112 *** `list-buffers-noselect' now takes an additional argument, BUFFER-LIST.
|
|
4113
|
|
4114 If it is non-nil, it specifies which buffers to list.
|
|
4115
|
|
4116 *** `kill-buffer-hook' is now a permanent local.
|
|
4117
|
|
4118 *** The function `frame-or-buffer-changed-p' now lets you maintain
|
|
4119 various status records in parallel.
|
|
4120
|
|
4121 It takes a variable (a symbol) as argument. If the variable is non-nil,
|
|
4122 then its value should be a vector installed previously by
|
|
4123 `frame-or-buffer-changed-p'. If the frame names, buffer names, buffer
|
|
4124 order, or their read-only or modified flags have changed, since the
|
|
4125 time the vector's contents were recorded by a previous call to
|
|
4126 `frame-or-buffer-changed-p', then the function returns t. Otherwise
|
|
4127 it returns nil.
|
|
4128
|
|
4129 On the first call to `frame-or-buffer-changed-p', the variable's
|
|
4130 value should be nil. `frame-or-buffer-changed-p' stores a suitable
|
|
4131 vector into the variable and returns t.
|
|
4132
|
|
4133 If the variable is itself nil, then `frame-or-buffer-changed-p' uses,
|
|
4134 for compatibility, an internal variable which exists only for this
|
|
4135 purpose.
|
|
4136
|
|
4137 *** The function `read-buffer' follows the convention for reading from
|
|
4138 the minibuffer with a default value: if DEF is non-nil, the minibuffer
|
|
4139 prompt provided in PROMPT is edited to show the default value provided
|
|
4140 in DEF before the terminal colon and space.
|
|
4141
|
|
4142 ** Searching and matching changes:
|
|
4143
|
|
4144 *** New function `looking-back' checks whether a regular expression matches
|
|
4145 the text before point. Specifying the LIMIT argument bounds how far
|
|
4146 back the match can start; this is a way to keep it from taking too long.
|
|
4147
|
|
4148 *** The new variable `search-spaces-regexp' controls how to search
|
|
4149 for spaces in a regular expression. If it is non-nil, it should be a
|
|
4150 regular expression, and any series of spaces stands for that regular
|
|
4151 expression. If it is nil, spaces stand for themselves.
|
|
4152
|
|
4153 Spaces inside of constructs such as `[..]' and inside loops such as
|
|
4154 `*', `+', and `?' are never replaced with `search-spaces-regexp'.
|
|
4155
|
|
4156 *** New regular expression operators, `\_<' and `\_>'.
|
|
4157
|
|
4158 These match the beginning and end of a symbol. A symbol is a
|
|
4159 non-empty sequence of either word or symbol constituent characters, as
|
|
4160 specified by the syntax table.
|
|
4161
|
|
4162 *** `skip-chars-forward' and `skip-chars-backward' now handle
|
|
4163 character classes such as `[:alpha:]', along with individual
|
|
4164 characters and ranges.
|
|
4165
|
|
4166 *** In `replace-match', the replacement text no longer inherits
|
|
4167 properties from surrounding text.
|
|
4168
|
|
4169 *** The list returned by `(match-data t)' now has the buffer as a final
|
|
4170 element, if the last match was on a buffer. `set-match-data'
|
|
4171 accepts such a list for restoring the match state.
|
|
4172
|
|
4173 *** Functions `match-data' and `set-match-data' now have an optional
|
|
4174 argument `reseat'. When non-nil, all markers in the match data list
|
|
4175 passed to these functions will be reseated to point to nowhere.
|
|
4176
|
|
4177 *** rx.el has new corresponding `symbol-start' and `symbol-end' elements.
|
|
4178
|
|
4179 *** The default value of `sentence-end' is now defined using the new
|
|
4180 variable `sentence-end-without-space', which contains such characters
|
|
4181 that end a sentence without following spaces.
|
|
4182
|
|
4183 The function `sentence-end' should be used to obtain the value of the
|
|
4184 variable `sentence-end'. If the variable `sentence-end' is nil, then
|
|
4185 this function returns the regexp constructed from the variables
|
|
4186 `sentence-end-without-period', `sentence-end-double-space' and
|
|
4187 `sentence-end-without-space'.
|
|
4188
|
|
4189 ** Undo changes:
|
|
4190
|
|
4191 *** `buffer-undo-list' allows programmable elements.
|
|
4192
|
|
4193 These elements have the form (apply FUNNAME . ARGS), where FUNNAME is
|
|
4194 a symbol other than t or nil. That stands for a high-level change
|
|
4195 that should be undone by evaluating (apply FUNNAME ARGS).
|
|
4196
|
|
4197 These entries can also have the form (apply DELTA BEG END FUNNAME . ARGS)
|
|
4198 which indicates that the change which took place was limited to the
|
|
4199 range BEG...END and increased the buffer size by DELTA.
|
|
4200
|
|
4201 *** If the buffer's undo list for the current command gets longer than
|
|
4202 `undo-outer-limit', garbage collection empties it. This is to prevent
|
|
4203 it from using up the available memory and choking Emacs.
|
|
4204
|
|
4205 ** Killing and yanking changes:
|
|
4206
|
|
4207 *** New `yank-handler' text property can be used to control how
|
|
4208 previously killed text on the kill ring is reinserted.
|
|
4209
|
|
4210 The value of the `yank-handler' property must be a list with one to four
|
|
4211 elements with the following format:
|
|
4212 (FUNCTION PARAM NOEXCLUDE UNDO).
|
|
4213
|
|
4214 The `insert-for-yank' function looks for a yank-handler property on
|
|
4215 the first character on its string argument (typically the first
|
|
4216 element on the kill-ring). If a `yank-handler' property is found,
|
|
4217 the normal behavior of `insert-for-yank' is modified in various ways:
|
|
4218
|
|
4219 When FUNCTION is present and non-nil, it is called instead of `insert'
|
|
4220 to insert the string. FUNCTION takes one argument--the object to insert.
|
|
4221 If PARAM is present and non-nil, it replaces STRING as the object
|
|
4222 passed to FUNCTION (or `insert'); for example, if FUNCTION is
|
|
4223 `yank-rectangle', PARAM should be a list of strings to insert as a
|
|
4224 rectangle.
|
|
4225 If NOEXCLUDE is present and non-nil, the normal removal of the
|
|
4226 `yank-excluded-properties' is not performed; instead FUNCTION is
|
|
4227 responsible for removing those properties. This may be necessary
|
|
4228 if FUNCTION adjusts point before or after inserting the object.
|
|
4229 If UNDO is present and non-nil, it is a function that will be called
|
|
4230 by `yank-pop' to undo the insertion of the current object. It is
|
|
4231 called with two arguments, the start and end of the current region.
|
|
4232 FUNCTION can set `yank-undo-function' to override the UNDO value.
|
|
4233
|
|
4234 *** The functions `kill-new', `kill-append', and `kill-region' now have an
|
|
4235 optional argument to specify the `yank-handler' text property to put on
|
|
4236 the killed text.
|
|
4237
|
|
4238 *** The function `yank-pop' will now use a non-nil value of the variable
|
|
4239 `yank-undo-function' (instead of `delete-region') to undo the previous
|
|
4240 `yank' or `yank-pop' command (or a call to `insert-for-yank'). The function
|
|
4241 `insert-for-yank' automatically sets that variable according to the UNDO
|
|
4242 element of the string argument's `yank-handler' text property if present.
|
|
4243
|
|
4244 *** The function `insert-for-yank' now supports strings where the
|
|
4245 `yank-handler' property does not span the first character of the
|
|
4246 string. The old behavior is available if you call
|
|
4247 `insert-for-yank-1' instead.
|
|
4248
|
|
4249 ** Syntax table changes:
|
|
4250
|
|
4251 *** The new function `syntax-ppss' provides an efficient way to find the
|
|
4252 current syntactic context at point.
|
|
4253
|
|
4254 *** The new function `syntax-after' returns the syntax code
|
|
4255 of the character after a specified buffer position, taking account
|
|
4256 of text properties as well as the character code.
|
|
4257
|
|
4258 *** `syntax-class' extracts the class of a syntax code (as returned
|
|
4259 by `syntax-after').
|
|
4260
|
|
4261 *** The macro `with-syntax-table' no longer copies the syntax table.
|
|
4262
|
|
4263 ** File operation changes:
|
|
4264
|
|
4265 *** New vars `exec-suffixes' and `load-suffixes' used when
|
|
4266 searching for an executable or an Emacs Lisp file.
|
|
4267
|
|
4268 *** New function `locate-file' searches for a file in a list of directories.
|
|
4269 `locate-file' accepts a name of a file to search (a string), and two
|
|
4270 lists: a list of directories to search in and a list of suffixes to
|
|
4271 try; typical usage might use `exec-path' and `load-path' for the list
|
|
4272 of directories, and `exec-suffixes' and `load-suffixes' for the list
|
|
4273 of suffixes. The function also accepts a predicate argument to
|
|
4274 further filter candidate files.
|
|
4275
|
|
4276 One advantage of using this function is that the list of suffixes in
|
|
4277 `exec-suffixes' is OS-dependant, so this function will find
|
|
4278 executables without polluting Lisp code with OS dependencies.
|
|
4279
|
|
4280 *** The new function `file-remote-p' tests a file name and returns
|
|
4281 non-nil if it specifies a remote file (one that Emacs accesses using
|
|
4282 its own special methods and not directly through the file system).
|
|
4283 The value in that case is an identifier for the remote file system.
|
|
4284
|
|
4285 *** The new hook `before-save-hook' is invoked by `basic-save-buffer'
|
|
4286 before saving buffers. This allows packages to perform various final
|
|
4287 tasks. For example, it can be used by the copyright package to make
|
|
4288 sure saved files have the current year in any copyright headers.
|
|
4289
|
|
4290 *** `file-chase-links' now takes an optional second argument LIMIT which
|
|
4291 specifies the maximum number of links to chase through. If after that
|
|
4292 many iterations the file name obtained is still a symbolic link,
|
|
4293 `file-chase-links' returns it anyway.
|
|
4294
|
|
4295 *** Functions `file-name-sans-extension' and `file-name-extension' now
|
|
4296 ignore the leading dots in file names, so that file names such as
|
|
4297 `.emacs' are treated as extensionless.
|
|
4298
|
|
4299 *** If `buffer-save-without-query' is non-nil in some buffer,
|
|
4300 `save-some-buffers' will always save that buffer without asking (if
|
|
4301 it's modified).
|
|
4302
|
|
4303 *** `buffer-auto-save-file-format' is the new name for what was
|
|
4304 formerly called `auto-save-file-format'. It is now a permanent local.
|
|
4305
|
|
4306 *** `visited-file-modtime' and `calendar-time-from-absolute' now return
|
|
4307 a list of two integers, instead of a cons.
|
|
4308
|
|
4309 *** The precedence of file name handlers has been changed.
|
|
4310
|
|
4311 Instead of choosing the first handler that matches,
|
|
4312 `find-file-name-handler' now gives precedence to a file name handler
|
|
4313 that matches nearest the end of the file name. More precisely, the
|
|
4314 handler whose (match-beginning 0) is the largest is chosen. In case
|
|
4315 of ties, the old "first matched" rule applies.
|
|
4316
|
|
4317 *** A file name handler can declare which operations it handles.
|
|
4318
|
|
4319 You do this by putting an `operation' property on the handler name
|
|
4320 symbol. The property value should be a list of the operations that
|
|
4321 the handler really handles. It won't be called for any other
|
|
4322 operations.
|
|
4323
|
|
4324 This is useful for autoloaded handlers, to prevent them from being
|
|
4325 autoloaded when not really necessary.
|
|
4326
|
|
4327 *** The function `make-auto-save-file-name' is now handled by file
|
|
4328 name handlers. This will be exploited for remote files mainly.
|
|
4329
|
|
4330 *** The function `file-name-completion' accepts an optional argument
|
|
4331 PREDICATE, and rejects completion candidates that don't satisfy PREDICATE.
|
|
4332
|
|
4333 *** The new primitive `set-file-times' sets a file's access and
|
|
4334 modification times. Magic file name handlers can handle this
|
|
4335 operation.
|
|
4336
|
|
4337 ** Input changes:
|
|
4338
|
|
4339 *** Functions `y-or-n-p', `read-char', `read-key-sequence' and the like, that
|
|
4340 display a prompt but don't use the minibuffer, now display the prompt
|
|
4341 using the text properties (esp. the face) of the prompt string.
|
|
4342
|
|
4343 *** The functions `read-event', `read-char', and `read-char-exclusive'
|
|
4344 have a new optional argument SECONDS. If non-nil, this specifies a
|
|
4345 maximum time to wait for input, in seconds. If no input arrives after
|
|
4346 this time elapses, the functions stop waiting and return nil.
|
|
4347
|
|
4348 *** An interactive specification can now use the code letter `U' to get
|
|
4349 the up-event that was discarded in case the last key sequence read for a
|
|
4350 previous `k' or `K' argument was a down-event; otherwise nil is used.
|
|
4351
|
|
4352 *** The new interactive-specification `G' reads a file name
|
|
4353 much like `F', but if the input is a directory name (even defaulted),
|
|
4354 it returns just the directory name.
|
|
4355
|
|
4356 *** (while-no-input BODY...) runs BODY, but only so long as no input
|
|
4357 arrives. If the user types or clicks anything, BODY stops as if a
|
|
4358 quit had occurred. `while-no-input' returns the value of BODY, if BODY
|
|
4359 finishes. It returns nil if BODY was aborted by a quit, and t if
|
|
4360 BODY was aborted by arrival of input.
|
|
4361
|
|
4362 *** `recent-keys' now returns the last 300 keys.
|
|
4363
|
|
4364 ** Minibuffer changes:
|
|
4365
|
|
4366 *** The new function `minibufferp' returns non-nil if its optional
|
|
4367 buffer argument is a minibuffer. If the argument is omitted, it
|
|
4368 defaults to the current buffer.
|
|
4369
|
|
4370 *** New function `minibuffer-selected-window' returns the window which
|
|
4371 was selected when entering the minibuffer.
|
|
4372
|
|
4373 *** The `read-file-name' function now takes an additional argument which
|
|
4374 specifies a predicate which the file name read must satisfy. The
|
|
4375 new variable `read-file-name-predicate' contains the predicate argument
|
|
4376 while reading the file name from the minibuffer; the predicate in this
|
|
4377 variable is used by read-file-name-internal to filter the completion list.
|
|
4378
|
|
4379 *** The new variable `read-file-name-function' can be used by Lisp code
|
|
4380 to override the built-in `read-file-name' function.
|
|
4381
|
|
4382 *** The new variable `read-file-name-completion-ignore-case' specifies
|
|
4383 whether completion ignores case when reading a file name with the
|
|
4384 `read-file-name' function.
|
|
4385
|
|
4386 *** The new function `read-directory-name' is for reading a directory name.
|
|
4387
|
|
4388 It is like `read-file-name' except that the defaulting works better
|
|
4389 for directories, and completion inside it shows only directories.
|
|
4390
|
|
4391 *** The new variable `history-add-new-input' specifies whether to add new
|
|
4392 elements in history. If set to nil, minibuffer reading functions don't
|
|
4393 add new elements to the history list, so it is possible to do this
|
|
4394 afterwards by calling `add-to-history' explicitly.
|
|
4395
|
|
4396 ** Completion changes:
|
|
4397
|
|
4398 *** The new function `minibuffer-completion-contents' returns the contents
|
|
4399 of the minibuffer just before point. That is what completion commands
|
|
4400 operate on.
|
|
4401
|
|
4402 *** The functions `all-completions' and `try-completion' now accept lists
|
|
4403 of strings as well as hash-tables additionally to alists, obarrays
|
|
4404 and functions. Furthermore, the function `test-completion' is now
|
|
4405 exported to Lisp. The keys in alists and hash tables can be either
|
|
4406 strings or symbols, which are automatically converted with to strings.
|
|
4407
|
|
4408 *** The new macro `dynamic-completion-table' supports using functions
|
|
4409 as a dynamic completion table.
|
|
4410
|
|
4411 (dynamic-completion-table FUN)
|
|
4412
|
|
4413 FUN is called with one argument, the string for which completion is required,
|
|
4414 and it should return an alist containing all the intended possible
|
|
4415 completions. This alist can be a full list of possible completions so that FUN
|
|
4416 can ignore the value of its argument. If completion is performed in the
|
|
4417 minibuffer, FUN will be called in the buffer from which the minibuffer was
|
|
4418 entered. `dynamic-completion-table' then computes the completion.
|
|
4419
|
|
4420 *** The new macro `lazy-completion-table' initializes a variable
|
|
4421 as a lazy completion table.
|
|
4422
|
|
4423 (lazy-completion-table VAR FUN)
|
|
4424
|
|
4425 If the completion table VAR is used for the first time (e.g., by passing VAR
|
|
4426 as an argument to `try-completion'), the function FUN is called with no
|
|
4427 arguments. FUN must return the completion table that will be stored in VAR.
|
|
4428 If completion is requested in the minibuffer, FUN will be called in the buffer
|
|
4429 from which the minibuffer was entered. The return value of
|
|
4430 `lazy-completion-table' must be used to initialize the value of VAR.
|
|
4431
|
|
4432 ** Abbrev changes:
|
|
4433
|
|
4434 *** `define-abbrev' now accepts an optional argument SYSTEM-FLAG.
|
|
4435
|
|
4436 If non-nil, this marks the abbrev as a "system" abbrev, which means
|
|
4437 that it won't be stored in the user's abbrevs file if he saves the
|
|
4438 abbrevs. Major modes that predefine some abbrevs should always
|
|
4439 specify this flag.
|
|
4440
|
|
4441 *** The new function `copy-abbrev-table' copies an abbrev table.
|
|
4442
|
|
4443 It returns a new abbrev table that is a copy of a given abbrev table.
|
|
4444
|
|
4445 ** Enhancements to keymaps.
|
|
4446
|
|
4447 *** Cleaner way to enter key sequences.
|
|
4448
|
|
4449 You can enter a constant key sequence in a more natural format, the
|
|
4450 same one used for saving keyboard macros, using the macro `kbd'. For
|
|
4451 example,
|
|
4452
|
|
4453 (kbd "C-x C-f") => "\^x\^f"
|
|
4454
|
|
4455 Actually, this format has existed since Emacs 20.1.
|
|
4456
|
|
4457 *** Interactive commands can be remapped through keymaps.
|
|
4458
|
|
4459 This is an alternative to using `defadvice' or `substitute-key-definition'
|
|
4460 to modify the behavior of a key binding using the normal keymap
|
|
4461 binding and lookup functionality.
|
|
4462
|
|
4463 When a key sequence is bound to a command, and that command is
|
|
4464 remapped to another command, that command is run instead of the
|
|
4465 original command.
|
|
4466
|
|
4467 Example:
|
|
4468 Suppose that minor mode `my-mode' has defined the commands
|
|
4469 `my-kill-line' and `my-kill-word', and it wants C-k (and any other key
|
|
4470 bound to `kill-line') to run the command `my-kill-line' instead of
|
|
4471 `kill-line', and likewise it wants to run `my-kill-word' instead of
|
|
4472 `kill-word'.
|
|
4473
|
|
4474 Instead of rebinding C-k and the other keys in the minor mode map,
|
|
4475 command remapping allows you to directly map `kill-line' into
|
|
4476 `my-kill-line' and `kill-word' into `my-kill-word' using `define-key':
|
|
4477
|
|
4478 (define-key my-mode-map [remap kill-line] 'my-kill-line)
|
|
4479 (define-key my-mode-map [remap kill-word] 'my-kill-word)
|
|
4480
|
|
4481 When `my-mode' is enabled, its minor mode keymap is enabled too. So
|
|
4482 when the user types C-k, that runs the command `my-kill-line'.
|
|
4483
|
|
4484 Only one level of remapping is supported. In the above example, this
|
|
4485 means that if `my-kill-line' is remapped to `other-kill', then C-k still
|
|
4486 runs `my-kill-line'.
|
|
4487
|
|
4488 The following changes have been made to provide command remapping:
|
|
4489
|
|
4490 - Command remappings are defined using `define-key' with a prefix-key
|
|
4491 `remap', i.e. `(define-key MAP [remap CMD] DEF)' remaps command CMD
|
|
4492 to definition DEF in keymap MAP. The definition is not limited to
|
|
4493 another command; it can be anything accepted for a normal binding.
|
|
4494
|
|
4495 - The new function `command-remapping' returns the binding for a
|
|
4496 remapped command in the current keymaps, or nil if not remapped.
|
|
4497
|
|
4498 - `key-binding' now remaps interactive commands unless the optional
|
|
4499 third argument NO-REMAP is non-nil.
|
|
4500
|
|
4501 - `where-is-internal' now returns nil for a remapped command (e.g.
|
|
4502 `kill-line', when `my-mode' is enabled), and the actual key binding for
|
|
4503 the command it is remapped to (e.g. C-k for my-kill-line).
|
|
4504 It also has a new optional fifth argument, NO-REMAP, which inhibits
|
|
4505 remapping if non-nil (e.g. it returns "C-k" for `kill-line', and
|
|
4506 "<kill-line>" for `my-kill-line').
|
|
4507
|
|
4508 - The new variable `this-original-command' contains the original
|
|
4509 command before remapping. It is equal to `this-command' when the
|
|
4510 command was not remapped.
|
|
4511
|
|
4512 *** The definition of a key-binding passed to define-key can use XEmacs-style
|
|
4513 key-sequences, such as [(control a)].
|
|
4514
|
|
4515 *** New keymaps for typing file names
|
|
4516
|
|
4517 Two new keymaps, `minibuffer-local-filename-completion-map' and
|
|
4518 `minibuffer-local-must-match-filename-map', apply whenever
|
|
4519 Emacs reads a file name in the minibuffer. These key maps override
|
|
4520 the usual binding of SPC to `minibuffer-complete-word' (so that file
|
|
4521 names with embedded spaces could be typed without the need to quote
|
|
4522 the spaces).
|
|
4523
|
|
4524 *** New function `current-active-maps' returns a list of currently
|
|
4525 active keymaps.
|
|
4526
|
|
4527 *** New function `describe-buffer-bindings' inserts the list of all
|
|
4528 defined keys and their definitions.
|
|
4529
|
|
4530 *** New function `keymap-prompt' returns the prompt string of a keymap.
|
|
4531
|
|
4532 *** If text has a `keymap' property, that keymap takes precedence
|
|
4533 over minor mode keymaps.
|
|
4534
|
|
4535 *** The `keymap' property now also works at the ends of overlays and
|
|
4536 text properties, according to their stickiness. This also means that it
|
|
4537 works with empty overlays. The same hold for the `local-map' property.
|
|
4538
|
|
4539 *** `key-binding' will now look up mouse-specific bindings. The
|
|
4540 keymaps consulted by `key-binding' will get adapted if the key
|
|
4541 sequence is started with a mouse event. Instead of letting the click
|
|
4542 position be determined from the key sequence itself, it is also
|
|
4543 possible to specify it with an optional argument explicitly.
|
|
4544
|
|
4545 *** `define-key-after' now accepts keys longer than 1.
|
|
4546
|
|
4547 *** (map-keymap FUNCTION KEYMAP) applies the function to each binding
|
|
4548 in the keymap.
|
|
4549
|
|
4550 *** New variable `emulation-mode-map-alists'.
|
|
4551
|
|
4552 Lisp packages using many minor mode keymaps can now maintain their own
|
|
4553 keymap alist separate from `minor-mode-map-alist' by adding their
|
|
4554 keymap alist to this list.
|
|
4555
|
|
4556 *** Dense keymaps now handle inheritance correctly.
|
|
4557
|
|
4558 Previously a dense keymap would hide all of the simple-char key
|
|
4559 bindings of the parent keymap.
|
|
4560
|
|
4561 ** Enhancements to process support
|
|
4562
|
|
4563 *** Adaptive read buffering of subprocess output.
|
|
4564
|
|
4565 On some systems, when Emacs reads the output from a subprocess, the
|
|
4566 output data is read in very small blocks, potentially resulting in
|
|
4567 very poor performance. This behavior can be remedied to some extent
|
|
4568 by setting the new variable `process-adaptive-read-buffering' to a
|
|
4569 non-nil value (the default), as it will automatically delay reading
|
|
4570 from such processes, allowing them to produce more output before
|
|
4571 Emacs tries to read it.
|
|
4572
|
|
4573 *** Processes now have an associated property list where programs can
|
|
4574 maintain process state and other per-process related information.
|
|
4575
|
|
4576 Use the new functions `process-get' and `process-put' to access, add,
|
|
4577 and modify elements on this property list. Use the new functions
|
|
4578 `process-plist' and `set-process-plist' to access and replace the
|
|
4579 entire property list of a process.
|
|
4580
|
|
4581 *** Function `list-processes' now has an optional argument; if non-nil,
|
|
4582 it lists only the processes whose query-on-exit flag is set.
|
|
4583
|
|
4584 *** New fns `set-process-query-on-exit-flag' and `process-query-on-exit-flag'.
|
|
4585
|
|
4586 These replace the old function `process-kill-without-query'. That
|
|
4587 function is still supported, but new code should use the new
|
|
4588 functions.
|
|
4589
|
|
4590 *** The new function `call-process-shell-command'.
|
|
4591
|
|
4592 This executes a shell command synchronously in a separate process.
|
|
4593
|
|
4594 *** The new function `process-file' is similar to `call-process', but
|
|
4595 obeys file handlers. The file handler is chosen based on
|
|
4596 `default-directory'.
|
|
4597
|
|
4598 *** Function `signal-process' now accepts a process object or process
|
|
4599 name in addition to a process id to identify the signaled process.
|
|
4600
|
|
4601 *** Function `accept-process-output' has a new optional fourth arg
|
|
4602 JUST-THIS-ONE. If non-nil, only output from the specified process
|
|
4603 is handled, suspending output from other processes. If value is an
|
|
4604 integer, also inhibit running timers. This feature is generally not
|
|
4605 recommended, but may be necessary for specific applications, such as
|
|
4606 speech synthesis.
|
|
4607
|
|
4608 *** A process filter function gets the output as multibyte string
|
|
4609 if the process specifies t for its filter's multibyteness.
|
|
4610
|
|
4611 That multibyteness is decided by the value of
|
|
4612 `default-enable-multibyte-characters' when the process is created, and
|
|
4613 you can change it later with `set-process-filter-multibyte'.
|
|
4614
|
|
4615 *** The new function `set-process-filter-multibyte' sets the
|
|
4616 multibyteness of the strings passed to the process's filter.
|
|
4617
|
|
4618 *** The new function `process-filter-multibyte-p' returns the
|
|
4619 multibyteness of the strings passed to the process's filter.
|
|
4620
|
|
4621 *** If a process's coding system is `raw-text' or `no-conversion' and its
|
|
4622 buffer is multibyte, the output of the process is at first converted
|
|
4623 to multibyte by `string-to-multibyte' then inserted in the buffer.
|
|
4624 Previously, it was converted to multibyte by `string-as-multibyte',
|
|
4625 which was not compatible with the behavior of file reading.
|
|
4626
|
|
4627 ** Enhanced networking support.
|
|
4628
|
|
4629 *** The new `make-network-process' function makes network connections.
|
|
4630 It allows opening of stream and datagram connections to a server, as well as
|
|
4631 create a stream or datagram server inside Emacs.
|
|
4632
|
|
4633 - A server is started using :server t arg.
|
|
4634 - Datagram connection is selected using :type 'datagram arg.
|
|
4635 - A server can open on a random port using :service t arg.
|
|
4636 - Local sockets are supported using :family 'local arg.
|
|
4637 - IPv6 is supported (when available). You may explicitly select IPv6
|
|
4638 using :family 'ipv6 arg.
|
|
4639 - Non-blocking connect is supported using :nowait t arg.
|
|
4640 - The process' property list can be initialized using :plist PLIST arg;
|
|
4641 a copy of the server process' property list is automatically inherited
|
|
4642 by new client processes created to handle incoming connections.
|
|
4643
|
|
4644 To test for the availability of a given feature, use featurep like this:
|
|
4645 (featurep 'make-network-process '(:type datagram))
|
|
4646 (featurep 'make-network-process '(:family ipv6))
|
|
4647
|
|
4648 *** The old `open-network-stream' now uses `make-network-process'.
|
|
4649
|
|
4650 *** `process-contact' has an optional KEY argument.
|
|
4651
|
|
4652 Depending on this argument, you can get the complete list of network
|
|
4653 process properties or a specific property. Using :local or :remote as
|
|
4654 the KEY, you get the address of the local or remote end-point.
|
|
4655
|
|
4656 An Inet address is represented as a 5 element vector, where the first
|
|
4657 4 elements contain the IP address and the fifth is the port number.
|
|
4658
|
|
4659 *** New functions `stop-process' and `continue-process'.
|
|
4660
|
|
4661 These functions stop and restart communication through a network
|
|
4662 connection. For a server process, no connections are accepted in the
|
|
4663 stopped state. For a client process, no input is received in the
|
|
4664 stopped state.
|
|
4665
|
|
4666 *** New function `format-network-address'.
|
|
4667
|
|
4668 This function reformats the Lisp representation of a network address
|
|
4669 to a printable string. For example, an IP address A.B.C.D and port
|
|
4670 number P is represented as a five element vector [A B C D P], and the
|
|
4671 printable string returned for this vector is "A.B.C.D:P". See the doc
|
|
4672 string for other formatting options.
|
|
4673
|
|
4674 *** New function `network-interface-list'.
|
|
4675
|
|
4676 This function returns a list of network interface names and their
|
|
4677 current network addresses.
|
|
4678
|
|
4679 *** New function `network-interface-info'.
|
|
4680
|
|
4681 This function returns the network address, hardware address, current
|
|
4682 status, and other information about a specific network interface.
|
|
4683
|
|
4684 *** New functions `process-datagram-address', `set-process-datagram-address'.
|
|
4685
|
|
4686 These functions are used with datagram-based network processes to get
|
|
4687 and set the current address of the remote partner.
|
|
4688
|
|
4689 *** Deleting a network process with `delete-process' calls the sentinel.
|
|
4690
|
|
4691 The status message passed to the sentinel for a deleted network
|
|
4692 process is "deleted". The message passed to the sentinel when the
|
|
4693 connection is closed by the remote peer has been changed to
|
|
4694 "connection broken by remote peer".
|
|
4695
|
|
4696 ** Using window objects:
|
|
4697
|
|
4698 *** You can now make a window as short as one line.
|
|
4699
|
|
4700 A window that is just one line tall does not display either a mode
|
|
4701 line or a header line, even if the variables `mode-line-format' and
|
|
4702 `header-line-format' call for them. A window that is two lines tall
|
|
4703 cannot display both a mode line and a header line at once; if the
|
|
4704 variables call for both, only the mode line actually appears.
|
|
4705
|
|
4706 *** The new function `window-inside-edges' returns the edges of the
|
|
4707 actual text portion of the window, not including the scroll bar or
|
|
4708 divider line, the fringes, the display margins, the header line and
|
|
4709 the mode line.
|
|
4710
|
|
4711 *** The new functions `window-pixel-edges' and `window-inside-pixel-edges'
|
|
4712 return window edges in units of pixels, rather than columns and lines.
|
|
4713
|
|
4714 *** New function `window-body-height'.
|
|
4715
|
|
4716 This is like `window-height' but does not count the mode line or the
|
|
4717 header line.
|
|
4718
|
|
4719 *** The new function `adjust-window-trailing-edge' moves the right
|
|
4720 or bottom edge of a window. It does not move other window edges.
|
|
4721
|
|
4722 *** The new macro `with-selected-window' temporarily switches the
|
|
4723 selected window without impacting the order of `buffer-list'.
|
|
4724 It saves and restores the current buffer, too.
|
|
4725
|
|
4726 *** `select-window' takes an optional second argument NORECORD.
|
|
4727
|
|
4728 This is like `switch-to-buffer'.
|
|
4729
|
|
4730 *** `save-selected-window' now saves and restores the selected window
|
|
4731 of every frame. This way, it restores everything that can be changed
|
|
4732 by calling `select-window'. It also saves and restores the current
|
|
4733 buffer.
|
|
4734
|
|
4735 *** `set-window-buffer' has an optional argument KEEP-MARGINS.
|
|
4736
|
|
4737 If non-nil, that says to preserve the window's current margin, fringe,
|
|
4738 and scroll-bar settings.
|
|
4739
|
|
4740 *** The new function `window-tree' returns a frame's window tree.
|
|
4741
|
|
4742 *** The functions `get-lru-window' and `get-largest-window' take an optional
|
|
4743 argument `dedicated'. If non-nil, those functions do not ignore
|
|
4744 dedicated windows.
|
|
4745
|
|
4746 ** Customizable fringe bitmaps
|
|
4747
|
|
4748 *** There are new display properties, `left-fringe' and `right-fringe',
|
|
4749 that can be used to show a specific bitmap in the left or right fringe
|
|
4750 bitmap of the display line.
|
|
4751
|
|
4752 Format is `display (left-fringe BITMAP [FACE])', where BITMAP is a
|
|
4753 symbol identifying a fringe bitmap, either built-in or defined with
|
|
4754 `define-fringe-bitmap', and FACE is an optional face name to be used
|
|
4755 for displaying the bitmap instead of the default `fringe' face.
|
|
4756 When specified, FACE is automatically merged with the `fringe' face.
|
|
4757
|
|
4758 *** New buffer-local variables `fringe-indicator-alist' and
|
|
4759 `fringe-cursor-alist' maps between logical (internal) fringe indicator
|
|
4760 and cursor symbols and the actual fringe bitmaps to be displayed.
|
|
4761 This decouples the logical meaning of the fringe indicators from the
|
|
4762 physical appearance, as well as allowing different fringe bitmaps to
|
|
4763 be used in different windows showing different buffers.
|
|
4764
|
|
4765 *** New function `define-fringe-bitmap' can now be used to create new
|
|
4766 fringe bitmaps, as well as change the built-in fringe bitmaps.
|
|
4767
|
|
4768 *** New function `destroy-fringe-bitmap' deletes a fringe bitmap
|
|
4769 or restores a built-in one to its default value.
|
|
4770
|
|
4771 *** New function `set-fringe-bitmap-face' specifies the face to be
|
|
4772 used for a specific fringe bitmap. The face is automatically merged
|
|
4773 with the `fringe' face, so normally, the face should only specify the
|
|
4774 foreground color of the bitmap.
|
|
4775
|
|
4776 *** New function `fringe-bitmaps-at-pos' returns the current fringe
|
|
4777 bitmaps in the display line at a given buffer position.
|
|
4778
|
|
4779 ** Other window fringe features:
|
|
4780
|
|
4781 *** Controlling the default left and right fringe widths.
|
|
4782
|
|
4783 The default left and right fringe widths for all windows of a frame
|
|
4784 can now be controlled by setting the `left-fringe' and `right-fringe'
|
|
4785 frame parameters to an integer value specifying the width in pixels.
|
|
4786 Setting the width to 0 effectively removes the corresponding fringe.
|
|
4787
|
|
4788 The actual default fringe widths for the frame may deviate from the
|
|
4789 specified widths, since the combined fringe widths must match an
|
|
4790 integral number of columns. The extra width is distributed evenly
|
|
4791 between the left and right fringe. To force a specific fringe width,
|
|
4792 specify the width as a negative integer (if both widths are negative,
|
|
4793 only the left fringe gets the specified width).
|
|
4794
|
|
4795 Setting the width to nil (the default), restores the default fringe
|
|
4796 width which is the minimum number of pixels necessary to display any
|
|
4797 of the currently defined fringe bitmaps. The width of the built-in
|
|
4798 fringe bitmaps is 8 pixels.
|
|
4799
|
|
4800 *** Per-window fringe and scrollbar settings
|
|
4801
|
|
4802 **** Windows can now have their own individual fringe widths and
|
|
4803 position settings.
|
|
4804
|
|
4805 To control the fringe widths of a window, either set the buffer-local
|
|
4806 variables `left-fringe-width', `right-fringe-width', or call
|
|
4807 `set-window-fringes'.
|
|
4808
|
|
4809 To control the fringe position in a window, that is, whether fringes
|
|
4810 are positioned between the display margins and the window's text area,
|
|
4811 or at the edges of the window, either set the buffer-local variable
|
|
4812 `fringes-outside-margins' or call `set-window-fringes'.
|
|
4813
|
|
4814 The function `window-fringes' can be used to obtain the current
|
|
4815 settings. To make `left-fringe-width', `right-fringe-width', and
|
|
4816 `fringes-outside-margins' take effect, you must set them before
|
|
4817 displaying the buffer in a window, or use `set-window-buffer' to force
|
|
4818 an update of the display margins.
|
|
4819
|
|
4820 **** Windows can now have their own individual scroll-bar settings
|
|
4821 controlling the width and position of scroll-bars.
|
|
4822
|
|
4823 To control the scroll-bar of a window, either set the buffer-local
|
|
4824 variables `scroll-bar-mode' and `scroll-bar-width', or call
|
|
4825 `set-window-scroll-bars'. The function `window-scroll-bars' can be
|
|
4826 used to obtain the current settings. To make `scroll-bar-mode' and
|
|
4827 `scroll-bar-width' take effect, you must set them before displaying
|
|
4828 the buffer in a window, or use `set-window-buffer' to force an update
|
|
4829 of the display margins.
|
|
4830
|
|
4831 ** Redisplay features:
|
|
4832
|
|
4833 *** `sit-for' can now be called with args (SECONDS &optional NODISP).
|
|
4834
|
|
4835 *** Iconifying or deiconifying a frame no longer makes sit-for return.
|
|
4836
|
|
4837 *** New function `redisplay' causes an immediate redisplay if no input is
|
|
4838 available, equivalent to (sit-for 0). The call (redisplay t) forces
|
|
4839 an immediate redisplay even if input is pending.
|
|
4840
|
|
4841 *** New function `force-window-update' can initiate a full redisplay of
|
|
4842 one or all windows. Normally, this is not needed as changes in window
|
|
4843 contents are detected automatically. However, certain implicit
|
|
4844 changes to mode lines, header lines, or display properties may require
|
|
4845 forcing an explicit window update.
|
|
4846
|
|
4847 *** (char-displayable-p CHAR) returns non-nil if Emacs ought to be able
|
|
4848 to display CHAR. More precisely, if the selected frame's fontset has
|
|
4849 a font to display the character set that CHAR belongs to.
|
|
4850
|
|
4851 Fontsets can specify a font on a per-character basis; when the fontset
|
|
4852 does that, this value cannot be accurate.
|
|
4853
|
|
4854 *** You can define multiple overlay arrows via the new
|
|
4855 variable `overlay-arrow-variable-list'.
|
|
4856
|
|
4857 It contains a list of variables which contain overlay arrow position
|
|
4858 markers, including the original `overlay-arrow-position' variable.
|
|
4859
|
|
4860 Each variable on this list can have individual `overlay-arrow-string'
|
|
4861 and `overlay-arrow-bitmap' properties that specify an overlay arrow
|
|
4862 string (for non-window terminals) or fringe bitmap (for window
|
|
4863 systems) to display at the corresponding overlay arrow position.
|
|
4864 If either property is not set, the default `overlay-arrow-string' or
|
|
4865 'overlay-arrow-fringe-bitmap' will be used.
|
|
4866
|
|
4867 *** New `line-height' and `line-spacing' properties for newline characters
|
|
4868
|
|
4869 A newline can now have `line-height' and `line-spacing' text or overlay
|
|
4870 properties that control the height of the corresponding display row.
|
|
4871
|
|
4872 If the `line-height' property value is t, the newline does not
|
|
4873 contribute to the height of the display row; instead the height of the
|
|
4874 newline glyph is reduced. Also, a `line-spacing' property on this
|
|
4875 newline is ignored. This can be used to tile small images or image
|
|
4876 slices without adding blank areas between the images.
|
|
4877
|
|
4878 If the `line-height' property value is a positive integer, the value
|
|
4879 specifies the minimum line height in pixels. If necessary, the line
|
|
4880 height it increased by increasing the line's ascent.
|
|
4881
|
|
4882 If the `line-height' property value is a float, the minimum line
|
|
4883 height is calculated by multiplying the default frame line height by
|
|
4884 the given value.
|
|
4885
|
|
4886 If the `line-height' property value is a cons (FACE . RATIO), the
|
|
4887 minimum line height is calculated as RATIO * height of named FACE.
|
|
4888 RATIO is int or float. If FACE is t, it specifies the current face.
|
|
4889
|
|
4890 If the `line-height' property value is a cons (nil . RATIO), the line
|
|
4891 height is calculated as RATIO * actual height of the line's contents.
|
|
4892
|
|
4893 If the `line-height' value is a cons (HEIGHT . TOTAL), HEIGHT specifies
|
|
4894 the line height as described above, while TOTAL is any of the forms
|
|
4895 described above and specifies the total height of the line, causing a
|
|
4896 varying number of pixels to be inserted after the line to make it line
|
|
4897 exactly that many pixels high.
|
|
4898
|
|
4899 If the `line-spacing' property value is an positive integer, the value
|
|
4900 is used as additional pixels to insert after the display line; this
|
|
4901 overrides the default frame `line-spacing' and any buffer local value of
|
|
4902 the `line-spacing' variable.
|
|
4903
|
|
4904 If the `line-spacing' property is a float or cons, the line spacing
|
|
4905 is calculated as specified above for the `line-height' property.
|
|
4906
|
|
4907 *** The buffer local `line-spacing' variable can now have a float value,
|
|
4908 which is used as a height relative to the default frame line height.
|
|
4909
|
|
4910 *** Enhancements to stretch display properties
|
|
4911
|
|
4912 The display property stretch specification form `(space PROPS)', where
|
|
4913 PROPS is a property list, now allows pixel based width and height
|
|
4914 specifications, as well as enhanced horizontal text alignment.
|
|
4915
|
|
4916 The value of these properties can now be a (primitive) expression
|
|
4917 which is evaluated during redisplay. The following expressions
|
|
4918 are supported:
|
|
4919
|
|
4920 EXPR ::= NUM | (NUM) | UNIT | ELEM | POS | IMAGE | FORM
|
|
4921 NUM ::= INTEGER | FLOAT | SYMBOL
|
|
4922 UNIT ::= in | mm | cm | width | height
|
|
4923 ELEM ::= left-fringe | right-fringe | left-margin | right-margin
|
|
4924 | scroll-bar | text
|
|
4925 POS ::= left | center | right
|
|
4926 FORM ::= (NUM . EXPR) | (OP EXPR ...)
|
|
4927 OP ::= + | -
|
|
4928
|
|
4929 The form `NUM' specifies a fractional width or height of the default
|
|
4930 frame font size. The form `(NUM)' specifies an absolute number of
|
|
4931 pixels. If a symbol is specified, its buffer-local variable binding
|
|
4932 is used. The `in', `mm', and `cm' units specifies the number of
|
|
4933 pixels per inch, milli-meter, and centi-meter, resp. The `width' and
|
|
4934 `height' units correspond to the width and height of the current face
|
|
4935 font. An image specification corresponds to the width or height of
|
|
4936 the image.
|
|
4937
|
|
4938 The `left-fringe', `right-fringe', `left-margin', `right-margin',
|
|
4939 `scroll-bar', and `text' elements specify to the width of the
|
|
4940 corresponding area of the window.
|
|
4941
|
|
4942 The `left', `center', and `right' positions can be used with :align-to
|
|
4943 to specify a position relative to the left edge, center, or right edge
|
|
4944 of the text area. One of the above window elements (except `text')
|
|
4945 can also be used with :align-to to specify that the position is
|
|
4946 relative to the left edge of the given area. Once the base offset for
|
|
4947 a relative position has been set (by the first occurrence of one of
|
|
4948 these symbols), further occurrences of these symbols are interpreted as
|
|
4949 the width of the area.
|
|
4950
|
|
4951 For example, to align to the center of the left-margin, use
|
|
4952 :align-to (+ left-margin (0.5 . left-margin))
|
|
4953
|
|
4954 If no specific base offset is set for alignment, it is always relative
|
|
4955 to the left edge of the text area. For example, :align-to 0 in a
|
|
4956 header line aligns with the first text column in the text area.
|
|
4957
|
|
4958 The value of the form `(NUM . EXPR)' is the value of NUM multiplied by
|
|
4959 the value of the expression EXPR. For example, (2 . in) specifies a
|
|
4960 width of 2 inches, while (0.5 . IMAGE) specifies half the width (or
|
|
4961 height) of the specified image.
|
|
4962
|
|
4963 The form `(+ EXPR ...)' adds up the value of the expressions.
|
|
4964 The form `(- EXPR ...)' negates or subtracts the value of the expressions.
|
|
4965
|
|
4966 *** Normally, the cursor is displayed at the end of any overlay and
|
|
4967 text property string that may be present at the current window
|
|
4968 position. The cursor can now be placed on any character of such
|
|
4969 strings by giving that character a non-nil `cursor' text property.
|
|
4970
|
|
4971 *** The display space :width and :align-to text properties are now
|
|
4972 supported on text terminals.
|
|
4973
|
|
4974 *** Support for displaying image slices
|
|
4975
|
|
4976 **** New display property (slice X Y WIDTH HEIGHT) can be used with
|
|
4977 an image property to display only a specific slice of the image.
|
|
4978
|
|
4979 **** Function `insert-image' has new optional fourth arg to
|
|
4980 specify image slice (X Y WIDTH HEIGHT).
|
|
4981
|
|
4982 **** New function `insert-sliced-image' inserts a given image as a
|
|
4983 specified number of evenly sized slices (rows x columns).
|
|
4984
|
|
4985 *** Images can now have an associated image map via the :map property.
|
|
4986
|
|
4987 An image map is an alist where each element has the format (AREA ID PLIST).
|
|
4988 An AREA is specified as either a rectangle, a circle, or a polygon:
|
|
4989 A rectangle is a cons (rect . ((X0 . Y0) . (X1 . Y1))) specifying the
|
|
4990 pixel coordinates of the upper left and bottom right corners.
|
|
4991 A circle is a cons (circle . ((X0 . Y0) . R)) specifying the center
|
|
4992 and the radius of the circle; R can be a float or integer.
|
|
4993 A polygon is a cons (poly . [X0 Y0 X1 Y1 ...]) where each pair in the
|
|
4994 vector describes one corner in the polygon.
|
|
4995
|
|
4996 When the mouse pointer is above a hot-spot area of an image, the
|
|
4997 PLIST of that hot-spot is consulted; if it contains a `help-echo'
|
|
4998 property it defines a tool-tip for the hot-spot, and if it contains
|
|
4999 a `pointer' property, it defines the shape of the mouse cursor when
|
|
5000 it is over the hot-spot. See the variable `void-area-text-pointer'
|
|
5001 for possible pointer shapes.
|
|
5002
|
|
5003 When you click the mouse when the mouse pointer is over a hot-spot,
|
|
5004 an event is composed by combining the ID of the hot-spot with the
|
|
5005 mouse event, e.g. [area4 mouse-1] if the hot-spot's ID is `area4'.
|
|
5006
|
|
5007 *** The function `find-image' now searches in etc/images/ and etc/.
|
|
5008 The new variable `image-load-path' is a list of locations in which to
|
|
5009 search for image files. The default is to search in etc/images, then
|
|
5010 in etc/, and finally in the directories specified by `load-path'.
|
|
5011 Subdirectories of etc/ and etc/images are not recursively searched; if
|
|
5012 you put an image file in a subdirectory, you have to specify it
|
|
5013 explicitly; for example, if an image is put in etc/images/foo/bar.xpm:
|
|
5014
|
|
5015 (defimage foo-image '((:type xpm :file "foo/bar.xpm")))
|
|
5016
|
|
5017 Note that all images formerly located in the lisp directory have been
|
|
5018 moved to etc/images.
|
|
5019
|
|
5020 *** New function `image-load-path-for-library' returns a suitable
|
|
5021 search path for images relative to library. This function is useful in
|
|
5022 external packages to save users from having to update
|
|
5023 `image-load-path'.
|
|
5024
|
|
5025 *** The new variable `max-image-size' defines the maximum size of
|
|
5026 images that Emacs will load and display.
|
|
5027
|
|
5028 *** The new variable `display-mm-dimensions-alist' can be used to
|
|
5029 override incorrect graphical display dimensions returned by functions
|
|
5030 `display-mm-height' and `display-mm-width'.
|
|
5031
|
|
5032 ** Mouse pointer features:
|
|
5033
|
|
5034 *** The mouse pointer shape in void text areas (i.e. after the end of a
|
|
5035 line or below the last line in the buffer) of the text window is now
|
|
5036 controlled by the new variable `void-text-area-pointer'. The default
|
|
5037 is to use the `arrow' (non-text) pointer. Other choices are `text'
|
|
5038 (or nil), `hand', `vdrag', `hdrag', `modeline', and `hourglass'.
|
|
5039
|
|
5040 *** The mouse pointer shape over an image can now be controlled by the
|
|
5041 :pointer image property.
|
|
5042
|
|
5043 *** The mouse pointer shape over ordinary text or images can now be
|
|
5044 controlled/overridden via the `pointer' text property.
|
|
5045
|
|
5046 ** Mouse event enhancements:
|
|
5047
|
|
5048 *** All mouse events now include a buffer position regardless of where
|
|
5049 you clicked. For mouse clicks in window margins and fringes, this is
|
|
5050 a sensible buffer position corresponding to the surrounding text.
|
|
5051
|
|
5052 *** Mouse events for clicks on window fringes now specify `left-fringe'
|
|
5053 or `right-fringe' as the area.
|
|
5054
|
|
5055 *** Mouse events include actual glyph column and row for all event types
|
|
5056 and all areas.
|
|
5057
|
|
5058 *** Mouse events can now indicate an image object clicked on.
|
|
5059
|
|
5060 *** Mouse events include relative X and Y pixel coordinates relative to
|
|
5061 the top left corner of the object (image or character) clicked on.
|
|
5062
|
|
5063 *** Mouse events include the pixel width and height of the object
|
|
5064 (image or character) clicked on.
|
|
5065
|
|
5066 *** Function `mouse-set-point' now works for events outside text area.
|
|
5067
|
|
5068 *** `posn-point' now returns buffer position for non-text area events.
|
|
5069
|
|
5070 *** New function `posn-area' returns window area clicked on (nil means
|
|
5071 text area).
|
|
5072
|
|
5073 *** New function `posn-actual-col-row' returns the actual glyph coordinates
|
|
5074 of the mouse event position.
|
|
5075
|
|
5076 *** New functions 'posn-object', 'posn-object-x-y', 'posn-object-width-height'.
|
|
5077
|
|
5078 These return the image or string object of a mouse click, the X and Y
|
|
5079 pixel coordinates relative to the top left corner of that object, and
|
|
5080 the total width and height of that object.
|
|
5081
|
|
5082 ** Text property and overlay changes:
|
|
5083
|
|
5084 *** Arguments for `remove-overlays' are now optional, so that you can
|
|
5085 remove all overlays in the buffer with just (remove-overlays).
|
|
5086
|
|
5087 *** New variable `char-property-alias-alist'.
|
|
5088
|
|
5089 This variable allows you to create alternative names for text
|
|
5090 properties. It works at the same level as `default-text-properties',
|
|
5091 although it applies to overlays as well. This variable was introduced
|
|
5092 to implement the `font-lock-face' property.
|
|
5093
|
|
5094 *** New function `get-char-property-and-overlay' accepts the same
|
|
5095 arguments as `get-char-property' and returns a cons whose car is the
|
|
5096 return value of `get-char-property' called with those arguments and
|
|
5097 whose cdr is the overlay in which the property was found, or nil if
|
|
5098 it was found as a text property or not found at all.
|
|
5099
|
|
5100 *** The new function `remove-list-of-text-properties'.
|
|
5101
|
|
5102 It is like `remove-text-properties' except that it takes a list of
|
|
5103 property names as argument rather than a property list.
|
|
5104
|
|
5105 ** Face changes
|
|
5106
|
|
5107 *** The variable `facemenu-unlisted-faces' has been removed.
|
|
5108 Emacs has a lot more faces than in the past, and nearly all of them
|
|
5109 needed to be excluded. The new variable `facemenu-listed-faces' lists
|
|
5110 the faces to include in the face menu.
|
|
5111
|
|
5112 *** The new face attribute condition `min-colors' can be used to tailor
|
|
5113 the face color to the number of colors supported by a display, and
|
|
5114 define the foreground and background colors accordingly so that they
|
|
5115 look best on a terminal that supports at least this many colors. This
|
|
5116 is now the preferred method for defining default faces in a way that
|
|
5117 makes a good use of the capabilities of the display.
|
|
5118
|
|
5119 *** New function `display-supports-face-attributes-p' can be used to test
|
|
5120 whether a given set of face attributes is actually displayable.
|
|
5121
|
|
5122 A new predicate `supports' has also been added to the `defface' face
|
|
5123 specification language, which can be used to do this test for faces
|
|
5124 defined with `defface'.
|
|
5125
|
|
5126 *** The special treatment of faces whose names are of the form `fg:COLOR'
|
|
5127 or `bg:COLOR' has been removed. Lisp programs should use the
|
|
5128 `defface' facility for defining faces with specific colors, or use
|
|
5129 the feature of specifying the face attributes :foreground and :background
|
|
5130 directly in the `face' property instead of using a named face.
|
|
5131
|
|
5132 *** The first face specification element in a defface can specify
|
|
5133 `default' instead of frame classification. Then its attributes act as
|
|
5134 defaults that apply to all the subsequent cases (and can be overridden
|
|
5135 by them).
|
|
5136
|
|
5137 *** The function `face-differs-from-default-p' now truly checks
|
|
5138 whether the given face displays differently from the default face or
|
|
5139 not (previously it did only a very cursory check).
|
|
5140
|
|
5141 *** `face-attribute', `face-foreground', `face-background', `face-stipple'.
|
|
5142
|
|
5143 These now accept a new optional argument, INHERIT, which controls how
|
|
5144 face inheritance is used when determining the value of a face
|
|
5145 attribute.
|
|
5146
|
|
5147 *** New functions `face-attribute-relative-p' and `merge-face-attribute'
|
|
5148 help with handling relative face attributes.
|
|
5149
|
|
5150 *** The priority of faces in an :inherit attribute face list is reversed.
|
|
5151
|
|
5152 If a face contains an :inherit attribute with a list of faces, earlier
|
|
5153 faces in the list override later faces in the list; in previous
|
|
5154 releases of Emacs, the order was the opposite. This change was made
|
|
5155 so that :inherit face lists operate identically to face lists in text
|
|
5156 `face' properties.
|
|
5157
|
|
5158 *** The variable `face-font-rescale-alist' specifies how much larger
|
|
5159 (or smaller) font we should use. For instance, if the value is
|
|
5160 '((SOME-FONTNAME-PATTERN . 1.3)) and a face requests a font of 10
|
|
5161 point, we actually use a font of 13 point if the font matches
|
|
5162 SOME-FONTNAME-PATTERN.
|
|
5163
|
|
5164 *** On terminals, faces with the :inverse-video attribute are displayed
|
|
5165 with swapped foreground and background colors even when one of them is
|
|
5166 not specified. In previous releases of Emacs, if either foreground
|
|
5167 or background color was unspecified, colors were not swapped. This
|
|
5168 was inconsistent with the face behavior under X.
|
|
5169
|
|
5170 *** `set-fontset-font', `fontset-info', `fontset-font' now operate on
|
|
5171 the default fontset if the argument NAME is nil..
|
|
5172
|
|
5173 ** Font-Lock changes:
|
|
5174
|
|
5175 *** New special text property `font-lock-face'.
|
|
5176
|
|
5177 This property acts like the `face' property, but it is controlled by
|
|
5178 M-x font-lock-mode. It is not, strictly speaking, a builtin text
|
|
5179 property. Instead, it is implemented inside font-core.el, using the
|
|
5180 new variable `char-property-alias-alist'.
|
|
5181
|
|
5182 *** font-lock can manage arbitrary text-properties beside `face'.
|
|
5183
|
|
5184 **** the FACENAME returned in `font-lock-keywords' can be a list of the
|
|
5185 form (face FACE PROP1 VAL1 PROP2 VAL2 ...) so you can set other
|
|
5186 properties than `face'.
|
|
5187
|
|
5188 **** `font-lock-extra-managed-props' can be set to make sure those
|
|
5189 extra properties are automatically cleaned up by font-lock.
|
|
5190
|
|
5191 *** jit-lock obeys a new text-property `jit-lock-defer-multiline'.
|
|
5192
|
|
5193 If a piece of text with that property gets contextually refontified
|
|
5194 (see `jit-lock-defer-contextually'), then all of that text will
|
|
5195 be refontified. This is useful when the syntax of a textual element
|
|
5196 depends on text several lines further down (and when `font-lock-multiline'
|
|
5197 is not appropriate to solve that problem). For example in Perl:
|
|
5198
|
|
5199 s{
|
|
5200 foo
|
|
5201 }{
|
|
5202 bar
|
|
5203 }e
|
|
5204
|
|
5205 Adding/removing the last `e' changes the `bar' from being a piece of
|
|
5206 text to being a piece of code, so you'd put a `jit-lock-defer-multiline'
|
|
5207 property over the second half of the command to force (deferred)
|
|
5208 refontification of `bar' whenever the `e' is added/removed.
|
|
5209
|
|
5210 *** `font-lock-extend-region-functions' makes it possible to alter the way
|
|
5211 the fontification region is chosen. This can be used to prevent rounding
|
|
5212 up to whole lines, or to extend the region to include all related lines
|
|
5213 of multiline constructs so that such constructs get properly recognized.
|
|
5214
|
|
5215 ** Major mode mechanism changes:
|
|
5216
|
|
5217 *** New variable `magic-mode-alist' determines major mode for a file by
|
|
5218 looking at the file contents. It takes precedence over `auto-mode-alist'.
|
|
5219
|
|
5220 *** New variable `magic-fallback-mode-alist' determines major mode for a file by
|
|
5221 looking at the file contents. It is handled after `auto-mode-alist',
|
|
5222 only if `auto-mode-alist' (and `magic-mode-alist') says nothing about the file.
|
|
5223
|
|
5224 *** XML or SGML major mode is selected when file starts with an `<?xml'
|
|
5225 or `<!DOCTYPE' declaration.
|
|
5226
|
|
5227 *** An interpreter magic line (if present) takes precedence over the
|
|
5228 file name when setting the major mode.
|
|
5229
|
|
5230 *** If new variable `auto-mode-case-fold' is set to a non-nil value,
|
|
5231 Emacs will perform a second case-insensitive search through
|
|
5232 `auto-mode-alist' if the first case-sensitive search fails. This
|
|
5233 means that a file FILE.TXT is opened in text-mode, and a file
|
|
5234 PROG.HTML is opened in html-mode. Note however, that independent of
|
|
5235 this setting, *.C files are usually recognized as C++ files. It also
|
|
5236 has no effect on systems with case-insensitive file names.
|
|
5237
|
|
5238 *** All major mode functions should now run the new normal hook
|
|
5239 `after-change-major-mode-hook', at their very end, after the mode
|
|
5240 hooks. `run-mode-hooks' does this automatically.
|
|
5241
|
|
5242 *** Major modes can define `eldoc-documentation-function'
|
|
5243 locally to provide Eldoc functionality by some method appropriate to
|
|
5244 the language.
|
|
5245
|
|
5246 *** Use the new function `run-mode-hooks' to run the major mode's mode hook.
|
|
5247
|
|
5248 *** The new function `run-mode-hooks' and the new macro `delay-mode-hooks'
|
|
5249 are used by `define-derived-mode' to make sure the mode hook for the
|
|
5250 parent mode is run at the end of the child mode.
|
|
5251
|
|
5252 *** `define-derived-mode' by default creates a new empty abbrev table.
|
|
5253 It does not copy abbrevs from the parent mode's abbrev table.
|
|
5254
|
|
5255 *** If a major mode function has a non-nil `no-clone-indirect'
|
|
5256 property, `clone-indirect-buffer' signals an error if you use
|
|
5257 it in that buffer.
|
|
5258
|
|
5259 ** Minor mode changes:
|
|
5260
|
|
5261 *** `define-minor-mode' now accepts arbitrary additional keyword arguments
|
|
5262 and simply passes them to `defcustom', if applicable.
|
|
5263
|
|
5264 *** `define-globalized-minor-mode'.
|
|
5265
|
|
5266 This is a new name for what was formerly called
|
|
5267 `easy-mmode-define-global-mode'. The old name remains as an alias.
|
|
5268
|
|
5269 *** `minor-mode-list' now holds a list of minor mode commands.
|
|
5270
|
|
5271 ** Command loop changes:
|
|
5272
|
|
5273 *** The new function `called-interactively-p' does what many people
|
|
5274 have mistakenly believed `interactive-p' to do: it returns t if the
|
|
5275 calling function was called through `call-interactively'.
|
|
5276
|
|
5277 Only use this when you cannot solve the problem by adding a new
|
|
5278 INTERACTIVE argument to the command.
|
|
5279
|
|
5280 *** The function `commandp' takes an additional optional argument.
|
|
5281
|
|
5282 If it is non-nil, then `commandp' checks for a function that could be
|
|
5283 called with `call-interactively', and does not return t for keyboard
|
|
5284 macros.
|
|
5285
|
|
5286 *** When a command returns, the command loop moves point out from
|
|
5287 within invisible text, in the same way it moves out from within text
|
|
5288 covered by an image or composition property.
|
|
5289
|
|
5290 This makes it generally unnecessary to mark invisible text as intangible.
|
|
5291 This is particularly good because the intangible property often has
|
|
5292 unexpected side-effects since the property applies to everything
|
|
5293 (including `goto-char', ...) whereas this new code is only run after
|
|
5294 `post-command-hook' and thus does not care about intermediate states.
|
|
5295
|
|
5296 *** If a command sets `transient-mark-mode' to `only', that
|
|
5297 enables Transient Mark mode for the following command only.
|
|
5298 During that following command, the value of `transient-mark-mode'
|
|
5299 is `identity'. If it is still `identity' at the end of the command,
|
|
5300 the next return to the command loop changes to nil.
|
|
5301
|
|
5302 *** Both the variable and the function `disabled-command-hook' have
|
|
5303 been renamed to `disabled-command-function'. The variable
|
|
5304 `disabled-command-hook' has been kept as an obsolete alias.
|
|
5305
|
|
5306 *** `emacsserver' now runs `pre-command-hook' and `post-command-hook'
|
|
5307 when it receives a request from emacsclient.
|
|
5308
|
|
5309 *** `current-idle-time' reports how long Emacs has been idle.
|
|
5310
|
|
5311 ** Lisp file loading changes:
|
|
5312
|
|
5313 *** `load-history' can now have elements of the form (t . FUNNAME),
|
|
5314 which means FUNNAME was previously defined as an autoload (before the
|
|
5315 current file redefined it).
|
|
5316
|
|
5317 *** `load-history' now records (defun . FUNNAME) when a function is
|
|
5318 defined. For a variable, it records just the variable name.
|
|
5319
|
|
5320 *** The function `symbol-file' can now search specifically for function,
|
|
5321 variable or face definitions.
|
|
5322
|
|
5323 *** `provide' and `featurep' now accept an optional second argument
|
|
5324 to test/provide subfeatures. Also `provide' now checks `after-load-alist'
|
|
5325 and runs any code associated with the provided feature.
|
|
5326
|
|
5327 *** The variable `recursive-load-depth-limit' has been deleted.
|
|
5328 Emacs now signals an error if the same file is loaded with more
|
|
5329 than 3 levels of nesting.
|
|
5330
|
|
5331 ** Byte compiler changes:
|
|
5332
|
|
5333 *** The byte compiler now displays the actual line and character
|
|
5334 position of errors, where possible. Additionally, the form of its
|
|
5335 warning and error messages have been brought into line with GNU standards
|
|
5336 for these. As a result, you can use next-error and friends on the
|
|
5337 compilation output buffer.
|
|
5338
|
|
5339 *** The new macro `with-no-warnings' suppresses all compiler warnings
|
|
5340 inside its body. In terms of execution, it is equivalent to `progn'.
|
|
5341
|
|
5342 *** You can avoid warnings for possibly-undefined symbols with a
|
|
5343 simple convention that the compiler understands. (This is mostly
|
|
5344 useful in code meant to be portable to different Emacs versions.)
|
|
5345 Write forms like the following, or code that macroexpands into such
|
|
5346 forms:
|
|
5347
|
|
5348 (if (fboundp 'foo) <then> <else>)
|
|
5349 (if (boundp 'foo) <then> <else)
|
|
5350
|
|
5351 In the first case, using `foo' as a function inside the <then> form
|
|
5352 won't produce a warning if it's not defined as a function, and in the
|
|
5353 second case, using `foo' as a variable won't produce a warning if it's
|
|
5354 unbound. The test must be in exactly one of the above forms (after
|
|
5355 macro expansion), but such tests can be nested. Note that `when' and
|
|
5356 `unless' expand to `if', but `cond' doesn't.
|
|
5357
|
|
5358 *** `(featurep 'xemacs)' is treated by the compiler as nil. This
|
|
5359 helps to avoid noisy compiler warnings in code meant to run under both
|
|
5360 Emacs and XEmacs and can sometimes make the result significantly more
|
|
5361 efficient. Since byte code from recent versions of XEmacs won't
|
|
5362 generally run in Emacs and vice versa, this optimization doesn't lose
|
|
5363 you anything.
|
|
5364
|
|
5365 *** The local variable `no-byte-compile' in Lisp files is now obeyed.
|
|
5366
|
|
5367 *** When a Lisp file uses CL functions at run-time, compiling the file
|
|
5368 now issues warnings about these calls, unless the file performs
|
|
5369 (require 'cl) when loaded.
|
|
5370
|
|
5371 ** Frame operations:
|
|
5372
|
|
5373 *** New functions `frame-current-scroll-bars' and `window-current-scroll-bars'.
|
|
5374
|
|
5375 These functions return the current locations of the vertical and
|
|
5376 horizontal scroll bars in a frame or window.
|
|
5377
|
|
5378 *** The new function `modify-all-frames-parameters' modifies parameters
|
|
5379 for all (existing and future) frames.
|
|
5380
|
|
5381 *** The new frame parameter `tty-color-mode' specifies the mode to use
|
|
5382 for color support on character terminal frames. Its value can be a
|
|
5383 number of colors to support, or a symbol. See the Emacs Lisp
|
|
5384 Reference manual for more detailed documentation.
|
|
5385
|
|
5386 *** When using non-toolkit scroll bars with the default width,
|
|
5387 the `scroll-bar-width' frame parameter value is nil.
|
|
5388
|
|
5389 ** Mode line changes:
|
|
5390
|
|
5391 *** New function `format-mode-line'.
|
|
5392
|
|
5393 This returns the mode line or header line of the selected (or a
|
|
5394 specified) window as a string with or without text properties.
|
|
5395
|
|
5396 *** The new mode-line construct `(:propertize ELT PROPS...)' can be
|
|
5397 used to add text properties to mode-line elements.
|
|
5398
|
|
5399 *** The new `%i' and `%I' constructs for `mode-line-format' can be used
|
|
5400 to display the size of the accessible part of the buffer on the mode
|
|
5401 line.
|
|
5402
|
|
5403 *** Mouse-face on mode-line (and header-line) is now supported.
|
|
5404
|
|
5405 ** Menu manipulation changes:
|
|
5406
|
|
5407 *** To manipulate the File menu using easy-menu, you must specify the
|
|
5408 proper name "file". In previous Emacs versions, you had to specify
|
|
5409 "files", even though the menu item itself was changed to say "File"
|
|
5410 several versions ago.
|
|
5411
|
|
5412 *** The dummy function keys made by easy-menu are now always lower case.
|
|
5413 If you specify the menu item name "Ada", for instance, it uses `ada'
|
|
5414 as the "key" bound by that key binding.
|
|
5415
|
|
5416 This is relevant only if Lisp code looks for the bindings that were
|
|
5417 made with easy-menu.
|
|
5418
|
|
5419 *** `easy-menu-define' now allows you to use nil for the symbol name
|
|
5420 if you don't need to give the menu a name. If you install the menu
|
|
5421 into other keymaps right away (MAPS is non-nil), it usually doesn't
|
|
5422 need to have a name.
|
|
5423
|
|
5424 ** Mule changes:
|
|
5425
|
|
5426 *** Already true in Emacs 21.1, but not emphasized clearly enough:
|
|
5427
|
|
5428 Multibyte buffers can now faithfully record all 256 character codes
|
|
5429 from 0 to 255. As a result, most of the past reasons to use unibyte
|
|
5430 buffers no longer exist. We only know of three reasons to use them
|
|
5431 now:
|
|
5432
|
|
5433 1. If you prefer to use unibyte text all of the time.
|
|
5434
|
|
5435 2. For reading files into temporary buffers, when you want to avoid
|
|
5436 the time it takes to convert the format.
|
|
5437
|
|
5438 3. For binary files where format conversion would be pointless and
|
|
5439 wasteful.
|
|
5440
|
|
5441 *** The new variable `auto-coding-functions' lets you specify functions
|
|
5442 to examine a file being visited and deduce the proper coding system
|
|
5443 for it. (If the coding system is detected incorrectly for a specific
|
|
5444 file, you can put a `coding:' tags to override it.)
|
|
5445
|
|
5446 *** The new variable `ascii-case-table' stores the case table for the
|
|
5447 ascii character set. Language environments (such as Turkish) may
|
|
5448 alter the case correspondences of ASCII characters. This variable
|
|
5449 saves the original ASCII case table before any such changes.
|
|
5450
|
|
5451 *** The new function `merge-coding-systems' fills in unspecified aspects
|
|
5452 of one coding system from another coding system.
|
|
5453
|
|
5454 *** New coding system property `mime-text-unsuitable' indicates that
|
|
5455 the coding system's `mime-charset' is not suitable for MIME text
|
|
5456 parts, e.g. utf-16.
|
|
5457
|
|
5458 *** New function `decode-coding-inserted-region' decodes a region as if
|
|
5459 it is read from a file without decoding.
|
|
5460
|
|
5461 *** New CCL functions `lookup-character' and `lookup-integer' access
|
|
5462 hash tables defined by the Lisp function `define-translation-hash-table'.
|
|
5463
|
|
5464 *** New function `quail-find-key' returns a list of keys to type in the
|
|
5465 current input method to input a character.
|
|
5466
|
|
5467 *** `set-buffer-file-coding-system' now takes an additional argument,
|
|
5468 NOMODIFY. If it is non-nil, it means don't mark the buffer modified.
|
|
5469
|
|
5470 ** Operating system access:
|
|
5471
|
|
5472 *** The new primitive `get-internal-run-time' returns the processor
|
|
5473 run time used by Emacs since start-up.
|
|
5474
|
|
5475 *** Functions `user-uid' and `user-real-uid' now return floats if the
|
|
5476 user UID doesn't fit in a Lisp integer. Function `user-full-name'
|
|
5477 accepts a float as UID parameter.
|
|
5478
|
|
5479 *** New function `locale-info' accesses locale information.
|
|
5480
|
|
5481 *** On MS Windows, locale-coding-system is used to interact with the OS.
|
|
5482 The Windows specific variable w32-system-coding-system, which was
|
|
5483 formerly used for that purpose is now an alias for locale-coding-system.
|
|
5484
|
|
5485 *** New function `redirect-debugging-output' can be used to redirect
|
|
5486 debugging output on the stderr file handle to a file.
|
|
5487
|
|
5488 ** GC changes:
|
|
5489
|
|
5490 *** New variable `gc-cons-percentage' automatically grows the GC cons threshold
|
|
5491 as the heap size increases.
|
|
5492
|
|
5493 *** New variables `gc-elapsed' and `gcs-done' provide extra information
|
|
5494 on garbage collection.
|
|
5495
|
|
5496 *** The normal hook `post-gc-hook' is run at the end of garbage collection.
|
|
5497
|
|
5498 The hook is run with GC inhibited, so use it with care.
|
|
5499
|
|
5500 ** Miscellaneous:
|
|
5501
|
|
5502 *** A number of hooks have been renamed to better follow the conventions:
|
|
5503
|
|
5504 `find-file-hooks' to `find-file-hook',
|
|
5505 `find-file-not-found-hooks' to `find-file-not-found-functions',
|
|
5506 `write-file-hooks' to `write-file-functions',
|
|
5507 `write-contents-hooks' to `write-contents-functions',
|
|
5508 `x-lost-selection-hooks' to `x-lost-selection-functions',
|
|
5509 `x-sent-selection-hooks' to `x-sent-selection-functions',
|
|
5510 `delete-frame-hook' to `delete-frame-functions'.
|
|
5511
|
|
5512 In each case the old name remains as an alias for the moment.
|
|
5513
|
|
5514 *** Variable `local-write-file-hooks' is marked obsolete.
|
|
5515
|
|
5516 Use the LOCAL arg of `add-hook'.
|
|
5517
|
|
5518 *** New function `x-send-client-message' sends a client message when
|
|
5519 running under X.
|
|
5520
|
|
5521 * New Packages for Lisp Programming in Emacs 22.1
|
|
5522
|
|
5523 ** The new library button.el implements simple and fast `clickable
|
|
5524 buttons' in Emacs buffers. Buttons are much lighter-weight than the
|
|
5525 `widgets' implemented by widget.el, and can be used by lisp code that
|
|
5526 doesn't require the full power of widgets. Emacs uses buttons for
|
|
5527 such things as help and apropos buffers.
|
|
5528
|
|
5529 ** The new library tree-widget.el provides a widget to display a set
|
|
5530 of hierarchical data as an outline. For example, the tree-widget is
|
|
5531 well suited to display a hierarchy of directories and files.
|
|
5532
|
|
5533 ** The new library bindat.el provides functions to unpack and pack
|
|
5534 binary data structures, such as network packets, to and from Lisp
|
|
5535 data structures.
|
|
5536
|
|
5537 ** master-mode.el implements a minor mode for scrolling a slave
|
|
5538 buffer without leaving your current buffer, the master buffer.
|
|
5539
|
|
5540 It can be used by sql.el, for example: the SQL buffer is the master
|
|
5541 and its SQLi buffer is the slave. This allows you to scroll the SQLi
|
|
5542 buffer containing the output from the SQL buffer containing the
|
|
5543 commands.
|
|
5544
|
|
5545 This is how to use sql.el and master.el together: the variable
|
|
5546 sql-buffer contains the slave buffer. It is a local variable in the
|
|
5547 SQL buffer.
|
|
5548
|
|
5549 (add-hook 'sql-mode-hook
|
|
5550 (function (lambda ()
|
|
5551 (master-mode t)
|
|
5552 (master-set-slave sql-buffer))))
|
|
5553 (add-hook 'sql-set-sqli-hook
|
|
5554 (function (lambda ()
|
|
5555 (master-set-slave sql-buffer))))
|
|
5556
|
|
5557 ** The new library benchmark.el does timing measurements on Lisp code.
|
|
5558
|
|
5559 This includes measuring garbage collection time.
|
|
5560
|
|
5561 ** The new library testcover.el does test coverage checking.
|
|
5562
|
|
5563 This is so you can tell whether you've tested all paths in your Lisp
|
|
5564 code. It works with edebug.
|
|
5565
|
|
5566 The function `testcover-start' instruments all functions in a given
|
|
5567 file. Then test your code. The function `testcover-mark-all' adds
|
|
5568 overlay "splotches" to the Lisp file's buffer to show where coverage
|
|
5569 is lacking. The command `testcover-next-mark' (bind it to a key!)
|
|
5570 will move point forward to the next spot that has a splotch.
|
|
5571
|
|
5572 Normally, a red splotch indicates the form was never completely
|
|
5573 evaluated; a brown splotch means it always evaluated to the same
|
|
5574 value. The red splotches are skipped for forms that can't possibly
|
|
5575 complete their evaluation, such as `error'. The brown splotches are
|
|
5576 skipped for forms that are expected to always evaluate to the same
|
|
5577 value, such as (setq x 14).
|
|
5578
|
|
5579 For difficult cases, you can add do-nothing macros to your code to
|
|
5580 help out the test coverage tool. The macro `noreturn' suppresses a
|
|
5581 red splotch. It is an error if the argument to `noreturn' does
|
|
5582 return. The macro `1value' suppresses a brown splotch for its argument.
|
|
5583 This macro is a no-op except during test-coverage -- then it signals
|
|
5584 an error if the argument actually returns differing values.
|
|
5585
|
|
5586
|
|
5587
|
|
5588 ----------------------------------------------------------------------
|
|
5589 This file is part of GNU Emacs.
|
|
5590
|
95004
|
5591 GNU Emacs is free software: you can redistribute it and/or modify
|
81024
|
5592 it under the terms of the GNU General Public License as published by
|
95004
|
5593 the Free Software Foundation, either version 3 of the License, or
|
|
5594 (at your option) any later version.
|
81024
|
5595
|
|
5596 GNU Emacs is distributed in the hope that it will be useful,
|
|
5597 but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
5598 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
5599 GNU General Public License for more details.
|
|
5600
|
|
5601 You should have received a copy of the GNU General Public License
|
95004
|
5602 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
|
81024
|
5603
|
|
5604
|
|
5605 Local variables:
|
|
5606 mode: outline
|
|
5607 paragraph-separate: "[ ]*$"
|
|
5608 end:
|
|
5609
|
|
5610 arch-tag: 1aca9dfa-2ac4-4d14-bebf-0007cee12793
|