[a / b / c / d / e / f / g / gif / h / hr / k / m / o / p / r / s / t / u / v / vg / vm / vmg / vr / vrpg / vst / w / wg] [i / ic] [r9k / s4s / vip] [cm / hm / lgbt / y] [3 / aco / adv / an / bant / biz / cgl / ck / co / diy / fa / fit / gd / hc / his / int / jp / lit / mlp / mu / n / news / out / po / pol / pw / qst / sci / soc / sp / tg / toy / trv / tv / vp / vt / wsg / wsr / x / xs] [Settings] [Search] [Mobile] [Home]
Board
Settings Mobile Home
/g/ - Technology


Thread archived.
You cannot reply anymore.


[Advertise on 4chan]


File: emacs.jpg (258 KB, 661x480)
258 KB
258 KB JPG
>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

>Emacs Distros
https://spacemacs.org
https://doomemacs.org

>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://lem-project.github.io
https://stumpwm.github.io
https://nyxt-browser.com
https://awesome-cl.com

>Scheme
https://scheme.org
https://try.scheme.org
https://get.scheme.org
https://books.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://calva.io
https://clojure.land
https://www.clojure-toolbox.com
https://mooc.fi/courses/2014/clojure
https://clojure.org/community/resources

>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

(setq *prev-bread* >>106593472)
>>
how long have you been coding the lisp..? It feels like yesterday I cracked open SICP; I'm so old now. All this time gone.
>>
CCL!
>>
File: emac.png (1.02 MB, 1920x1080)
1.02 MB
1.02 MB PNG
emac
http://xahlee.info/emacs/emacs_fun_index.html
>>
>>106663779
If Elisp counts, I have a little over 10 years of casual hacking.
>>
What keyboard do Emacs wizards use?
>>
Start using Gnus anon: https://www.youtube.com/watch?v=I1H1GuPvhCc
>>
>>106663813
Where's Meta?
>>
> shovels bits and bytes into code forge furnace
> smelts codes
>>
emaxx
>>
>>106663838
Don't inhale the resulting fumes
>>
>>106663879
you will get memory leak xD
>>
File: EMAC.png (130 KB, 1139x698)
130 KB
130 KB PNG
>>106663791
fantastic
https://www.youtube.com/watch?v=FiVu7Lyfh9g
>>
after seeing how late and not really fully integrated LSP is into neovim, and also seeing how weird it is that sometimes people use lua and sometimes people use vimscript, but nobody ever uses "the right tool for the job" as is supposedly the advantage, ONLY those two, I am curious about emacs. why is it still just emacs and not emacs->emacs-improved->neoemacs? how were they able to just keep the same project over decades? does this speak to its modular and monolithic nature? vimscript was a bad idea but it wasnt too bad because you kind of WANT something messy and quick for its use cases. if neovim is going to make me learn a real language i'd rather it not be lua. so why not elisp?
all the fancy LSP shit looks like it's relatively mature in emacs, which is shocking, but I can believe it.
also neovim IS trying to be an all-in-one tool, so why not just use something that's always worked on that model?
>>
>>106663831
I think it's where ESC usually is
>>
>>106664342
Emacs is just being good at what it is. Neovagina is wannabe emacs-like.
>>
File: 1445489620966.jpg (53 KB, 500x500)
53 KB
53 KB JPG
newfag here
can you rebind every keybind?
and, is there either an example init.el or .emacs with every single keybind and their vanilla default in it?
surely someone else learns that way
>>
>>106664416
>wannabe emacs-like
yes tldr is thats what i'm getting a sense of. but i DONT want to relearn new keybindings, not even insert mode ones. does evil still have vim insert mode bindings? actually idk, im not asking anyones permission to try out emacs, I just dont want to try it and dislike it. if im even going to try it I have to be sold on it already
>>
>>106664552
emacs keybindings are actually better than vim ones. once I accepted that, I became free.
>>
>>106663787
>CCL!

CCL good
>>
>>106664498
I don't think there is, but you can always do a combination of C-h m and C-h k.
Though I do hate that C-h m doesn't just give you the bindings but appends a bunch of documentation from each active mode.
>>
Is there any actual advantage to properly learning Emacs or Vim keybindings beyond the basics in the modern day? I've been using Emacs alternating between CUA and Emacs keybindings, learning on the fly from the visual menus. Should I just go straight into Xah Fly Keys. I'm using Dvorak which I heard is decent for either but it's Programmer's Dvorak so I'm not sure if anyone has used it with those.
>>106664342
Can't you use Fennel with Neovim? If you just want a Lisp language that is.
>>106664552
There's CUA mode which is just the basic desktop keybindings (Ctrl+C, Ctrl+V and so on). So you don't have to learn much.
>>
>>106665813
and don't forget about [some prefix]-? to show all keys in prefix
e.g. C-x ? for all bindings starting with C-x
>>
>>106664342
Emacs is at core an elisp interpreter and a few other things. All/most the other functionalities are elisp packages. There is a tremendous amount of work put into them.

There were some attempts to rewrite it in guile but none went that far, and I think the plan is just allow guile to be used with elisp.
>>
>>106663752
Use case?
>>
>>106662342
personally i prefer the original yellow font-lock-keyword-face, it stands out more

>>106663752
>>106663787
>>106665649
why should i use CCL over SBCL (or the other way around)?
>>
>>106664342
neovim's lsp integration is significantly better than anything emacs has
>>
hi, anyone using guix and some wayland desktop environment?

i just cannot type special characters from my language under wayland

the configuration
(keyboard-layout "pl")
just not works under wayland, on X11 works good
anyone had similar issue and how to fix that? i cannot find anything like it at r/guix
guix docs seem to not mention wayland keyboard-layout for wayland
>>
>>106666359
I will never forgive that Gnome faggot for this meme.
>>
>>106667863
Surprising since emacs people love tweaking shit.
>>
>>106668042
Those guys like tweaking shit too.
>>
>stealth neovim thread
>>
>>106667172
>personally i prefer the original yellow font-lock-keyword-face, it stands out more
I figured someone would. Thanks for taking a look, though. So much of this is catering to my personal preference. There are a lot of themes where a little change here and there makes a theme a lot more enjoyable for me, and I wondered if other people felt similarly.
>>
File: 1757124779506196.jpg (64 KB, 388x343)
64 KB
64 KB JPG
>>106663820
I'm too low iq to config gnus, it's the only part of emac that filtered me hard
>>
https://www.youtube.com/watch?v=tT4cPB4Ap5k
;; Exploring the Condition System of Common Lisp
(define-condition negative-number (error)
((text :initarg :text :reader negative-number-text)))

(defun factorial (n)
(restart-case
(cond ((< n 0) (error 'negative-number
:text "The factorial of a negative number doesn't exist."))
((= n 0) 1)
(t (* n (factorial (1- n)))))
(use-abs-value () (- (factorial (- n))))))

