Thursday, November 17, 2011

LilyPondTool prerelease available

The long awaited 2.14 release of LilyPondTool is now available for download from
https://sourceforge.net/projects/lily4jedit/files/latest/download?source=files

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 :)

Enjoy!

Bert

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:
"\markup" MARKUPCOMMAND
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.

Wednesday, August 10, 2011

Planned release date

As my previous post might have been scaring, I decided to announce a planned release date.
So for all of you who are waiting the release: I will probably publish the LilyPond 2.14 compatible version of LilyPondTool on 17 August 2011.

UPDATE: due to some bugs in CUP , I've lost 2 days, so the plan is to publish on 19 August.