|
|
1.1 ! root 1: Advantages of Gosling Emacs: ! 2: ! 3: 1. The program itself is much smaller. ! 4: GNU Emacs uses about 250k more pure storage. ! 5: As a result, Gosling Emacs can run on machines ! 6: that cannot run GNU Emacs. There is not much difference ! 7: in the amount of impure storage in the two programs. ! 8: ! 9: 2. In some versions there is support for other forks to ! 10: establish communications channels to Emacs (using sockets?). ! 11: ! 12: 3. There is a direct interface to dbm (data bases). ! 13: ! 14: ! 15: Advantages of GNU Emacs: ! 16: ! 17: * True Lisp, not Mocklisp. ! 18: ! 19: GNU Emacs's extension language has real symbols, lists ! 20: and vectors. Many extensions are much simpler, and some ! 21: become possible that were nearly impossible in Gosling Emacs. ! 22: Many primitives can have cleaner interfaces, and some features ! 23: need not be put in as special primitives because you can do ! 24: them easily yourself. ! 25: ! 26: * But Mocklisp still works. ! 27: ! 28: An automatic conversion package plus a run-time library ! 29: allows you to convert a Mocklisp library into a Lisp library. ! 30: ! 31: * Commands are better crafted. ! 32: ! 33: For example, nearly every editing function for which a ! 34: numeric argument would make sense as a repeat count does ! 35: accept a repeat count, and does handle a negative argument ! 36: in the way you would expect. ! 37: ! 38: * The manual is clearer. ! 39: ! 40: Everyone tells me it is a very good manual. ! 41: ! 42: * Better on-line documentation. ! 43: ! 44: Both functions and variables have documentation strings that ! 45: describe exactly how to use them. ! 46: ! 47: * C mode is smart. ! 48: ! 49: It really knows how to indent each line correctly, ! 50: for most popular indentation styles. (Some variables ! 51: control which style is used.) ! 52: ! 53: * Compatible with PDP-10 Emacs, Multics Emacs and Zmacs. ! 54: ! 55: The commands in GNU Emacs are nearly the same as in the ! 56: original Emacs and the other Emacses which imitated it. ! 57: (A few have been changed to fit the Unix environment better.) ! 58: ! 59: * Support for Gosling's Emacs commands. ! 60: ! 61: M-x set-gosmacs-bindings rebinds many editing commands for ! 62: compatibility with Gosling's Emacs. ! 63: M-x set-gnu-bindings reverses the change. ! 64: ! 65: * Side-by-side windows. ! 66: ! 67: You can split a GNU Emacs window either horizontally or ! 68: vertically. ! 69: ! 70: * Redisplay is faster. ! 71: ! 72: GNU Emacs sends about the same stuff to the terminal that ! 73: Gosling's does, but GNU Emacs uses much less CPU time to ! 74: decide what to do. ! 75: ! 76: * Entirely termcap-driven. ! 77: ! 78: GNU Emacs has nearly no special code for any terminal type. Various ! 79: new termcap strings make it possible to handle all terminals nearly as ! 80: fast as they could be handled by special-case code. ! 81: ! 82: * Display-hiding features. ! 83: ! 84: For example, Outline Mode makes it possible for you to edit ! 85: an outline, making entire sub-branches of the outline visible ! 86: or invisible when you wish. ! 87: ! 88: * You can interrupt with Control-G. ! 89: ! 90: Even a looping Lisp program can be stopped this way. ! 91: And even a loop in C code does not stop you from killing ! 92: Emacs and getting back to your shell. ! 93: ! 94: * Per-buffer Undo. ! 95: ! 96: You can undo the last several changes, in each buffer ! 97: independently. ! 98: ! 99: * The editor code itself is clean. ! 100: ! 101: Many people have remarked on how much they enjoy reading ! 102: the code for GNU Emacs. ! 103: ! 104: ! 105: One other note: The program etc/cvtmail that comes with GNU Emacs can ! 106: be used to convert a mail directory for Gosling Emacs's Rmail into a ! 107: Unix mail file that you could read into GNU Emacs's Rmail. ! 108: ! 109: ! 110: A detailed comparison by Rodney Zykowitz ([email protected]) ! 111: ! 112: Enclosed are two difference listings. The first one is a cross-reference ! 113: by Key bindings. The second is by alphabetized function name. ! 114: Only those functions normally bound to keys in a ! 115: "standard" version are included. As far as I know it excludes ! 116: bindings added here locally (but what do I know...) ! 117: ! 118: The Gosling's is version 2.02 and runs on VMS 4.2. The Gnu is ! 119: version 16.56.1 running under Ultrix 1.1. ! 120: ! 121: ! 122: And could someone send me some info on Gnu on VMS. I seem to have entirely ! 123: missed that posting. If it is hopeless, I just might sit down and write ! 124: a Gnu emulator for Unipress and a Unipress emulator for Gnu... But the ! 125: thought of that already makes me wanna.... ! 126: ! 127: ! 128: ramin... ! 129: Standard disclaimer excluded for humanitarian purposes. ! 130: ! 131: ! 132: ! 133: Command Binding Cross-references. By key code: ! 134: ! 135: VMS (Unipress) GNU Emacs ! 136: Key Binding Binding ! 137: --- ------- --------------- ! 138: ^@ set-mark set-mark-command ! 139: ^A beginning-of-line beginning-of-line ! 140: ^B backward-character backward-char ! 141: ^C exit-emacs exit-recursive-edit ! 142: ^D delete-next-character delete-char ! 143: ^E end-of-line end-of-line ! 144: ^F forward-character forward-char ! 145: ^G illegal-operation ! 146: ^H delete-previous-character help-command ! 147: ^H-v describe-variable ! 148: ^H-w where-is ! 149: ^H-t help-with-tutorial ! 150: ^H-s describe-syntax ! 151: ^H-n view-emacs-news ! 152: ^H-^N view-emacs-news ! 153: ^H-m describe-mode ! 154: ^H-l view-lossage ! 155: ^H-i info ! 156: ^H-f describe-function ! 157: ^H-d describe-function ! 158: ^H-k describe-key ! 159: ^H-c describe-key-briefly ! 160: ^H-b describe-bindings ! 161: ^H-a command-apropos ! 162: ^H-^D describe-distribution ! 163: ^H-^C describe-copying ! 164: ^H-? help-for-help ! 165: ^H-^H help-for-help ! 166: ^I self-insert indent-for-tab-command ! 167: ^J newline-and-indent newline-and-indent ! 168: ^K kill-to-end-of-line kill-line ! 169: ^L redraw-display recenter ! 170: ^M newline newline ! 171: ^N next-line next-line ! 172: ^O newline-and-backup open-line ! 173: ^P previous-line previous-line ! 174: ^Q quote-character quoted-insert ! 175: ^R search-reverse isearch-backward ! 176: ^S search-forward isearch-forward ! 177: ^T transpose-characters transpose-chars ! 178: ^U argument-prefix universal-argument ! 179: ^V next-page scroll-up ! 180: ^W delete-to-killbuffer kill-region ! 181: ^X ^X-prefix Control-x-prefix ! 182: ^X-^A add-mode-abbrev ! 183: ^X-^B list-buffers list-buffers ! 184: ^X-^C exit-emacs save-buffers-kill-emacs ! 185: ^X-^D describe-word-in-buffer list-directory ! 186: ^X-^E compile-it eval-last-sexp ! 187: ^X-^F write-pause-or-exit find-file ! 188: ^X-^H inverse-add-mode-abbrev ! 189: ^X-^I insert-file indent-rigidly ! 190: ^X-^L downcase-region ! 191: ^X-^M write-modified-files ! 192: ^X-^N next-error set-goal-column ! 193: ^X-^O use-old-buffer delete-blank-linkes ! 194: ^X-^P mark-page ! 195: ^X-^Q toggle-read-only ! 196: ^X-^R read-file find-file-read-only ! 197: ^X-^S write-current-file save-buffer ! 198: ^X-^T transpose-lines ! 199: ^X-^U new-undo upcase-region ! 200: ^X-^V visit-file find-alternate-file ! 201: ^X-^W write-named-file write-file ! 202: ^X-^X exchange-dot-and-mark exchange-dot-and-mark ! 203: ^X-^Z shrink-window suspend-emacs ! 204: ^X-ESC repeat-complex-command ! 205: ^X-! execute-monitor-command ! 206: ^X-$ set-selective-display ! 207: ^X-( start-remembering start-kbd-macro ! 208: ^X-) stop-remembering end-kbd-macro ! 209: ^X-+ add-global-abbrev ! 210: ^X-- inverse-add-global-abbrev ! 211: ^X-. set-fill-prefix ! 212: ^X-/ dot-to-register ! 213: ^X-0 delete-window ! 214: ^X-1 delete-other-windows delete-other-windows ! 215: ^X-2 split-current-window split-window-vertically ! 216: ^X-4 ctl-x-4-prefix ! 217: ^X-4-^F find-file-other-window ! 218: ^X-4-. find-tag-other-window ! 219: ^X-4-b pop-to-buffer ! 220: ^X-4-d dired-other-window ! 221: ^X-4-f find-file-other-window ! 222: ^X-4-m mail-other-window ! 223: ^X-5 split-window-horizontally ! 224: ^X-; set-comment-column ! 225: ^X-< scroll-left ! 226: ^X-= what-cursor-position ! 227: ^X-> scroll-right ! 228: ^X-[ backward-page ! 229: ^X-] forward-page ! 230: ^X-^ enlarge-window ! 231: ^X-` next-error ! 232: ^X-a append-to-buffer ! 233: ^X-b switch-to-buffer switch-to-buffer ! 234: ^X-d delete-window dired ! 235: ^X-e execute-keyboard-macro call-last-kbd-macro ! 236: ^X-f set-fill-column ! 237: ^X-g insert-register ! 238: ^X-h mark-whole-buffer ! 239: ^X-i insert-file ! 240: ^X-j register-to-dot ! 241: ^X-k kill-buffer ! 242: ^X-l count-lines-page ! 243: ^X-m mail ! 244: ^X-n next-window narrow-to-region ! 245: ^X-o other-window ! 246: ^X-p previous-window narrow-to-page ! 247: ^X-q kbd-macro-query ! 248: ^X-r copy-rectangle-to-register ! 249: ^X-s save-some-buffers ! 250: ^X-u advertised-undo ! 251: ^X-w widen ! 252: ^X-x copy-to-register ! 253: ^X-z enlarge-window ! 254: ^X-{ shrink-window-horizontally ! 255: ^X-} enlarge-window-horizontally ! 256: ^X-DEL backward-kill-sentence ! 257: ^Y yank-from-killbuffer yank ! 258: ^Z scroll-one-line-up suspend-emacs ! 259: ESC ESC-prefix ! 260: ESC-^@ mark-sexp ! 261: ESC-^A beginning-of-defun ! 262: ESC-^B backward-sexp ! 263: ESC-^C exit-emacs exit-recursive-edit ! 264: ESC-^D down-list ! 265: ESC-^E end-of-defun ! 266: ESC-^F forward-sexp ! 267: ESC-^H mark-defun ! 268: ESC-^J indent-new-comment-line ! 269: ESC-^K kill-sexp ! 270: ESC-^N forward-list ! 271: ESC-^O split-line ! 272: ESC-^P backward-list ! 273: ESC-^S isearch-forward-regexp ! 274: ESC-^T transpose-sexps ! 275: ESC-^U backward-up-list ! 276: ESC-^V page-next-window scroll-other-window ! 277: ESC-^W delete-region-to-buffer append-next-kill ! 278: ESC-^Y yank-buffer ! 279: ESC-ESC execute-mlisp-line eval-expression ! 280: ESC-^^ case-region-invert ! 281: ESC-^\ indent-region ! 282: ESC-<SP> just-one-space ! 283: ESC-! line-to-top-of-window shell-command ! 284: ESC-$ spell-word ! 285: ESC-% query-replace ! 286: ESC-' abbrev-prefix-mark ! 287: ESC-( backward-paragraph insert-parentheses ! 288: ESC-) forward-paragraph move-past-close-and-reindent ! 289: ESC-, beginning-of-window tags-loop-continue ! 290: ESC-- meta-minus negative-argument ! 291: ESC-. end-of-window find-tag ! 292: ESC-0..ESC-9 meta-digit digit-argument ! 293: ESC-; indent-for-comment ! 294: ESC-< beginning-of-file beginning-of-buffer ! 295: ESC-= count-lines-region ! 296: ESC-> end-of-file end-of-buffer ! 297: ESC-@ mark-word ! 298: ESC-[ backward-paragraph ! 299: ESC-\ delete-horizontal-space ! 300: ESC-] forward-paragraph ! 301: ESC-? apropos ! 302: ESC-^ case-word-invert delete-indentation ! 303: ESC-a backward-sentence backward-sentence ! 304: ESC-b backward-word backward-word ! 305: ESC-d delete-next-word kill-word ! 306: ESC-e forward-sentence forward-sentence ! 307: ESC-f forward-word forward-word ! 308: ESC-g fill-region ! 309: ESC-h delete-previous-word mark-paragraph ! 310: ESC-j indent-C-procedure indent-new-comment-line ! 311: ESC-k kill-sentence ! 312: ESC-l case-word-lower downcase-word ! 313: ESC-q query-replace-string fill-paragraph ! 314: ESC-r replace-string move-to-window-line ! 315: ESC-t transpose-words ! 316: ESC-u case-word-upper upcase-word ! 317: ESC-v previous-page scroll-down ! 318: ESC-w copy-region-as-kill ! 319: ESC-x execute-extended-command execute-extended-command ! 320: ESC-y yank-pop ! 321: ESC-z scroll-one-line-down zap-to-char ! 322: ESC-| shell-command-on-region ! 323: ESC-~ not-modified ! 324: ESC-DEL backward-kill-word ! 325: ^_ return-to-monitor ! 326: .., self-insert ! 327: - minus ! 328: .../ self-insert ! 329: 0..9 digit ! 330: :..~ self-insert ! 331: ^? delete-previous-character ! 332: ! 333: ! 334: ! 335: ! 336: Command Binding Cross-references. By name: ! 337: ! 338: Command VMS (Unipress) Key GNU Key ! 339: ----------------------------- --------------------- ------------ ! 340: abbrev-prefix-mark ESC-' ! 341: add-global-abbrev ^X-+ ! 342: add-mode-abbrev ^X-^A ! 343: advertised-undo ^X-u ! 344: append-next-kill ESC-^W ! 345: append-to-buffer ^X-a ! 346: apropos ESC-? ! 347: argument-prefix ^U ! 348: backward-char ^B ! 349: backward-character ^B ! 350: backward-kill-sentence ^X-DEL ! 351: backward-kill-word ESC-DEL ! 352: backward-list ESC-^P ! 353: backward-page ^X-[ ! 354: backward-paragraph ESC-( ! 355: backward-paragraph ESC-[ ! 356: backward-sentence ESC-a ! 357: backward-sentence ESC-a ! 358: backward-sexp ESC-^B ! 359: backward-up-list ESC-^U ! 360: backward-word ESC-b ! 361: backward-word ESC-b ! 362: beginning-of-buffer ESC-< ! 363: beginning-of-defun ESC-^A ! 364: beginning-of-file ESC-< ! 365: beginning-of-line ^A ! 366: beginning-of-line ^A ! 367: beginning-of-window ESC-, ! 368: call-last-kbd-macro ^X-e ! 369: case-region-invert ESC-^^ ! 370: case-word-invert ESC-^ ! 371: case-word-lower ESC-l ! 372: case-word-upper ESC-u ! 373: command-apropos ^H-a ! 374: compile-it ^X-^E ! 375: control-x-prefix ^X ! 376: control-x-prefix ^X ! 377: copy-rectangle-to-register ^X-r ! 378: copy-region-as-kill ESC-w ! 379: copy-to-register ^X-x ! 380: count-lines-page ^X-l ! 381: count-lines-region ESC-= ! 382: ctl-x-4-prefix ^X-4 ! 383: delete-blank-linkes ^X-^O ! 384: delete-char ^D ! 385: delete-horizontal-space ESC-\ ! 386: delete-indentation ESC-^ ! 387: delete-next-character ^D ! 388: delete-next-word ESC-d ! 389: delete-other-windows ^X-1 ! 390: delete-other-windows ^X-1 ! 391: delete-previous-character ^H ^? ! 392: delete-previous-character ^? ! 393: delete-previous-word ESC-h ! 394: delete-region-to-buffer ESC-^W ! 395: delete-to-killbuffer ^W ! 396: delete-window ^X-0 ! 397: delete-window ^X-d ! 398: describe-bindings ^H-b ! 399: describe-copying ^H-^C ! 400: describe-distribution ^H-^D ! 401: describe-function ^H-f ! 402: describe-function ^H-d ! 403: describe-key ^H-k ! 404: describe-key-briefly ^H-c ! 405: describe-mode ^H-m ! 406: describe-syntax ^H-s ! 407: describe-variable ^H-v ! 408: describe-word-in-buffer ^X-^D ! 409: digit 0..9 ! 410: digit 0..9 ! 411: digit-argument ESC-0..ESC-9 ! 412: dired ^X-d ! 413: dired-other-window ^X-4-d ! 414: dot-to-register ^X-/ ! 415: down-list ESC-^D ! 416: downcase-region ^X-^L ! 417: downcase-word ESC-l ! 418: end-kbd-macro ^X-) ! 419: end-of-buffer ESC-> ! 420: end-of-defun ESC-^E ! 421: end-of-file ESC-> ! 422: end-of-line ^E ! 423: end-of-line ^E ! 424: end-of-window ESC-. ! 425: enlarge-window ^X-^ ! 426: enlarge-window ^X-z ! 427: enlarge-window-horizontally ^X-} ! 428: esc-prefix ESC ! 429: esc-prefix ESC ! 430: eval-expression ESC-ESC ! 431: eval-last-sexp ^X-^E ! 432: exchange-dot-and-mark ^X-^X ! 433: exchange-dot-and-mark ^X-^X ! 434: execute-extended-command ESC-x ! 435: execute-extended-command ESC-x ! 436: execute-keyboard-macro ^X-e ! 437: execute-mlisp-line ESC-ESC ! 438: execute-monitor-command ^X-! ! 439: exit-emacs ^C ! 440: exit-emacs ^X-^C ! 441: exit-emacs ESC-^C ! 442: exit-recursive-edit ^C ! 443: exit-recursive-edit ESC-^C ! 444: fill-paragraph ESC-q ! 445: fill-region ESC-g ! 446: find-alternate-file ^X-^V ! 447: find-file ^X-^F ! 448: find-file-other-window ^X-4-^F ! 449: find-file-other-window ^X-4-f ! 450: find-file-read-only ^X-^R ! 451: find-tag ESC-. ! 452: find-tag-other-window ^X-4-. ! 453: forward-char ^F ! 454: forward-character ^F ! 455: forward-list ESC-^N ! 456: forward-page ^X-] ! 457: forward-paragraph ESC-) ! 458: forward-paragraph ESC-] ! 459: forward-sentence ESC-e ! 460: forward-sentence ESC-e ! 461: forward-sexp ESC-^F ! 462: forward-word ESC-f ! 463: forward-word ESC-f ! 464: help-command ^H ! 465: help-for-help ^H-? ! 466: help-for-help ^H-^H ! 467: help-with-tutorial ^H-t ! 468: illegal-operation ^G ! 469: indent-C-procedure ESC-j ! 470: indent-for-comment ESC-; ! 471: indent-for-tab-command ^I ! 472: indent-new-comment-line ESC-^J ! 473: indent-new-comment-line ESC-j ! 474: indent-region ESC-^\ ! 475: indent-rigidly ^X-^I ! 476: info ^H-i ! 477: insert-file ^X-^I ! 478: insert-file ^X-i ! 479: insert-parentheses ESC-( ! 480: insert-register ^X-g ! 481: inverse-add-global-abbrev ^X-- ! 482: inverse-add-mode-abbrev ^X-^H ! 483: isearch-backward ^R ! 484: isearch-forward ^S ! 485: isearch-forward-regexp ESC-^S ! 486: just-one-space ESC-<SP> ! 487: kbd-macro-query ^X-q ! 488: kill-buffer ^X-k ! 489: kill-line ^K ! 490: kill-region ^W ! 491: kill-sentence ESC-k ! 492: kill-sexp ESC-^K ! 493: kill-to-end-of-line ^K ! 494: kill-word ESC-d ! 495: line-to-top-of-window ESC-! ! 496: list-buffers ^X-^B ! 497: list-buffers ^X-^B ! 498: list-directory ^X-^D ! 499: mail ^X-m ! 500: mail-other-window ^X-4-m ! 501: mark-defun ^X-^H ! 502: mark-page ^X-^P ! 503: mark-paragraph ESC-h ! 504: mark-sexp ESC-^@ ! 505: mark-whole-buffer ^X-h ! 506: mark-word ESC-@ ! 507: meta-digit ESC-0..ESC-9 ! 508: meta-minus ESC-- ! 509: minus - ! 510: minus - ! 511: move-past-close-and-reindent ESC-) ! 512: move-to-window-line ESC-r ! 513: narrow-to-page ^X-p ! 514: narrow-to-region ^X-n ! 515: negative-argument ESC-- ! 516: new-undo ^X-^U ! 517: newline ^M ! 518: newline ^M ! 519: newline-and-backup ^O ! 520: newline-and-indent ^J ! 521: newline-and-indent ^J ! 522: next-error ^X-^N ! 523: next-error ^X-` ! 524: next-line ^N ! 525: next-line ^N ! 526: next-page ^V ! 527: next-window ^X-n ! 528: not-modified ESC-~ ! 529: open-line ^O ! 530: other-window ^X-o ! 531: page-next-window ESC-^V ! 532: pop-to-buffer ^X-4-b ! 533: previous-line ^P ! 534: previous-line ^P ! 535: previous-page ESC-v ! 536: previous-window ^X-p ! 537: query-replace ESC-% ! 538: query-replace-string ESC-q ! 539: quote-character ^Q ! 540: quoted-insert ^Q ! 541: read-file ^X-^R ! 542: recenter ^L ! 543: redraw-display ^L ! 544: register-to-dot ^X-j ! 545: repeat-complex-command ^X-ESC ! 546: replace-string ESC-r ! 547: return-to-monitor ^_(CTL-/) ! 548: save-buffer ^X-^S ! 549: save-buffers-kill-emacs ^X-^C ! 550: save-some-buffers ^X-s ! 551: scroll-down ESC-v ! 552: scroll-left ^X-< ! 553: scroll-one-line-down ESC-z ! 554: scroll-one-line-up ^Z ! 555: scroll-other-window ESC-^V ! 556: scroll-right ^X-> ! 557: scroll-up ^V ! 558: search-forward ^S ! 559: search-reverse ^R ! 560: self-insert ^I ! 561: self-insert <SP>.., ! 562: self-insert .../ ! 563: self-insert :..~ ! 564: set-comment-column ^X-; ! 565: set-fill-column ^X-f ! 566: set-fill-prefix ^X-. ! 567: set-goal-column ^X-^N ! 568: set-mark ^@ ! 569: set-mark-command ^@ ! 570: set-selective-display ^X-$ ! 571: shell-command ESC-! ! 572: shell-command-on-region ESC-| ! 573: shrink-window ^X-^Z ! 574: shrink-window-horizontally ^X-{ ! 575: spell-word ESC-$ ! 576: split-current-window ^X-2 ! 577: split-line ESC-^O ! 578: split-window-horizontally ^X-5 ! 579: split-window-vertically ^X-2 ! 580: start-kbd-macro ESC-( ! 581: start-remembering ^X-( ! 582: stop-remembering ^X-) ! 583: suspend-emacs ^X-^Z ! 584: suspend-emacs ^Z ! 585: switch-to-buffer ^X-b ! 586: switch-to-buffer ^X-b ! 587: tags-loop-continue ESC-, ! 588: toggle-read-only ^X-^Q ! 589: transpose-characters ^T ! 590: transpose-chars ^T ! 591: transpose-lines ^X-^T ! 592: transpose-sexps ESC-^T ! 593: transpose-words ESC-t ! 594: universal-argument ^U ! 595: upcase-region ^X-^U ! 596: upcase-word ESC-u ! 597: use-old-buffer ^X-^O ! 598: view-emacs-news ^H-^N ! 599: view-emacs-news ^H-n ! 600: view-lossage ^H-l ! 601: visit-file ^X-^V ! 602: what-cursor-position ^X-= ! 603: where-is ^H-w ! 604: widen ^X-w ! 605: write-current-file ^X-^S ! 606: write-file ^X-^W ! 607: write-modified-files ^X-^M ! 608: write-named-file ^X-^W ! 609: write-pause-or-exit ^X-^F ! 610: yank ^Y ! 611: yank-buffer ESC-^Y ! 612: yank-from-killbuffer ^Y ! 613: yank-pop ESC-y ! 614: zap-to-char ESC-z
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.