[Rd] patch: automatically adjust width option when terminal is resized
Ralf Goertz
r_goertz at web.de
Fri Sep 1 10:23:21 CEST 2017
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
> 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
More information about the R-devel
mailing list