[Rd] patch: automatically adjust width option when terminal is resized
luke-tierney at uiowa.edu
luke-tierney at uiowa.edu
Fri Sep 1 14:20:58 CEST 2017
On Fri, 1 Sep 2017, Ralf Goertz wrote:
> Am Mon, 28 Aug 2017 09:33:31 +0200
> schrieb Ralf Goertz <r_goertz at web.de>:
>
>
> Hello, me again
>
>> Hi,
>>
>> I guess there have been discussions about this in the past and from
>> what I understood hooking an R-function to facilitate automatic
>> adjustment is problematic. So why not doing it like this:
>
> would anybody care to comment? I think it is quite important to have an
> automatic adjustment of R's idea of the width of its terminal window. I
> quite often find myself in the situation that I started R in its own
> (wide) xterm. Then I look at some data frame or vector like this (using
> small width here in order to stay within the ususal width of a text
> posting):
>
>> (r=rnorm(20))
> [1] 0.05672115 0.59047528 0.41337747 0.01737960 -0.78133482
> [6] 0.49218494 -0.78793312 -1.26125820 0.56748784 0.65725277
> [11] -0.04419487 0.14463142 -0.48613097 0.42789592 1.22424913
> [16] 0.43272842 -0.70089673 0.14313221 -0.97159181 -1.29164930
>
>
> Then I want to plot something
>
>> hist(r)
>
> Because the plot window and the xterm don't fit side by side I resize
> the xterm to be smaller. Then I want to see the data again:
>
>> r
> [1] 0.05672115 0.59047528 0.41337747 0.01737960 -
> 0.78133482
> [6] 0.49218494 -0.78793312 -1.26125820 0.56748784
> 0.65725277
> [11] -0.04419487 0.14463142 -0.48613097 0.42789592
> 1.22424913
> [16] 0.43272842 -0.70089673 0.14313221 -0.97159181 -
> 1.29164930
>
> This is ugly and hard to read. Many good programs like vim adjust their
> internal width representation automatically. Why shouldn't R do the
> same? It seems quite easy, at least when readline is used:
>
>
> --- R-3.4.1/src/unix/sys-std.c 2017-03-24 00:03:59.000000000 +0100
> +++ R-3.4.1/src/unix/sys-std.patched.c 2017-08-28 09:16:02.714204023
> +0200 @@ -1005,6 +1005,9 @@
> // introduced in readline 4.0: only used for >= 6.3
> #ifdef HAVE_RL_RESIZE_TERMINAL
> rl_resize_terminal();
> + int rl_height, rl_width;
> + rl_get_screen_size(&rl_height,&rl_width);
> + R_SetOptionWidth(rl_width);
> #endif
> }
> #endif
The 'width' option affects more than printing to the console; it also
affects, for example, printing to a file via sink() or
capture.output(). So doing this unconditionally would not be a good
idea. Making it available as an option for those who want it seems
reasonable but still involves a lot more work than these three lines.
It requires designing a protocol for enabling this feature, ideally in
a way that can be made to work well on other interfaces (e.g. Windows,
Mac, RStudio) as well, and it requires documenting all this in a
sensible place. A more complete proposal might well be considered for
adoption.
Best,
luke
>
>> I tried it out and it works perfectly here. Of course there should be
>> an option to switch this on and off but you get the idea. What do you
>> think?
>
> It would be much appreciated if you considered it.
>
> Thanks Ralf
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
--
Luke Tierney
Ralph E. Wareham Professor of Mathematical Sciences
University of Iowa Phone: 319-335-3386
Department of Statistics and Fax: 319-335-3017
Actuarial Science
241 Schaeffer Hall email: luke-tierney at uiowa.edu
Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu
More information about the R-devel
mailing list