[ESS] Problem with (setq ess-help-own-frame t) : emacs answers that "ess--switch-to-help-buffer: Window is dedicated to `*help[R](geom_line)*'

Deepayan Sarkar deep@y@n@@@rk@r @end|ng |rom gm@||@com
Mon Jan 26 11:28:28 CET 2015

On Mon, Jan 26, 2015 at 3:00 PM, Deepayan Sarkar
<deepayan.sarkar using gmail.com> wrote:
> On Mon, Jan 26, 2015 at 2:44 PM, Emmanuel Charpentier
> <emm.charpentier using free.fr> wrote:
>> Dear Deepayan, dear list,
>> On 26/01/2015 07:32, Deepayan Sarkar wrote:
>>> On Sun, Jan 25, 2015 at 3:45 PM, Emmanuel Charpentier
>>> <emm.charpentier using free.fr> wrote:
>>>> Dear list,
>>>> I wanted to have a different frame for each request to R help. so i used
>>>> (setq ess-help-own-frame t) in my .emacs.
>>> I think it's important to understand what you want here. Do you mean
>>> different frame or different buffer or different window?
>>> According to [1], a frame is what the rest of the world calls a
>>> window, and a window is what you get by "splitting" a window (e.g.,
>>> C-x 2, File => New Window Below).
>>> [1] http://www.gnu.org/software/emacs/manual/html_node/emacs/Frames.html
>> That's what I intended. I am not exactly a newcomer to emacs and spent some
>> not inconsiderable time reading its manual about two decades ago. I've
>> practised it on about anything from VMS via VT220 (or, of all things, a
>> french Minitel...) to Windows to Gnome under Linux. I used the word "frame"
>> as defined in emacs manual (e. g. something you can create by C-x 5 2...).
>>> I think the default behaviour of ESS is to have a different buffer for
>>> each help request, which is probably exactly what you want.
>> Indeed.
>>> The
>>> question is, where should it be displayed? ESS seems to use the last
>>> help window used if any, and creates a new one if none exists.
>> Yes. My point is that, currently, this does *NOT* work. Let's illustrate the
>> situation : I have set ess-help-own-frame to t. I requested help on foo by
>> typing "?foo" at the R command loin in the *R* buffer : emacs created a
>> frame displaying foo's online help. So far, so good. But now I need help on
>> "bar" :
>> When I request help on bar by typing "?bar" at the R command line, emacs
>> does *NOT* display bar's online help anywhere : it beeps and displays
>> "Window is dedicated to `*help[R](bar)*'" in the minibuffer of the frame
>> displaying foo's online help.
>> IMNSHO, this is a bug, at least to the extend that this behaviour is not
>> what is documented.
>>> When you say you want  a new frame for it, you mean that a new window
>>> (in the non-Emacs sense) should be created. Is that really what you
>>> want?
>> Exactly : what I want is to be able to have one, two or n help frames (yes,
>> "windows" in X parlance) available on the screen as necessary : since R has
>> now about 5000 available packages, I am unable to learn the syntax and
>> arguments of all the available functions in those packages (even if Brian
>> Ripley and a few monsters of the same kind seem to be able to, I'm a mere
>> mortal...), and online help on more than one function at a time is a
>> necessity.
> Got it.
> I only asked for clarification because this seemed to me an odd thing
> to want :-) (because I usually get very confused with too many
> frames).
> I don't know how to solve this.

Actually, when I actually tried "(setq ess-help-own-frame t)", it gave
me exactly what you want (a new frame for every help request).

This is with Emacs 24.4.1 and ESS r5591, which is pretty old (mid 2013).

So I svn updated ESS to the latest version, and now I am getting the
same error as you. So looks like a bug was introduced in between.


> As an alternative, activating tabbar-mode seems to group all the help
> buffers together quite nicely in a single window.
> -Deepayan
>> A nice touch (but maybe not very simple to implement in elisp) could be to
>> have emacs to kill the related help buffer when the user kills the frame
>> it's displayed in by using system-level facilities.
>>> -Deepayan
>>>> I have a problem : the first call ("?geom_line" at the R prompt) works
>>>> fine, but a second call ("?geom_linerange" at the R prompt) ends up in
>>>> error with "ess--switch-to-help-buffer: Window is dedicated to
>>>> `*help[R](geom_line)*' in the minibuffer (retrieved form the *Messages*
>>>> buffer).
>>>> (setq ess-help-own-frame 'one) works as advertised. The code (in
>>>> ess-help.el) is not specially enlightening : it uses *ONE* frame,
>>>> defined in (defvar ess-help-frame ...). So it appears that the code *is*
>>>> intended to display exactly *one* help page at a time, with two
>>>> variants :
>>>>          - switching to the last requested help page when
>>>> ess-help_own-frame is
>>>> 'one
>>>>          - raising an error when ess-help-own-frame is t and the
>>>> ess-help-frame
>>>> still exists.
>>>> Do you see a way to effect what I *thought* was advertised : at each
>>>> call to the R help system, open (if necessary) a new frame to display
>>>> the relevant help page ?
>>>> Sincerely,
>>>>                                          Emmanuel Charpentier
>>>> PS : I'd appreciate being CC'd of answers (including "Go to hell if
>>>> necessary) : I do not follow ess-help on a regular basis. (Yes, I
>>>> should... but my days are still 24 hours long, despite my wishes...).

More information about the ESS-help mailing list