I like Emacs it's extensibility is amazing, but I've noticed that to implement some new features that related with some of UI elements might be very difficult - becuase you need to support a few different way to show user data.
Like how it work in Projectile
( projectile-completion-system 'auto
:group 'projectile
:type '(radio
(const :tag auto)
(const :tag ido)
(const :tag helm)
(const :tag ivy)
(const :tag default)
(function :tag )))
And I didn't find any attempts to implement an editor with benefits of Emacs with good customization opporutnity and extensibility and modern editorls like VSCode with stable core set of build-in features and UI components.
Let's focus on this two points and discuss why it so important
There are many editors that allow you to write extensions, but their design doesn't make it as simple as it is in Programmable Editor like Emacs or Lem (write a function → feed it to the editor → run). This is especially true when you need to perform tasks that require hard-coded logic.
For example, I sometimes prepare Jira task in Emacs because it's more comfortable than using Jira's web form. When I need to create a task, I just call a function
( jira-create-new-task (title)
( )
...)
by jira.el.
Which I developed myself. Emacs has been around for over 40 years, and during that time, certain features have become essential for almost everyone. If we look at MELPA's packages list and sort it by downloads, we can see that the most popular packages are:
I believe these features like are widely used because they significantly increase productivity. So why not combine them into an editor by default and allows community to build their own features on top of a solid core API? (fortunately it happened in Lem)
Lem is an editor designed to address these needs.
When I first launched it, I immediately felt at home. Everything works naturally for Emacs user - but better. The defaults, like find-file, execute-command, dashboard (instead of splash screen that most people disable anyway :D) all felt intuitive. I've already contributed a few things in Lem project, and I love how easy it is. Common Lisp is a fantastic language for an extensible editor.
One of my favorite features is that Lem can run like a regular GUI App - just like I prefer in Emacs.
also Tabs, Copilot, LSP and all of this is available out of the box.
I see Lem as an evolution of Emacs/Vim editor and I hope the project continues to grow and improve.
Thank you for reading, and happy hacking!
Date: Tue Feb 18 03:51:49 PM CET 2025