(defun main ()
(handler-bind ((negative-number
#'(lambda (c)
(declare (ignore c))
(invoke-restart 'use-abs-value))))
(format t "The factorial is ~A~%" (factorial -42))))
>>
>>106668092
>stealth anything people that like emacs or lisp may find interesting thread
>>
>>106668425
I need glasses or to fix something in my monitor. Every time I went over "gnus" I read "anus".
>>
>>106667997
what's your config? the keyboard-layout procedure is usually inside an xorg-configuration form. i'm guessing wayland doesn't automatically use this configuration, unless maybe if you're using GDM since it enables wayland by default and accepts an xorg-configuration.

if you're using sway, there's a home service that handles its configuration, including the keyboard layout
>>
>>106664342
I'm quite happy with Doom Emacs.

LSP support used to be horrible not long ago, but it's good now thanks to a better JSON library.
>>
>>106668038
literally who
>>
e-mac
>>
File: 1728879687096337.jpg (81 KB, 675x675)
81 KB
81 KB JPG
>>106669289
>press s
>does not do "substitute" command from Vim
>>
>>106671183
emac emca eamc eacm
ecma ecam meca meac
mace maec mcae mcea
aemc aecm amec amce
acem acme ceam cema
cmae cmea came caem
>>
File: 1738656143359166.jpg (33 KB, 500x500)
33 KB
33 KB JPG
>>106671227
ligma
>>
>>106671227
lisp aka ecmascript
>>
>>106671225
                            *s*
["x]s Delete [count] characters [into register x] and start
insert (s stands for Substitute). Synonym for "cl"
(not |linewise|).
>>
File: trying emacs.jpg (50 KB, 913x634)
50 KB
50 KB JPG
ok i installed doom emacs. it seems like it would be easier during this point in time to make a really sick neovim configuration with everything i want, but i'm getting hung up on a hunch that i'd REALLY like elisp. lately i've been writing mostly C. i just like the idea that emacs is an elisp VM (idk if that's technically right).

how can i enter evil command line mode from org mode? it seems like you're just in org mode often, and yeah i could get used to org movement and yeah i can do any vim command with :, but i cant do q: straight from there. and for example i want to be able to yank from the org document i have open and paste it into part of a vim command.
>>
>>106671718
press M-x (alt x) and look for the commands, if you're looking for a vim command binding just search "evil <action>", action being what you want to do.
You'll find that to yank shit you just need `y`, so you can go into visual mode, select what you want and press y, then to paste that you do `p`.
You can also do M-y (alt y) and see the kill ring, basically the clipboard with all the shit you've yanked or killed.
>>
>>106671718
>how can i enter evil command line mode from org mode?
Just hit ESC like you normally would?
>>
File: 1665897779082.jpg (35 KB, 442x482)
35 KB
35 KB JPG
>1 ;;; init.el --- Personal configuration
>file has no 'lexical-binding' directive on its first line
>1 ;;; -*- lexical-binding: t -*-
>The first line should be of the form: ";;; package --- Summary"
>>
>>106672318
anon-sama...
;;; init.el --- Personal configuration -*- lexical-binding: t -*-
>>
>>106672318
the function ‘foo’ might not be defined at runtime.
>>
File: 1747584491310144.jpg (96 KB, 1080x1380)
96 KB
96 KB JPG
Can someone explain the ability to easily write DSLs in Lisp to me?
I know what a DSL is. But I have a hard time finding small examples of DSLs written in Lisp or Scheme.
Can they be arbitrary when it comes to syntax? Or do they need to stay within the "lisp flavoured" confinements to remain easy to write? (obviously one could write a parser for any lang in lisp just like other language, I'm talking about what remains easy to do in lisp as it is often advertised)
>>
>>106672505
loop and format are the most obvious ones that are used constantly.
Understanding those is a good way to get the concept.
>>
File: 1546628520888.gif (1.54 MB, 230x230)
1.54 MB
1.54 MB GIF
>>106672358
My autism doesn't like it, but it's better than a warning I guess...
I looked at a bunch of init.el files of guys like prot and bbatsov for reference and I haven't seen it done like this.

>>106672418
the function 'foo' is not known to be defined
assignment to free variable 'bar'
>>
>>106672521
Ah thanks.
But I should've added that with examples I also mean easy to read or simple source code for the implementation, rather than just examples for the DSL itself.
>>
>>106672505
In a way all macros are DSLs, the reason it's so easy to make DSLs in lisp is that it's very easy to generate and run lisp code dynamically.
As for the style, obviously you can do everything from something indistinguishable from lisp to a completely different language.
The former should be obvious how to do, the latter is simply just recursing down a list of terms(can be symbols, characters, strings, etc...) building a tree of macro expansions until you return a full lisp function that then gets compiled and run.
So it's just normal parsers, but really really easy since you can directly use lisps own internal parser/compiler to translate into lisp code dynamically.
>>
>>106668873
basic
(operating-system
(kernel linux)
(firmware (list linux-firmware))
(locale-definitions (cons* (locale-definition (name "pl_PL.utf8") (source "pl_PL"))
%default-locale-definitions))
(keyboard-layout (keyboard-layout "pl" #:options '("ctrl:nocaps" "compose:menu")))
...


i also had a service as
(set-xorg-configuration (xorg-configuration (keyboard-layout keyboard-layout)))

but i removed it, on x11 polish letters work even without it
on wayland still not works, but i will try on sway
thanks
>>
File: Lisp.jpg (38 KB, 768x384)
38 KB
38 KB JPG
>>106672505

You should take a look at (Dr.) Racket, which makes extensive use of DSLs and takes it to the next level.

For a more theoretical approach there are some parts about DSLs in SICP IIRC, like evalutating prefix vs infix order and such stuff.

Remeber kids:
If it bleeds, it can be killed.
If it can be lexed, it can be evaluated.
>>
Would something like spinneret or hsx be considered a DSL?
https://github.com/ruricolist/spinneret
https://github.com/skyizwhite/hsx/
>>
Taking CS61A, and just now getting to homework 1, realizing it is not in the sicp dialect, but the simply scheme dialect. I wonder why I hadn't seen this mentioned in any of the guides or websites that mentioned it? Now I am re-examining if I should finish the SICP book (only done w/ chapter 1) with CS61A 2011 w/ Brian Harvey or MIT 6.001 (which surely uses the more primitive sicp dialect right?). Any thoughts?
>>
>>106670988
The gnome pedo
>>
>>106674398
>https://github.com/ruricolist/spinneret
Interesting
>>
>>106672505
DSLs can in principle be, as they are in forth, merely a vocabulary -- a number of names, such as functions, macros, and named constants, that directly deal with your program's domain as if you were speaking directly about it. CLOS is a DSL, with macros such as defclass that form a language for the domain of object oriented programming.
A specific class of DSL that I've done a few times is that of a command language. Simplest example is using #'read to read in data and dispatching them to underlying functions. This is more of a user-facing DSL made for command-line operations.
The point is that DSLs can be done in any way that you like, the loop macro being a very famous example of a non-lispy DSL that implements procedural programming techniques.
Whatever you do in lisp, the natural thing to do is to make a DSL for it... which is what you will most likely end up doing.
At least in my experience.
>>
>>106672521
>>106672793
>>106674375
>>106676316
thanks brehs
>>
File: 1737132101266492.webm (3.88 MB, 1280x720)
3.88 MB
3.88 MB WEBM
>>106672505
>But I have a hard time finding small examples of DSLs written in Lisp or Scheme.
Here you go guy, a small +/- calculator with let-bindings
(define (arith term table)
(match term
[(a '+ b)
(+ (arith a table) (arith b table))]
[(a '- b)
(- (arith a table) (arith b table))]
[('let a '= b c)
(arith c (cons (cons a b) table))]
[(? symbol? a)
(cdr (assoc a table))]
[(? number? a)
a]))

(arith
'(let a = 1
(let b = 2
(a + (b - 1))))
'())


>Can they be arbitrary when it comes to syntax? Or do they need to stay within the "lisp flavoured" confinements to remain easy to write
It's easier to pattern match on sexps like above but you can parse arbitrary strings/file ports similarly (or use a parser generator)
(match (string->list term)
[("l" "e" "t" . rest)
...])
...)
>>
File: 1752816728430329.gif (2.94 MB, 220x217)
2.94 MB
2.94 MB GIF
>>106676543
based and saved (code AND webm)
thanks
>>
USE
GNUS
>>
>>106676595
I'll watch that emacsconf talk. If it spoonfeeds me enough I'll give it a try
>>
File: 1751578630061754.jpg (66 KB, 500x489)
66 KB
66 KB JPG
>vim sux
funny guy
>>
>>106668425
>>106676613
it's very simple if you're using pop3, the config is basically this
(setq mail-sources '((pop :server …
:user …
:password …
:port …)))

for imap it's more complicated iirc, but i haven't tried it
>>
>>106677522
but I'm an imap guy :(
>>
File: 1747951093860798.png (1.39 MB, 1327x1363)
1.39 MB
1.39 MB PNG
How difficult is it to implement my own R7RS-small interpreter (or compiler)?
You see lots of "write your own lisp in under 10 lines of code!" guides but most don't implement any of the stuff that makes Lisp cool and don't adhere to any existing standards which gives the impression that the authors think parentheses are all it takes.
I know there is the Book Scheme from empty space but that describes implementing R4RS, and I can't estimate how much more tedious it would be to write one for R7RS.
>>
File: gnu_emacs_logo_bw.png (54 KB, 831x756)
54 KB
54 KB PNG
>"Alternative Emacs logo" discussion in emacs-devel
https://lists.gnu.org/archive/html/emacs-devel/2025-09/msg00090.html
https://codeberg.org/anapodic/artwork.git
Thoughts?
>>
>>106678201
I don't think it's bad design. But it gives me sports/soccer logo vibes.
Still an upgrade over the classic logo, which I'm not a big fan of. However I like the current version of the purple ball emacs more than this draft.
>>
>>106676613
Which one?????
>>
>>106678398
https://emacsconf.org/2025/talks/
https://emacsconf.org/2025/talks/gnus/
>>
>>106677522
>pop3
This shit's ancient.
>>
>>106678410
Wake me up when they're actually available to watch *goes back to sleep* zZzz
>>
>>106678201
cool
but this is the superior emac logo
http://xahlee.info/emacs/misc/emacs_overflowing_kitchen_sink_icon.html
>>
File: 1751091397666027.png (255 KB, 1000x709)
255 KB
255 KB PNG
>>106678201
>>106678619
>>
https://ecl.common-lisp.dev/posts/Web-ECL-Grant-Announcement.html


ECL got money to do webshit!
>>
>>106678392
the purple orb is nice but it doesn't look good on the splash screen imo, it's better as an icon
>>
>>106674398
yes. The Clojure equivalent is hiccup btw
https://medium.com/makimo-on-software-development/hiccup-lightning-tutorial-6494e477f3a5
>>
File: 1751761561834651.png (993 KB, 1000x1244)
993 KB
993 KB PNG
>>106677984
The tricky parts from revision 7 would probably be call/cc, let/rec-syntax, syntax-rules, define-syntax, import, and define-library, the rest is pretty similar to r5 and earlier
>>
File: emacsconf.png (107 KB, 1280x960)
107 KB
107 KB PNG
>>106678392
>purple ball emacs
This one?
>>
>>106664498
>>106665813
>>106665895
See 'C-c b' (describe-bindings) for currently active keybindings and 'PREFIX C-h' for showing keys in PREFIX. Also, see 'which-key-mode'
>>
>>106679778
For fun, I tried quicklisp out on ECL. Since I had already set it up for SBCL, all I had to do was create a ~/.eclrc with the following contents.
  #-quicklisp
(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp"
(user-homedir-pathname))))
(when (probe-file quicklisp-init)
(load quicklisp-init)))

Then I started up ECL and tried to:
(ql:quickload :spinneret)

While it worked, it's noticeably slower when compiling dependencies compared to SBCL.
>>
File: 1748528109571332.png (109 KB, 800x800)
109 KB
109 KB PNG
>>106680167
yes, but prefer the plain version
>>106679791
I don't disagree
>>
>>106676543
What's that webm from?
>>
Has anyone here ever played with this?
https://github.com/yibie/org-supertag
>>
Chat, what do we think about org-social?
https://github.com/tanrax/awesome-org-social/
>>
>>106683633
I like the idea of using org-mode as a UI for reading posts. It's particularly nice when posts contain src blocks or tables, because that really shows off org's strengths.

I'd like to see this idea applied to 4chan. Imagine an org-4chan that lets one read sites that support the 4chan API through org-mode.
https://github.com/4chan/4chan-API
>>
File: post.png (118 KB, 963x906)
118 KB
118 KB PNG
>>106683633
I came across an interesting idea when I reloaded my timeline for the first time in a while.
https://adsan.dev/social.org
>>
>>106680167
>>106680970
It's a snake. Emacs is the great Satan after all.
>>
>>106683633
might be interesting to explore how this works with
>hyperdrive.el
>onion web servers
>>
>>106684716
>hyperdrive
That's cool.
https://melpa.org/#/hyperdrive
https://git.sr.ht/~ushin/hyperdrive.el
https://ushin.org/
>>
>>106684716
How did you come across this?
>>
>>106684769
they were on emacsconf
https://emacsconf.org/2023/talks/hyperdrive/
https://emacsconf.org/2024/talks/hyperdrive/
>>
>>106680806
>my hand held rotary tool takes longer to crush a boulder than the industrial boulder crusher
>>
>>106665884
Keybinding doesn't really matter at all. Most terminal programs, and even some graphical ones, support Emacs-like and/or Vim-like bindings, so if you want to be able to transfer your muscle memory to other programs, you should go with the standard bindings or evil-mode. The most important thing is to pick something you like and stick with it. They all get the job done. Usually you spend more time thinking about your code rather than navigating it.
I went with regular Emacs bindings so that I'd never be in a situation where I'm trying to use an elisp program and my bindings aren't supported, but I don't think it's too much of an issue anyway. I also use dvorak. You may want to swap C-X with another key e.g. C-Z, but it's not too hard to hit anyway.
>>
File: 1733514239596388.jpg (116 KB, 1536x864)
116 KB
116 KB JPG
>reading gigamonkeys cl book again
>get to pathnames lib
>most implementations work more or less the same, just some minor differences
>clisp, however, goes out of its way to not fit in at all and be a pain
Every single time.
>>
File: 1609569391191.jpg (55 KB, 600x900)
55 KB
55 KB JPG
>CLISP
Just don't.
>>
>>106668425
>>106677642
(setq 
user-full-name "Doe John"
user-mail-address "john.doe@mail.ru"
send-mail-function 'smtpmail-send-it
smtpmail-smtp-server "smtp.gmail.com"
smtpmail-stream-type 'starttls ;; was nil (upgrade with STARTTLS if possible)
smtpmail-smtp-service 587
smtpmail-servers-requiring-authorization "*"
gnus-save-score t
gnus-startup-file "~/howm/.newsrc"
gnus-backup-startup-file 'never
gnus-select-method '(nnnil nil))

(add-to-list 'gnus-secondary-select-methods
'(nnimap "gmail"
(nnimap-address "imap.gmail.com")
(nnmail-expiry-target "nnimap+gmail:[Gmail]/Кopзинa")
(nnimap-server-port 993)
(nnimap-stream ssl)
(nnir-search-engine imap)
(nnmail-expiry-wait immediate)))
>>
>>106685808
How do you enter your password?
>>
Anyway most fun from using gnus comes when you use feedbase.org, gmane.io
because nntp is a streaming protocol.

There is also commercial-emacs guy who wrote non-blocking version of gnus, he also created nnhackernews, nnreddit and nntwitter.

I tried nnhackernews, but it was too slow for me and my default gnus.

You may wonder why whould you want put everything in gnus. Simply because of it is scoring system, you can create your own recommendation algorithm, but out of your rss feeds and you will also know how it works.

I also use nnimap, because due to my need to have windows in dual boot. Maildir with isync might be a faster setup.
>>
>>106685892
>non-blocking version of gnus
Did this change ever make it to the upstream gnus source?
>>
>>106685841
I use keepassxc2 or gnome-secrets for generating totp out of the secret.
There is also minimalist go program for that from Russ Cox:
https://github.com/rsc/2fa

With 2FA enabled you can generate so called app passwords with your email provider.

I use gmail. Sorry for typing mail.ru in the user-mail-address. Tried to stay anonymous on anonymous board.

You can put your app password into ~/.authinfo like this:
machine smtp.gmail.com login john.doe@gmail.com port 587 password "pppp aaaa ssss ssss"
machine imap.gmail.com login john.doe@gmail.com password "pppp aaaa ssss ssss" port 993
>>
>Gnus
>for email
Does it "expire" your emails without asking you?
>>
>>106685923
Not yet, as far as I know.
https://github.com/commercial-emacs/commercial-emacs?tab=readme-ov-file#how-has-the-code-diverged-thus-far

Anyway, you can sub to something like HN best comments on gwene.org
>>
>>106686003
>Does it "expire" your emails without asking you?

Nope. At least not in my config.

You can configure it to expire immediately or wait for 5 days though.

>>Gnus
>>for email

I am not only using it for email. I also get some news using feedbase and lookup mailling lists using gmane.io.
I also use RSS sometimes, but it feels slower than adding it to some sort of NNTP bridge.

I want to eventually start using gnus more than browser.
Like this guy did:
https://randomeffect.net/post/2023/01/16/web-processing-with-gnus/
>>
>>106685708
Use sbcl. I think that clisp is better only in the situation when you want to bootstrap your CL.
>>
>>106677984
You can start with something easier, like with this decent uni course like essentials of programming languages third edition. Especially because it is already utilizes racket a scheme like language made for teaching programming language theory.
>>
>>106686084
I do. I was just /pol/posting a factoid I noticed where even an overtly jewish common lisp implementation behaves like an actual jew - foreign, obnoxious, entitled.
>>
>>106686077
>nntp
What even is this?
Why should I go roundabout way for reading rss with this? Why expose a one more party to my news fetching, i stead of directly subscribing to rss/atom feeds?
>>
>>106686220
>What even is this?
It is streaming protocol used by USENET originally.


>Why should I go roundabout way for reading rss with this?
I don't say you should.

It's just gnus rss backend being slow.
And there are 3 ways of dealing with that:
1. Using nntp gateways.
2. Preloading your rss feeds with wget like with newsticker:
C-h v nnrrs-use-local
C-h f nnrss-download-script

3. That not blocking fork of a gnus.

>Why expose a one more party to my news fetching, i stead of directly subscribing to rss/atom feeds?
I like how nntp can fetch only part of the news articles, comparing to fetching entire xml file, like with rss, but you do you.
>>
>>106686220
https://en.wikipedia.org/wiki/Usenet
https://en.wikipedia.org/wiki/Network_News_Transfer_Protocol

destroyed by
https://en.wikipedia.org/wiki/Eternal_September
>>
File: 1751034653961098.png (29 KB, 718x325)
29 KB
29 KB PNG
Is it possible to have some sort of divisor like picrel in Org Mode? Something visual only that displays underneath a topic name (so a * level).
I don't even know what to call this so my searches aren't returning anything useful.
>>
>>106687318
- There are faces for 8 org heading levels: org-level-1 to org-level-8.
- If you want those to be underlined, you can customize the face to give it an underline.
- Look at the docstring for set-face-attribute to see how to specify an underline.
(set-face-attribute 'org-level-1 nil :underline t :extend t)
>>
>>106687445
Unfortunately, it's not quite that simple.
https://github.com/tarsius/backline/issues/3
>>
File: underlined-headings.png (38 KB, 986x550)
38 KB
38 KB PNG
>>106687445
>>106687577
It's not as bad as I thought. The hard debugging was already done by them, and all you have to do is:
(setq org-fontify-whole-heading-line t)
(set-face-attribute 'org-level-1 nil :underline t :extend t)
>>
https://sophiebos.io/posts/beautifying-emacs-org-mode/
>>
>>106672318
what is this, elint?
do you have a (provide 'init) in your init file or something?
>>
>>106687663
>>106687445
I love you bwos.
>>
>>106680123
hey cutie
>>
How do people move in Emacs using its own keybindings?
In vim I can easily set mark, but the thought of it in emacs...
>>
>>106689383
if vanilla emacs had
>a sane binding for setting mark
>a feature where pressing the mark again switches selection to block mode
>easy way to jump to a line visible on screen
and probably a few other things that don't come to mind, it would be very usable and i would probably not have a reason to use evil anymore
fuck, i mean V is already two keypresses anyway, something like C-v would be fine with me for setting mark, and maybe C-v v to make it a block selection
maybe i should work on this
>>
>>106689383
No normal person uses the default emacs binds. It is inferior to a modal system in almost every way.
>>
>>106689551
Then why the hell should one use emacs at all? Don't tell me org mode
>>
I can't believe evil-mode wouldn't interfere with other default keys in countless pacakges
>>
>>106689479
>>a sane binding for setting mark
maybe it means something completely different in vim, but in emacs it's just C-SPC
>>
>>106689383
>>106689551
Press Ctrl with your palms or use god-mode.
>>
>>106689479
>something like C-v would be fine with me for setting mark, and maybe C-v v to make it a block selection
How are either of those bindings significantly better than C-SPC and C-x SPC?
>>
>>106689640
bro, I've mapped caps to ctrl. Ctrl is not the problem here (though it puts pressure to my fingers)
I can't just navigate between functions. Alt+} ? C-v? mouse? How?
And when you want to copy stuff from a function at the top of the page and go back, what would you do? I can't remember how to set mark C-x r j? wot?

In vim I use m m , then go to target, copy, then ' m....bam I'm back. Or C-o C-i
>>
>>106689577
I would never recommend emacs to anyone
>>
>>106689670
>C-SPC and C-x SPC?
it does not do what I ask. It's unpredictable.
>>
>>106689670
i dont like C-SPC as a binding
C-x SPC is rectangle select, im talking about a select that works like V in evil. C-x SPC is kinda like C-v in evil
so what i mean is that if you go from a shorter line to a longer line, all of the longer line should automatically be selected, instead of only up to the column the shorter line ended on
>>
>>106689841
actually if i remember correctly, cua-rectangle-mark-mode implements something like that
i have to think about it
>>
>>106685708
>clisp, however, goes out of its way to not fit in at all and be a pain
just don't use CLISP.
Use SBCL, or CCL... even ABCL works straight away and it's pretty cool btw (able to easily call java code)
>>
>>106671227
is there an acme mode in emac? :))
>>
>>106689721
I'd just use search (with swiper it's not so bad) to get back where I was. Or maybe abuse undo. If I did this often enough that it were a problem I'd probably write a function for it. Maybe it's even built-in already, IDK. Another option is splitting the window and closing it after copying. This isn't really the kind of thing that's a problem for me.
>>
>>106689728
I was a long time vim evangelist, but after getting a keyboard that let me bind keys so I can hit ctrl and alt without leaving the home row, I'm starting to see the light of emacs. I've been using spacemacs with evil mode the past week, but I'm itching to switch to full emacs mode - I'm finding myself reaching for emacs movement more and more. It's really superior... provided you have your ctrl and alt keys in a decent place.
>>
>>106685841
.authinfo or age
>>
>>106689927
There is occasional influence of acme and Plan9 here and there:
https://www.gnu.org/software/emacs/manual/html_node/eshell/Smart-scrolling.html
https://github.com/ianyepan/acme-emacs-theme

Also you can bind mouse chords similar to acme.

But you can as well use acme from plan9port or install it to multiple devices and use advantage of 9P protocol.
>>
>>106679778
>Implement a protocol for interoperation with the web environment (DOM)
>Integrate a set of tools to develop Common Lisp code directly in a browser
killer features
>>
>>106685892
I've always wondered how gnus stores it's data. Isn't it a lot to keep track of the thread id of each thread youve read? When you load an rss feed it has to check for every thread if it was already read, right?
>>
>>106689603
That's what evil-collection is for.
>>
>>106685955
>~/.authinfo
~/.authinfo.gpg and you won't have to keep passwords lying around in plain text.
>>
>>106689640
Map so left alt sends left ctrl,
super sends left alt
left ctrl sends super
>>
>everything is an fexpr
Any other interesting languages that try to improve on scheme? Maybe I'll just make my own interpreter so I can toy with my ideas..
>>
Hey guys, I've been lurking here for a while but am still a real lisp noob but I finally have an opportunity at uni to work with the language on a pretty big project. I'm the leader of a group of 4 and we have free rein to work on any project we want using any language or libraries and we have a year to work on the project :D
our current idea is a sort of collaborative live-looping daw where up to 4 people can jam out creating a beat using game controllers though this is still very conceptual and we're working out the specifics. The important thing is now is the crucial stage where I get to decide on what language we use (they've already said they're good with anything as long as there are resources out there to learn it) and I *really* want to choose a lisp for our project, and go full in org-mode literate programming and all, I'm just not sure fully which dialect specifically is versatile enough for a project like ours. My autistic minimalist urges are swaying me more towards the scheme side of things but I'm not too fussy if common lisp is better suited, what matters most of all is portability as one of our more ambitious plans is to hopefully get a version of it running on our wii, that would be so fucking sweet. And yeah I know this is probably a dumb plan and it would be a lot easier to make it as a web app or some shit but this is the one chance we have to work on something new and actually have fun in something that isn't dependent on visual studio. Thank you :)
>>
Does anyone use exwm or something adjacent? Is it worth it?
>>
>>106691727
I've written a Lisp that does not require parentheses because all functions take an exact number of arguments, hence parentheses "insertion" can be inferred. also, everything has a string representation, where one converts strings into other data structures. this process can be optimized through the running of side-effect-free code at compile-time. a feature that I have experimented with is the implicit conversion of strings into necessary data structures when possible, and this has resultedin cleaner code than my screenshot demonstrates (this is a quite old screenshot).
also, the language is able to crash at any moment and resume to its most recent state. this process even accounts for parallelism. this screenshot shows a successful experiment where perfect replay of randomized information printing (with separate parallel processes producing randomness).
>>
>>106688013
>what is this, elint?
Flymake, elisp-flymake-byte-compile backend.
>do you have a (provide 'init) in your init file or something?
Yeah. elisp-flymake-checkdoc complains if there's no
(provide 'init)
;;; init.el ends here

at the end.
>>
File: pocket.png (341 KB, 720x1164)
341 KB
341 KB PNG
>>106691742
>a sort of collaborative live-looping daw where up to 4 people can jam out creating a beat using game controllers
Interesting
>My autistic minimalist urges are swaying me more towards the scheme side of things
Maybe CHICKEN Scheme? Bintracker is written in CHICKEN Scheme.
https://bintracker.org
https://github.com/bintracker/bintracker
>>
>>106691742
That's a lot of new things at once. Be careful.

>go full in org-mode literate programming
Have you done any literate programming before? Do you have a feel for the pros and cons of this approach? I ask, because it's not all positive (and I love org-mode, but I'm trying to be real).

I wouldn't do a whole project this way, because if you're doing all your development inside org documents, you're going to lose easy access to big chunks of sly or slime (if you were writing Common Lisp). Similar things would happen in other Lisps -- you're going to lose easy access to some developer tooling which is going to slow you down. Instead, I'd setup the main project normally, and then I'd make org documents with code blocks in them that make use of the project's code so that you can have interactive org-mode notebooks that people can play with. I think that'll give you a happy medium.
>>
>>106691939
chicken scheme looks very cool and I know it works well with C which is very nice, especially if I want to get it working with a library like portaudio
>>106691939
still new to the concept of literate programming but I'm in love with the concept (especially for explaining concepts to the other team members who don't have as much experience especially with the audio side of things), I fully agree though embedding the code in separate notebook files sounds much easier to work with. Thank you for the tip :)
>>
>>106691742
>our current idea is a sort of collaborative live-looping daw where up to 4 people can jam out creating a beat using game controllers
you might want to look into extempore to get some inspiration. it uses a scheme-like lang
https://github.com/digego/extempore
>>
>>106691742
You might want to check out Overtone.
https://overtone.github.io/
>>
>>106691769
i love exwm but you need to see for yourself if it fits into your workflow or whatever. a basic configuration is very simple, you really only need to configure `exwm-input-global-keys' and `exwm-input-prefix-keys'
>>
File: C.gif (38 KB, 220x220)
38 KB
38 KB GIF
>>106692083
>it works well with C
Yep
Also CHICKEN Scheme's CRUNCH is very interesting.
https://www.more-magic.net/posts/crunch.html
For portability, looks great too.
>NetBSD PowerPC 6.0.0 tested on Nintendo Wii
https://wiki.call-cc.org/portability (https://web.archive.org/web/20250917130622/wiki.call-cc.org/portability)
>>
>>106691809
Do you have macros? If so does the macro receive a tree representation of its arguments or the raw token stream?
Also have you considered or do you have support for fexprs (perhaps instead of traditional lisp macros and special forms)?
>a feature that I have experimented with is the implicit conversion of strings into necessary data structures when possible
Can you give an example on how this is different to other languages with a literal string representation of data types?
>the language is able to crash at any moment and resume to its most recent state
Does this allow for function redefiniton before re-running (with a fixed lambda list I assume)? Do you have a provision for runtime function definition and if so can it handle a change in lambda list / function signature?
Perhaps this should have been more than one post.. I'm thinking about writing a little lisp optimised for hash tables incorporating fexprs similar to Kernel but I would also like it to be fast..
>>
File: 1744757864147222.png (698 KB, 580x552)
698 KB
698 KB PNG
>>106692083
>>106692434
How difficult is it to keep my code compatible between chicken and guile?
Do they offer r7rs compatibility flags to check for compliance?
>>
>>106693696
scheme interop is usually done by limiting yourself to the minimum compatible RxR std. It is annoying.
>>
>>106694570

RSxR **
>revised scheme report 5, 6 7s etc
>>
>>106663770
how to learn emac
>>
>>106694801
Ask Emacs questions about itself, and it'll tell you all kinds of things.
>>106663770
>Docs: C-h f [function] C-h v [variable] C-h k [keybinding] C-h m [mode] M-x ielm [REPL]
>>
>>106685708
>>
is learning elisp and writing emacs modules feasible in a logical step by step way? or is it more of a spaghetti code mess and you just have to dive into it and go insane like a Lovecraft protagonist if you want to learn?
>>
>>106694891
learn by doing and reading.
>>
>>106695045
so there's no logic to it?
>>
>>106695071
I don't know what you mean with logic, but elisp has about 40 years of stuff in it, and the "default" introduction manuals/books in emacs suck ass.

Learning lisp is one thing, learning elisp to use in emacs is another. Lisp is very simple, but elisp has a billion libraries.

Like learning C and learning the linux kernel see?
>>
Is there really no way to make Emacs render full-width CJK characters properly full-width (exactly double width of half-width characters)?
Even when using a font with CJK support (M+ Code, Sarasa Gothic) for everything CJK characters are narrower than 2 half-width characters.
>>
File: file.png (7 KB, 727x119)
7 KB
7 KB PNG
>>106695164
I'm using Yasashisa Antique for my font.
https://www.freejapanesefont.com/yasashisa-antique-download/
アイウエオ アイウエオ アイウエオ アイウエオ
アアイイウウエエオオ アアイイウウエエオオ アアイイウウエエオオ アアイイウウエエオオ

It looks alright to me. I didn't do any special configuration either. I'll try it again on vanilla if you want.
>>
File: file.png (8 KB, 685x109)
8 KB
8 KB PNG
>>106695274
In vanilla with whatever the default font happens to be, it's messed up.
>>
>>106695164
In my main config, I'm using a derivative of this guy's function to setup my CJK fonts.
https://emacs.stackexchange.com/a/31600/37580
He says his function is for Mac, but it works fine on Linux, too.
>>
In doom, what's the most convenient way of going back/forward between places of interest?
I'm not using evil but I'm looking for something like c-i/o and ctrl-tab (recent files) combined.
>>
>>106695274
>I didn't do any special configuration either.
I have to take that back.
>>106695324
counts as special configuration.
>>
>>106695356
>something like c-i/o and ctrl-tab (recent files) combined.
you are already using that? what else do you need? you also have registers/bookmarks, but you have to set those explicitly
>>
>>106695388
not using those, I'm not using evil so c-i/o is out, and ctrl-tab was just an example (not bound to anything by default)
>>
>>106695356
I don't know what your leader key is anymore since you disabled evil, but `SPC b b` and `SPC b B` are hooked up to +vertico/switch-workspace-buffer and consult-buffer respectively.

Do M-x and then type "buffer" and then scroll around to see if you can find something interesting.
>>
>>106695485
I remember seeing a menu which had more things available than just buffers, any idea what that was? Like recent files were listed a few items below recent edit(?) locations
>>
>>106695502
nvm might've been the consult-buffer, as you say. I wish it had edit locations and other jumps too, though
>>
>>106695515
If you bookmark them, consult-buffer can show them.
>>
>>106695530
bookmarking manually is non-starter. Doing it through code is too much work for me for now
>>
>>106695502
M-x ibuffer maybe?
>>
>>106695465
>I'm not using evil so c-i/o is out
i think pop-global-mark does more or less the same as evil-jump-backwards? so you can try binding that to a key combination
>>
>>106695465
>>106695683
or consult-global-mark if you want to see a list
>>
>>106695683
afaict it doesn't share with "go to definition" stack
>>
>>106695718
doesn't that get registered as a normal cursor movement? for me it works with evil in doom, with the call to +lookup/definition
>>
>>106695755
Seems better than I thought, thanks
>>
What does /λ/ think about lambda list notation? Is there anything better than &optional, &keys, etc? It seems lisps tend to either stick to tradition or omit this feature. For example scheme and maclisp only have '.' but CL rebranded this &rest and added all the other options.

I think the extra options are good but I'm not a fan of the & notation. Perhaps a better option would be to prefix the symbol with a character? e.g. !var for optional, :var for keywords, etc. This would also work nicer with marking individual parameters, for example if the first parameter is optional.
>>
was lambda calculus a mistake? should text editors be based on turing machines instead?
>>
>>106695897
it already has a tape to write the text, so it should be a simpler design...
>>
>>106695868
I prefer the CL way. I'm indifferent on the use of &. I don't know if it was the most aesthetic choice, but it's not terrible. I'm just happy to have various ways to specify parameters.
>>
>>106695274
>>106695324
Thanks, but this doesn't help.
I found something that helps - using a specific font combo and setting font height to specific values (that are either too small or too big for me).
Guess I'll just use Emacs in the terminal then.
>>
>>106695164
emacs -nw
>>
>>106695926
Does that also mean you prefer the CL-style structured lambda lists over the Clojure-style automatic destructuring and whatever its version of case-lambda is called?
>>
>>106696097
The CL way is currently less confusing to me. I haven't done enough Clojure though, so it could just be my lack of familiarity with their style. When I dabbled with Clojure a few years ago, none of the functions I wrote used those features.
>>
I don't know if there are any jq fans out there, but jq-mode is bringing me great joy when I use it in org-mode via ob-jq.
https://github.com/ljos/jq-mode

Writing queries in org-mode instead of the command line has allowed me to increase the complexity of the queries I write more than I ever imagined. Whereas I'd only write little one-liners before, now it feels like I'm writing SQL-tier queries with jq.

example
#+begin_src jq :in-file apartments.json :cmd-line "-r" :wrap src json
[ .[] | select(.addr_prefecture == "Aichi") ]
| sort_by(.monthly_cost)
| .[]
| { link, monthly_cost }
#+end_src

#+RESULTS:
#+begin_src json
{
"link": "https://realestate.co.jp/en/rent/view/1095206",
"monthly_cost": 157200
}
{
"link": "https://realestate.co.jp/en/rent/view/1095222",
"monthly_cost": 163200
}
#+end_src


source data
https://pastebin.com/UKtNrGGt
>>
>>106696060
Go to your scratch buffer and paste this mixed full-width and half-width katakana from >>106695274
.
アイウエオ アイウエオ アイウエオ アイウエオ
アアイイウウエエオオ アアイイウウエエオオ アアイイウウエエオオ アアイイウウエエオオ

I'd like to see how it renders in your Android Emacs.
>>
>>106696253
>>
>>106696442
It works. Two half-width chars are the same width as one full-width char. Nice.
>>
>>106696461
>>106696253
I should mention that this is Emacs running in Termux, I don't use the native Android port of Emacs
>>
>>106696237
That’s pretty cool.
All my jq have been horrendous one-liners wrapping on the bash command line.
Until now. Never even crossed my mind to do it in org mode.
I’m going to try this with hairy regular expressions, too.
Of course, I’m thinking now, that a sexp version of jq would be easier to write and understand, and then transpile it to a jq syntactics.
>>
>>106696237
>>106696644
tbf i would just probably load it into a normal programming languages and then work with arrays or whatever
>>
>>106694570
Some of the sfri’s have standard portabe implementations so you can, in some cases, just embed that implementation with your code.
>>
>>106696174
>less confusing to me
I understand. That is a very important part of language design.
I've always found Clojures style, though it is more general, to be a forced inconvenience because Hickey ideologically doesn't agree with (nil) default values. It is my own dislike of the &... syntax that is making me consider alternatives though none seem to be more convenient.
>>
File: 1758374457790108.png (275 KB, 702x743)
275 KB
275 KB PNG
>>106695868
I think Racket is the simplest
(#:key (optional value) . rest)

or in an ML-like you'd match on a record
{key, optional = value, rest ...}

we could imagine optional as a function that either returns its argument or a default value
>>
Your attention please:

- Coalton: based
- Fennel: based

That's all.
>>
>>106663770
What have (you) guys created using a lisp that isn't an emacs config file?
>>
>>106698751
I’m making HPC tools
>>
>>106698758
what hpc means in your context? (Web search is fucked)
>>
>>106663770
what is xah up to these days, did he ever find work? or is he still begging for donations

also, what's the current state of dap-mode? i already use emacs for org and general note taking. I want to switch over my dev environment from jetbrains ides to emacs but i want equally good debugger support
>>
>>106698758
>>106699379
nta but probably "high performance computing"
>>
>>106698751
a.s advice.el base.scm basic-a.s basic.s binary-tree.scm boot.scm c-ast.s c-compile.s calc.scm catalog-a.s catalog-a.scm catalog-b.s catalog.s cek-a.s cek.s chan-catalog.s chan.s check.scm check2.scm church.s compile.el compile.r coom.s cps.s csv.rkt csv.s csv.scm curl-test.s curry.s decode-key.s define-match.s dfa-a.s dfa.s early-compilers.scm edit.s edit.scm eientei.s elf.scm emit.c enumerate-specials.scm eval.s eval.scm eval2.scm factorial.s fb.s fib.m fib.s gen.scm generic-rss.s gimp.scm gl.s hex.s ir-repl.s ir.scm key-dfa.s kh-flac.s lab.scm lambda-calculus.s lambda-compile.s lambda.s lambda.scm lambda3.rkt lbry.s let.scm libfb.c lime.lisp list-a.s list.s logging.scm logic-a.s logic-mpl.s logic.s macro.scm make.scm mangadex-a.s mangadex.s match.s match.scm match.upstream.scm max-record.scm monad.scm mp3.s mts.scm nth.s o8-I-o8-I.scm odysee.s ok.html oo.s parameters.s parse-expr.scm parse-expr2.scm parse.scm parse2.scm plot.scm png-a.s png.s post.s preorder.s print.s prog-extract.s pure.scm read-token.s read.lisp remove.s rewrite.scm rm-swap.s rm.s rps.s rss-a.s rss-b.s rss-tree.scm rss.s sbcl-auto.lisp secd-slides.txt semantic.scm server-a.s server-b.s server.s shared-ir.c shell-a.s shell-compile-a.s shell-compile.s shell.s sk.s smol.s sphere.s sum-areas.ml sum-series.s sxml-test.s sxml.s template.html thread.s traverse.s tree-order.lisp type.lisp unboxed.s volume.el with-output-pipe.s write-elf.s zip.s
>>
File: 1735977955536637.png (199 KB, 1920x1080)
199 KB
199 KB PNG
>>106696237
That's cool

is there any point to learning jq when I already know Clojure, though?
>>
>Yt-dlp soon to require a complete JS engine as dependency
Can you run nbb with Deno? I like babashka but I find hard to justify it if I need to have both installed.
>>
>>106698751
I made a documentation scraper for an enterprise application at work with Common Lisp, the online docs suck dick at searching/indexing and are only available after login into it, plus the product is so retardedly obscure/ancient that there's no available documentation for it outside its own portal. So first i made the scraper and then a parser to convert it into org-mode/texinfo.
Now I can browse it like a human being using consult-info, read the org file for a prettier format, or make an LLM skim through the manual using tools (gptel) in order to find what I need inside of it.

My next project will be:
- Make a DSL that compiles to XML, and an XML to DSL parser, in order to bypass the enterprise product's mouse-centric interface. It'll require type-checking, a linter and proper error messages, plus implementing the whole product's esoteric logic into it, but I can already taste the triumph of not having to depend on the incredibly shit UI or being able to find errors/debug on the go.

My job is far removed from LISP, but I use it to make all my tools, i started with elisp but this year I started making them in CL and integrating them into emacs through Slynk.
>>
File: file.png (226 KB, 1071x1616)
226 KB
226 KB PNG
>>106699659
Clojure + Clerk is a fine way to do it. The threading macro leads to a similar feel to jq's piping and filtering, and it makes Clojure one of the more ergonomic languages for this kind of data transformation. If my Emacs were setup for Clojure a bit better, I could swap out these jq expressions for Clojure ones to achieve a similar result. If I needed to display graphics, Clerk would have an advantage over org though.
>>
>>106700007
I'm using a later version of the JSON with more data in this screenshot.

>>106700000
Curious.
>>
ef-themes 1.11.0 just dropped
https://protesilaos.com/codelog/2025-09-25-emacs-ef-themes-1-11-0/
>>
>>106699659
The big revelation for me was how my usage of jq changed once I got into a notebook styled environment like org. I've used jq for years, but I never wrote complex expressions with it until I used it from inside org-mode.

What a difference an environment can make.

>>106700149
>ef-themes 1.11.0 just dropped
Out of prot's theme families (modus, ef, doric), ef is the one I use the most. I guess it's time to upgrade.
>>
>>106700007
Can I use clerk w/ bb?
>>
File: GwCr7qZXIAExPBn.jpg (130 KB, 2110x512)
130 KB
130 KB JPG
>>106700314
I think so.
https://x.com/borkdude/status/1945744124608471313
>>
If I'm using clojure with deps edn, if I add another dependency to my code, is it possible to use it witout restarting the repl? In CL I'd just "asdf:load-system" or load the file.
>>
>>106699659
Unrelated but I'm actually looking for apartments in Tokyo right now, have you posted that code somewhere anon?
>>
>>106700442
https://codeberg.org/ggxx/realestatejapan/

While looking at org-tables, if you want to sort by another column, put your cursor in that column and hit `C-c ^` or `M-x org-sort`.
>>
>>106700314
yes
https://mastodon.social/@mkvlr@mas.to/114742931452171895
>>
>>106700442
My scraper is hard-coded for short-term+furnished rentals, and that's reflected in the JSON that I've checked in to the repo. If that's not what you want, you may have to edit the Perl script I use for scraping.

$url_template is an sprintf template that takes an agent_id and page.
$any_url_template is an sprintf template that takes a page.
You can find the URLs by doing an advanced search at:
https://realestate.co.jp/en/rent/search
and copying the URL it redirects you to after you submit the form.

To install the necessary Perl modules, install cpanminus and run:
cpanm --no-test Data::Dump JSON::PP Path::Tiny Time::Piece Try::Tiny URI Web::Scraper
>>
>>106693124
no dedicated support for macros. ASTs are just flat arrays (slices), which may be modified at runtime.
no dedicated support for fexprs, just quote the args
in other languages it is necessary to use unique differentiators for different types ({} for maps, [] for lists, () for tuples, etc.). in my language only [] exists, and it represents strings only. implicit conversion is dependent on the called function being passed the string (EXECUTE requires a slice, hence if you pass it a string, it will try to convert that string to a slice automatically).
>Does this allow for function redefiniton before re-running
no, the entire purpose of the functionality is to provide deterministic replay, and this would break that.
>runtime function definition
everythingg is handled at runtime. even callstacks are string-serializable, and can be interacted with at runtime (similar to Smalltalk).
>I'm thinking about writing a little lisp optimised for hash tables incorporating fexprs similar to Kernel but I would also like it to be fast
just build it and stop thinking about speed. speed is ALWAYS more obvious in its implementation after your experiment has been successful. never, ever, EVER get caught up in thinking about performance when you're trying to do shit that is new to you
>>
i like emacs
>>
>>106697184
Huh that is a nice syntax, though I'm not a fan of the schemer practice to use #: for keys. Of course you couldn't have automatic destructuring of parameters with the optional syntax like that.
>>
File: nil default value.png (28 KB, 517x225)
28 KB
28 KB PNG
>>106696916
>Hickey ideologically doesn't agree with (nil) default values
clojure function definitions do come with nil default values, though?
>>
>>106701351
but does emacs like you back?
>>
>>106701443
no... no one does...
>>
>>106701122
>no dedicated support for fexprs, just quote the args
In your language is quoting as simple as creating a slice? Is it lexically scoped? In typical lisps this fashion for fexprs would only work if they could grab the lexical environment from the call site. It is slightly mitigated with dynamic scoping but you would still have to deal with the callee modifying the current dynamic environment.
>the entire purpose of the functionality is to provide deterministic replay, and this would break that.
Ok. I was just wondering because IME crashes are typically due to logic errors but I remember in the past you were talking about power loss.
>everythingg is handled at runtime
Can you handle a change in function arity at runtime? It sounds like the answer is "it depends". When you're walking the program code / slice, are function definitions cached when you access them for the parameter list (to first eval the arguments) or is it looked up again by name when the function is eventually called?
>even callstacks are string-serializable, and can be interacted with at runtime (similar to Smalltalk).
Oh nice
>just build it and stop thinking about speed
You make a very good point here. Thanks anon.
>>
can eshell run sh scripts? does that mean there's an sh interpreter written in elisp?
even dumber question: does eshell have a re-implementation of elisp in elisp? or is it just the shell aspects and components that can stand in for coreutils, and then elisp code is sent through to the underlying emacs lisp interpreter?
>>
>>106696097
I don't know Clojure, what does Clojure do?
>>
>>106701821
>can eshell run sh scripts?
yes, any script for that matter. the only thing that matters in a script is that the shebang at the top of the file points to the appropriate interpreter. the shell you're using and the language the script is written in are two independent things
>does eshell have a re-implementation of elisp in elisp?
not sure what you mean by this. it has some coreutils rewritten in elisp, which are just functions, and it can run any other elisp function or command that emacs offers. you can see what is being evaluated when you run a command by using eshell-parse-command
$ eshell-parse-command 'emacs -Q'
(eshell-with-copied-handles
(eshell-trap-errors (eshell-named-command "emacs" (list "-Q"))) t)

eshell-named-command in turn calls eshell-plain-command, which is defined like this in esh-cmd.el
(defun eshell-plain-command (command args)
"Insert output from a plain COMMAND, using ARGS.
COMMAND may result in either a Lisp function being executed by name,
or an external command."
(if-let ((sym (eshell--find-plain-lisp-command command)))
(eshell-lisp-command sym args)
(eshell-external-command command args)))
>>
>>106702187
I was being retarded. tools you typically use in bash arent part of the language just because you can mix them with bash syntax and type that into the shell.
how about translating bash one liners to elisp for eshell though? like
for f in *.jpg; do mv $f ${f/.jpg/_renamed.jpg}; done
for bulk rename? or do they do a lot of
bash "-c" "echo 'bash code'"
>>
>>106700007
.......theme?
>>
How do I disable overscroll? Why the fuck would I want to scroll so far down I can only see the last line of the file
>>
>>106703742
>How do I disable overscroll? Why the fuck would I want to scroll so far down I can only see the last line of the file
based
>>
>>106695755
>>106695812
update: it sucks. Doesn't achieve nearly what c-o does in vim
>>
Fuck this piece of shit editor, honestly. Why can't helix up their game and come out with a proper fucking diff viewer
>>
On a completely separate note, it now seems Microsoft wasted a lot of effort adding AI features into vscode. CLI agents are just more convenient, I don't need any of the fluff when I work with an agent.
Similarly, Cursor has no moat anymore.
>>
File: helix.png (10 KB, 348x143)
10 KB
10 KB PNG
>>106704013
>helix
what the heck is this?
>>
>>106704106
>Microsoft wasted a lot of effort adding AI features into vscode. CLI agents are just more convenient
if AI is so good, why haven't they fixed the MS Teams login yet?
>>
>>106704123
vim for retards who can't use vim and trannies
>>
>>106704013
what hurt you
>>
Can I use Emacs if I'm a complete non-technical user, for things like language learning? I've heard some people do this and love it, but it seems so imposing
>>
>>106704127
AI deemed it unnecessary.
>>
>>106703797
Don't tell me it's not possible?
>>
diff --git a/home/default.nix b/home/default.nix
index 15940fc..71c301e 100644
--- a/home/default.nix
+++ b/home/default.nix
@@ -348,11 +348,6 @@
};
};

