Thread #108159024
File: 1750063454396824.jpg (1010.6 KB)
1010.6 KB JPG
Wide edition.
>Lisp is a family of programming languages with a long history and a distinctive parenthesized prefix notation. There are many dialects of Lisp, including Common Lisp, Scheme, Clojure and Elisp.
>Emacs is an extensible, customizable, self-documenting free/libre text editor and computing environment, with a Lisp interpreter at its core.
>Emacs Resources
https://gnu.org/s/emacs
https://github.com/emacs-tw/awesome-emacs
https://github.com/systemcrafters/crafted-emacs
>Learning Emacs
C-h t (Interactive Tutorial)
https://emacs-config-generator.fly.dev
https://systemcrafters.net/emacs-from-scratch
http://xahlee.info/emacs
https://emacs.tv
>Browse imageboards in Emacs Org-Mode
https://github.com/eNotchy/4g
>Emacs Distros
https://github.com/caisah/emacs.dz
>Elisp
Docs: C-h f [function] C-h v [variable] C-h k [keybinding] C-h m [mode] M-x ielm [REPL]
https://gnu.org/s/emacs/manual/eintr.html
https://gnu.org/s/emacs/manual/elisp.html
https://github.com/emacs-tw/awesome-elisp
>Common Lisp
https://lispcookbook.github.io/cl-cookbook
https://cs.cmu.edu/~dst/LispBook
https://gigamonkeys.com/book
https://lisp-docs.github.io/
https://awesome-cl.com
>Scheme
https://scheme.org
https://standards.scheme.org
https://go.scheme.org/awesome
https://research.scheme.org/lambda-papers
>Clojure
https://clojure.org
https://tryclojure.org
https://clojure-doc.org
https://clojure.land
https://www.clojure-toolbox.com
https://mooc.fi/courses/2014/clojure
https://jafingerhut.github.io/cheatsheet/clojuredocs/cheatsheet-tiptip -cdocs-summary.html
>Other
https://github.com/dundalek/awesome-lisp-languages
>Guix
https://guix.gnu.org
https://nonguix.org
https://systemcrafters.net/craft-your-system-with-guix
https://futurile.net/resources/guix
https://github.com/franzos/awesome-guix
>SICP/HtDP
https://web.mit.edu/6.001/6.037/sicp.pdf
https://htdp.org
>More Lisp Resources
https://lisp.nexus
https://rentry.org/lispresources
(set! prev-bread (quote >>108089143))
292 RepliesView Thread
>>
>>108158127julia> using LispSyntax
julia> LispSyntax.init_repl()
Warning: REPL key ')' overwritten.
@ ReplMaker ~/.julia/packages/ReplMaker/ViCwA/src/ReplMaker.jl:96
REPL mode Lisp Mode initialized. Press ) to enter and backspace to exit.
"Prompt(\"jλ> \",...)"
jλ> (def td (today))
2026-02-15
jλ> (def tm (+ td (Day 1)))
2026-02-16
>>
>>
>>108159045
You might have to add this also:using Dates
I have my Julia REPL setup to load that and a few other things automatically.
Reference for date and time math in Julia:
https://docs.julialang.org/en/v1/stdlib/Dates/#TimeType-Period-Arithme tic
It's kind of handy that durations like Day and Hour are distinct types in Julia. You'll notice that Julia makes use of multimethods way more than Common Lisp ever did. (For example, there are specializations of the + function that know how to deal with combinations of Date, DateTime, and subtypes of Dates.Duration (which include Hour and Day)).
----
>>108158127
For Common Lisp, I'd probably use local-time.
https://github.com/dlowe-net/local-time CL-USER> (defparameter today (today))
TODAY
CL-USER> (defparameter tomorrow (timestamp+ today 1 :day))
TOMORROW
CL-USER> today
@2026-02-15T16:00:00.000000-08:00
CL-USER> tomorrow
@2026-02-16T16:00:00.000000-08:00
>>
>>108159184
>cl-web-driver
https://github.com/copyleft/cl-webdriver-client
>scrape excessively dynamic sites that need a full browser to load and parse.
Thankfully, I haven't needed to do that yet, but this is good to know in case I ever do.
>>
>>108159211
>Dates.Duration
correction: Dates.Periodjulia> typetree(Dates.Period)
Any (other children are hidden)
─ Dates.AbstractTime
─ Dates.Calendar (1 children)
─ Dates.CompoundPeriod
─ Dates.Instant (1 children)
─ Period
─ DatePeriod
─ Day
─ Month
─ Quarter
─ Week
─ Year
─ TimePeriod
─ Hour
─ Microsecond
─ Millisecond
─ Minute
─ Nanosecond
─ Second
─ TimeType (3 children)
>>
File: KV-2.jpg (684.8 KB)
684.8 KB JPG
Interesting
https://artanis.dev/blog/technical-report-2026-Jan-28.html
>>
File: test-shell.mp4 (785.6 KB)
785.6 KB MP4
Moar progress. Cleaned up the lisp shell implementation (lish fork), added support for piping.
Shell output goes into *input* if you want to process it in CL. Can't lie, don't think I'll use this much, but just felt like it should work in some form.
>>
>>
>>
>>
>>
File: 1762423327673752.png (1.7 MB)
1.7 MB PNG
>>108159024
Only posting here because of Hidamari
>>
File: emacs-canvas-patch.png (33.5 KB)
33.5 KB PNG
I wonder if this will make it into Emacs some day.
https://github.com/minad/emacs-canvas-patch
>>
>>
what causes lsp-mode to contact the github api every time you activate lsp-mode after a fresh start?
i'm already setting lsp-enable-suggest-server-download to nil, it's still doing it
this shit causes my emacs to lock up whenever there's connection issues
>>
>>
>>108162322
Because I think copyleft is a good thing, obviously. And I think it’s in bad taste to take one of the most well known GNU projects and replace it with this MIT license like what’s happening with a lot of free software projects nowadays.
>>
>>
>>
>>
>>
File: miya.png (590.8 KB)
590.8 KB PNG
>>108161796
Only posting here because (You) posted my edit.
>>
>>108159771
>Shell output goes into *input* if you want to process it in CL. Can't lie, don't think I'll use this much, but just felt like it should work in some form.
I use shell->string most days so it's appreciated
>>
>>108161833
Kind of? I don't actually have major/minor modes, mostly because I don't have "everything is a buffer". Instead everything is a view, which is a bit lower level (but more powerful), and keymaps pick what views to operate in. For language features, we have a `buffer-view`, and that uses stackable buffer-modes (e.g. Lisp/Markdown/LSP). That covers similar use cases to a major mode, but it’s more composable. The only thing that's exclusive right now is buffer-view's editing state (normal/insert/select).
I'm still working on the semantics and I haven't fully made up my mind on it but that's the general idea right now.
>>108163648
Ah neat! Do you think *input* makes sense? Was between *input* and something like *stdin* or just *in*.
>>
>>108162579
GPL projects generally get infiltrated and subverted by corporations and other undesirables. MIT ones generally do not. The relationship between Redhat and Linux is far more egregious cuckolding than that of Sony and FreeBSD.
>>
>>108165023
>GPL projects generally get infiltrated and subverted by corporations and other undesirables. MIT ones generally do not.
there's nothing to infiltrate and subvert with mit because they can already do whatever they want with it so that goes without saying
>>
File: GPL_vs_(((BSD))).jpg (380.1 KB)
380.1 KB JPG
>>108165023
Cuck Cope
>Unlike the GPL, which requires you to share derivative works, the BSD license doesn’t. You can take FreeBSD code, build on it, and never give anything back. This makes it a great foundation for products — but it also means there’s little reason for companies to return their contributions.
https://freebsdfoundation.org/blog/the-report-of-my-death-was-an-exagg eration/
>>
>>
File: file.png (67.2 KB)
67.2 KB PNG
>>108156261
>>108156135
I got it! It only took months!
Unfortunately I was already getting used to moving away from Emacs, started using Obsidian and all...
>>
>>
>>
>>108162471
Just to be clear, by "don't care" you obviously mean in the sense of allowing the software to be as free as possible, not that you "don't care" about licenses (otherwise you could just choose no license at all, which would default to standard copyright).
But there is an inherent flaw in the view of MIT license as being the "most free". Because you are living in a world that prioritizes non-free ideals.
So being permissive in a fundamentally _non-permissive_ system, doesn't create an environment of true permissiveness.
In a truly permissive system if someone takes my code and uses it in their project, even if they don't re-contribute their changes to me, but they release a binary using those changes, then I should be free to reverse engineer whatever they've done.
But the MIT license would actually allow them to take your code and sue you if you try to reverse engineer anything they do with it.
This is why I'm a fan of the GPL. The GPL basically tries to "fight fire with fire" by using copyright laws against themselves. Although it appears to create restrictions, what it's actually doing is attempting to nullify the non-free side effects that already exist because of other licenses.
So ironically the GPL is actually the "most free" license available.
Even Linus Torvalds who is against the GPLv3 still agrees that Linux would not have succeeded if it weren't for the GPLv2.
>>
>>
>>
>>108167408
No idea honestly. I just tried (multiple times) to
lsp-workspace-remove-all-folders, then I opened a file and pressed 'i' at the prompt to add the current file's project root to workspace, then opened raylib.odin by using gd (goto definition) and then there pressed 'i' again when asked whether to add the folder to the lsp workspace.
I think what confused me (and still does) is how Emacs or LSP-mode thinks of workspaces.
If I understood correctly, my odin program's project directory was added to the workspace, and then I added not the raylib directory, not the vendor directory, but the "main" Odin directory to the workspace. And yeah, it worked.
And well, this time I also did lsp-workspace-restart
>>
>>108159771
Cool, bro. Your editor looks nice. I use lish as my main shell. btw, you can just pipe lisp funcs without parens, like:pwd | string-upcase | reverse
lish has a bunch of hidden tools and i wrote my own lisp commands instead of crap /bin/sh.
Too bad lish author removed the reops and i'm too dumb to fix the problems. But I can't find the repo for your editor either?
Sad if smart lisp chads silenced by theiving clankers.
>>
>>108169719
>Too bad lish author removed the reops
Is the lish you're talking about different from this?
https://github.com/lfkeitel/lish
>>
>>
Feature creeping my shit.
I've successfully added package agnostic formatting (user can define their own formatter with emacs-reformatter or their own formatting functions), and binding extraction utilities, so it's not a slog to abstract sections of the query to their own reference bindings, or remove existing bindings.
Most of it is still in a sepparate branch (autocompletion branch).
>>108170609
Was looking into it last year but never went through with really trying it out. I remember looking up packages for it and finding these two:
>https://github.com/jhallen/pic-macros
>https://github.com/rswarbrick/picasm
>>
>>
>>108170687
are you the org-transclusion-blocks anon?
https://github.com/gggion/org-transclusion-blocks/
>>
>>
>>108170203
Yes. It was in written Common Lisp and at https://github.com/nibbula/yew and then https://codeberg/nibbula/yew and updated for like 10 years until last month or so.
>>
File: file.png (510.4 KB)
510.4 KB PNG
>>108170698
Yeah I'm mainly using it for job related things but found out that it's convenient for fetching RSS feeds into an org-table or list like this:#+begin_src elisp
(duckdb-query
"LOAD webbed;
SELECT
strftime(updated::TIMESTAMPTZ, '%Y-%m-%d %H:%M') AS published,
'[[' || link || '][' || title || ']]' AS headline
FROM (
SELECT
xml_extract_text(e, '//*[local-name()=\"updated\"]')[1]AS updated,
xml_extract_text(e, '//*[local-name()=\"link\"]/@href')[1] AS link,
xml_extract_text(e, '//*[local-name()=\"title\"]')[1] AS title
FROM (
SELECT unnest(xml_extract_elements(
content, '//*[local-name()=\"entry\"]')) AS e
FROM read_text(@val:url)))
ORDER BY updated::TIMESTAMPTZ DESC
LIMIT @val:n"
:val '((url . "https://planet.emacslife.com/atom.xml")
(n . 5))
:readonly nil
:format :org-table)
#+end_src
You can change :format to :list or one of the other format options.
>>108170905
Yep
>>
>>108171042
>Yep
I opened this feature request: https://github.com/gggion/org-transclusion-blocks/issues/7
Can you take a quick look and let me know if it sounds feasible?
>>
>>108169719
Oh yeah you're right. I forked lish a long time ago, and after the author disappeared I stripped away a ton of stuff to just keep the library-relevant bits and get rid of dependencies, I must've accidentally stripped that out as well. I never used lish much as a standalone shell, glad to know someone's out there daily driving it.
>But I can't find the repo for your editor either?
It's just not public yet. I get heartburn thinking of other people using it still. I have a default config and I haven't tested a lot of ways to break stuff, I can only guarantee the default experience is good right now. I'm thinking of telling a clanker to generate 5 messed up user configs and use those as ephemeral integration tests kek
>>108170203
The author suddenly disappeared and took down his monorepo with him. Shame, no idea why.
>>
>>108171055
Ah nice, yeah no prob it's feasible, it's probably due to not updating the package for the latest org-transclusion version, I remember id links where added in the transient branch and merged a couple months back. I'll add it, thanks for the heads up I hadn't used id links.
Just to check, the ::quote-block search string is an org element right? like the name of your quote block?
>>
File: file.png (324.8 KB)
324.8 KB PNG
>>108171178
Thanks, managed to get it working but there are some text properties fucking things up and locking the destination buffer which I'll have to fix in a more broad scope, I needed to update the package for the new version of ot anyways.
>>
>>
calc is sweet
>bmi with imperial units
>' 161 lb / (5ft + 9in)^2
>uc si (convert to SI units)
>23.775 kg/m^2
>download calc-currency
>setq var-Units to vector of EUR and USD
>put 100 on calc stack
>typing "u 1" makes it 100 EUR
>typing "u 2" converts it to USD
looking back depending on a search engine for currency/unit conversion was really weird
>>
>>
>>108171070
>I get heartburn thinking of other people using it still.
Yea, I get it. Same with me. You need to feel good about it. Most of the OG classics like emacs, linux, etc dogfooded it for years. Anyway nothing can change that you made something that's impressive. Happy Hacking arcus anon!
>>
>>
File: HAtIHDSacAAkdRX.jpg (1002 KB)
1002 KB JPG
>>108171902
Here's a bare minimum evil config in case you want to leverage your vim muscle memory. This assumes you have Emacs 29 or newer so that use-package can be assumed to be present.;;;; Setup MELPA
(require 'package)
(package-initialize)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
;;;; Packages
(use-package evil
:ensure t
:init
(setq evil-want-integration t)
(setq evil-want-keybinding nil)
:config
(evil-mode 1))
(use-package evil-collection
:after evil
:ensure t
:config
(evil-collection-init))
https://github.com/emacs-evil/evil-collection
>>
>>108171956
Some of the default keybinds are atrocious (like C-M-E and anything-DEL).
I don't want to switch to evil mode just yet. Feel I should give the default keybindings a few weeks to settle in to my muscle memory.
Also, what is the proper way of deleting words?static void foo(int a) { }
If I wanted to delete static, C-a M-d C-d? And if I wanted to delete static void: C-a C-u 2 M-d C-d? Compare that to d2w...
>>
>>
File: mx-discovery_20260217.08:56:25.png (158.7 KB)
158.7 KB PNG
>>108172010
One way you can discover functionality is to hit M-x and then try to guess function names. For example, I hit M-x and typed "kill word" and the completions that were displayed looked like the attached pic.
Another big help for command discovery is which-key-mode. I would highly recommend enabling it if you haven't already.
Also, instead of:
C-u 2 M-d
if you know it's going to be 2, just:
M-d M-d
>>
>>
>>
>>
>>
File: sbcl-slop.png (148.3 KB)
148.3 KB PNG
https://gamerplus.org/@wm_annis@mastodon.art/116088222549742138
>>
>>
Some threads ago, months ago, someone mentioned that paredit takes over M-s and binds it to paredit-splice-sexp. This is an unpleasant surprise for people who use M-s for searching. To take M-s back from paredit, you can try this.(eval-after-load "paredit"
'(define-key paredit-mode-map (kbd "M-s") nil))
In practice, I find that I rarely use paredit-splice-sexp. The splicing operation I use the most is paredit-splice-sexp-killing-backward which is bound to M-<up>. This lifts something out of an enclosing block.
>>
>>108172010
I don't know if it's too early in your Emacs journey to write Elisp, but you could write an interactive Elisp function to do this and bind it to a key.(defun kill-2-leading-words ()
"Delete the 2 leading words on the current line."
(interactive)
(save-excursion ; Remember cursor position.
(move-beginning-of-line nil) ; C-a
(kill-word 2) ; C-u 2 M-d
(delete-char 1))) ; C-d
;; I used free-keys to find a binding that wasn't being used.
;; https://github.com/Fuco1/free-keys
(keymap-global-set "M-[" #'kill-2-leading-words)
The key to finding out which function is invoked by a key combination is frequent use of `C-h k`.
>>
>>
>>
>>
File: 1767643831113591.png (73.6 KB)
73.6 KB PNG
>>108176701
>>
>>
>>
>>108176777
Emacs has an Android port. It's full fat Emacs. IMO worth it just for a functional spell-checker (although you need to use the Termux integration patch to install ispell.)
At work I like to slack off and pointlessly tinker with Emacs while hiding from my boss in the bathroom.
>>
>>
>>
>>
>>108176950
to me it seems emacs is simply the expression of mr Richard Stallman's desire to return to his mother's womb, and to create a world wholly free of any kind of outside influence or disturbance. It is essentially a fantasy land for the autistic, where they may make things 10x more difficult for themselves, but at least it is the burden they subject themselves to and not the one society tries to force upon them.
This mindset is very common amongst people who use the computer excessively, but it will only harm you and make you unhappy so I recommend you turn away from it.
>>
>>
>>
>>
>>
>>108172010
C-a C-2 M-d C-d or I find this one easier C-a M-2 M-d C-d
Counting words sucks though. Making repetition so easy might have been great 50 years ago on a slow ass remote session but these days its just easier and faster to repeat as needed.
C-a M-d M-d C-d
Or if its a bit further along the line these will scale
C-a C-s f C-b C-w
C-a C-' f C-w
with avy-goto-char bound to C-'
>>
>countless videos on JewTube about some ebin Linux hack to do [completely trivial thing] but IN THE TERMINAL
I do not understand the point of these things. If you just spent even a small amount of time on Emacs, they could have all of these stupid CLI tools without leaving Emacs, except they could also do much more on top of that, and they could do it while writing code which is pleasant to read and write instead of ugly shell scripts. That one line in the Luke Smith meme about this is completely factual except it applies to nearly every idiot posting their Linux CLI tools online.
>>
File: OHNNOOONOOOOOOOO.png (38.7 KB)
38.7 KB PNG
OH NOO how do we respond lisp bros?
>>
>>
File: 1770163647319091.gif (820.2 KB)
820.2 KB GIF
>>108178955
>"Most amazing, interesting and brilliant people that I know"
>Literal turbo midwit in the Bannon interview
What's the real reason they kept stroking his ego? Is it because they wanted clout with him? Because he's a fellow member of the tribe? Because they know he's RothschiId connected? All three?
>>
>>
>>
>>
>>
>>
>>
>>108179353
Depending on how you start emacs, it may have different environment variables than you think. Clicking an icon to start emacs versus starting it from within a shell session can yield different behaviors due to differences in environment.
https://emacs.stackexchange.com/questions/73664/how-to-give-emacs-star ted-by-icon-click-the-same-environm ent-as-emacs-started-fr/73665#73665
Open up `M-x ielm` and do:(getenv "PATH")
;; The next variable may also be of interest.
exec-path
>>
>>
>>
>>
>>108174134
>>108172298
Yeah, I've got which-key-mode enabled. Are there any other modes(?) you recommend enabling?
>>108176563
I'd do 0d2w but yeah
>>108176371
Could I also record a macro?
>>108177864
>C-a C-s f C-b C-w
Whoa, that's powerful.
>>
>>108171705
calc-currency is great. I have a minor fork of it that can be installed via use-package. Here's the diff.
https://github.com/johnhamelink/calc-currency/compare/master...g-gunda m:calc-currency:master
Installation:(use-package calc-currency
:vc (:url "https://github.com/g-gundam/calc-currency" :branch "master" :rev "newest")
:config
(add-hook 'calc-start-hook #'calc-currency-load))
>>
>>
Day 2. Adding on to >>108180288. Some thoughts:
- Switching between windows is a pain. ace-window looks to be good alternative?
- C-x l and C-x m feel like wasted real estate. Moreover, I wish commands were hierarchically organized: something like C-x b -> all buffer commands.
- I need to learn (e)Lisp
>>
>>
>>108180288
>Are there any other modes(?) you recommend enabling?
column-number-mode
This puts the column number of the cursor in your mode line.
winner-mode
If you ever run something that totally messes up your window layout and you want to go back to the way it was just before, hit `C-c <left>`. You can also go forward with `C-c <right>`.
electric-pair-mode
When you type characters like (, [, or { it'll automatically type the closing pair }, ], or ). Most of the time it works fine. However, every once in a while, there's a mode where this doesn't work well in often because it's trying to do the same thing on its own. In that situation, you can run `M-x electric-pair-local-mode` to toggle it locally for just the buffer you're in at the moment.
>>
>>108180946
>- Switching between windows is a pain. ace-window looks to be good alternative?
I use windmove. with C-S-[ARROWS] to move. This conflicts with ubuntu and orgmode so I had to configure some stuff.
>>108180946
>c-x i
Just c-f the file.
>c-x m
here that does nothing.
>need to learn elisp
same
>>
File: 1770851981702761.gif (3.7 MB)
3.7 MB GIF
>>108179339
>Ok the autism bug has me. I will try to make a simple scheme subset -> PIC assembly compiler.
You might be interested in this from a previous bread (scheme subset -> arm)(define (compile term table reg)
(match term
[(? number? n)
(let ([a (reg)])
(format #t "mov r~a, #~a~%" a n)
a)]
[(? symbol? s)
(let ([a (reg)])
(format #t "mov r~a, r~a~%" a (cdr (assoc s table)))
a)]
[('+ left right)
(let ([a (compile left table reg)]
[b (compile right table reg)])
(format #t "add r~a, r~a, r~a~%" b b a)
b)]
[('let binds scope)
(let* ([syms (map car binds)]
[vals (map cdr binds)]
[n (length binds)]
[regs (iota n)])
(format #t "~:{mov r~a, #~a~%~}" (map cons regs vals))
(set! reg (counter (- n 1)))
(compile scope (append (map cons syms regs) table) reg))]))
(define-syntax test
(syntax-rules ()
[(test program)
(compile 'program '() (counter 0))]))(test
(+ 2 (+ 3 5)))
mov r1, #5
mov r2, #3
add r1, r1, r2
mov r3, #2
add r1, r1, r3(test
(let ([a 2]
[b 3])
(+ a (+ b 5))))
mov r0, #2
mov r1, #3
mov r2, #5
mov r3, r1
add r2, r2, r3
mov r4, r0
add r2, r2, r4
>>
>>108180946
>I wish commands were hierarchically organized: something like C-x b -> all buffer commands
that's a good use case for keymaps(defvar-keymap my-buffer-map
"s" #'switch-to-buffer
"o" #'mode-line-other-buffer
"b" #'bury-buffer
"k" #'kill-current-buffer)
(keymap-global-set "C-c b" my-buffer-map)
>>
>>108180288
>Are there any other modes(?) you recommend enabling?;; Remember where you were in the file the next time you open it.
(save-place-mode 1)
;; If something outside of emacs changes a file you're editing,
;; update the emacs buffer.
(global-auto-revert-mode 1)
>>
>>108180288
>Could I also record a macro?
You could record a macro. It's probably something I should do more often.
<f3> C-a M-d M-d C-d <f4>
And then you can execute it again with `C-x e`. I think there's a way to give names to macros too. `C-x e` just executes the last macro you defined.
>>
>>108185094
>And then you can execute it again with `C-x e`.
F4
>I think there's a way to give names to macros too.
C-x C-k n and C-x C-k b
If you want to save it between sessions you'll have to name it and then paste the definition into your init.el with
M-x insert-kbd-macro RET
>>
>>108174467
for me it's
https://github.com/ebeem/guile-swayer
>>
>>
File: saw.jpg (891.6 KB)
891.6 KB JPG
>>108174467
>>108187142
saw sawfish
http://sawfish.tuxfamily.org
>>
>>108180946
>ace-window looks to be good alternative
I'm a fan of ace-window. I have it bound to M-o as its README recommends.
https://github.com/abo-abo/ace-window
>>
>>
>>
>>
>>
>>
I've been using emacs so far only in evil-mode, and it's been great, but it got
me thinking about the potential viability of the the vanilla keybinds. What would be
the benefits of trying to learn them, and how popular are they anyway?
>>
File: 2024249483739992246.00:00:48.717.jpg (188.3 KB)
188.3 KB JPG
Novel use of Clojure for spreadsheet-like functionality
https://x.com/PetrusTheron/status/2024249483739992246
>>
File: 1771601367540.jpg (216.5 KB)
216.5 KB JPG
Anyone use this? Anything interesting on there or is it just a meme?
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
File: Bending Emacs Episode 11_ winpulse - 0-4-53.jpg (313.1 KB)
313.1 KB JPG
Bending Emacs Episode 11: winpulse
https://www.youtube.com/watch?v=qaqpcjJ1u6I
>>
>>
>>
>>
>>108179005
A bunch of academics sucked up to Epstein in order to get funds for their shit, and Epstein purposely sorrounded himself with both rich and smart people so he could keep the rape machine going. There might be people that only saw the money side of things without much of the eating human flesh side, but then again who knows.
>>
A newcomers-presets theme has been added to Emacs.
>*** New theme 'newcomers-presets'
>This new theme configures user options and minor modes that might interest new users, but would otherwise be too invasive to enable by default. Recall that an Emacs theme is a generic collection of settings, that doesn't have to affect the appearance. See the Info node "(emacs) Newcomers Theme" for more information.
https://cgit.git.savannah.gnu.org/cgit/emacs.git/commit/?id=ed030e7
>>
>>
>>
>>
File: Screenshot_20260221-214736.Termux.png (63.6 KB)
63.6 KB PNG
babashka now has a better repl with auto-complete built-in
>>
>>
>>108206733
>How different is eLisp to Common Lisp (SBCL)?
They're superficially similar, but they feel different.
- CL has namespaces while Elisp does not.
- I find function and variable discovery a lot easier in Elisp than in CL due to how much Emacs can help me with Elisp.
- The documentation on the CL side is not as thorough as Elisp. If you're expecting almost every function and global variable to have a docstring like in Elisp, you will be disappointed.
- The CL REPL via Sly/SLIME is really nice though especially when working with multithreaded code.
>If I write some basic Common Lisp programs will they translate one-to-one
This will only hold true for really simple things.
>>
>>
File: 2026-fire-horse.png (1.4 MB)
1.4 MB PNG
>>108206733
>If I write some basic Common Lisp programs will they translate one-to-one
Here's something that'll work in both Common Lisp and Emacs Lisp.(defvar cz-animals
'(rat
ox
tiger
rabbit
dragon
snake
horse
goat
monkey
rooster
dog
pig)
"These are the 12 animals of the Chinese Zodiac.")
(defun cz-animal (year)
"Return Chinese Zodiac animal for YEAR."
(let* ((offset (mod (- year 4) 12)))
(nth offset cz-animals)))
(defvar cz-elements
'(wood
fire
earth
metal
water)
"These are the 5 elements of the Chinese Zodiac.")
(defun cz-element (year)
"Return Chinese Zodiac element for YEAR."
(let* ((offset (floor (mod (- year 4) 10) 2)))
(nth offset cz-elements)))
(defun cz-sign (year)
"Return the Chinse Zodiac element and animal sign for the given YEAR."
(list (cz-element year) (cz-animal year)))
Example Usage:(cz-sign 2026)
;; (FIRE HORSE)
>>
>>108195841
>http://l1sp.org/ - a redirect service for Common Lisp documentation
Has anyone created any interactive Elisp functions for querying l1sp.org from Emacs?
>>
File: Screenshot_20260222-095852.Brave.png (136.6 KB)
136.6 KB PNG
the absolute state of clojure
https://clojure.org/news/2026/02/18/state-of-clojure-2025
>>
File: past.png (40.3 KB)
40.3 KB PNG
>>108210213
Respect for keeping track of this for so long.
>>
TIL how to setup a repeating timer using SBCL.(ql:quickload :local-timer)
(defparameter timestamper
(sb-ext:make-timer
(lambda () (format t "~a~%" (local-time:now)))
:thread t))
(sb-ext:schedule-timer timestamper 2 :repeat-interval 5)
(sb-ext:unschedule-timer timestamper)
>>
>>
>>108210455
There's also https://github.com/ciel-lang/cl-cron which just uses bordeaux-threads under the hood
>>
>>
File: genius-of-lisp.front+back.jpg (309.5 KB)
309.5 KB JPG
A new lisp book was released a few days ago.
https://berksoft.ca/gol/
>>
>>
File: s-l1600.jpg (408.2 KB)
408.2 KB JPG
>>108214463
That's pretty cool, but is there an adapter that makes this usable on contemporary hardware?
>>
File: s-l960.jpg (153 KB)
153 KB JPG
>>108214463
It looks really clean.
>>
>>
>>
>>
File: batman.jpg (45.1 KB)
45.1 KB JPG
>>108159024
how is a program in lisp intended to be deployed? am i supposed to enter repl if i ever want to use something i write?
>>
>>
>>108214478
Seller addressed this:
>Symbolics keyboards can be converted to be USB compatible using a Teensy (there's Github for this). To that end, you'll be replacing the cable. But I would like to point out that the original cable (as visible in the photos) has a securing tab on the male end. This is easily snapped off. But this one is mint and intact, as you can see, A little thing, but useful if you are one of the elite who actually has a Symbolics computer.
>>
>>
>>108215438
https://www.gnu.org/software/guile/manual/html_node/Scripting-Examples .html
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>108215885
Abominable Intelligence
https://www.youtube.com/watch?v=BrJRW4B_qF8
>>
>>
File: an-avid-what.jpg (15.1 KB)
15.1 KB JPG
>>108214435
I wonder what it's supposed to say. I'm guessing something like:
An avid E____ the late 1980s
>>
>>
File: genius-review.png (229.8 KB)
229.8 KB PNG
>>108214435
https://toobnix.org/w/iAwuN4MGuaiHTDDCibhb21
>>
Should I learn how to use GNU parallel or should I write a CL wrapper around lparallel that does something similar but is easier for me to understand. I want to run a lot of very similar shell commands in parallel with a user-defined level of concurrency. In my case, I don't even need to collect the results. The side effects of the shell commands are good enough.
>>
>>
>>108224880
Do you remember your first sip of beer? To a lot of kids, it's disgustingly bitter. However, as you get older, you get used to the bitterness and even start to appreciate it. Lisp is kind of like that.
>>
>>
>>
>>108225329
No. It's fucking ass. It's the same identical macaroni noodles embedded in every sequence of text you could possibly imagine. Sometimes it's "cdr" and sometimes it's "unwind-backwards-protect-without-precursor-default".
It looks like a 4 dimensional shit that a DMT alien took.
>>
>>
>>108226254
I've been writing quite a bit of simple multi-threaded CL code the last few days. The lparallel library has been working very well for me.
https://github.com/sharplispers/lparallel/
https://sharplispers.github.io/lparallel/
I was the one who posted:
>>108223931
I ended up writing custom code to run in the REPL to solve my immediate problems, but I kept getting this nagging feeling that there may be a generally useful tool I could derive from the code that I wrote. I had 200k+ HEAD and GET requests I had to make, and with lparallel I was able to do them in parallel which sped things up considerably.
>>
>>108226303
> simple multi-threaded CL
I used to love threads, when Solaris came out with lwps, and on OS/2. I was all over that shit.
After a few decades, I hardly ever touch them and there is nothing I need them for that can’t be done in multiple, minimally communicating processes.
At worst, in C, just use openmp.
>>
>>
>>
>>
>>108227843
> rust in freebsd
They don’t. They’re adding support for it though. The main reason lisp isn’t supported is because processors are not evolved Knight machines from the original implementations.
NetBSD is in a better position to add lisp support because they already have Lua support in the kernel. Some other hard-core systems have been implemented in lisp for years, except people are unaware, such as the checkpoint firewall-1 rulebase since the ‘90’s. Even Windows NT has Prolog in the kernel network initialization.
If you want to write kernel modules in a lisp just use chicken which emits C code. This is all that needs to be done in rust, too (rust2c transliterator), but the rust goals are antitechnical in nature.
>>
I am now a week into my Emacs journey. The things you can do with S-expressions and rings...
I also want to build my own keymap using Space as a leader key. I recognize Spacemacs and Doom have this built-in by default, but I'll gain a lot more experience doing it this way. Doom's module system / spacemacs' layers appear alluring though. Maybe I'll attempt to implement such a system myself as an exercise. It's all in eLisp, after all.
>>
>>
>>
>>
>>
>>108230171
how am i supposed to work on this distro then? spend 5 months being an emacs tinker tranny? i have work to do, and that work REQUIRES VSCode
>>108230308
yes i do expect to be able to easily install the most popular open source code editor on my workstation
>>
>>108226254
Racket added parallel threads last year.
https://blog.racket-lang.org/2025/11/parallel-threads.html
>>
>>
>>
>>
>>108230870
>>108231628
return to windiandows asap vsircode saar
>>
>>
>>108231674
are you pretending to be retarded? or do you unironically think i should use obscure tools when i have work to do?
>>108231742
i was just trying it out, i will return to my comfy Fedora Workstation install where i can add the VSCode repo and dnf install it, thanks
>>108231874
i tried(needed it to get the fucking wifi working on my T480 lmao) and nonguix doesnt have vscode, only vscodium and afaik that means i dont have access to remote tools and the extension marketplace.
>>
>>
>>108231989
> use obscure tools when i have work to do
The only time I ”needed” to use vs code was to deploy some obscure azure shit. Which is an absolute shit platform.
Eventually i figured out what it was doing and deployed it as part of a standard pro-grade production roll procedure like everything else.
vs code is a toy for individual know-nothings living in their parent’s basement… these are the only ones getting replaced by AI. Good riddance.
>>
File: soyciety.jpg (186 KB)
186 KB JPG
>>108231989
>that means i dont have access to remote tools and the extension marketplace
So now you know why VSCode isn't FOSS. Fell For The Microꜱoyft™ Propaganda Award.
Anyway, looks like VSCode is packaged in this guix channel:
https://toys.whereis.social/?search=vscode
https://codeberg.org/gofranz/panther
>>
File: file.png (275.4 KB)
275.4 KB PNG
sorry, long ass post
tl;wr: what do i need to learn to make or edit themes, i know some very basic lisp concepts and a bit about REPL but realistically i'm a super beginner beyond any basic nesting and such
okay so i still need to check out the resources in the OP post, but what would i need to learn about emacs/emacs lisp to go about parsing and changing what's what in this theme file? i know it's mostly colors but i'm a little lost trying to determine what color corresponds to what when looking through it, as well as why the ansi-color-names-vector variable seems to only show up once (unless it's a variable known by emacs)
https://github.com/snackon/Witchmacs/blob/master/Witchmacs-theme.el
it should be noted that the linked theme file doesn't work with later emacs versions (in my experience, 30.1), and at some point last year i made the necessary edits to have it work as-is but didn't go further. it works with 30.1 and 30.2, if anyone wants it i can pastebin it
some backstory though, a long time ago i saw someone make a derivative macs theme and post a screenshot in a thread, then other people linked to the witchmacs repo
i've been planning to better learn emacs since i want to try using auctex among other tools (since i just kinda like emacs and the ability to use/practice vim modes with evil seems useful for when i'm working on a linux machine that doesn't have emacs for work-related stuff), but i'm absolutely more of a cirno guy and generally want to customize my editor experience to look the way i like
sorry if this post is mildly incoherent, hella brainfog today, yell at me if anything i said sounds retarded and i'll clarify
>>
>>108232069
so every update i will need to download the binary and patch it? instead of just having it in a channel? lol
>>108232074
wow so contrarian!
https://survey.stackoverflow.co/2025/technology#most-popular-technolog ies-dev-envs-prof
>>108232217
why isnt vscodium on the guix channel then?
id rather not rely on some random guy's channel, but that's a good starting point. thanks for the actually useful response.
>>
>>108232305
>what would i need to learn about emacs/emacs lisp to go about parsing and changing what's what in this theme file?
you don't need to know any elisp really, all you need is to be familiar with the semantics of face attributes:
https://www.gnu.org/software/emacs/manual/html_node/elisp/Defining-Fac es.html
https://www.gnu.org/software/emacs/manual/html_node/elisp/Face-Attribu tes.html
if you only use graphical emacs or emacs inside a terminal that supports a lot of colors, you can make that theme file a lot more readable by deleting all the specs for low-color displays. so'(font-lock-comment-delimiter-face ((((class color) (min-colors 257)) (:foreground "#75715E")) (((class color) (min-colors 89)) (:foreground "#8B8878"))))
would become'(font-lock-comment-delimiter-face ((t (:foreground "#75715E"))))
>>
>>
>>
File: XahTV_in_metaverse.png (591.6 KB)
591.6 KB PNG
>>108233297
fantastic emacsacha news
>>
File: nice-of-her.png (69.8 KB)
69.8 KB PNG
>>108234676
She does regularly include Xah.
>>
>>
>>
>>108196255
Meh, keybindings are keybindings. At the end of the day, any approach can take you from point a to point b. I personally switched because a lot of emacs documentation assumes the default scheme, and it makes it possible to find your way on a vanilla emacs session in a foreign environment (although the built-in viper mode would probably get you through just as easily). It's helpful to know both anyway, since many programs support a subset of one or the other.
>>
>>
>>
>>
>>108238656
Just checked. Its interpreted language is very limited. It's better to compare it to Vimscript than Lisp.
>https://www.filibeto.org/unix/tru64/lib/ossc/doc/nedit-HTML-Doc-5.1.1 /documentation/5.1/Macro_Language.h tm
>NEdit's macro language is a simple interpreter with integer arithmetic, dynamic strings, and C-style looping constructs
>The NEdit macro language recognizes only two data types, dynamic character strings, and integer values
And the original homepage http://nedit.org/ is also dead.
>>
>>
>>
File: nedit-origin-story.png (77.2 KB)
77.2 KB PNG
>>108239007
https://web.archive.org/web/20060926213825/http://nedit.gmxhome.de/his tory.html
>>
>>
>>108230167
Because.
>https://old.reddit.com/r/GUIX/comments/yp0gdi/latest_ghc_release_for_ guile_is_from_two_years_ago/
>Ghc changed it's built system, and we have been unable to built latest versions from source on guix. There is a wip-haskell branch you can check out. If you can built it from source successfully, please contribute.
I personally find it weird, since Nix can compile latest GHC version from source, why can't Guix?
>>
>>
>>
>>
>>108228523
You can bind keymaps to keys, its really quite trivial.
The Doom/Spacemacs implementation is horribly bloated, as are all the packages that try to tackle this "problem" for users that don't understand Emacs/ELisp.
>>
So what is the general practice for dealing with C enums in Common Lisp when working with C libs?
Just defconstant globals or use the cffi:defcenum thing? I tried the latter but getting the values out in general is not very pleasant especially if said enums are bitmasks.
>>
https://gitlab.common-lisp.net/fset/fset/-/wikis/FSet/Intro
>The ultimate goal of FSet is an ambitious one: to be the default choice for collection types in
Common Lisp. By "default", I mean the one you can be in the habit of using most of the time, except
when you know you need something more specialized.
>>
>>
>>108239031
That article says some strange things, we had lesstif, for example.
It’s also probably pretty rare to need floating point/mp numbers in an editor extension languages
Of course, vs code works on linux if that’s what you were looking for.
>>
>>
TIL of the existence of the delq function (via prot)
https://github.com/protesilaos/fontaine/issues/22#issuecomment-3961292 211 (thread-last (x-family-fonts)
(mapcar
(lambda (font)
(when-let* ((family (format "%s" (aref font 0))))
family)))
(delq nil)
(delete-dups))
>>
>>
>>
>>
>>108247577
inferior version of https://srfi.schemers.org/srfi-197/srfi-197.html. this is 10x more useful than clojures threading macros
>>
>>108247126
The actual way to do that is not to use delq and get rid of empty cons-cells, but us mapcan and only construct the cons-cells you need.
>>108225763
I am curious why you are interested in Guix (as opposed to Nix), but have no interest in Emacs.
>>108215438
If you have a Lisp interpreter on the system, you can usually load a Lisp file from the command line, just like with other languages like Python or Perl. As >>108215505 said, compiler implementations like SBCL allow for the loaded image to be dumped into an executable.
>>108206161
That's exactly the point. The newcomer-preset theme is supposed to be easy to discover+enable and provide a way to collect a set of options that new users could find useful, without disturbing existing users.
>>
>>
>>
>>
>>108250901
>I am curious why you are interested in Guix (as opposed to Nix), but have no interest in Emacs
I love Lisp(specifically Clojure and SBCL). I want to properly learn them and embrace them. And I definitely have an interest in Emacs, but there's the whole learning curve thing which I'm slowly working on, however the big issue is that the bulk of my work depends on some niche domain-specific tools that have an amazing integration to VSCode via extensions. I'd rather not learn Emacs AND simultaneously build/maintain wrappers around the CLI tooling I need.
>>
>>
This makes the old perl programmer in me happy.
https://quickdocs.org/perlre
https://quickdocs.org/cl-interpol
>>
File: HCJxs-1aIAAqOU0.jpg (2.2 MB)
2.2 MB JPG
What do you think of long time Emacs users who haven't learned Elisp?
(unrelated pic from: https://nitter.net/Nitto_Photo/status/2027307811710144741/photo/1
>>
>>
File: kitty-graphics.jpg (202.8 KB)
202.8 KB JPG
terminal emacs gets graphics via the kitty protocol
https://github.com/cashmeredev/kitty-graphics.el
https://cashmere.rs/blog/kitty-graphics-el-images-in-terminal-emacs/
It's a little buggy, but it mostly works. I tried it out with wezterm.
>>
>>
File: is_an_horse_a_athlete.jpg (339.2 KB)
339.2 KB JPG
Is A Elixir an Lisp?
>>
File: how-to-lisp.png (275.5 KB)
275.5 KB PNG
>>108256711
But lisp is easy
>>
>>
File: 1770230467061095.jpg (47.2 KB)
47.2 KB JPG
Lisp is the original hacker's language and the whole "The Right Thing™" stuff was always post-hoc copium to rationalize the downfall of Lisp Machines.
The author of the original essay wrote at least two follow-ups where he basically admitted this.
What made Lisp machines was the software, not the hardware.
A modern x86-based processor can run Lisp code orders of magnitude faster than dedicated hardware ever could.
There has never been more availability of FOSS Lisp implementations, software and libraries in history than what we have now.
Until Lispers realize these facts, stop whining and start actually writing code, Lisp is doomed to obscurity.
>>
>>
>>
File: ponko_SICP.png (1.5 MB)
1.5 MB PNG
>>108261289
Lisp Is So Powerful
>>
>>108261575λ guix weather torbrowser
computing 1 package derivations for x86_64-linux...
looking for 1 store items on https://bordeaux-us-east-mirror.cbaines.net...
https://bordeaux-us-east-mirror.cbaines.net
100.0% substitutes available (1 out of 1)
101.4 MiB of nars (compressed)
388.7 MiB on disk (uncompressed)
0.245 seconds per request (0.2 seconds in total)
4.1 requests per second
(continuous integration information unavailable)
looking for 1 store items on https://bordeaux.guix.gnu.org...
https://bordeaux.guix.gnu.org
100.0% substitutes available (1 out of 1)
101.4 MiB of nars (compressed)
388.7 MiB on disk (uncompressed)
0.445 seconds per request (0.4 seconds in total)
2.2 requests per second
(continuous integration information unavailable)
looking for 1 store items on https://ci.guix.gnu.org...
https://ci.guix.gnu.org
100.0% substitutes available (1 out of 1)
at least 212.7 MiB of nars (compressed)
388.7 MiB on disk (uncompressed)
0.682 seconds per request (0.7 seconds in total)
1.5 requests per second
...
it seems like it's available now. was it updated recently?
>>
>>
>>
>>
>>108261289
>What made Lisp machines was the software, not the hardware.
>therefore the right thing was a larp
?? The point of the hardware was to run lisp fast (for the time). The point of the lisp machine was to run the software.
>>
>>
>>
>>
>>108267963
In that case, why are you comparing Rust with Lisp? What makes you want to use Rust? I actually switched from Rust to Lisp but that's not very common. Lisp is closer to languages like C#, D, Go, etc. whereas Rust is more comparable to C++.
In any case Lisp has a ton of stuff over Rust, so maybe easier is to say what Rust has over Lisp. Primarily, no garbage collector/better naive performance, static typing, and a decent package manager and package ecosystem. Lisp wins pretty much everywhere else. Incomparably better macro system, actual tooling (i.e. amazing profiler tools, my larger programs I've ported over from Rust actually run better on CL due to the profiling/disassembly feedback loop), best OOP model (CLOS >>> traits), no annoying borrow checker, runtime compilation and interactive programming, homoiconicity, live introspection of running program state, faster compiler, etc. I'd say as a solo dev I work twice as fast in CL than I did back in Rust.
>>
>>108259622
>Is A Elixir an Lisp?
No, but LFE is.
https://lfe.io (Lisp Flavoured Erlang Website)
https://github.com/lfe/lfe
https://cnbbooks.github.io/lfe-tutorial/ (The LFE Tutorial)
https://www.youtube.com/watch?v=BvCBTpnlqs8 (Wherefore art thou LFE? (Why LFE?))
>>
>>
>>
File: B0B59F00-AE0A-40E7-A0F6-16D812B6C8A5.jpg (107 KB)
107 KB JPG
>>108272525
> hurd has syslogd
Dead on arrival, infiltrated by idiots
>>
>>
File: LFE_(Lisp_Flavored_Erlang)_Logo.png (296.2 KB)
296.2 KB PNG
>>108269290
*sip*
>>
>>
File: 1772392164610.jpg (127.3 KB)
127.3 KB JPG
>>
>>
>>108250859
>this is 10x more useful than clojures threading macros
chain is literally just clojure's as-> threading macro, which I never use because it makes the code more confusing, not less
https://clojuredocs.org/clojure.core/as-%3E
>>
File: file.png (111.2 KB)
111.2 KB PNG
Checking something related to autocompletion of let/let* scoped variables in emacs.
Is there no way (out of the box) to provide the value of a candidate from a let assignment in the autocompletion list?
Let's say I have(let ((x-var 10)
(y-var 20)
(my-variable "hello"))
(message "x is %d" x-var)
(message "y is %d" y-var)
(message "my-variable is %s" my-variable))
>imagine " | " is the cursor
and as I'm typing 'x-v|' I get x-var as a candidate and it shows '20' as it's value. Of course this is not useful in this simple example, but imagine you're deep in a sexp with multiple let/let* assignments and don't want to be jumping back and forth to see the value of each one of the assignments.
>>
File: bathorymacs.png (125.4 KB)
125.4 KB PNG
Made another new splash image.
>>
File: show-let-value.webm (872.8 KB)
872.8 KB WEBM
>>108277328
Nevermind had to roll my own and advice elisp-completion-at-point.
>>
>>
>>
>>
>>
>>
>>
>>108280572
eglot, but the speed increase depends on the LSP server, clang is not that different but dartlsp was basically unusable for me (was - as in last time I tried was about 3 years ago). I even tried all of the bridges and all the other things to speed up lsp-mode but nothing helped.
Not sure how up to date this is as I actually like eglot more now so I didn't bother testing since I switched
>>
>>108277528
https://nitter.net/cirnosad/status/2028633842840682532
>>
>>