aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Eggert2020-01-24 16:41:38 -0800
committerPaul Eggert2020-01-24 16:46:42 -0800
commitf42d57c7dbd571b449270c8899a67e537561c2b2 (patch)
tree3750aa093fb8ac135c20a247e8d82c49b55bd8a4 /src
parent0c6c8aa002d321db61afdd14c70744f7bc27f268 (diff)
downloademacs-f42d57c7dbd571b449270c8899a67e537561c2b2.tar.gz
emacs-f42d57c7dbd571b449270c8899a67e537561c2b2.zip
Install C source code for C-h f etc.
Without this change, on typical GNU/Linux distributions like Debian, the first button of ‘C-h f car RET’ does not work because the source code for ‘car’ is not installed (Bug#37527). Fix this by installing the (compressed) C source code alongside the (compressed) Lisp source code that is already installed. This adds about 3 MB (about 2%) to the size of the installed files on my platform. * Makefile.in (emacs_srcdir): New macro. (epaths-force): Substitute PATH_EMACS_SOURCE. (install-c-src): New rule, that installs a copy of the C source code if emacs_srcdir says to. (install-arch-indep): Depend on it. * configure.ac (emacs_srcdir): New var. Add support for --disable-install-srcdir. * lisp/emacs-lisp/find-func.el (find-function-C-source-directory): Look in emacs-source-directory first. (find-function-C-source): Also look for gzipped source files. * lisp/startup.el (normal-top-level): Also recode emacs-source-directory. * src/epaths.in (PATH_EMACS_SOURCE): New macro. * src/lread.c: Include dosname.h, for IS_ABSOLUTE_FILE_NAME. (syms_of_lread): New var emacs-source-directory.
Diffstat (limited to 'src')
-rw-r--r--src/epaths.in4
-rw-r--r--src/lread.c10
2 files changed, 13 insertions, 1 deletions
diff --git a/src/epaths.in b/src/epaths.in
index 3cadd160ecf..554fdd7228a 100644
--- a/src/epaths.in
+++ b/src/epaths.in
@@ -73,5 +73,9 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
73/* Where Emacs should store game score files. */ 73/* Where Emacs should store game score files. */
74#define PATH_GAME "/usr/local/var/games/emacs" 74#define PATH_GAME "/usr/local/var/games/emacs"
75 75
76/* Where Emacs should look for its own installed source code,
77 or the empty string if the source code is not installed. */
78#define PATH_EMACS_SOURCE "/usr/local/share/emacs"
79
76/* Where Emacs should look for the application default file. */ 80/* Where Emacs should look for the application default file. */
77#define PATH_X_DEFAULTS "/usr/lib/X11/%L/%T/%N%C%S:/usr/lib/X11/%l/%T/%N%C%S:/usr/lib/X11/%T/%N%C%S:/usr/lib/X11/%L/%T/%N%S:/usr/lib/X11/%l/%T/%N%S:/usr/lib/X11/%T/%N%S" 81#define PATH_X_DEFAULTS "/usr/lib/X11/%L/%T/%N%C%S:/usr/lib/X11/%l/%T/%N%C%S:/usr/lib/X11/%T/%N%C%S:/usr/lib/X11/%L/%T/%N%S:/usr/lib/X11/%l/%T/%N%S:/usr/lib/X11/%T/%N%S"
diff --git a/src/lread.c b/src/lread.c
index 69dd73912bc..274491f0229 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -44,6 +44,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
44#include "blockinput.h" 44#include "blockinput.h"
45#include "pdumper.h" 45#include "pdumper.h"
46#include <c-ctype.h> 46#include <c-ctype.h>
47#include <dosname.h>
47#include <vla.h> 48#include <vla.h>
48 49
49#ifdef MSDOS 50#ifdef MSDOS
@@ -4992,11 +4993,18 @@ and is not meant for users to change. */);
4992 4993
4993 DEFVAR_LISP ("source-directory", Vsource_directory, 4994 DEFVAR_LISP ("source-directory", Vsource_directory,
4994 doc: /* Directory in which Emacs sources were found when Emacs was built. 4995 doc: /* Directory in which Emacs sources were found when Emacs was built.
4995You cannot count on them to still be there! */); 4996You cannot count on them to still be there! Also see
4997`emacs-source-directory'. */);
4996 Vsource_directory 4998 Vsource_directory
4997 = Fexpand_file_name (build_string ("../"), 4999 = Fexpand_file_name (build_string ("../"),
4998 Fcar (decode_env_path (0, PATH_DUMPLOADSEARCH, 0))); 5000 Fcar (decode_env_path (0, PATH_DUMPLOADSEARCH, 0)));
4999 5001
5002 DEFVAR_LISP ("emacs-source-directory", Vemacs_source_directory,
5003 doc: /* Directory where Emacs sources can be found. */);
5004 Vemacs_source_directory = (IS_ABSOLUTE_FILE_NAME (PATH_EMACS_SOURCE)
5005 ? build_string (PATH_EMACS_SOURCE)
5006 : Vsource_directory);
5007
5000 DEFVAR_LISP ("preloaded-file-list", Vpreloaded_file_list, 5008 DEFVAR_LISP ("preloaded-file-list", Vpreloaded_file_list,
5001 doc: /* List of files that were preloaded (when dumping Emacs). */); 5009 doc: /* List of files that were preloaded (when dumping Emacs). */);
5002 Vpreloaded_file_list = Qnil; 5010 Vpreloaded_file_list = Qnil;