summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Blandy <jimb@redhat.com>1992-01-31 20:02:34 +0000
committerJim Blandy <jimb@redhat.com>1992-01-31 20:02:34 +0000
commite0cd4112a38c745a10ce13ad0a6b816e2a103050 (patch)
treee95ddbfd269709e2671a350e48972eef77ba71e5
parent002a5f8f637f695afe93c328e5b1c8ef4de32340 (diff)
downloademacs-e0cd4112a38c745a10ce13ad0a6b816e2a103050.tar.gz
*** empty log message ***
-rw-r--r--Makefile.in13
-rwxr-xr-xbuild-ins.in41
-rw-r--r--src/window.c49
3 files changed, 52 insertions, 51 deletions
diff --git a/Makefile.in b/Makefile.in
index bc5415614ad..ec62fa31aa3 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -23,7 +23,7 @@ SHELL = /bin/sh
# already, the `install' targets will move or copy it there. The
# default definitions for the variables below are expressed in terms
# of this one, so you may not need to change them.
-LIBROOT=/u/emacs
+LIBROOT=/u/src/emacs/19.0
# This is where the `install' make target should place the binaries
# people will want to run directly (like etags and Emacs itself).
@@ -34,19 +34,19 @@ INSTALLBIN=/usr/local/bin
# elisp files should go under DATADIR (below), since both elisp source
# and compiled elisp are completely portable, but it's traditional to
# give the lisp files their own subdirectory.
-LISPPATH=/u/emacs/lisp
+LISPPATH=/u/src/emacs/19.0/lisp
# Emacs will look here for its architecture-independent files (like
# the tutorial and the zippy database).
-DATADIR=/u/emacs/share-lib
+DATADIR=/u/src/emacs/19.0/share-lib
# Emacs will look here for its architecture-dependent files, like
# executables for its utilities.
-LIBDIR=/u/emacs/arch-lib
+LIBDIR=/u/src/emacs/19.0/arch-lib
# The locking directory, where the Emacs locking code keeps track of
# which files are currently being edited.
-LOCKDIR=/u/emacs/lock
+LOCKDIR=/u/src/emacs/19.0/lock
# This is where the `install' make target should place the man pages
# for the binaries it installs.
@@ -72,7 +72,6 @@ all: src/paths.h ${SUBDIR}
src/paths.h: Makefile src/paths.h-dist
/bin/sed < src/paths.h-dist > src/paths.h \
- -e 's;/usr/local/lib/emacs;${LIBROOT};g' \
-e 's;\(#.*PATH_LOADSEARCH\).*$$;\1 "$(LISPPATH)";' \
-e 's;\(#.*PATH_EXEC\).*$$;\1 "$(LIBDIR)";' \
-e 's;\(#.*PATH_DATA\).*$$;\1 "$(DATADIR)";' \
@@ -87,7 +86,7 @@ ${SUBDIR}: FRC
install: all mkdir lockdir
-if [ `/bin/pwd` != `(cd ${LIBROOT}; /bin/pwd)` ] ; then \
- tar cf - ${COPYDIR} | (cd ${LIBROOT}; umask 0; tar xBf - ) ;\
+ tar cf - ${COPYDIR} | (cd ${LIBROOT}; umask 0; tar xf - ) ;\
for i in ${CLEANDIR}; do \
(rm -rf ${LIBROOT}/$$i/RCS; \
rm -f ${LIBROOT}/$$i/\#*; \
diff --git a/build-ins.in b/build-ins.in
index fe09dabd0be..f2a952b6a0b 100755
--- a/build-ins.in
+++ b/build-ins.in
@@ -1,4 +1,4 @@
-#!/bin/csh -fx
+#!/bin/sh -x
#
#Shell script for building and installing Emacs.
@@ -7,58 +7,55 @@
# libaries. The default definitions for the variables below are
# expressed in terms of this one, so you may not need to change them.
# set LIBROOT=/usr/local/lib/emacs-19.0
-set LIBROOT=/u/emacs
+LIBROOT=/u/src/emacs/19.0
# Emacs will search this path to find its elisp files. This should be
# a colon-separated list of directories. Strictly speaking, all the
# elisp files should go under DATADIR (below), since both elisp source
# and compiled elisp are completely portable, but it's traditional to
# give the lisp files their own subdirectory.
-set LISPPATH=/u/emacs/lisp
+LISPPATH=/u/src/emacs/19.0/lisp
# Emacs will look here for its architecture-independent files (like
# the tutorial and the zippy database).
-set DATADIR=/u/emacs/share-lib
+DATADIR=/u/src/emacs/19.0/share-lib
# Emacs will look here for its architecture-dependent files, like
# executables for its utilities.
-set LIBDIR=/u/emacs/arch-lib
+LIBDIR=/u/src/emacs/19.0/arch-lib
# The locking directory, where the Emacs locking code keeps track of
# which files are currently being edited.
# set LOCKDIR=${LIBROOT}/lock
-set LOCKDIR=/u/emacs/lock
+LOCKDIR=/u/src/emacs/19.0/lock
# This is where build-install should place the binaries people will
# want to run directly (like etags and Emacs itself).
-set BINDIR=/usr/local/bin
+BINDIR=/usr/local/bin
/bin/sed < src/paths.h-dist > src/paths.h \
--e 's;/usr/local/emacs;'${LIBDIR}';g' \
--e 's;\(#.*PATH_LOADSEARCH\).*$$;\1 "'${LISPPATH}'";' \
--e 's;\(#.*PATH_EXEC\).*$$;\1 "'${LIBDIR}'";' \
--e 's;\(#.*PATH_DATA\).*$$;\1 "'${DATADIR}'";' \
--e 's;\(#.*LOCK\).*$$;\1 "'${LOCKDIR}'/";'
-
-exit 1
+-e 's;\(#.*PATH_LOADSEARCH\).*$;\1 "'${LISPPATH}'";' \
+-e 's;\(#.*PATH_EXEC\).*$;\1 "'${LIBDIR}'";' \
+-e 's;\(#.*PATH_DATA\).*$;\1 "'${DATADIR}'";' \
+-e 's;\(#.*LOCK\).*$;\1 "'${LOCKDIR}'/";'
(cd lib-src; make) || exit 1
(cd src; make) || exit 1
-if (`pwd` != `(cd ${LIBROOT}; pwd)`) then
+if [ `pwd` != `(cd ${LIBROOT}; pwd)` ]; then
mv `pwd` ${LIBROOT}
- if ($status) then
+ if [ $? != '0' ]; then
mkdir ${LIBROOT}
echo mv `pwd` to ${LIBROOT} failed--using tar to copy.
tar cf - . | (cd ${LIBROOT}; umask 0; tar xf -)
- if ($status) then
+ if [ $? != '0' ]; then
echo tar-copying `pwd` to ${LIBROOT} failed.
exit 1
- endif
- endif
-endif
+ fi
+ fi
+fi
-cp ${LIBROOT}/etc/{ctags,etags} ${BINDIR}
+cp ${LIBROOT}/etc/[ce]tags ${BINDIR}
mv ${LIBROOT}/src/xemacs ${BINDIR}/emacs
rm ${LIBROOT}/src/temacs
-chmod 777 ${BINDIR}/{ctags,etags,emacs}
+chmod 777 ${BINDIR}/[ce]tags ${BINDIR}/emacs
diff --git a/src/window.c b/src/window.c
index 738227726f2..43a4a95b744 100644
--- a/src/window.c
+++ b/src/window.c
@@ -27,6 +27,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "indent.h"
#include "termchar.h"
#include "disptab.h"
+#include "keyboard.h"
Lisp_Object Qwindowp;
@@ -1930,9 +1931,10 @@ window_internal_height (w)
/* Scroll contents of window WINDOW up N lines. */
void
-window_scroll (window, n)
+window_scroll (window, n, noerror)
Lisp_Object window;
int n;
+ int noerror;
{
register struct window *w = XWINDOW (window);
register int opoint = point;
@@ -1961,14 +1963,14 @@ window_scroll (window, n)
SET_PT (opoint);
if (lose)
- Fsignal (Qbeginning_of_buffer, Qnil);
+ {
+ if (noerror)
+ return;
+ else
+ Fsignal (Qbeginning_of_buffer, Qnil);
+ }
if (pos < ZV)
-#if 0
- /* Allow scrolling to an empty screen (end of buffer)
- if that is exactly how far we wanted to go. */
- || XINT (nmoved) == n)
-#endif
{
set_marker_restricted (w->start, make_number (pos), w->buffer);
w->start_at_line_beg = bolp;
@@ -1987,7 +1989,12 @@ window_scroll (window, n)
}
}
else
- Fsignal (Qend_of_buffer, Qnil);
+ {
+ if (noerror)
+ return;
+ else
+ Fsignal (Qend_of_buffer, Qnil);
+ }
}
/* This is the guts of Fscroll_up and Fscroll_down. */
@@ -2000,29 +2007,27 @@ scroll_command (n, direction)
register int defalt;
int count = specpdl_ptr - specpdl;
- /* If selected window's buffer isn't current, make it current for the moment.
- But don't screw up if window_scroll gets an error. */
+ /* Code here used to set the current buffer to the selected window's
+ buffer, but since this command always operates on the selected
+ window, the current buffer should always be the selected window's
+ buffer already. Verify this assumption, so we won't be screwed
+ if we're guessing wrong. */
if (XBUFFER (XWINDOW (selected_window)->buffer) != current_buffer)
- {
- record_unwind_protect (save_excursion_restore, save_excursion_save ());
- Fset_buffer (XWINDOW (selected_window)->buffer);
- }
+ abort ();
defalt = (window_internal_height (XWINDOW (selected_window))
- next_screen_context_lines);
defalt = direction * (defalt < 1 ? 1 : defalt);
if (NILP (n))
- window_scroll (selected_window, defalt);
+ window_scroll (selected_window, defalt, 0);
else if (EQ (n, Qminus))
- window_scroll (selected_window, - defalt);
+ window_scroll (selected_window, - defalt, 0);
else
{
n = Fprefix_numeric_value (n);
- window_scroll (selected_window, XINT (n) * direction);
+ window_scroll (selected_window, XINT (n) * direction, 0);
}
-
- unbind_to (count, Qnil);
}
DEFUN ("scroll-up", Fscroll_up, Sscroll_up, 0, 1, "P",
@@ -2093,15 +2098,15 @@ showing that buffer, popping the buffer up if necessary.")
SET_PT (marker_position (w->pointm));
if (NILP (n))
- window_scroll (window, ht - next_screen_context_lines);
+ window_scroll (window, ht - next_screen_context_lines, 1);
else if (EQ (n, Qminus))
- window_scroll (window, next_screen_context_lines - ht);
+ window_scroll (window, next_screen_context_lines - ht, 1);
else
{
if (XTYPE (n) == Lisp_Cons)
n = Fcar (n);
CHECK_NUMBER (n, 0);
- window_scroll (window, XINT (n));
+ window_scroll (window, XINT (n), 1);
}
Fset_marker (w->pointm, make_number (point), Qnil);