emacs /etc/NEWS.19

Language Unknown Lines 6543
MD5 Hash a7848f4bcac06446a7f02498a9296f8e
Repository git://github.com/emacsmirror/emacs.git View Raw File
   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
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
GNU Emacs NEWS -- history of user-visible changes.  1992.

Copyright (C) 1993-1995, 2001, 2006-2012  Free Software Foundation, Inc.
See the end of the file for license conditions.


This file is about changes in emacs versions 19.



* Emacs 19.34 is a bug-fix release with no user-visible changes.



* Changes in Emacs 19.33.

** Bibtex mode no longer turns on Auto Fill automatically.  (No major
mode should do that--it is the user's choice.)

** The variable normal-auto-fill-function specifies the function to
use for auto-fill-function, if and when Auto Fill is turned on.
Major modes can set this locally to alter how Auto Fill works.



* Editing Changes in Emacs 19.32

** C-x f with no argument now signals an error.
To set the fill column at the current column, use C-u C-x f.

** Expanding dynamic abbrevs with M-/ is now smarter about case
conversion.  If you type the abbreviation with mixed case, and it
matches the beginning of the expansion including case, then the
expansion is copied verbatim.  Using SPC M-/ to copy an additional
word always copies it verbatim except when the previous copied word is
all caps.

** On a non-windowing terminal, which can display only one Emacs frame
at a time, creating a new frame with C-x 5 2 also selects that frame.

When using a display that can show multiple frames at once, C-x 5 2
does make the frame visible, but does not select it.  This is the same
as in previous Emacs versions.

** You can use C-x 5 2 to create multiple frames on MSDOS, just as on a
non-X terminal on Unix.  Of course, only one frame is visible at any
time, since your terminal doesn't have the ability to display multiple
frames.

** On Windows, set win32-pass-alt-to-system to a non-nil value
if you would like tapping the Alt key to invoke the Windows menu.
This feature is not enabled by default; since the Alt key is also the
Meta key, it is too easy and painful to activate this feature by
accident.

** The command apply-macro-to-region-lines repeats the last defined
keyboard macro once for each complete line within the current region.
It does this line by line, by moving point to the beginning of that
line and then executing the macro.

This command is not new, but was never documented before.

** You can now use Mouse-1 to place the region around a string constant
(something surrounded by doublequote characters or other delimiter
characters of like syntax) by double-clicking on one of the delimiting
characters.

** Font Lock mode

*** Font Lock support modes

Font Lock can be configured to use Fast Lock mode and Lazy Lock mode (see
below) in a flexible way.  Rather than adding the appropriate function to the
hook font-lock-mode-hook, you can use the new variable font-lock-support-mode
to control which modes have Fast Lock mode or Lazy Lock mode turned on when
Font Lock mode is enabled.

For example, to use Fast Lock mode when Font Lock mode is turned on, put:

 (setq font-lock-support-mode 'fast-lock-mode)

in your ~/.emacs.

*** lazy-lock

The lazy-lock package speeds up Font Lock mode by making fontification occur
only when necessary, such as when a previously unfontified part of the buffer
becomes visible in a window.  When you create a buffer with Font Lock mode and
Lazy Lock mode turned on, the buffer is not fontified.  When certain events
occur (such as scrolling), Lazy Lock makes sure that the visible parts of the
buffer are fontified.  Lazy Lock also defers on-the-fly fontification until
Emacs has been idle for a given amount of time.

To use this package, put in your ~/.emacs:

 (setq font-lock-support-mode 'lazy-lock-mode)

To control the package behavior, see the documentation for `lazy-lock-mode'.

** Changes in BibTeX mode.

*** For all entries allow spaces and tabs between opening brace or
paren and key.

*** Non-escaped double-quoted characters (as in `Sch"of') are now
supported.

** Gnus changes.

Gnus, the Emacs news reader, has undergone further rewriting.  Many new
commands and variables have been added.  There should be no
significant incompatibilities between this Gnus version and the
previously released version, except in the message composition area.

Below is a list of the more user-visible changes.  Coding changes
between Gnus 5.1 and 5.2 are more extensive.

*** A new message composition mode is used.  All old customization
variables for mail-mode, rnews-reply-mode and gnus-msg are now
obsolete.

*** Gnus is now able to generate "sparse" threads -- threads where
missing articles are represented by empty nodes.

    (setq gnus-build-sparse-threads 'some)

*** Outgoing articles are stored on a special archive server.

    To disable this:  (setq gnus-message-archive-group nil)

*** Partial thread regeneration now happens when articles are
referred.

*** Gnus can make use of GroupLens predictions:

    (setq gnus-use-grouplens t)

*** A trn-line tree buffer can be displayed.

    (setq gnus-use-trees t)

*** An nn-like pick-and-read minor mode is available for the summary
buffers.

    (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode)

*** In binary groups you can use a special binary minor mode:

    `M-x gnus-binary-mode'

*** Groups can be grouped in a folding topic hierarchy.

    (add-hook 'gnus-group-mode-hook 'gnus-topic-mode)

*** Gnus can re-send and bounce mail.

    Use the `S D r' and `S D b'.

*** Groups can now have a score, and bubbling based on entry frequency
is possible.

    (add-hook 'gnus-summary-exit-hook 'gnus-summary-bubble-group)

*** Groups can be process-marked, and commands can be performed on
groups of groups.

*** Caching is possible in virtual groups.

*** nndoc now understands all kinds of digests, mail boxes, rnews news
batches, ClariNet briefs collections, and just about everything else.

*** Gnus has a new backend (nnsoup) to create/read SOUP packets.

*** The Gnus cache is much faster.

*** Groups can be sorted according to many criteria.

    For instance: (setq gnus-group-sort-function 'gnus-group-sort-by-rank)

*** New group parameters have been introduced to set list-address and
expiration times.

*** All formatting specs allow specifying faces to be used.

*** There are several more commands for setting/removing/acting on
process marked articles on the `M P' submap.

*** The summary buffer can be limited to show parts of the available
articles based on a wide range of criteria.  These commands have been
bound to keys on the `/' submap.

*** Articles can be made persistent -- as an alternative to saving
articles with the `*' command.

*** All functions for hiding article elements are now toggles.

*** Article headers can be buttonized.

    (add-hook 'gnus-article-display-hook 'gnus-article-add-buttons-to-head)

*** All mail backends support fetching articles by Message-ID.

*** Duplicate mail can now be treated properly.  See the
`nnmail-treat-duplicates' variable.

*** All summary mode commands are available directly from the article
buffer.

*** Frames can be part of `gnus-buffer-configuration'.

*** Mail can be re-scanned by a daemonic process.

*** Gnus can make use of NoCeM files to filter spam.

    (setq gnus-use-nocem t)

*** Groups can be made permanently visible.

    (setq gnus-permanently-visible-groups "^nnml:")

*** Many new hooks have been introduced to make customizing easier.

*** Gnus respects the Mail-Copies-To header.

*** Threads can be gathered by looking at the References header.

    (setq gnus-summary-thread-gathering-function
          'gnus-gather-threads-by-references)

*** Read articles can be stored in a special backlog buffer to avoid
refetching.

    (setq gnus-keep-backlog 50)

*** A clean copy of the current article is always stored in a separate
buffer to allow easier treatment.

*** Gnus can suggest where to save articles.  See `gnus-split-methods'.

*** Gnus doesn't have to do as much prompting when saving.

    (setq gnus-prompt-before-saving t)

*** gnus-uu can view decoded files asynchronously while fetching
articles.

    (setq gnus-uu-grabbed-file-functions 'gnus-uu-grab-view)

*** Filling in the article buffer now works properly on cited text.

*** Hiding cited text adds buttons to toggle hiding, and how much
cited text to hide is now customizable.

    (setq gnus-cited-lines-visible 2)

*** Boring headers can be hidden.

    (add-hook 'gnus-article-display-hook 'gnus-article-hide-boring-headers)

*** Default scoring values can now be set from the menu bar.

*** Further syntax checking of outgoing articles have been added.

The Gnus manual has been expanded.  It explains all these new features
in greater detail.


* Lisp Changes in Emacs 19.32

** The function set-visited-file-name now accepts an optional
second argument NO-QUERY.  If it is non-nil, then the user is not
asked for confirmation in the case where the specified file already
exists.

** The variable print-length applies to printing vectors and bitvectors,
as well as lists.

** The new function keymap-parent returns the parent keymap
of a given keymap.

** The new function set-keymap-parent specifies a new parent for a
given keymap.  The arguments are KEYMAP and PARENT.  PARENT must be a
keymap or nil.

** Sometimes menu keymaps use a command name, a symbol, which is really
an automatically generated alias for some other command, the "real"
name.  In such a case, you should give that alias symbol a non-nil
menu-alias property.  That property tells the menu system to look for
equivalent keys for the real name instead of equivalent keys for the
alias.



* Editing Changes in Emacs 19.31

** Freedom of the press restricted in the United States.

Emacs has been censored in accord with the Communications Decency Act.
This includes removing some features of the doctor program.  That law
was described by its supporters as a ban on pornography, but it bans
far more than that.  The Emacs distribution has never contained any
pornography, but parts of it were nonetheless prohibited.

For information on US government censorship of the Internet, and what
you can do to bring back freedom of the press, see the web site
`http://www.vtw.org/'.

** A note about C mode indentation customization.

The old (Emacs 19.29) ways of specifying a C indentation style
do not normally work in the new implementation of C mode.
It has its own methods of customizing indentation, which are
much more powerful than the old C mode.  See the Editing Programs
chapter of the manual for details.

However, you can load the library cc-compat to make the old
customization variables take effect.

** Marking with the mouse.

When you mark a region with the mouse, the region now remains
highlighted until the next input event, regardless of whether you are
using M-x transient-mark-mode.

** Improved Windows NT/95 support.

*** Emacs now supports scroll bars on Windows NT and Windows 95.

*** Emacs now supports subprocesses on Windows 95.  (Subprocesses used
to work on NT only and not on 95.)

*** There are difficulties with subprocesses, though, due to problems
in Windows, beyond the control of Emacs.  They work fine as long as
you run Windows applications.  The problems arise when you run a DOS
application in a subprocesses.  Since current shells run as DOS
applications, these problems are significant.

If you run a DOS application in a subprocess, then the application is
likely to busy-wait, which means that your machine will be 100% busy.
However, if you don't mind the temporary heavy load, the subprocess
will work OK as long as you tell it to terminate before you start any
other DOS application as a subprocess.

Emacs is unable to terminate or interrupt a DOS subprocess.
You have to do this by providing input directly to the subprocess.

If you run two DOS applications at the same time in two separate
subprocesses, even if one of them is asynchronous, you will probably
have to reboot your machine--until then, it will remain 100% busy.
Windows simply does not cope when one Windows process tries to run two
separate DOS subprocesses.  Typing CTL-ALT-DEL and then choosing
Shutdown seems to work although it may take a few minutes.

** M-x resize-minibuffer-mode.

This command, not previously mentioned in NEWS, toggles a mode in
which the minibuffer window expands to show as many lines as the
minibuffer contains.

** `title' frame parameter and resource.

The `title' X resource now specifies just the frame title, nothing else.
It does not affect the name used for looking up other X resources.
It works by setting the new `title' frame parameter, which likewise
affects just the displayed title of the frame.

The `name' parameter continues to do what it used to do:
it specifies the frame name for looking up X resources,
and also serves as the default for the displayed title
when the `title' parameter is unspecified or nil.

** Emacs now uses the X toolkit by default, if you have a new
enough version of X installed (X11R5 or newer).

** When you compile Emacs with the Motif widget set, Motif handles the
F10 key by activating the menu bar.  To avoid confusion, the usual
Emacs binding of F10 is replaced with a no-op when using Motif.

If you want to be able to use F10 in Emacs, you can rebind the Motif
menubar to some other key which you don't use.  To do so, add
something like this to your X resources file.  This example rebinds
the Motif menu bar activation key to S-F12:

   Emacs*defaultVirtualBindings:  osfMenuBar : Shift<Key>F12

** In overwrite mode, DEL now inserts spaces in most cases
to replace the characters it "deletes".

** The Rmail summary now shows the number of lines in each message.

** Rmail has a new command M-x unforward-rmail-message, which extracts
a forwarded message from the message that forwarded it.  To use it,
select a message which contains a forwarded message and then type the command.
It inserts the forwarded message as a separate Rmail message
immediately after the selected one.

This command also undoes the textual modifications that are standardly
made, as part of forwarding, by Rmail and other mail reader programs.

** Turning off saving of .saves-... files in your home directory.

Each Emacs session writes a file named .saves-... in your home
directory to record which files M-x recover-session should recover.
If you exit Emacs normally with C-x C-c, it deletes that file.  If
Emacs or the operating system crashes, the file remains for M-x
recover-session.

You can turn off the writing of these files by setting
auto-save-list-file-name to nil.  If you do this, M-x recover-session
will not work.

Some previous Emacs versions failed to delete these files even on
normal exit.  This is fixed now.  If you are thinking of turning off
this feature because of past experiences with versions that had this
bug, it would make sense to check whether you still want to do so
now that the bug is fixed.

** Changes to Version Control (VC)

There is a new variable, vc-follow-symlinks.  It indicates what to do
when you visit a link to a file that is under version control.
Editing the file through the link bypasses the version control system,
which is dangerous and probably not what you want.

If this variable is t, VC follows the link and visits the real file,
telling you about it in the echo area.  If it is `ask' (the default),
VC asks for confirmation whether it should follow the link.  If nil,
the link is visited and a warning displayed.

** iso-acc.el now lets you specify a choice of language.
Languages include "latin-1" (the default) and "latin-2" (which
is designed for entering ISO Latin-2 characters).

There are also choices for specific human languages such as French and
Portuguese.  These are subsets of Latin-1, which differ in that they
enable only the accent characters needed for particular language.
The other accent characters, not needed for the chosen language,
remain normal.

** Posting articles and sending mail now has M-TAB completion on various
header fields (Newsgroups, To, CC, ...).

Completion in the Newsgroups header depends on the list of groups
known to your news reader.  Completion in the Followup-To header
offers those groups which are in the Newsgroups header, since
Followup-To usually just holds one of those.

Completion in fields that hold mail addresses works based on the list
of local users plus your aliases.  Additionally, if your site provides
a mail directory or a specific host to use for any unrecognized user
name, you can arrange to query that host for completion also.  (See the
documentation of variables `mail-directory-process' and
`mail-directory-stream'.)

** A greatly extended sgml-mode offers new features such as (to be configured)
skeletons with completing read for tags and attributes, typing named
characters including optionally all 8bit characters, making tags invisible
with optional alternate display text, skipping and deleting tag(pair)s.

Note: since Emacs' syntax feature cannot limit the special meaning of ', " and
- to inside <>, for some texts the result, especially of font locking, may be
wrong (see `sgml-specials' if you get wrong results).

The derived html-mode configures this with tags and attributes more or
less HTML3ish.  It also offers optional quick keys like C-c 1 for
headline or C-c u for unordered list (see `html-quick-keys').  Edit /
Text Properties / Face or M-g combinations create tags as applicable.
Outline minor mode is supported and level 1 font-locking tries to
fontify tag contents (which only works when they fit on one line, due
to a limitation in font-lock).

External viewing via browse-url can occur automatically upon saving.

** M-x imenu-add-to-menubar now adds to the menu bar for the current
buffer only.  If you want to put an Imenu item in the menu bar for all
buffers that use a particular major mode, use the mode hook, as in
this example:

    (add-hook 'emacs-lisp-mode-hook
	      '(lambda () (imenu-add-to-menubar "Index")))

** Changes in BibTeX mode.

*** Field names may now contain digits, hyphens, and underscores.

*** Font Lock mode is now supported.

*** bibtex-make-optional-field is no longer interactive.

*** If bibtex-maintain-sorted-entries is non-nil, inserting new
entries is now done with a faster algorithm.  However, inserting
will fail in this case if the buffer contains invalid entries or
isn't in sorted order, so you should finish each entry with C-c C-c
(bibtex-close-entry) after you have inserted or modified it.
The default value of bibtex-maintain-sorted-entries is nil.

*** Function `show-all' is no longer bound to a key, since C-u C-c C-q
does the same job.

*** Entries with quotes inside quote-delimited fields (as `author =
"Stefan Sch{\"o}f"') are now supported.

*** Case in field names doesn't matter anymore when searching for help
text.

** Font Lock mode

*** Global Font Lock mode

Font Lock mode can be turned on globally, in buffers that support it, by the
new command global-font-lock-mode.  You can use the new variable
font-lock-global-modes to control which modes have Font Lock mode automagically
turned on.  By default, this variable is set so that Font Lock mode is turned
on globally where the buffer mode supports it.

For example, to automagically turn on Font Lock mode where supported, put:

 (global-font-lock-mode t)

in your ~/.emacs.

*** Local Refontification

In Font Lock mode, editing a line automatically refontifies that line only.
However, if your change alters the syntactic context for following lines,
those lines remain incorrectly fontified.  To refontify them, use the new
command M-g M-g (font-lock-fontify-block).

In certain major modes, M-g M-g refontifies the entire current function.
(The variable font-lock-mark-block-function controls how to find the
current function.)  In other major modes, M-g M-g refontifies 16 lines
above and below point.

With a prefix argument N, M-g M-g refontifies N lines above and below point.

** Follow mode

Follow mode is a new minor mode combining windows showing the same
buffer into one tall "virtual window".  The windows are typically two
side-by-side windows.  Follow mode makes them scroll together as if
they were a unit.  To use it, go to a frame with just one window,
split it into two side-by-side windows using C-x 3, and then type M-x
follow-mode.

M-x follow-mode turns off Follow mode if it is already enabled.

To display two side-by-side windows and activate Follow mode, use the
command M-x follow-delete-other-windows-and-split.

** hide-show changes.

The hooks hs-hide-hooks and hs-show-hooks have been renamed
to hs-hide-hook and hs-show-hook, to follow the convention for
normal hooks.

** Simula mode now has a menu containing the most important commands.
The new command simula-indent-exp is bound to C-M-q.

** etags can now handle programs written in Erlang.  Files are
recognized by the extensions .erl and .hrl.  The tagged lines are
those that begin a function, record, or macro.

** MSDOS Changes

*** It is now possible to compile Emacs with the version 2 of DJGPP.
Compilation with DJGPP version 1 also still works.

*** The documentation of DOS-specific aspects of Emacs was rewritten
and expanded; see the ``MS-DOS'' node in the on-line docs.

*** Emacs now uses ~ for backup file names, not .bak.

*** You can simulate mouse-3 on two-button mice by simultaneously
pressing both mouse buttons.

*** A number of packages and commands which previously failed or had
restricted functionality on MS-DOS, now work.  The most important ones
are:

**** Printing (both with `M-x lpr-buffer' and with `ps-print' package)
now works.

**** `Ediff' works (in a single-frame mode).

**** `M-x display-time' can be used on MS-DOS (due to the new
implementation of Emacs timers, see below).

**** `Dired' supports Unix-style shell wildcards.

**** The `c-macro-expand' command now works as on other platforms.

**** `M-x recover-session' works.

**** `M-x list-colors-display' displays all the available colors.

**** The `TPU-EDT' package works.


* Lisp changes in Emacs 19.31.

** The function using-unix-filesystems on Windows NT and Windows 95
tells Emacs to read and write files assuming that they reside on a
remote Unix filesystem.  No CR/LF translation is done on any files in
this case.  Invoking using-unix-filesystems with t activates this
behavior, and invoking it with any other value deactivates it.

** Change in system-type and system-configuration values.

The value of system-type on a Linux-based GNU system is now `lignux',
not `linux'.  This means that some programs which use `system-type'
need to be changed.  The value of `system-configuration' will also
be different.

It is generally recommended to use `system-configuration' rather
than `system-type'.

See the file LINUX-GNU in this directory for more about this.

** The functions shell-command and dired-call-process
now run file name handlers for default-directory, if it has them.

** Undoing the deletion of text now restores the positions of markers
that pointed into or next to the deleted text.

** Timers created with run-at-time now work internally to Emacs, and
no longer use a separate process.  Therefore, they now work more
reliably and can be used for shorter time delays.

The new function run-with-timer is a convenient way to set up a timer
to run a specified amount of time after the present.  A call looks
like this:

  (run-with-timer SECS REPEAT FUNCTION ARGS...)

SECS says how many seconds should elapse before the timer happens.
It may be an integer or a floating point number.  When the timer
becomes ripe, the action is to call FUNCTION with arguments ARGS.

REPEAT gives the interval for repeating the timer (measured in
seconds).  It may be an integer or a floating point number.  nil or 0
means don't repeat at all--call FUNCTION just once.

*** with-timeout provides an easy way to do something but give
up if too much time passes.

  (with-timeout (SECONDS TIMEOUT-FORMS...) BODY...)

This executes BODY, but gives up after SECONDS seconds.
If it gives up, it runs the TIMEOUT-FORMS and returns the value
of the last one of them.  Normally it returns the value of the last
form in BODY.

*** You can now arrange to call a function whenever Emacs is idle for
a certain length of time.  To do this, call run-with-idle-timer.  A
call looks like this:

  (run-with-idle-timer SECS REPEAT FUNCTION ARGS...)

SECS says how many seconds of idleness should elapse before the timer
runs.  It may be an integer or a floating point number.  When the
timer becomes ripe, the action is to call FUNCTION with arguments
ARGS.

Emacs becomes idle whenever it finishes executing a keyboard or mouse
command.  It remains idle until it receives another keyboard or mouse
command.

REPEAT, if non-nil, means this timer should be activated again each
time Emacs becomes idle and remains idle for SECS seconds The timer
does not repeat if Emacs *remains* idle; it runs at most once after
each time Emacs becomes idle.

If REPEAT is nil, the timer runs just once, the first time Emacs is
idle for SECS seconds.

*** post-command-idle-hook is now obsolete; you shouldn't use it at
all, because it interferes with the idle timer mechanism.  If your
programs use post-command-idle-hook, convert them to use idle timers
instead.

*** y-or-n-p-with-timeout lets you ask a question but give up if
there is no answer within a certain time.

  (y-or-n-p-with-timeout PROMPT SECONDS DEFAULT-VALUE)

asks the question PROMPT (just like y-or-n-p).  If the user answers
within SECONDS seconds, it returns the answer that the user gave.
Otherwise it gives up after SECONDS seconds, and returns DEFAULT-VALUE.

** Minor change to `encode-time': you can now pass more than seven
arguments.  If you do that, the first six arguments have the usual
meaning, the last argument is interpreted as the time zone, and the
arguments in between are ignored.

This means that it works to use the list returned by `decode-time' as
the list of arguments for `encode-time'.

** The default value of load-path now includes the directory
/usr/local/share/emacs/VERSION/site-lisp In addition to
/usr/local/share/emacs/site-lisp.  You can use this new directory for
site-specific Lisp packages that belong with a particular Emacs
version.

It is not unusual for a Lisp package that works well in one Emacs
version to cause trouble in another.  Sometimes packages need updating
for incompatible changes; sometimes they look at internal data that
has changed; sometimes the package has been installed in Emacs itself
and the installed version should be used.  Whatever the reason for the
problem, this new feature makes it easier to solve.

** When your program contains a fixed file name (like .completions or
.abbrev.defs), the file name usually needs to be different on operating
systems with limited file name syntax.

Now you can avoid ad-hoc conditionals by using the function
convert-standard-filename to convert the file name to a proper form
for each operating system.  Here is an example of use, from the file
completions.el:

(defvar save-completions-file-name
        (convert-standard-filename "~/.completions")
  "*The filename to save completions to.")

This sets the variable save-completions-file-name to a value that
depends on the operating system, because the definition of
convert-standard-filename depends on the operating system.  On
Unix-like systems, it returns the specified file name unchanged.  On
MS-DOS, it adapts the name to fit the limitations of that system.

** The interactive spec N now returns the numeric prefix argument
rather than the raw prefix argument.  (It still reads a number using the
minibuffer if there is no prefix argument at all.)

** When a process is deleted, this no longer disconnects the process
marker from its buffer position.

** The variable garbage-collection-messages now controls whether
Emacs displays a message at the beginning and end of garbage collection.
The default is nil, meaning there are no messages.

** The variable debug-ignored-errors specifies certain kinds of errors
that should not enter the debugger.  Its value is a list of error
condition symbols and/or regular expressions.  If the error has any
of the condition symbols listed, or if any of the regular expressions
matches the error message, then that error does not enter the debugger,
regardless of the value of debug-on-error.

This variable is initialized to match certain common but uninteresting
errors that happen often during editing.

** The new function error-message-string converts an error datum
into its error message.  The error datum is what condition-case
puts into the variable, to describe the error that happened.

** Anything that changes which buffer appears in a given window
now runs the window-scroll-functions for that window.

** The new function get-buffer-window-list returns a list of windows displaying
a buffer.  The function is called with the buffer (a buffer object or a buffer
name) and two optional arguments specifying the minibuffer windows and frames
to search.  Therefore this function takes optional args like next-window etc.,
and not get-buffer-window.

** buffer-substring now runs the hook buffer-access-fontify-functions,
calling each function with two arguments--the range of the buffer
being accessed.  buffer-substring-no-properties does not call them.

If you use this feature, you should set the variable
buffer-access-fontified-property to a non-nil symbol, which is a
property name.  Then, if all the characters in the buffer range have a
non-nil value for that property, the buffer-access-fontify-functions
are not called.  When called, these functions should put a non-nil
property on the text that they fontify, so that they won't get called
over and over for the same text.

** Changes in lisp-mnt.el

*** The lisp-mnt package can now recognize file headers that are written
in the formats used by the `what' command and the RCS `ident' command:

;; @(#) HEADER: text
;; $HEADER: text $

in addition to the normal

;; HEADER: text

*** The commands lm-verify and lm-synopsis are now interactive.  lm-verify
checks that the library file has proper sections and headers, and
lm-synopsis extracts first line "synopsis'"information.



* Editing Changes in Emacs 19.30.

** Be sure to recompile your byte-compiled Emacs Lisp files
if you last compiled them with Emacs 19.28 or earlier.
You can use M-x byte-force-recompile to recompile all the .elc files
in a specified directory.

** Emacs now provides multiple-frame support on Windows NT
and Windows 95.

** M-x column-number-mode toggles a minor mode which displays
the current column number in the mode line.

** Line Number mode is now enabled by default.

** M-x what-line now displays the line number in the accessible
portion of the buffer as well as the line number in the full buffer,
when narrowing is in effect.

** If you type a M-x command that has an equivalent key binding,
the equivalent is shown in the minibuffer before the command executes.
This feature is enabled by default for the sake of beginning users.
You can turn the feature off by setting suggest-key-bindings to nil.

** The menu bar is now visible on text-only terminals.  To choose a
command from the menu bar when you have no mouse, type M-`
(Meta-Backquote) or F10.  To turn off menu bar display,
do (menu-bar-mode -1).

** Whenever you invoke a minibuffer, it appears in the minibuffer
window that the current frame uses.

Emacs can only use one minibuffer window at a time.  If you activate
the minibuffer while a minibuffer window is active in some other
frame, the outer minibuffer window disappears while the inner one is
active.

** Echo area messages always appear in the minibuffer window that the
current frame uses.  If a minibuffer is active in some other frame,
the echo area message does not hide it even temporarily.

** The minibuffer now has a menu-bar menu.  You can use it to exit or
abort the minibuffer, or to ask for completion.

** Dead-key and composite character processing is done in the standard
X11R6 manner (through the default "input method" using the
/usr/lib/X11/locale/*/Compose databases of key combinations).  I.e. if
it works in xterm, it should also work in emacs now.

** Mouse changes

*** You can now use the mouse when running Emacs in an xterm.
Use M-x xterm-mouse-mode to let emacs take control over the mouse.

*** C-mouse-1 now once again provides a menu of buffers to select.
S-mouse-1 is now the way to select a default font for the frame.

*** There is a new mouse-scroll-min-lines variable to control the
minimum number of lines scrolled by dragging the mouse outside a
window's edge.

*** Dragging mouse-1 on a vertical line that separates windows
now moves the line, thus changing the widths of the two windows.
(This feature is available only if you don't have vertical scroll bars.
If you do use them, a scroll bar separates two side-by-side windows.)

*** Double-click mouse-1 on a character with "symbol" syntax (such as
underscore, in C mode) selects the entire symbol surrounding that
character.  (Double-click mouse-1 on a letter selects a whole word.)

** When incremental search wraps around to the beginning (or end) of
the buffer, if you keep on searching until you go past the original
starting point of the search, the echo area changes from "Wrapped" to
"Overwrapped".  That tells you that you are revisiting matches that
you have already seen.

** Filling changes.

*** If the variable colon-double-space is non-nil, the explicit fill
commands put two spaces after a colon.

*** Auto-Fill mode now supports Adaptive Fill mode just as the
explicit fill commands do.  The variable adaptive-fill-regexp
specifies a regular expression to match text at the beginning of
a line that should be the fill prefix.

*** Adaptive Fill mode can take a fill prefix from the first line of a
paragraph, *provided* that line is not a paragraph-starter line.

Paragraph-starter lines are indented lines that start a new
paragraph because they are indented.  This indentation shouldn't
be copied to additional lines.

Whether indented lines are paragraph lines depends on the value of the
variable paragraph-start.  Some major modes set this; you can set it
by hand or in mode hooks as well.  For editing text in which paragraph
first lines are not indented, and which contains paragraphs in which
all lines are indented, you should use Indented Text mode or arrange
for paragraph-start not to match these lines.

*** You can specify more complex ways of choosing a fill prefix
automatically by setting `adaptive-fill-function'.  This function
is called with point after the left margin of a line, and it should
return the appropriate fill prefix based on that line.
If it returns nil, that means it sees no fill prefix in that line.

** Gnus changes.

Gnus, the Emacs news reader, has been rewritten and expanded.  Most
things that worked with the old version should still work with the new
version.  Code that relies heavily on Gnus internals is likely to
fail, though.

*** Incompatibilities with the old GNUS.

**** All interactive commands have kept their names, but many internal
functions have changed names.

**** The summary mode gnus-uu commands have been moved from the `C-c
C-v' keymap to the `X' keymap.

**** There can now be several summary buffers active at once.
Variables that are relevant to each summary buffer are buffer-local to
that buffer.

**** Old hilit code doesn't work at all.  Gnus performs its own
highlighting based not only on what's visible in the buffer, but on
other data structures.

**** Old packages like `expire-kill' will no longer work.

**** `C-c C-l' in the group buffer no longer switches to a different
buffer, but instead lists killed groups in the group buffer.

*** New features.

**** The look of all buffers can be changed by setting format-like
variables.

**** Local spool and several NNTP servers can be used at once.

**** Groups can be combined into virtual groups.

**** Different mail formats can be read much the same way as one would
read newsgroups.  All the mail backends implement mail expiry schemes.

**** Gnus can use various strategies for gathering threads that have
lost their roots (thereby gathering loose sub-threads into one thread)
or it can go back and retrieve enough headers to build a complete
thread.

**** Killed groups can be read.

**** Gnus can do partial group updates - you do not have to retrieve
the entire active file just to check for new articles in a few groups.

**** Gnus implements a sliding scale of subscribedness to groups.

**** You can score articles according to any number of criteria.  You
can get Gnus to score articles for you using adaptive scoring.

**** Gnus maintains a dribble buffer that is auto-saved the normal
Emacs manner, so it should be difficult to lose much data on what you
have read if your machine should go down.

**** Gnus now has its own startup file (`.gnus.el') to avoid
cluttering up the `.emacs' file.

**** You can set the process mark on both groups and articles and
perform operations on all the marked items.

**** You can grep through a subset of groups and create a group from
the results.

**** You can list subsets of groups using matches on group names or
group descriptions.

**** You can browse foreign servers and subscribe to groups from those
servers.

**** Gnus can pre-fetch articles asynchronously on a second connection
to the servers.

**** You can cache articles locally.

**** Gnus can fetch FAQs to and descriptions of groups.

**** Digests (and other files) can be used as the basis for groups.

**** Articles can be highlighted and customized.

** Changes to Version Control (VC)

*** General changes (all backends).

VC directory listings (C-x v d) are now kept up to date when you do a
vc-next-action (C-x v v) on the marked files.  The `g' command updates
the buffer properly.  `=' in a VC dired buffer produces a version
control diff, not an ordinary diff.

*** CVS changes.

Under CVS, you no longer need to type C-x C-q before you can edit a
file.  VC doesn't write-protect unmodified buffers anymore; you can
freely change them at any time.  The mode line keeps track of the
file status.

If you do want unmodified files to be write-protected, set your
CVSREAD environment variable.  VC sees this and behaves accordingly;
that will give you the behavior of Emacs 19.29, similar to that under
RCS and SCCS.  In this mode, if the variable vc-mistrust-permissions
is nil, VC learns the modification state from the file permissions.
When setting CVSREAD for the first time, you should check out the
whole module anew, so that the file permissions are set correctly.

VC also works with remote repositories now.  When you visit a file, it
doesn't run "cvs status" anymore, so there shouldn't be any long delays.

Directory listings under VC/CVS have been enhanced.  Type C-x v d, and
you get a list of all files in or below the current directory that are
not up-to-date.  The actual status (modified, merge, conflict, ...) is
displayed for each file.  If you give a prefix argument (C-u C-x v d),
up-to-date files are also listed.  You can mark any number of files,
and execute the next logical version control command on them (C-x v v).

*** Starting a new branch.

If you try to lock a version that is not the latest on its branch,
VC asks for confirmation in the minibuffer.  If you say no, it offers
to lock the latest version instead.

*** RCS non-strict locking.

VC can now handle RCS non-strict locking, too.  In this mode, working
files are always writable and you needn't lock the file before making
changes, similar to the default mode under CVS.  To enable non-strict
locking for a file, use the "rcs -U" command.

*** Sharing RCS master files.

If you share RCS subdirs with other users (through symbolic links),
and you always want to work on the latest version, set
vc-consult-headers to nil and vc-mistrust-permissions to `t'.
Then you see the state of the *latest* version on the mode line, not
that of your working file.  When you do a check out, VC overwrites
your working file with the latest version from the master.

*** RCS customization.

There is a new variable vc-consult-headers.  If it is t (the default),
VC searches for RCS headers in working files (like `$Id$') and
determines the state of the file from them, not from the master file.
This is fast and more reliable when you use branches.  (The variable
was already present in Emacs 19.29, but didn't get mentioned in the
NEWS.)

** Calendar changes.

*** New calendars supported: Chinese, Coptic, Ethiopic

Here are the commands for converting to and from these calendars:

   gC: calendar-goto-chinese-date
   gk: calendar-goto-coptic-date
   ge: calendar-goto-ethiopic-date

   pC: calendar-print-chinese-date
   pk: calendar-print-coptic-date
   pe: calendar-print-ethiopic-date

*** Printed calendars

Calendar mode now has commands to produce fancy printed calendars via
LaTeX.  You can ask for a calendar for one or more days, weeks, months
or years.  The commands all start with `t'; see the manual for a list
of them.

*** New sexp diary entry type

Reminders that apply in the days leading up to an event.

** The CC-mode package now provides the default C and C++ modes.
See the manual for documentation of its features.

** The uniquify package chooses buffer names differently when you
visit multiple files with the same name (in different directories).

** RMAIL now always uses the movemail program when it renames an
inbox file, so that it can interlock properly with the mailer
no matter where it is delivering mail.

** tex-start-of-header and tex-end-of-header are now regular expressions,
not strings.

** To enable automatic uncompression of compressed files,
type M-x auto-compression-mode.  (This command used to be called
toggle-auto-compression, but was not documented before.)  In Lisp,
you can do

   (auto-compression-mode 1)

to turn the mode on.

** The new pc-select package emulates the key bindings for cutting and
pasting, and selection of regions, found in Windows, Motif, and the
Macintosh.

** Help buffers now use a special major mode, Help mode.  This mode
normally turns on View mode; it also provides a hook, help-mode-hook,
which you can use for other customization.

** Apropos now uses faces for enhanced legibility.  It now describes
symbol properties as well as their function definitions and variable
values.  You can use Mouse-2 or RET to get more information about a
function definition, variable, or property.

** Font Lock mode

*** Supports Scheme, TCL and Help modes

For example, to automatically turn on Font Lock mode in the *Help*
buffer, put:

 (add-hook 'help-mode-hook 'turn-on-font-lock)

in your ~/.emacs.

*** Enhanced fontification

The structure of font-lock-keywords is extended to allow "anchored" keywords.
Typically, a keyword item of font-lock-keywords comprises a regexp to search
for and information to specify how the regexp should be highlighted.  However,
the highlighting information is extended so that it can be another keyword
item.  This keyword item, its regexp and highlighting information, is processed
before resuming with the keyword item of which it is part.

For example, a typical keyword item might be:

 ("\\<anchor\\>" (0 anchor-face))

which fontifies each occurrence of the discrete word "anchor" in the value of
the variable anchor-face.  However, the highlighting information can be used to
fontify text that is anchored to the word "anchor".  For example:

 ("\\<anchor\\>" (0 anchor-face) ("\\=[ ,]*\\(item\\)" nil nil (1 item-face)))

which fontifies each occurrence of "anchor" as above, but for each occurrence
of "anchor", each occurrence of "item", in any following comma separated list,
is fontified in the value of the variable item-face.  Thus the "item" text is
anchored to the "anchor" text.  See the variable documentation for further
information.

This feature is used to extend the level and quality of fontification in a
number of modes.  For example, C/C++ modes now have level 3 decoration that
includes the fontification of variable and function names in declaration lists.
In this instance, the "anchor" described in the above example is a type or
class name, and an "item" is a variable or function name.

*** Fontification levels

The variables font-lock-maximum-decoration and font-lock-maximum-size are
extended to specify levels and sizes for specific modes.  The variable
font-lock-maximum-decoration specifies the preferred level of fontification for
modes that provide multiple levels (typically from "subdued" to "gaudy").  The
variable font-lock-maximum-size specifies the buffer size for which buffer
fontification is suppressed when Font Lock mode is turned on (typically because
it would take too long).

These variables can now specify values for individual modes, by supplying
lists of mode names and values.  For example, to use the above mentioned level
3 decoration for buffers in C/C++ modes, and default decoration otherwise, put:

 (setq font-lock-maximum-decoration '((c-mode . 3) (c++-mode . 3)))

in your ~/.emacs.  Maximum buffer size values for individual modes are
specified in the same way with the variable font-lock-maximum-size.

*** Font Lock configuration

The mechanism to provide default settings for Font Lock mode are the variables
font-lock-defaults and font-lock-maximum-decoration.  Typically, you should
only need to change the value of font-lock-maximum-decoration.  However, to
support Font Lock mode for buffers in modes that currently do not support Font
Lock mode, you should set a buffer local value of font-lock-defaults for that
mode, typically via its mode hook.

These variables are used by Font Lock mode to set the values of the variables
font-lock-keywords, font-lock-keywords-only, font-lock-syntax-table,
font-lock-beginning-of-syntax-function and font-lock-keywords-case-fold-search.

You need not set these variables directly, and should not set them yourself
since the underlining mechanism may change in future.

** Archive mode is now the default mode for various sorts of
archive files (files whose names end with .arc, .lzh, .zip, and .zoo).

** You can automatically update the years in copyright notice by
means of (add-hook 'write-file-hooks 'copyright-update).
Optionally it can update the GPL version as well.

** Scripts of various languages (Shell, AWK, Perl, makefiles ...) can
be automatically provided with a magic number and be made executable
by their respective modes under control of various user variables.
The mode must call (executable-set-magic "perl") or
(executable-set-magic "make" "-f").  The latter for example has no
effect on [Mm]akefile.

** Shell script mode now supports over 15 different shells.  The new
command C-c ! executes the region, and optionally beginning of script
as well, by passing them to the shell.

Cases such as `sh' being a `bash' are now accounted for.
Fontification now also does variables, the magic number and all
builtin commands.  Shell script mode no longer mingles `tab-width' and
indentation style.  The variable `sh-tab-width' has been renamed to
`sh-indentation'.  Empty lines are now indented like previous
non-empty line, rather than just previous line.

The annoying $ variable prompting has been eliminated.  Instead, shell
script mode uses `comint-dynamic-completion' for commands, variables
and filenames.

** Two-column mode now automatically scrolls both buffers together,
which makes it possible to eliminate the special scrolling commands
that used to do so.

The commands that operate in two-column mode are no longer bound to
keys outside that mode.  f2 o will now position at the same point in
associated buffer.

the new command f2 RET inserts a newline in both buffers, at point and
at the corresponding position in the associated buffer.

** Skeleton commands now work smoothly as abbrev definitions.  The
element < no longer exists, ' is a new element.

** The autoinsert insert facility for prefilling empty files as soon
as they are found has been extended to accommodate skeletons or calling
functions.  See the function auto-insert.

** TPU-edt Changes

Loading tpu-edt no longer turns on tpu-edt mode.  In fact, it is no
longer necessary to explicitly load tpu-edt.  All you need to do to
turn on tpu-edt is run the tpu-edt function.  Here's how to run
tpu-edt instead of loading the file:

  Running Emacs:   Type      emacs -f tpu-edt
                    not      emacs -l tpu-edt

  Within Emacs:    Type      M-x tpu-edt <ret>
                    not      M-x load-library <ret> tpu-edt <ret>

  In .emacs:       Use       (tpu-edt)
                   not       (load "tpu-edt")

The default name of the tpu-edt X key definition file has changed from
~/.tpu-gnu-keys to ~/.tpu-keys.  If you don't rename the file yourself,
tpu-edt will offer to rename it the first time you invoke it under
x-windows.

** MS-DOS Enhancements:

*** Better mouse control by adding the following functions [in dosfns.c]
msdos-mouse-enable, msdos-mouse-disable, msdos-mouse-init.

*** If another foreground/background color than the default is setup in
your ~/_emacs, then the screen briefly flickers with the default
colors before changing to the colors you have specified.  To avoid
this, the EMACSCOLORS environment variable exists.  It shall be
defined as a string with the following elements:

    set EMACSCOLORS=fb;fb

The first set of "fb" defines the initial foreground and background
colors using standard dos color numbers (0=black,.., 7=white).
If specified, the second set of "fb" defines the colors which are
restored when you leave emacs.

*** The new SUSPEND environment variable can now be set as the shell to
use when suspending emacs.  This can be used to override the stupid
limitation on the environment of sub-shells in MS-DOS (they are just
large enough to hold the currently defined variables, not leaving
room for more); to overcome this limitation, add this to autoexec.bat:

    set SUSPEND=%COMSPEC% /E:2000

** The escape character can now be displayed on X frames.  Try
this:
    (aset standard-display-table 27 (vector 27))
after first creating a display table (you can do that by loading
the disp-table library).

** The new command-line option --eval specifies an expression to evaluate
from the command line.

** etags has now the ability to tag Perl files.  They are recognized
either by the .pm and .pl suffixes or by a first line which starts
with `#!' and specifies a Perl interpreter.  The tagged lines are
those beginning with the `sub' keyword.

New suffixes recognized are .hpp for C++; .f90 for Fortran; .bib,
.ltx, .TeX for TeX (.bbl, .dtx removed); .ml for Lisp; .prolog for
prolog (.pl is now Perl).

** The files etc/termcap.dat and etc/termcap.ucb have been replaced
with a new, merged, and much more comprehensive termcap file.  The
new file should include all the special entries from the old one.
This new file is under active development as part of the ncurses
project.  If you have any questions about this file, or problems with
an entry in it, email terminfo@ccil.org.


* Lisp changes in Emacs 19.30.

** New Data Types

*** There is a new data type called a char-table which is an array
indexed by a character.  Currently this is mostly equivalent to a
vector of length 256, but in the future, when a wider character set is
in use, it will be different.  To create one, call
   (make-char-table SUBTYPE INITIAL-VALUE)

SUBTYPE is a symbol that identifies the specific use of this
character table.  It can be any of these values:

  syntax-table
  display-table
  keyboard-translate-table
  case-table

The function `char-table-subtype' returns the subtype of a char-table.
You cannot alter the subtype of an existing char-table.

A char-table has an element for each character code.  It also has some
"extra slots".  The number of extra slots depends on the subtype and
their use depends on the subtype.  (Each subtype symbol has a
`char-table-extra-slots' property that says how many extra slots to
make.)  Use (char-table-extra-slot TABLE N) to access extra slot N and
(set-char-table-extra-slot TABLE N VALUE) to store VALUE in slot N.

A char-table T can have a parent, which should be another char-table
P.  If you look for the value in T for character C, and the table T
actually holds nil, P's element for character C is used instead.
The functions `char-table-parent' and `set-char-table-parent'
let you read or set the parent of a char-table.

To scan all the values in a char-table, do not try to loop through all
possible character codes.  That would work for now, but will not work
in the future.  Instead, call map-char-table.  (map-char-table
FUNCTION TABLE) calls FUNCTION once for each character or character
set that has a distinct value in TABLE.  FUNCTION gets two arguments,
RANGE and VALUE.  RANGE specifies a range of TABLE that has one
uniform value, and VALUE is the value in TABLE for that range.

Currently, RANGE is always a vector containing a single character
and it refers to that character alone.  In the future, other kinds
of ranges will occur.  You can set the value for a given range
with (set-char-table-range TABLE RANGE VALUE) and examine the value
for a range with (char-table-range TABLE RANGE).

*** Syntax tables are now represented as char-tables.
All syntax tables other than the standard syntax table
normally have the standard syntax table as their parent.
Their subtype is `syntax-table'.

*** Display tables are now represented as char-tables.
Their subtype is `display-table'.

*** Case tables are now represented as char-tables.
Their subtype is `case-table'.

*** The value of keyboard-translate-table may now be a char-table
instead of a string.  Normally the char-tables used for this purpose
have the subtype `keyboard-translate-table', but that is not required.

*** A new data type called a bool-vector is a vector of values
that are either t or nil.  To create one, do
   (make-bool-vector LENGTH INITIAL-VALUE)

** You can now specify, for each marker, how it should relocate when
text is inserted at the place where the marker points.  This is called
the "insertion type" of the marker.

To set the insertion type, do (set-marker-insertion-type MARKER TYPE).
If TYPE is t, it means the marker advances when text is inserted.  If
TYPE is nil, it means the marker does not advance.  (In Emacs 19.29,
markers did not advance.)

The function marker-insertion-type reports the insertion type of a
given marker.  The function copy-marker takes a second argument TYPE
which specifies the insertion type of the new copied marker.

** When you create an overlay, you can specify the insertion type of
the beginning and of the end.  To do this, you can use two new
arguments to make-overlay: front-advance and rear-advance.

** The new function overlays-in returns a list of the overlays that
overlap a specified range of the buffer.  The returned list includes
empty overlays at the beginning of this range, as well as within the
range.

** The new hook window-scroll-functions is run when a window has been
scrolled.  The functions in this list are called just before
redisplay, after the new window-start has been computed.  Each function
is called with two arguments--the window that has been scrolled, and its
new window-start position.

This hook is useful for on-the-fly fontification and other features
that affect how the redisplayed text will look when it is displayed.

The window-end value of the window is not valid when these functions
are called.  The computation of window-end is byproduct of actual
redisplay of the window contents, which means it has not yet happened
when the hook is run.  Computing window-end specially in advance for
the sake of these functions would cause a slowdown.

The hook functions can determine where the text on the window will end
by calling vertical-motion starting with the window-start position.

** The new hook redisplay-end-trigger-functions is run whenever
redisplay in window uses text that extends past a specified end
trigger position.  You set the end trigger position with the function
set-window-redisplay-end-trigger.  The functions are called with two
arguments: the window, and the end trigger position.  Storing nil for
the end trigger position turns off the feature, and the trigger value
is automatically reset to nil just after the hook is run.

You can use the function window-redisplay-end-trigger to read a
window's current end trigger value.

** The new function insert-file-contents-literally inserts the
contents of a file without any character set translation or decoding.

** The new function safe-length computes the length of a list.
It never gets an error--it treats any non-list like nil.
If given a circular list, it returns an upper bound for the number
of elements before the circularity.

** replace-match now takes a fifth argument, SUBEXP.  If SUBEXP is
non-nil, that says to replace just subexpression number SUBEXP of the
regexp that was matched, not the entire match.  For example, after
matching `foo \(ba*r\)' calling replace-match with 1 as SUBEXP means
to replace just the text that matched `\(ba*r\)'.

** The new keymap special-event-map defines bindings for certain
events that should be handled at a very low level--as soon as they
are read.  The read-event function processes these events itself,
and never returns them.

Events that are handled in this way do not echo, they are never
grouped into key sequences, and they never appear in the value of
last-command-event or (this-command-keys).  They do not discard a
numeric argument, they cannot be unread with unread-command-events,
they may not appear in a keyboard macro, and they are not recorded
in a keyboard macro while you are defining one.

These events do, however, appear in last-input-event immediately after
they are read, and this is the way for the event's definition to find
the actual event.

The events types iconify-frame, make-frame-visible and delete-frame
are normally handled in this way.

** encode-time now supports simple date arithmetic by means of
out-of-range values for its SEC, MINUTE, HOUR, DAY, and MONTH
arguments; for example, day 0 means the day preceding the given month.
Also, the ZONE argument can now be a TZ-style string.

** command-execute and call-interactively now accept an optional third
argument KEYS.  If specified and non-nil, this specifies the key
sequence containing the events that were used to invoke the command.

** The environment variable NAME, if set, now specifies the value of
(user-full-name), when Emacs starts up.



* User Editing Changes in Emacs 19.29

** If you run out of memory.

If you get the error message "Virtual memory exhausted", type C-x s.
That way of saving files has the least additional memory needs.  Emacs
19.29 keeps a reserve of memory which it makes available when this
error happens; that is to ensure that C-x s can complete its work.

Once you have saved your data, you can exit and restart Emacs, or use
M-x kill-some-buffers to free up space.  If you kill buffers
containing a substantial amount of text, you can go on editing.

Do not use M-x buffer-menu to save or kill buffers when you are out of
memory, because that needs a fair amount memory itself and you may not
have enough to get it started.

** The format of compiled files has changed incompatibly.

Byte-compiled files made with Emacs 19.29 normally use a new format
that will not work in older Emacs versions.  You can compile files
in the old format if you wish; see "Changes in compilation," below.

** Emacs 19.29 supports the DEC Alpha.

** Emacs runs on Windows NT.

This port does not yet support windowing features.  It works like a
text-only terminal, but it does support a mouse.

In general, support for non-GNU-like operating systems is not a high
priority for the GNU project.  We merged in the support for Windows NT
because that system is expected to be very widely used.

** Emacs supports Motif widgets.

You can build Emacs with Motif widgets by specifying --with-x-toolkit=motif
when you run configure.

Motif defines collections of windows called "tab groups", and uses the
tab key and the cursor keys to move between windows in a tab group.
Emacs naturally does not support this--it has other uses for the tab
key and cursor keys.  Emacs does not support Motif accelerators either,
because it uses its normal keymap event binding features.

We give higher priority to operation with a free widget set than to
operation with a proprietary one.

** If Emacs or the computer crashes, you can recover all the files you
were editing from their auto save files by typing M-x recover-session.
This first shows you a list of recorded interrupted sessions.  Move
point to the one you choose, and type C-c C-c.

Then recover-session asks about each of the files that were being
edited during that session, asking whether to recover that file.  If
you answer y, it calls recover-file, which works in its normal
fashion.  It shows the dates of the original file and its auto-save
file and asks once again whether to recover that file.

When recover-session is done, the files you've chosen to recover
are present in Emacs buffers.  You should then save them.
Only this--saving them--updates the files themselves.

** Menu bar menus now stay up if you click on the menu bar item and
release the mouse button within a certain amount of time.  This is in
the X Toolkit version.

** The menu bar menus have been rearranged and split up to make for a
better organization.  Two new menu bar menus, Tools and Search,
contain items that were formerly in the Files and Edit menus, as well
as some that did not exist in the menu bar menus before.

** Emacs can now display on more than one X display at the same time.
Use the command make-frame-on-display to create a frame, specifying
which display to use.

** M-x talk-connect sets up a multi-user talk connection
via Emacs.  Specify the X display of the person you want to talk to.
You can talk to any number of people (within reason) by using
this command repeatedly to specify different people.

Emacs does not make a fuss about security; the people who you talk to
can use all Emacs features, including visiting and editing files.  If
this frightens you, don't use M-x talk-connect.

** The range of integer values is now at least 2**28 on all machines.
This means the maximum size of a buffer is at least 2**27-1,
or 134,217,727.

** When you start Emacs, you can now specify option names in
long GNU form (starting with `--') and you can abbreviate the names.

You can now specify the options in any order.
The previous requirements about the order of options
have been eliminated.

The -L or --directory option lets you specify an additional
directory to search for Lisp libraries (including libraries
that you specify with the -l or --load options).

** Incremental search in Transient Mark mode, if the mark is already
active, now leaves the mark active and does not change its position.
You can make incremental search deactivate the mark once again with
this expression.

    (add-hook 'isearch-mode-hook 'deactivate-mark)

** C-delete now deletes a word backwards.  This is for compatibility
with some editors in the PC world.  (This key is not available on
ordinary ASCII terminals, because C-delete is not a distinct character
on those terminals.)

** ESC ESC ESC is now a command to escape from various temporary modes
and states.

** M-x pc-bindings-mode sets up bindings compatible with many PC editors.
In particular, Delete and its variants delete forward instead of backward.
Use Backspace to delete backward.

C-Backspace kills backward a word (as C-Delete normally would).
M-Backspace does undo.
Home and End move to beginning and end of line
C-Home and C-End move to beginning and end of buffer.

** The key sequence for evaluating a Lisp expression using the minibuffer
is now ESC :.  It used to be ESC ESC, but we moved it to make way for
the ESC ESC ESC feature, on the grounds that people who evaluate Lisp
expressions are experienced users and can cope with a change.
If you prefer the old ESC ESC binding, put in your `~/.emacs':

	(global-set-key "\e\e" 'eval-expression)

** The f1 function key is now equivalent to the help key.  This is
done with key-translation-map; delete the binding for f1 in that map
if you want to use f1 for something else.

** Mouse-3, in the simplest case, still sets the region.  But now, it
places the mark where point was, and sets point where you click.
(It used to set the mark where you click and leave point alone.)

If you position point with Mouse-1, then scroll with the scroll bar
and use Mouse-3, Mouse-3 uses the position you specified with Mouse-1
even if it has scrolled off the screen (and point is no longer there).
This makes it easier to select a region with the mouse which is bigger
than a screenful.

Any editing of the buffer, and any cursor motion or scrolling for any
reason other than the scroll bar, cancels the special state set up by
Mouse-1--so that a subsequent Mouse-3 click will use the actual value
of point.

** C-mouse-3 now pops up a mode-specific menu of commands--normally
the same ones available in the mode's own menu bar menus.

** C-mouse-2 now pops up a menu of faces, indentation, justification,
and certain other text properties.  This menu is also available
through the menu-bar Edit menu.  It is meant for use with Enriched
mode.

*** You can use this menu to 
Back to Top