[ESS] setting transcript file name
Martin Maechler
maechler at stat.math.ethz.ch
Tue Aug 2 12:29:48 CEST 2005
>>>>> "StEgl" == Stephen Eglen <S.J.Eglen at damtp.cam.ac.uk>
>>>>> on Tue, 02 Aug 2005 09:50:29 +0100 writes:
>> Is it possible to set transcript file name to a predefined one, when
>> starting ESS? If you set ess-ask-about-transfile to t, it will ask the
>> filename, but it is a hassle to enter it everytime. I for example
>> want, that every R session I start with ESS would be recorded in a
>> transcript file with name
>> "name-of-directory-R-was-started-in--current-date.St". The bash
>> equivalent of name would be
>>
>> $(echo "`pwd`" | sed "s/\/.*\///")-`date +%y-%m-%d`.St
>>
>> How to translate that to lisp? I have none lisp experience, but if
>> someone would give an example of similar script, I would be very
>> grateful.
StEgl> Currently, ESS does not have that behaviour. The relevant function is
StEgl> inferior-ess which has:
StEgl> (if ess-ask-about-transfile
StEgl> (let ((transfilename (read-file-name
StEgl> "Use transcript file (default none):"
StEgl> startdir "")))
StEgl> One possibility is that we could overload ess-ask-about-transfile
StEgl> so that if it is bound to a function, that function is executed to
StEgl> return the default transcript name. Then you could have a simple
StEgl> function like:
> (defun my-transcript-name ()
> (let ((date (format-time-string "%y-%m-%d" (current-time)))
> (directory (car
> (last (split-string default-directory "/" 'omit-null)))))
> (concat date "-" directory ".Rt")))
StEgl> when then returns something like
StEgl> (my-transcript-name)
StEgl> "05-08-02-Code.Rt"
StEgl> But as you can see, this requires a little knowledge of lisp to
StEgl> write the defun to return the transcript name.
StEgl> Ess-core: does this sound like worth adding
Hmm, I have never heard of such a wish, and in all my "teaching"
about ESS I'd rather encourage people to work with 'scripts'
(*.R) rather than 'transcripts' (*.Rt or *.Rout).
But then, ESS has always been supporting (at least) two kinds of
work habits. For Vaidotas' habits this will be worth
{but then I still think he should change them :-) }
StEgl> (& is there an easier way to get the name of the current directory?)
I think default-directory is quite desirable, but don't know for sure.
To get the `basename' of that directory however, I'd use
(file-name-nondirectory (expand-file-name default-directory))
This would also bypass the use of (split-string ..) which does
not accept an 'omit-null argument in my versions of Emacs
(21.3, 21.4).
Martin
More information about the ESS-help
mailing list