Yes, I found the width option in the help pages, but I was wondering if there was automatic setting of the wrapping according to the current window width. Your function works exactly as I wished. I'll probably get smarter with time (I hope) but would it be reasonably good practice to stick this into ~/.Rprofile? I don't suppose there is a way to have it automatically invoked when the window size/positition changes? (It's still priceless even without automatic triggering). On Fri, Apr 17, 2015 at 7:20 PM, MacQueen, Don <macqueen1 at llnl.gov> wrote:> A lot of this depends on what context you are running R in, e.g., > Windows console, Mac console, or command line in a unix-alike. Or > within ESS in emacs. Those are different interfaces supported by, to > some extent, different people, and are based on the underlying > capabilities provided by the operating system. > > Have you yet encountered > options()$width > ? > For example, > options(width=100) > will cause wrapping at 100, at least for certain kinds of output. > > In an xterm shell running in an X windows context, I frequently use > > setwid <- function () > { > if (!interactive()) > return(invisible(NULL)) > scon <- pipe("stty -a") > stty <- scan(scon, what = "", sep = ";", quiet = T) > close(scon) > cstr <- stty[grep("columns", stty)] > options(width = as.numeric(gsub("[^0-9]", "", cstr, ignore.case = T))) > paste("width =", options()$width, "\n") > } > > A function I wrote that resets the width option to match the window > widths, and therefore adjusts the wrapping after I resize a windwo.
For ESS see https://github.com/gaborcsardi/dot-emacs/blob/master/.emacs Best, Ista On Apr 17, 2015 7:37 PM, "Paul Domaskis" <paul.domaskis at gmail.com> wrote:> > Yes, I found the width option in the help pages, but I was wondering > if there was automatic setting of the wrapping according to the > current window width. > > Your function works exactly as I wished. I'll probably get smarter > with time (I hope) but would it be reasonably good practice to stick > this into ~/.Rprofile? I don't suppose there is a way to have it > automatically invoked when the window size/positition changes? (It's > still priceless even without automatic triggering). > > On Fri, Apr 17, 2015 at 7:20 PM, MacQueen, Don <macqueen1 at llnl.gov> > wrote: > > A lot of this depends on what context you are running R in, e.g., > > Windows console, Mac console, or command line in a unix-alike. Or > > within ESS in emacs. Those are different interfaces supported by, to > > some extent, different people, and are based on the underlying > > capabilities provided by the operating system. > > > > Have you yet encountered > > options()$width > > ? > > For example, > > options(width=100) > > will cause wrapping at 100, at least for certain kinds of output. > > > > In an xterm shell running in an X windows context, I frequently use > > > > setwid <- function () > > { > > if (!interactive()) > > return(invisible(NULL)) > > scon <- pipe("stty -a") > > stty <- scan(scon, what = "", sep = ";", quiet = T) > > close(scon) > > cstr <- stty[grep("columns", stty)] > > options(width = as.numeric(gsub("[^0-9]", "", cstr, ignore.case = T))) > > paste("width =", options()$width, "\n") > > } > > > > A function I wrote that resets the width option to match the window > > widths, and therefore adjusts the wrapping after I resize a windwo. > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.
On Apr 17, 2015 7:37 PM, "Paul Domaskis" <paul.domaskis at gmail.com> wrote:> I don't suppose there is a way to have it > automatically invoked when the window size/positition changes?Possibly, though it would take a little building. If you were to launch R directly when you start the xterm (loosely xterm R rather than the default) then R would receive a SIGWINCH signal whenever the xterm window size changes (xterm automatically sends this to its child process). R doesn't directly enable handling of the signal, but there's nothing to stop you loading a dynamic library with a little C code that set up a handler for SIGWINCH and, when it got one, ran the equivalent of the stty command to get the new width. The thing I've not been able to figure out is how the C code would ever then hand that to R asynchronously. Anyone? Cheers, - Peter
I see now that the link I gave for configuring this is ESS doesn't give the whole enchilada. Here is what I currently have in my emacs config: (defun my-ess-execute-screen-options (foo) (ess-execute-screen-options)) (add-hook 'inferior-ess-mode-hook (lambda() (setq-local window-size-change-functions '(my-ess-execute-screen-options)))) This should give the desired functionality. Best, Ista On Sat, Apr 18, 2015 at 1:26 PM, Ista Zahn <istazahn at gmail.com> wrote:> For ESS see https://github.com/gaborcsardi/dot-emacs/blob/master/.emacs > > Best, > Ista > > On Apr 17, 2015 7:37 PM, "Paul Domaskis" <paul.domaskis at gmail.com> wrote: >> >> Yes, I found the width option in the help pages, but I was wondering >> if there was automatic setting of the wrapping according to the >> current window width. >> >> Your function works exactly as I wished. I'll probably get smarter >> with time (I hope) but would it be reasonably good practice to stick >> this into ~/.Rprofile? I don't suppose there is a way to have it >> automatically invoked when the window size/positition changes? (It's >> still priceless even without automatic triggering). >> >> On Fri, Apr 17, 2015 at 7:20 PM, MacQueen, Don <macqueen1 at llnl.gov> >> wrote: >> > A lot of this depends on what context you are running R in, e.g., >> > Windows console, Mac console, or command line in a unix-alike. Or >> > within ESS in emacs. Those are different interfaces supported by, to >> > some extent, different people, and are based on the underlying >> > capabilities provided by the operating system. >> > >> > Have you yet encountered >> > options()$width >> > ? >> > For example, >> > options(width=100) >> > will cause wrapping at 100, at least for certain kinds of output. >> > >> > In an xterm shell running in an X windows context, I frequently use >> > >> > setwid <- function () >> > { >> > if (!interactive()) >> > return(invisible(NULL)) >> > scon <- pipe("stty -a") >> > stty <- scan(scon, what = "", sep = ";", quiet = T) >> > close(scon) >> > cstr <- stty[grep("columns", stty)] >> > options(width = as.numeric(gsub("[^0-9]", "", cstr, ignore.case = T))) >> > paste("width =", options()$width, "\n") >> > } >> > >> > A function I wrote that resets the width option to match the window >> > widths, and therefore adjusts the wrapping after I resize a windwo. >> >> ______________________________________________ >> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code.
I'm glad it's helpful! Defining it and then invoking it in ~/.Rprofile would work, but then you will need to be careful about managing both ./.Rprofile and ~/.Rprofile files. If you have one of the former, then the latter does not get sourced at startup (see ?Startup). Of course, you can put source('~/.Rprofile') in a local ./.Rprofile to take care of that if you want. But in the long run, it would be a better practice to put personal helper functions like this in a package and then load it in your .Rprofile file(s). Most of my ./.Rprofile files have require(rmacq) setwid() in them (along with whatever other directory-specific startup actions I want). The more personal helper functions you have, the more valuable it will be to put them in a package instead of defining them in ~/.Rprofile. -Don -- Don MacQueen Lawrence Livermore National Laboratory 7000 East Ave., L-627 Livermore, CA 94550 925-423-1062 On 4/17/15, 4:36 PM, "Paul Domaskis" <paul.domaskis at gmail.com> wrote:>Yes, I found the width option in the help pages, but I was wondering >if there was automatic setting of the wrapping according to the >current window width. > >Your function works exactly as I wished. I'll probably get smarter >with time (I hope) but would it be reasonably good practice to stick >this into ~/.Rprofile? I don't suppose there is a way to have it >automatically invoked when the window size/positition changes? (It's >still priceless even without automatic triggering). > >On Fri, Apr 17, 2015 at 7:20 PM, MacQueen, Don <macqueen1 at llnl.gov> >wrote: >> A lot of this depends on what context you are running R in, e.g., >> Windows console, Mac console, or command line in a unix-alike. Or >> within ESS in emacs. Those are different interfaces supported by, to >> some extent, different people, and are based on the underlying >> capabilities provided by the operating system. >> >> Have you yet encountered >> options()$width >> ? >> For example, >> options(width=100) >> will cause wrapping at 100, at least for certain kinds of output. >> >> In an xterm shell running in an X windows context, I frequently use >> >> setwid <- function () >> { >> if (!interactive()) >> return(invisible(NULL)) >> scon <- pipe("stty -a") >> stty <- scan(scon, what = "", sep = ";", quiet = T) >> close(scon) >> cstr <- stty[grep("columns", stty)] >> options(width = as.numeric(gsub("[^0-9]", "", cstr, ignore.case >>T))) >> paste("width =", options()$width, "\n") >> } >> >> A function I wrote that resets the width option to match the window >> widths, and therefore adjusts the wrapping after I resize a windwo.
On Mon, Apr 20, 2015 at 10:59 AM, MacQueen, Don <macqueen1 at llnl.gov> wrote:> I'm glad it's helpful! > > Defining it and then invoking it in ~/.Rprofile would work, but then > you will need to be careful about managing both ./.Rprofile and > ~/.Rprofile files. If you have one of the former, then the latter > does not get sourced at startup (see ?Startup). Of course, you can > put source('~/.Rprofile') in a local ./.Rprofile to take care of > that if you want. > > But in the long run, it would be a better practice to put personal > helper functions like this in a package and then load it in your > .Rprofile file(s). Most of my ./.Rprofile files have > > require(rmacq) > setwid() > > in them (along with whatever other directory-specific startup > actions I want). The more personal helper functions you have, the > more valuable it will be to put them in a package instead of > defining them in ~/.Rprofile.Thanks, I'll keep it in mind, Don. I'm sort of careening at breakneck speed into time series and R, so I know I'll be rough around the edges for a while, with the more refined aspects such as sensible organization of customizations following in the rear. Not ideal, I know, but 'tis what it is...