On 24 April 2018 at 16:30, David Wright <da...@lionunicorn.co.uk> wrote:
> On Tue 24 Apr 2018 at 08:53:01 (+0200), Gianmaria Lari wrote: > > On 23 April 2018 at 15:48, David Wright <lily...@lionunicorn.co.uk> > wrote: > > > > > On Mon 23 Apr 2018 at 09:43:01 (+0200), Gianmaria Lari wrote: > > > > The following frescobaldi snippet call the "more.com" program with > the > > > > parameter "\\readme" > > > > > > > > -*- python; > > > > from subprocess import call > > > > call(["more.com", "\\readme"]) > > > > > > > > This other one-line snippet pastes, in the frescobaldi editor window > at > > > the > > > > cursor position, the lilypond file name (including path) of the > current > > > > document > > > > > > > > $FILE_NAME > > > > > > > > Now I would like to merge the two worlds:) I would like a snippet > that > > > > calls an external application passing as parameter $FILE_NAME. > > > > Any suggestion? > > > > > > import os # likely to have been imported already > > > call(["more.com", os.environ['FILE_NAME']]) > > > > > > > I have not been able to make it working. > > Let's make a step back and simplify things. > > Let's use FRESCOBALDI_VERSION that should always be defined (FILE_NAME is > > not defined when the file has not been explicitly saved). > > And let's use a simple assignement instead of an external call. > > > > The following code paste in the editor window the text "ciccio" at the > > cursor position..... > > > > -*- python; > > > > text = "ciccio" > > > > > > > > > > Now if I try.... > > > > -*- python; > > import os > > text = os.environ['FRESCOBALDI_VERSION'] > > > > > > I expect to see pasted the frescobaldi version. But this does not work > and > > I get the errror.... KeyError: FRESCOBALDI_VERSION. > > Maybe the variables are not part of os.environ? > > I think we're falling foul of this: > > This mapping is captured the first time the os module is imported, > typically during Python startup as part of processing > site.py. Changes to the environment made after this time are not > reflected in os.environ, except for changes made by modifying > os.environ directly. > > So if Fresco is running a child process, that child could interrogate > the environment set by the parent. As it is, I don't know where your > FRESCOBALDI_VERSION and FILE_NAME come from. If they're being set in > a Fresco parent process, then they would have to be inserted into > the environment for you to use them: > > $ pyth > Python 3.5.3 (default, Jan 19 2017, 14:11:04) > [GCC 6.3.0 20170118] on linux > Type "help", "copyright", "credits" or "license" for more information. > >>> import os > >>> os.environ["SHELL"] > '/bin/bash' > >>> os.environ["SPQR"] > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > File "/usr/lib/python3.5/os.py", line 725, in __getitem__ > raise KeyError(key) from None > KeyError: 'SPQR' > >>> os.environ["SPQR"]="Senatus Populusque Romanus" > >>> os.environ["SHELL"],os.environ["SPQR"] > ('/bin/bash', 'Senatus Populusque Romanus') > >>> > > Cheers, > David. > It's becoming a bit too difficult and for my need it does not worth it. I would follow another way, Thank you David for your help! g.
_______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user