#elisp — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #elisp, aggregated by home.social.
-
Chat client for Meshtastic LoRa mesh networks in Emacs. Connects directly to a device over USB serial, no server required.
https://git.andros.dev/andros/meshtastic.el
#emacs #elisp #meshtastic #lora -
Because I'm too lazy to type out a Markdown link in a ChangeLog: https://blog.davep.org/2026/05/19/next-gh-pr-el-v1-0-0.html
-
Battling my muscle memory in Magit: https://blog.davep.org/2026/05/13/stopping-an-accidental-push.html
-
Today's #emacs lesson: my locally installed #orgmode broke completely. After some light debugging I gave up, deleted the org directory, and reinstalled from melpa.
And - still broken. With warnings that Emacs couldn't find the org file in the directory I'd deleted. And completely scrubbed from my init. But Emacs continued to look for it in the old location.
Until - I deleted the .elc files in my user-lisp directory. And then, at last, it works.
From which I tentatively conclude that when you compile an #elisp file that calls another file, it somehow hard-codes the location of the file it loads. Such that changing the load path or otherwise telling Emacs to load a different file doesn't get accounted for.
Which, if accurate, would mean you need to recompile your .elc files not just when the corresponding .el file changes, but when any of the files it calls changes?
Is that right? That sounds ugly
-
Today's #emacs lesson: my locally installed #orgmode broke completely. After some light debugging I gave up, deleted the org directory, and reinstalled from melpa.
And - still broken. With warnings that Emacs couldn't find the org file in the directory I'd deleted. And completely scrubbed from my init. But Emacs continued to look for it in the old location.
Until - I deleted the .elc files in my user-lisp directory. And then, at last, it works.
From which I tentatively conclude that when you compile an #elisp file that calls another file, it somehow hard-codes the location of the file it loads. Such that changing the load path or otherwise telling Emacs to load a different file doesn't get accounted for.
Which, if accurate, would mean you need to recompile your .elc files not just when the corresponding .el file changes, but when any of the files it calls changes?
Is that right? That sounds ugly
-
Today's #emacs lesson: my locally installed #orgmode broke completely. After some light debugging I gave up, deleted the org directory, and reinstalled from melpa.
And - still broken. With warnings that Emacs couldn't find the org file in the directory I'd deleted. And completely scrubbed from my init. But Emacs continued to look for it in the old location.
Until - I deleted the .elc files in my user-lisp directory. And then, at last, it works.
From which I tentatively conclude that when you compile an #elisp file that calls another file, it somehow hard-codes the location of the file it loads. Such that changing the load path or otherwise telling Emacs to load a different file doesn't get accounted for.
Which, if accurate, would mean you need to recompile your .elc files not just when the corresponding .el file changes, but when any of the files it calls changes?
Is that right? That sounds ugly
-
Today's #emacs lesson: my locally installed #orgmode broke completely. After some light debugging I gave up, deleted the org directory, and reinstalled from melpa.
And - still broken. With warnings that Emacs couldn't find the org file in the directory I'd deleted. And completely scrubbed from my init. But Emacs continued to look for it in the old location.
Until - I deleted the .elc files in my user-lisp directory. And then, at last, it works.
From which I tentatively conclude that when you compile an #elisp file that calls another file, it somehow hard-codes the location of the file it loads. Such that changing the load path or otherwise telling Emacs to load a different file doesn't get accounted for.
Which, if accurate, would mean you need to recompile your .elc files not just when the corresponding .el file changes, but when any of the files it calls changes?
Is that right? That sounds ugly
-
Today's #emacs lesson: my locally installed #orgmode broke completely. After some light debugging I gave up, deleted the org directory, and reinstalled from melpa.
And - still broken. With warnings that Emacs couldn't find the org file in the directory I'd deleted. And completely scrubbed from my init. But Emacs continued to look for it in the old location.
Until - I deleted the .elc files in my user-lisp directory. And then, at last, it works.
From which I tentatively conclude that when you compile an #elisp file that calls another file, it somehow hard-codes the location of the file it loads. Such that changing the load path or otherwise telling Emacs to load a different file doesn't get accounted for.
Which, if accurate, would mean you need to recompile your .elc files not just when the corresponding .el file changes, but when any of the files it calls changes?
Is that right? That sounds ugly
-
I was reading #prot emacs element #ebook on #elisp. I like this quote.
```
The fun part is how you go about writing the code. There are no duties you have to conform with. None! You program for the sake of programming. It is a recreational activity that expands your horizons.
```protesilaos.com/emacs/emacs-lisp-elements#h:getting-started-with-emacs-lisp
-
I've released a small update to make-phony.el: https://blog.davep.org/2026/05/09/make-phony-el-v1-4-0.html
-
I've updated blogmore.el to add a command for quickly setting an image as the cover for a post: https://blog.davep.org/2026/05/08/blogmore-el-v4-5-0.html
-
I've released blogmore.el v4.4.0, which lets me be even more lazy: https://blog.davep.org/2026/05/07/blogmore-el-v4-4-0.html
-
...and updated all my packages to use Compat 31. Unfortunately I found a bug in the new with-work-buffer macro, such that the packages cannot yet take advantage of it:
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=80947
But this is what the stabilization phase before the actual Emacs release is for!
-
I have just released Compat 31.0.0.0. The emacs-31 branch cut is imminent and the stabilization for the release will start now. If you start to rely on Compat 31 in your packages, please be aware that functions can still change until the actual release of Emacs 31.1. Please report any problems you encounter.
https://github.com/emacs-compat/compat/commit/2ef017671bdc643dbdbe3bfb746b80d090db792a
-
;; Best of both worlds: Only delete old duplicates, such that rare candidates
;; are not lost. At the same time ensure that ranking by frecency works. (bug#80070)
(defun +history-delete-old-duplicates (var elt &rest _)
(when-let* ((hist (symbol-value var))
((and (listp hist) (integerp history-length)))
(old (nthcdr 100 hist)))
(setcdr old (delete elt (cdr old)))))
(advice-add #'add-to-history :before #'+history-delete-old-duplicates) -
I've updated blogmore.el with a couple of commands for working with the comment invite facility: https://blog.davep.org/2026/04/28/blogmore-el-v4-3-0.html
-
I've updated blogmore.el with a couple of commands for working with the comment invite facility: https://blog.davep.org/2026/04/28/blogmore-el-v4-3-0.html
-
I've updated blogmore.el with a couple of commands for working with the comment invite facility: https://blog.davep.org/2026/04/28/blogmore-el-v4-3-0.html
-
I made myself a little #Emacs package to make it easy to mark up keys in Markdown: https://blog.davep.org/2026/04/24/kbdify-el-v1-0-0.html
-
After over a decade of use, I made a wee update to a personal #Emacs package I use for dropping into the scratch buffer: https://blog.davep.org/2026/04/24/itch-el-v1-3-0.html
-
I keep forgetting some abbevs I have for common URLs, so I quickly wrote a little tool to help me pick them from a list: https://blog.davep.org/2026/04/23/unabbrev-el-v1-0-0.html
-
So #Emacs kept quitting windows on occasion, while writing #Elisp code, but not always. And now expando.el v1.6 has been released.
-
blogmore.el v4.2 is now available, with tweaked slugging and a changed image extension changer: https://blog.davep.org/2026/04/21/blogmore-el-v4-2.html
-
You can now find `comet-trail` on MELPA!
https://git.andros.dev/andros/comet-trail.el
The cursor animates like a comet sliding along its path with an ease-out brightness gradient.
#emacs #elisp -
Title: P3: pinyin search, Mastadon sedning [2024-01-06 Sat]
1) You need to register a client in web site with permissions: write, push, delete.
2) All you need is 'Your access token' ◕‿◕
3) curl -H 'Authorization: Bearer Saccess_token' ...
to https://emacs.ch/api/v1/media to upload pictures
to https://emacs.ch/api/v1/statuses to push status
to https://emacs.ch/api/v1/statuses/Smessage_id to delete status #mastadon #emacs #chinese #pinyin #elisp #lisp -
Title: P2: pinyin search, Mastadon sedning [2024-01-06 Sat]
I am very fashinated by Chinese 气功 Qigong. ☯
The basic is very simple: make movies to liven the body and mind's aspects. ☥I updated my bash scripts with cURL 🦾 to quickly send
'status' reports to Mastadon 💅:
I used this Python wrapper scripts as guidlines:
- https://github.com/halcy/Mastodon.py/blob/master/mastodon/authentication.py
- Mastodon.py/mastodon/internals.py #mastadon #emacs #chinese #pinyin #elisp #lisp -
Title: P1: P0: pinyin search, Mastadon sedning [2024-01-06 Sat]
I am working on major update to my Emacs package for quick pinyin search.
I am going to add search of Chinese hieroglyphs by pinyin. ☯During my work I collected often used functions: ❤️🧡💛💚💙💜
flatten list by one level
: (apply 'append v) #mastadon #emacs #chinese #pinyin #elisp #lisp -
Trying to continue with my learning #Emacs #Lisp, and it is going more slowly than I would like - primarily because of lack of free time (damn adult life).
However, I just successfully completed "5.5 optional Argument Exercise." I'm proud to have worked it out, but I really need to focus on learning where and when to use parentheses. E.g., (56) is not a valid expression for an else clause, whereas 56 is.
Frustrating! But I AM enjoying this process!
-
I added a transient menu to boxquote: https://blog.davep.org/2026/04/16/boxquote-el-v2-4.html
-
More tweaking of older #Emacs packages, this time slstats.sl: a package for looking up information about the #SecondLife grid.
-
More tweaking of older #Emacs packages, this time slstats.sl: a package for looking up information about the #SecondLife grid.
-
More tweaking of older #Emacs packages, this time slstats.sl: a package for looking up information about the #SecondLife grid.
-
More tweaking of older #Emacs packages, this time slstats.sl: a package for looking up information about the #SecondLife grid.
-
More tweaking of older #Emacs packages, this time slstats.sl: a package for looking up information about the #SecondLife grid.
-
Cleaned up wordcloud.el, a little #Emacs package that turns a buffer into a word cloud, of sorts: https://blog.davep.org/2026/04/14/wordcloud-el-v1-4.html
-
CW: elisp help
Okay, so I wrote this hacky nonsense in my
~/.emacs.d/init.el, but it doesn't seem to be having any effect. The function in question seems completely unaffected.Perhaps this code is being evaluated before the original function is defined?
;; Mail hack (defvar jrl-mail-hack nil "Flag to prevent from overloading the function a second time") (let ((oldfunc (symbol-function 'message-unique-id))) (unless jrl-mail-hack (defun message-unique-id () (secure-hash 'sha256 (funcall oldfunc))) (setq jrl-mail-hack t)))
The idea is to hash the Message-ID header in outgoing mail because Gmail seems to have decided the original format looks like spam.
#emacs #elisp #AskFedi -
CW: elisp help
Okay, I need to do a hacky #elisp thing. Yes, I know it's terrible.
Basically, I have an existing
defun. Let's call itfoo. I need to replace it with a new function that calls the old one and transforms its output before returning it.I naïvely assumed I could do it like this:
(let ((oldfunc (function foo))) (defun foo () (my-transform (funcall oldfunc))))
...but this doesn't actually copy the old function, just a reference to the symbol, so it ends up locking itself in a recursive loop.I'm sure there's a way to do this.
#AskFediEdit: Got it. It's:
(let ((oldfunc (symbol-function 'foo))) (defun foo () (my-transform (funcall oldfunc))))
Edit 2: It turns out there's a cleaner way still.
See: aus.social/@carlozancanaro/116…Also, there's still something Gmail isn't liking. Looking at the differences in the headers between emacs and my other clients (whose mail does get through), the next most obvious difference is that the
Content-Typeheader doesn't specify an encoding. Whether this is the actual problem or not, I should probably fix that. I'm just working on how.
RE: aus.social/users/carlozancanar… -
My Meshtastic chat package is now available on MELPA.
https://git.andros.dev/andros/meshmonitor-chat.el
https://melpa.org/#/meshmonitor-chat
#emacs #melpa #elisp #meshtastic #meshmonitor -
So I needed to make a second release of blogmore.el in one day: https://blog.davep.org/2026/04/04/blogmore-el-v2-7.html
-
My vterm-editor.el package is now available on MELPA.
https://git.andros.dev/andros/vterm-editor.el
https://melpa.org/#/vterm-editor
#emacs #melpa #elisp #vterm -
You can find `async-http-queue` on MELPA
https://git.andros.dev/andros/async-http-queue-el
Enjoy it!
#emacs #elisp #melpa