the function returns just the value of the variable @code{exec-path}.
@end defun
+@cindex programs distributed with Emacs, starting
+@vindex ctags-program-name
+@vindex etags-program-name
+@vindex hexl-program-name
+@vindex emacsclient-program-name
+@vindex movemail-program-name
+@vindex ebrowse-program-manem
+ When starting a program that is part of the Emacs distribution,
+you must take into account that the program may have been renamed in
+order to comply with executable naming restrictions present on the
+system.
+
+ Instead of starting @command{ctags}, for example, you should specify
+the value of @code{ctags-program-name} instead. Likewise, instead of
+starting @command{movemail}, you must start
+@code{movemail-program-name}, and the same goes for @command{etags},
+@command{hexl}, @command{emacsclient}, and @command{ebrowse}.
+
@node Shell Arguments
@section Shell Arguments
@cindex arguments for shell commands
\f
* Lisp Changes in Emacs 30.1
++++
+** New variables describing the names of built in programs.
+The new variables 'ctags-program-name', 'ebrowse-program-name',
+'etags-program-name', 'hexl-program-name', 'emacsclient-program-name'
+and 'movemail-program-name' should be used instead of "ctags",
+"ebrowse", "etags", "hexl", and "emacsclient", when starting one of
+these built in programs in a subprocess.
+
+++
** 'x-popup-menu' now understands touch screen events.
When a 'touchscreen-begin' or 'touchscreen-end' event is passed as the
# lib/$(ANDROID_ABI)/libemacs.so
# lib/$(ANDROID_ABI)/libandroid-emacs.so
# lib/$(ANDROID_ABI)/libctags.so
+# lib/$(ANDROID_ABI)/libetags.so
# lib/$(ANDROID_ABI)/libhexl.so
# lib/$(ANDROID_ABI)/libmovemail.so
# lib/$(ANDROID_ABI)/librcs2log.so
# Binaries to cross-compile.
CROSS_BINS = ../cross/src/android-emacs ../cross/lib-src/ctags \
../cross/lib-src/hexl ../cross/lib-src/movemail \
- ../cross/lib-src/ebrowse ../cross/lib-src/emacsclient
+ ../cross/lib-src/ebrowse ../cross/lib-src/emacsclient \
+ ../cross/lib-src/etags
# Libraries to cross-compile.
CROSS_LIBS = ../cross/src/libemacs.so
;; Call the EBROWSE command.
(message "Creating ebrowse file: %s ..." savein)
(call-process-region (point-min) (point-max)
- "ebrowse" nil "*EBROWSE OUTPUT*" nil
+ ebrowse-program-name
+ nil "*EBROWSE OUTPUT*" nil
(concat "--output-file=" savein)
"--very-verbose")
)
"Number of idle seconds to wait before checking for new mail."
:type 'number)
-(defcustom mail-source-movemail-program "movemail"
+(defcustom mail-source-movemail-program movemail-program-name
"If non-nil, name of program for fetching new mail."
:version "26.2"
:type '(choice (const nil) string))
(const 64))
:version "24.3")
-(defcustom hexl-program "hexl"
+(defcustom hexl-program hexl-program-name
"The program that will hexlify and dehexlify its stdin.
`hexl-program' will always be concatenated with `hexl-options'
and \"-de\" when dehexlifying a buffer."
:tag "etags-cmd-alist"
:type '(alist :key-type (string) :value-type (string)))
-(defcustom hfy-etags-bin "etags"
+(defcustom hfy-etags-bin etags-program-name
"Location of etags binary (we begin by assuming it's in your path).
Note that if etags is not in your path, you will need to alter the shell
commands in `hfy-etags-cmd-alist'."
:tag "etags-bin"
- :type '(file))
+ :type '(file)
+ :version "30.1")
(defcustom hfy-shell-file-name "/bin/sh"
"Shell (Bourne or compatible) to invoke for complex shell operations."
;; Was cat, but on non-Unix platforms that might not exist, so
;; use hexl instead, which is part of the Emacs distribution.
(condition-case nil
- (start-process "ielm" (current-buffer) "hexl")
+ (start-process "ielm" (current-buffer) hexl-program-name)
(file-error (start-process "ielm" (current-buffer) "cat")))
(set-process-query-on-exit-flag (ielm-process) nil)
(goto-char (point-max))
;; assuming it would work.
;; https://lists.gnu.org/r/bug-gnu-emacs/2008-02/msg00087.html
(let ((progname (expand-file-name
- (concat "movemail"
+ (concat movemail-program-name
(if (memq system-type '(ms-dos windows-nt))
".exe")) dir)))
(when (and (not (file-directory-p progname))
(buffer-disable-undo errors)
(let ((args
(append
- (list (or rmail-movemail-program "movemail") nil errors nil)
+ (list (or rmail-movemail-program
+ movemail-program-name)
+ nil errors nil)
(if rmail-preserve-inbox
(list "-p")
nil)
See the ctags documentation for more information.")
(defcustom org-ctags-path-to-ctags
- (if (executable-find "ctags-exuberant") "ctags-exuberant" "ctags")
+ (if (executable-find "ctags-exuberant")
+ "ctags-exuberant"
+ ctags-program-name)
"Name of the ctags executable file."
:version "24.1"
:type 'file)
;; of etags has been commented out in the menu since ... well,
;; forever. So, let's just stick to ASCII here. -- haj, 2021-09-14
(interactive)
- (let ((cmd "etags")
+ (let ((cmd etags-program-name)
(args `("-l" "none" "-r"
;; 1=fullname 2=package? 3=name 4=proto? 5=attrs? (VERY APPROX!)
,(concat
This variable is ignored if `speedbar-use-imenu-flag' is non-nil.")
-(defcustom speedbar-fetch-etags-command "etags"
+(defcustom speedbar-fetch-etags-command etags-program-name
"Command used to create an etags file.
This variable is ignored if `speedbar-use-imenu-flag' is t."
:group 'speedbar
(reftex-access-scan-info current-prefix-arg)
(let* ((master (reftex-TeX-master-file))
(files (reftex-all-document-files))
- (cmd (format "etags %s" (mapconcat #'shell-quote-argument
- files " "))))
+ (cmd (format "%s %s"
+ etags-program-name
+ (mapconcat #'shell-quote-argument
+ files " "))))
(with-current-buffer (reftex-get-file-buffer-force master)
(message "Running etags to create TAGS file...")
(shell-command cmd)
See `setenv' and `getenv'. */);
Vprocess_environment = Qnil;
+ DEFVAR_LISP ("ctags-program-name", Vctags_program_name,
+ doc: /* Name of the `ctags' program distributed with Emacs.
+Use this instead of calling `ctags' directly, as `ctags' may have been
+renamed to comply with executable naming restrictions on the system. */);
+#if !defined HAVE_ANDROID || defined ANDROID_STUBIFY
+ Vctags_program_name = build_pure_c_string ("ctags");
+#else
+ Vctags_program_name = build_pure_c_string ("libctags.so");
+#endif
+
+ DEFVAR_LISP ("etags-program-name", Vetags_program_name,
+ doc: /* Name of the `etags' program distributed with Emacs.
+Use this instead of calling `etags' directly, as `etags' may have been
+renamed to comply with executable naming restrictions on the system. */);
+#if !defined HAVE_ANDROID || defined ANDROID_STUBIFY
+ Vetags_program_name = build_pure_c_string ("etags");
+#else
+ Vetags_program_name = build_pure_c_string ("libetags.so");
+#endif
+
+ DEFVAR_LISP ("hexl-program-name", Vhexl_program_name,
+ doc: /* Name of the `hexl' program distributed with Emacs.
+Use this instead of calling `hexl' directly, as `hexl' may have been
+renamed to comply with executable naming restrictions on the system. */);
+#if !defined HAVE_ANDROID || defined ANDROID_STUBIFY
+ Vhexl_program_name = build_pure_c_string ("hexl");
+#else
+ Vhexl_program_name = build_pure_c_string ("libhexl.so");
+#endif
+
+ DEFVAR_LISP ("emacsclient-program-name", Vemacsclient_program_name,
+ doc: /* Name of the `emacsclient' program distributed with Emacs.
+Use this instead of calling `emacsclient' directly, as `emacsclient'
+may have been renamed to comply with executable naming restrictions on
+the system. */);
+#if !defined HAVE_ANDROID || defined ANDROID_STUBIFY
+ Vemacsclient_program_name = build_pure_c_string ("emacsclient");
+#else
+ Vemacsclient_program_name = build_pure_c_string ("libemacsclient.so");
+#endif
+
+ DEFVAR_LISP ("movemail-program-name", Vmovemail_program_name,
+ doc: /* Name of the `movemail' program distributed with Emacs.
+Use this instead of calling `movemail' directly, as `movemail'
+may have been renamed to comply with executable naming restrictions on
+the system. */);
+#if !defined HAVE_ANDROID || defined ANDROID_STUBIFY
+ Vmovemail_program_name = build_pure_c_string ("movemail");
+#else
+ Vmovemail_program_name = build_pure_c_string ("libmovemail.so");
+#endif
+
+ DEFVAR_LISP ("ebrowse-program-name", Vebrowse_program_name,
+ doc: /* Name of the `ebrowse' program distributed with Emacs.
+Use this instead of calling `ebrowse' directly, as `ebrowse'
+may have been renamed to comply with executable naming restrictions on
+the system. */);
+#if !defined HAVE_ANDROID || defined ANDROID_STUBIFY
+ Vebrowse_program_name = build_pure_c_string ("ebrowse");
+#else
+ Vebrowse_program_name = build_pure_c_string ("libebrowse.so");
+#endif
+
defsubr (&Scall_process);
defsubr (&Sgetenv_internal);
defsubr (&Scall_process_region);