Skip to main content



Fine! If I can't get the debugger to invoke, I'll just step through the code line by line and use my brain to debug... the way God intended. 🙃


I have come to the conclusion that #Emacs' documentation on how to build multi-file packages is all lies.

screwlisp reshared this.

in reply to Jonathan Lamothe

As a side note, can any #Emacs wizards explain to me why this package won't install?
cloud.jlamothe.net/index.php/s…
#AskFedi

reshared this

in reply to Jonathan Lamothe

FWIW it seems to be complaining that the package description is nil. Two things about this:

  1. define-package lists this argument as optional.
  2. It's supplied anyway.
in reply to Jonathan Lamothe

• (eepitch-shell)
cd foo
tar xvf testpackage-0-0.tar
• (add-to-list 'load-path "~/foo/testpackage-0.0")
• (load "testpackage")
• (apropos "testpackage")
=>
testpackage-func is an interactive Lisp function in ‘testpackage.el’.

(testpackage-func)

A test function

[back]works on my machine
@sacha

in reply to screwlisp

@screwlisp @Sacha Chua When I try to install it with M-x package-install-file it gives me:

Wrong type argument: stringp, nil

When I use the debugger it seems to be caused by it thinking the package description is nil? I'll try to dig deeper.

in reply to Jonathan Lamothe

Ah, yeah, I thought a little bit more and you weren't actually saying I-want-to-load-this-file. I guess the concept of a package in emacs lisp does not resemble common lisp at all. I.e. a symbol doesn't have a package like a lisp symbol does. Packaging refers to packaging e.g. a mode for distribution, right? At which point I think we would refer to e.g. melpa github.com/melpa/melpa?tab=rea… about what melpa wants you to do. That's my 25 cents anyway.
@sacha
in reply to screwlisp

i think -pkg files are possibly outdated or else rarely used (i have never used mastodon.el's, it is just there, possibly stale code). your testpackage doesn't seem to have enough juice in it to be a package, normally it'd have a provide statement at end, and in that file, there is possibly not enough in your file headers. try `auto-insert` to insert a file header will some details, or look at some existing Emacs packages (their main files). eg codeberg.org/martianh/mastodon…. or perhaps read up on the docs about writing a package, regardless of multi files or not? (these are my random ideas after looking at your files.) (+ re your first comment, docs may well be lies. i learned about multi files pkgs (after accidentally inheriting one) only by looking at existing ones that i actually use and asking folks when stuck.)
This entry was edited (5 hours ago)
in reply to screwlisp

@screwlisp @Sacha Chua Yeah, I can build simple packages, but the description for how to build a multi-file package seems not to work.

Most packages are distributed in the simple format, but if you want to include a manual for instance, you need a multi-file package.

in reply to Jonathan Lamothe

If we look at Xahlee's site here: xahlee.info/emacs/emacs/elisp_… he notes that
"The terms “Package” and “Library” do not have technical meaning in elisp.

The term “module” is not used by emacs."

} really, we are concerned with writing modes for emacs. Packaging them for distribution means meeting the package-source's requirements for the mode to be built and then distributed from a git, e.g.. That is my other 25 cents ;p.

in reply to screwlisp

This is different to #commonLisp in which I might
CL-USER> (uiop:define-package foo)
#<"FOO" package>
CL-USER> (in-package foo)
#<"FOO" package>
FOO> (defvar bar)
BAR
FOO> (export 'bar)
T

} this is not an emacs idiom. Similarly, common lisp does not have a notion of interaction major and minor modes like emacs does. I guess package in emacs means something similar to system in the de facto asdf sense in common lisp. In my opinion this collision is confusing.

in reply to Jonathan Lamothe

it feels like you're manually creating a .tar like what would be in an ELPA, but you can submit things to NonGNU ELPA or MELPA as a recipe, which can include your .texi manual if you want. github.com/melpa/melpa/blob/ma… emacsredux.com/blog/2021/08/11… . Before inclusion in one of those repos, people can also install it manually or with use-package :vc or package-vc-install: gnu.org/software/emacs/manual/…
in reply to Sacha Chua

@Sacha Chua @screwlisp Yeah, that's essentially what I'm trying to do. My eventual goal is to create my own semi-private ELPA archive, mostly because I don't want to bother people with having to review my probably terrible novice code before including it in their archives. 🙃

None of this code is really ready for public consumption yet. It's more of a learning exercise.

in reply to Jonathan Lamothe

I picked a trivial multifile package example, seq:
Tree: gitweb.git.savannah.gnu.org/gi…
A package of three files, seq.el, seq-24.el and seq-25.el, and if you are in emacs 25 or later, seq.el requires seq-25 or seq-24 otherwise. Presumably your multi-file elisp project should meaningfully resemble seq e.g. with the conventional package headers.

Then, I think you are basically looking for quelpa: github.com/quelpa/quelpa
@sacha

This entry was edited (12 hours ago)
in reply to screwlisp

@screwlisp @Sacha Chua What's interesting is that this package seems to be lacking a seq-pkg.el file. 🤔

Edit: Wait, it's in .gitignore?

Is it being auto generated somehow?

in reply to Jonathan Lamothe

Yes, you don't write that stuff. []. You just write your major/minor modes as normal, and your headers provide metadata that is used by package sources to generate the package tars.
@sacha
This entry was edited (12 hours ago)
in reply to screwlisp

as we can see in
> (directory "~/.emacs.d/elpa/seq-2.24/*.*")
(#P"~/.emacs.d/elpa/seq-2.24/seq.elc"
#P"~/.emacs.d/elpa/seq-2.24/seq-25.elc"
#P"~/.emacs.d/elpa/seq-2.24/seq-24.elc"
#P"~/.emacs.d/elpa/seq-2.24/seq-autoloads.el"
#P"~/.emacs.d/elpa/seq-2.24/seq-25.el"
#P"~/.emacs.d/elpa/seq-2.24/seq-pkg.el"
#P"~/.emacs.d/elpa/seq-2.24/seq.el"
#P"~/.emacs.d/elpa/seq-2.24/seq-24.el")
if you will forgive some of the-other-lisp ;p
@sacha
in reply to screwlisp

@screwlisp @Sacha Chua What I'm curious about is how it made the determination that seq.el was the main file. This is fairly obvious with my human intuition. Was it just because all the other .el files started with seq-, or was it doing something more fancy by looking at the contents of the files and seeing what requited what?

Edit: Ah, I bet it has to do with the fact that only seq.el had ;; Package: and ;; Version: lines, which explicitly set the package name (and version).

in reply to Jonathan Lamothe

I thought maybe it needed to be in some GNU variant of the tar format for Emacs to be able to read it, but when I just open the tar file directly in Emacs I get a directory listing and can read all the files, so that's not it.
in reply to Jonathan Lamothe

Ah. I assume that this would live somewhere near the top of my testpackage.el file?

Edit: Looking at other examples, it tends to be found at the bottom.



I just accidentally dropped my Jinhao 10 #FountainPen and bent the nib slightly (at least it wasn't an expensive pen, right?).

I did my best to bend it back into shape by hand and oddly enough, I kind of like the way it writes now better than before.

reshared this

in reply to Jonathan Lamothe

As long as it still feeds ink and writes reasonably, it could be good. Either it bends down and you got a free posting nib mod or it bends up and get you a free fude nib mod.


It's been brought to my attention that while #BuyNothing groups are pretty useful, they tend to exist mainly on Facebook. It'd be nice to have such a group for #WaterlooRegion here on the fedi as well.

I'd be happy to set one up, but if there's one that already exists, I'd rather use that than start from scratch. Is anyone aware of such a group here?

#KWAwesome #WRAwesome #Kitchener #Waterloo #Cambridge #Guelph

in reply to Jonathan Lamothe

FWIW, while I’m not what a # BuyNothing group talks about, the local KW Techs Slack team has a # buylocalandcanadian channel that has great recommendations for local and more-broadly Canadian products, and is focused mainly on independent businesses. It's a great resource, though obviously not fediverse.

Also FWIW, I’d love to see something similar here.



A thing that's really nice about #Emacs and #elisp: I don't need an internet connection to read the documentation.

reshared this



I've said this before and I'll say it again: say what you will about GNU info pages, but when you get used to them, they're pretty nice.

Shannon Prickett reshared this.

in reply to Jonathan Lamothe

Also, I'm firmly down the elisp rabbit hole again. If I don't resurface in a week or so, send help.

Shannon Prickett reshared this.



ph
My god, when I get these coughing fits I don't understand how I don't get noise complaints from the neighbours. They can last anywhere from a week to a couple months, and at this point I want to punch myself in the face.
in reply to Jonathan Lamothe

ph

Sensitive content

in reply to Jeremy List

ph

@Jeremy List I've had this before. It took years to get a conclusive diagnosis. Turns out of was reflux, and two antacids a day typically keeps it in check.

This past week though Katy and I have been sick, and it's upset the balance.



Drinking tea and reading a programming manual. This is my happy place.


Grand Sumo November 2025
Just caught up on the highlights from the latest Grand #Sumo tournament, amd I have only one comment:
Ao-freaking-nishki!
#sumo
in reply to Jonathan Lamothe

Grand Sumo November 2025

Sensitive content




Cleaning some old redundant #FountinPen ink sample vials. They look clean individually until you place them next to each other. Then you can see that they each have a slight hue left.
in reply to Jonathan Lamothe

Also, there's still some residue from the labels, but that'll probably be easier to fix.



I keep flirting with the idea of learning the Deseret alphabet. I have absolutely no practical reason for wanting to do this, but I still want to. I guess the appeal is my obsession with weird corners of #Mormon history.

If I'm going to learn an obscure alphabet, the Shavian alphabet is probably more practical, but... I dunno maybe I'll learn that one too.



I just won my first game of Go.

I mean, my (online) opponent apparently just abandoned the game and ran the clock out, but I'll take what I can get.



I love jobs that expect you to do a bunch of work for free before deciding whether or not to actually give you the job.


Applying for a freelance transcription gig tomorrow (when I can hopefully go back on my ADHD meds (because I can't mix them with Tylenol Cold)). Hopefully it works out better than the freelance closed captioning job I had a while back, but time will tell.

Trying to find a way to earn some extra income that doesn't require a reliable car, which has become a big question mark.

reshared this



ph

I'm finally starting to feel better (though you wouldn't know it from listening to my voice) just in time for Katy to start feeling a sore throat.

I really thought she was somehow going to dodge this one.

in reply to Jonathan Lamothe

ph

A conversation we just had:

Me: We should pick up some lemons.
Katy: We have limes.
Me: Will that work?
Katy: For what?
Me: For those teas you made me when I was sick. It really helped with my sore throat.
Katy: Yeah, I don't want that.

¯\_(ツ)_/¯



Welp, I am officially sick.

I've had both my COVID and flu shots, so hopefully I can fight it off faster.



uspol shitpost
I see Trump is vying for membership in the ICP?


CW: nerdy observation that appeals to my inner twelve-year-old

I learned a while ago of the existence of old Soviet ternary computers and have been doing some reading about how a ternary computer would operate different from a binary one.

In a binary system, the smallest unit of data is the bit (binary digit). What would the smallest unit of data be in a ternary system?

in reply to Jonathan Lamothe

CW: nerdy observation that appeals to my inner twelve-year-old

Sensitive content

in reply to Isaac Ji Kuo

CW: nerdy observation that appeals to my inner twelve-year-old
@Isaac Ji Kuo Yeah, while I'm still wrapping my brain around this system, I love how elegantly it handles negative numbers. Twos compliment in binary always felt a little hacky to me.
in reply to Jonathan Lamothe

CW: nerdy observation that appeals to my inner twelve-year-old
@Isaac Ji Kuo That said, I'm a little scared to think about how floating points work... though it's probably easier than I think.
in reply to Jonathan Lamothe

CW: nerdy observation that appeals to my inner twelve-year-old

Sensitive content

in reply to Isaac Ji Kuo

CW: nerdy observation that appeals to my inner twelve-year-old
@Isaac Ji Kuo I don't imagine here's an IEEE standard for ternary floating point values? (I wouldn't expect so.)
in reply to Jonathan Lamothe

CW: nerdy observation that appeals to my inner twelve-year-old

Sensitive content



God I hope I'm not coming down with something. I went to bed with a bit of a sore throat and woke up this mornig feelig like I'd been gargling broken glass.

Time to load up on tea with honey and lemon, I guess.



Popped into #LambdaMOO for a birthday celebration that took place inside my sushi restaurant. This got me to thinking. I wonder if it's possible to tie my restaurant's code into the birthday machine somehow so that people can get free food on their birthday.



CW: ph/mh - ADHD
Hooray! I finally talked my doctor into letting me go back on #ADHD meds. He pushed back, as expected, but I might actually be able to do things again.
#ADHD


whining about math

I have always been annoyed by the statement that sqrt(-1) = i.

Note: I'm perfectly fine with the assertion that i^2 = -1.

in reply to Jonathan Lamothe

whining about math
The reason for this is that by the same logic, I could argue that sqrt(1) = -1. We're either constraining the answer to positive numbers or we're not.
in reply to Jonathan Lamothe

piecewise function definitions are a thing though, like the abs function for instance

abs(x) = x, for all positive x
abs(x) = -x, for all negative x

sqrt(x) = positive y, for all positive x
sqrt(x) = i * sqrt(-x), for all negative x

I also find arctan really weird, because it only works if you fiddle with the domain (yet it clearly does exist, and is useful)

I enjoy the unpleasant feeling I get when I realise that all maths is made up!

in reply to Pat

@Pat abs can be defined for the whole complex plane though (the square root of the sum of the square of the real and imaginary components) i.e.:
abs(a + bi) = sqrt(a^2 + b^2)
@Pat
in reply to Jonathan Lamothe

whining about math

Sensitive content



I have never understood hunting as a sport. I cannot bring myself to trust someone who kills things for enjoyment.
in reply to Eric Gerlach

@Eric Gerlach I... guess, but I'd imagine there are less violent ways to feel that control.

Maybe that's just me.



I am kinda behind schedule today because every time I looked at my tablet (where I consult my to-do list) the cat took it as a personal insult and insisted I pay attention to him instead.


Wearing white clothing while using a #FountainPen is always a gamble. I lost that bet today.
in reply to Jonathan Lamothe

Fortunately fountain pen ink is water soluble so it often washes right out if you get to it immediately.

Thank God it wasn't my Baystate Blue.



Perusing the terms of service my phone is requiring me to agree to after the update.

Under the section about how they safeguard my data, it reads:

We take data protection seriously. We have put in place physical and technical safeguards to keep the information we collect secure. We also take appropriate measures, in compliance with applicable law, to ensure that the personal information collected by third parties remains secure. However, please note that although we take reasonable steps to protect your information, no website, Internet transmission, computer system, or wireless connection is completely secure.


That's a very verbose way to say "trust us, bro."

reshared this



Just signed up for DoorDash yesterday to try to diversify our income a little.

Got an email from them this morning. I opened it in neomutt to read that my account had been suspended "due to [my] repeated lateness violations", which is impressive considering I haven't even done a shift yet.

When I tried to show the email to Katy on my phone, the email instead read as a generic welcome letter.

It turns out that the plain text and and HTML parts of the email are completely different.

Things are off to a fantastic start, I see.

Edit: proofreading is for suckers

reshared this

in reply to Jonathan Lamothe

ohhh we love it when that happens! it's incredibly difficult to get people to understand that problem!


Every time I read #UnixSurrealism it makes me want to switch to #Plan9.

This is absolutely not a reasonable option for me, but it doesn't stop me from wanting to do it.

reshared this

in reply to Jonathan Lamothe

the urge to OS-hop is permanent but the desire for comfort and stability fights it constantly, it is an internal battle we all face


CW: food (vegan)
We got a little impatient waiting for it to reduce, but we made a delicious lentil dahl today.


You don't get to say that a recipe takes 10 minutes to prepare when one of the directions is "simmer covered for 25 to 35 minutes".
in reply to Jonathan Lamothe

I think the convention is "prep time" for a recipe is before heat is applied "cook time" is after heat is applied and "total time" is the sum of both, plus any required rest time between or after cook.

But, I do agree that can be annoying, because it's not the same as my expectations.



I just spent way longer than I care to admit trying to clean a spot on my glasses. Turns out it was a piece of lint on my eyelash.


Upgraded my Gitea* server this morning and had a moment of panic when I thought I'd lost admin access. Turns out they just changed where the admin interface lives.

* I meant to switch to Forgejo, but never got around to it and then they went hard fork, so it's more complicated now.



Some money that I was expecting a while ago finally hit our account. We can make rent after all. Finally my anxiety can start ratcheting down for a bit.

reshared this



So for some reason two of my apps are suddenly switched to French. It wasn't a big deal as I can read it, but it was annoying.

I had my system languages set as follows:

  1. English (Canada)
  2. English (United States)
  3. French (Canada)

I assume it was because these apps didn't have localisations for my first choice, but I don't know why they instead jumped to the third option, skipping the second.

in reply to Jonathan Lamothe

I have swedish as my second language and that happens to me sometimes too.
I don't mind, but it's surprising.


Just heard someone unironically use the term "real AI".

Real artificial intelligence? What the hell does that even mean?

in reply to Jonathan Lamothe

It means not actually an outsourced team of humans in India like that startup that was recently in the news.
in reply to Matthew Skala

@Matthew Skala I guess, but that wasn't the context in this case.


@Judy Anderson Fair, but this guy talking about how Zork "faked AI" instead of having the "real AI" we have now.

Edit: context


This website uses cookies. If you continue browsing this website, you agree to the usage of cookies.