diff options
| author | Paul Eggert | 2020-01-24 16:41:38 -0800 |
|---|---|---|
| committer | Paul Eggert | 2020-01-24 16:46:42 -0800 |
| commit | f42d57c7dbd571b449270c8899a67e537561c2b2 (patch) | |
| tree | 3750aa093fb8ac135c20a247e8d82c49b55bd8a4 /src | |
| parent | 0c6c8aa002d321db61afdd14c70744f7bc27f268 (diff) | |
| download | emacs-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.in | 4 | ||||
| -rw-r--r-- | src/lread.c | 10 |
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. |
| 4995 | You cannot count on them to still be there! */); | 4996 | You 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; |