- emacs = {
- enable = true;
- package = pkgs.emacs-pgtk;
- };
-


Good riddance. Fuck you.
>>
>>106704173
emacs org mode tools are great for language learning. youtube has lots of videos on this topic (spaced repetition). There's even a new emacsconf 2025 talk coming on that topic.
>>
>>106702156
(defn somefn
[req1 req2 ;required params
& {:keys [a b c d e] ;optional params
:or {a 1 ;optional params with preset default values other than the nil default
; b takes nil if not specified on call
c 3 ; c is 3 when not specified on call
d 0 ; d is 0 --//--
; e takes nil if not specified on call
}
:as mapOfParamsSpecifiedOnCall ;takes nil if no extra params(other than the required ones) are specified on call
}]
(println req1 req2 mapOfParamsSpecifiedOnCall a b c d e)
)

=> (somefn 9 10 :b 2 :d 4)
;9 10 {:b 2, :d 4} 1 2 3 4 nil
nil
=> (somefn)
;ArityException Wrong number of args (0) passed to: funxions$somefn ;clojure.lang.AFn.throwArity (AFn.java:437)
=> (somefn 9 10)
;9 10 nil 1 nil 3 0 nil
nil
=> (somefn 9 10 :x 123)
;9 10 {:x 123} 1 nil 3 0 nil
nil
=> (somefn 9 10 123)
;IllegalArgumentException No value supplied for key: 123 ;clojure.lang.PersistentHashMap.create (PersistentHashMap.java:77)
=> (somefn 9 10 123 45)
;9 10 {123 45} 1 nil 3 0 nil
nil
=> (try
(somefn 9 10 123)
(catch IllegalArgumentException e (println "caught:" e)))
;caught: #<IllegalArgumentException java.lang.IllegalArgumentException: No value supplied for key: 123>
nil
>>
>>106703858
i guess you could run the evil-jump-backwards command, but not sure how you can get the evil jumplist without the rest of key bindings....
>>
>>106703858
>>106704889
there's this package
https://github.com/gilbertw1/better-jumper
but it's old
>>
>>106698758
>>106699379
>>106699435
Yes I mean high performance computing. Just make computations go fast on any given hardware.
I can’t really reply much since I keep getting hit with range bans for abuse or whatever even though I barely post anything
>>
>>106704915
how does lisp help you with that? Why lisp and not python or java or something else?
>>
>>106705429
I don’t know Java, so I can’t answer.
I use Lisp to write faster code than the C compiler could do given some hardware specifications.
>>
>>106705517
NIce you must be well paid, petalisp seems to still does not beat the benchmarks.
https://github.com/marcoheisig/Petalisp
>>
>>106663770
How do I process an external command's output line by line in common lisp? By that I mean something that corresponds to this in bash:
command | while read i
do
echo "line: " $i
done
>>
>>106705973
cool cool, i have to check that
>>
>>106706124
(loop for line = (read-line *standard-input* NIL NIL) do (process line))

