photog.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
A place for your photos and banter. Photog first is our motto Please refer to the site rules before posting.

Administered by:

Server stats:

246
active users

#emacslisp

1 post1 participant0 posts today

New blog post for this month's Emacs Carnival: an elevator pitch. This post includes a little case study on how I modified the gnus implementation for RSS feeds to provide useful extra information (author, tags) for RSS feeds from the fediverse.

homepages.ucl.ac.uk/~ucecesf/b

(edit: added hashtag)

www.homepages.ucl.ac.ukEmacs carnival: Elevator pitch (or /How I learned to love RSS for the fediverse/)
Replied in thread

@oantolin @Zenie Well, that was not my intention but, yes, in practice, I guess: I put up with some behaviour that annoys me until I get around to writing some elisp to fix whatever that behaviour is that annoys me!

There's always some trade-off between effort and benefit...

But the real message (implicitly in what you stated and which I fully agree with) is that Emacs is a tool that you can make work the way you want, not the other way around.

#Emacs question: How does one load (or include or import or however the proper terminology is) a elisp file relative to the current elisp file? I can only find load and load-file, but these seem to always load stuff relative to the load path or the CWD of Emacs itself, not the file.

Replied in thread

What brought you to #Emacs?

@myTerminal I was using Tmux, Vim, Bash, AWK, and FZF, and I kept trying to write scripts for all of these programs that would allow me more coordination between them. For example, I once wanted to launch a process from Vim in a second terminal in a Tmux split-screen, capture it’s output into a temporary file, then when the process exited, use AWK to select symbols from the file that I could later feed into FZF. Or I would write a little wrapper Bash script that would run a build process and send a notification and trigger Tmux to automatically switch to the shell when the process completed.

I was always thinking to myself how I wished all of these separate tools, which were all doing one just thing and doing it well (the Unix philosophy), could be connected together without needing to use pipes or complicated message passing through temporary files or through DBus. And I also wished they were all written in the same programming language, instead of having a different language for Bash, AWK, VimScript, and the config languages for Tmux, or using long chains of CLI options stored into partial script files.

Then it hit me one day that this thing that I was wishing for, which coordinated between the terminal multiplexer, command shell, editor, and auto-completion framework and was all scripted with just one programming language, this thing already existed and it was called Emacs.

Then I finally understood what all the fuss was about, and switched to Emacs forever.

#tech#software#lisp
Progress on my clone of the Emacs Lisp interpreter

This took me three months (a month longer than I had hoped), but I finally have merged it into the main branch!

This patch rewrites the Emacs Lisp lexer and parser in Scheme using Scheme code that is 100% compliant with the #R7RS standard, so it should now work across all compliant Scheme implementations. Previously the old parser relied on #Guile -specific regular expressions.

This patch also implements a new feature where a stack trace is printed when an error occurs. This of course makes debugging much, much easier. Previously the old parser did not keep track of where code evaluation was happening, it simply produced lists without source location information. The new parser constructs an abstract syntax tree (AST) and source locations are attached to the branches of the tree which can be used in error reporting and stack traces.

Next I will make whatever minor tweaks might be necessary to get my Emacs Lisp interpreter run on other Scheme implementations, in particular MIT Scheme, Gambit, Stklos, and Gauche. I would also like to try to get it running on Chicken and Chez, although these are going to be a bit more tricky.

Then I will continue with the task of implementing a new declarative GUI library.

Codeberg.orgDefine new monadic lexer library (gypsum lexer)closes #8 There are two reason to rewrite the reader: 1. The current reader does not track source locations, so error messages do not point you to where they occur 2. The current reader relies on the Guile-specific regular expression library, and this is not portable. This patch defines a ne...
#tech#software#FOSS

I’m an amateur lisper, mostly #Guile and #EmacsLisp, but if someone wants to team up for this #GameJam, I’d be interested!

I also do some basic art, game design, sound, and music. I wouldn’t want to be the sole programmer for this jam but could definitely contribute there and would love to learn more #Lisp.

https://toot.cat/@dthompson/114166799349052427

