[ESS-bugs] ess-5.2.0 with NT based cygwin

Barrett E Kirwan kirwan at MIT.EDU
Fri May 14 17:14:09 CEST 2004


Hi,

I just upgraded to ess-5.2.0 from ess-5.1.24, and I ran into a snag.  I'm not
sure if this is a bug or not, but I thought I'd send an email and let those
with the skills to understand what's going on decide.  

I have been using ess-5.1.24 with cygwin (I'm not sure how to determine what the
version number is) and emacs 21.2 (the emacs that installs with cygwin).  I
used this on both a Windows 2000 machine and a Windows XP Pro machine.  I
installed it easy enough and have never had a problem with it.  Yesterday I
upgraded to ess-5.2.0, and I encountered a problem.  I subsequently fixed the
problem, but I thought I'd send a bug report just in case the problem is with
ess-5.2.0 (the problem could very well be with me; I don't know Lisp & I'm more
of a consumer of emacs than anything).

Here's the debugger log from my initial installation of ess-5.2.0:

Debugger entered--Lisp error: (wrong-type-argument stringp nil)
  string-match("/" nil)
  (let* ((temp-shell ...) (temp-char ...)) (while temp-char (setq temp-shell
...) (setq temp-char ...)) (cond (... "nohup nice +6") (t "nohup nice")))
  (if (equal ess-sas-submit-method (quote sh)) (let* (... ...) (while temp-char
... ...) (cond ... ...)) (if ess-microsoft-p "start"))
  eval((if (equal ess-sas-submit-method (quote sh)) (let* (... ...) (while
temp-char ... ...) (cond ... ...)) (if ess-microsoft-p "start")))
  custom-initialize-reset(ess-sas-submit-pre-command (if (equal
ess-sas-submit-method (quote sh)) (let* (... ...) (while temp-char ... ...)
(cond ... ...)) (if ess-microsoft-p "start")))
  custom-declare-variable(ess-sas-submit-pre-command (if (equal
ess-sas-submit-method (quote sh)) (let* (... ...) (while temp-char ... ...)
(cond ... ...)) (if ess-microsoft-p "start")) "*Command-line statement to
precede SAS invocation, e.g. start or nohup" :group ess-sas :type string)
  (defcustom ess-sas-submit-pre-command (if (equal ess-sas-submit-method ...)
(let* ... ... ...) (if ess-microsoft-p "start")) "*Command-line statement to
precede SAS invocation, e.g. start or nohup" :group (quote ess-sas) :type
(quote string))
  eval-buffer(#<buffer  *load*<5>> nil "essa-sas" nil t)
 
load-with-code-conversion("/cygdrive/c/cygwin/usr/share/emacs/site-lisp/ess-5.2.0/lisp/essa-sas.el"
"essa-sas" nil t)
  require(essa-sas)
  eval-buffer(#<buffer  *load*<4>> nil "essl-sas" nil t)
 
load-with-code-conversion("/cygdrive/c/cygwin/usr/share/emacs/site-lisp/ess-5.2.0/lisp/essl-sas.el"
"essl-sas" nil t)
  require(essl-sas)
  eval-buffer(#<buffer  *load*<3>> nil "essd-sas" nil t)
 
load-with-code-conversion("/cygdrive/c/cygwin/usr/share/emacs/site-lisp/ess-5.2.0/lisp/essd-sas.el"
"essd-sas" nil t)
  require(essd-sas)
  eval-buffer(#<buffer  *load*<2>> nil
"/cygdrive/c/cygwin/usr/share/emacs/site-lisp/ess-5.2.0/lisp/ess-site" nil t)
 
load-with-code-conversion("/cygdrive/c/cygwin/usr/share/emacs/site-lisp/ess-5.2.0/lisp/ess-site.el"
"/cygdrive/c/cygwin/usr/share/emacs/site-lisp/ess-5.2.0/lisp/ess-site" nil
nil)
  load("/cygdrive/c/cygwin/usr/share/emacs/site-lisp/ess-5.2.0/lisp/ess-site")
  eval-buffer(#<buffer  *load*> nil "~/.emacs" nil t)
  load-with-code-conversion("/cygdrive/c/.emacs" "~/.emacs" t t)
  load("~/.emacs" t t)
  #[nil
"??	Æ=?ÇÈQ?5	É=?'ÊÇËÌ#?#Í?5Î?5	Ï=?1Ð?5ÇÑQÒÓ\nÒ?#?Ò=?FË??Ô!Õ???Ö!?
×P
Ø
!?d
?oØ\f!?n\f?oË???Ù\f\"??ÚÛ\f#?ÜÝ!?\f*??Ë
 ÓÞÒ?#))?" [init-file-user
system-type user-init-file-1 user-init-file source alt ms-dos "~" "/_emacs"
windows-nt directory-files nil "^\\.emacs\\(\\.elc?\\)?$" "~/.emacs" "~/_emacs"
vax-vms "sys$login:.emacs" "/.emacs" t load file-name-extension "elc"
file-name-sans-extension ".el" file-exists-p file-newer-than-file-p message
"Warning: %s is newer than %s" sit-for 1 "default" inhibit-default-init
inhibit-startup-message] 5]()
  command-line()
  normal-top-level()

Here's my .emacs file (very short and sweet):

(load "/cygdrive/c/cygwin/usr/share/emacs/site-lisp/ess-5.2.0/lisp/ess-site")

I searched around the web for quite a while, until I finally found this posting
to the ess-help mailing list back in February 2002
(http://stat.ethz.ch/pipermail/ess-help/2002-February/000886.html):

;;; shell on windows to bash

;;; this sequence is designed to be occupy several lines
;;; in emacs/emacs-21.1.90/site-lisp/site-start.el

;;; This file requires no changes to run in a different path.
;;; When it is installed in the ../emacs/emacs-21.1.90/site-lisp/
;;; directory, it will know where it is.  For example, if we are in
;;; "c:/emacs/emacs-21.1.90/site-lisp/site-start.el" then
;;; `where' is "c:/"

;;; It also assume that emacs and cygwin are parallel in the directory
;;; structure, that is, that you are working with, for example,
;;;    c:/emacs/emacs-21.1.90/
;;;    c:/cygwin/bin/bash.exe

(make-local-variable 'where)
(setq where (file-name-directory
	     (file-truename (concat load-file-name "/../../.."))))
(make-local-variable 'progra~1)
(setq progra~1 (concat where "progra~1/"))
(make-local-variable 'cygwin)
(make-local-variable 'cygwin-bin)
(make-local-variable 'cygwin-bash)
(setq cygwin (concat where "cygwin"))
(setq cygwin-bin (concat cygwin "/bin"))
(setq cygwin-bash (concat cygwin-bin "/bash.exe"))
(setenv "COMSPEC" cygwin-bash)
(setenv "SHELL" cygwin-bash)
(setq shell-file-name cygwin-bash)


Creating a site-start.el file with this in it did the trick (even though my
emacs & cygwin are not in a parallel directory structure, go figure).

So, that's the problem I faced and the solution I used.  I just thought I'd let
you know, in case there was a problem with ESS rather than with me.

Best,
Barrett

-----
Barrett E. Kirwan
Lecturer
Policy Analysis and Management
Cornell University
132 Martha Van Rensselaer Hall
Ithaca, NY 14853
Tel. 607-255-2594
Email. bek27 at cornell.edu




More information about the ESS-bugs mailing list