Monday, September 24, 2012

LilyPondTool 2.14.9 release (last for the foreseeable)

Dear LilyPond users,

after a month of struggling with an official jEdit plugin repository release, I decided to release the last revision of the LilyPondTool plugin as a zip file.

Download it here, and unzip to the jEdit settings folder ($HOME/.jedit or C:\Users\John Doe\.jedit etc. depending on your platform).

And this release concludes the development of LilyPondTool - at least by me... I stopped using LilyPond and it makes no sense for me to develop LilyPondTool any more, as I don't have any projects that need LilyPond.

I've switched to MuseScore, and I am very happy with that. If you are interested in my adventures there and my reasons to leave LilyPond, follow my page and/or my blog.

If you would like to take over the development of LilyPondTool, I am happy to give you the support you need, just contact me.

I had a very good time in the LilyPond community, I hereby thank all the support for all my supporters, the users of LilyPondTool and everyone else.

Thursday, November 17, 2011

LilyPondTool prerelease available

The long awaited 2.14 release of LilyPondTool is now available for download from

Unzip to your jEdit settings directory (e.g. c:\documents and settings\YOU\.jedit)

The most important new features are:
- completely rewritten parser (best used with "Parse on keystroke" - See Plugins > Plugin Options > SideKick) (the new parser is created using flex and bison so very closely mirrors the actual lilypond parser)
- instant compile - LilyPond will be called to compile your file in the background while you are working, and the PDF preview is updated automatically
- compile on save
- a lot of bugfixes

This release should be available from jEdit plugin repository in 1-2 weeks - I'm waiting for bugreports until that :)



Tuesday, November 8, 2011

One feature left

Just a quick followup.
I'm now working on an "Instant preview" feature which will make lilypond create the PDF in the background while you are working on the score.
When that's finished, I release a new version of LilyPondTool.

Monday, October 10, 2011

Good news

Parser problem: solved. At least it seems to be. The Java output of Bison looks good, works well so far, and is much better in error reporting thatn cup. So I'm at full speed to migrate existing functionality to the new parser.

Friday, October 7, 2011

Cup problem

I again struggled 4 hours with a problem, actually parsing this correctly:
\markup \huge { asdf }

What you need to know about LilyPond parser, that \huge is interpreted in "markup" lexical state. A lexical state allows you to define a different language for parts of the source file. In LilyPond there is notes state, chords state etc. So "c4" input will mean a note in notes state, but a letter and a number in markup state.
The parser achieves this by the following:
\markup { pushMarkupState(); } \huge --> the huge should be interpreted as a markup command and not a normal escaped word (like an identifier)
But CUP, the parser I use always looks ahead one token. So instead of:
it parses
"\markup" KEYWORD
Because the action that pushes into the markup state executed after processing the lookahead token.

That means I have to switch the parser implementation (again)... There is an experimental Java backend for Bison. It might work, we will see...

Tuesday, October 4, 2011

An important milestone

Using the new CUP/JFlex based parser, which essentially means that LilyPondTool has exactly the same grammar as LilyPond, I was able to build LilyPondTool. This is very important, as now I'm ready to fine-tune the parser to fix all pending parsing issues and support all 2.14 constructs.
The advantage of this rewrite is that I'll be able to accomodate to changes in the languages easily.

Friday, August 19, 2011

Small delay

I'm still struggling with the new parser. The good thing is that everything is on track. The bad thing is that I still need more time.
But as the new parser will be closer to the real one, it will be more advanced too... It will catch more errors and create less false alarms. I'll keep you updated on the progress.