Code Monkey home page Code Monkey logo

.emacs.d's Introduction

Micah’s .emacs.d

Logo

This is my personal Emacs configuration. It is heavily customised and has a lot of room for optimization. Nevertheless, I believe it is relatively well organised, with a modular design. It is geared towards Windows (1st) and Linux (2nd). It’s made for scentific use, and aims to be: quick, minimal, logical, and maintainable.

I do not “live in Emacs”, but I do use it almost every day (for better or worse). To be honest, Emacs is one of those tools that can send me up the wall, and I’m no expert with Emacs Lisp. Yet, I am caught in the spiral and Emacs will remain with me, so I maintain this configuration.

I dream of the day Emacs has rich-text buffer support (e.g., copy paste with formatting) and multi-threading. My dream will probably never come true.

Features

  • ✅ Modular design and automatic setup
  • ✅ Evil-mode, but retains full Emacs defaults in insert mode
  • ✅ Fully useable R config
  • ✅ Confusing set of custom binds and functions I’ve added over the years
  • ✅ Legacy code I’m too worried to remove
  • ✅ Ripped features straight from Spacemacs, Doom and friends.

Usage Notes

The configuration files are in ./elisp/ and each .el is somewhat cryptically named, but the load order of the files is shown in .init.el.

  • 📦 mdw-packages.el ⇨ Initial installation of core packages — first time setup.
  • 🛠 mdw-defaults.el ⇨ Defaults that are in theory directly portable to a vanilla Emacs config
  • 🎨 mdw-vibes.el ⇨ Theme, fonts and anything pretty.
  • 🛠 mdw-utilities.el ⇨ Misc accumulated functions from the internet or old configs
  • 📦 mdw-modes.el ⇨ All use-package configurations and mode configuration, including
  • 🗒 mdw-org.el ⇨ Orgmode stuff
  • 🛠 mdw-ess.el ⇨ R settings
  • mdw-keybinds.el ⇨ All keybinds, including general-define-key stuff.

Preview

docs/preview.png

docs/writing-preview.png

Notes most likely for me

Note that while Evil is installed, Emacs is the default. Evil insert mode reverts to Emacs mode. Therefore, I don’t have a vim insert state.

Keybinds etc

  • C-u M-^ - delete-indentation and pull up
  • (global-set-key (kbd "C-c C-\\") 'xah-shrink-whitespaces)
(use-package expand-region
  :bind (("M-[" . er/expand-region)
         ("C-(" . er/mark-outside-pairs)))

https://github.com/noctuid/general.el#which-key-integration

(general-define-key
 :prefix "SPC"
 :keymaps 'normal
 ;; unbind SPC and give it a title for which-key (see echo area)
 "" '(nil :which-key "my lieutenant general prefix")
 ;; bind nothing but give SPC f a description for which-key
 "f" '(:ignore t :which-key "file prefix")
 ;; use a cons as a replacement
 "g" '(:ignore t :wk ("g-key" . "git prefix"))
 ;; toggle lispy; use a function as a replacement to show if currently on
 "l" '(lispy-mode :wk my-lispy-which-key-display)
 ;; for a keymap, only the keys will be matched;
 ;; :no-match-binding is not necessary
 "p" '(:keymap projectile-command-map :wk "projectile prefix")
 ;; don't display this keybinding at all
 "z" '(hidden-command :wk t)
 ...)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.