mirrored from git://git.sv.gnu.org/emacs.git
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
/
NEWS.20
4514 lines (3339 loc) · 185 KB
/
NEWS.20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
GNU Emacs NEWS -- history of user-visible changes. 2006-05-31
Copyright (C) 1999-2001, 2006-2024 Free Software Foundation, Inc.
See the end of the file for license conditions.
Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
If possible, use M-x report-emacs-bug.
This file is about changes in Emacs version 20.
* Emacs 20.7 is a bug-fix release with few user-visible changes
** It is now possible to use CCL-based coding systems for keyboard
input.
** ange-ftp now handles FTP security extensions, like Kerberos.
** Rmail has been extended to recognize more forms of digest messages.
** Now, most coding systems set in keyboard coding system work not
only for character input, but also in incremental search. The
exceptions are such coding systems that handle 2-byte character sets
(e.g euc-kr, euc-jp) and that use ISO's escape sequence
(e.g. iso-2022-jp). They are ignored in incremental search.
** Support for Macintosh PowerPC-based machines running GNU/Linux has
been added.
* Emacs 20.6 is a bug-fix release with one user-visible change
** Support for ARM-based non-RISCiX machines has been added.
* Emacs 20.5 is a bug-fix release with no user-visible changes.
** Not new, but not mentioned before:
M-w when Transient Mark mode is enabled disables the mark.
* Changes in Emacs 20.4
** Init file may be called .emacs.el.
You can now call the Emacs init file `.emacs.el'.
Formerly the name had to be `.emacs'. If you use the name
`.emacs.el', you can byte-compile the file in the usual way.
If both `.emacs' and `.emacs.el' exist, the latter file
is the one that is used.
** 'shell-command', and 'shell-command-on-region', now return
the exit code of the command (unless it is asynchronous).
Also, you can specify a place to put the error output,
separate from the command's regular output.
Interactively, the variable 'shell-command-default-error-buffer'
says where to put error output; set it to a buffer name.
In calls from Lisp, an optional argument ERROR-BUFFER specifies
the buffer name.
When you specify a non-nil error buffer (or buffer name), any error
output is inserted before point in that buffer, with \f\n to separate
it from the previous batch of error output. The error buffer is not
cleared, so error output from successive commands accumulates there.
** Setting the default value of 'enable-multibyte-characters' to nil in
the .emacs file, either explicitly using 'setq-default', or via Custom,
is now essentially equivalent to using --unibyte: all buffers
created during startup will be made unibyte after loading .emacs.
** C-x C-f now handles the wildcards * and ? in file names. For
example, typing C-x C-f c*.c RET visits all the files whose names
match c*.c. To visit a file whose name contains * or ?, add the
quoting sequence /: to the beginning of the file name.
** The M-x commands 'keep-lines', 'flush-lines' and 'count-matches'
now have the same feature as 'occur' and 'query-replace':
if the pattern contains any upper case letters, then
they never ignore case.
** The end-of-line format conversion feature previously mentioned
under `* Emacs 20.1 changes for MS-DOS and MS-Windows' actually
applies to all operating systems. Emacs recognizes from the contents
of a file what convention it uses to separate lines--newline, CRLF, or
just CR--and automatically converts the contents to the normal Emacs
convention (using newline to separate lines) for editing. This is a
part of the general feature of coding system conversion.
If you subsequently save the buffer, Emacs converts the text back to
the same format that was used in the file before.
You can turn off end-of-line conversion by setting the variable
'inhibit-eol-conversion' to non-nil, e.g. with Custom in the MULE group.
** The character set property 'prefered-coding-system' has been
renamed to 'preferred-coding-system', for the sake of correct spelling.
This is a fairly internal feature, so few programs should be affected.
** Mode-line display of end-of-line format is changed.
The indication of the end-of-line format of the file visited by a
buffer is now more explicit when that format is not the usual one for
your operating system. For example, the DOS-style end-of-line format
is displayed as "(DOS)" on Unix and GNU/Linux systems. The usual
end-of-line format is still displayed as a single character (colon for
Unix, backslash for DOS and Windows, and forward slash for the Mac).
The values of the variables 'eol-mnemonic-unix', 'eol-mnemonic-dos',
'eol-mnemonic-mac', and 'eol-mnemonic-undecided', which are strings,
control what is displayed in the mode line for each end-of-line
format. You can now customize these variables.
** In the previous version of Emacs, 'tar-mode' didn't work well if a
filename contained non-ASCII characters. Now this is fixed. Such a
filename is decoded by file-name-coding-system if the default value of
enable-multibyte-characters is non-nil.
** The command 'temp-buffer-resize-mode' toggles a minor mode
in which temporary buffers (such as help buffers) are given
windows just big enough to hold the whole contents.
** If you use completion.el, you must now run the function
'dynamic-completion-mode' to enable it. Just loading the file
doesn't have any effect.
** In Flyspell mode, the default is now to make just one Ispell process,
not one per buffer.
** If you use iswitchb but do not call (iswitchb-default-keybindings) to
use the default keybindings, you will need to add the following line:
(add-hook 'minibuffer-setup-hook #'iswitchb-minibuffer-setup)
** Auto-show mode is no longer enabled just by loading auto-show.el.
To control it, set 'auto-show-mode' via Custom or use the
'auto-show-mode' command.
** Handling of X fonts' ascent/descent parameters has been changed to
avoid redisplay problems. As a consequence, compared with previous
versions the line spacing and frame size now differ with some font
choices, typically increasing by a pixel per line. This change
occurred in version 20.3 but was not documented then.
** If you select the bar cursor style, it uses the frame's
cursor-color, rather than the cursor foreground pixel.
** In multibyte mode, Rmail decodes incoming MIME messages using the
character set specified in the message. If you want to disable this
feature, set the variable rmail-decode-mime-charset to nil.
** Not new, but not mentioned previously in NEWS: when you use #! at
the beginning of a file to make it executable and specify an
interpreter program, Emacs looks on the second line for the -*- mode
and variable specification, as well as on the first line.
** Support for IBM codepage encoding of non-ASCII characters.
The new command M-x codepage-setup creates a special coding system
that can be used to convert text between a specific IBM codepage and
one of the character sets built into Emacs which matches that
codepage. For example, codepage 850 corresponds to Latin-1 character
set, codepage 855 corresponds to Cyrillic-ISO character set, etc.
Windows codepages 1250, 1251 and some others, where Windows deviates
from the corresponding ISO character set, are also supported.
IBM box-drawing characters and other glyphs which don't have
equivalents in the corresponding ISO character set, are converted to
a character defined by dos-unsupported-char-glyph on MS-DOS, and to
`?' on other systems.
IBM codepages are widely used on MS-DOS and MS-Windows, so this
feature is most useful on those platforms, but it can also be used on
Unix.
Emacs compiled for MS-DOS automatically loads the support for the
current codepage when it starts.
** Mail changes
*** When mail is sent using compose-mail (C-x m), and if
'mail-send-nonascii' is set to the new default value 'mime',
appropriate MIME headers are added. The headers are added only if
non-ASCII characters are present in the body of the mail, and no other
MIME headers are already present. For example, the following three
headers are added if the coding system used in the *mail* buffer is
latin-1:
MIME-version: 1.0
Content-type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
*** The new variable 'default-sendmail-coding-system' specifies the
default way to encode outgoing mail. This has higher priority than
'default-buffer-file-coding-system' but has lower priority than
'sendmail-coding-system' and the local value of
'buffer-file-coding-system'.
You should not set this variable manually. Instead, set
sendmail-coding-system to specify a fixed encoding for all outgoing
mail.
*** When you try to send a message that contains non-ASCII characters,
if the coding system specified by those variables doesn't handle them,
Emacs will ask you to select a suitable coding system while showing a
list of possible coding systems.
** CC Mode changes
*** c-default-style can now take an association list that maps major
modes to style names. When this variable is an alist, Java mode no
longer hardcodes a setting to "java" style. See the variable's
docstring for details.
*** It's now possible to put a list as the offset on a syntactic
symbol. The list is evaluated recursively until a non-nil offset is
found. This is useful to combine several lineup functions to act in a
prioritized order on a single line. However, none of the supplied
lineup functions use this feature currently.
*** New syntactic symbol catch-clause, which is used on the "catch" and
"finally" lines in try-catch constructs in C++ and Java.
*** New cleanup brace-catch-brace on c-cleanup-list, which does for
"catch" lines what brace-elseif-brace does for "else if" lines.
*** The braces of Java anonymous inner classes are treated separately
from the braces of other classes in auto-newline mode. Two new
symbols inexpr-class-open and inexpr-class-close may be used on
c-hanging-braces-alist to control the automatic newlines used for
anonymous classes.
*** Support for the Pike language added, along with new Pike specific
syntactic symbols: inlambda, lambda-intro-cont
*** Support for Java anonymous classes via new syntactic symbol
inexpr-class. New syntactic symbol inexpr-statement for Pike
support and gcc-style statements inside expressions. New lineup
function c-lineup-inexpr-block.
*** New syntactic symbol brace-entry-open which is used in brace lists
(i.e. static initializers) when a list entry starts with an open
brace. These used to be recognized as brace-list-entry's.
c-electric-brace also recognizes brace-entry-open braces
(brace-list-entry's can no longer be electrified).
*** New command 'c-indent-line-or-region', not bound by default.
*** `#' is only electric when typed in the indentation of a line.
*** Parentheses are now electric (via the new command 'c-electric-paren')
for auto-reindenting lines when parens are typed.
*** In "gnu" style, inline-open offset is now set to zero.
*** Uniform handling of the inclass syntactic symbol. The indentation
associated with it is now always relative to the class opening brace.
This means that the indentation behavior has changed in some
circumstances, but only if you've put anything besides 0 on the
class-open syntactic symbol (none of the default styles do that).
** Gnus changes.
*** New functionality for using Gnus as an offline newsreader has been
added. A plethora of new commands and modes have been added. See the
Gnus manual for the full story.
*** The nndraft backend has returned, but works differently than
before. All Message buffers are now also articles in the nndraft
group, which is created automatically.
*** 'gnus-alter-header-function' can now be used to alter header
values.
*** 'gnus-summary-goto-article' now accept Message-ID's.
*** A new Message command for deleting text in the body of a message
outside the region: `C-c C-v'.
*** You can now post to component group in nnvirtual groups with
`C-u C-c C-c'.
*** 'nntp-rlogin-program' -- new variable to ease customization.
*** `C-u C-c C-c' in 'gnus-article-edit-mode' will now inhibit
re-highlighting of the article buffer.
*** New element in 'gnus-boring-article-headers' -- 'long-to'.
*** 'M-i' symbolic prefix command. See the section "Symbolic
Prefixes" in the Gnus manual for details.
*** 'L' and 'I' in the summary buffer now take the symbolic prefix
'a' to add the score rule to the "all.SCORE" file.
*** 'gnus-simplify-subject-functions' variable to allow greater
control over simplification.
*** `A T' -- new command for fetching the current thread.
*** `/ T' -- new command for including the current thread in the
limit.
*** 'M-RET' is a new Message command for breaking cited text.
*** \\1-expressions are now valid in 'nnmail-split-methods'.
*** The 'custom-face-lookup' function has been removed.
If you used this function in your initialization files, you must
rewrite them to use 'face-spec-set' instead.
*** Canceling now uses the current select method. Symbolic prefix
'a' forces normal posting method.
*** New command to translate M******** sm*rtq**t*s into proper text
-- `W d'.
*** For easier debugging of nntp, you can set 'nntp-record-commands'
to a non-nil value.
*** nntp now uses ~/.authinfo, a .netrc-like file, for controlling
where and how to send AUTHINFO to NNTP servers.
*** A command for editing group parameters from the summary buffer
has been added.
*** A history of where mails have been split is available.
*** A new article date command has been added -- 'article-date-iso8601'.
*** Subjects can be simplified when threading by setting
'gnus-score-thread-simplify'.
*** A new function for citing in Message has been added --
'message-cite-original-without-signature'.
*** 'article-strip-all-blank-lines' -- new article command.
*** A new Message command to kill to the end of the article has
been added.
*** A minimum adaptive score can be specified by using the
'gnus-adaptive-word-minimum' variable.
*** The "lapsed date" article header can be kept continually
updated by the 'gnus-start-date-timer' command.
*** Web listserv archives can be read with the nnlistserv backend.
*** Old dejanews archives can now be read by nnweb.
*** 'gnus-posting-styles' has been re-activated.
** Changes to TeX and LaTeX mode
*** The new variable 'tex-start-options-string' can be used to give
options for the TeX run. The default value causes TeX to run in
nonstopmode. For an interactive TeX run set it to nil or "".
*** The command 'tex-feed-input' sends input to the Tex Shell. In a
TeX buffer it is bound to the keys C-RET, C-c RET, and C-c C-m (some
of these keys may not work on all systems). For instance, if you run
TeX interactively and if the TeX run stops because of an error, you
can continue it without leaving the TeX buffer by typing C-RET.
*** The Tex Shell Buffer is now in 'compilation-shell-minor-mode'.
All error-parsing commands of the Compilation major mode are available
but bound to keys that don't collide with the shell. Thus you can use
the Tex Shell for command line executions like a usual shell.
*** The commands 'tex-validate-region' and 'tex-validate-buffer' check
the matching of braces and $'s. The errors are listed in a *Occur*
buffer and you can use C-c C-c or mouse-2 to go to a particular
mismatch.
** Changes to RefTeX mode
*** The table of contents buffer can now also display labels and
file boundaries in addition to sections. Use 'l', 'i', and 'c' keys.
*** Labels derived from context (the section heading) are now
lowercase by default. To make the label legal in LaTeX, latin-1
characters will lose their accent. All Mule characters will be
removed from the label.
*** The automatic display of cross reference information can also use
a window instead of the echo area. See variable 'reftex-auto-view-crossref'.
*** kpsewhich can be used by RefTeX to find TeX and BibTeX files. See the
customization group 'reftex-finding-files'.
*** The option 'reftex-bibfile-ignore-list' has been renamed to
'reftex-bibfile-ignore-regexps' and indeed can be fed with regular
expressions.
*** Multiple Selection buffers are now hidden buffers.
** New/deleted modes and packages
*** 'snmp-mode' provides major modes for editing SNMP and SNMPv2 MIBs.
It has entries on 'auto-mode-alist'.
*** The package sql.el provides a major mode, M-x sql-mode, for
editing SQL files, and M-x sql-interactive-mode for interacting with
SQL interpreters. It has an entry on 'auto-mode-alist'.
*** ispell4.el has been deleted. It got in the way of ispell.el and
this was hard to fix reliably. It has long been obsolete -- use
Ispell 3.1 and ispell.el.
* MS-DOS changes in Emacs 20.4
** Emacs compiled for MS-DOS now supports MULE features better.
This includes support for display of all ISO 8859-N character sets,
conversion to and from IBM codepage encoding of non-ASCII characters,
and automatic setup of the MULE environment at startup. For details,
check out the section `MS-DOS and MULE' in the manual.
The MS-DOS installation procedure automatically configures and builds
Emacs with input method support if it finds an unpacked Leim
distribution when the config.bat script is run.
** Formerly, the value of lpr-command did not affect printing on
MS-DOS unless print-region-function was set to nil, but now it
controls whether an external program is invoked or output is written
directly to a printer port. Similarly, in the previous version of
Emacs, the value of ps-lpr-command did not affect PostScript printing
on MS-DOS unless ps-printer-name was set to something other than a
string (eg. t or 'pipe'), but now it controls whether an external
program is used. (These changes were made so that configuration of
printing variables would be almost identical across all platforms.)
** In the previous version of Emacs, PostScript and non-PostScript
output was piped to external programs, but because most print programs
available for MS-DOS and MS-Windows cannot read data from their standard
input, on those systems the data to be output is now written to a
temporary file whose name is passed as the last argument to the external
program.
An exception is made for 'print', a standard program on Windows NT,
and 'nprint', a standard program on Novell Netware. For both of these
programs, the command line is constructed in the appropriate syntax
automatically, using only the value of printer-name or ps-printer-name
as appropriate--the value of the relevant '-switches' variable is
ignored, as both programs have no useful switches.
** The value of the variable dos-printer (cf. dos-ps-printer), if it has
a value, overrides the value of printer-name (cf. ps-printer-name), on
MS-DOS and MS-Windows only. This has been true since version 20.3, but
was not documented clearly before.
** All the Emacs games now work on MS-DOS terminals.
This includes Tetris and Snake.
* Lisp changes in Emacs 20.4
** New functions 'line-beginning-position' and 'line-end-position'
return the position of the beginning or end of the current line.
They both accept an optional argument, which has the same
meaning as the argument to 'beginning-of-line' or 'end-of-line'.
** find-file and allied functions now have an optional argument
WILDCARD. If this is non-nil, they do wildcard processing,
and visit all files that match the wildcard pattern.
** Changes in the file-attributes function.
*** The file size returned by file-attributes may be an integer or a float.
It is an integer if the size fits in a Lisp integer, float otherwise.
*** The inode number returned by file-attributes may be an integer (if
the number fits in a Lisp integer) or a cons cell containing two
integers.
** The new function 'directory-files-and-attributes' returns a list of
files in a directory and their attributes. It accepts the same
arguments as 'directory-files' and has similar semantics, except that
file names and attributes are returned.
** The new function 'file-attributes-lessp' is a helper function for
sorting the list generated by directory-files-and-attributes. It
accepts two arguments, each a list of a file name and its attributes.
It compares the file names of each according to 'string-lessp' and
returns the result.
** The new function 'file-expand-wildcards' expands a wildcard-pattern
to produce a list of existing files that match the pattern.
** New functions for base64 conversion:
The function 'base64-encode-region' converts a part of the buffer
into the base64 code used in MIME. 'base64-decode-region'
performs the opposite conversion. Line-breaking is supported
optionally.
Functions 'base64-encode-string' and 'base64-decode-string' do a similar
job on the text in a string. They return the value as a new string.
**
The new function 'process-running-child-p'
will tell you if a subprocess has given control of its
terminal to its own child process.
** 'interrupt-process' and such functions have a new feature:
when the second argument is 'lambda', they send a signal
to the running child of the subshell, if any, but if the shell
itself owns its terminal, no signal is sent.
** There are new widget types 'plist' and 'alist' which can
be used for customizing variables whose values are plists or alists.
** easymenu.el now understands ':key-sequence' and `:style button'.
:included is an alias for :visible.
'easy-menu-add-item' now understands the values returned by
'easy-menu-remove-item' and 'easy-menu-item-present-p'. This can be used
to move or copy menu entries.
** Multibyte editing changes
*** The definitions of 'sref' and 'char-bytes' are changed. Now, 'sref' is
an alias of 'aref' and 'char-bytes' always returns 1. This change is to
make some Emacs Lisp code which works on 20.2 and earlier also
work on the latest Emacs. Such code uses a combination of sref and
char-bytes in a loop typically as below:
(setq char (sref str idx)
idx (+ idx (char-bytes idx)))
The byte-compiler now warns that this is obsolete.
If you want to know how many bytes a specific multibyte character
(say, CH) occupies in a multibyte buffer, use this code:
(charset-bytes (char-charset ch))
*** In multibyte mode, when you narrow a buffer to some region, and the
region is preceded or followed by non-ASCII codes, inserting or
deleting at the head or the end of the region may signal this error:
Byte combining across boundary of accessible buffer text inhibited
This is to avoid some bytes being combined together into a character
across the boundary.
*** The functions 'find-charset-region' and 'find-charset-string' include
'unknown' in the returned list in the following cases:
o The current buffer or the target string is unibyte and
contains 8-bit characters.
o The current buffer or the target string is multibyte and
contains invalid characters.
*** The functions 'decode-coding-region' and 'encode-coding-region' remove
text properties of the target region. Ideally, they should correctly
preserve text properties, but for the moment, it's hard. Removing
text properties is better than preserving them in a less-than-correct
way.
*** 'prefer-coding-system' sets EOL conversion of default coding systems.
If the argument to prefer-coding-system specifies a certain type of
end of line conversion, the default coding systems set by
prefer-coding-system will specify that conversion type for end of line.
*** The new function 'thai-compose-string' can be used to properly
compose Thai characters in a string.
** The primitive 'define-prefix-command' now takes an optional third
argument NAME, which should be a string. It supplies the menu name
for the created keymap. Keymaps created in order to be displayed as
menus should always use the third argument.
** The meanings of optional second arguments for 'read-char',
'read-event', and 'read-char-exclusive' are flipped. Now the second
arguments are INHERIT-INPUT-METHOD. These functions use the current
input method (if any) if and only if INHERIT-INPUT-METHOD is non-nil.
** The new function 'clear-this-command-keys' empties out the contents
of the vector that (this-command-keys) returns. This is useful in
programs that read passwords, to prevent the passwords from echoing
inadvertently as part of the next command in certain cases.
** The new macro 'with-temp-message' displays a temporary message in
the echo area, while executing some Lisp code. Like 'progn', it
returns the value of the last form, but it also restores the previous
echo area contents.
(with-temp-message MESSAGE &rest BODY)
** The function 'require' now takes an optional third argument
NOERROR. If it is non-nil, then there is no error if the
requested feature cannot be loaded.
** In the function modify-face, an argument of (nil) for the
foreground color, background color or stipple pattern
means to clear out that attribute.
** The 'outer-window-id' frame property of an X frame
gives the window number of the outermost X window for the frame.
** Temporary buffers made with with-output-to-temp-buffer are now
read-only by default, and normally use the major mode Help mode
unless you put them in some other non-Fundamental mode before the
end of with-output-to-temp-buffer.
** The new functions 'gap-position' and 'gap-size' return information on
the gap of the current buffer.
** The new functions 'position-bytes' and 'byte-to-position' provide a way
to convert between character positions and byte positions in the
current buffer.
** vc.el defines two new macros, 'edit-vc-file' and 'with-vc-file', to
facilitate working with version-controlled files from Lisp programs.
These macros check out a given file automatically if needed, and check
it back in after any modifications have been made.
* Installation Changes in Emacs 20.3
** The default value of load-path now includes most subdirectories of
the site-specific directories /usr/local/share/emacs/site-lisp and
/usr/local/share/emacs/VERSION/site-lisp, in addition to those
directories themselves. Both immediate subdirectories and
subdirectories multiple levels down are added to load-path.
Not all subdirectories are included, though. Subdirectories whose
names do not start with a letter or digit are excluded.
Subdirectories named RCS or CVS are excluded. Also, a subdirectory
which contains a file named `.nosearch' is excluded. You can use
these methods to prevent certain subdirectories from being searched.
Emacs finds these subdirectories and adds them to load-path when it
starts up. While it would be cleaner to find the subdirectories each
time Emacs loads a file, that would be much slower.
This feature is an incompatible change. If you have stored some Emacs
Lisp files in a subdirectory of the site-lisp directory specifically
to prevent them from being used, you will need to rename the
subdirectory to start with a non-alphanumeric character, or create a
`.nosearch' file in it, in order to continue to achieve the desired
results.
** Emacs no longer includes an old version of the C preprocessor from
GCC. This was formerly used to help compile Emacs with C compilers
that had limits on the significant length of an identifier, but in
fact we stopped supporting such compilers some time ago.
* Changes in Emacs 20.3
** The new command C-x z (repeat) repeats the previous command
including its argument. If you repeat the z afterward,
it repeats the command additional times; thus, you can
perform many repetitions with one keystroke per repetition.
** Emacs now supports "selective undo" which undoes only within a
specified region. To do this, set point and mark around the desired
region and type C-u C-x u (or C-u C-_). You can then continue undoing
further, within the same region, by repeating the ordinary undo
command C-x u or C-_. This will keep undoing changes that were made
within the region you originally specified, until either all of them
are undone, or it encounters a change which crosses the edge of that
region.
In Transient Mark mode, undoing when a region is active requests
selective undo.
** If you specify --unibyte when starting Emacs, then all buffers are
unibyte, except when a Lisp program specifically creates a multibyte
buffer. Setting the environment variable EMACS_UNIBYTE has the same
effect. The --no-unibyte option overrides EMACS_UNIBYTE and directs
Emacs to run normally in multibyte mode.
The option --unibyte does not affect the reading of Emacs Lisp files,
though. If you want a Lisp file to be read in unibyte mode, use
-*-unibyte: t;-*- on its first line. That will force Emacs to
load that file in unibyte mode, regardless of how Emacs was started.
** toggle-enable-multibyte-characters no longer has a key binding and
no longer appears in the menu bar. We've realized that changing the
enable-multibyte-characters variable in an existing buffer is
something that most users not do.
** You can specify a coding system to use for the next cut or paste
operations through the window system with the command C-x RET X.
The coding system can make a difference for communication with other
applications.
C-x RET x specifies a coding system for all subsequent cutting and
pasting operations.
** You can specify the printer to use for commands that do printing by
setting the variable 'printer-name'. Just what a printer name looks
like depends on your operating system. You can specify a different
printer for the PostScript printing commands by setting
'ps-printer-name'.
** Emacs now supports on-the-fly spell checking by the means of a
minor mode. It is called M-x flyspell-mode. You don't have to remember
any other special commands to use it, and you will hardly notice it
except when you make a spelling error. Flyspell works by highlighting
incorrect words as soon as they are completed or as soon as the cursor
hits a new word.
Flyspell mode works with whichever dictionary you have selected for
Ispell in Emacs. In TeX mode, it understands TeX syntax so as not
to be confused by TeX commands.
You can correct a misspelled word by editing it into something
correct. You can also correct it, or accept it as correct, by
clicking on the word with Mouse-2; that gives you a pop-up menu
of various alternative replacements and actions.
Flyspell mode also proposes "automatic" corrections. M-TAB replaces
the current misspelled word with a possible correction. If several
corrections are made possible, M-TAB cycles through them in
alphabetical order, or in order of decreasing likelihood if
flyspell-sort-corrections is nil.
Flyspell mode also flags an error when a word is repeated, if
flyspell-mark-duplications-flag is non-nil.
** Changes in input method usage.
Now you can use arrow keys (right, left, down, up) for selecting among
the alternatives just the same way as you do by C-f, C-b, C-n, and C-p
respectively.
You can use the ENTER key to accept the current conversion.
If you type TAB to display a list of alternatives, you can select one
of the alternatives with Mouse-2.
The meaning of the variable 'input-method-verbose-flag' is changed so
that you can set it to t, nil, 'default', or 'complex-only'.
If the value is nil, extra guidance is never given.
If the value is t, extra guidance is always given.
If the value is 'complex-only', extra guidance is always given only
when you are using complex input methods such as chinese-py.
If the value is 'default' (this is the default), extra guidance is
given in the following case:
o When you are using a complex input method.
o When you are using a simple input method but not in the minibuffer.
If you are using Emacs through a very slow line, setting
input-method-verbose-flag to nil or to complex-only is a good choice,
and if you are using an input method you are not familiar with,
setting it to t is helpful.
The old command 'select-input-method' is now called 'set-input-method'.
In the language environment "Korean", you can use the following
keys:
Shift-SPC toggle-korean-input-method
C-F9 quail-hangul-switch-symbol-ksc
F9 quail-hangul-switch-hanja
These key bindings are canceled when you switch to another language
environment.
** The minibuffer history of file names now records the specified file
names, not the entire minibuffer input. For example, if the
minibuffer starts out with /usr/foo/, you might type in /etc/passwd to
get
/usr/foo//etc/passwd
which stands for the file /etc/passwd.
Formerly, this used to put /usr/foo//etc/passwd in the history list.
Now this puts just /etc/passwd in the history list.
** If you are root, Emacs sets backup-by-copying-when-mismatch to t
at startup, so that saving a file will be sure to preserve
its owner and group.
** find-func.el can now also find the place of definition of Emacs
Lisp variables in user-loaded libraries.
** C-x r t (string-rectangle) now deletes the existing rectangle
contents before inserting the specified string on each line.
** There is a new command 'delete-whitespace-rectangle'
which deletes whitespace starting from a particular column
in all the lines on a rectangle. The column is specified
by the left edge of the rectangle.
** You can now store a number into a register with C-u NUMBER C-x r n REG,
increment it by INC with C-u INC C-x r + REG (to increment by one, omit
C-u INC), and insert it in the buffer with C-x r g REG. This is useful
for writing keyboard macros.
** The new command M-x speedbar displays a frame in which directories,
files, and tags can be displayed, manipulated, and jumped to. The
frame defaults to 20 characters in width, and is the same height as
the frame that it was started from. Some major modes define
additional commands for the speedbar, including Rmail, GUD/GDB, and
info.
** query-replace-regexp is now bound to C-M-%.
** In Transient Mark mode, when the region is active, M-x
query-replace and the other replace commands now operate on the region
contents only.
** M-x write-region, when used interactively, now asks for
confirmation before overwriting an existing file. When you call
the function from a Lisp program, a new optional argument CONFIRM
says whether to ask for confirmation in this case.
** If you use 'find-file-literally' and the file is already visited
non-literally, the command asks you whether to revisit the file
literally. If you say no, it signals an error.
** Major modes defined with the "derived mode" feature
now use the proper name for the mode hook: WHATEVER-mode-hook.
Formerly they used the name WHATEVER-mode-hooks, but that is
inconsistent with Emacs conventions.
** 'shell-command-on-region' (and shell-command) reports success or
failure if the command produces no output.
** Set 'focus-follows-mouse' to nil if your window system or window
manager does not transfer focus to another window when you just move
the mouse.
** 'mouse-menu-buffer-maxlen' has been renamed to
'mouse-buffer-menu-maxlen' to be consistent with the other related
function and variable names.
** The new variable 'auto-coding-alist' specifies coding systems for
reading specific files. This has higher priority than
'file-coding-system-alist'.
** If you set the variable 'unibyte-display-via-language-environment' to
t, then Emacs displays non-ASCII characters are displayed by
converting them to the equivalent multibyte characters according to
the current language environment. As a result, they are displayed
according to the current fontset.
** C-q's handling of codes in the range 0200 through 0377 is changed.
The codes in the range 0200 through 0237 are inserted as one byte of
that code regardless of the values of 'nonascii-translation-table' and
nonascii-insert-offset.
For the codes in the range 0240 through 0377, if
enable-multibyte-characters is non-nil and nonascii-translation-table
nor nonascii-insert-offset can't convert them to valid multibyte
characters, they are converted to Latin-1 characters.
** If you try to find a file that is not read-accessible, you now get
an error, rather than an empty buffer and a warning.
** In the minibuffer history commands M-r and M-s, an upper case
letter in the regular expression forces case-sensitive search.
** In the *Help* buffer, cross-references to commands and variables
are inferred and hyperlinked. Use C-h m in Help mode for the relevant
command keys.
** M-x apropos-command, with a prefix argument, no longer looks for
user option variables--instead it looks for noninteractive functions.
Meanwhile, the command 'apropos-variable' normally searches for
user option variables; with a prefix argument, it looks at
all variables that have documentation.
** When you type a long line in the minibuffer, and the minibuffer
shows just one line, automatically scrolling works in a special way
that shows you overlap with the previous line of text. The variable
'minibuffer-scroll-overlap' controls how many characters of overlap
it should show; the default is 20.
Meanwhile, Resize Minibuffer mode is still available; in that mode,
the minibuffer grows taller (up to a point) as needed to show the whole
of your input.
** The new command M-x customize-changed-options lets you customize
all the options whose meanings or default values have changed in
recent Emacs versions. You specify a previous Emacs version number as
argument, and the command creates a customization buffer showing all
the customizable options which were changed since that version.
Newly added options are included as well.
If you don't specify a particular version number argument,
then the customization buffer shows all the customizable options
for which Emacs versions of changes are recorded.
This function is also bound to the Changed Options entry in the
Customize menu.
** When you run M-x grep with a prefix argument, it figures out
the tag around point and puts that into the default grep command.
** The new command M-* (pop-tag-mark) pops back through a history of
buffer positions from which M-. or other tag-finding commands were
invoked.
** The new variable 'comment-padding' specifies the number of spaces
that 'comment-region' will insert before the actual text of the comment.
The default is 1.
** In Fortran mode the characters `.', `_' and `$' now have symbol
syntax, not word syntax. Fortran mode now supports 'imenu' and has
new commands 'fortran-join-line' (M-^) and 'fortran-narrow-to-subprogram'
(C-x n d). M-q can be used to fill a statement or comment block
sensibly.
** GUD now supports 'jdb', the Java debugger, and 'pdb', the Python debugger.
** If you set the variable 'add-log-keep-changes-together' to a non-nil
value, the command `C-x 4 a' will automatically notice when you make
two entries in one day for one file, and combine them.
** You can use the command M-x diary-mail-entries to mail yourself a
reminder about upcoming diary entries. See the documentation string
for a sample shell script for calling this function automatically
every night.
** Desktop changes
*** All you need to do to enable use of the Desktop package, is to set
the variable desktop-enable to t with Custom.
*** Minor modes are now restored. Which minor modes are restored
and how modes are restored is controlled by 'desktop-minor-mode-table'.
** There is no need to do anything special, now, to enable Gnus to
read and post multi-lingual articles.
** Outline mode has now support for showing hidden outlines when
doing an isearch. In order for this to happen 'search-invisible' should
be set to open (the default). If an isearch match is inside a hidden
outline the outline is made visible. If you continue pressing C-s and
the match moves outside the formerly invisible outline, the outline is
made invisible again.
** Mail reading and sending changes
*** The Rmail e command now switches to displaying the whole header of
the message before it lets you edit the message. This is so that any
changes you make in the header will not be lost if you subsequently
toggle.
*** The w command in Rmail, which writes the message body into a file,
now works in the summary buffer as well. (The command to delete the
summary buffer is now Q.) The default file name for the w command, if
the message has no subject, is stored in the variable
rmail-default-body-file.
*** Most of the commands and modes that operate on mail and netnews no
longer depend on the value of mail-header-separator. Instead, they
handle whatever separator the buffer happens to use.
*** If you set mail-signature to a value which is not t, nil, or a string,
it should be an expression. When you send a message, this expression
is evaluated to insert the signature.
*** The new Lisp library feedmail.el (version 8) enhances processing of
outbound email messages. It works in coordination with other email
handling packages (e.g., rmail, VM, gnus) and is responsible for
putting final touches on messages and actually submitting them for
transmission. Users of the emacs program "fakemail" might be
especially interested in trying feedmail.
feedmail is not enabled by default. See comments at the top of
feedmail.el for set-up instructions. Among the bigger features
provided by feedmail are:
**** you can park outgoing messages into a disk-based queue and
stimulate sending some or all of them later (handy for laptop users);
there is also a queue for draft messages
**** you can get one last look at the prepped outbound message and
be prompted for confirmation
**** does smart filling of address headers
**** can generate a MESSAGE-ID: line and a DATE: line; the date can be
the time the message was written or the time it is being sent; this
can make Fcc copies more closely resemble copies that recipients get
**** you can specify an arbitrary function for actually transmitting
the message; included in feedmail are interfaces for /bin/[r]mail,
/usr/lib/sendmail, and Emacs Lisp smtpmail; it's easy to write a new
function for something else (10-20 lines of Lisp code).
** Dired changes
*** The Dired function dired-do-toggle, which toggles marked and unmarked
files, is now bound to "t" instead of "T".