dotemacs icon indicating copy to clipboard operation
dotemacs copied to clipboard

My Emacs configuration

#+TITLE: DotEmacs #+AUTHOR: Mathieu Marques

[[https://img.shields.io/github/license/angrybacon/dotemacs.svg?style=flat-square]] [[https://img.shields.io/github/forks/angrybacon/dotemacs.svg?style=flat-square]] [[https://img.shields.io/github/stars/angrybacon/dotemacs.svg?style=flat-square]] [[https://img.shields.io/github/commit-activity/m/angrybacon/dotemacs.svg?style=flat-square]] [[https://img.shields.io/tokei/lines/github/angrybacon/dotemacs.svg?style=flat-square]]

[[https://img.shields.io/badge/arch-yes-success.svg?logo=archlinux&style=flat-square]] [[https://img.shields.io/badge/macos-yes-success.svg?logo=apple&style=flat-square]] [[https://img.shields.io/badge/windows-untested-important.svg?logo=windows&style=flat-square]]

This repository contains my personal Emacs configuration.

  • What the .el

If you are wondering where has gone all of the Lisp, fear not, for it is automagically tangled from an Org file into a Lisp file. See [[./dotemacs.org][dotemacs.org]].

  • Installation

#+BEGIN_QUOTE Tested daily on Debian and MacOS.

I trust your Google-fu. Try and make the most of the below notes. #+END_QUOTE

** Dependencies

| =jansson= | Enable native JSON parsing | | =libvterm= | Enable terminal emulation within Emacs | | =pinentry= | Enable pass prompts within Emacs | | =ripgrep= | Prefer =rg= over =grep= |

** Emacs

Clone the repository into your user directory.

#+BEGIN_SRC sh git clone [email protected]:angrybacon/dotemacs.git ~/.config/emacs/ #+END_SRC

There used to be Git submodules under =lisp/=. Since I'm basically the only consumer of these packages and that they mostly exist to keep my configuration clean, I don't plan on releasing any of them anytime soon. So they're back to being simple directories for now.

The configuration is used daily under latest Emacs and doesn't guard against undefined functions from earlier versions (by choice).

*** Linux

See [[https://github.com/angrybacon/dot/blob/master/LINUX.org#emacs]].

*** MacOS

Living on the edge, install Emacs 29.

I prefer [[https://github.com/d12frosted/homebrew-emacs-plus][ =emacs-plus= ]] for its additional compilation flags, specifically the ability not to have a title bar ie. fake fullscreen since it has its downsides on macOS.

#+BEGIN_SRC sh brew tap d12frosted/emacs-plus brew install emacs-plus@29 --with-native-comp #+END_SRC

The configuration also assumes GNU utilities are available, in particular =ls= since =dired= relies on it.

Based on =straight.el=, package dependencies could prove difficult to install on MacOS where the initial =PATH= is less than reliable, especially when you can't easily install a package that fixes just that: =exec-path-from-shell=. A workaround is to simply run Emacs from your preferred shell for its first boot.

** Language Servers

In order for Emacs to connect to the LSP servers, install the language-specific dependencies.

#+BEGIN_SRC sh paru -S typescript-language-server #+END_SRC

  • Window Manager

Emacs can be used as a window manager under Linux. See [[./DESKTOP.org][DESKTOP.org]].