I think each implementation stores the arguments in a different variable. SBCL is posix-argv or something.
>>
>>106705973
I’m not, I’m just a former researcher in a different field. Being paid well to think is not much of a thing outside of the USA.
On the topic of petalisp, their approach seems concerning given they have such poor performance on gemm. I’m only skimming it at the moment but this is concerning because right now it seems petalisp would be beaten by C code which only requires a little bit of tinkering.
>>
>>106705517
>I use Lisp to write faster code than the C compiler could do given some hardware specifications.
tell us more, please
>>
>>106706124
With uiop
  (uiop:run-program your-command
:output (lambda (stream)
(loop for line = (read-line stream nil)
while line
do (format t "do your thing: ~a~%" line))))
>>
>>106703742
this feature is immensely useful when you are working with code at the bottom of the file by moving the content into the center of your screen
>>
>>106705517
How do you do that? Do you write special purpose compilers?
>>
So JS was a LISP after all
https://x.com/xah_lee/status/1971605162755248297
>>
>>106706586
>>106707526
More or less, yes. It’s domain-specific code generation which helps me write optimised assembly for given hardware, and ideally I’d like to use it for PTX as well. The idea is quite simple, that if I say at a high enough level “here’s the mathematical operation I want to do,” then I have given enough information that you could infer how that should be optimally executed if you tell me what hardware to use for the job. So if a script grabs that information for me, then the Lisp program just goes in and says “here’s what the registers should be doing to minimise wasted time,” and spits out assembly or C or what have you. It’s only a small thing right now because it’s only me doing this.
Unfortunately it’s hard to reply here because I think I’ve been range banned at my home address for reasons I don’t understand but I’m pleased people thought that was interesting. I’m not a CS person so I like knowing what I’m interested in matches what other people find interesting too.
You might like Christian Schafmeister if that’s up your alley.
>>
>>106700479
>>106700670
Thank you very much anon. Hope you have a comfy time in Tokyo!
>>
>>106707740
are you Xah? how did you get that screenshot otherwise?
>>
>>106708306
You gotta follow the link anon
https://xcancel.com/xah_lee/status/1971605162755248297
>>
File: XahTV_in_metaverse.png (592 KB, 998x998)
592 KB
592 KB PNG
>>106708306
Yes
I'm Xah
You are Xah too
We are Xah
http://xahlee.org/Periodic_dosage_dir/xahlee_chan.html
>>
>>106708038
Interesting. Thanks for sharing.
Regarding your ban problem, it might also be someone else in your vicinity using the same ISP browsing 4chan. Nothing you can really do about that, unfortunately.
>>
>>106708038
reminds of what FFTW does, but they use ocaml.

