diff --git a/src/CHANGELOG b/src/CHANGELOG index f705a1447..d8b9400bd 100755 --- a/src/CHANGELOG +++ b/src/CHANGELOG @@ -114,6 +114,13 @@ and important fixes to let ECL work better with Slime. - The PROFILE package now has an alias, SB-PROFILE. + - ECL now stores the location of its source files in a logical hostname, + "SRC:", which points to the directory where Announcement is located. + + - When building ECL, if "etags" is installed, a file TAGS is created which + contains references to the location of all C functions. This file can be + used to locate functions from the core library in Slime, using M-. + ;;; Local Variables: *** ;;; mode:text *** ;;; fill-column:79 *** diff --git a/src/Makefile.in b/src/Makefile.in index 36087357d..d46836ba7 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -48,7 +48,7 @@ LSP_LIBRARIES = @LSP_LIBRARIES@ TARGETS = @TARGETS@ ECL_CMPDIR = @ECL_CMPDIR@ -all: $(TARGETS) bin/ecl-config +all: $(TARGETS) bin/ecl-config TAGS .PHONY: all %Makefile: $(srcdir)/%Makefile.in config.status @@ -149,7 +149,7 @@ install-base: rm $(DESTDIR)$(includedir)/ecl/config.h mv $(DESTDIR)$(includedir)/ecl/config-install.h $(DESTDIR)$(includedir)/ecl/config.h $(INSTALL_SCRIPT) bin/ecl-config $(DESTDIR)$(bindir) - for i in BUILD-STAMP help.doc ; do \ + for i in BUILD-STAMP help.doc TAGS ; do \ $(INSTALL_DATA) $$i $(DESTDIR)$(ecldir); \ done for i in $(LSP_LIBRARIES) $(LIBRARIES); do \ @@ -194,7 +194,7 @@ clean: mostlyclean $(RM) -r * mostlyclean: clean_lisp for i in $(SUBDIRS); do (cd $$i; $(MAKE) clean); done - $(RM) ecl_min$(EXE) bin/ecl$(EXE) help.doc core a.out + $(RM) ecl_min$(EXE) bin/ecl$(EXE) help.doc core a.out TAGS $(RM) config.version config.log config.cache $(RM) *.c *.o *.a *.h *.data *.fas *.dat *.la *.so *.dylib clean_lisp: @@ -224,5 +224,16 @@ selfbuild: ./ecl compile -for i in lsp clos cmp clx tk; do test -d $$i && diff --exclude=\*.o $$i stage2/$$i; done | less +# Make sure to also include *.d files; and match DPP's idiosyncracies +# like "@si::foo" and "@(defun si::foo". TAGS: - etags -R --langmap=c:+.d + if which etags ; then \ + srcfiles=`find $(srcdir)/c/ $(srcdir)/h/ -name '*.[chd]'`; \ + etags --language=c -o $@ $$srcfiles && \ + etags --language=none -o $@ --append \ + --regex='/@\([-:*a-zA-z]+\)/\1/' \ + --regex='/@(defun \([-:*a-zA-z]+\)/\1/' \ + $$srcfiles; \ + else \ + echo > $@; \ + fi diff --git a/src/lsp/config.lsp.in b/src/lsp/config.lsp.in index 42e481ada..6ecb28033 100644 --- a/src/lsp/config.lsp.in +++ b/src/lsp/config.lsp.in @@ -1,3 +1,4 @@ +;; -*- Mode:Lisp -*- ;; @configure_input@ ;; ;; Configuration file for ECL @@ -104,12 +105,6 @@ Returns, as a string, the version of the software under which ECL runs." ;; * Set configuration pathnames. Notice the trailing slash! ;; Otherwise it would not be a directory. ;; -#-ecl-min -(let ((path (si::get-library-pathname))) - (when path - (si::pathname-translations "SYS" - `(("**;*.*" ,(merge-pathnames "**/*.*" path ))))) -);#-eclmin #-msvc (si::pathname-translations "HOME" '(("**;*.*" "~/**/*.*"))) #+msvc @@ -125,3 +120,15 @@ Returns, as a string, the version of the software under which ECL runs." (t (setf x #+unix "/tmp" #-unix "./"))) (si::pathname-translations "TMP" `(("**;*.*" ,(format nil "~A/**/*.*" x))))) + +#-ecl-min +(macrolet ((define-pathname-translations (name base-pathname) + `(let ((path ,base-pathname)) + (when path + (si::pathname-translations + ,name `(("**;*.*" ,(merge-pathnames "**/*.*" path)))))))) + (define-pathname-translations "SYS" (si::get-library-pathname)) + (let ((x (ext:getenv "ECLSRCDIR"))) + (unless (and x (setq x (probe-file x))) + (setf x #.(truename "@top_srcdir@/../"))) + (define-pathname-translations "SRC" x)))