Giter Site home page Giter Site logo

emacs-faust-mode's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

emacs-faust-mode's Issues

Fix up operator fontification

As previously discussed in #9:

At present faust-regexp-faust-operator is just a character class. As a result, syntax highlighting of operators is rather sketchy and inconsistent right now, e.g., in <= only the < is fontified but not the =. The arithmetic ops +-* are in there but not / and %. Some BDA ops are completely missing, such as @ (even @rukano's original version already had that).

To fix this, faust-regexp-faust-operator should be generated from a proper list of all operator symbols, as they appear in the Faust Quick Reference. This isn't hard to do, but the question that needs some thought and discussion is whether we should include each and every operator in there, just the BDA ops, just the multi-character (BDA) ops, or maybe don't highlight the operators at all. I'm actually leaning towards the latter option, but I don't really care much about this as long as it's consistent (which it isn't right now).

Opinions?

Play nice with Faustine

(from https://bitbucket.org/yassinphilip/faustine/issues/1/heads-up-related-packages)

Guys, Faustine has been accepted in MELPA! :)

But now I realize that we can do a better job: The idea is to make Faustine depend on faust-mode, so as to clearly separate what does what: faust-mode does the syntax and the indenting, and Faustine contains the helper functions, and you can use the former without the latter, and not the opposite: Installing faustine would automatically install faust-mode as a dependancy.

So I would pull all the syntax-related code from Faustine, and put it in faust-mode. Note that my code is, shall I say better, at least more exhaustive, as I pulled all the keywords from the docs, using a specialized macro ; also it handles indentation, while faust-mode doesn't at the moment.

For that I would need write/push access to the repository, will you give it to me?

Nested with/letrec blocks do not indent well

Hi, there is a problem with indenting with blocks when nesting.
The indentation level is not increasing with depth.

For example

process = x with {
  x = y with {
  y = z with {
  z = 1;
};
};
};

Handle <mdoc>

Faust programs may nowadays contain extensive documentation sections enclosed between the <mdoc> ... </mdoc> tags. For instance, see this example from the Faust Quick Reference:
mdoc-example.dsp.zip

We don't currently handle these, which makes sources including such sections look odd in Emacs when editing them using Faust mode. I think that the easiest way to go there is to just treat these sections as comments. As the "comment delimiters" are XML tags in this case, we can't use the syntax table for this. But I've done something similar for the inline code sections in Pure mode. I'll have to look that up and see whether I can adjust it so that it works in this case.

Error with emacs 27.1

When I try to use faust mode on emacs 27.1, I get:

Eager macro-expansion failure: (error "Invalid rx ‘any’ range: ^-+")
rx--string-to-intervals: Invalid rx ‘any’ range: ^-+

Clear up the fork confusion

There has been some confusion over which fork to use, and now a fork by @agraef is in Faust upstream.
It would be best to get some more clarity.

Since @yassinphilip is the most active (if not only) maintainer, maybe it's best if he creates a new copy, puts it in MELPA, and all others delete their fork, or at least point at his version in the readme.

That way the one that is in MELPA will not say it's a fork on the github page, and hopefully, there will be less confusion.

What do you all think?

Ready to merge

Alright, I think I'm done, it was really easier/faster than I though it would be : Now, (at least on this machine :)) Faustine depends on Faust-mode, and is now empty of all "syntax" directives, everything is now in Faust-mode.

Now, I'm going to see with the MELPA team that everything goes smoothly. 929 (wow) people have installed Faust-mode from MELPA, nothing bad should happen to them, right? Ideally, they'll just end up with a better mode when updating. For Faustine users, it should be a little more complicated, as Faust-mode should be automatically installed as well when they update, all 10 of them :)

All in all, I'm really happy with this neat, clean, and to-the-point combination : A really comprehensive (and self-contained, a proper mode) Faust-mode, and a powerful IDE-like library of commands that makes good use of it.

What do you say?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.