diff --git a/README.md b/README.md index 91b8578..f292962 100644 --- a/README.md +++ b/README.md @@ -83,8 +83,15 @@ not included. case with Unisys. I put it back up for ftp a couple of years later and it's relatively easy to find these days." +- emacs-16.57-1.diff and emacs-16.57-2.diff from Usenet net.sources. + + It seems this is not the official 16.57. There are no ChangeLogs + entries. + - Emacs 17.61 from ftp://www.tuhs.org/UnixArchive/4BSD/Distributions/4.3BSD/new.tar.gz +- emacs-17.61.diff and emacs-17.64.diff from Usenet net.emacs. + - Emacs "17.VMS-2" from http://decuslib.com/decus/vax86b/gnuemacs/ - emacs_18.41.tar.gz from http://bitsavers.org/bits/MIT/gnu/ diff --git a/Usenet/net.emacs/emacs-17.61.diff b/Usenet/net.emacs/emacs-17.61.diff new file mode 100644 index 0000000..4a93e35 --- /dev/null +++ b/Usenet/net.emacs/emacs-17.61.diff @@ -0,0 +1,153 @@ +Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP +Posting-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site mit-eddie.MIT.EDU +Path: utzoo!watmath!clyde!burl!ulysses!allegra!mit-eddie!rms +From: rms@PREP.AI.MIT.EDU +Newsgroups: net.emacs +Subject: GNU Emacs 17.61 available. +Message-ID: <1684@mit-eddie.MIT.EDU> +Date: Tue, 22-Apr-86 07:19:12 EST +Article-I.D.: mit-eddi.1684 +Posted: Tue Apr 22 07:19:12 1986 +Date-Received: Wed, 23-Apr-86 22:37:55 EST +Sender: uu...@mit-eddie.MIT.EDU +Organization: M.I.T. EE/CS Computer Facility, Cambridge MA +Lines: 138 + +From: rms@PREP.AI.MIT.EDU (Richard M. Stallman) + +Differences for Emacs 17.61, from 17.60. + +Remember to recompile the changed Lisp files with +M-x byte-recomile-directory before building the new Emacs, +in order for the changes to take effect. + +====================================================================== +diff -rc2 odist60/lisp/ChangeLog dist/lisp/ChangeLog +*** odist60/lisp/ChangeLog Thu Apr 10 13:37:23 1986 +--- dist/lisp/ChangeLog Sat Apr 12 19:58:50 1986 +*************** +*** 1,2 + Thu Apr 10 05:58:53 1986 Richard M. Stallman (rms at prep) + + +--- 1,16 ----- ++ Sat Apr 12 19:29:26 1986 Richard M. Stallman (rms at prep) ++ ++ * replace.el (perform-replace): ++ Save and restore the match-data around call to read-char. ++ Mysterious bug of replacing the wrong characters ++ was due to display-time-filter running inside read-char. ++ Also make the C-w option set `replaced' to t, not `done'. ++ ++ Fri Apr 11 13:56:16 1986 Richard M. Stallman (rms at prep) ++ ++ * rmail.el (rmail-nuke-pinhead-header): ++ Deleted code to delete old Date: line, since new one is made ++ only if had no old one. ++ + Thu Apr 10 05:58:53 1986 Richard M. Stallman (rms at prep) + +diff -rc2 odist60/lisp/replace.el dist/lisp/replace.el +*** odist60/lisp/replace.el Sat Mar 15 14:28:00 1986 +--- dist/lisp/replace.el Sat Apr 12 19:58:17 1986 +*************** +*** 138,142 + (while (not done) + (message "Query replacing %s with %s: " from-string to-string) +! (setq char (read-char)) + (cond ((not (memq char '(?\e ?\ ?\, ?\. ?! ?\177 ?\C-r ?\C-w ?^))) + (setq keep-going nil) + +--- 138,146 ----- + (while (not done) + (message "Query replacing %s with %s: " from-string to-string) +! ;; Preserve the match data. Process filters and sentinels +! ;; could run inside read-char.. +! (let ((data (match-data))) +! (setq char (read-char)) +! (store-match-data data)) + (cond ((not (memq char '(?\e ?\ ?\, ?\. ?! ?\177 ?\C-r ?\C-w ?^))) + (setq keep-going nil) +*************** +*** 176,180 + (prog1 (match-data) + (save-excursion (recursive-edit)))) +! (setq done t)))))) + (setq lastrepl (point)))) + (pop-mark) + +--- 180,184 ----- + (prog1 (match-data) + (save-excursion (recursive-edit)))) +! (setq replaced t)))))) + (setq lastrepl (point)))) + (pop-mark) +diff -rc2 odist60/lisp/rmail.el dist/lisp/rmail.el +*** odist60/lisp/rmail.el Fri Apr 4 16:12:02 1986 +--- dist/lisp/rmail.el Fri Apr 11 13:55:59 1986 +*************** +*** 493,502 + (goto-char start) + (setq has-date (and (search-forward "\nDate:" nil t) (point))) +- (cond ((and (not has-from) has-date) +- ;; kill "date:" line if "from:" line missing +- (goto-char has-date) +- (beginning-of-line) +- (delete-region (point) +- (progn (forward-line 1) (point))))) + (goto-char start) + (setq case-fold-search nil) + +--- 493,496 ----- + (goto-char start) + (setq has-date (and (search-forward "\nDate:" nil t) (point))) + (goto-char start) + (setq case-fold-search nil) +diff -rc2 odist60/lisp/version.el dist/lisp/version.el +*** odist60/lisp/version.el Fri Apr 11 01:27:13 1986 +--- dist/lisp/version.el Sat Apr 12 20:40:27 1986 +*************** +*** 22,26 + ;; The following line is modified automatically + ;; by loading inc-version.el, each time a new Emacs is dumped. +! (defconst emacs-version "17.60.0" + "Version numbers of this version of Emacs.") + + +--- 22,26 ----- + ;; The following line is modified automatically + ;; by loading inc-version.el, each time a new Emacs is dumped. +! (defconst emacs-version "17.61.0" + "Version numbers of this version of Emacs.") + +diff -rc2 odist60/src/ChangeLog dist/src/ChangeLog +*** odist60/src/ChangeLog Thu Apr 10 05:48:00 1986 +--- dist/src/ChangeLog Sat Apr 12 20:55:52 1986 +*************** +*** 1,2 + Thu Apr 10 05:43:53 1986 Richard M. Stallman (rms at prep) + + +--- 1,6 ----- ++ Sat Apr 12 19:41:43 1986 Richard M. Stallman (rms at prep) ++ ++ * m-celerity.h: Remove spurious effectless #define BSTRINGS ++ + Thu Apr 10 05:43:53 1986 Richard M. Stallman (rms at prep) + +diff -rc2 odist60/src/m-celerity.h dist/src/m-celerity.h +*** odist60/src/m-celerity.h Tue Feb 18 16:32:22 1986 +--- dist/src/m-celerity.h Sat Apr 12 19:41:37 1986 +*************** +*** 45,49 + /* celerity preprocessor defines "accel", however the following is clearer */ + #define celerity +- #define BSTRINGS + + /* #define NO_UNION_TYPE would be preferable, + +--- 45,48 ----- + /* celerity preprocessor defines "accel", however the following is clearer */ + #define celerity + + /* #define NO_UNION_TYPE would be preferable, diff --git a/Usenet/net.emacs/emacs-17.64.diff b/Usenet/net.emacs/emacs-17.64.diff new file mode 100644 index 0000000..cd7c490 --- /dev/null +++ b/Usenet/net.emacs/emacs-17.64.diff @@ -0,0 +1,227 @@ +Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP +Path: utzoo!linus!philabs!cmcl2!harvard!husc6!panda!genrad!mit-eddie!rms +From: rms@PREP.AI.MIT.EDU +Newsgroups: net.emacs +Subject: Emacs 17.64 changes +Message-ID: <1946@mit-eddie.MIT.EDU> +Date: Mon, 12-May-86 15:18:17 EDT +Article-I.D.: mit-eddi.1946 +Posted: Mon May 12 15:18:17 1986 +Date-Received: Wed, 14-May-86 19:08:30 EDT +Sender: j...@mit-eddie.MIT.EDU +Organization: M.I.T. EE/CS Computer Facility, Cambridge MA +Lines: 213 + +From: rms@PREP.AI.MIT.EDU (Richard M. Stallman) + +GNU Emacs 17.64 is now available. + +Differences for GNU Emacs 17.64, from 17.63 + +Remember to recompile the changed Lisp files with +M-x byte-recomile-directory before building the new Emacs, +in order for the changes to take effect. + +====================================================================== +diff -rc2 odist63/lisp/mh-e.el dist/lisp/mh-e.el +*** odist63/lisp/mh-e.el Fri May 2 19:36:32 1986 +--- dist/lisp/mh-e.el Thu May 8 00:39:26 1986 +*************** +*** 1524,1528 + ((looking-at "[\t ]*$") "") + (t +! ! (re-search-forward "[\t ]*\\([^\t \n].*\\)$" nil t) + (let ((field (buffer-substring (match-beginning 1) + (match-end 1))) + +--- 1524,1528 ----- + ((looking-at "[\t ]*$") "") + (t +! (re-search-forward "[\t ]*\\([^\t \n].*\\)$" nil t) + (let ((field (buffer-substring (match-beginning 1) + (match-end 1))) +diff -rc2 odist63/lisp/replace.el dist/lisp/replace.el +*** odist63/lisp/replace.el Sat Apr 12 19:58:17 1986 +--- dist/lisp/replace.el Fri May 9 00:37:12 1986 +*************** +*** 50,54 + (defun how-many (regexp) + "Print number of matches for REGEXP following point." +! (interactive "sHow many (matches for regexp): ") + (let ((count 0) opoint) + (save-excursion + +--- 50,54 ----- + (defun how-many (regexp) + "Print number of matches for REGEXP following point." +! (interactive "sHow many matches for (regexp): ") + (let ((count 0) opoint) + (save-excursion +diff -rc2 odist63/lisp/version.el dist/lisp/version.el +*** odist63/lisp/version.el Tue May 6 11:33:16 1986 +--- dist/lisp/version.el Mon May 12 14:02:46 1986 +*************** +*** 22,26 + ;; The following line is modified automatically + ;; by loading inc-version.el, each time a new Emacs is dumped. +! (defconst emacs-version "17.63.0" + "Version numbers of this version of Emacs.") + + +--- 22,26 ----- + ;; The following line is modified automatically + ;; by loading inc-version.el, each time a new Emacs is dumped. +! (defconst emacs-version "17.64.0" + "Version numbers of this version of Emacs.") + +diff -rc2 odist63/man/texinfo.tex dist/man/texinfo.tex +*** odist63/man/texinfo.tex Tue May 6 11:32:28 1986 +--- dist/man/texinfo.tex Mon May 12 14:24:44 1986 +*************** +*** 312,315 + \font\chapit=amti10 scaled \magstep3 + \font\chapsl=amsl10 scaled \magstep3 + \let\chapbf=\chaprm + + +--- 312,316 ----- + \font\chapit=amti10 scaled \magstep3 + \font\chapsl=amsl10 scaled \magstep3 ++ \font\chaptt=amtt10 scaled \magstep3 + \let\chapbf=\chaprm + +*************** +*** 317,320 + \font\secit=amti10 scaled \magstep2 + \font\secsl=amsl10 scaled \magstep2 + \let\secbf=\secrm + + +--- 318,322 ----- + \font\secit=amti10 scaled \magstep2 + \font\secsl=amsl10 scaled \magstep2 ++ \font\sectt=amtt10 scaled \magstep2 + \let\secbf=\secrm + +*************** +*** 322,325 + \font\ssecit=amti10 scaled \magstep1 + \font\ssecsl=amsl10 scaled \magstep1 + \let\ssecbf=\ssecrm + + +--- 324,328 ----- + \font\ssecit=amti10 scaled \magstep1 + \font\ssecsl=amsl10 scaled \magstep1 ++ \font\ssectt=amtt10 scaled \magstep1 + \let\ssecbf=\ssecrm + +*************** +*** 326,332 + \def\textfonts{\let\rm=\tenrm\let\it=\tenit\let\sl=\tensl\let\bf=\tenbf% + \let\sc=\tensc\let\sf=\tensf} +! \def\chapfonts{\let\rm=\chaprm\let\it=\chapit\let\sl=\chapsl\let\bf=\chapbf} +! \def\secfonts{\let\rm=\secrm\let\it=\secit\let\sl=\secsl\let\bf=\secbf} +! \def\subsecfonts{\let\rm=\ssecrm\let\it=\ssecit\let\sl=\ssecsl\let\bf=\ssecbf} + % Count depth in font-changes, for error checks + \newcount\fontdepth \fontdepth=0 + +--- 329,335 ----- + \def\textfonts{\let\rm=\tenrm\let\it=\tenit\let\sl=\tensl\let\bf=\tenbf% + \let\sc=\tensc\let\sf=\tensf} +! \def\chapfonts{\let\rm=\chaprm\let\it=\chapit\let\sl=\chapsl\let\bf=\chapbf\let\tt=\chaptt} +! \def\secfonts{\let\rm=\secrm\let\it=\secit\let\sl=\secsl\let\bf=\secbf\let\tt=\sectt} +! \def\subsecfonts{\let\rm=\ssecrm\let\it=\ssecit\let\sl=\ssecsl\let\bf=\ssecbf\let\tt=\ssectt} + % Count depth in font-changes, for error checks + \newcount\fontdepth \fontdepth=0 +*************** +*** 864,867 + \chapmacro {#1}{\the\chapno}% + \gdef\thissection{#1}\gdef\thischapter{#1}% + \edef\temp{{\realbackslash chapentry {#1}{\the\chapno}{\noexpand\folio}}}% + \write \contentsfile \temp % + +--- 867,871 ----- + \chapmacro {#1}{\the\chapno}% + \gdef\thissection{#1}\gdef\thischapter{#1}% ++ \let\rawbackslash=\relax% + \edef\temp{{\realbackslash chapentry {#1}{\the\chapno}{\noexpand\folio}}}% + \write \contentsfile \temp % +*************** +*** 1024,1028 + \def\subsecheading #1#2#3#4{{\advance \subsecheadingskip by \parskip % + \subsecheadingbreak}% +! {\subsecfonts \line{\secrm#2.#3.#4\enspace #1\hfill}}% + \ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000 } + + +--- 1028,1032 ----- + \def\subsecheading #1#2#3#4{{\advance \subsecheadingskip by \parskip % + \subsecheadingbreak}% +! {\secfonts \line{\secrm#2.#3.#4\enspace #1\hfill}}% + \ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000 } + +*************** +*** 1031,1035 + \def\subsubsecheading #1#2#3#4#5{{\advance \subsecheadingskip by \parskip % + \subsecheadingbreak}% +! {\subsubsecfonts \line{\secrm#2.#3.#4.#5\enspace #1\hfill}}% + \ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000} + + +--- 1035,1039 ----- + \def\subsubsecheading #1#2#3#4#5{{\advance \subsecheadingskip by \parskip % + \subsecheadingbreak}% +! {\secfonts \line{\secrm#2.#3.#4.#5\enspace #1\hfill}}% + \ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000} + +diff -rc2 odist63/src/ChangeLog dist/src/ChangeLog +*** odist63/src/ChangeLog Mon May 5 14:57:50 1986 +--- dist/src/ChangeLog Fri May 9 01:22:11 1986 +*************** +*** 1,2 + Mon May 5 14:57:05 1986 Richard M. Stallman (rms at prep) + + +--- 1,7 ----- ++ Fri May 9 01:12:31 1986 Richard M. Stallman (rms at prep) ++ ++ * sysdep.c (get_screen_size): ++ Reject values of TIOCGSIZE if they are ridiculous. ++ + Mon May 5 14:57:05 1986 Richard M. Stallman (rms at prep) + +diff -rc2 odist63/src/dispnew.c dist/src/dispnew.c +*** odist63/src/dispnew.c Mon Apr 7 23:49:32 1986 +--- dist/src/dispnew.c Sat May 10 20:20:06 1986 +*************** +*** 746,749 + obody = old -> body; + olen = old->length; + if (!must_write_spaces) + while (obody[olen - 1] == ' ') + +--- 746,750 ----- + obody = old -> body; + olen = old->length; ++ /* Note obody[-1] is old->physical, which is always 0 or 1. */ + if (!must_write_spaces) + while (obody[olen - 1] == ' ') +diff -rc2 odist63/src/sysdep.c dist/src/sysdep.c +*** odist63/src/sysdep.c Mon Mar 17 00:13:33 1986 +--- dist/src/sysdep.c Fri May 9 01:21:18 1986 +*************** +*** 518,521 + if (ioctl (0, TIOCGWINSZ, &size) < 0) + return; + *widthp = size.ws_col; + *heightp = size.ws_row; + +--- 518,524 ----- + if (ioctl (0, TIOCGWINSZ, &size) < 0) + return; ++ if ((unsigned) size.ws_col > MScreenWidth ++ || (unsigned) size.ws_row > MScreenLength) ++ return; + *widthp = size.ws_col; + *heightp = size.ws_row; diff --git a/Usenet/net.sources/emacs-16.57-1.diff b/Usenet/net.sources/emacs-16.57-1.diff new file mode 100644 index 0000000..ac5880f --- /dev/null +++ b/Usenet/net.sources/emacs-16.57-1.diff @@ -0,0 +1,1614 @@ +Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP +Posting-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site ucbvax.ARPA +Path: utzoo!watmath!clyde!burl!ulysses!ucbvax!phr +From: p...@ucbvax.ARPA (Paul Rubin) +Newsgroups: net.sources +Subject: GNU Emacs diffs 16.56=>16.60, part 1 of 2 +Message-ID: <10463@ucbvax.ARPA> +Date: Wed, 25-Sep-85 02:51:29 EDT +Article-I.D.: ucbvax.10463 +Posted: Wed Sep 25 02:51:29 1985 +Date-Received: Thu, 26-Sep-85 07:45:51 EDT +Organization: University of California at Berkeley +Lines: 1600 + +Changes to .c files in emacs/src directory +to fix bugs in advertised features since 16.56. +After installing these changes, rebuild Emacs. +You will get version 16.57. + +The patches to .el files follow at the end, with a line +of equal-signs to separate them. The two sets of patches +must be used together, or bad things will happen. + +This is supposed to be a long line. If it does not end in "foo", it means you have done something to truncate it, and will lose. Foo! + +diff -cbr /u2/emacs/dist-16.56/src/abbrev.c /u2/emacs/dist/src/abbrev.c +*** /u2/emacs/dist-16.56/src/abbrev.c Sun Jul 14 02:36:51 1985 +--- /u2/emacs/dist/src/abbrev.c Mon Sep 16 16:03:12 1985 +*************** +*** 137,143 + (name, expansion) + Lisp_Object name, expansion; + { +! Fdefine_abbrev (Vglobal_abbrev_table, name, expansion, Qnil); + return name; + } + + +--- 137,143 ----- + (name, expansion) + Lisp_Object name, expansion; + { +! Fdefine_abbrev (Vglobal_abbrev_table, name, expansion, Qnil, make_number (0)); + return name; + } + +*************** +*** 150,156 + if (NULL (bf_cur->abbrev_table)) + error ("No local abbrev table associated with this buffer"); + +! Fdefine_abbrev (bf_cur->abbrev_table, name, expansion, Qnil); + return name; + } + + +--- 150,156 ----- + if (NULL (bf_cur->abbrev_table)) + error ("No local abbrev table associated with this buffer"); + +! Fdefine_abbrev (bf_cur->abbrev_table, name, expansion, Qnil, make_number (0)); + return name; + } + +*************** +*** 355,361 + Findent_to (make_number (45), one); + Fprin1 (XSYMBOL (sym)->function, stream); + } +! Fterpri (Qnil); + } + + DEFUN ("insert-abbrev-table-description", + +--- 355,361 ----- + Findent_to (make_number (45), one); + Fprin1 (XSYMBOL (sym)->function, stream); + } +! Fterpri (stream); + } + + DEFUN ("insert-abbrev-table-description", +diff -cbr /u2/emacs/dist-16.56/src/buffer.c /u2/emacs/dist/src/buffer.c +*** /u2/emacs/dist-16.56/src/buffer.c Mon Jul 15 13:35:10 1985 +--- /u2/emacs/dist/src/buffer.c Mon Sep 16 16:03:17 1985 +*************** +*** 522,528 + record_buffer (buf); + + Fshow_buffer (EQ (selected_window, minibuf_window) +! ? Fnext_window (minibuf_window) : selected_window, + buf); + + return Qnil; + +--- 522,528 ----- + record_buffer (buf); + + Fshow_buffer (EQ (selected_window, minibuf_window) +! ? Fnext_window (minibuf_window, Qnil) : selected_window, + buf); + + return Qnil; +*************** +*** 650,656 + /* Vcheck_symbol is set up to the symbol paragraph-start + in order to check for the bug that clobbers it. */ + if (c && EQ (c->major_mode, Qlisp_mode) +! && Vcheck_symbol + && !NULL (Vcheck_symbol)) + { + valcontents = XSYMBOL (Vcheck_symbol)->value; + +--- 650,656 ----- + /* Vcheck_symbol is set up to the symbol paragraph-start + in order to check for the bug that clobbers it. */ + if (c && EQ (c->major_mode, Qlisp_mode) +! && XFASTINT (Vcheck_symbol) != 0 + && !NULL (Vcheck_symbol)) + { + valcontents = XSYMBOL (Vcheck_symbol)->value; +*************** +*** 912,918 + + init_buffer () + { +! char buf[MAXPATHLEN]; + + Fset_buffer (Fget_buffer_create (build_string ("*scratch*"))); + getwd(buf); + +--- 912,918 ----- + + init_buffer () + { +! char buf[MAXPATHLEN+1]; + + Fset_buffer (Fget_buffer_create (build_string ("*scratch*"))); + getwd(buf); +diff -cbr /u2/emacs/dist-16.56/src/dired.c /u2/emacs/dist/src/dired.c +*** /u2/emacs/dist-16.56/src/dired.c Thu Jun 13 23:23:13 1985 +--- /u2/emacs/dist/src/dired.c Mon Sep 16 16:03:22 1985 +*************** +*** 197,202 + p2 = (unsigned char *) dp->d_name; + for (matchsize = 0; matchsize < compare; matchsize++) + if (p1[matchsize] != p2[matchsize]) break; + if (directoryp && + (bestmatchsize > matchsize) && + (p1[matchsize + 1] == '/')) + +--- 197,204 ----- + p2 = (unsigned char *) dp->d_name; + for (matchsize = 0; matchsize < compare; matchsize++) + if (p1[matchsize] != p2[matchsize]) break; ++ /* If this dirname all matches, ++ see if implicit following slash does too. */ + if (directoryp && + compare == matchsize && + bestmatchsize > matchsize && +*************** +*** 198,205 + for (matchsize = 0; matchsize < compare; matchsize++) + if (p1[matchsize] != p2[matchsize]) break; + if (directoryp && +! (bestmatchsize > matchsize) && +! (p1[matchsize + 1] == '/')) + matchsize++; + bestmatchsize = min (matchsize, bestmatchsize); + } + +--- 200,208 ----- + /* If this dirname all matches, + see if implicit following slash does too. */ + if (directoryp && +! compare == matchsize && +! bestmatchsize > matchsize && +! p1[matchsize] == '/') + matchsize++; + bestmatchsize = min (matchsize, bestmatchsize); + } +diff -cbr /u2/emacs/dist-16.56/src/dispnew.c /u2/emacs/dist/src/dispnew.c +*** /u2/emacs/dist-16.56/src/dispnew.c Mon Jul 15 14:38:43 1985 +--- /u2/emacs/dist/src/dispnew.c Mon Sep 16 16:03:25 1985 +*************** +*** 604,613 + register int i; + + int free_at_end_vpos = screen_height; +- if (scroll_region_ok) +- free_at_end_vpos -= unchanged_at_bottom; +- else if (memory_below_screen) +- free_at_end_vpos = -1; + + /* Compute hash codes of all the lines. + Also calculate number of changed lines, + +--- 604,609 ----- + register int i; + + int free_at_end_vpos = screen_height; + + /* Compute hash codes of all the lines. + Also calculate number of changed lines, +*************** +*** 642,647 + + window_size = screen_height - unchanged_at_top - unchanged_at_bottom; + + /* If large window, fast terminal and few lines in common between + PhysScreen and DesiredScreen, don't bother with i/d calc. */ + if (window_size >= 18 && baud_rate > 2400 + +--- 638,648 ----- + + window_size = screen_height - unchanged_at_top - unchanged_at_bottom; + ++ if (scroll_region_ok) ++ free_at_end_vpos -= unchanged_at_bottom; ++ else if (memory_below_screen) ++ free_at_end_vpos = -1; ++ + /* If large window, fast terminal and few lines in common between + PhysScreen and DesiredScreen, don't bother with i/d calc. */ + if (window_size >= 18 && baud_rate > 2400 +*************** +*** 815,820 + topos (vpos, nsp + m1); + if (!m2 || nlen == olen) + { + /* If the text reaches to the right margin, + it will lose one way or another (depending on AutoWrap) + to clear to end of line after outputting all the text. + +--- 816,832 ----- + topos (vpos, nsp + m1); + if (!m2 || nlen == olen) + { ++ /* If new text being written reaches right margin, ++ there is no need to do clear-to-eol at the end. ++ (and it would not be safe, since cursor is not ++ going to be "at the margin" after the text is done) */ ++ if (nlen == screen_width) ++ olen = 0; ++ write_chars (nbody + nsp + m1, nlen - tem); ++ #ifdef obsolete ++ /* the following code loses disastrously if tem == nlen. ++ Rather than trying to fix that case, I am trying the simpler ++ solution found above. */ + /* If the text reaches to the right margin, + it will lose one way or another (depending on AutoWrap) + to clear to end of line after outputting all the text. +*************** +*** 829,834 + } + else + write_chars (nbody + nsp + m1, nlen - tem); + } + else if (nlen > olen) + { + +--- 841,847 ----- + } + else + write_chars (nbody + nsp + m1, nlen - tem); ++ #endif + } + else if (nlen > olen) + { +diff -cbr /u2/emacs/dist-16.56/src/doc.c /u2/emacs/dist/src/doc.c +*** /u2/emacs/dist-16.56/src/doc.c Tue Jul 2 01:00:24 1985 +--- /u2/emacs/dist/src/doc.c Mon Sep 16 18:16:50 1985 +*************** +*** 202,207 + return Qnil; + } + + DEFUN ("substitute-command-keys", Fsubstitute_command_keys, + Ssubstitute_command_keys, 1, 1, 0, + "Return the STRING with substrings of the form \\=\\[COMMAND]\n\ + +--- 202,209 ----- + return Qnil; + } + ++ extern Lisp_Object where_is_in_buffer (); ++ + DEFUN ("substitute-command-keys", Fsubstitute_command_keys, + Ssubstitute_command_keys, 1, 1, 0, + "Return the STRING with substrings of the form \\=\\[COMMAND]\n\ +*************** +*** 253,259 + func = strp - funp; + + key = Fintern (make_string (funp, func), Qnil); +! key = Fcar (Fwhere_is_internal (key)); + strp++; /* skip ] */ + + win: + +--- 255,261 ----- + func = strp - funp; + + key = Fintern (make_string (funp, func), Qnil); +! key = Fcar (where_is_in_buffer (key, bf_cur)); + strp++; /* skip ] */ + + win: +diff -cbr /u2/emacs/dist-16.56/src/editfns.c /u2/emacs/dist/src/editfns.c +*** /u2/emacs/dist-16.56/src/editfns.c Sun Jul 14 05:41:31 1985 +--- /u2/emacs/dist/src/editfns.c Mon Sep 16 16:03:30 1985 +*************** +*** 67,73 + strncpy (user_full_name, USER_FULL_NAME, sizeof user_full_name); + p = index (user_full_name, ','); + if (p) *p = 0; +! #endif + + #ifdef AMPERSAND_FULL_NAME + p = pw->pw_gecos; q = user_full_name; r = USER_FULL_NAME; first = 1; + +--- 67,74 ----- + strncpy (user_full_name, USER_FULL_NAME, sizeof user_full_name); + p = index (user_full_name, ','); + if (p) *p = 0; +! #else +! p = pw->pw_gecos; q = user_full_name; r = user_name; first = 1; + + for (; (*p != 0) && (*p != ','); p++) + { +*************** +*** 69,78 + if (p) *p = 0; + #endif + +! #ifdef AMPERSAND_FULL_NAME +! p = pw->pw_gecos; q = user_full_name; r = USER_FULL_NAME; first = 1; +! +! while (1) + { + switch (*p) + { + +--- 70,76 ----- + #else + p = pw->pw_gecos; q = user_full_name; r = user_name; first = 1; + +! for (; (*p != 0) && (*p != ','); p++) + { + if (*p == '&') + { +*************** +*** 74,80 + + while (1) + { +! switch (*p) + { + case 0: + break; + +--- 72,78 ----- + + for (; (*p != 0) && (*p != ','); p++) + { +! if (*p == '&') + { + if (*r != 0) + { +*************** +*** 76,89 + { + switch (*p) + { +! case 0: +! break; +! case ',': +! c = 0; break; +! case '&': +! c = *r++; +! if ((! --first) && (c > 'Z')) c -= 32; +! if (c == 0) + { + p++; + c = -1; + +--- 74,80 ----- + { + if (*p == '&') + { +! if (*r != 0) + { + *q = *r++; + if ((*q >= 'a') && (*q <= 'z')) +*************** +*** 85,93 + if ((! --first) && (c > 'Z')) c -= 32; + if (c == 0) + { +! p++; +! c = -1; +! } + break; + default: + c = *p++; + +--- 76,87 ----- + { + if (*r != 0) + { +! *q = *r++; +! if ((*q >= 'a') && (*q <= 'z')) +! *q -= 32; +! for (q++; *r != 0; r++) +! { +! if (q == &user_full_name[sizeof user_full_name - 1]) + break; + *q++ = *r; + } +*************** +*** 89,96 + c = -1; + } + break; +! default: +! c = *p++; + } + /*Putnextchar:*/ + if (c >= 0) + +--- 83,89 ----- + { + if (q == &user_full_name[sizeof user_full_name - 1]) + break; +! *q++ = *r; + } + } + } +*************** +*** 92,101 + default: + c = *p++; + } +! /*Putnextchar:*/ +! if (c >= 0) +! *q++ = c; +! if (c == 0 || q == &user_full_name[sizeof user_full_name - 1]) + break; + } + *q = 0; + +--- 85,95 ----- + break; + *q++ = *r; + } +! } +! } +! else +! *q++ = *p; +! if (q == &user_full_name[sizeof user_full_name - 2]) + break; + } + *q = 0; +diff -cbr /u2/emacs/dist-16.56/src/minibuf.c /u2/emacs/dist/src/minibuf.c +*** /u2/emacs/dist-16.56/src/minibuf.c Mon Jul 15 14:46:38 1985 +--- /u2/emacs/dist/src/minibuf.c Mon Sep 16 16:03:35 1985 +*************** +*** 199,205 + Vhelp_form = minibuf_save_vector[MinibufDepth].help_form; + } + +! DEFUN ("read-from-minibuffer", Fread_from_minibuffer, Sread_from_minibuffer, 1, 3, 0, + "Read a string from the minibuffer, prompting with string PROMPT.\n\ + If optional second arg INITIAL-CONTENTS is non-nil, it is a string\n\ + to be inserted into the minibuffer before reading input.\n\ + +--- 199,205 ----- + Vhelp_form = minibuf_save_vector[MinibufDepth].help_form; + } + +! DEFUN ("read-from-minibuffer", Fread_from_minibuffer, Sread_from_minibuffer, 1, 4, 0, + "Read a string from the minibuffer, prompting with string PROMPT.\n\ + If optional second arg INITIAL-CONTENTS is non-nil, it is a string\n\ + to be inserted into the minibuffer before reading input.\n\ +diff -cbr /u2/emacs/dist-16.56/src/print.c /u2/emacs/dist/src/print.c +*** /u2/emacs/dist-16.56/src/print.c Tue Jun 11 18:57:32 1985 +--- /u2/emacs/dist/src/print.c Mon Sep 16 16:03:37 1985 +*************** +*** 34,39 + /* Avoid actual stack overflow in print. */ + int print_depth; + + /* Nonzero means print newline before next minibuffer message. */ + + int noninteractive_need_newline; + +--- 34,44 ----- + /* Avoid actual stack overflow in print. */ + int print_depth; + ++ /* Maximum length of list to print in full; noninteger means ++ effectively infinity */ ++ ++ Lisp_Object Vprint_length; ++ + /* Nonzero means print newline before next minibuffer message. */ + + int noninteractive_need_newline; +*************** +*** 454,460 + case Lisp_Cons: + PRINTCHAR ('('); + { +! int i = 0; + while (LISTP (obj)) + { + if (i++) + +--- 459,469 ----- + case Lisp_Cons: + PRINTCHAR ('('); + { +! register int i = 0; +! register int max = 0; +! +! if (XTYPE (Vprint_length) == Lisp_Int) +! max = XINT (Vprint_length); + while (LISTP (obj)) + { + if (i++) +*************** +*** 459,464 + { + if (i++) + PRINTCHAR (' '); + print (Fcar (obj), printcharfun, escapeflag, 0); + obj = Fcdr (obj); + } + +--- 468,478 ----- + { + if (i++) + PRINTCHAR (' '); ++ if (max && i >= max) ++ { ++ strout ("...", 3, printcharfun); ++ break; ++ } + print (Fcar (obj), printcharfun, escapeflag, 0); + obj = Fcdr (obj); + } +*************** +*** 463,469 + obj = Fcdr (obj); + } + } +! if (!NULL (obj)) + { + strout (" . ", 3, printcharfun); + print (obj, printcharfun, escapeflag, 0); + +--- 477,483 ----- + obj = Fcdr (obj); + } + } +! if (!NULL (obj) && !LISTP (obj)) + { + strout (" . ", 3, printcharfun); + print (obj, printcharfun, escapeflag, 0); +*************** +*** 557,562 + Vstandard_output = Qt; + Qstandard_output = intern ("standard-output"); + staticpro (&Qstandard_output); + + /* prin1_to_string_buffer initialized in init_buffer_once in buffer.c */ + staticpro (&Vprin1_to_string_buffer); + +--- 571,581 ----- + Vstandard_output = Qt; + Qstandard_output = intern ("standard-output"); + staticpro (&Qstandard_output); ++ ++ DefLispVar ("print-length", &Vprint_length, ++ "Maximum length of list to print before abbreviating.\ ++ `nil' means no limit."); ++ Vprint_length = Qnil; + + /* prin1_to_string_buffer initialized in init_buffer_once in buffer.c */ + staticpro (&Vprin1_to_string_buffer); +diff -cbr /u2/emacs/dist-16.56/src/process.c /u2/emacs/dist/src/process.c +*** /u2/emacs/dist-16.56/src/process.c Thu Jul 11 13:36:52 1985 +--- /u2/emacs/dist/src/process.c Mon Sep 16 16:03:43 1985 +*************** +*** 38,43 + #include "window.h" + #include "buffer.h" + #include "process.h" + + extern errno; + extern sys_nerr; + +--- 38,47 ----- + #include "window.h" + #include "buffer.h" + #include "process.h" ++ ++ #ifdef howmany /* in sys/types.h under 4.3 BSD */ ++ #undef howmany ++ #endif + + extern errno; + extern sys_nerr; +*************** +*** 685,691 + deactivate_process (proc) + Lisp_Object proc; + { +! register int inchannel; + register struct Lisp_Process *p = XPROCESS (proc); + + inchannel = XFASTINT (p->infd); + +--- 689,695 ----- + deactivate_process (proc) + Lisp_Object proc; + { +! register int inchannel, outchannel; + register struct Lisp_Process *p = XPROCESS (proc); + + inchannel = XFASTINT (p->infd); +*************** +*** 689,694 + register struct Lisp_Process *p = XPROCESS (proc); + + inchannel = XFASTINT (p->infd); + + if (inchannel) + { + +--- 693,699 ----- + register struct Lisp_Process *p = XPROCESS (proc); + + inchannel = XFASTINT (p->infd); ++ outchannel = XFASTINT (p->outfd); + + if (inchannel) + { +*************** +*** 694,701 + { + ioctl (inchannel, TIOCFLUSH, 0); /* flush any pending output */ + close (inchannel); +! if (XFASTINT (p->outfd) != inchannel) +! close (XFASTINT (p->outfd)); + + XFASTINT (p->infd) = 0; + XFASTINT (p->outfd) = 0; + +--- 699,706 ----- + { + ioctl (inchannel, TIOCFLUSH, 0); /* flush any pending output */ + close (inchannel); +! if (outchannel && outchannel != inchannel) +! close (outchannel); + + XFASTINT (p->infd) = 0; + XFASTINT (p->outfd) = 0; +*************** +*** 802,807 + { + if (errno == EINTR) + Available = 0; + else + error("select error: %s", sys_errlist[errno]); + } + +--- 807,814 ----- + { + if (errno == EINTR) + Available = 0; ++ else if (errno == EBADF) ++ abort (); + else + error("select error: %s", sys_errlist[errno]); + } +*************** +*** 911,916 + { + Fset_buffer (p->buffer); + odot = dot; + SetDot (NumCharacters + 1); + if (odot == dot) odot = -1; + InsCStr (chars, howmany); + +--- 918,930 ----- + { + Fset_buffer (p->buffer); + odot = dot; ++ ++ /* Insert new output into buffer ++ at the current end-of-output marker, ++ thus preserving logical ordering of input and output. */ ++ if (XMARKER (p->mark)->buffer) ++ SetDot (marker_position (p->mark)); ++ else + SetDot (NumCharacters + 1); + if (dot <= odot) + odot += howmany; +*************** +*** 912,918 + Fset_buffer (p->buffer); + odot = dot; + SetDot (NumCharacters + 1); +! if (odot == dot) odot = -1; + InsCStr (chars, howmany); + Fset_marker (p->mark, make_number (dot), p->buffer); + RedoModes++; + +--- 926,934 ----- + SetDot (marker_position (p->mark)); + else + SetDot (NumCharacters + 1); +! if (dot <= odot) +! odot += howmany; +! + InsCStr (chars, howmany); + Fset_marker (p->mark, make_number (dot), p->buffer); + RedoModes++; +*************** +*** 917,923 + Fset_marker (p->mark, make_number (dot), p->buffer); + RedoModes++; + +- if (odot >= 0) + SetDot (odot); + SetBfp (old); + } + +--- 933,938 ----- + Fset_marker (p->mark, make_number (dot), p->buffer); + RedoModes++; + + SetDot (odot); + SetBfp (old); + } +diff -cbr /u2/emacs/dist-16.56/src/regex.c /u2/emacs/dist/src/regex.c +*** /u2/emacs/dist-16.56/src/regex.c Mon Jul 15 15:33:02 1985 +--- /u2/emacs/dist/src/regex.c Mon Sep 16 16:03:49 1985 +*************** +*** 764,770 + int size, startpos, range; + struct re_registers *regs; + { +! return re_search_2 (pbufp, 0, 0, string, size, startpos, range, regs); + } + + /* Like re_match_2 but tries first a match starting at index `startpos', + +--- 764,770 ----- + int size, startpos, range; + struct re_registers *regs; + { +! return re_search_2 (pbufp, 0, 0, string, size, startpos, range, regs, size); + } + + /* Like re_match_2 but tries first a match starting at index `startpos', +*************** +*** 779,785 + or -1 if no match was found. */ + + int +! re_search_2 (pbufp, string1, size1, string2, size2, startpos, range, regs) + struct re_pattern_buffer *pbufp; + char *string1, *string2; + int size1, size2; + +--- 779,785 ----- + or -1 if no match was found. */ + + int +! re_search_2 (pbufp, string1, size1, string2, size2, startpos, range, regs, mstop) + struct re_pattern_buffer *pbufp; + char *string1, *string2; + int size1, size2; +*************** +*** 786,791 + int startpos; + register int range; + struct re_registers *regs; + { + register char *fastmap = pbufp->fastmap; + register char *translate = pbufp->translate; + +--- 786,792 ----- + int startpos; + register int range; + struct re_registers *regs; ++ int mstop; + { + register char *fastmap = pbufp->fastmap; + register char *translate = pbufp->translate; +*************** +*** 841,847 + && fastmap && !pbufp->can_be_null) + return -1; + +! if (0 <= re_match_2 (pbufp, string1, size1, string2, size2, startpos, regs)) + return startpos; + + advance: + +--- 842,848 ----- + && fastmap && !pbufp->can_be_null) + return -1; + +! if (0 <= re_match_2 (pbufp, string1, size1, string2, size2, startpos, regs, mstop)) + return startpos; + + advance: +*************** +*** 857,863 + int size, pos; + struct re_registers *regs; + { +! return re_match_2 (pbufp, 0, 0, string, size, pos, regs); + } + + /* Match the pattern described by `pbufp' + +--- 858,864 ----- + int size, pos; + struct re_registers *regs; + { +! return re_match_2 (pbufp, 0, 0, string, size, pos, regs, size); + } + + /* Match the pattern described by `pbufp' +*************** +*** 863,868 + /* Match the pattern described by `pbufp' + against data which is the virtual concatenation of `string1' and `string2'. + `size1' and `size2' are the sizes of the two data strings. + + If pbufp->fastmap is nonzero, then it had better be up to date. + + +--- 864,871 ----- + /* Match the pattern described by `pbufp' + against data which is the virtual concatenation of `string1' and `string2'. + `size1' and `size2' are the sizes of the two data strings. ++ Start the match at position `pos'. ++ Do not consider matching past the position `mstop'. + + If pbufp->fastmap is nonzero, then it had better be up to date. + +*************** +*** 875,881 + */ + + int +! re_match_2 (pbufp, string1, size1, string2, size2, pos, regs) + struct re_pattern_buffer *pbufp; + char *string1, *string2; + int size1, size2; + +--- 878,884 ----- + */ + + int +! re_match_2 (pbufp, string1, size1, string2, size2, pos, regs, mstop) + struct re_pattern_buffer *pbufp; + char *string1, *string2; + int size1, size2; +*************** +*** 881,886 + int size1, size2; + int pos; + struct re_registers *regs; + { + register char *p = pbufp->buffer; + register char *pend = p + pbufp->used; + +--- 884,890 ----- + int size1, size2; + int pos; + struct re_registers *regs; ++ int mstop; + { + register char *p = pbufp->buffer; + register char *pend = p + pbufp->used; +*************** +*** 888,893 + char *end1; + /* End of second string */ + char *end2; + register char *d, *dend; + register int mcnt; + char *translate = pbufp->translate; + +--- 892,899 ----- + char *end1; + /* End of second string */ + char *end2; ++ /* Pointer just past last char to consider matching */ ++ char *end_match_1, *end_match_2; + register char *d, *dend; + register int mcnt; + char *translate = pbufp->translate; +*************** +*** 932,937 + end1 = string1 + size1; + end2 = string2 + size2; + + bzero (regstart, sizeof regstart); + + /* `p' scans through the pattern as `d' scans through the data. + +--- 938,955 ----- + end1 = string1 + size1; + end2 = string2 + size2; + ++ /* Compute where to stop matching, within the two strings */ ++ if (mstop <= size1) ++ { ++ end_match_1 = string1 + mstop; ++ end_match_2 = string2; ++ } ++ else ++ { ++ end_match_1 = end1; ++ end_match_2 = string2 + mstop - size1; ++ } ++ + bzero (regstart, sizeof regstart); + + /* `p' scans through the pattern as `d' scans through the data. +*************** +*** 943,949 + but it cannot equal string2. */ + + if (pos <= size1) +! d = string1 + pos, dend = end1; + else + d = string2 + pos - size1, dend = end2; + + +--- 961,967 ----- + but it cannot equal string2. */ + + if (pos <= size1) +! d = string1 + pos, dend = end_match_1; + else + d = string2 + pos - size1, dend = end_match_2; + +*************** +*** 945,951 + if (pos <= size1) + d = string1 + pos, dend = end1; + else +! d = string2 + pos - size1, dend = end2; + + /* Write PREFETCH; just before fetching a character with *d. */ + #define PREFETCH \ + +--- 963,969 ----- + if (pos <= size1) + d = string1 + pos, dend = end_match_1; + else +! d = string2 + pos - size1, dend = end_match_2; + + /* Write PREFETCH; just before fetching a character with *d. */ + #define PREFETCH \ +*************** +*** 950,956 + /* Write PREFETCH; just before fetching a character with *d. */ + #define PREFETCH \ + while (d == dend) \ +! { if (dend == end2) goto fail; /* end of string2 => failure */ \ + d = string2; /* end of string1 => advance to string2. */ \ + dend = end2; } + + +--- 968,974 ----- + /* Write PREFETCH; just before fetching a character with *d. */ + #define PREFETCH \ + while (d == dend) \ +! { if (dend == end_match_2) goto fail; /* end of string2 => failure */ \ + d = string2; /* end of string1 => advance to string2. */ \ + dend = end_match_2; } + +*************** +*** 952,958 + while (d == dend) \ + { if (dend == end2) goto fail; /* end of string2 => failure */ \ + d = string2; /* end of string1 => advance to string2. */ \ +! dend = end2; } + + /* This loop loops over pattern commands. + It exits by returning from the function if match is complete, + +--- 970,976 ----- + while (d == dend) \ + { if (dend == end_match_2) goto fail; /* end of string2 => failure */ \ + d = string2; /* end of string1 => advance to string2. */ \ +! dend = end_match_2; } + + /* This loop loops over pattern commands. + It exits by returning from the function if match is complete, +*************** +*** 1024,1030 + /* Advance to next segment in register contents, if necessary */ + while (d2 == dend2) + { +! if (dend2 == end2) break; + if (dend2 == regend[regno]) break; + d2 = string2, dend2 = regend[regno]; /* end of string1 => advance to string2. */ + } + +--- 1042,1048 ----- + /* Advance to next segment in register contents, if necessary */ + while (d2 == dend2) + { +! if (dend2 == end_match_2) break; + if (dend2 == regend[regno]) break; + d2 = string2, dend2 = regend[regno]; /* end of string1 => advance to string2. */ + } +*************** +*** 1088,1095 + goto fail; + + case endline: +! if (d == dend ? (d == end2 || size2 == 0 || *string2 == '\n') +! : *d == '\n') + break; + goto fail; + + +--- 1106,1113 ----- + goto fail; + + case endline: +! if (d == end2 +! || (d == end1 ? (size2 == 0 || *string2 == '\n') : *d == '\n')) + break; + goto fail; + +*************** +*** 1177,1183 + + case wordbound: + if (d == string1 /* Points to first char */ +! || (d == dend && (d == end2 || size2 == 0))) /* to end */ + break; + if ((SYNTAX (d[-1]) == Sword) + != (SYNTAX (d == end1 ? *string2 : *d) == Sword)) + +--- 1195,1202 ----- + + case wordbound: + if (d == string1 /* Points to first char */ +! || d == end2 /* Points to end */ +! || (d == end1 && size2 == 0)) /* Points to end */ + break; + if ((SYNTAX (d[-1]) == Sword) + != (SYNTAX (d == end1 ? *string2 : *d) == Sword)) +*************** +*** 1186,1192 + + case notwordbound: + if (d == string1 /* Points to first char */ +! || (d == dend && (d == end2 || size2 == 0))) /* to end */ + goto fail; + if ((SYNTAX (d[-1]) == Sword) + != (SYNTAX (d == end1 ? *string2 : *d) == Sword)) + +--- 1205,1212 ----- + + case notwordbound: + if (d == string1 /* Points to first char */ +! || d == end2 /* Points to end */ +! || (d == end1 && size2 == 0)) /* Points to end */ + goto fail; + if ((SYNTAX (d[-1]) == Sword) + != (SYNTAX (d == end1 ? *string2 : *d) == Sword)) +*************** +*** 1194,1200 + break; + + case wordbeg: +! if ((d == dend && (d == end2 || size2 == 0)) /* to end */ + || SYNTAX (d == end1 ? *string2 : *d) != Sword) /* Next char not a letter */ + goto fail; + if (d == string1 /* Points to first char */ + +--- 1214,1221 ----- + break; + + case wordbeg: +! if (d == end2 /* Points to end */ +! || (d == end1 && size2 == 0) /* Points to end */ + || SYNTAX (d == end1 ? *string2 : *d) != Sword) /* Next char not a letter */ + goto fail; + if (d == string1 /* Points to first char */ +*************** +*** 1206,1212 + if (d == string1 /* Points to first char */ + || SYNTAX (d[-1]) != Sword) /* prev char not letter */ + goto fail; +! if ((d == dend && (d == end2 || size2 == 0)) /* to end */ + || SYNTAX (d == end1 ? *string2 : *d) != Sword) /* Next char not a letter */ + break; + goto fail; + +--- 1227,1234 ----- + if (d == string1 /* Points to first char */ + || SYNTAX (d[-1]) != Sword) /* prev char not letter */ + goto fail; +! if (d == end2 /* Points to end */ +! || (d == end1 && size2 == 0) /* Points to end */ + || SYNTAX (d == end1 ? *string2 : *d) != Sword) /* Next char not a letter */ + break; + goto fail; +*************** +*** 1213,1219 + + #ifdef emacs + case before_dot: +! if (((dend == end2) ? d - (char *) bf_p2 : d - (char *) bf_p1) >= dot) + goto fail; + break; + + +--- 1235,1243 ----- + + #ifdef emacs + case before_dot: +! if (((d - string2 <= (unsigned) size2) +! ? d - (char *) bf_p2 : d - (char *) bf_p1) +! <= dot) + goto fail; + break; + +*************** +*** 1218,1224 + break; + + case at_dot: +! if (((dend == end2) ? d - (char *) bf_p2 : d - (char *) bf_p1) == dot) + goto fail; + break; + + +--- 1242,1250 ----- + break; + + case at_dot: +! if (((d - string2 <= (unsigned) size2) +! ? d - (char *) bf_p2 : d - (char *) bf_p1) +! == dot) + goto fail; + break; + +*************** +*** 1223,1229 + break; + + case after_dot: +! if (((dend == end2) ? d - (char *) bf_p2 : d - (char *) bf_p1) <= dot) + goto fail; + break; + + +--- 1249,1257 ----- + break; + + case after_dot: +! if (((d - string2 <= (unsigned) size2) +! ? d - (char *) bf_p2 : d - (char *) bf_p1) +! >= dot) + goto fail; + break; + +*************** +*** 1266,1272 + goto fail; + + case endbuf: +! if (d == dend && (d == end2 || size2 == 0)) + break; + goto fail; + + +--- 1294,1300 ----- + goto fail; + + case endbuf: +! if (d == end2 || (d == end1 && size2 == 0)) + break; + goto fail; + +*************** +*** 1309,1315 + d = *--stackp; + p = *--stackp; + if (d >= string1 && d <= end1) +! dend = end1; + } + else break; /* Matching at this starting point really fails! */ + } + +--- 1337,1343 ----- + d = *--stackp; + p = *--stackp; + if (d >= string1 && d <= end1) +! dend = end_match_1; + } + else break; /* Matching at this starting point really fails! */ + } +diff -cbr /u2/emacs/dist-16.56/src/search.c /u2/emacs/dist/src/search.c +*** /u2/emacs/dist-16.56/src/search.c Sat Jun 22 18:41:48 1985 +--- /u2/emacs/dist/src/search.c Mon Sep 16 16:13:57 1985 +*************** +*** 46,52 + + /* Compile a regexp and signal a Lisp error if anything goes wrong. */ + +! compile_pattern (pattern, bufp) + Lisp_Object pattern; + struct re_pattern_buffer *bufp; + { + +--- 46,52 ----- + + /* Compile a regexp and signal a Lisp error if anything goes wrong. */ + +! compile_pattern (pattern, bufp, translate) + Lisp_Object pattern; + struct re_pattern_buffer *bufp; + char *translate; +*************** +*** 49,54 + compile_pattern (pattern, bufp) + Lisp_Object pattern; + struct re_pattern_buffer *bufp; + { + char *val; + + +--- 49,55 ----- + compile_pattern (pattern, bufp, translate) + Lisp_Object pattern; + struct re_pattern_buffer *bufp; ++ char *translate; + { + char *val; + +*************** +*** 52,58 + { + char *val; + +! if (EQ (pattern, last_regexp)) + return; + last_regexp = Qnil; + val = re_compile_pattern (XSTRING (pattern)->data, + +--- 53,60 ----- + { + char *val; + +! if (EQ (pattern, last_regexp) +! && translate == bufp->translate) + return; + last_regexp = Qnil; + bufp->translate = translate; +*************** +*** 55,60 + if (EQ (pattern, last_regexp)) + return; + last_regexp = Qnil; + val = re_compile_pattern (XSTRING (pattern)->data, + XSTRING (pattern)->size, + bufp); + +--- 57,63 ----- + && translate == bufp->translate) + return; + last_regexp = Qnil; ++ bufp->translate = translate; + val = re_compile_pattern (XSTRING (pattern)->data, + XSTRING (pattern)->size, + bufp); +*************** +*** 83,90 + register int i; + + CHECK_STRING (string, 0); +! searchbuf.translate = !NULL (bf_cur->case_fold_search) ? (char *) downcase_table : 0; +! compile_pattern (string, &searchbuf); + + immediate_quit = 1; + QUIT; /* Do a pending quit right away, to avoid paradoxical behavior */ + +--- 86,93 ----- + register int i; + + CHECK_STRING (string, 0); +! compile_pattern (string, &searchbuf, +! !NULL (bf_cur->case_fold_search) ? (char *) downcase_table : 0); + + immediate_quit = 1; + QUIT; /* Do a pending quit right away, to avoid paradoxical behavior */ +*************** +*** 109,115 + } + + val = (0 <= re_match_2 (&searchbuf, p1, s1, p2, s2, +! dot - FirstCharacter, &search_regs) + ? Qt : Qnil); + for (i = 0; i < RE_NREGS; i++) + { + +--- 112,119 ----- + } + + val = (0 <= re_match_2 (&searchbuf, p1, s1, p2, s2, +! dot - FirstCharacter, &search_regs, +! NumCharacters + 1 - FirstCharacter) + ? Qt : Qnil); + for (i = 0; i < RE_NREGS; i++) + { +*************** +*** 140,146 + s = XINT (start); + } + +! compile_pattern (regexp, &searchbuf); + val = re_search (&searchbuf, XSTRING (string)->data, XSTRING (string)->size, + s, XSTRING (string)->size - s, 0); + if (val < 0) return Qnil; + +--- 144,151 ----- + s = XINT (start); + } + +! compile_pattern (regexp, &searchbuf, +! !NULL (bf_cur->case_fold_search) ? (char *) downcase_table : 0); + val = re_search (&searchbuf, XSTRING (string)->data, XSTRING (string)->size, + s, XSTRING (string)->size - s, 0); + if (val < 0) return Qnil; +*************** +*** 354,360 + register int i, j; + unsigned char *p1, *p2; + int s1, s2; +- int startpos; + + immediate_quit = 1; /* Quit immediately if user types ^G, + because letting this function finish can take too long. */ + +--- 359,364 ----- + register int i, j; + unsigned char *p1, *p2; + int s1, s2; + + immediate_quit = 1; /* Quit immediately if user types ^G, + because letting this function finish can take too long. */ +*************** +*** 362,369 + + if (RE) + { +! searchbuf.translate = (char *) trt; +! compile_pattern (string, &searchbuf); + + /* Get pointers and sizes of the two strings + that make up the visible portion of the buffer. */ + +--- 366,372 ----- + + if (RE) + { +! compile_pattern (string, &searchbuf, (char *) trt); + + /* Get pointers and sizes of the two strings + that make up the visible portion of the buffer. */ +*************** +*** 417,424 + } + else + { +! startpos = pos; +! while (1) + { + if (pos < lim + || 0 > re_search_2 (&searchbuf, p1, s1, p2, s2, + +--- 420,430 ----- + } + else + { +! if (re_search_2 (&searchbuf, p1, s1, p2, s2, +! pos - FirstCharacter, lim - pos, &search_regs, +! /* Don't allow match past current point */ +! pos - FirstCharacter) +! >= 0) + { + j = FirstCharacter - 1; + for (i = 0; i < RE_NREGS; i++) +*************** +*** 420,433 + startpos = pos; + while (1) + { +- if (pos < lim +- || 0 > re_search_2 (&searchbuf, p1, s1, p2, s2, +- pos - FirstCharacter, +- lim - pos, &search_regs)) +- { +- immediate_quit = 0; +- return 0; +- } + j = FirstCharacter - 1; + if (search_regs.end[0] <= startpos - FirstCharacter) + { + +--- 426,431 ----- + pos - FirstCharacter) + >= 0) + { + j = FirstCharacter - 1; + for (i = 0; i < RE_NREGS; i++) + { +*************** +*** 429,436 + return 0; + } + j = FirstCharacter - 1; +- if (search_regs.end[0] <= startpos - FirstCharacter) +- { + for (i = 0; i < RE_NREGS; i++) + { + search_regs.start[i] += j; + +--- 427,432 ----- + >= 0) + { + j = FirstCharacter - 1; + for (i = 0; i < RE_NREGS; i++) + { + search_regs.start[i] += j; +*************** +*** 436,441 + search_regs.start[i] += j; + search_regs.end[i] += j; + } + pos = search_regs.start[0] + 1; + break; + } + +--- 432,438 ----- + search_regs.start[i] += j; + search_regs.end[i] += j; + } ++ /* Set pos to the new position. */ + pos = search_regs.start[0] + 1; + } + else +*************** +*** 437,443 + search_regs.end[i] += j; + } + pos = search_regs.start[0] + 1; +- break; + } + pos = search_regs.start[0] + j; + } + +--- 434,439 ----- + } + /* Set pos to the new position. */ + pos = search_regs.start[0] + 1; + } + else + { +*************** +*** 439,445 + pos = search_regs.start[0] + 1; + break; + } +! pos = search_regs.start[0] + j; + } + } + n++; + +--- 435,444 ----- + /* Set pos to the new position. */ + pos = search_regs.start[0] + 1; + } +! else +! { +! immediate_quit = 0; +! return 0; + } + } + n++; +*************** +*** 482,488 + else + { + if (re_search_2 (&searchbuf, p1, s1, p2, s2, +! pos - FirstCharacter, lim - pos, &search_regs) + >= 0) + { + j = FirstCharacter - 1; + +--- 481,488 ----- + else + { + if (re_search_2 (&searchbuf, p1, s1, p2, s2, +! pos - FirstCharacter, lim - pos, &search_regs, +! NumCharacters + 1 - FirstCharacter) + >= 0) + { + j = FirstCharacter - 1; +diff -cbr /u2/emacs/dist-16.56/src/syntax.c /u2/emacs/dist/src/syntax.c +*** /u2/emacs/dist-16.56/src/syntax.c Sun Jul 14 02:31:47 1985 +--- /u2/emacs/dist/src/syntax.c Mon Sep 16 16:08:46 1985 +*************** +*** 324,330 + { + while (1) + { +! if (from == end) return 0; + if (SYNTAX(CharAt (from)) == Sword) + break; + from++; + +--- 324,334 ----- + { + while (1) + { +! if (from == end) +! { +! immediate_quit = 0; +! return 0; +! } + if (SYNTAX(CharAt (from)) == Sword) + break; + from++; +*************** +*** 342,348 + { + while (1) + { +! if (from == beg) return 0; + if (SYNTAX(CharAt (from - 1)) == Sword) + break; + from--; + +--- 346,356 ----- + { + while (1) + { +! if (from == beg) +! { +! immediate_quit = 0; +! return 0; +! } + if (SYNTAX(CharAt (from - 1)) == Sword) + break; + from--; +*************** +*** 709,714 + register int depth; /* Paren depth of current scanning location. + level - levelstart equals this except + when the depth becomes negative. */ + Lisp_Object tem; + + immediate_quit = 1; + +--- 717,723 ----- + register int depth; /* Paren depth of current scanning location. + level - levelstart equals this except + when the depth becomes negative. */ ++ int start_quoted = 0; /* Nonzero means starting after a char quote */ + Lisp_Object tem; + + immediate_quit = 1; +*************** +*** 718,724 + depth = 0; + state.instring = -1; + state.incomment = 0; +- state.quoted = 0; + } + else + { + +--- 727,732 ----- + depth = 0; + state.instring = -1; + state.incomment = 0; + } + else + { +*************** +*** 740,746 + + oldstate = Fcdr (oldstate); + tem = Fcar (oldstate); +! state.quoted = !NULL (tem); + } diff --git a/Usenet/net.sources/emacs-16.57-2.diff b/Usenet/net.sources/emacs-16.57-2.diff new file mode 100644 index 0000000..5a8f013 --- /dev/null +++ b/Usenet/net.sources/emacs-16.57-2.diff @@ -0,0 +1,1434 @@ +Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP +Posting-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site ucbvax.ARPA +Path: utzoo!watmath!clyde!burl!ulysses!ucbvax!phr +From: p...@ucbvax.ARPA (Paul Rubin) +Newsgroups: net.sources +Subject: GNU Emacs diffs 16.56=>16.60, part 2 of 2 +Message-ID: <10465@ucbvax.ARPA> +Date: Wed, 25-Sep-85 02:56:51 EDT +Article-I.D.: ucbvax.10465 +Posted: Wed Sep 25 02:56:51 1985 +Date-Received: Thu, 26-Sep-85 08:25:00 EDT +Organization: University of California at Berkeley +Lines: 1420 + + + + curlevel->prev = -1; + +--- 748,754 ----- + + oldstate = Fcdr (oldstate); + tem = Fcar (oldstate); +! start_quoted = !NULL (tem); + } + state.quoted = 0; + +*************** +*** 742,747 + tem = Fcar (oldstate); + state.quoted = !NULL (tem); + } + + curlevel->prev = -1; + + +--- 750,756 ----- + tem = Fcar (oldstate); + start_quoted = !NULL (tem); + } ++ state.quoted = 0; + + curlevel->prev = -1; + +*************** +*** 750,756 + if (state.incomment) goto startincomment; + if (state.instring >= 0) + { +! if (state.quoted) goto startquotedinstring; + goto startinstring; + } + if (state.quoted) goto startquoted; + +--- 759,765 ----- + if (state.incomment) goto startincomment; + if (state.instring >= 0) + { +! if (start_quoted) goto startquotedinstring; + goto startinstring; + } + if (start_quoted) goto startquoted; +*************** +*** 753,759 + if (state.quoted) goto startquotedinstring; + goto startinstring; + } +! if (state.quoted) goto startquoted; + + while (from < end) + { + +--- 762,768 ----- + if (start_quoted) goto startquotedinstring; + goto startinstring; + } +! if (start_quoted) goto startquoted; + + while (from < end) + { +*************** +*** 847,854 + { + case Scharquote: + case Sescape: +- if (from >= end) goto endquoted; +- startquotedinstring: + from++; + } + from++; + +--- 856,861 ----- + { + case Scharquote: + case Sescape: + from++; + startquotedinstring: + if (from >= end) goto endquoted; +*************** +*** 850,855 + if (from >= end) goto endquoted; + startquotedinstring: + from++; + } + from++; + } + +--- 857,864 ----- + case Scharquote: + case Sescape: + from++; ++ startquotedinstring: ++ if (from >= end) goto endquoted; + } + from++; + } +diff -cbr /u2/emacs/dist-16.56/src/sysdep.c /u2/emacs/dist/src/sysdep.c +*** /u2/emacs/dist-16.56/src/sysdep.c Mon Jul 8 01:12:40 1985 +--- /u2/emacs/dist/src/sysdep.c Mon Sep 16 16:08:49 1985 +*************** +*** 28,33 + #include + #define TERMINAL struct sgttyb + #define OSPEED(str) str.sg_ospeed + #endif + + #ifdef USG + +--- 28,34 ----- + #include + #define TERMINAL struct sgttyb + #define OSPEED(str) str.sg_ospeed ++ #define TABS_OK(str) ((str.sg_flags & XTABS) != XTABS) + #endif + + #ifdef USG +*************** +*** 40,45 + #define TIOCSETP TCSETAF + #define TERMINAL struct termio + #define OSPEED(str) (str.c_cflag & CBAUD) + #endif + + #include "termhooks.h" + +--- 41,47 ----- + #define TIOCSETP TCSETAF + #define TERMINAL struct termio + #define OSPEED(str) (str.c_cflag & CBAUD) ++ #define TABS_OK(str) ((str.c_oflag & TABDLY) != TAB3) + #endif + + #include "termhooks.h" +*************** +*** 182,189 + #ifdef TIOCGLTC + struct tchars tchars; + int lmode; +! static struct tchars new_tchars = {-1}; +! static struct ltchars new_ltchars = {-1}; + #endif + + if (noninteractive) + +--- 184,191 ----- + #ifdef TIOCGLTC + struct tchars tchars; + int lmode; +! static struct tchars new_tchars = {-1,-1,-1,-1,-1,-1}; +! static struct ltchars new_ltchars = {-1,-1,-1,-1,-1,-1}; + #endif + + if (noninteractive) +*************** +*** 242,248 + tchars.t_startc = '\021'; + tchars.t_stopc = '\023'; + } +! lmode = LLITOUT | old_lmode; + + ioctl (0, TIOCSETC, &tchars); + ioctl (0, TIOCSLTC, &new_ltchars); + +--- 244,250 ----- + tchars.t_startc = '\021'; + tchars.t_stopc = '\023'; + } +! lmode = LDECCTQ | LLITOUT | old_lmode; + + ioctl (0, TIOCSETC, &tchars); + ioctl (0, TIOCSLTC, &new_ltchars); +*************** +*** 261,268 + tabs_safe_p () + { + TERMINAL sg; +! gtty (&sg); +! return (sg.sg_flags & XTABS) != XTABS; + } + + RstDsp () + +--- 263,270 ----- + tabs_safe_p () + { + TERMINAL sg; +! ioctl (0, TIOCGETP, &sg); +! return (TABS_OK(sg)); + } + + RstDsp () +diff -cbr /u2/emacs/dist-16.56/src/term.c /u2/emacs/dist/src/term.c +*** /u2/emacs/dist-16.56/src/term.c Mon Jul 15 14:24:28 1985 +--- /u2/emacs/dist/src/term.c Mon Sep 16 18:18:30 1985 +*************** +*** 167,174 + + set_terminal_modes () + { +! if (reset_terminal_modes_hook) +! return (*reset_terminal_modes_hook) (); + OUTPUT_IF (TS_termcap_modes); + OUTPUT_IF (TS_visual_mode); + OUTPUT_IF (TS_keypad_mode); + +--- 167,174 ----- + + set_terminal_modes () + { +! if (set_terminal_modes_hook) +! return (*set_terminal_modes_hook) (); + OUTPUT_IF (TS_termcap_modes); + OUTPUT_IF (TS_visual_mode); + OUTPUT_IF (TS_keypad_mode); +*************** +*** 178,185 + + reset_terminal_modes () + { +! if (set_terminal_modes_hook) +! return (*set_terminal_modes_hook) (); + if (TN_standout_width < 0) + turn_off_highlight (); + turn_off_insert (); + +--- 178,185 ----- + + reset_terminal_modes () + { +! if (reset_terminal_modes_hook) +! return (*reset_terminal_modes_hook) (); + if (TN_standout_width < 0) + turn_off_highlight (); + turn_off_insert (); +*************** +*** 463,469 + else + { /* have to do it the hard way */ + turn_off_insert (); +- cmplus (first_unused_hpos - curX); + for (i = curX; i < first_unused_hpos; i++) + { + if (termscript) + +--- 463,468 ----- + else + { /* have to do it the hard way */ + turn_off_insert (); + for (i = curX; i < first_unused_hpos; i++) + { + if (termscript) +*************** +*** 470,475 + fputc (' ', termscript); + putchar (' '); + } + } + } + + +--- 469,475 ----- + fputc (' ', termscript); + putchar (' '); + } ++ cmplus (first_unused_hpos - curX); + } + } + +*************** +*** 498,503 + if (RPov > len && !TF_underscore && !TF_hazeltine) + { + fwrite (start, 1, len, stdout); + if (termscript) + fwrite (start, 1, len, termscript); + } + +--- 498,505 ----- + if (RPov > len && !TF_underscore && !TF_hazeltine) + { + fwrite (start, 1, len, stdout); ++ if (ferror (stdout)) ++ clearerr (stdout); + if (termscript) + fwrite (start, 1, len, termscript); + } +*************** +*** 507,513 + if (RPov + 1 < len && *start == start[1]) + { + p = start + 1; +! n = 0; + /* Now, len is number of chars left starting at p */ + while (n < len && *p++ == *start) + n++; + +--- 509,515 ----- + if (RPov + 1 < len && *start == start[1]) + { + p = start + 1; +! + /* Now, len is number of chars left starting at p */ + while (*p++ == *start); + /* n is number of identical chars in this run */ +*************** +*** 509,516 + p = start + 1; + n = 0; + /* Now, len is number of chars left starting at p */ +! while (n < len && *p++ == *start) +! n++; + if (n > RPov) + { + buf = (char *) alloca (strlen (TS_repeat) + 10); + +--- 511,519 ----- + p = start + 1; + + /* Now, len is number of chars left starting at p */ +! while (*p++ == *start); +! /* n is number of identical chars in this run */ +! n = p - start; + if (n > RPov) + { + buf = (char *) alloca (strlen (TS_repeat) + 10); +*************** +*** 517,522 + tparam (TS_repeat, buf, *start, n); + tputs (buf, n, cmputc); + start = p; + continue; + } + } + +--- 520,526 ----- + tparam (TS_repeat, buf, *start, n); + tputs (buf, n, cmputc); + start = p; ++ len -= n - 1; + continue; + } + } +diff -cbr /u2/emacs/dist-16.56/src/xdisp.c /u2/emacs/dist/src/xdisp.c +*** /u2/emacs/dist-16.56/src/xdisp.c Mon Jul 15 14:46:35 1985 +--- /u2/emacs/dist/src/xdisp.c Mon Sep 16 16:08:59 1985 +*************** +*** 1429,1436 + str = "Top"; + else + { +! sprintf (tbuf, "%2d%%", +! ((pos - FirstCharacter) * 100 + total - 1) / total); + str = tbuf; + } + break; + +--- 1429,1440 ----- + str = "Top"; + else + { +! total = ((pos - FirstCharacter) * 100 + total - 1) / total; +! /* We can't normally display a 3-digit number, +! so get us a 2-digit number that is close. */ +! if (total == 100) +! total = 99; +! sprintf (tbuf, "%2d%%", total); + str = tbuf; + } + break; +============================== +Changes to .el files in emacs/lisp directory +to fix bugs in advertised features since 16.56. +After installing these changes, do M-x byte-recompile-directory +to make new .elc files from the .el files that are supposed +to be compiled; then rebuild Emacs. You will get version 16.57. + +The patches to .c files must be used together with these, or bad things +will happen. + +This is supposed to be a long line. If it does not end in "foo", it means you have done something to truncate it, and will lose. Foo! + +diff -cbr /u2/emacs/dist-16.56/lisp/c-mode.el /u2/emacs/dist/lisp/c-mode.el +*** /u2/emacs/dist-16.56/lisp/c-mode.el Sat Jul 6 01:12:12 1985 +--- /u2/emacs/dist/lisp/c-mode.el Mon Sep 16 17:18:42 1985 +*************** +*** 33,39 + "*Indentation level of declarations of C function arguments.") + (defconst c-label-offset -2 + "*Offset of C label lines and case statements relative to usual indentation.") +! (defconst c-continued-statement-indent 2 + "*Extra indent for lines not starting new statements.") + + (defconst c-auto-newline nil + +--- 33,39 ----- + "*Indentation level of declarations of C function arguments.") + (defconst c-label-offset -2 + "*Offset of C label lines and case statements relative to usual indentation.") +! (defconst c-continued-statement-offset 2 + "*Extra indent for lines not starting new statements.") + + (defconst c-auto-newline nil +*************** +*** 290,296 + (beginning-of-line) + (let ((indent-point (dot)) + state +- parse-start + containing-sexp) + (if parse-start + (goto-char parse-start) + +--- 290,295 ----- + (beginning-of-line) + (let ((indent-point (dot)) + state + containing-sexp) + (if parse-start + (goto-char parse-start) +*************** +*** 330,336 + ;; indent 2 more than the previous line of the statement. + (progn + (c-backward-to-start-of-if containing-sexp) +! (+ c-continued-statement-indent (current-column))) + ;; This line starts a new statement. + ;; Position following last unclosed open. + (goto-char containing-sexp) + +--- 329,335 ----- + ;; indent 2 more than the previous line of the statement. + (progn + (c-backward-to-start-of-if containing-sexp) +! (+ c-continued-statement-offset (current-column))) + ;; This line starts a new statement. + ;; Position following last unclosed open. + (goto-char containing-sexp) +*************** +*** 456,462 + ;; indent this line 2 more than previous. + (progn + (c-backward-to-start-of-if odot) +! (setq this-indent (+ 2 (current-indentation)))) + ;; Preceding line ended in comma or semi; + ;; use the standard indent for this level. + (setq this-indent (car indent-stack)))) + +--- 455,462 ----- + ;; indent this line 2 more than previous. + (progn + (c-backward-to-start-of-if odot) +! (setq this-indent (+ c-continued-statement-offset +! (current-indentation)))) + ;; Preceding line ended in comma or semi; + ;; use the standard indent for this level. + (setq this-indent (car indent-stack)))) +diff -cbr /u2/emacs/dist-16.56/lisp/chistory.el /u2/emacs/dist/lisp/chistory.el +*** /u2/emacs/dist-16.56/lisp/chistory.el Fri Jul 12 04:03:56 1985 +--- /u2/emacs/dist/lisp/chistory.el Mon Sep 16 17:18:45 1985 +*************** +*** 45,51 + (setq temp (car history)) + (if (and (or (not pattern) (string-match pattern (symbol-name (car temp)))) + (y-or-n-p (format "Redo %s? " (setq temp (prin1-to-string temp))))) +! (setq what temp) + (setq history (cdr history)))) + (if (not what) + (error "Command history exhausted.") + +--- 45,51 ----- + (setq temp (car history)) + (if (and (or (not pattern) (string-match pattern (symbol-name (car temp)))) + (y-or-n-p (format "Redo %s? " (setq temp (prin1-to-string temp))))) +! (setq what (car history)) + (setq history (cdr history)))) + (if (not what) + (error "Command history exhausted.") +diff -cbr /u2/emacs/dist-16.56/lisp/debug.el /u2/emacs/dist/lisp/debug.el +*** /u2/emacs/dist-16.56/lisp/debug.el Mon Jul 8 03:08:14 1985 +--- /u2/emacs/dist/lisp/debug.el Mon Sep 16 17:18:48 1985 +*************** +*** 34,40 + (save-window-excursion + (pop-to-buffer " *Backtrace*") + (erase-buffer) +! (let ((standard-output (current-buffer))) + (backtrace)) + (goto-char (dot-min)) + (delete-region (dot) + +--- 34,42 ----- + (save-window-excursion + (pop-to-buffer " *Backtrace*") + (erase-buffer) +! (let ((standard-output (current-buffer)) +! (print-length 50) +! (debug-on-error nil)) + (backtrace)) + (goto-char (dot-min)) + (delete-region (dot) +diff -cbr /u2/emacs/dist-16.56/lisp/indent.el /u2/emacs/dist/lisp/indent.el +*** /u2/emacs/dist-16.56/lisp/indent.el Fri Jul 5 05:39:04 1985 +--- /u2/emacs/dist/lisp/indent.el Mon Sep 16 17:18:53 1985 +*************** +*** 119,125 + (save-excursion + (beginning-of-line) + (if (re-search-backward "^[^\n]" nil t) +! (progn + (move-to-column start-column) + (skip-chars-forward " \t") + (setq indent (current-column))))) + +--- 119,125 ----- + (save-excursion + (beginning-of-line) + (if (re-search-backward "^[^\n]" nil t) +! (let ((end (scan-buffer (dot) 1 ?\n))) + (move-to-column start-column) + (or (looking-at "[ \t]") + (skip-chars-forward "^ \t" end)) +*************** +*** 121,128 + (if (re-search-backward "^[^\n]" nil t) + (progn + (move-to-column start-column) +! (skip-chars-forward " \t") +! (setq indent (current-column))))) + (if indent + (let ((odot (dot-marker))) + (delete-region (dot) (progn (skip-chars-backward " \t") (dot))) + +--- 121,130 ----- + (if (re-search-backward "^[^\n]" nil t) + (let ((end (scan-buffer (dot) 1 ?\n))) + (move-to-column start-column) +! (or (looking-at "[ \t]") +! (skip-chars-forward "^ \t" end)) +! (skip-chars-forward " \t" end) +! (or (= (dot) end) (setq indent (current-column)))))) + (if indent + (let ((odot (dot-marker))) + (delete-region (dot) (progn (skip-chars-backward " \t") (dot))) +diff -cbr /u2/emacs/dist-16.56/lisp/ledit.el /u2/emacs/dist/lisp/ledit.el +*** /u2/emacs/dist-16.56/lisp/ledit.el Mon Jul 8 20:16:54 1985 +--- /u2/emacs/dist/lisp/ledit.el Mon Sep 16 17:18:56 1985 +*************** +*** 102,109 + (load ledit-read-file t t)) + + (defun ledit-setup () +! "Setup key bindings for the Lisp / Emacs interface" +! (setq ledit-mode-map (copy-sequence lisp-mode-map)) + (define-key ledit-mode-map "\e\^d" 'ledit-save-defun) + (define-key ledit-mode-map "\e\^r" 'ledit-save-region) + (define-key ledit-mode-map "\^xz" 'ledit-go-to-lisp) + +--- 102,111 ----- + (load ledit-read-file t t)) + + (defun ledit-setup () +! "Set up key bindings for the Lisp / Emacs interface" +! (if (not ledit-mode-map) +! (progn (setq ledit-mode-map (make-sparse-keymap)) +! (lisp-mode-commands ledit-mode-map))) + (define-key ledit-mode-map "\e\^d" 'ledit-save-defun) + (define-key ledit-mode-map "\e\^r" 'ledit-save-region) + (define-key ledit-mode-map "\^xz" 'ledit-go-to-lisp) +diff -cbr /u2/emacs/dist-16.56/lisp/lisp-mode.el /u2/emacs/dist/lisp/lisp-mode.el +*** /u2/emacs/dist-16.56/lisp/lisp-mode.el Tue Jul 2 01:04:03 1985 +--- /u2/emacs/dist/lisp/lisp-mode.el Mon Sep 16 17:19:09 1985 +*************** +*** 445,450 + (end-of-line) + (setcar (nthcdr 4 state) nil))) + (if (car (nthcdr 3 state)) + (forward-line 1) + (setq innerloop-done t))) + (if (setq outer-loop-done (<= next-depth 0)) + +--- 445,451 ----- + (end-of-line) + (setcar (nthcdr 4 state) nil))) + (if (car (nthcdr 3 state)) ++ (progn + (forward-line 1) + (setcar (nthcdr 5 state) nil)) + (setq innerloop-done t))) +*************** +*** 446,451 + (setcar (nthcdr 4 state) nil))) + (if (car (nthcdr 3 state)) + (forward-line 1) + (setq innerloop-done t))) + (if (setq outer-loop-done (<= next-depth 0)) + nil + +--- 447,453 ----- + (if (car (nthcdr 3 state)) + (progn + (forward-line 1) ++ (setcar (nthcdr 5 state) nil)) + (setq innerloop-done t))) + (if (setq outer-loop-done (<= next-depth 0)) + nil +diff -cbr /u2/emacs/dist-16.56/lisp/lisp.el /u2/emacs/dist/lisp/lisp.el +*** /u2/emacs/dist-16.56/lisp/lisp.el Thu Feb 28 16:32:25 1985 +--- /u2/emacs/dist/lisp/lisp.el Mon Sep 16 17:19:14 1985 +*************** +*** 195,200 + (interactive) + (up-list 1) + (forward-char -1) +! (delete-indentation) + (forward-char 1) + (newline-and-indent)) + +--- 195,204 ----- + (interactive) + (up-list 1) + (forward-char -1) +! (while (save-excursion ; this is my contribution +! (let ((before-paren (dot))) +! (back-to-indentation) +! (= (dot) before-paren))) +! (delete-indentation)) + (forward-char 1) + (newline-and-indent)) +diff -cbr /u2/emacs/dist-16.56/lisp/lpr.el /u2/emacs/dist/lisp/lpr.el +*** /u2/emacs/dist-16.56/lisp/lpr.el Tue Jul 9 01:36:51 1985 +--- /u2/emacs/dist/lisp/lpr.el Mon Sep 16 17:19:16 1985 +*************** +*** 55,61 + (insert-buffer-substring oldbuf) + (call-process-region start end "/usr/ucb/expand" + t t nil +! (format1 "-%d" tab-width)))) + (apply 'call-process-region + (nconc (list start end "/usr/ucb/lpr" + nil nil nil + +--- 55,61 ----- + (insert-buffer-substring oldbuf) + (call-process-region start end "/usr/ucb/expand" + t t nil +! (format "-%d" tab-width)))) + (apply 'call-process-region + (nconc (list start end "/usr/ucb/lpr" + nil nil nil +diff -cbr /u2/emacs/dist-16.56/lisp/mh-e.el /u2/emacs/dist/lisp/mh-e.el +*** /u2/emacs/dist-16.56/lisp/mh-e.el Fri Jul 12 14:29:22 1985 +--- /u2/emacs/dist/lisp/mh-e.el Mon Sep 16 17:19:33 1985 +*************** +*** 71,76 + (defvar mh-current-folder nil "Currently active folder") + (defvar mh-folder-buffer nil "Buffer name of currently active folder") + (defvar mh-show-buffer nil "Name of buffer that displays messages") + + ;;; Macros: + + +--- 71,77 ----- + (defvar mh-current-folder nil "Currently active folder") + (defvar mh-folder-buffer nil "Buffer name of currently active folder") + (defvar mh-show-buffer nil "Name of buffer that displays messages") ++ (defvar mh-letter-mode-map nil "Command map for composing mail") + + ;;; Macros: + +*************** +*** 596,603 + + (defun mh-undo (&optional arg) + "undo the deletion or move of the specified message(s)." +! (interactive "p") +! (cond ((looking-at "^....d") + (let ((msgs (if arg (mh-read-seq "undelete") (mh-get-msg-num t)))) + (setq mh-delete-list (delq msgs mh-delete-list)) + (if arg + +--- 597,609 ----- + + (defun mh-undo (&optional arg) + "undo the deletion or move of the specified message(s)." +! (interactive "P") +! (if (and (not arg) (not (looking-at "^....[D^]"))) +! (while (and (not (looking-at "^....[D^]")) (not (bobp))) +! (forward-line -1))) +! (cond ((and (not arg) (bobp) (not (looking-at "^....[D^]"))) +! (message "Beginning of messages")) +! ((looking-at "^....D") + (let ((msgs (if arg (mh-read-seq "undelete") (mh-get-msg-num t)))) + (setq mh-delete-list (delq msgs mh-delete-list)) + (if arg +*************** +*** 606,612 + ) + ) + ((looking-at "^....^") +! (let ((msgs (if arg (mh-read-seq "unmove") (mh-get-msg-num t)))) + (mapcar + (function (lambda (move) (setcdr msgs (delq msgs (cdr move))))) + mh-move-list) + +--- 612,619 ----- + ) + ) + ((looking-at "^....^") +! (let ((msgs (if arg (mh-read-seq "unmove") (mh-get-msg-num t))) +! (temp nil)) + (mapcar + (function (lambda (move) (setcdr move (delq msgs (cdr move))) + (if (> (length move) 1) (push move temp))) +*************** +*** 608,614 + ((looking-at "^....^") + (let ((msgs (if arg (mh-read-seq "unmove") (mh-get-msg-num t)))) + (mapcar +! (function (lambda (move) (setcdr msgs (delq msgs (cdr move))))) + mh-move-list) + (if arg + (mh-notate-seq msgs ? mh-cmd-note) + +--- 615,623 ----- + (let ((msgs (if arg (mh-read-seq "unmove") (mh-get-msg-num t))) + (temp nil)) + (mapcar +! (function (lambda (move) (setcdr move (delq msgs (cdr move))) +! (if (> (length move) 1) (push move temp))) +! nil) + mh-move-list) + (setq mh-move-list temp) + (if arg +*************** +*** 610,615 + (mapcar + (function (lambda (move) (setcdr msgs (delq msgs (cdr move))))) + mh-move-list) + (if arg + (mh-notate-seq msgs ? mh-cmd-note) + (mh-notate ? mh-cmd-note)) + +--- 619,625 ----- + (if (> (length move) 1) (push move temp))) + nil) + mh-move-list) ++ (setq mh-move-list temp) + (if arg + (mh-notate-seq msgs ? mh-cmd-note) + (mh-notate ? mh-cmd-note)) +*************** +*** 950,957 + (auto-fill-mode 1)) + (setq paragraph-separate "^[- \t\^L]*$") + (setq paragraph-start "^$\\|^\^L\\|^-+$") +! (local-set-key "\^N" 'mh-header-next) +! (local-set-key "\^P" 'mh-header-previous) + (setq major-mode 'mh-letter-mode) + (setq mode-name "mh-letter") + (if (and (boundp 'mh-letter-mode-hook) mh-letter-mode-hook) + +--- 960,971 ----- + (auto-fill-mode 1)) + (setq paragraph-separate "^[- \t\^L]*$") + (setq paragraph-start "^$\\|^\^L\\|^-+$") +! (if (not mh-letter-mode-map) +! (progn +! (setq mh-letter-mode-map (copy-sequence text-mode-map)) +! (define-key mh-letter-mode-map "\^N" '&mh-header-next) +! (define-key mh-letter-mode-map "\^P" '&mh-header-previous))) +! (use-local-map mh-letter-mode-map) + (setq major-mode 'mh-letter-mode) + (setq mode-name "mh-letter") + (if (and (boundp 'mh-letter-mode-hook) mh-letter-mode-hook) +diff -cbr /u2/emacs/dist-16.56/lisp/mlconvert.el /u2/emacs/dist/lisp/mlconvert.el +*** /u2/emacs/dist-16.56/lisp/mlconvert.el Thu Jul 4 22:55:31 1985 +--- /u2/emacs/dist/lisp/mlconvert.el Mon Sep 16 17:19:37 1985 +*************** +*** 21,26 + (defun convert-mocklisp-buffer () + "Convert buffer of mocklisp code into real lisp." + (interactive) + (message "Converting mocklisp (ugh!)...") + (goto-char (dot-min)) + (insert ";;; GNU Emacs code converted from Mocklisp\n") + +--- 21,27 ----- + (defun convert-mocklisp-buffer () + "Convert buffer of mocklisp code into real lisp." + (interactive) ++ (emacs-lisp-mode) + (message "Converting mocklisp (ugh!)...") + (goto-char (dot-min)) + (insert ";;; GNU Emacs code converted from Mocklisp\n") +*************** +*** 125,130 + (ml-expansion 'yank-buffer "insert-buffer") + (ml-expansion 'delete-white-space "delete-horizontal-space") + (ml-expansion 'widen-region "widen") + + (ml-expansion 'forward-paren "forward-list") + (ml-expansion 'backward-paren "backward-list") + +--- 126,138 ----- + (ml-expansion 'yank-buffer "insert-buffer") + (ml-expansion 'delete-white-space "delete-horizontal-space") + (ml-expansion 'widen-region "widen") ++ ++ (ml-expansion 'forward-word '(lambda () ++ (if (looking-at "forward-word[ \t\n]*)") ++ (replace-match "forward-word 1)")))) ++ (ml-expansion 'backward-word '(lambda () ++ (if (looking-at "backward-word[ \t\n]*)") ++ (replace-match "backward-word 1)")))) + + (ml-expansion 'forward-paren "forward-list") + (ml-expansion 'backward-paren "backward-list") +diff -cbr /u2/emacs/dist-16.56/lisp/mlsupport.el /u2/emacs/dist/lisp/mlsupport.el +*** /u2/emacs/dist-16.56/lisp/mlsupport.el Tue Jun 11 00:41:46 1985 +--- /u2/emacs/dist/lisp/mlsupport.el Mon Sep 16 17:19:47 1985 +*************** +*** 121,127 + + (defun kill-to-end-of-line () + (ml-prefix-argument-loop +! (if (eolp) (kill-region (dot) (1+ (dot)))))) + + (defun set-auto-fill-hook (arg) + (setq auto-fill-hook (intern arg))) + +--- 121,130 ----- + + (defun kill-to-end-of-line () + (ml-prefix-argument-loop +! (if (eolp) +! (kill-region (dot) (1+ (dot))) +! (kill-region (dot) (if (search-forward ?\n nil t) +! (1- (dot)) (dot-max)))))) + + (defun set-auto-fill-hook (arg) + (setq auto-fill-hook (intern arg))) +*************** +*** 200,206 + (1+ (current-column))) + + (defun ml-current-indent () +! (1+ (current-indent))) + + (defun use-abbrev-table (name) + (let ((symbol (intern (concat name "-abbrev-table")))) + +--- 203,209 ----- + (1+ (current-column))) + + (defun ml-current-indent () +! (1+ (current-indentation))) + + (defun use-abbrev-table (name) + (let ((symbol (intern (concat name "-abbrev-table")))) +*************** +*** 381,383 + (while (<= c lim) + (modify-syntax-entry c datastring) + (setq c (1+ c))) + +--- 384,387 ----- + (while (<= c lim) + (modify-syntax-entry c datastring) + (setq c (1+ c))) ++ (setq i (+ 2 i))))))) +diff -cbr /u2/emacs/dist-16.56/lisp/rmail.el /u2/emacs/dist/lisp/rmail.el +*** /u2/emacs/dist-16.56/lisp/rmail.el Tue Jul 9 12:54:54 1985 +--- /u2/emacs/dist/lisp/rmail.el Mon Sep 16 17:20:08 1985 +*************** +*** 795,800 + (widen) + (let* ((dot-save (dot)) + (total-messages 0) + (messages-head (cons (progn (goto-char (dot-min)) (dot-marker)) nil)) + (messages-tail messages-head) + (deleted-head (cons ?D nil)) + +--- 795,801 ----- + (widen) + (let* ((dot-save (dot)) + (total-messages 0) ++ (case-fold-search nil) + (messages-head (cons (progn (goto-char (dot-min)) (dot-marker)) nil)) + (messages-tail messages-head) + (deleted-head (cons ?D nil)) +*************** +*** 941,947 + (apply function args) + (setq win t)) + (if win +! (rmail-show-message (rmail-what-message)) + (goto-char odot) + (narrow-to-region omin omax))))) + + +--- 942,948 ----- + (apply function args) + (setq win t)) + (if win +! (progn (rmail-show-message (rmail-what-message)) t) + (goto-char odot) + (narrow-to-region omin omax) + nil)))) +*************** +*** 943,949 + (if win + (rmail-show-message (rmail-what-message)) + (goto-char odot) +! (narrow-to-region omin omax))))) + + ;; *** Rmail Message Deletion Commands *** + + +--- 944,951 ----- + (if win + (progn (rmail-show-message (rmail-what-message)) t) + (goto-char odot) +! (narrow-to-region omin omax) +! nil)))) + + ;; *** Rmail Message Deletion Commands *** + +*************** +*** 1035,1042 + (message "Expunging deleted messages...done") + (if (not win) + (narrow-to-region (- (buffer-size) omin) (- (buffer-size) omax))) +! (rmail-show-message)))) +! + + ;; *** Rmail Mailing Commands *** + + +--- 1037,1044 ----- + (message "Expunging deleted messages...done") + (if (not win) + (narrow-to-region (- (buffer-size) omin) (- (buffer-size) omax))) +! (rmail-show-message +! (if (zerop rmail-current-message) 1 nil))))) + + ;; *** Rmail Mailing Commands *** + +diff -cbr /u2/emacs/dist-16.56/lisp/rmailedit.el /u2/emacs/dist/lisp/rmailedit.el +*** /u2/emacs/dist-16.56/lisp/rmailedit.el Sat Jun 22 17:57:12 1985 +--- /u2/emacs/dist/lisp/rmailedit.el Mon Sep 16 17:20:16 1985 +*************** +*** 32,38 + (setq mode-line-format default-mode-line-format) + (and (boundp 'text-mode-hook) + text-mode-hook +! (funcall 'text-mode-hook))) + + (defun rmail-edit-current-message () + "Edit the contents of this message." + +--- 32,38 ----- + (setq mode-line-format default-mode-line-format) + (and (boundp 'text-mode-hook) + text-mode-hook +! (funcall text-mode-hook))) + + (defun rmail-edit-current-message () + "Edit the contents of this message." +diff -cbr /u2/emacs/dist-16.56/lisp/rnews.el /u2/emacs/dist/lisp/rnews.el +*** /u2/emacs/dist-16.56/lisp/rnews.el Wed Jul 3 12:37:12 1985 +--- /u2/emacs/dist/lisp/rnews.el Mon Sep 16 17:20:28 1985 +*************** +*** 96,102 + nil + (setq news-mode-map (make-keymap)) + (suppress-keymap news-mode-map) +! (define-key news-mode-map "." 'beginning-of-article) + (define-key news-mode-map " " 'scroll-up) + (define-key news-mode-map "\177" 'scroll-down) + (define-key news-mode-map "n" 'news-next-message) + +--- 96,102 ----- + nil + (setq news-mode-map (make-keymap)) + (suppress-keymap news-mode-map) +! (define-key news-mode-map "." 'beginning-of-buffer) + (define-key news-mode-map " " 'scroll-up) + (define-key news-mode-map "\177" 'scroll-down) + (define-key news-mode-map "n" 'news-next-message) +*************** +*** 435,441 + (let* ((start (dot)) + (end (condition-case () + (progn (search-forward "\n\n") (dot)) +! (error "Can't find eoh"))) + has-from has-date) + (cond (end + (narrow-to-region start end) + +--- 435,441 ----- + (let* ((start (dot)) + (end (condition-case () + (progn (search-forward "\n\n") (dot)) +! (error nil))) + has-from has-date) + (cond (end + (narrow-to-region start end) +*************** +*** 449,455 + (news-delete-headers start) + (goto-char start))))))) + +! (defun news-delete-headers(pos) + (goto-char pos) + (while (re-search-forward news-ignored-headers nil t) + (beginning-of-line) + +--- 449,461 ----- + (news-delete-headers start) + (goto-char start))))))) + +! (defun news-show-all-headers () +! "Redisplay current news item with all original headers" +! (interactive) +! (let (news-ignored-headers) +! (news-get-back))) +! +! (defun news-delete-headers (pos) + (goto-char pos) + (and (stringp news-ignored-headers) + (while (re-search-forward news-ignored-headers nil t) +*************** +*** 451,456 + + (defun news-delete-headers(pos) + (goto-char pos) + (while (re-search-forward news-ignored-headers nil t) + (beginning-of-line) + (delete-region (dot) + +--- 457,463 ----- + + (defun news-delete-headers (pos) + (goto-char pos) ++ (and (stringp news-ignored-headers) + (while (re-search-forward news-ignored-headers nil t) + (beginning-of-line) + (delete-region (dot) +*************** +*** 456,462 + (delete-region (dot) + (progn (re-search-forward "\n[^ \t]") + (forward-char -1) +! (dot))))) + + (defun news-quit () + "Quit news reading without updating newsrc file." + +--- 463,469 ----- + (delete-region (dot) + (progn (re-search-forward "\n[^ \t]") + (forward-char -1) +! (dot)))))) + + (defun news-quit () + "Quit news reading without updating newsrc file." +diff -cbr /u2/emacs/dist-16.56/lisp/shell.el /u2/emacs/dist/lisp/shell.el +*** /u2/emacs/dist-16.56/lisp/shell.el Tue Jun 18 00:57:24 1985 +--- /u2/emacs/dist/lisp/shell.el Mon Sep 16 17:20:32 1985 +*************** +*** 154,162 + (interactive) + (end-of-line) + (if (eobp) +- (let ((mark (process-mark (get-buffer-process (current-buffer))))) +- (newline) +- (if (/= (dot) mark) + (progn + (move-marker last-input-start mark) + (move-marker last-input-end (dot))))) + +--- 154,159 ----- + (interactive) + (end-of-line) + (if (eobp) + (progn + (move-marker last-input-start + (process-mark (get-buffer-process (current-buffer)))) +*************** +*** 158,165 + (newline) + (if (/= (dot) mark) + (progn +! (move-marker last-input-start mark) +! (move-marker last-input-end (dot))))) + (beginning-of-line) + (re-search-forward shell-prompt-pattern nil t) + (let ((copy (buffer-substring (dot) + +--- 155,164 ----- + (end-of-line) + (if (eobp) + (progn +! (move-marker last-input-start +! (process-mark (get-buffer-process (current-buffer)))) +! (insert ?\n) +! (move-marker last-input-end (dot))) + (beginning-of-line) + (re-search-forward shell-prompt-pattern nil t) + (let ((copy (buffer-substring (dot) +diff -cbr /u2/emacs/dist-16.56/lisp/simple.el /u2/emacs/dist/lisp/simple.el +*** /u2/emacs/dist-16.56/lisp/simple.el Wed Jul 10 20:51:28 1985 +--- /u2/emacs/dist/lisp/simple.el Mon Sep 16 17:20:54 1985 +*************** +*** 46,52 + represented by the octal number consisting of those digits" + (let ((count 0) (code 0) char) + (while (< count 3) +! (let ((inhibit-quit (zerop count))) + (and prompt (message "%s-" prompt)) + (setq char (read-char)) + (setq quit-flag nil)) + +--- 46,53 ----- + represented by the octal number consisting of those digits" + (let ((count 0) (code 0) char) + (while (< count 3) +! (let ((inhibit-quit (zerop count)) +! (help-form nil)) + (and prompt (message "%s-" prompt)) + (setq char (read-char)) + (setq quit-flag nil)) +*************** +*** 79,84 + (interactive "*P") + (beginning-of-line) + (if arg (forward-line 1)) + (delete-region (dot) (1- (dot))) + (fixup-whitespace)) + + +--- 80,87 ----- + (interactive "*P") + (beginning-of-line) + (if arg (forward-line 1)) ++ (if (not (bobp)) ++ (progn + (delete-region (dot) (1- (dot))) + (fixup-whitespace)))) + +*************** +*** 80,86 + (beginning-of-line) + (if arg (forward-line 1)) + (delete-region (dot) (1- (dot))) +! (fixup-whitespace)) + + (defun fixup-whitespace () + "Fixup white space between objects around dot. + +--- 83,89 ----- + (if (not (bobp)) + (progn + (delete-region (dot) (1- (dot))) +! (fixup-whitespace)))) + + (defun fixup-whitespace () + "Fixup white space between objects around dot. +*************** +*** 126,132 + (not (looking-at "[ \t]*$"))))))) + (if thisblank + (progn +! (end-of-line) + (if singleblank (forward-line 1)) + (delete-region (dot) + (if (re-search-backward "[^ \t\n]" nil t) + +--- 129,135 ----- + (not (looking-at "[ \t]*$"))))))) + (if thisblank + (progn +! (beginning-of-line) + (if singleblank (forward-line 1)) + (delete-region (dot) + (if (re-search-backward "[^ \t\n]" nil t) +*************** +*** 132,137 + (if (re-search-backward "[^ \t\n]" nil t) + (progn (forward-line 1) (dot)) + (dot-min))))) + (save-excursion + (end-of-line) + (forward-line 1) + +--- 135,141 ----- + (if (re-search-backward "[^ \t\n]" nil t) + (progn (forward-line 1) (dot)) + (dot-min))))) ++ (if (not (and thisblank singleblank)) + (save-excursion + (end-of-line) + (forward-line 1) +*************** +*** 138,144 + (delete-region (dot) + (if (re-search-forward "[^ \t\n]" nil t) + (progn (beginning-of-line) (dot)) +! (dot-max)))))) + + (defun back-to-indentation () + "Move dot to the first non-whitespace character on this line." + +--- 142,148 ----- + (delete-region (dot) + (if (re-search-forward "[^ \t\n]" nil t) + (progn (beginning-of-line) (dot)) +! (dot-max))))))) + + (defun back-to-indentation () + "Move dot to the first non-whitespace character on this line." +*************** +*** 388,393 + (set-buffer buffer) + (widen) + (erase-buffer)) + (unwind-protect + (call-process-region start end shell-file-name + nil buffer t + +--- 392,399 ----- + (set-buffer buffer) + (widen) + (erase-buffer)) ++ (if (eq buffer (current-buffer)) ++ (setq start 1 end 1)) + (unwind-protect + (call-process-region start end shell-file-name + nil buffer t +*************** +*** 739,745 + (defvar goal-column nil + "Semipermanent goal column for vertical motion, as set by \\[set-goal-column], or nil.") + +! (defvar temporary-goal-column nil + "Current goal column for vertical motion. + It is the column where dot was at the start of current run of vertical motion commands.") + + +--- 745,751 ----- + (defvar goal-column nil + "Semipermanent goal column for vertical motion, as set by \\[set-goal-column], or nil.") + +! (defvar temporary-goal-column 0 + "Current goal column for vertical motion. + It is the column where dot was at the start of current run of vertical motion commands.") + +diff -cbr /u2/emacs/dist-16.56/lisp/spell.el /u2/emacs/dist/lisp/spell.el +*** /u2/emacs/dist-16.56/lisp/spell.el Thu Feb 28 16:31:57 1985 +--- /u2/emacs/dist/lisp/spell.el Mon Sep 16 17:20:59 1985 +*************** +*** 28,34 + (spell-region (dot-min) (dot-max) "buffer")) + + (defun spell-word () +! "Check spelling of word at or after dot. + If it is not correct, ask user for the correct spelling + and query-replace the entire buffer to substitute it." + (interactive) + +--- 28,34 ----- + (spell-region (dot-min) (dot-max) "buffer")) + + (defun spell-word () +! "Check spelling of word at or before dot. + If it is not correct, ask user for the correct spelling + and query-replace the entire buffer to substitute it." + (interactive) +*************** +*** 34,39 + (interactive) + (let (beg end) + (save-excursion + (forward-word 1) + (setq end (dot)) + (forward-word -1) + +--- 34,42 ----- + (interactive) + (let (beg end) + (save-excursion ++ (if (not (looking-at "\\<")) ++ (forward-word -1)) ++ (setq beg (dot)) + (forward-word 1) + (setq end (dot))) + (spell-region beg end (buffer-substring beg end)))) +*************** +*** 35,43 + (let (beg end) + (save-excursion + (forward-word 1) +! (setq end (dot)) +! (forward-word -1) +! (setq beg (dot))) + (spell-region beg end (buffer-substring beg end)))) + + (defun spell-region (start end &optional description) + +--- 38,44 ----- + (forward-word -1)) + (setq beg (dot)) + (forward-word 1) +! (setq end (dot))) + (spell-region beg end (buffer-substring beg end)))) + + (defun spell-region (start end &optional description) +diff -cbr /u2/emacs/dist-16.56/lisp/startup.el /u2/emacs/dist/lisp/startup.el +*** /u2/emacs/dist-16.56/lisp/startup.el Wed Jul 3 16:29:26 1985 +--- /u2/emacs/dist/lisp/startup.el Mon Sep 16 17:21:03 1985 +*************** +*** 112,120 + (while args + (let ((argi (car args))) + (setq args (cdr args)) +! (cond ((string-equal argi "-e") +! (setq tem (funcall (intern (car args))) +! args (cdr args))) + ((string-equal argi "-l") + (setq tem (load (expand-file-name (car args) dir)) + args (cdr args))) + +--- 112,123 ----- + (while args + (let ((argi (car args))) + (setq args (cdr args)) +! (cond ((or (string-equal argi "-e") +! ;; this is what the manual claims... +! (string-equal argi "-f")) +! (setq tem (intern (car args)) +! args (cdr args)) +! (setq tem (funcall tem))) + ((string-equal argi "-l") + (setq tem (load (expand-file-name (car args) dir)) + args (cdr args))) +diff -cbr /u2/emacs/dist-16.56/lisp/tags.el /u2/emacs/dist/lisp/tags.el +*** /u2/emacs/dist-16.56/lisp/tags.el Sun Jun 9 21:09:12 1985 +--- /u2/emacs/dist/lisp/tags.el Mon Sep 16 17:21:08 1985 +*************** +*** 105,111 + that matches the tagname used in the previous find-tag. + + See documentation of variable tags-file-name." +! (interactive "sFind tag: \nP") + (if (equal tagname "") + (setq tagname (save-excursion + (buffer-substring + +--- 105,113 ----- + that matches the tagname used in the previous find-tag. + + See documentation of variable tags-file-name." +! (interactive (if current-prefix-arg +! '(nil t) +! (list (read-string "Find tag: ")))) + (if (equal tagname "") + (setq tagname (save-excursion + (buffer-substring +diff -cbr /u2/emacs/dist-16.56/lisp/time.el /u2/emacs/dist/lisp/time.el +*** /u2/emacs/dist-16.56/lisp/time.el Sun Jun 2 18:25:58 1985 +--- /u2/emacs/dist/lisp/time.el Mon Sep 16 17:21:11 1985 +*************** +*** 52,57 + (sit-for 0)) + + (defun display-time-filter (proc string) + (let (idx) + (while (setq idx (string-match "]." string)) + (setq string (substring string (1+ idx))))) + +--- 52,64 ----- + (sit-for 0)) + + (defun display-time-filter (proc string) ++ ;; Desired data can't need more than the last 30 chars, ++ ;; so save time by flushing the rest. ++ ;; This way, if we have many different times all collected at once, ++ ;; we can discard all but the last few very fast. ++ (if (> (length string) 30) ++ (setq string (substring string -30))) ++ ;; Now discard all but the very last one. + (let (idx) + (while (setq idx (string-match "]." string)) + (setq string (substring string (1+ idx))))) +diff -cbr /u2/emacs/dist-16.56/lisp/version.el /u2/emacs/dist/lisp/version.el +*** /u2/emacs/dist-16.56/lisp/version.el Mon Jul 15 15:35:36 1985 +--- /u2/emacs/dist/lisp/version.el Mon Sep 16 20:25:27 1985 +*************** +*** 20,26 + + ;; The following line is modified automatically + ;; by loading inc-version.el, each time a new Emacs is dumped. +! (defconst emacs-version "16.56.0" + "Version numbers of this version of Emacs.") + + (defconst emacs-build-time (current-time-string) + +--- 20,26 ----- + + ;; The following line is modified automatically + ;; by loading inc-version.el, each time a new Emacs is dumped. +! (defconst emacs-version "16.57.0" + "Version numbers of this version of Emacs.") + + (defconst emacs-build-time (current-time-string)