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.

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.

Need to switch to CUP/LEX

After hours of struggling yesterday I realised that I would gain a lot if I switch to the CUP/LEX version of the parser.

So it seems I must start going on the way of having a more robust parser, but that will delay again the upgrade. I will keep you updated on the progress. It wouldn't be a full rewrite, I'm planning to keep as much from the current Antlr 2 code as it is possible, so I expect to finish that this week.

But unfortunately I can develop only on my EEE Pc with a slow SSD while commuting to work (that means like 2 hours a day), and yesterday it took almost an hour just to download and install the latest java...

Thursday, August 4, 2011

LilyPondTool 2.14 is under development

I've started upgrading LilyPondTool to support LilyPond 2.14

I'm not going to make major changes in the parser yet, I only update it to support the new
  \language "deutsch" 
construct. Actually my plan is to implement a more realistic LilyPond parser, using CUP and FLEX, but that needs very much time. So until that I keep the Antlr 2 version. (Using Antlr 3 one can not at all parse LilyPond because of its heavy use of lexer state switching.)

Besides that I have several things to fix:

  • upgrade to jEdit 4.4
  • reintroduce hyphenation
  • update the templates and the wizard to compile with LilyPond 2.14 and use the new \language construct
  • update LilyJHelp
  • update lilypond.xml mode (and merge that to the stable jEdit branch for easy access)
  • etc.

Friday, January 14, 2011

ANN: New LilyPondTool version available for testing

I deployed a new version (2.12.932) of LilyPondTool for testing.
Just drop to your .jedit/jars directory (inside your home folder like c:\Documents and Settings\John\.jedit\jars).

It still supports the latest stable LilyPond, 2.12, but as soon as LilyPond 2.14 stable is released I will release a new version of LilyPondTool (also in jEdit plugin repository).

The most important new features of this LilyPondTool release are the following:

- better context-sensitive completion

- musicglyph preview

- template manager with context sensitive completion and BeanShell, Velocity support

- preview in wizard

- customizable background for the PDF preview

- help in context menu

- localization manager

- compile without saving

Tuesday, January 11, 2011

LilyPondTool homepage moved to blog

For easier access to news and better ad and support management, I moved LilyPondTool page here.