FFTW is a very complicated C code generator in ocaml essentially.
>>
>>106708417
>>106708357
>people posting screenshots to posts
it makes sense to do because the modern internet is very volatile, but i hate it, kek
>>
bros would a helpful-like package for sly be useful? I'm refctoring the slime-doc contrib to work with slynk and remaking its cl-definitions to not be a submodule(fuck that) and work with a wider set of types, and figured I could add more helpful-like elements like including source code, code examples.
im not the creator just found this and wanted it for sly.

https://github.com/mmontone/slime-doc-contribs
>>
>>106702742
i'm not familiar with the syntax of eshell, but looking at the manual a bit, the equivalent seems to be
for f in *.jpg {mv $f $f(:s/.jpg/_renamed.jpg/)}
https://www.gnu.org/software/emacs/manual/html_node/eshell/Control-Flow.html
https://www.gnu.org/software/emacs/manual/html_node/eshell/Argument-Modifiers.html
>>
>>106700314
you can use clerk w/ bb in termux on your phone
>>
>>106681838
Sleepy princess in the demon castle
>>
>>106703459
>theme
ef-dream
>>
>>106708580
>the modern internet is very volatile
I don't think about it too much, I guess I just grew up in that and usually think it's how just how it is. But it really is crazy that we seem to have all these mailing lists and stuff with almost every conversation developers were having out in the open in the 80s and 90s, but half the stuff being written today may not be around 5 years from now for various reasons. Especially since even technical people prefer to scream into a proprietary bot void like twitter that can't be archived without anti-TOS scraping, and certainly can't be replicated elsewhere without jumping through hoops to stay up.
>>
Calc chads,
If I do ' deriv(cos(1/x,x) => RET
is there a easy way to evaluate the resulting thing to multiple values? Like try some?
>>
If lisp is so good why didn't they make a lisp 2?
>>
File: IMG_20250927_031728.jpg (10 KB, 134x208)
10 KB
10 KB JPG
There's this text-to-speech software for Unix/Linux, called "festival", that I've used for about 20 years now.
It has a rubbish old stripped down and limited version of Scheme in it.

