Emacs lisp as an interface definition language.
Emacs lisp as an interface definition language.
It's been 10 months, I had no sheet music on paper, last August.
I've been accumulating a bit at a time. It seems strange to have a shiny new version of something I've owned for decades. I buy used when I can.
Recently, I got it in my head that I wanted to play the #Bach cello suites on the bass flute. I set about transcribing them to treble clef in #emacs with #org and #rosegarden.
This morning as I reviewed my music and my practice plan I discovered that I had bought the #cello suites for #flute last fall. At least I don't need to transcribe them now. I've got #elisp to write.
#Emacs #Lisp ability to provide multiple forms in the else branch (implicit progn) deserves some praise. I often write recursive algorithms that have a simple base case returning a value, and a much more involved recursive else case. Whapping the else into a progn/prog1/begin/do is an annoyance, however small. So #Elisp got this thing right, at least.
i've made some changes to the last article on blogging with Emacs's Org mode and included some stuff I'd missed out on — handling images, previewing, configuring the head, headers and footers, and some more.
https://peregrinator.site/blog/building-a-blogging-flow-using-emacs-and-emacs-only.html
@Jose_A_Alonso I didn’t know about the thunk library. A good resource for my #elisp experiments.Thanks for the reference.
> Reminds me that I even heard that some people still use emacs
Aww, yeah! #emacs is pretty fast and scalable – if you can do some routine action with lists of strings – like the e-mails, some chatting, playlists, file browsing – then emacs can help with this.
Of course, it can be slow, but usually it is a user fault in writing some good #elisp code (in my experience)
Except Emacs Web Wowser :dragnangry:
I've been debating the usefulness of org-roam-dailies. Much happier since switching to one long log/journal file with datetree rather than disparate little dated files all over the place. It's easier to review/show todos in org-agenda. Some simple code for a capture template if you wanna try it out..
(setq org-roam-dailies-capture-templates
'(("d" "default" entry
"* %<%H:%M> %?"
:target (file+datetree "log.org" week))))
I'm trying to write an org-capture-template and supporting functions for it, for a blogging setup that uses individual org files within a specific directory for posts. i want this to work such that I get prompted for a title, which is used to generate the file name, the title metadata of the file, and a description, which is also used to generate another metadata variable. Based on this answer, I've come up with this:
(defun org-new-blog-post ()
(setq date (format-time-string (org-time-stamp-format :long :inactive) (org-current-time)))
(setq title (read-string "Post Title: "))
(setq fname (org-hugo-slug title))
(setq description (read-string "Description: "))
(expand-file-name (format "%s.org" fname) "~/git/personal/blog/org/blog/"))
(setq org-capture-templates
'(("n" "new post"
plain
(function org-new-blog-post)
"%(format \"#+title: %s\n#+date: %s\n#+description: %s\n\n\" title date description)")))
But this doesn't seem to work, and it just prints the output in the buffer I started with. how do I make this work?
I understand that setting global variables in a defun is bad practice but somehow using a let form doesn't allow me to reference those variables in the capture template.
Создание режима GNU Emacs для C-подобного языка
Недавно я разработал ещё один режим GNU Emacs для C-подобного языка программирования C2 . Если в предыдущий раз для другого C-подобного языка я написал код с нуля, то в этот раз решил воспользоваться возможностью так называемого наследования режимов. В этой статье хочу поделиться с вами как это делается, и что у меня из этого вышло. (Предполагается, что читатель ознакомился с материалом предыдущей статьи Как написать свой режим для GNU Emacs и опубликовать его в MELPA или имеет собственный уникальный опыт разработки режимов GNU Emacs.)
#programming #emacs #lisp #commonLisp #elisp #eev #engineering #computerScience #history
My short but richly referenced bit on the popularity of lisp in the modern era, ranging from 2000 to 2024.
https://screwlisp.small-web.org/programming/popular-and-unpopular-lisp/
I had /meant/ to write something completely different, but this is where we got. I hotly anticipate your flames.
TANGENTIALLY #ELS2025 https://european-lisp-symposium.org/2025/index.html
I planned to connect to #lispgamejam and totally missed it. Try the submissions though! https://itch.io/jam/spring-lisp-game-jam-2025/entries
#emacs #editor #eev #hyperlinking #elisp #lisp #blog
https://screwlisp.small-web.org/e/emacs-eev-anchors/
@eduardoochs while getting myself used to using more hyperlinking in and around emacs (#programming) documents with eev, I briefly introduce eev's anchors with reference to past expectations of nonlinear text processing as mentioned by Kent in his recent interview.
#programming #engineering #emacs #eev #eepitch #markdown #md #intro #howto
https://screwlisp.small-web.org/programming/my-own-eev-eepitch-emacs-intro/
Capturing how I have started programming recently. In an md markdown document, I just weave in eev's red star lines and pitch other lines. Since eev 'inhabits other things' naturally, eepitch makes plain markdown into a powerful interactive evaluation mode.
The eepitching includes #shell #lisp #elisp #commonLisp and my #softwareIndividuals #KRF in the kind of freeform medley it lends itself to.
> `((,(format "%s" cell) . ,n) . ,result))
In Common Lisp you would write
`(... ,@result))
but right now I am only fairly sure that Elisp has comma splicing.
Just spent a good half hour pulling my hair out trying to figure out why one of the #elisp functions I had just written was always returning nil
when I tested it. Turns out, my test was mistakenly passing its inputs to the wrong (but similarly named) function (pivot-table-get-columns
instead of pivot-table-get-body
).
#Haskell's type system would've caught this. 🙃
Emacs Make Compile (or "Emacs Master of Ceremonies")
Please try it out and punch holes into it.
https://within-parens.blogspot.com/2025/05/getting-into-rabbits-hole-and-maybe.html
I've run into a snag.
I have a function, pivot-table-get-columns
(shorthanded as pt-get-columns
). Its job is to take an #OrgMode table and produce an alist of mappings of column names to column numbers. The column names are as defined by section 3.5.10 of the org-mode manual.
My code is here.
When I pass this function a table without column labels, it crashes on the format
line (which it shouldn't even be reaching).
Can someone explain to me what I'm doing wrong?
(cc: @screwtape )
Edit: I've been beating my head against a wall for some time on this getting nowhere and less than a minute after asking this, I see it. My first unless
should be a when
. I'll fix it later.