ESS - R "история недоступна для сохранения", несмотря на .Rprofile - PullRequest
0 голосов
/ 02 ноября 2019

на этот раз сложно создать MWE ...

Я уже давно понял, что R при использовании в сеансах ESS больше не сохраняет Rhistory. Я добавил пользовательскую строку в Rprofile

if (interactive()) {
  .Last <- function() try(savehistory())
}

, но это работает только при запуске R в командной строке.

При использовании ESS я получаю сообщение:

Save workspace image? [y/n/c]: y
Error in .External2(C_savehistory, file) : no history available to save

К сожалению, я не помню, когда все это началось ... Любая подсказка?

Я использую:

> version
               _                           
platform       x86_64-pc-linux-gnu         
arch           x86_64                      
os             linux-gnu                   
system         x86_64, linux-gnu           
status                                     
major          3                           
minor          6.1                         
year           2019                        
month          07                          
day            05                          
svn rev        76782                       
language       R                           
version.string R version 3.6.1 (2019-07-05)
nickname       Action of the Toes    

на

GNU Emacs 25.2.2 (x86_64-pc-linux-gnu, GTK+ Version 3.22.21)

и

ESS version 18.10.2

Я должен признать, что это немного раздражает ...

Спасибо всем, Алекс

---- Обновление 06 ноября ----

Я добавил .Renviron и .Rprofile, как ваш, и я также установил каталог ess-history-file ess-history-directory в .emacs, но я все еще получаю ту же ошибку ... это происходит на двух разных машинахс той же «настройкой» (ОС, версии, источники ...) ... для меня это начинает звучать как ошибка ...

1 Ответ

0 голосов
/ 02 ноября 2019

ESS использует интерфейс comint в качестве бэкэнда для управления подчиненным процессом, который также обрабатывает чтение / запись файла истории. Я не думаю, что что-то связанное с этим недавно изменилось.

Таким образом, вы можете настроить местоположение файла истории с переменными, упомянутыми в комментариях, ess-history-file и ess-history-directory, которые косвенно обновляют переменные comintнапримерcomint-input-rile-file-name в нижних буферах.

Чтобы использовать ту же историю, когда запускается R, вне emacs, я использую что-то вроде следующего в моем .Renviron / .Rprofile

.Renviron

R_HISTFILE=$HOME/.Rhistory

.Rprofile

.Last <- function() {
    if (interactive()) {
        hist_file <- Sys.getenv("R_HISTFILE")
        if (hist_file == "") 
            hist_file <- "~/.Rhistory"
    }
}
...