I thought it would be funny to challenge myself to write a real program for it, so i wrote a pentomino puzzle solution finder for it.
I'm only a hobby programmer and not experienced, and especially not experienced with lisp, but i managed to get something working anyway.
It was interesting working around the weird limitations of the stripped down scheme interpreter built into Festival.
And kind of funny to see a text to speech app doing something totally unrelated to text to speech.

Code here:
http://dusthillresident.ddns.net/p.txt
>>
File: lispy-tan.png (1.88 MB, 1024x1024)
1.88 MB
1.88 MB PNG
Does anyone else hate raydeejay? I fucking hate this cunt. He banned me from the Lisp Discord Server. He does not know shit about Lisp. He just pretends to be a Lisp enthusiast just to post on the server. I fucking hate 'community seekers'.
>>
>>106712284
>from the Lisp Discord Server.
why would you join such a place in the first place
>>
>>106712307
I thought joining Discord servers will help me gain some sort of following, so people would use my programs (https://github.com/Chubek). I have long since realized that Disord kiddies are fucking retarded. The best way to promote your work is to collect an email list of journos, bloggers and youtubers, and email them your program when it's finished. If they like it, they'll promote it.

Most "X Discord servers" do more harm to your porgram than good. For example, some retard on langdevcord told me that the ISSA VM I was going to use is not a good idea.

Discord and Reddit are a bad place to be in. Morons everywhere.

It's usually the off-topic channels that are the bane of humanity. If a server has no off-topic channel, like the NESDev server, it's really beneficial. Because it detracts retarded "Community Seekers". e.g. people who know shit about the subject, and just want to talk to a bunch of teenagers, even though they are in their 40s. lol. Cast a stone in a house which convicted sex-offenders live in as a group, and you'll hit a DIscord Community Seeker.
>>
>>106712358
>I thought joining Discord servers will help me gain some sort of following
stopped reading right there.
>>
File: RMS.png (885 KB, 714x1000)
885 KB
885 KB PNG
>>106712284
>>106712358
Take the /G/NUpill
Reject nonfree proprietary shitware (dishitcord, plebbit, etc.)
Embrace free (as in freedom) freedomware (GNU, EMAC, etc.)
>>
If I use Gnus for nnrss and nnatom, how robust the older article search will be? Can I search among hundreds of older articles from an rss feed?
>>
>>106712180
Years ago, I used festival very casually from the command line. I had no idea it even had a Scheme interpreter built in until now.
>>
>>106712542
4chan is proprietary too.
>>
>>106710733
>I don't think about it too much, I guess I just grew up in that and usually think it's how just how it is. But it really is crazy that we seem to have all these mailing lists and stuff with almost every conversation developers were having out in the open in the 80s and 90s, but half the stuff being written today may not be around 5 years from now for various reasons. Especially since even technical people prefer to scream into a proprietary bot void like twitter that can't be archived without anti-TOS scraping, and certainly can't be replicated elsewhere without jumping through hoops to stay up.
sometimes i feel like i have to download all the youtube videos about how to unclog my toilet just in case...

i think protocols like nitter could solve this in a way, but very difficult to trigger the network effects necessary to make it successful, the good thing is that if you design well the protocol you don't even need the internet, you could replicate the same networks just with sharing huge USB drives and you would get the same experience, just with weeks/months of latency rather than immediate
>>
>>106713228
>Can I search among hundreds of older articles from an rss feed?
some RSS feeds only have a summary, not the full article, so in that case you are fucked i guess
>>
>>106713824
>some RSS feeds only have a summary
assume I am searching for the article titles
>>
>>106713834
search should be easy, you can even just grep the directory if Gnus doesn't support it
>>
>>106713855
>grep the dir
After searching for the article title text, I want to be able to read the article, inside gnus interface. Is this possible or not.
>>
can someone explain the usecase of dired creating a new buffer for every directory you navigate to
i'm aware that i can disable this feature, i just want to know why it does this in the first place
>>
>>106711710
Because lisp is so good
>>
>>106685808

Google deprecated imap access in 2023 lmao
>>
>>106714348
If you love Emacs and GNUS enough, there is a way.
https://github.com/dickmao/gnus-imap-walkthrough#gnus-a-tough-sell
>>
>106712284
>106712358
retarded namefags using discord are back... I was happy that we got rid of the maid schizo
>>
>>106714348

you still can if register yourself as api user or something something?
>>
>>106713990
I initially found it annoying, but I get why they do it, and I'm at peace with it now. Think about it from a functional programming perspective. The dired buffer for /home/anon should be a distinct value from the dired buffer for /tmp, should it not? There's also a practical benefit in that if you wanted to look at two different dired buffers side by side, you don't have to do anything awkward to set that up, because all the dired buffers represent distinct directories. If, on the other hand, dired kept recycling the same buffer, how would you look at two different directories in dired at the same time?
>>
is there anything like colton for guile?
>>
>>106714872
>>106713990
I think it is useful for tramp connections. It is also useful to manipulate things between directories.

Set dired-kill-when-opening-new-dired-buffer to non-nil if you want to kill them.

I think dired+ does something that allows it to reuse certain buffers at certain times.
>>
just completed tinkering with my setup of

- soulseek daemon (slskd) running on my single board computer (always on)
- sshfs mounting it on my laptop over tor hidden server
- streaming the music in slskd over tor network on my laptop using emacs bongo

Bongo's ability to save playlist buffers make it pretty useful for creating my own music playlists that I can add tracks over time.
>>
>>106715513
This is the first I've heard of this.
https://github.com/dbrock/bongo
>>
>>106715088
what's colton?
>>
>>106713704
4chan source code was leaked in the sharty hack doe
>>
>>106716346
static type system built ontop of common lisp
>>
>>106716346
https://coalton-lang.github.io/
https://x.com/killian_arts/status/1925029797438333420
>>
File: 1744474886531934.jpg (279 KB, 1165x1500)
279 KB
279 KB JPG
>>106716507
>>106716592
sounds cool
>>
new bread:
>>106716971
>>106716971
>>106716971
>>106716971
>>
Surfing



[Advertise on 4chan]

Delete Post: [File Only] Style:
[Disable Mobile View / Use Desktop Site]

[Enable Mobile View / Use Mobile Site]

All trademarks and copyrights on this page are owned by their respective parties. Images uploaded are the responsibility of the Poster. Comments are owned by the Poster.