簡體   English   中英

引用Emacs中的PROCESS(ESS R)

[英]Referencing a PROCESS in Emacs (ESS R)

我正在嘗試使用ESS從Emacs運行命令,將代碼發送到R緩沖區(盡管我在python中偶然發現了這個問題)。

我無法弄清楚如何使用:

(ess-send-string PROCESS STRING)

我不明白如何從腳本緩沖區調用此函數,將字符串發送到關聯的* R *緩沖區。

我嘗試過使用comintprocess-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM