[英]Referencing a PROCESS in Emacs (ESS R)
我正在嘗試使用ESS從Emacs運行命令,將代碼發送到R緩沖區(盡管我在python中偶然發現了這個問題)。
我無法弄清楚如何使用:
(ess-send-string PROCESS STRING)
我不明白如何從腳本緩沖區調用此函數,將字符串發送到關聯的* R *緩沖區。
我嘗試過使用comint
和process-send-string
,但我想我不明白如何發送進程。 緩沖區名稱沒有這樣做,會是什么?
例:
(defun create-rtags ()
(interactive)
(ess-send-string PROCESS "rtags(ofile=paste0(getwd(), \"TAGS\"))")
如果您在github上使用最新的ESS版本,則可以使用get-process
來獲得正確的進程或ess-get-process
。
(ess-send-string (get-process "R") "a <- 1:10;a")
造成
[1] 1 2 3 4 5 6 7 8 9 10
所以對於你的功能,這樣的事情應該有效
(defun create-rtags ()
(interactive)
(ess-send-string (get-process "R") "rtags(ofile = file.path(getwd(), \"TAGS\"))"))
要添加到@dickoa的答案。 ESS處理多個進程,它們都列在ess-proces-name-list
。 “R”是第一個開放R過程的名稱。 在ESS緩沖區中,存在本地可變的ess-local-process-name
,它將緩沖區與進程鏈接起來。
FWIW, Cc Ce Ct綁定到ESS中的ess-build-tags-for-directory
。 從R緩沖區發送rtags命令和從其他緩沖區發送regexp etag請求(基於當前的imenu regexp)非常智能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.