The great thing about #Emacs is you can get exactly the working environment you want, with capabilities limited only by your understanding of Emacs Lisp.
The terrible thing about Emacs is you're gonna need to get a lot better at Emacs Lisp to get even a reasonable facsimile of the working environment you want.
Apropos of nothing, this is a project I started some time ago. Due to the community’s lack of interest and financial support, I kind of stopped…just testing the waters for it again.
https://codeberg.org/IDEmacs/IDEmacs
IDEmacs aims to be a set of #Emacs configurations which provide an out-of-the-box experience similar (if not identical) to popular GUI IDEs and editors.
It is aimed at…
Programmers coming to Emacs from other IDEs, or even first-time programmers familiar with only office applications.
Beginner #CommonLisp and #Scheme programmers, who need the functionality of Emacs (Sly/Geiser + structural editing) without having to perform unnecessary setup and without dealing with an alien style of keybindings. In other words, similar to Portacle or Guile Studio.
Non-programmers who want a fully-featured #Org, #Markdown, or #LaTeX editor with idiomatic shortcuts and mouse-friendly GUI.
It aims to provide…
GUI and mouse support, in addition to a keyboard-driven interface.
Unlike most starter kits, we do not hide GUI elements by default.
We support configuration via the
customGUI, not just ElispIf resources allow, we may implement new GUIs in Emacs
Keybindings that follow popular GUI and IDE conventions.
CUA mode is just the start - much more keybinding configuration is needed to provide an unsurprising experince. And that’s before we even get to the IDE-specific keybindings.
This excludes starter kits that use Evil by default, such as Spacemacs or Doom.
A fully-featured, fast, and configuration-free Emacs experience, like any starter kit/distro.
- The configuration uses idiomatic Elisp and contains a generous amount of comments, valuable to anyone interested in learning to configure Emacs using Elisp.
Perfectly imitating the GUIs and subtle behaviour differences of IDEs is desirable, but not top priority. Given our limited resources, we aim for “good enough”.
We hope this gives new users a comfortable starting point, and make them more likely to stick around to discover the possibilities of Emacs’ malleability, rather than being driven off by the default experience.
Apropos of nothing, this is a project I started some time ago. Due to the community’s lack of interest and financial support, I kind of stopped…just testing the waters for it again.
https://codeberg.org/IDEmacs/IDEmacs
IDEmacs aims to be a set of #Emacs configurations which provide an out-of-the-box experience similar (if not identical) to popular GUI IDEs and editors.
It is aimed at…
Programmers coming to Emacs from other IDEs, or even first-time programmers familiar with only office applications.
Beginner #CommonLisp and #Scheme programmers, who need the functionality of Emacs (Sly/Geiser + structural editing) without having to perform unnecessary setup and without dealing with an alien style of keybindings. In other words, similar to Portacle or Guile Studio.
Non-programmers who want a fully-featured #Org, #Markdown, or #LaTeX editor with idiomatic shortcuts and mouse-friendly GUI.
It aims to provide…
GUI and mouse support, in addition to a keyboard-driven interface.
Unlike most starter kits, we do not hide GUI elements by default.
We support configuration via the
customGUI, not just ElispIf resources allow, we may implement new GUIs in Emacs
Keybindings that follow popular GUI and IDE conventions.
CUA mode is just the start - much more keybinding configuration is needed to provide an unsurprising experince. And that’s before we even get to the IDE-specific keybindings.
This excludes starter kits that use Evil by default, such as Spacemacs or Doom.
A fully-featured, fast, and configuration-free Emacs experience, like any starter kit/distro.
- The configuration uses idiomatic Elisp and contains a generous amount of comments, valuable to anyone interested in learning to configure Emacs using Elisp.
Perfectly imitating the GUIs and subtle behaviour differences of IDEs is desirable, but not top priority. Given our limited resources, we aim for “good enough”.
We hope this gives new users a comfortable starting point, and make them more likely to stick around to discover the possibilities of Emacs’ malleability, rather than being driven off by the default experience.
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.
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.
“Why rewriting Emacs is hard,” by @kana
Yes it is, I can tell you from experience. Of course, I was never under any illusion that it would be easy.
@kana , a.k.a. “Gudzpoz,” wrote a blog post which was shared on Lobste.rs, and they kindly mention my own Emacs clone Schemacs, though they refer to the old name of it “Gypsum” because they are citing my EmacsConf 2024 presentation done before the name changed.
It is a pretty good post going over some of the odd details about how Emacs edits text, e.g. the character range is from 0x0 to 0x3FFFFFF rather than the Unicode standard range from 0x0 to 0x10FFFF, issues with using a gap buffer as opposed to a “rope” data structure, attaching metadata (text properties) to strings to render different colors and faces, and issues with Emacs’s own unique flavor of regular expressions in which the = symbol indicates matching on the point in the buffer. (I did not know about that last one!)
Apparently, they know these things because they are also working on their own clone of Emacs in Java for the JVM called Juicemacs (the name “Juice” upholding the theme of Java-based applications being named after drinks), and I deduce that their approach is to read through the Emacs C source code to ensure better compatibility. This is now the fourth modern Emacs+EmacsLisp clone that is still under active development that I know of, fascinating work!
My approach is to clone Emacs well enough to get it to pass regression tests, and I don’t read the C source code, I do black-box testing (because those tests become regression tests for my own source code).
Also, the goal with the Schemacs project is more to provide a Scheme-based Emacs that is backward-compatible with GNU Emacs. You use Schemacs because you want to program it in Scheme, not Emacs Lisp, but Emacs Lisp is there for you so you can still use your Emacs config. As a result, I will ignore a lot of these fussy details of the GNU Emacs implementation unless it is going to prevent regression tests from passing.
#tech#software#Emacs#GNUEmacs#Schemacs#EmacsLisp#Lisp#Java#Scheme#R7RS#SchemeLang#LispLang#JavaLang
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
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