I just noticed there is a related function already in ESS: ess-rutils-html-docs ("Use ‘browse-url’ to navigate R html documentation."). It no longer seems to work though. From an ESS[R] buffer, I get 'Wrong type argument: stringp, nil' and from iESS I get 'Search failed: "http://";'. Maybe that function can be resurrected?

Re the search-forward: Wouldn't it be more convenient to cat() rather than print() the URL/port?

        Sebastian Meyer


Am 10.09.25 um 17:00 schrieb Tyler Smith via ESS-help:
On Wed, Sep 10, 2025, at 6:42 AM, Naresh Gurbuxani wrote:
  It does not work in Linux terminal emacs run inside AWS SageMaker.
Here it needs to open
/home/ec2-user/anaconda3/envs/R/lib/R/doc/html/index.html

This is interesting. If it needs to open a local file, that suggests the http 
server is not started. Can you tell me what the output of 
`print(tools::startDynamicHelp(NA))` (run from within R) is in that situation? 
The new version of my function (below) may fix this.

On Mac emacs GUI, this function does not work with default settings.
This is the message displayed in in *eww* buffer:
Loading http://127.0.0.1:ting httpd help server ... done
[1] 23824/doc/html/index.html…

This is helpful! My original code didn't account for the extra text emitted 
when the http server is started the first time. The following should fix that:

```
(defun ess-eww ()
   (interactive)
   (let ((BUF (generate-new-buffer "URL"))
         (PORT))
     (ess-command "print(tools::startDynamicHelp(NA))" BUF)
     (with-current-buffer BUF
       (setq PORT (buffer-substring (search-forward-regexp "\\[1\\] ") 
(point-max)))
       (message (buffer-substring (point-min) (point-max))))
     (kill-buffer BUF)
     (eww (concat "http://127.0.0.1:"; PORT "/doc/html/index.html"))))
```

This may also fix the problem in the Linux terminal. It works here using 
terminal Emacs (on Debian).

Question for the ESS devs - is there a simpler way to get text from the R 
process into Elisp? I've used `ess-command`, and then collected the relevant 
info out of the buffer the result is printed to. This requires a bit of fussing 
to get to the value I want (via `search-forward-regexp`). That might be 
brittle. If I could directly transfer the first value of an R vector into an 
Elisp variable that would be better.

- tyler

______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/ess-help

______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/ess-help

Reply via email to