mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-02-08 20:58:58 +00:00
* doc.c: New variable Vbuild_files.
(Fsnarf_documentation): If Vbuild_files is nil, populate it with file names from buildobh.lst. Only attach docstrings from files that are in Vbuild_files. (syms_of_doc): Defvar Vbuild_files. * Makefile.in (SOME_MACHINE_OBJECTS): Add fringe.o, image.o and w32*.o. (temacs${EXEEXT}): Generate buildobj.lst when temacs is linked. (mostlyclean): rm buildobj.lst * makefile.w32-in ($(TEMACS)): Generate buildobj.lst when temacs is linked.
This commit is contained in:
parent
3cf5c99434
commit
d87a9ab893
@ -1,3 +1,19 @@
|
||||
2004-11-09 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
|
||||
|
||||
* doc.c: New variable Vbuild_files.
|
||||
(Fsnarf_documentation): If Vbuild_files is nil, populate it with
|
||||
file names from buildobh.lst. Only attach docstrings from files
|
||||
that are in Vbuild_files.
|
||||
(syms_of_doc): Defvar Vbuild_files.
|
||||
|
||||
* Makefile.in (SOME_MACHINE_OBJECTS): Add fringe.o, image.o
|
||||
and w32*.o.
|
||||
(temacs${EXEEXT}): Generate buildobj.lst when temacs is linked.
|
||||
(mostlyclean): rm buildobj.lst
|
||||
|
||||
* makefile.w32-in ($(TEMACS)): Generate buildobj.lst when temacs
|
||||
is linked.
|
||||
|
||||
2004-11-09 Kim F. Storm <storm@cua.dk>
|
||||
|
||||
* fringe.c (update_window_fringes): Update fringe bitmaps if
|
||||
|
@ -596,8 +596,10 @@ obj= dispnew.o frame.o scroll.o xdisp.o $(XMENU_OBJ) window.o \
|
||||
These go in the DOC file on all machines
|
||||
in case they are needed there. */
|
||||
SOME_MACHINE_OBJECTS = sunfns.o dosfns.o msdos.o \
|
||||
xterm.o xfns.o xmenu.o xselect.o xrdb.o \
|
||||
mac.o macterm.o macfns.o macmenu.o fontset.o
|
||||
xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o fringe.o image.o \
|
||||
mac.o macterm.o macfns.o macmenu.o fontset.o \
|
||||
w32.o w32bdf.o w32console.o w32fns.o w32heap.o w32inevt.o \
|
||||
w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o
|
||||
|
||||
|
||||
#ifdef TERMINFO
|
||||
@ -944,6 +946,7 @@ ${libsrc}make-docfile${EXEEXT}:
|
||||
#endif
|
||||
|
||||
temacs${EXEEXT}: MAKE_PARALLEL $(LOCALCPP) $(STARTFILES) stamp-oldxmenu ${obj} ${otherobj} OBJECTS_MACHINE prefix-args${EXEEXT}
|
||||
echo "${obj} ${otherobj} " OBJECTS_MACHINE > buildobj.lst
|
||||
$(LD) YMF_PASS_LDFLAGS (${STARTFLAGS} ${TEMACS_LDFLAGS}) $(LDFLAGS) \
|
||||
-o temacs ${STARTFILES} ${obj} ${otherobj} \
|
||||
OBJECTS_MACHINE ${LIBES}
|
||||
@ -1272,6 +1275,7 @@ mostlyclean:
|
||||
rm -f temacs${EXEEXT} prefix-args${EXEEXT} core *.core \#* *.o libXMenu11.a liblw.a
|
||||
rm -f ../etc/DOC
|
||||
rm -f bootstrap-emacs${EXEEXT}
|
||||
rm -f buildobj.lst
|
||||
clean: mostlyclean
|
||||
rm -f emacs-*${EXEEXT} emacs${EXEEXT}
|
||||
/**/# This is used in making a distribution.
|
||||
|
76
src/doc.c
76
src/doc.c
@ -51,6 +51,9 @@ Lisp_Object Vdoc_file_name;
|
||||
|
||||
Lisp_Object Qfunction_documentation;
|
||||
|
||||
/* A list of files used to build this Emacs binary. */
|
||||
static Lisp_Object Vbuild_files;
|
||||
|
||||
extern Lisp_Object Voverriding_local_map;
|
||||
|
||||
/* For VMS versions with limited file name syntax,
|
||||
@ -581,6 +584,7 @@ the same file name is found in the `doc-directory'. */)
|
||||
register char *p, *end;
|
||||
Lisp_Object sym;
|
||||
char *name;
|
||||
int skip_file = 0;
|
||||
|
||||
CHECK_STRING (filename);
|
||||
|
||||
@ -618,6 +622,54 @@ the same file name is found in the `doc-directory'. */)
|
||||
#endif /* VMS4_4 */
|
||||
#endif /* VMS */
|
||||
|
||||
/* Vbuild_files is nil when temacs is run, and non-nil after that. */
|
||||
if (NILP (Vbuild_files))
|
||||
{
|
||||
size_t cp_size = 0;
|
||||
size_t to_read;
|
||||
int nr_read;
|
||||
char *cp = NULL;
|
||||
char *beg, *end;
|
||||
|
||||
fd = emacs_open ("buildobj.lst", O_RDONLY, 0);
|
||||
if (fd < 0)
|
||||
report_file_error ("Opening file buildobj.lst", Qnil);
|
||||
|
||||
filled = 0;
|
||||
for (;;)
|
||||
{
|
||||
cp_size += 1024;
|
||||
to_read = cp_size - 1 - filled;
|
||||
cp = xrealloc (cp, cp_size);
|
||||
nr_read = emacs_read (fd, &cp[filled], to_read);
|
||||
filled += nr_read;
|
||||
if (nr_read < to_read)
|
||||
break;
|
||||
}
|
||||
|
||||
emacs_close (fd);
|
||||
cp[filled] = 0;
|
||||
|
||||
for (beg = cp; *beg; beg = end)
|
||||
{
|
||||
int len;
|
||||
|
||||
while (*beg && isspace (*beg)) ++beg;
|
||||
|
||||
for (end = beg; *end && ! isspace (*end); ++end)
|
||||
if (*end == '/') beg = end+1; /* skip directory part */
|
||||
|
||||
len = end - beg;
|
||||
if (len > 4 && end[-4] == '.' && end[-3] == 'o')
|
||||
len -= 2; /* Just take .o if it ends in .obj */
|
||||
|
||||
if (len > 0)
|
||||
Vbuild_files = Fcons (make_string (beg, len), Vbuild_files);
|
||||
}
|
||||
|
||||
xfree (cp);
|
||||
}
|
||||
|
||||
fd = emacs_open (name, O_RDONLY, 0);
|
||||
if (fd < 0)
|
||||
report_file_error ("Opening doc string file",
|
||||
@ -640,10 +692,28 @@ the same file name is found in the `doc-directory'. */)
|
||||
if (p != end)
|
||||
{
|
||||
end = (char *) index (p, '\n');
|
||||
|
||||
/* See if this is a file name, and if it is a file in build-files. */
|
||||
if (p[1] == 'S' && end - p > 4 && end[-2] == '.'
|
||||
&& (end[-1] == 'o' || end[-1] == 'c'))
|
||||
{
|
||||
int len = end - p - 2;
|
||||
char *fromfile = alloca (len + 1);
|
||||
strncpy (fromfile, &p[2], len);
|
||||
fromfile[len] = 0;
|
||||
if (fromfile[len-1] == 'c')
|
||||
fromfile[len-1] = 'o';
|
||||
|
||||
if (EQ (Fmember (build_string (fromfile), Vbuild_files), Qnil))
|
||||
skip_file = 1;
|
||||
else
|
||||
skip_file = 0;
|
||||
}
|
||||
|
||||
sym = oblookup (Vobarray, p + 2,
|
||||
multibyte_chars_in_text (p + 2, end - p - 2),
|
||||
end - p - 2);
|
||||
if (SYMBOLP (sym))
|
||||
if (! skip_file && SYMBOLP (sym))
|
||||
{
|
||||
/* Attach a docstring to a variable? */
|
||||
if (p[1] == 'V')
|
||||
@ -919,6 +989,10 @@ syms_of_doc ()
|
||||
doc: /* Name of file containing documentation strings of built-in symbols. */);
|
||||
Vdoc_file_name = Qnil;
|
||||
|
||||
DEFVAR_LISP ("build-files", &Vbuild_files,
|
||||
doc: /* A list of files used to build this Emacs binary. */);
|
||||
Vbuild_files = Qnil;
|
||||
|
||||
defsubr (&Sdocumentation);
|
||||
defsubr (&Sdocumentation_property);
|
||||
defsubr (&Ssnarf_documentation);
|
||||
|
@ -168,6 +168,9 @@ temacs: $(BLD) $(TEMACS)
|
||||
$(TEMACS): $(TLIB0) $(TLIB1) $(TLIBW32) $(TLASTLIB) $(TOBJ) $(TRES)
|
||||
$(LINK) $(LINK_OUT)$(TEMACS_TMP) $(FULL_LINK_FLAGS) $(TOBJ) $(TRES) $(LIBS)
|
||||
"../nt/$(BLD)/addsection" "$(TEMACS_TMP)" "$(TEMACS)" EMHEAP 16
|
||||
echo $(OBJ0) > $(BLD)/buildobj.lst
|
||||
echo $(OBJ1) >> $(BLD)/buildobj.lst
|
||||
echo $(WIN32OBJ) >> $(BLD)/buildobj.lst
|
||||
|
||||
bootstrap: bootstrap-emacs
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user