| 1 | GNU Emacs NEWS -- history of user-visible changes. |
| 2 | |
| 3 | Copyright (C) 2007, 2008 Free Software Foundation, Inc. |
| 4 | See the end of the file for license conditions. |
| 5 | |
| 6 | Please send Emacs bug reports to emacs-pretest-bug@gnu.org. |
| 7 | If possible, use M-x report-emacs-bug. |
| 8 | |
| 9 | This file is about changes in Emacs version 23. |
| 10 | |
| 11 | See files NEWS.22, NEWS.21, NEWS.20, NEWS.19, NEWS.18, and NEWS.1-17 |
| 12 | for changes in older Emacs versions. |
| 13 | |
| 14 | You can narrow news to a specific version by calling `view-emacs-news' |
| 15 | with a prefix argument or by typing C-u C-h C-n. |
| 16 | |
| 17 | Temporary note: |
| 18 | +++ indicates that the appropriate manual has already been updated. |
| 19 | --- means no change in the manuals is called for. |
| 20 | When you add a new item, please add it without either +++ or --- |
| 21 | so we will look at it and add it to the manual. |
| 22 | |
| 23 | \f |
| 24 | * About external Lisp packages |
| 25 | |
| 26 | \f |
| 27 | * Installation Changes in Emacs 23.1 |
| 28 | |
| 29 | ** The default X toolkit is now Gtk+, rather than Lucid. |
| 30 | |
| 31 | ** Fonts are handled by new code capable of dealing with multiple font |
| 32 | backends. This requires the freetype and fontconfig libraries, and |
| 33 | supports local fonts (fonts installed on the machine where Emacs is |
| 34 | running). Additionally, the Xft library can be used for antialiasing |
| 35 | support, the otf library for complex text layout by OpenType fonts, |
| 36 | and the m17n library for text shaping. Fontconfig-like font names |
| 37 | (e.g. monospace-12) are accepted. The old font handling code can |
| 38 | be used by passing the configure option `--disable-font-backend' |
| 39 | (also available as a run-time option). |
| 40 | |
| 41 | ** The new configuration option "--with-dbus" enables D-Bus language |
| 42 | bindings for Emacs. |
| 43 | |
| 44 | ** The Mac Carbon port is no longer supported. |
| 45 | Instead, use... [FIXME what?] |
| 46 | |
| 47 | ** configure now checks for libgif before libungif when searching for |
| 48 | a GIF library. |
| 49 | |
| 50 | ** Support for systems without alloca has been removed. |
| 51 | |
| 52 | ** Support for Sun windows has been removed. |
| 53 | |
| 54 | ** Support for many obsolete platforms has been removed. |
| 55 | See the list at the end of etc/MACHINES for details. |
| 56 | |
| 57 | ** The `emacstool' utility has been removed. |
| 58 | |
| 59 | ** The configure options `--with-gcc', `--without-gcc' have been removed. |
| 60 | Configure will use gcc by default. Set the CC environment variable if |
| 61 | you need control over which C compiler is used. |
| 62 | |
| 63 | ** The configure option `--with-gtk' has been removed. Gtk is now the |
| 64 | default toolkit, but you can use --with-x-toolkit=gtk if necessary. |
| 65 | \f |
| 66 | * Changes in Emacs 23.1 |
| 67 | |
| 68 | ** Completion. |
| 69 | *** `completion-style' can be customized to choose your favorite completion. |
| 70 | *** `completion-auto-help' can be set to `lazy' to list the completions only |
| 71 | if you repeat the completion. This was already supported in |
| 72 | `partial-completion-mode'. |
| 73 | |
| 74 | ** Emacs now supports using both X displays and ttys in one session. |
| 75 | Start the server (M-x server-start). Then `emacsclient -t' creates a |
| 76 | tty frame connected to the running emacs server. You can also use any |
| 77 | number of different ttys. `emacsclient -c' creates a new X11 frame on |
| 78 | the current $DISPLAY or a tty frame if $DISPLAY is not set. |
| 79 | |
| 80 | You can test for the presence of this feature in your Lisp code by |
| 81 | testing for the `multi-tty' feature. |
| 82 | |
| 83 | ** The Emacs character set is now a superset of Unicode. |
| 84 | (It has about four times the code space, which should be plenty). |
| 85 | |
| 86 | The internal encoding used for buffers and strings is now |
| 87 | Unicode-based and called `utf-8-emacs'. utf-8-emacs is backwards |
| 88 | compatible with the UTF-8 encoding of Unicode. The `emacs-mule' |
| 89 | coding system can still read and write data in the old internal encoding. |
| 90 | |
| 91 | Since the internal encoding is also used by default for byte-compiled |
| 92 | files -- i.e. the normal coding system for byte-compiled Lisp files is |
| 93 | now utf-8-Emacs -- Lisp containing non-ASCII characters which is |
| 94 | compiled by Emacs 23 can't be read by earlier versions of Emacs. Files |
| 95 | compiled by Emacs 20, 21, or 22 are loaded correctly as emacs-mule |
| 96 | (whether or not they contain multibyte characters), which makes loading |
| 97 | them somewhat slower than Emacs 23-compiled files. Thus it may be worth |
| 98 | recompiling existing .elc files which don't need to be shared with older |
| 99 | Emacsen. |
| 100 | |
| 101 | ** There are assorted new coding systems/aliases -- see M-x list-coding-systems. |
| 102 | |
| 103 | ** There is a new charset implementation with many new charsets. |
| 104 | See M-x list-character-sets. New charsets can be defined conveniently |
| 105 | as tables of unicodes. |
| 106 | |
| 107 | The dimension of a charset is now 1, 2, 3, or 4, and the size of each |
| 108 | dimension is no longer limited to 94 or 96. |
| 109 | |
| 110 | A dynamic charset priority list is used to infer the charset of |
| 111 | characters for display. |
| 112 | |
| 113 | ** There are new Chinese-GBK, Chinese-GB18030, Khmer, Bengali, |
| 114 | Punjabi, Gujarati, Oriya, Telugu, Sinhala, and TaiViet language |
| 115 | environments. |
| 116 | |
| 117 | ** Emacs now supports the XEmbed specification. |
| 118 | You can embed Emacs in another application on X11. The new command line option |
| 119 | --parent-id is used to pass the parent window id to Emacs. See |
| 120 | http://standards.freedesktop.org/xembed-spec/xembed-spec-latest.html |
| 121 | for details about XEmbed. |
| 122 | |
| 123 | ** Emacs comes with a new set of default icons. |
| 124 | Various resolutions are available as etc/images/icons/hicolor/*/apps/emacs.png. |
| 125 | The Emacs 22 icon is available as `emacs22.png' in the same location. |
| 126 | |
| 127 | ** Built-in functions (subr) can now have an interactive specification |
| 128 | that is not a prompt string. If the `intspec' parameter of a `DEFUN' |
| 129 | starts with a `(', the string is evaluated as a Lisp form. |
| 130 | |
| 131 | ** set-file-modes is now interactive and can take the mode value in |
| 132 | symbolic notation thanks to auxiliary functions. |
| 133 | |
| 134 | ** split-window-preferred-function specifies whether display-buffer should |
| 135 | split windows vertically or horizontally. |
| 136 | |
| 137 | ** Emacsclient has been extended to support opening a new terminal |
| 138 | frame. Its behavior has been changed to open a new Emacs frame by |
| 139 | default. Use the -c option to get the old behavior of opening files in |
| 140 | the currently selected Emacs frame. |
| 141 | |
| 142 | ** The refcards are now shipped as PDF files. |
| 143 | |
| 144 | ** Emacs now supports the SVG image format through librsvg2. |
| 145 | |
| 146 | ** If you set find-file-confirm-nonexistent-file to t, then C-x C-f |
| 147 | requires confirmation before opening a non-existent file. |
| 148 | |
| 149 | ** If the gpm mouse server is running and t-mouse-mode enabled, Emacs uses a |
| 150 | Unix socket in a GNU/Linux console to talk to server, rather than faking events |
| 151 | using the client program mev. This C level approach provides mouse |
| 152 | highlighting, and help echoing in the minibuffer. |
| 153 | |
| 154 | ** Recentering changes |
| 155 | |
| 156 | *** The new variable next-error-recenter specifies how next-error should |
| 157 | recenter the visited source file. Its value can be a number (for example, |
| 158 | 0 for top line, -1 for bottom line), or nil for no recentering. |
| 159 | |
| 160 | *** New command recenter-top-bottom moves the current line to window |
| 161 | center, top and bottom on successive invokations. |
| 162 | |
| 163 | *** C-l is bound to the new command recenter-top-bottom, rather than recenter. |
| 164 | |
| 165 | ** The mode-line displays a `@' if the default-directory for the current buffer |
| 166 | is on a remote machine, or a hyphen otherwise. |
| 167 | |
| 168 | ** The mode-line displays a mode menu when mouse-1 is clicked on a minor mode, |
| 169 | in the same way as it already did for major modes. |
| 170 | |
| 171 | ** The new command balance-windows-area balances windows both vertically |
| 172 | and horizontally. |
| 173 | |
| 174 | ** The new command close-display-connection can be used to close a connection |
| 175 | to a remote display, e.g. because the display is about to become unreachable. |
| 176 | |
| 177 | ** The command shell prompts for the default directory, when it is |
| 178 | called with a prefix, and the default directory is a remote file name. |
| 179 | This is because some file name handlers (like ange-ftp) are not able to |
| 180 | run processes remotely. |
| 181 | |
| 182 | ** The new command `display-time-world' starts an updating time display |
| 183 | using several time zones, in a buffer. |
| 184 | |
| 185 | ** The new function `format-seconds' converts a number of seconds into a |
| 186 | readable string of days, hours, etc. |
| 187 | |
| 188 | ** The new variables `before-init-time' and `after-init-time' record the |
| 189 | value of `current-time' before and after Emacs loads the init files. |
| 190 | |
| 191 | ** The new function `emacs-uptime' returns the uptime of an Emacs instance. |
| 192 | |
| 193 | ** The new function `emacs-init-time' returns the duration of the |
| 194 | Emacs initialization. |
| 195 | |
| 196 | ** The minor modes unify-8859-on-encoding-mode, unify-8859-on-decoding-mode |
| 197 | are obsolete. |
| 198 | |
| 199 | ** The new commands `pp-macroexpand-expression' and `pp-macroexpand-last-sexp' |
| 200 | pretty-print macro expansions. |
| 201 | |
| 202 | \f |
| 203 | * Startup Changes in Emacs 23.1 |
| 204 | |
| 205 | ** The option `inhibit-startup-screen' (with aliases to old names |
| 206 | `inhibit-splash-screen' and `inhibit-startup-message') doesn't inhibit |
| 207 | display of the initial message in the *scratch* buffer. If you don't |
| 208 | want to display the initial message in the *scratch* buffer at startup, |
| 209 | you can set the option `initial-scratch-message' to nil. |
| 210 | |
| 211 | ** New user option `initial-buffer-choice' specifies what to display |
| 212 | after starting Emacs: startup screen, *scratch* buffer, visiting a |
| 213 | file or directory. |
| 214 | |
| 215 | ** New alias `argv' for `command-line-args-left' |
| 216 | This is a convenience alias, so that one can write `(pop argv)' |
| 217 | inside of --eval command line arguments in order to access |
| 218 | following arguments. |
| 219 | |
| 220 | ** The new command-line option `--disable-font-backend' disables the |
| 221 | new font backend code at runtime. This option is not available if |
| 222 | Emacs was compiled without font-backend support. |
| 223 | |
| 224 | ** The abbrev file is no longer read at startup in batch mode. |
| 225 | \f |
| 226 | * Incompatible Editing Changes in Emacs 23.1 |
| 227 | |
| 228 | +++ |
| 229 | ** In Dired-x, all command guesses for ! are now added to the default |
| 230 | list accessible by M-n instead of pushing all guesses temporarily into |
| 231 | the history list. |
| 232 | |
| 233 | \f |
| 234 | * Editing Changes in Emacs 23.1 |
| 235 | |
| 236 | ** Mark changes |
| 237 | |
| 238 | +++ |
| 239 | *** Transient Mark mode is now on by default. |
| 240 | |
| 241 | +++ |
| 242 | *** mark-even-if-inactive now defaults to t |
| 243 | |
| 244 | +++ |
| 245 | *** When Transient Mark mode is on, C-SPC C-SPC pushes a mark without activating it. |
| 246 | |
| 247 | +++ |
| 248 | *** When Transient Mark mode is on, M-q now fills the region if the |
| 249 | region is active. Otherwise, it fills the current paragraph. |
| 250 | |
| 251 | +++ |
| 252 | *** When Transient Mark mode is on, M-$ now checks spelling of the |
| 253 | region if the region is active. Otherwise, it checks spelling of the |
| 254 | word at point. |
| 255 | |
| 256 | *** When Transient Mark mode is on, TAB now indents the region if the |
| 257 | region is active. |
| 258 | |
| 259 | *** `use-empty-active-region' controls whether an empty active region |
| 260 | in Transient Mark mode should make commands operate on that empty |
| 261 | region. |
| 262 | |
| 263 | ** Temporarily active regions |
| 264 | |
| 265 | *** The new variable shift-select-mode, non-nil by default, controls |
| 266 | shift-selection. When Shift Select mode is on, shift-translated |
| 267 | motion keys (e.g. S-left and S-down) activate and extend a temporary |
| 268 | region, similar to mouse-selection. |
| 269 | |
| 270 | *** Temporarily active regions, created using shift-selection or |
| 271 | mouse-selection, are not necessarily deactivated in the next command. |
| 272 | They are only deactivated after point motion commands that are not |
| 273 | shift-translated, or after commands that would ordinarily deactivate |
| 274 | the mark in Transient Mark mode (e.g., any command that modifies the |
| 275 | buffer). |
| 276 | |
| 277 | +++ |
| 278 | ** C-M-% now shows replacement as it would look in the buffer, with |
| 279 | `\N' and `\&' substituted according to the match. Old behavior can be |
| 280 | restored by customizing `query-replace-show-replacement'. |
| 281 | |
| 282 | ** C-z now invokes `suspend-frame', C-x C-c now invokes |
| 283 | `save-buffers-kill-terminal'. |
| 284 | |
| 285 | ** New command kill-matching-buffers kills buffers whose name matches a regexp. |
| 286 | |
| 287 | ** You can disable kill ring commands from accessing the primary selection |
| 288 | by setting `x-select-enable-primary' to nil. |
| 289 | |
| 290 | ** If `select-active-regions' is t, setting the mark automatically |
| 291 | makes the new region into the primary selection (for interaction with |
| 292 | other window applications). If you enable this, you might want to bind |
| 293 | `mouse-yank-primary' to Mouse-2. |
| 294 | |
| 295 | ** If `yank-pop-change-selection' is t, rotating the kill ring |
| 296 | also updates the selection or clipboard to the current yank, |
| 297 | just as M-w would do so with the text it copies to the kill ring. |
| 298 | |
| 299 | ** Minibuffer changes |
| 300 | |
| 301 | *** Minibuffer input of shell commands now comes with completion. |
| 302 | |
| 303 | *** Operations like C-x b and C-x C-f which use switch-to-buffer do not fail |
| 304 | any more when used in a minibuffer or a dedicated window. Instead, they |
| 305 | fallback on using pop-to-buffer which will use some other window. |
| 306 | |
| 307 | *** When M-n in the minibuffer reaches the end of the list of defaults, |
| 308 | it adds the completion list to the end, so next M-n continues putting |
| 309 | completion items to the minibuffer. The same principle applies to |
| 310 | incremental search commands as well: C-s or C-M-s starts searching |
| 311 | the default values and after the end of defaults they continue |
| 312 | searching minibuffer completion items. |
| 313 | |
| 314 | *** In C-x d, if you type M-n you get the visited file name of the |
| 315 | current buffer. |
| 316 | |
| 317 | *** A list of default commands extracted from mailcap according to |
| 318 | file extensions are available in the list of default values |
| 319 | accessible by M-n in the minibuffer that reads a shell command |
| 320 | for M-! (shell-command) and fills a list of commands for the current |
| 321 | file, and in Dired for ! (dired-do-shell-command) that fills a list of |
| 322 | commands for the intersection of file types of marked Dired files. |
| 323 | |
| 324 | *** A list of regexp default values is available via M-n for `occur', |
| 325 | `keep-lines', `flush-lines' and `how-many'. This list includes the active |
| 326 | region in transient-mark-mode, the word under the cursor, the last isearch |
| 327 | regexp, the last isearch string and the last replacement regexp. |
| 328 | |
| 329 | *** isearch started in the minibuffer searches in the minibuffer history. |
| 330 | Reverse isearch commands (C-r, C-M-r) search in previous minibuffer |
| 331 | history elements, and forward isearch commands (C-s, C-M-s) search in |
| 332 | next history elements. When the reverse search reaches the first history |
| 333 | element, it wraps to the last history element, and the forward search |
| 334 | wraps to the first history element. When the search is terminated, the |
| 335 | history element containing the search string becomes the current. |
| 336 | |
| 337 | ** New faces |
| 338 | |
| 339 | *** `mode-line-emphasis' is used to highlight certain mode-line information; |
| 340 | for example while waiting for a VC command to finish. |
| 341 | |
| 342 | ** Face changes |
| 343 | |
| 344 | *** The new function `face-all-attributes' returns an alist describing |
| 345 | all the basic attributes of a given face. |
| 346 | |
| 347 | \f |
| 348 | * New Modes and Packages in Emacs 23.1 |
| 349 | |
| 350 | ** FIXME add details of new packages imported from lisp/gnus. |
| 351 | [Maybe some information from doc/misc/gnus-coding.texi can be reused] |
| 352 | |
| 353 | ** The package doc-view.el has been added. It supports viewing of PDF, |
| 354 | PostScript and DVI documents inside an Emacs buffer by converting the |
| 355 | document to a set of PNG images first. One can also search for a |
| 356 | regular expression in the document. The commentary of the file explains |
| 357 | its usage. |
| 358 | |
| 359 | ** The nXML package has been added. It is a new mode for editing XML |
| 360 | documents. nXML mode allows a schema to be associated with the XML |
| 361 | document being edited. nXML mode uses Relax NG as its schema |
| 362 | language. The schema is used to provide two key features: |
| 363 | |
| 364 | *** Continuous validation. nXML validates as you type, highlighting |
| 365 | any invalid parts of your document. |
| 366 | |
| 367 | *** Completion. nXML can assist you in entering an element name, |
| 368 | attribute name or data value by using information about what is |
| 369 | allowed by the schema in that context. |
| 370 | |
| 371 | ** A new game called `bubbles' has been added. This is a version of |
| 372 | the "Same Game" with configurable difficulty level. |
| 373 | |
| 374 | ** minibuffer-indicate-depth-mode shows the minibuffer depth in the prompt. |
| 375 | |
| 376 | ** Remember Mode (remember.el) is now included with Emacs. It is a |
| 377 | mode for quickly jotting down things to remember. Included with |
| 378 | remember.el is a backend that can save notes to a Diary file. Please |
| 379 | consult the Remember Manual for usage details. |
| 380 | |
| 381 | ** D-Bus language bindings for Elisp are provided by the package |
| 382 | dbus.el and by extensions to the C modules of Emacs. D-Bus is an |
| 383 | inter-process communication mechanism for applications residing on the |
| 384 | same host, based on messages. See the manual for further details. |
| 385 | |
| 386 | ** zeroconf.el offers service discovery and service publishing |
| 387 | interfaces according to the zeroconf specification. It communicates |
| 388 | with Avahi, a zeroconf implementation, via D-Bus messages on systems |
| 389 | which have installed this software. |
| 390 | |
| 391 | ** EasyPG is now part of the Emacs distribution. It is an all-in-one |
| 392 | GnuPG interface which includes GnuPG keyring browser, cryptographic |
| 393 | operations on regions and files, and automatic encryption of *.gpg |
| 394 | files. See the EasyPG Assistant User's Manual for further details. |
| 395 | |
| 396 | ** json.el is now included with Emacs. It is a library for parsing |
| 397 | and generating JSON (JavaScript Object Notation). JSON is a |
| 398 | lightweight data-interchange format. |
| 399 | |
| 400 | ** Auto Composition Mode is a minor mode that composes characters |
| 401 | automatically when they are displayed. It is globally on by default. |
| 402 | It uses `auto-composition-function' (default `auto-compose-chars'). |
| 403 | |
| 404 | ** The package linum.el is now included with Emacs. It it a new minor |
| 405 | mode to display line numbers for the current buffer. |
| 406 | |
| 407 | ** proced.el has been added. It operates on processes like dired. |
| 408 | Proced makes an Emacs buffer containing a listing of the current processes |
| 409 | (using ps(1)). You can use the normal Emacs commands to move around in |
| 410 | this buffer, and special Proced commands to operate on the processes listed. |
| 411 | |
| 412 | ** bug-reference.el provides clickable links to bug reports. |
| 413 | |
| 414 | \f |
| 415 | * Changes in Specialized Modes and Packages in Emacs 23.1 |
| 416 | |
| 417 | ** A new `whitespace' package has been installed, and the pre-existing one |
| 418 | renamed to `old-whitespace'. |
| 419 | [FIXME someone explain why this is good, if it is...] |
| 420 | |
| 421 | ** In Change Log mode, the new function `change-log-find-file', bound to |
| 422 | C-c C-f, finds the file associated with the current log entry. |
| 423 | |
| 424 | ** abbrev was rewritten in Elisp and extended with more flexibility. |
| 425 | *** New functions: abbrev-get, abbrev-put, abbrev-table-get, abbrev-table-put, |
| 426 | abbrev-table-p, abbrev-insert, abbrev-table-menu. |
| 427 | *** Special hook `abbrev-expand-functions' obsoletes `pre-abbrev-expand-hook'. |
| 428 | *** `make-abbrev-table', `define-abbrev', `define-abbrev-table' all take |
| 429 | extra arguments for arbitrary properties. |
| 430 | *** New variable `abbrev-minor-mode-table-alist'. |
| 431 | *** `local-abbrev-table' can hold a list of abbrev-tables. |
| 432 | *** Abbrevs have now the following special properties: |
| 433 | `:count', `:system', `:enable-function', `:case-fixed'. |
| 434 | *** Abbrev-tables have now the following special properties: |
| 435 | `:parents', `:case-fixed', `:enable-function', `:regexp', |
| 436 | `abbrev-table-modiff'. |
| 437 | |
| 438 | ** Help mode |
| 439 | *** New macro `with-help-window' should set up help windows better |
| 440 | than `with-output-to-temp-buffer' with `print-help-return-message'. |
| 441 | *** New option `help-window-select' permits to customize whether help |
| 442 | window shall be automatically selected when invoking help. |
| 443 | *** New variable `help-window-point-marker' permits to specify new |
| 444 | position of point in help window (for example in `view-lossage'). |
| 445 | |
| 446 | ** view-remove-frame-by-deleting is now by default t |
| 447 | since users found iconification of view-mode frames distracting. |
| 448 | |
| 449 | ** Isearch mode |
| 450 | |
| 451 | *** New command `isearch-occur' bound to `M-s o' in isearch mode |
| 452 | runs `occur' with the current search string. |
| 453 | |
| 454 | *** isearch can now search through multiple ChangeLog files. |
| 455 | When running isearch in a ChangeLog file, if the search fails, |
| 456 | then another C-s tries searching the previous ChangeLog, |
| 457 | if there is one (e.g. go from ChangeLog to ChangeLog.12). |
| 458 | |
| 459 | This is enabled if isearch-buffers-multi is non-nil. |
| 460 | |
| 461 | *** The part of an isearch that failed to match is highlighted in `isearch-fail' |
| 462 | face. |
| 463 | |
| 464 | *** `C-h C-h' in isearch mode displays isearch-specific Help screen, |
| 465 | `C-h b' displays all isearch key bindings, `C-h k' displays the full |
| 466 | documentation of the given isearch key sequence, `C-h m' displays |
| 467 | documentation of isearch mode. All the rest Help commands exit isearch mode |
| 468 | and execute their global definitions. |
| 469 | |
| 470 | ** smerge-refine highlights word-level details of changes in conflict. |
| 471 | It's used automatically as you move through conflicts, see smerge-auto-refine. |
| 472 | |
| 473 | ** Diff mode |
| 474 | |
| 475 | *** diff-refine-hunk highlights word-level details of changes in a diff hunk. |
| 476 | It's used automatically as you move through hunks, see |
| 477 | diff-auto-refine. It is bound to `C-c C-b'. |
| 478 | |
| 479 | *** diff-add-change-log-entries-other-window iterates through the diff |
| 480 | buffer and tries to create ChangeLog entries for each change. |
| 481 | It is bound to `C-x 4 A'. |
| 482 | |
| 483 | ** archive-mode has basic support to browse Rar archives. |
| 484 | |
| 485 | ** talk.el has been extended for multiple tty support. |
| 486 | |
| 487 | ** Compile and grep modes |
| 488 | |
| 489 | *** The mode-line entry for the *compilation* and *grep* buffer is color coded. |
| 490 | It has different colors for to show that: (a) the command is still |
| 491 | running, (b) successful completion, (c) error. |
| 492 | |
| 493 | *** compilation-auto-jump-to-first-error tells `compile' to jump to |
| 494 | the first error encountered during compilations. |
| 495 | |
| 496 | ** In the `copyright' package, you can specify your copyright holders' names. |
| 497 | Only copyright lines with holders matching copyright-names-regexp will be |
| 498 | considered for update. |
| 499 | |
| 500 | ** The `copyright' package looks for copyright at the end of the buffer |
| 501 | if `copyright-at-end-flag' is non-nil (change-log-mode sets this). |
| 502 | |
| 503 | ** eldoc highlights the function argument under point |
| 504 | with the face `eldoc-highlight-function-argument'. |
| 505 | |
| 506 | ** hide-ifdef-mode permits to shadow ifdef-blocks instead of hiding them. |
| 507 | See option `hide-ifdef-shadow' and function `hide-ifdef-toggle-shadowing'. |
| 508 | |
| 509 | +++ |
| 510 | ** defcustom accepts new keyword arguments, `:safe' and `:risky', which |
| 511 | set a variable's `safe-local-variable' and `risky-local-variable' property. |
| 512 | |
| 513 | ** Etags changes |
| 514 | *** The --members option is now the default. |
| 515 | |
| 516 | Use --no-members if you want the old default behaviour of not tagging |
| 517 | struct members in C, members variables in C++ and variables in PHP. |
| 518 | |
| 519 | ** VC |
| 520 | |
| 521 | *** VC now supports applying VC operations to a set of files at a time. |
| 522 | This enables VC to work much more effectively with changeset-oriented |
| 523 | version-control systems such as Subversion, GNU Arch, Mercurial, Git |
| 524 | and Bzr. VC will now pass a multiple-file commit to these systems as |
| 525 | a single changeset. |
| 526 | |
| 527 | *** vc-dir is a new command that displays file names and their VC |
| 528 | status. It allows to apply various VC operations to apply a file or a |
| 529 | set of files. |
| 530 | |
| 531 | *** Clicking on the VC mode-line entry now pops the VC menu. |
| 532 | |
| 533 | *** The VC mode-line entry now has a tooltip that explains the VC file status. |
| 534 | |
| 535 | *** In VC Annotate mode, you can type V to toggle the annotation visibility. |
| 536 | |
| 537 | *** In VC Annotate mode, you can type f to show the file revision on |
| 538 | the current line. |
| 539 | |
| 540 | *** vc-git supports the "git grep" command. |
| 541 | |
| 542 | *** Asynchronous VC commands display [Waiting...] in the mode-line |
| 543 | of the corresponding buffer as long as the asynchronous process is |
| 544 | active. |
| 545 | |
| 546 | *** Log entries can be modified using the key "e" in log-view. |
| 547 | For now only CVS, RCS, SCCS and SVN support this functionality. |
| 548 | This is done by the `modify-change-comment' backend function. |
| 549 | |
| 550 | ** log-edit now has a command bound to C-c C-d to show the diff for |
| 551 | the files involved. |
| 552 | |
| 553 | ** sgml-electric-tag-pair-mode lets you simultaneously edit matched tag pairs. |
| 554 | |
| 555 | ** The appearance of superscript and subscript in TeX is more customizable. |
| 556 | See the documentation of the variables: tex-fontify-script, |
| 557 | tex-font-script-display, tex-suscript-height-ratio, and |
| 558 | tex-suscript-height-minimum. |
| 559 | |
| 560 | ** BibTeX mode |
| 561 | |
| 562 | *** New command `bibtex-initialize' (re)initializes BibTeX buffers. |
| 563 | |
| 564 | *** New `bibtex-entry-format' options `whitespace', `braces', and |
| 565 | `string', disabled by default. |
| 566 | |
| 567 | *** New variable `bibtex-cite-matcher-alist' contains rules to |
| 568 | identify cited keys in BibTeX entries, used by `bibtex-find-crossref'. |
| 569 | |
| 570 | *** Command `bibtex-url' allows multiple URLs per entry. |
| 571 | |
| 572 | +++ |
| 573 | ** Tramp |
| 574 | |
| 575 | *** New connection methods. |
| 576 | The new methods "plinkx", "plink2", "psftp", "sftp" and "fish" have |
| 577 | been introduced. There are also new so-called gateway methods |
| 578 | "tunnel" and "socks". |
| 579 | |
| 580 | *** Multihop syntax has been removed. |
| 581 | The pseudo-method "multi" has been removed. Instead of, multi hops |
| 582 | can be specified by the new variable `tramp-default-proxies-alist'. |
| 583 | |
| 584 | *** More default settings. |
| 585 | Default values can be set via the variables `tramp-default-user', |
| 586 | `tramp-default-user-alist' and `tramp-default-host'. |
| 587 | |
| 588 | *** Connection information is cached. |
| 589 | In order to reduce connection setup, information about used |
| 590 | connections are kept persistent in a file. The name of this file is |
| 591 | defined in the variable `tramp-persistency-file-name'. |
| 592 | |
| 593 | *** Control of remote processes. |
| 594 | Running processes on a remote host can be controlled by settings in |
| 595 | `tramp-remote-path' and `tramp-remote-process-environment'. |
| 596 | |
| 597 | *** Success of remote copy is checked. |
| 598 | When the variable `file-precious-flag' is set, the success of a remote |
| 599 | file copy is checked via the file's checksum. |
| 600 | |
| 601 | ** Calendar and diary |
| 602 | |
| 603 | +++ |
| 604 | *** There is a new date style, `iso', essentially year/month/day. |
| 605 | The variable `european-calendar-style' is obsolete - use `calendar-date-style'. |
| 606 | Similarly, the commands `american-calendar' and `european-calendar' |
| 607 | should be replaced by `calendar-set-date-style'. |
| 608 | |
| 609 | +++ |
| 610 | *** The calendar namespace has been rationalized. |
| 611 | All functions and variables now begin with a `calendar-', `diary-', or |
| 612 | `holiday-' prefix. The various calendar systems have secondary |
| 613 | prefixes, eg `calendar-french-'. The old names you are likely to use |
| 614 | directly still exist, for the time being, as aliases, but please start |
| 615 | using the new names. |
| 616 | |
| 617 | *** The function `holiday-chinese' computes holidays on the Chinese calendar. |
| 618 | It has been used to add items to the list `holiday-oriental-holidays'. |
| 619 | |
| 620 | *** `diary-remind' accepts a negative number -DAYS as a shorthand for |
| 621 | the list (1 2 ... DAYS). |
| 622 | |
| 623 | ** Miscellaneous programming mode changes |
| 624 | |
| 625 | *** The file etc/emacs.py now supports both Python 2 and 3, meaning |
| 626 | that either version can be used as inferior Python by python.el. |
| 627 | |
| 628 | *** Python mode now has `pdbtrack' functionality. When using pdb to |
| 629 | debug a Python program, pdbtrack notices the pdb prompt and displays |
| 630 | the source file and line that the program is stopped at, much the same |
| 631 | way as gud-mode does for debugging C programs with gdb. |
| 632 | |
| 633 | *** The variable `fortran-line-length' can change the fixed-form line-length. |
| 634 | |
| 635 | *** In Fortran mode, M-; is now bound to the standard comment-dwim, |
| 636 | rather than fortran-indent-comment. |
| 637 | |
| 638 | +++ |
| 639 | *** (The increasingly misnamed) F90 mode supports Fortran 2003 syntax. |
| 640 | |
| 641 | ** Gnus package |
| 642 | |
| 643 | *** The Gnus package has been updated |
| 644 | |
| 645 | *** In Emacs 23, Gnus uses Emacs' new internal coding system `utf-8-emacs' for |
| 646 | saving articles drafts and ~/.newsrc.eld. These file may not be read |
| 647 | correctly in Emacs 22 and below. If you want to Gnus across different Emacs |
| 648 | versions, you may set `mm-auto-save-coding-system' to `emacs-mule'. |
| 649 | |
| 650 | *** There are many news features, bug fixes and improvements. |
| 651 | |
| 652 | See the file GNUS-NEWS or the node "No Gnus" in the Gnus manual for details. |
| 653 | |
| 654 | ** Miscellaneous |
| 655 | |
| 656 | *** goto-address.el provides two new minor modes, goto-address-mode and |
| 657 | goto-address-prog-mode, which buttonize URLS and email addresses. |
| 658 | |
| 659 | *** comint-mode uses `start-file-process' now (see Lisp Changes). |
| 660 | If `default-directory' is a remote file name, subprocesses are started |
| 661 | on the corresponding remote system. |
| 662 | |
| 663 | *** C-x C-q in dired-mode now runs the command wdired-change-to-wdired-mode, |
| 664 | and C-x C-q in wdired-mode exits it with asking a question about |
| 665 | saving changes. |
| 666 | |
| 667 | *** The new command `eshell/info' runs info in an eshell buffer. |
| 668 | |
| 669 | *** The pcmpl-unix package supports hostname completion for ssh and scp. |
| 670 | |
| 671 | *** WoMan tries to add locale-specific manual page directories to the |
| 672 | search path. This can be disabled by setting `woman-locale' to nil. |
| 673 | |
| 674 | *** The new variable `ffap-rfc-directories' specifies a list of local |
| 675 | directories in which `ffap-rfc' will first search for RFCs. |
| 676 | |
| 677 | *** net-utils has an `iwconfig' command, similar to the existing `ifconfig'. |
| 678 | It is used to configure wireless interfaces. |
| 679 | |
| 680 | \f |
| 681 | * Changes in Emacs 23.1 on non-free operating systems |
| 682 | |
| 683 | --- |
| 684 | ** IPv6 is supported on MS-Windows. |
| 685 | Emacs now supports IPv6 on Windows XP and later, and earlier versions |
| 686 | of Windows with third party IPv6 stacks installed. In Emacs 22, IPv6 was |
| 687 | supported on other platforms, but not on Windows due to using the winsock |
| 688 | 1.1 header file, even though Emacs was linking to the winsock 2 library. |
| 689 | |
| 690 | --- |
| 691 | ** Busy cursor (hourglass) now displays on MS-Windows. |
| 692 | When Emacs is busy, an hourglass mouse cursor is displayed on Windows. |
| 693 | In Emacs 22 only X supported the busy cursor. |
| 694 | |
| 695 | --- |
| 696 | ** Battery status is available on MS-Windows |
| 697 | Emacs can now display the battery status in the mode-line when enabled with |
| 698 | display-battery-mode or from the Options menu. More verbose battery |
| 699 | information is also available with the command `battery'. In Emacs 22 |
| 700 | battery status was supported only on GNU/Linux and Mac. |
| 701 | |
| 702 | ** More keys available on MS-Windows. |
| 703 | Keys normally associated with IMEs, and some exotic keys not normally found |
| 704 | on standard keyboards have been given names so they can be bound to functions |
| 705 | inside Emacs. If there are keys on your keyboard that have not been exposed |
| 706 | to Emacs in the past, try C-h k to see if they are available now. |
| 707 | |
| 708 | Emacs can now bind functions to the extra buttons for media player and |
| 709 | browser control present on some keyboards. These buttons are disabled |
| 710 | by default, since enabling them prevents their system-wide use when |
| 711 | Emacs has focus. To enable them, set the variable |
| 712 | w32-pass-multimedia-buttons to nil. See the doc string of that variable |
| 713 | for the list of extra keys that are available. |
| 714 | |
| 715 | \f |
| 716 | * Incompatible Lisp Changes in Emacs 23.1 |
| 717 | |
| 718 | ** `functionp' returns nil for special forms. |
| 719 | I.e., it only returns t for objects that can be passed to `funcall'. |
| 720 | |
| 721 | +++ |
| 722 | ** The multibyteness of process filters is determined by the coding-system |
| 723 | used for decoding. The functions `process-filter-multibyte-p' and |
| 724 | `set-process-filter-multibyte' are obsolete. |
| 725 | |
| 726 | ** The behavior of map-char-table has changed. It may call the |
| 727 | specified function with a cons (FROM . TO) as a key if characters in |
| 728 | that range have the same value. |
| 729 | |
| 730 | ** The value of the function `charset-id' is now always 0. |
| 731 | |
| 732 | ** The functions `register-char-codings' and `coding-system-spec' |
| 733 | have been removed. |
| 734 | |
| 735 | ** The cpXXX coding systems are now supported automatically. The |
| 736 | functions cp-...-codepage, which you had to use in Emacs 22 to enable |
| 737 | support for these coding systems, have been deleted. |
| 738 | |
| 739 | +++ |
| 740 | ** The function `dired-call-process' has been removed. |
| 741 | |
| 742 | ** The variable `byte-compile-warnings' can now be a list starting with `not', |
| 743 | meaning to disable the specified warnings. The meaning of this list |
| 744 | may therefore be the reverse of what you expect (of course, this is |
| 745 | only an issue if you make use of the new `not' syntax). Rather than |
| 746 | checking/manipulating elements directly, use the new functions |
| 747 | `byte-compile-warning-enabled-p', `byte-compile-disable-warning', and |
| 748 | `byte-compile-enable-warning.' |
| 749 | |
| 750 | ** `mode-name' is no longer guaranteed to be a string. |
| 751 | Use `(format-mode-line mode-name)' to ensure a string value. |
| 752 | |
| 753 | ** The following features have been removed. They were used for |
| 754 | displaying various scripts with specific fonts, and are no longer |
| 755 | needed now that OpenType font support is available: |
| 756 | |
| 757 | *** `devanagari' and `devan-util', and all associated devanagari-* and |
| 758 | dev-* functions and variables (formerly used for Devanagari script). |
| 759 | |
| 760 | *** `kannada' and `knd-util', and all associated kannada-* and knd-* |
| 761 | functions and variables (formerly used for Kannada script). |
| 762 | |
| 763 | *** `malayalam' and `mlm-util', and all associated malayalam-* and |
| 764 | mlm-* functions and variables (formerly used for Malayalam script). |
| 765 | |
| 766 | *** `tamil' and `tml-util, and all associated tamil-* and tml-* |
| 767 | functions and variables (formerly used for Tamil script). |
| 768 | |
| 769 | \f |
| 770 | * Lisp Changes in Emacs 23.1 |
| 771 | |
| 772 | ** `all-completions' may now return the base size in the last cdr. |
| 773 | Since this means the returned list is not properly nil-terminated, this |
| 774 | is an incompatible change and is thus enabled by the new variable |
| 775 | completion-all-completions-with-base-size. |
| 776 | |
| 777 | ** New function `apply-partially' for curried application. |
| 778 | |
| 779 | ** `fill-forward-paragraph-function' specifies which function the filling |
| 780 | code should use to find paragraph boundaries. |
| 781 | |
| 782 | ** The variable `this-command-keys-shift-translated' is non-nil if the |
| 783 | key sequence invoking the current command was found by |
| 784 | shift-translation. |
| 785 | |
| 786 | ** The new interactive spec code ^ says to first call |
| 787 | handle-shift-selection if shift-select-mode is non-nil, before reading |
| 788 | the command arguments. |
| 789 | |
| 790 | ** When deleting a terminal, run the special hook `delete-terminal-functions'. |
| 791 | |
| 792 | ** The `read-shell-command' function does what its name says, with completion. |
| 793 | It uses the minibuffer-local-shell-command-map for that. |
| 794 | |
| 795 | ** The `buffer-swap-text' function can swap the text between two buffers. |
| 796 | This can be useful for modes such as tar-mode, archive-mode, RMAIL. |
| 797 | |
| 798 | ** `clear-image-cache' can be told to flush only images of a specific file. |
| 799 | |
| 800 | ** clone-indirect-buffer now runs the clone-indirect-buffer-hook. |
| 801 | |
| 802 | ** `beginning-of-defun-function' now takes one argument, the count |
| 803 | given to `beginning-of-defun'. |
| 804 | |
| 805 | ** The variable `inhibit-changing-match-data', if non-nil, prevents the |
| 806 | search and match primitives from changing the match data. |
| 807 | |
| 808 | +++ |
| 809 | ** New function `match-substitute-replacement' returns the result of |
| 810 | `replace-match' without actually using it in the buffer. |
| 811 | |
| 812 | ** If a local hook function has a non-nil `permanent-local-hook' |
| 813 | property, then `kill-all-local-variables' does not remove it from |
| 814 | the local value of the hook variable. This means it remains |
| 815 | even if you change major modes. |
| 816 | |
| 817 | +++ |
| 818 | ** A list of default values can be specified for the DEFAULT argument of |
| 819 | functions `read-from-minibuffer', `read-string', `read-command', |
| 820 | `read-variable', `read-buffer', `completing-read'. Elements of this list |
| 821 | are available for inserting into the minibuffer by typing `M-n'. |
| 822 | For empty input these functions return the first element of this list. |
| 823 | |
| 824 | ** `custom-note-var-changed' tells Custom to treat the change in a certain |
| 825 | variable as having been made within Custom. |
| 826 | |
| 827 | ** `frame-inherited-parameters' lets new frames inherit parameters from |
| 828 | the selected frame. |
| 829 | |
| 830 | ** Commands should use `use-region-p' to test whether there is |
| 831 | an active region that they should operate on. |
| 832 | |
| 833 | ** `region-active-p' returns non-nil when Transient Mark mode |
| 834 | is enabled and there is an active region. This is NOT the best function |
| 835 | to use to test whether a command should operate on the region instead |
| 836 | of the usual behavior -- for that, use `use-region-p'. |
| 837 | |
| 838 | ** If a command sets `transient-mark-mode' to (only . OLDVAL), that |
| 839 | means to activate transient-mark-mode temporarily, until the next |
| 840 | unshifted point motion command or mark deactivation. Afterwards, |
| 841 | reset transient-mark-mode to the value OLDVAL. The values `only' and |
| 842 | `identity', introduced in Emacs 22, are now deprecated. |
| 843 | |
| 844 | ** New keymap `input-decode-map' overrides like key-translation-map, but |
| 845 | applies before function-key-map. Also it is terminal-local contrary to |
| 846 | key-translation-map. Terminal-specific key-sequences are generally added to |
| 847 | this map rather than to function-key-map now. |
| 848 | |
| 849 | ** The new macro `declare-function' suppresses compiler warnings about |
| 850 | undefined functions. The new `check-declare' package verifies that such |
| 851 | statements are accurate (i.e. the functions are actually defined in |
| 852 | the specified files). |
| 853 | |
| 854 | ** The new function `read-color' reads a color name using the minibuffer. |
| 855 | |
| 856 | ** `interprogram-paste-function' can now return one string or a list |
| 857 | of strings. In the latter case, Emacs puts the second and following |
| 858 | strings on the kill ring. |
| 859 | |
| 860 | ** Character code, representation, and charset changes. |
| 861 | |
| 862 | The character code space is now 0x0..0x3FFFFF with no gap. |
| 863 | Characters of code 0x0..0x10FFFF are Unicode characters of the same code points. |
| 864 | Characters of code 0x3FFF80..0x3FFFFF are raw 8-bit bytes. |
| 865 | |
| 866 | Generic characters no longer exist. |
| 867 | |
| 868 | In buffer and string, characters are represented by UTF-8 byte |
| 869 | sequence in a multibyte buffer/string. |
| 870 | |
| 871 | The concept of a charset has changed. A single character may belong to |
| 872 | multiple charsets (e.g. a-grave, U+00E0, belongs to charsets unicode, |
| 873 | iso-8859-1, iso-8859-3, etc). |
| 874 | |
| 875 | *** The new function `characterp' returns t if and only if the argument |
| 876 | is a character. This replaces `char-valid-p', which is now obsolete. |
| 877 | |
| 878 | *** The new function `max-char' returns the maximum character code |
| 879 | (currently it is #x3FFFFF). |
| 880 | |
| 881 | *** The functions `encode-char' and `decode-char' now accept any character sets. |
| 882 | |
| 883 | *** The function `define-charset' now accepts a completely different |
| 884 | form of arguments (old-style arguments still work). |
| 885 | |
| 886 | *** The new function `define-charset-alias' defines an alias of a charset. |
| 887 | |
| 888 | *** The value of the function `char-charset' depends on the current |
| 889 | priorities of charsets. |
| 890 | |
| 891 | *** The new function `charset-priority-list' returns the list of |
| 892 | charsets ordered by priority. |
| 893 | |
| 894 | *** The new function `set-charset-priority' sets priorities of charsets. |
| 895 | |
| 896 | *** The new function `unibyte-string' make a unibyte string from bytes. |
| 897 | |
| 898 | *** The new function `define-char-code-property' defines a character |
| 899 | code property. |
| 900 | |
| 901 | *** The new function `char-code-property-description' returns the |
| 902 | description string of a character code property. |
| 903 | |
| 904 | *** The function get-char-code-property now accepts many Unicode base |
| 905 | character properties. They are `name', `general-category', |
| 906 | `canonical-combining-class', `bidi-class', `decomposition', |
| 907 | `decimal-digit-value', `digit-value', `numeric-value', `mirrored', |
| 908 | `old-name', `iso-10646-comment', `uppercase', `lowercase', and |
| 909 | `titlecase'. |
| 910 | |
| 911 | *** The new variable `find-word-boundary-function-table' is a |
| 912 | char-table of functions to search for a word boundary. |
| 913 | |
| 914 | *** The new variable `char-script-table' is a char-table of script names. |
| 915 | |
| 916 | *** The new variable `char-width-table' is a char-table of character widths. |
| 917 | |
| 918 | *** The new variable `print-charset-text-property' controls how to |
| 919 | handle `charset' text property on printing a string. |
| 920 | |
| 921 | *** The new variable `printable-chars' is a char-table defining if a |
| 922 | character is printable or not. |
| 923 | |
| 924 | *** The functions `modify-syntax-entry' and `modify-category-entry' now |
| 925 | accepts a cons of characters as the first argument, and modify all |
| 926 | entries in that range of characters. |
| 927 | +++ |
| 928 | *** `translation-table-for-input' is now obsolete. |
| 929 | |
| 930 | ** Code conversion changes |
| 931 | |
| 932 | *** The new function `define-coding-system' should be used to define a |
| 933 | coding system instead of `make-coding-system' (which is now obsolete). |
| 934 | |
| 935 | *** The functions `encode-coding-region' and `decode-coding-region' |
| 936 | have an optional 4th argument to specify where the result of |
| 937 | conversion should go. |
| 938 | |
| 939 | *** The functions `encode-coding-string' and `decode-coding-string' |
| 940 | have an optional 4th argument specifying a buffer to store the result |
| 941 | of conversion. |
| 942 | |
| 943 | *** The new function `with-coding-priority' executes the body part with |
| 944 | the specified coding system priority order. |
| 945 | |
| 946 | *** The new function `check-coding-systems-region' checks if the text |
| 947 | in the region is encodable by the specified coding systems. |
| 948 | |
| 949 | *** The new function `coding-system-aliases' returns a list of aliases |
| 950 | of a coding system. |
| 951 | |
| 952 | *** The new function `coding-system-charset-list' returns a list of |
| 953 | charsets supported by a coding system. |
| 954 | |
| 955 | *** The new function `coding-system-priority-list' returns a list of |
| 956 | coding systems ordered by their priorities. |
| 957 | |
| 958 | *** The new function `set-coding-system-priority' sets priorities of |
| 959 | coding systems. |
| 960 | |
| 961 | *** The functions `set-coding-priority' and `make-coding-system' are obsolete. |
| 962 | |
| 963 | ** There is a new input method, Robin, different from Quail. |
| 964 | It has three functionalities: |
| 965 | i) a simple input method (converts an ASCII sequence into a string). |
| 966 | ii) converts an existing buffer substring into another string |
| 967 | iii) reverse conversion (each character produced by a |
| 968 | robin rule can hold the original ASCII sequence as a char-code-property) |
| 969 | |
| 970 | *** The new function `robin-define-package' defines a Robin package. |
| 971 | |
| 972 | *** The new function `robin-modify-package' modifies an existing Robin package. |
| 973 | |
| 974 | *** The new function `robin-use-package' starts using a Robin package |
| 975 | as an input method. |
| 976 | |
| 977 | ** Changes related to the new font backend |
| 978 | |
| 979 | Which font backends to use can be specified by the X resource "FontBackend". |
| 980 | For instance, to use both X core fonts and Xft fonts: |
| 981 | |
| 982 | Emacs.FontBackend: x,xft |
| 983 | |
| 984 | If this resource is not set, Emacs tries to use all font backends |
| 985 | available on your graphic device. |
| 986 | |
| 987 | *** New frame parameter `font-backend' specifies a list of |
| 988 | font-backends supported by the frame's graphic device. On X, they are |
| 989 | currently `x' and `xft'. |
| 990 | |
| 991 | *** New function `fontp' checks if the argument is a font-spec or font-entity. |
| 992 | |
| 993 | *** New function `font-spec' creates a new font-spec object. |
| 994 | |
| 995 | *** New function `font-get' returns a font property value. |
| 996 | |
| 997 | *** New function `font-put' sets a font property value. |
| 998 | |
| 999 | *** New function `list-fonts' returns a list of font-entities matching |
| 1000 | the given specification. |
| 1001 | |
| 1002 | *** New function `list-families' returns a list of family names of |
| 1003 | available fonts. |
| 1004 | |
| 1005 | *** New function `font-font' returns a font-entity best matching with |
| 1006 | the given specification. |
| 1007 | |
| 1008 | *** New function `font-xlfd-name' returns an XLFD name of a given font |
| 1009 | (font-spec, font-entity, or font-object). |
| 1010 | |
| 1011 | *** New function `clear-font-cache' clears all font caches. |
| 1012 | |
| 1013 | *** The function `set-fontset-font' now accepts a script name as the |
| 1014 | second argument, and has an optional 5th argument to control how to |
| 1015 | set the font. |
| 1016 | |
| 1017 | ** Changes related to multiple tty support |
| 1018 | |
| 1019 | *** $TERM is now set to `dumb' for subprocesses. If you want to know the |
| 1020 | $TERM inherited by Emacs you will have to look inside initial-environment. |
| 1021 | |
| 1022 | *** $DISPLAY is now dynamically inherited from the frame's `display'. |
| 1023 | |
| 1024 | *** The `window-system' variable has been made frame-local. The new |
| 1025 | `initial-window-system' variable contains the `window-system' value |
| 1026 | for the first frame. `window-system' is also now a function that |
| 1027 | takes a frame argument. |
| 1028 | |
| 1029 | *** You can specify a terminal device (`tty' parameter) and a terminal |
| 1030 | type (`tty-type' parameter) to `make-terminal-frame'. |
| 1031 | |
| 1032 | *** The new function `make-frame-on-tty' allows you to create a new |
| 1033 | frame on another tty device interactively. |
| 1034 | |
| 1035 | *** The function `make-frame-on-display' now works during a tty |
| 1036 | session, and `make-frame-on-tty' works during a graphical session. |
| 1037 | |
| 1038 | *** New functions: `delete-tty', `suspend-tty', `resume-tty'. |
| 1039 | |
| 1040 | *** A new data type for terminals with functions: `get-device-terminal', |
| 1041 | `terminal-parameters', `terminal-parameter', `set-terminal-parameter'. |
| 1042 | |
| 1043 | *** New hooks: `suspend-tty-functions' and `resume-tty-functions' |
| 1044 | are called after a tty frame has been suspended or resumed, |
| 1045 | respectively. The functions are called with the terminal id of the frame |
| 1046 | being suspended/resumed as a parameter. |
| 1047 | |
| 1048 | *** New function: `environment'. |
| 1049 | |
| 1050 | *** New variable: `local-function-key-map'. |
| 1051 | This in addition to the global function-key-map variable that |
| 1052 | already existed. The global variable is not used directly any more; |
| 1053 | instead, the local-function-key-map is initialized so as to inherit from |
| 1054 | function-key-map. |
| 1055 | |
| 1056 | *** `initial-environment' holds the environment inherited from Emacs's parent. |
| 1057 | |
| 1058 | *** The `keyboard-translate-table' variable and the terminal and |
| 1059 | keyboard coding systems have been made terminal-local. |
| 1060 | |
| 1061 | *** In addition to the global function-key-map, Emacs has terminal-local |
| 1062 | local-function-key-map variables, and uses them instead of the |
| 1063 | global keymaps to set up translations and function key sequences |
| 1064 | relevant to a specific terminal device. |
| 1065 | |
| 1066 | |
| 1067 | ** You can now also pass the value of the `invisible' property to invisible-p |
| 1068 | to check whether it would cause the text to be invisible. Convenient when |
| 1069 | checking invisibility of text which has no buffer position |
| 1070 | (e.g. in before/after-strings). |
| 1071 | |
| 1072 | ** Non-breaking space now acts as whitespace. |
| 1073 | |
| 1074 | +++ |
| 1075 | ** In `condition-case', a handler can specify "let the debugger run first". |
| 1076 | |
| 1077 | You do this by writing `debug' in the list of conditions to be handled, |
| 1078 | like this: |
| 1079 | |
| 1080 | (condition-case nil |
| 1081 | (foo bar) |
| 1082 | ((debug error) nil)) |
| 1083 | |
| 1084 | ** The `require-match' argument to `completing-read' accepts a new value |
| 1085 | `confirm-only'. |
| 1086 | |
| 1087 | +++ |
| 1088 | ** The regexp form \(?<num>:<regexp>\) specifies the group number explicitly. |
| 1089 | |
| 1090 | ** New function `window-full-width-p' returns t if a window is as wide |
| 1091 | as its frame. |
| 1092 | |
| 1093 | ** The new function `split-string-and-unquote' does (what?) |
| 1094 | |
| 1095 | ** The new function `combine-and-quote-strings' does (what?) |
| 1096 | |
| 1097 | ** The new function `image-refresh' refreshes all images associated |
| 1098 | with a given image specification. |
| 1099 | |
| 1100 | +++ |
| 1101 | ** New variable `user-emacs-directory'. |
| 1102 | Use this instead of "~/.emacs.d". |
| 1103 | |
| 1104 | +++ |
| 1105 | ** The new function `start-file-process' is similar to `start-process', |
| 1106 | but obeys file handlers. The file handler is chosen based on |
| 1107 | `default-directory'. The functions `start-file-process-shell-command' |
| 1108 | and `process-file-shell-command' are also new; they call internally |
| 1109 | `start-file-process' and `process-file', respectively. |
| 1110 | |
| 1111 | ** The new function `process-lines' executes an external program and |
| 1112 | returns its output as a list of lines. |
| 1113 | |
| 1114 | +++ |
| 1115 | ** `file-remote-p' has new optional parameters IDENTIFICATION and CONNECTED. |
| 1116 | IDENTIFICATION specifies which part of the remote identifier has to be |
| 1117 | returned. With CONNECTED passed non-nil, it is checked whether a |
| 1118 | remote connection has been established already. |
| 1119 | |
| 1120 | ** The two new functions `looking-at-p' and `string-match-p' can do |
| 1121 | the same matching as `looking-at' and `string-match' without changing |
| 1122 | the match data. |
| 1123 | |
| 1124 | ** The interactive-form of a function can be added post-facto via the |
| 1125 | `interactive-form' symbol property. Mostly useful to add complex interactive |
| 1126 | forms to subroutines. |
| 1127 | \f |
| 1128 | * New Packages for Lisp Programming in Emacs 23.1 |
| 1129 | |
| 1130 | ** The package isearch-multi.el has been added. It implements a new mode |
| 1131 | `isearch-buffers-minor-mode' that allows isearch to search through |
| 1132 | multiple buffers. In this mode a new variable |
| 1133 | `isearch-buffers-next-buffer-function' defines the function to call |
| 1134 | to get the next buffer to search in the series of multiple buffers. |
| 1135 | |
| 1136 | ** The new package avl-tree.el deals with the AVL tree data structure. |
| 1137 | |
| 1138 | \f |
| 1139 | ---------------------------------------------------------------------- |
| 1140 | This file is part of GNU Emacs. |
| 1141 | |
| 1142 | GNU Emacs is free software; you can redistribute it and/or modify |
| 1143 | it under the terms of the GNU General Public License as published by |
| 1144 | the Free Software Foundation; either version 3, or (at your option) |
| 1145 | any later version. |
| 1146 | |
| 1147 | GNU Emacs is distributed in the hope that it will be useful, |
| 1148 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 1149 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 1150 | GNU General Public License for more details. |
| 1151 | |
| 1152 | You should have received a copy of the GNU General Public License |
| 1153 | along with GNU Emacs; see the file COPYING. If not, write to the |
| 1154 | Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
| 1155 | Boston, MA 02110-1301, USA. |
| 1156 | |
| 1157 | \f |
| 1158 | Local variables: |
| 1159 | mode: outline |
| 1160 | paragraph-separate: "[ \f]*$" |
| 1161 | end: |
| 1162 | |
| 1163 | arch-tag: e759449d-88b3-4de4-9900-3a6c3dfa23e2 |