Re: [ESS] ess-dump-object-into-edit-buffer
Hi Patrick, On Mon, Apr 16, 2018 at 5:10 AM, Patrick Connollywrote: > This is about the shortest I can get that shows what happens: Just > what the example function does is not material to my question. Can you reproduce this following only these instructions starting from 'emacs -q'? I cannot, i.e., it works as expected for me. > (custom-set-variables > ;; custom-set-variables was added by Custom -- don't edit or cut/paste it! > ;; Your init file should contain only one such instance. > '(inferior-ess-dump-command "dump(\"%s\",file=\"%s\", control=\"useSource\") > ") > '(ess-source-directory "./.tmp") > '(load-home-init-file t t)) This suggests to me that you did _not_ start with emacs -q, so indeed you should start looking at your configuration to see where the problem is. Did you try commenting out the 'ess-source-directory' setting to see if that is the problem? Best, Ista > > Ideas as to where I should look are welcome. > > best > Patrick > > On Thu, 12-Apr-2018 at 11:08PM -0400, Ista Zahn wrote: > > |> Hi Patrick, > |> > |> I don't use ess-dump-object-into-edit-buffer, so I'm not sure what > |> exactly you expect it to do. A specific example would help, i.e., a > |> description of exactly what you did, exactly what happened, and how > |> what happened differed from you expectation. > |> > |> For example, if I start R with 'M-x R ' and do 'M-x > |> ess-dump-object-into-edit-buffer getwd ' I see a new buffer > |> is created containing > |> > |> getwd <- > |> function () > |> .Internal(getwd()) > |> > |> Is that what you see? If so, how does it differ from what you expect? > |> If you see something different, how does your setup differ from mine? > |> I'm running Emacs 25.3 and ESS 17.11 [elpa: 20180412.315] > |> > |> Best, > |> Ista > |> > |> On Thu, Apr 12, 2018 at 7:19 PM, Patrick Connolly > |> wrote: > |> > Thanks Ista. > |> > > |> > The result is not the same, but it's equally useless. It produces almost > |> > the same as typing the name of the function and pressing . That > is to > |> > say, unless the function has been edited in the working directory, it > lists > |> > all the code without any of the comments almost in the form of a list > |> > element labelled "structure" and a second element labelled "source" which > |> > contains all the source in the form of a character vector. Quite a lot > of > |> > text wrangling is required to get that text into the form of an editable > |> > function. > |> > > |> > There is a slight difference from what results from typing the function > name > |> > and pressing in that the word "structure" is not in the latter > and > |> > the source is an attr. > |> > > |> > (I say "almost" because neither form is exactly the same as how a list is > |> > displayed.) > |> > > |> > Is that intended behaviour? > |> > > |> > TIA > |> > Patrick > |> > > |> > On 04/13/2018 01:48 AM, Ista Zahn wrote: > |> > > |> > On Thu, Apr 12, 2018 at 3:56 AM, Patrick Connolly > |> > wrote: > |> > > |> > Thanks for the response, however, if I start Emacs with a '-q' none of > |> > my ~/.emacs file is read, so Emacs doesn't know how to start R. More > |> > to the point, I'm unable to run R within Emacs any other way. > |> > > |> > The usual recipe is to start with emacs -q and then evaluate > |> > > |> > (package-initialize) > |> > (require 'ess-site) > |> > > |> > in the scratch buffer, then check to see if you can reproduce the bug. > |> > If you have ESS installed in a way that it is not in your load-path by > |> > default you may have to do something along the lines of > |> > > |> > (add-to-list 'load-path "/path/to/ESS/lisp/") > |> > (load "ess-site") > |> > > |> > Best, > |> > Ista > |> > > |> > > |> > > |> > I gather there is a way of applying individual lines of the .emacs > |> > files but a bear with a small brain doesn't know how to do that (or > |> > where to look in the manual how to do it), > |> > > |> > It would appear, if it doesn't reproduce, that the problem is > |> > somewhere in my .emacs file. That's a hodge-podge of various things > |> > I've picked up over the decades so it wouldn't be surprising to find > |> > some incompatibilities. > |> > > |> > Ideas appreciated. > |> > > |> > > |> > On Wed, 11-Apr-2018 at 07:44AM -0400, Ista Zahn wrote: > |> > > |> > |> I can't reproduce it with the latest ESS from melpa. Can you give > |> > |> reproduction steps starting with > |> > |> > |> > |> emacs -q > |> > |> > |> > |> ? > |> > |> > |> > |> --Ista > |> > |> > |> > |> On Wed, Apr 11, 2018 at 4:58 AM, Patrick Connolly > |> > |> wrote: > |> > |> > For a long time I used to be able to use > |> > |> > > |> > |> > ess-dump-object-into-edit-buffer > |> > |> > > |> > |> > to create a buffer that could be used to edit the designated > function > |> > |> > from anywhere on the search path to make a local version. > |> > |> > > |>
Re: [ESS] ess-dump-object-into-edit-buffer
This is about the shortest I can get that shows what happens: Just what the example function does is not material to my question. ## from the bash prompt mkdir ~/Temp/First cd ~/Temp/First emacs & # start R using M-x R ## within the *R* buffer make a short function bringLibrary <- function(lastR = "3.0.2", latestR = "3.1.0", Rloc = "~/local/"){ ### Purpose:- Bring library from older R version to newer one. ### (Idea is to then update the packages that need to be) ### -- ### Modified from:- ### -- ### Arguments:- lastR: version of R that has the packages desired ### latestR: latest version of R of interest ### Rloc: where R versions are located (probably not the default) ###Make sure there's a trailing "/" ### -- ### Author:- Patrick Connolly, Date:- 29 May 2014, 11:08 ### -- ### Revisions:- 22/08/14 fixed mistaken swap of lastR & latestR ### 15/10/15 location of R installions made adjustable ### 7//2017 Rloc changed back to ~/local now <- system(paste0("ls ", Rloc, "R-", latestR, "/library"), TRUE) was <- system(paste0("ls ", Rloc, "R-", lastR, "/library"), TRUE) need <- was[!is.element(was, now)] ### Check if it's already been done if(length(need) < 1) stop("Nothing in R-", lastR, " that isn't already in R-", latestR, ".\n") for(i in need) # reason for running this function system(paste0("cp -prv ", Rloc, "R-", lastR, "/library/", i, " ", Rloc, "R-", latestR, "/library/")) ### Notify it's finished and give pastable text to update copied packages cat(length(need), " packages copied into R-", latestR, " directory.\nProbably a good idea to start R-", latestR, " and run\n update.packages(checkBuilt = TRUE, ask = FALSE)\n", sep = "") } ## now save and exit then start in another directory: > q() Save workspace image? [y/n/c]: y ## from the bash prompt mkdir ~/Temp/Second cd ~/Temp/Second emacs & # start R using M-x R ## Within the *R* buffer > attach("../First/.RData") > ls(pos = 2) [1] "bringLibrary" "repos" ## Then 'M-x ess-dump-object-into-edit-buffer bringLibrary ' bringLibrary <- function(lastR = "3.0.2", latestR = "3.1.0", Rloc = "~/local/") { ### Purpose:- Bring library from older R version to newer one. ### (Idea is to then update the packages that need to be) ... ## but in the *R* buffer all code and comment are there. > bringLibrary function(lastR = "3.0.2", latestR = "3.1.0", Rloc = "~/local/") { ### Purpose:- Bring library from older R version to newer one. ### (Idea is to then update the packages that need to be) ### -- ### Modified from:- ### -- ### Arguments:- lastR: version of R that has the packages desired ### latestR: latest version of R of interest ### Rloc: where R versions are located (probably not the default) ###Make sure there's a trailing "/" ### -- ### Author:- Patrick Connolly, Date:- 29 May 2014, 11:08 ### -- ### Revisions:- 22/08/14 fixed mistaken swap of lastR & latestR ### 15/10/15 location of R installions made adjustable ### 7//2017 Rloc cchanged back to ~/local now <- system(paste0("ls ", Rloc, "R-", latestR, "/library"), TRUE) was <- system(paste0("ls ", Rloc, "R-", lastR, "/library"), TRUE) need <- was[!is.element(was, now)] ### Check if it's already been done if(length(need) < 1) stop("Nothing in R-", lastR, " that isn't already in R-", latestR, ".\n") for(i in need) # reason for running this function system(paste0("cp -prv ", Rloc, "R-", lastR, "/library/", i, " ", Rloc, "R-", latestR, "/library/")) ### Notify it's finished and give pastable text to update copied packages cat(length(need), " packages copied into R-", latestR, " directory.\nProbably a good idea to start R-", latestR, " and run\n update.packages(checkBuilt = TRUE, ask = FALSE)\n", sep = "") } ## Initially this example function was made by 'M-x ess-dump-object-into-edit-buffer bringLibrary ' That produced a blank file into which the skeleton function was dumped using 'C-c f' which I find very handy. In this case it's not very tedious to paste the requisite code into the edit function buffer, but for longer functions (often found in packages) if I want to make a local copy to edit, it is very tedious -- particularly when the comments are all stripped and placed in a