Toot.Catdave (@dthompson@toot.cat)The Spring Lisp Game Jam is happening once again! Join us for 10 days of consing up little games starting on May 9th! https://itch.io/jam/spring-lisp-game-jam-2025 #lisp #gamejam #lispgamejam

I am once again faced with the bleak irony of people who like to code in the terminal with Vim or Nano, but also install onto their computer some 5 or 10 apps via FlatPak or Docker, including VSCode, each installed with their own entire copies of Node.js and Electron.js (differing only in their minor revision number), while also complaining about Emacs being “bloated” because it ships with a miniature web browser and fully-featured e-mail client.

#tech#software#Emacs
Continued thread

This idea of “glueing” together utilities via elisp for me is at the core of what makes #Emacs attractive for knowledge workers. All of my projects draw on command line tools (rg, fd, wget, mpv etc) to process information of various kinds. As someone with no formal background in programming, I found elisp easier (and more useful) than bash and way more stable & reliable than Python (dependency hell).

From: https://mastodon.social/@laotang/113876608683711304

@laotang Absolutely. This is a big reason why I switched to Emacs. I used to subscribe to the “Unix philosophy” of every tool does one thing and one thing well, and Emacs seemed like the opposite of that. But I started to realize that I was hacking together a bunch of disparate tools with Unix pipes, tools like Vim, Tmux, Bash, Sed, Grep, my window manager, my file manager… and none of these tools spoke the same language so it was incredibly difficult to get them to all to work together with just Unix pipes.

When I realized that Emacs is not a tool but an app platform and a programming language, I realized that Emacs actually follows the Unix philosophy even better than Unix itself does. In Emacs, every “Mode” (Major Mode, or Minor Mode) is a tool that does one thing and does it well, and you compose tools together with text buffers rather than with pipes. And Emacs Lisp, as old as it is, is a much, much better programming language than Bash.

I wrote my own blog post about it not too long ago.

@xenodium

Mastodonlaotang (@laotang@mastodon.social)https://xenodium.com/a-platform-that-moulds-to-your-needs by @xenodium@indieweb.social This idea of "glueing" together utilities via elisp for me is at the core of what makes #Emacs attractive for knowledge workers. All of my projects draw on command line tools (rg, fd, wget, mpv etc) to process information of various kinds. As someone with no formal background in programming, I found elisp easier (and more useful) than bash and way more stable & reliable than Python (dependency hell).
#tech#software#Lisp
A platform that moulds to your needs

A blog post by @xenodium . Here is an excerpt:

As you become more accustomed to Emacs, you may find yourself wishing you could navigate other tasks just as efficiently. But this doesn’t happen right away. The editor starts moulding to your needs, initially as you copy others’s code/configurations, but this can only take you so far. Emacs truly does mould to your own needs, once you start learning a little elisp.

When comparing elisp to modern languages, one may be tempted to dismiss it as a niche language from another era. While both of those things may be true, its moulding and glueing capabilities remain just as relevant and powerful today, even in the LLM era.

xenodium.comA platform that moulds to your needsEmacs users may be known for bringing in all sorts of diverse workflows into their beloved text editor. From the outside, I get how odd this may seem....
I am presenting for #EmacsConf2024

The presentation is live now, and I am available for questions in the “Big Blue Button” chat room. Feel free to ask me questions here on ActivityPub.

The project is an implementation of #EmacsLisp written in portable #R7RS standard #Scheme programming language. The reference implementation is written in #GuileScheme

I guess I should have an #introduction on here as well:

I'm a programmer and #FreeSoftware enthusiast. I've been using #Linux as my main desktop and #Emacs as my... everything... since 2008. I started off with a lot of distro hopping, my journey took me through #Ubuntu, #Fedora, #Zenwalk, #Gentoo, and #Exherbo before settling on #ArchLinux, now with #Guix on top.

I love writing software in #Lisp (either #CommonLisp or #Scheme or any other), but I don't get enough of a chance to. Except #EmacsLisp, basically all my personal projects end up being written in that. Other than that I've enjoyed writing things in #CSharp, #PHP, #Python, #JavaScript, #Ruby, #Groovy, and several other languages.

My main account is @ryuslash, this is my account for experimenting with self-hosting.