author | title |
---|---|
Milan Glacier |
Blazingly fast, robust, all-around emacs configuration |
- Features
- Showcase
- Email Setup
- TODOs
- [#B] Report
org-capture
bugs when inserting entries into table to upstream. - [#B] Utilize the contextual information from previous code block when editing source block within markdown/org.
- [#C] Lazily load third-party plugins for
evil
. - [#C] Configure
evil-args
to use spaces as argument delimiter foremacs-lisp-mode
.
- [#B] Report
- Prerequisites
- Discussion
If you're currently reading this README file in Markdown format, it has
been generated through org-export
, from its original org format. For
the best experience, please consider reading the org format file
instead.
With TTY starting in 0.30 seconds on a MacBook Air (M1, 2020), 0.73 seconds on a VPS with a 1-core CPU and 1 GB RAM, and 0.21 seconds on WSL with Intel i7 CPU and 32 GB RAM, TTY is exceptionally fast. The GUI is just as quick, starting in 0.44 seconds on Mac M1 and 0.30 seconds on WSLg. For more information on startup speed, see [[*Startup speed]].
Package versions are locked and under version control, so no breaking changes are expected.
This configuration works well on both TTY and GUI. Compatibility on TTY
is not compromised, while GUI features, including xwidget
, are also
well-configured.
A blazing fast startup speed doesn't mean it is a lite and minimal configuration. Instead, it is "heavy" and feature rich, including:
-
A modern minibuffer completion experience powered by
vertico+consult+orderless+embark+marginalia
family bucket. -
Modal editing ecosystem everywhere, powered by
evil
and many other extensions. -
A keybinding scheme centered around leader and localleader keys, powered by
general
andwhich-key
. -
In-buffer autocompletion frontend based on
company
(see *Corfu or Company?). -
Code completion and navigation based on
eglot
(LSP) andcitre
(Ctags). -
Integration with
eglot
andorg-babel
ormarkdown-mode
that takes literate programming to the next level.
Randomly select a theme from a curated list each time you start up and automatically switches between day and night themes at scheduled time. Additionally, the displayed verses on the welcome screen is also randomized with each launch. Have a fresh experience at every time. Be casual and wild!
The welcome screen displays two randomly chosen verses from my carefully chosen collection. This serves as a scratch buffer where you can perform Lisp evaluations. Frequently used commands are also listed, allowing for convenient execution by simply typing the hint key.
Making use of LSP and Ctags, navigating code is a breeze. The file tree
is displayed on the leftmost window through dired-sidebar
, and the
bottom right window showcases the references of a selected symbol via
LSP find references
(the Emacs command is xref-find-references
). In
the central floating window, a preview of the definition of the chosen
symbol is displayed with the aid of ctags
(the Emacs command is
citre-peek
).
A typical workflow in data science involves multiple components. The top
right window showcases an embedded xwidget widget that displays the HTML
visualization created via plotly
. In the bottom left window rests the
R REPL console where you can send your code for execution. Meanwhile,
the bottom right window features a chatgpt REPL console (via
aichat). I specify the aichat mode
as exp-code-e
to prompt chatgpt to provide an explanation of the code
you sent.
Write prose in orgmode
, and export it into reveal.js
presentation.
The right window displays the HTML slides using xwidget webkit. Preview
slides in emacs without the need to open GUI browser anymore.
I use notmuch
as my email client. For a comprehensive overview of my
email setup, please refer to the email.org file located
in the current directory.
[#B] Utilize the contextual information from previous code block when editing source block within markdown/org.
- This configuration is designed for Emacs 29 or newer versions.
- Your Emacs must be built with Treesitter support for this configuration to work effectively. If you are using a widely used package manager, and said manager has updated Emacs to version 29 or later, it's highly probable that Treesitter is already built into the Emacs version provided via the package manager. We advise verifying the package specifications for exact details if you choose to leverage a package manager-built Emacs.
- A separate installation is required for Treesitter grammar. You can
execute the command
M-x mg-treesit-install-all-language-grammar
to install all the language grammars that are currently in use.
- It is recommended to use the mailing list
~northyear/[email protected]
. - Alternatively, you are also welcome to open a Github issue.