Tyblog posted an introduction to extending Emacs by exploration and introspectability. It's something advanced users know well but the post is a nice resource as it puts together what newcomers need to know to get started with extending the editor.
#emacslisp
See tagged statuses in the local BookWyrm community
#Schemacs minor milestone reached
With pull request #50 the Schemacs Elisp interpreter is now able to load all of two very important Emacs Lisp source files:
…which are two files that define most of what you could call the the Emacs Lisp “core” language (by which I mean macros like defun and lambda).
With these files now loaded, I can proceed to the next task, which is implementing enough of the C-level built-in functions in Scheme to be able to run ./lisp/emacs-lisp/cl-lib.el, which is in-turn one of the dependencies for running the Emacs Regression Tests (ERT) suite.
Once ERT is up and running, it will be much easier for anyone to contribute code to this project as you will just be able to pick a failing regression test and write whatever code is necessary to make it pass.
#tech #software #Emacs #EmacsLisp #Lisp #Scheme #SchemeLang #R7RS …
#Schemacs minor milestone reached
With pull request #50 the Schemacs Elisp interpreter is now able to load all of two very important Emacs Lisp source files:
…which are two files that define most of what you could call the the Emacs Lisp “core” language (by which I mean macros like defun and lambda).
With these files now loaded, I can proceed to the next task, which is implementing enough of the C-level built-in functions in Scheme to be able to run ./lisp/emacs-lisp/cl-lib.el, which is in-turn one of the dependencies for running the Emacs Regression Tests (ERT) suite.
Once ERT is up and running, it will be much easier for anyone to contribute code to this project as you will just be able to pick a failing regression test and write whatever code is necessary to make it pass.
#tech #software #Emacs #EmacsLisp #Lisp #Scheme #SchemeLang #R7RS #FOSS #FreeSoftware
Progress on my clone of the Emacs Lisp interpreter
This took me three months (a month longer than I had hoped), but I finally have merged it into the main branch!
This patch rewrites the Emacs Lisp lexer and parser in Scheme using Scheme code that is 100% compliant with the #R7RS standard, so it should now work across all compliant Scheme implementations. Previously the old parser relied on #Guile -specific regular expressions.
This patch also implements a new feature where a stack trace is printed when an error occurs. This of course makes debugging much, much easier. Previously the old parser did not keep track of where code evaluation was happening, it simply produced lists without source location information. The new parser constructs an abstract syntax tree (AST) and source locations are attached to the branches of the tree which can be used in error reporting and stack traces. …
Progress on my clone of the Emacs Lisp interpreter
This took me three months (a month longer than I had hoped), but I finally have merged it into the main branch!
This patch rewrites the Emacs Lisp lexer and parser in Scheme using Scheme code that is 100% compliant with the #R7RS standard, so it should now work across all compliant Scheme implementations. Previously the old parser relied on #Guile -specific regular expressions.
This patch also implements a new feature where a stack trace is printed when an error occurs. This of course makes debugging much, much easier. Previously the old parser did not keep track of where code evaluation was happening, it simply produced lists without source location information. The new parser constructs an abstract syntax tree (AST) and source locations are attached to the branches of the tree which can be used in error reporting and stack traces.
Next I will make whatever minor tweaks might be necessary to get my Emacs Lisp interpreter run on other Scheme implementations, in particular MIT Scheme, Gambit, Stklos, and Gauche. I would also like to try to get it running on Chicken and Chez, although these are going to be a bit more tricky.
Then I will continue with the task of implementing a new declarative GUI library.
#tech #software #FOSS #FunctionalProgramming #Lisp #Scheme #SchemeLang #EmacsLisp #Emacs #Schemacs #GuileScheme
"You don't have to like Emacs to like it" - this seemingly paradoxical statement is the secret of GNU Emacs. The plain, 'out of the box' Emacs is a generic tool. Most people who use it, customize it to suit themselves.
— Emacs Lisp - An Introduction by Robert J. Chassell (Page 185)
Ok, I've read all chapters, but I'm not setting this book as read until I finish some exercises (and read appendixes). I'm especially interested in the plain text graphs library since I enjoy data visualization whenever I can work on it.
Another note to myself. I've used yank-pop first time today. I knew of kill-ring but never bothered to delve deeper since no other software I'm using implements it in a way to store more elements on the clipboard.
And I have my eyes on the next goals as well: The Emacs Lisp Elements by Protesilaos Stavrou. I'll try to read it on my e-ink screen, because I'm not utilizing it enough (it would be so nice to have touch screen gestures to scroll working on my #debian with #i3).
And after that, I'll check if there are any simple packages that need co-mainteners. #EmacsLisp
Len commented on Emacs Lisp - An Introduction by Robert J. Chassell
I'm loving the gentleness of introduction that this book provides. It goes slowly through the code examples and shows you how to read the #EmacsLisp code.
And a spoiler: Here is my attempt for the Chapter 8 exercise: (defun test-search (string) "Search for string and left a point there if it is found." (interactive "sSearch for: ") (let ((found) (current (point)) (len (length string))) (save-excursion (while (and (< (+ len current) (point-max)) (not found)) ;; why complicate? just whole string on each position. (if (string-equal string (buffer-substring-no-properties (point) (+ (point) len))) ;; we found the string (progn (message "Found!") (setq found t) ) (progn ;; else (setq current (+ 1 current)) (forward-char) ) ) ) ) (when found ;; we found the string so we move the point. (goto-char (+ current len)) ) ) )
This is a #Lisp #XMPP channel I've been running for a while. I invite everyone interested in #CommonLisp, #Scheme, #Clojure., #EmacsLisp, #PicoLisp and others to join us!
https://xmpp.link/#lisp@conference.a3.pm?join
If you are unfamiliar with XMPP, you can install Quicksy (which is libre software) from the Play Store, App Store, or F-Droid.
Or you can check out my Quick and Easy Guide to Jabber/XMPP for more information and other options -
https://contrapunctus.codeberg.page/the-quick-and-easy-guide-to-xmpp.html
#Eat 0.9 released! 🎉
Notable changes include support for #Emacs 26, #Sixel support, line mode (like Term mode's one), and various bug fixes (including that cursor jumping bug).
#Eat is a reasonably fast #terminal emulator for #Emacs written entirely in #EmacsLisp/#Elisp, with various features like shell intergration, 24bit colors, complete mouse support and Sixel support, etc. It can run most (if not all) full-screen terminal programs.
Just wrote some #emacslisp to add a "On this day" field to my #orgroam daily note template, with links to dailies written on this day in previous years. That was fun!
Code: https://gist.github.com/goshatch/b909482f3a6cc33d6e1dffea4d93bb65