comparison lisp/startup.el @ 4448:fd8a9a4d81d9

Support #!, to allow XEmacs to be called as a script interpreter. ChangeLog addition: 2008-01-20 Aidan Kehoe <kehoea@parhasard.net> * Makefile.in.in (SHEBANG_PROGNAME): New variable; a symbol link to the XEmacs binary to tell it it should read a script from stdin. * configure.ac (XE_EXPAND_VARIABLE): Set SHEBANG_PROGNAME. * configure: Regenerate. src/ChangeLog addition: 2008-01-20 Aidan Kehoe <kehoea@parhasard.net> * config.h.in: Add SHEBANG_PROGNAME. * emacs.c (main_1): If we've been called using SHEBANG_PROGNAME, rewrite our arguments to add a --script argument. Also, handle the --script argument by setting noninteractive and vanilla. * lread.c (Fload_internal): If the first two characters of a file are #!, replace them with ;! before they get to the Lisp reader. lisp/ChangeLog addition: 2008-01-20 Aidan Kehoe <kehoea@parhasard.net> * startup.el (command-line-do-script): New. (command-switch-alist): Use command-line-do-script. New argument, compatible with GNU; --script or -script says "treat the following argument as a file to load in batch mode". man/ChangeLog addition: 2008-01-20 Aidan Kehoe <kehoea@parhasard.net> * xemacs/cmdargs.texi (Command Switches): Describe --script, -script.
author Aidan Kehoe <kehoea@parhasard.net>
date Sun, 20 Jan 2008 19:53:54 +0100
parents 6b571dc4ba3f
children e34711681f30
comparison
equal deleted inserted replaced
4408:8bbabcab2c42 4448:fd8a9a4d81d9
232 ("-f" . command-line-do-funcall) 232 ("-f" . command-line-do-funcall)
233 ("-e" . command-line-do-funcall-1) 233 ("-e" . command-line-do-funcall-1)
234 ("-eval" . command-line-do-eval) 234 ("-eval" . command-line-do-eval)
235 ("-load" . command-line-do-load) 235 ("-load" . command-line-do-load)
236 ("-l" . command-line-do-load) 236 ("-l" . command-line-do-load)
237 ("--script" . command-line-do-script)
238 ("-script" . command-line-do-script)
237 ("-insert" . command-line-do-insert) 239 ("-insert" . command-line-do-insert)
238 ("-i" . command-line-do-insert) 240 ("-i" . command-line-do-insert)
239 ("-kill" . command-line-do-kill) 241 ("-kill" . command-line-do-kill)
240 ("-eol" . command-line-do-enable-eol-detection) 242 ("-eol" . command-line-do-enable-eol-detection)
241 ("-enable-eol-detection" . command-line-do-enable-eol-detection) 243 ("-enable-eol-detection" . command-line-do-enable-eol-detection)
434 ;; Take file from default dir if it exists there; 436 ;; Take file from default dir if it exists there;
435 ;; otherwise let `load' search for it. 437 ;; otherwise let `load' search for it.
436 (if (file-exists-p (expand-file-name file)) 438 (if (file-exists-p (expand-file-name file))
437 (setq file (expand-file-name file))) 439 (setq file (expand-file-name file)))
438 (load file nil t))) 440 (load file nil t)))
441
442 (defun command-line-do-script (arg)
443 "Load the named file of Lisp code into XEmacs.
444 <file>"
445 (let ((file (pop command-line-args-left)))
446 (load file nil t t)))
439 447
440 (defun command-line-do-insert (arg) 448 (defun command-line-do-insert (arg)
441 "Insert file into the current buffer. 449 "Insert file into the current buffer.
442 <file>" 450 <file>"
443 (insert-file-contents (pop command-line-args-left))) 451 (insert-file-contents (pop command-line-args-left)))