- I use daily this configuration for professional programming, bloging and Linux administration system works.
See the roadmap at the end of this file and the to-do list. - This is a huge refactoring of pi-emacs-configuration using Doom Emacs.
- The last stable Doom Emacs.
- Emacs 29+ compiled with Tree-sitter support.
In order to support automation of installation of the needed external tools (LSP, Linters, Deboger etc), you need to install Mise and enable the Pimacs module Mise.
- Clone this repository into your
USERDOOMDIR/modules(/.doom.d/moduleson Linux) :
cd ~/.doom.d/modules && git clone https://github.com/pivaldi/pimacs.git - You can enable PIMacs in two ways :
- Full featured PIMacs as it satisfy MY daily coding needs
In your Doom fileinit.el, at the end of the file, after the(doom! …)\ part, add the code(load! "modules/pimacs/init").\ This will load all the PIMacs modules at once. See the file init.el. - Partially featured PIMacs as it satisfy YOUR needs
In your Doom fileinit.el, at the end of the file, after the(doom! …)\ part, add the following code uncommenting the module you want to enabled :
- Full featured PIMacs as it satisfy MY daily coding needs
(doom! :pimacs
default ;; PIMacs default Emacs configuration on top of Doom.
;; aliases ;; Define aliases starting with `_`. The most useful are `_rb`, `_sir`, `_gf`.
;; (theme +no-font) ;; Define some faces and load Zenburn Theme.
;;;; See the `README.org` in the directory `pimacs/theme`
;; (keys +azerty) ;; Define the PIMacs keys binding.
;; session ;; Auto reload the last session at startup through
;;;; `doom/quickload-session` (no desktop bad practice in Doom)
;; etc…
)See the file init.el and remember to run “doom sync” after modifying init.el !
You can run PIMacs in a Docker container for interactive testing with X11 GUI support.# Build the image
docker build -t pimacs:latest -f docker/Dockerfile .
# Run Emacs (GUI)
./docker/run.sh
# Run Emacs (terminal mode)
./docker/run.sh -nwThe Docker image includes Ubuntu 24.04, Emacs 30, Doom Emacs, and PIMacs modules. See docker/README.org for detailed documentation, usage examples, and troubleshooting.
- pimacs/aliases: Define useful aliases starting by “_”.
- pimacs/avy: Create key bindings for avy with prefix (Doom does not provide them).
- pimacs/bm: Visible local bookmarks in buffer is a simple and useful complement to the native Emacs bookmark system.
- pimacs/calendar-fr: Configure the calendar for French support.
- pimacs/corfu: Extra configuration of the package COmpletion in Region FUnction.
- pimcas/crypt: PIMacs extra encrypting configuration and features.
- pimacs/default: PIMacs default configuration.
- pimacs/dired: Dired mode specific configuration. See also the auto-generated dired-mode-map key bindings refcard and the dired-mode-map PIMacs key bindings refcard.
- pimacs/doc: Generated PIMacs Documentation. Contains all the Doom and PIMacs fundamental key bindings refcards classed by key bindings prefixes.
- pimacs/docker: Installs and configures Docker Mode.
- pimcas/flyspell: Dictionary switching between two dictionaries with Flyspell.
- pimacs/functions: Define useful functions used under the hood by PIMacs.
- pimacs/keys: PIMacs global-map configuration. See also the auto-generated global-map key bindings refcard and the global-map PIMacs key bindings refcard.
- pimacs/lang-c: Configuration of
Cmode and derived.(setq-default c-basic-offset 2) (c-set-offset 'substatement-open '0) (c-set-offset 'brace-list-open '0) (c-set-offset 'arglist-close '0) (c-set-offset 'statement-case-open '0) (c-set-offset 'arglist-cont-nonempty '4) (c-set-offset 'arglist-intro 'c-basic-offset) - pimacs/lang-go: Configuration for the Go programming language.
Support nativego-ts-mode(Emacs 30+) and standartgo-mode. - pimacs/lang-js: Configuration for the JavaScript programming language.
Support nativejs-ts-mode(Emacs 29+) and standardjs-mode. - pimacs/lang-php: Configuration for the PHP programming language.
Support nativephp-ts-mode(Emacs 29+) and standartphp-mode. - pimacs/lang-protobuf: Configuration for Protocol Buffers.
Supportprotobuf-ts-modewith full Buf toolchain integration (lint, format, build, breaking, generate) and Buf LSP. - pimacs/lsp: Complet/extend the default Doom configuration of the Langage Server Protocol.
- pimacs/notmuch: This package provides extra configurations of the default Doom Emacs configuration for https://notmuchmail.org/ using https://github.com/pivaldi/notmuch-multi.
- pimacs/origami: Provide/configure the Origami text folding minor mode.
- pimacs/org: Configure the Org mode and add Latex templating.
- pimacs/pairing: Enhanced configuration of smartparens with extended features.
- pimacs/session: Workspace/Session Persistence and Auto Restore Last Session.
- pimacs/theme: Slight customization of the Emacs theme depending the module options used.
- pimacs/tramp: Slight configuration of TRAMP.
TRAMPis a built-in Emacs feature that enables you to access and edit files on remote systems, including those that require authentication usingSSH,SFTP, or other protocols. - pimacs/treesit: Configure and use the native tree-sitter major modes in Emacs 29+ and install a batch of grammars.
- pimacs/treemacs: slightly adds to the default Doom Treemacs package.
- pimacs/shrface: This package extends
shr / ewwwith org features and analysis capability. It can be used in dash-docs, eww, nov.el, mu/mu4e, anki.el, elfeed, wallabag.el, etc. More information. - pimacs/visual-fill-column: Soft-wraps text at a specified column width
without modifying file contents. Supports centering text and integrates
with
visual-line-modeandvisual-wrap-prefix-mode.
- Module for sql-ts-mode/sql-mode
- Better typescript-ts-mode
- Snippet
- Templating
- Support of Go html template https://github.com/a-h/templ. See https://drshapeless.com/blog/posts/writing-go-templ-with-emacs.html
- Improve dired experience
- Make a module for direnv support
- Use easy-kill https://github.com/leoliu/easy-kill
- lang-lua
- lang-rust
- lang-asy
- Better configuration of org-mode and markdown