Extending general-purpose editors

Anyone experimenting with emacs lisp? I’ve hacked around with it from a distance for far too long, and thought I should look into learning elisp properly…
So far started with this: https://bzg.fr/en/learn-emacs-lisp-in-15-minutes.html/
Now moving on to this: https://github.com/chrisdone/elisp-guide
Most looking forward to this: http://dantorop.info/project/emacs-animation/

Should probably just get into the built-in documentation though…

I’m not experimenting with it that much but you’ll probably find the “self documenting” aspect gets more fluid the more you use it (i.e. C-hi C-hf M-. etc) I’ve also found https://www.emacswiki.org/emacs/ElispCookbook to be useful for snippets & quirk (and quick) reminders…

1 Like

[I broadened the subject line away from emacs-focus]

Thanks @zzkt, although I’m now wondering whether I’d be better off focussing on extending atom instead, especially in terms of having something that others are more likely to use and contribute to… But last time I looked (a few years ago admittedly) I couldn’t really find any documentation for that.

I’m kinda at a similar point right now. So far i’ve only hacked up pre-existing emacs modes to fit them to my purpose, but that’s not super satisfying in the long run.

I’d really like to be able to make a self-contained bundle of my stuff (which is based on Common Lisp) to share it with other people more easily, but it’s a surprisingly hard task.

There’s the Portacle (https://portacle.github.io) project with provides a full-featured, self-contained, portable Common Lisp IDE based on Emacs, so it’s definitively possible to go down that route, but it’s still a lot of work.

Atom on the other hand is surely more popular, but it’s bloatiness always scared me away so far. I’m not really sure if i’d use it myself. Anyway recently i’ve seen that there’s better Common Lisp support now, so i might just as well give it a shot.

I have been playing around with e-lisp more and more lately, and what I have found helps the most is starting with someone else’s code rather than from scratch.

That doesn’t necessarily mean scavenging for random bits of code here and there on GitHub, but could instead be as simple as using one of the many community-driven configurations, such as spacemacs or doom-emacs (both of which use Vim-like bindings by default but can be easily changed) or even some personal ones such as this or this.

These tend to come with extensive documentation, guides and tutorials, and heavily-commented configuration files, so in addition to providing a much nicer out-of-the-box experience they also act as a platform for further experimentation. I’ve learned so much about what’s possible in Emacs-land (and also how it’s possible) just by scrolling through their documentation and source code and tweaking stuff.

That’s exactly what I think the main advantage of Emacs is over most other editors: how active and dedicated its community is to pushing the limits and doing so in a way that is shareable and accessible by others. Sure, Atom and VSCode are scriptable and highly customisable too, but they seem too immature to match the wealth of documentation and code that comes from having such a devoted community over almost 3.5 decades (e-lisp started in 1985!).

With that in mind, I think it would be awesome if we started putting together a beginner-friendly configuration specifically for the live coding community. It could come with sensible defaults and some must-have packages, a guide and/or tutorial videos, the option for more standard bindings (e.g. copy/paste), and most importantly: out-of-the-box support for as many live coding languages and environments as there is an Emacs mode for. Think a configuration file such as this, where a user can comment and uncomment features and languages according to their case.

I’m super keen to work on a project like this if I knew that others would be willing to contribute and could benefit from using it!

Hmm i guess then the problem wouldn’t just be Emacs, but the general environment including SuperCollider, ghc for TidalCycles, Python for FoxDot, and the respective connections between the components, etc.

I tried for a while to get a Linux distribution running in a virtual machine, but i couldn’t get the audio running. Real-Time scheduling still seems to be a problem in a VM ? Another idea was to provide a live system that would be easy to install on a pendrive, so people could just boot into that, but that might already be setting the bar high. So, yeah … ongoing problem …

Yes the problem is definitely much larger at the OS-level, however ensuring that everything is where it should be can also be part of the configuration. Since Emacs provides a cross-platform interface that handles a lot of the platform-specifics, it could run commands to check that ruquired software is installed and at the right version, update or clone git repos, boot servers like jack or SuperCollider etc.

A VM or Docker container would be amazing to have, but as you said I don’t think the technology is ready for that yet. I really like the idea of a dedicated portable system on a USB stick, but I can only see that working for people who are happy to do everything with free software and don’t want to run other things like Ableton, Logic, or VSTs.

True, but for the purpose of workshops etc. it’d still be amazing. Instead of wasting 2h until everybody installed the target system, just give everybody a pen drive to boot onto and that’s it (supposing the participants trust you enough to boot a random pen drive).