Modus Operandi Emacs is a project that aims to deliver a robust and fast development environment. It supports various programming languages and file formats by utilizing relevant language servers and modes.
This is my continually evolving Emacs configuration. I recommend drawing inspiration from it and adapting it to your own needs.
This configuration is intended to be used only on Emacs 29 built with tree-sitter support. I strongly recommend using Emacs builds with native compilation enabled. In addition, I discourage builds with pgtk enabled for now, as it seems to negatively impact performance in some scenarios (e.g. corfu auto completion).
Until Emacs 29 is officially released, I recommend building it yourself.
Clone Emacs 29 branch:
git clone -b emacs-29 --single-branch https://git.savannah.gnu.org/git/emacs.git
On Debian based distros:
sudo apt install build-essential
sudo apt build-dep emacs
sudo apt install libtree-sitter-dev
On Redhat based distros:
sudo dnf builddep emacs
sudo dnf install libtree-sitter-devel
Inside the cloned repo, build Emacs:
./autogen.sh
./configure --with-dbus --with-gif --with-jpeg --with-png --with-rsvg --with-tiff --with-xft --with-xpm --with-x-toolkit=lucid --with-gpm=no --with-modules --with-harfbuzz --with-cairo --with-json --with-native-compilation --with-tree-sitter
make -j$(nproc)
sudo make install
You should have the following software installed:
- ripgrep - like grep, but faster
- fd - like find, but faster
- aspell - for spell check
- cmake - for compiling vterm
- direnv - for managing environment variables based on current directory
Additional software might be needed based on usage. Follow Messages buffer for details.
git clone https://github.com/manzaltu/modus-emacs ~/.emacs.d
Optionally, you can install chemacs2 and use this configuration alongside others.
You can create a file named personal.el in your Emacs folder and add personalized settings. For example:
;;; personal.el --- Personal configuration file -*- lexical-binding: t; -*-
;;; Commentary:
;; This is a personal configuration file
;;; Code:
;; Personal info
(setq user-full-name "Some Name"
user-mail-address "user@domain.example")
;; Set font
(set-frame-font "PragmataPro Mono Liga-16" nil t)
;;; personal.el ends here
You can update the configuration by running the following command inside the cloned dir:
git pull -r
Copyright © 2021 Yoav Orot.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.