[ESS] encoding of i/o in *R* buffer and norwegian letters

Jarle Tufto jarle.tufto at math.ntnu.no
Thu Oct 11 11:29:30 CEST 2007


I'm having a small problem with norwegian/danish letters and i/o with R 
when running through ess.  By default, on my ubuntu 7.04 box, R appear 
to expects i/o encoded as utf-8 (see below).  Emacs and ess, on the 
other hand, by default, sends i/o to the R session running inside the 
*R* buffer encoded as latin-1.  I guess this is why the following 
complete expression (containing the norwegian letter "ø") is interpreted 
incorrectly as an incomplete expression:

 > cat("ø\n")

So to make things work I can change the i/o-setting of the *R* buffer to 
utf-8 by doing

M-x set-buffer-process-coding-system

in emacs.  This solves the problem.  However, if I instead change the 
encoding used by the running R session to latin1 by doing

 > options(encoding="latin1")

the problem is still there:

 > cat("ø\n")

Pasting bigger expressions like functions into R with C-c C-f leads to 
similar even stranger interpretation errors.  So, unless I have 
misunderstood something, this appears to be a bug.  Any comments?

Details of my setup are as follows:

 > sessionInfo()
R version 2.4.1 (2006-12-18)


attached base packages:
[1] "stats"     "graphics"  "grDevices" "utils"     "datasets"  "methods"
[7] "base"

[ess-site.el]: ess-customize-alist=nil
[ess-site.el _2_]: ess-customize-alist=nil
(S): ess-s-versions-create making M-x defuns for

(R): ess-r-versions-create making M-x defuns for

(R): ess-dialect=nil, buf=*scratch*, start-arg=nil
(inferior-ess 0): ess-start-args=--no-readline
ess-setq-vars-default 0: ess-language=Initial, -dialect=nil, buf=nil, 
comint..echoes=nil, comint..sender=comint-simple-send
ess-setq-vars-default 1: ess-language=S, -dialect=R, buf=nil, 
comint..echoes=nil, comint..sender=comint-simple-send
(inf-ess 1): lang=S, dialect=R, tmp-dialect=R, buf=*scratch*
(inf-ess 1.1): procname=R temp-dialect=R, buf-name=*R*
(inferior-ess) Method #3 start=/tmp/ buf=*R*
(ess-setq-vars-LOCAL): language=S, dialect=R, buf=nil, 
comint..echoes=nil, comint..sender=comint-simple-send
(inf-ess 2.1): ess-language=S, ess-dialect=R buf=*R*
(inf-ess 2.2): start args = --no-readline  , 
(inf-ess finish [S(R), R(nil,nil)]
(ess-multi 0):  inf-ess-start-args=--no-readline  , comint-..echoes=nil
(i-ess 1): buf=*R*, lang=S, comint..echo=nil, 
(i-ess 2): buf=*R*, lang=S, comint..echo=t, 
(ess-setq-vars-LOCAL): language=S, dialect=R, buf=nil, comint..echoes=t, 
(i-ess 3): curr-buf=*R*, comint..echo=t, 
(ess-multi post inf-ess: start-args=--no-readline  , comint-echoes=t
(ess-multi 1):  start-args=--no-readline
Making Process...Buf *R*, Proc R, Prog R
  Start File=nil, Args= --no-readline  .
(R): inferior-ess-language-start=options(STERM='iESS', editor='emacsclient')
(ess-setq-vars-LOCAL): language=S, dialect=R, buf=nil, 
comint..echoes=nil, comint..sender=comint-simple-send
(ess-mode-1): ess-language=S, ess-dialect=R buf=test.r
(ess-mode-1.5): alist=((ess-local-customize-alist quote 
R-customize-alist) (ess-dialect . R) (ess-suffix . R) 
(ess-dump-filename-template ess-replace-regexp-in-string S$ ess-suffix 
ess-dump-filename-template-proto) (ess-mode-syntax-table . 
R-syntax-table) (ess-mode-editing-alist . R-editing-alist) 
(ess-change-sp-regexp . ess-R-change-sp-regexp) (ess-help-sec-regex . 
ess-help-R-sec-regex) (ess-help-sec-keys-alist . 
ess-help-R-sec-keys-alist) (ess-loop-timeout . ess-S-loop-timeout) 
(ess-cmd-delay . ess-R-cmd-delay) (ess-function-pattern . 
ess-R-function-pattern) (ess-object-name-db-file . ess-r-namedb.el) 
(ess-imenu-mode-function quote ess-imenu-R) (inferior-ess-program . 
inferior-R-program-name) (inferior-ess-objects-command . 
inferior-R-objects-command) (inferior-ess-font-lock-keywords . 
inferior-ess-R-font-lock-keywords) (inferior-ess-search-list-command . 
) (inferior-ess-help-command . help("%s", htmlhelp=FALSE)
) (inferior-ess-help-filetype) (inferior-ess-exit-command . q()) 
(inferior-ess-exit-prompt . Save workspace image? [y/n/c]: ) 
(inferior-ess-primary-prompt . \([A-Z][][A-Za-z0-9.]*\)*> ) 
(inferior-ess-secondary-prompt . + ?) (inferior-ess-start-file) 
(inferior-ess-start-args . ) (ess-STERM . iESS) (ess-editor . R-editor) 
(ess-pager . R-pager) (ess-language . S) (inferior-ess-exit-command . q()
) (inferior-ess-language-start eval inferior-S-language-start) 
(comint-use-prompt-regexp-instead-of-fields . t))
(ess-mode-1.6): editing-alist=((paragraph-start concat \s-*$\| 
page-delimiter) (paragraph-separate concat \s-*$\| page-delimiter) 
(paragraph-ignore-fill-prefix . t) (require-final-newline . t) 
(comment-start . #) (comment-add . 1) (comment-start-skip . #+ *) 
(comment-column . 40) (indent-line-function quote S-indent-line) 
(parse-sexp-ignore-comments . t) (ess-set-style . ess-default-style) 
(ess-local-process-name) (ess-mode-syntax-table . S-syntax-table) 
(add-log-current-defun-header-regexp . ^\(.+\)\s-+<-[ 	
]*function) (font-lock-defaults quote (ess-R-mode-font-lock-keywords nil 
nil ((46 . w) (95 . w)))))
(ess-setq-vars-LOCAL): language=S, dialect=R, buf=nil, 
comint..echoes=nil, comint..sender=comint-simple-send

Finished setting up ESS-mode.

Emacs  : GNU Emacs 21.4.1 (i486-pc-linux-gnu, X toolkit, Xaw3d scroll bars)
  of 2007-08-28 on terranova, modified by Debian
Package: ess-mode 5.3.6

current state:
  ess-language "S"
  ess-dialect "R"
  ess-ask-for-ess-directory t
  ess-ask-about-transfile nil
  ess-directory nil
  ess-keep-dump-files "always"
  ess-source-directory "/tmp/"

Jarle Tufto, Dept. of Mathematical Sci., NTNU, 7491 Trondheim, Norway.
http://www.math.ntnu.no/~jarlet  +47 73591888 (phone) / 73593524 (fax)

More information about the ESS-help mailing list