all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: David Kastrup <dak@gnu.org>
To: emacs-devel@gnu.org
Subject: How to find someone working on a (mixed) major mode for LilyPond?
Date: Thu, 10 Sep 2015 18:09:14 +0200	[thread overview]
Message-ID: <87fv2m6ytx.fsf@fencepost.gnu.org> (raw)


As a few people likely know, I'm one of the most active programmers on
GNU LilyPond, a music typesetting program.  LilyPond has a nice input
language <URL:http://lilypond.org/text-input.html> and there is an Emacs
mode for editing it.

Unfortunately, that mode is woefully inadequate and has not kept up with
the time.

One of the main drawbacks is that LilyPond offers a few one- or
two-character sequences for doing a computation/entry/whatever of a
single sexp in Scheme (namely GNU GUILE).  In a similar manner, inside
of GUILE one can escape back into LilyPond by writing #{ ... #} for one
LilyPond expression.

LilyPond-mode sucks at reliably indenting Scheme expressions.  Its
indentation and highlighting of Scheme expressions is unnecessarily
different from and worse than Emacs' built-in scheme-mode, and quite
often after such an embedded Scheme expression, LilyPond's own
indentation is thrown off really badly permanently (meaning that the bad
indentation is not just the next line but more or less the rest of the
document).

I've written some note input modes using Midi keyboards: that is quite
helpful.  However, the inability of LilyPond-mode to do a reasonably
nice line-wrap/auto-fill/indentation on the results necessitates a whole
lot of manual work afterwards, seriously detracting from the usefulness.

I've been "considering" for several years now rewriting most of the
stuff from scratch using SMIE, syntactic highlighting and whatnot:
backwards or XEmacs compatibility is largely not an issue as people
would just be referred to the old mode for that.

It's rather abundantly clear that I'll not likely find the time and/or
leisure to work myself into those aspects of Emacs sufficiently for
creating actually worthwhile code.

The main "competition" is a standalone editor Frescobaldi
<URL:http://www.frescobaldi.org/index.html> which is actually
embarrassingly good regarding indentation/highlighting (of both Scheme
and LilyPond code) and is mostly written and extended in Python.

Does anybody here have suggestions how to acquire Emacs talent actually
somewhat interested in bootstrapping what amounts to a dual-language
mode with one mode coming from the Lisp family?  As I said: backwards
compatibility should be a non-issue so one can dig in with everything
Emacs offers, if necessary extending Emacs in the process.

-- 
David Kastrup



             reply	other threads:[~2015-09-10 16:09 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-10 16:09 David Kastrup [this message]
2015-09-13 15:21 ` How to find someone working on a (mixed) major mode for LilyPond? Richard Stallman
2015-09-13 17:06   ` David Kastrup

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87fv2m6ytx.fsf@fencepost.gnu.org \
    --to=dak@gnu.org \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.