Ok, I think I really don't understand what is going on. The code to pipe the selection through an external command I took from examples/plugins/substitute
Here is what it looks like: ---- (define (substitute-substitute) (import-from (utils plugins plugin-eval)) (if (selection-active-any?) (let* ((t (tree->stree (selection-tree))) (uu (plugin-eval "substitute" "default" t))) ;; (clipboard-copy "primary") (insert (stree->tree uu)) ))) (kbd-map ("C-9" (substitute-substitute))) (plugin-configure substitute (:require (url-exists-in-path? "substitute.bin")) (:launch "substitute.bin") (:session "Substitute")) --- It works. I press ctrl-9, and the selection is piped through my command (substitute.bin). But, when the expression is more complicated, I get nothing. So if selection is "Hello There", I get the text "Hello There". if selection is "$x^100$" (i.e. a formula), I get "x^100". If selection is "$x^100$ Hello There" (i.e. formula + text), I get nothing (i.e. I get an empty string). If selection spans several input/output cells in an R session, I get nothing. What could the problem be? Above, I call (let* ((t (tree->stree (selection-tree))) What does tree->stree do? I was assuming it turns a tree into a string representation of the tree. Why do I then get an empty string? Thanks for listening! Michael On 27 Jul 2011, at 2:19AM, Michael Lachmann wrote: > I am trying to make it easier to work with R in TeXmacs. What often happens > is that in an interactive session I type > in many commands one after the other - each in its own input. at some point > everything works, and I'd like to just copy them all into a script, or maybe > into one multiline input. > > So, I'd like to be able to select text, and copy just the R part. That would > be parts between > <|input> > and > </input> > > Since I don't know scheme well, or maybe not at all, I thought to pipe > selection through an external program. > > To do that, I first duplicated the end of > progs/convert/rewrite/init-rewrite.scm into my init-r.scm (the part that > deals with converting to verbatim), and modified verbatim to read verbatimR. > I did manage to have that pipe though an external program. But I am > encountering a strange problem: > When I select regular text, and do edit->copy to->verbatimR > > all works well, the text I select is piped to the external program. > > However, if I select several input/output fields from an R session, then I > seem to get nothing. Even for a simple expression with a formula in it, > nothing is copied. > > Below is the code - this just duplicates the functionality of "verbatim", > with a new name "verbatimR". (i.e. no piping to external program, yet) > > This code works for simple text, but not for complicated text, and I don't > understand why... > > ------- > (tm-define (texmacs->verbatimR x . opts) > (if (list-1? opts) (set! opts (car opts))) > (let* ((wrap? (== (assoc-ref opts "texmacs->verbatimR:wrap") "on")) > (enc (or (assoc-ref opts "texmacs->verbatimR:encoding") "iso-8859-1"))) > (cpp-texmacs->verbatim x wrap? enc))) > > (tm-define (verbatimR->texmacs x . opts) > (if (list-1? opts) (set! opts (car opts))) > (let* ((wrap? (== (assoc-ref opts "verbatimR->texmacs:wrap") "on")) > (enc (or (assoc-ref opts "verbatimR->texmacs:encoding") "iso-8859-1"))) > (cpp-verbatim->texmacs x wrap? enc))) > > (tm-define (verbatimR-snippet->texmacs x . opts) > (if (list-1? opts) (set! opts (car opts))) > (let* ((wrap? (== (assoc-ref opts "verbatimR->texmacs:wrap") "on")) > (enc (or (assoc-ref opts "verbatimR->texmacs:encoding") "iso-8859-1"))) > (cpp-verbatim-snippet->texmacs x wrap? enc))) > > > (define-format verbatimR > (:name "VerbatimR") > (:suffix "txtR")) > > (converter verbatimR-document texmacs-tree > (:function-with-options verbatimR->texmacs) > (:option "verbatimR->texmacs:wrap" "off") > (:option "verbatimR->texmacs:encoding" "utf-8")) > > (converter verbatimR-snippet texmacs-tree > (:function-with-options verbatimR-snippet->texmacs) > (:option "verbatimR->texmacs:wrap" "off") > (:option "verbatimR->texmacs:encoding" "utf-8")) > > (converter texmacs-tree verbatimR-document > (:function-with-options texmacs->verbatimR) > (:option "texmacs->verbatimR:wrap" "off") > (:option "texmacs->verbatimR:encoding" "utf-8")) > > (converter texmacs-tree verbatimR-snippet > (:function-with-options texmacs->verbatimR) > (:option "texmacs->verbatimR:wrap" "off") > (:option "texmacs->verbatimR:encoding" "utf-8")) > ------------ > > > Does anyone have an idea what the problem is? > > Thanks, > Michael > > > > _______________________________________________ > Texmacs-dev mailing list > Texmacs-dev@gnu.org > https://lists.gnu.org/mailman/listinfo/texmacs-dev > > > _______________________________________________ Texmacs-dev mailing list Texmacs-dev@gnu.org https://lists.gnu.org/mailman/listinfo/texmacs-dev