2016-11-14 4 views
2

Я хочу иметь возможность выполнять инструкции на RE RE RR с возможностью подключения к буфере, чтобы я мог быстро вернуться к нему позже.Emacs ESS: выход трубы из R REPL в буфер

Для запуска команды оболочки и вывода на нее *shell command buffer* Я могу использовать M-! согласно this question. Каким будет эквивалент для REPL RE, не прибегая к write.csv()?

ответ

0

Вы можете использовать ess-command от ess-inf для перенаправления вывода в другой буфер. Пример может выглядеть следующим образом:

(defun redirect-ess-output (command &optional buffer process) 
    (interactive (list (read-from-minibuffer "Command: "))) 
    (let ((buff (get-buffer-create (or buffer "*r-output*"))) 
     ;; 'ess-get-process' defaults to process local to current 
     ;; buffer, so to call from anywhere default to "R" 
     (proc (ess-get-process (or process "R")))) 
    ;; send a trailing newline to process 
    (unless (string-match-p "\n$" command) 
     (setq command (concat command "\n"))) 
    (ess-command command buff 'sleep nil nil proc) 
    (with-current-buffer buff 
     ;; process stuff 
     (pop-to-buffer buff)))) 
Смежные вопросы