GithubHelp home page GithubHelp logo

knubie / .emacs.d Goto Github PK

View Code? Open in Web Editor NEW

This project forked from doomemacs/doomemacs

0.0 2.0 0.0 3.4 MB

Emacs for the stubborn martian vimmer

License: MIT License

Emacs Lisp 97.64% Makefile 0.33% Shell 0.69% C++ 0.10% Go 0.03% JavaScript 0.31% Lua 0.69% PHP 0.01% Ruby 0.01% Rust 0.02% HTML 0.18%

.emacs.d's Introduction

Main screenshot

MIT DOOM v1.3.0

This is an Emacs configuration for a stubborn, melodramatic and shell-dwelling vimmer disappointed with the text-editor status quo.

Doom tries to look and act like modern editors (whatever that will mean to me on any given day), emulates vim as best it can and strives to surpass it in any way possible. All to fit my needs as a software developer, indie game developer, UX designer, scientist and doom enthusiast.

It was tailored for GUI Emacs 25+ on OSX 10.11+ and Arch Linux 4.7+. I use vim everywhere else.

NOTE: you can find the theme in a separate repo.

Installation

Depends on Cask and make:

git clone https://github.com/hlissner/.emacs.d ~/.emacs.d
cd ~/.emacs.d
make          # installs plugins via cask and generates autoloads

# OPTIONAL
make compile  # compiles core and autoloaded files
make snippets # install hlissner/emacs-snippets into private/snippets

Run :bc! for a more comprehensive byte compile (:bc will compile the current, open *.el file).

For OSX users, I recommend Yukihiro Matsumoto's fork of Emacs, which you can get through homebrew:

brew tap railwaycat/emacsmacport
brew install emacs-mac --with-imagemagick --with-modern-icon --HEAD

Features

To get a picture of what's in here, check out:

See screenshots in the screenshots branch.

Highlights

  • Strong support for a large selection of languages, including C/C++, Ruby, Python, PHP, JS, Elisp, Haskell, Lua, Julia, Go, Crystal, Assembly, Java, Swift, (Ba|z)?sh, Scala, Rust, LaTeX, Processing, Octave, and more!
  • Tamed popup windows with shackle. e.g. help buffers will always pop up at the bottom of the frame, and are removed with ESC.
  • Workspaces & session persistence with workgroups2.
  • Project and workspace-sensitive buffer navigation and functions
  • A vim-like environment with evil-mode
    • vim-seek/vim-sneak functionality with evil-snipe (2-char motions)
    • Multiple cursors with evil-multiedit
    • Repeat (most) motions with SPC and shift+SPC (backwards)
    • On-the-fly keybindings with :[nviom]map
    • Global C-x omnicompletion (e.g. C-x+C-f for files)
  • Fast search utilities:
    • Project and buffer navigation with ivy
    • File browser sidebar with neotree
    • Project search (and replace) with counsel-ag (and wgrep)
    • Buffer search with swiper
  • REPLs for many languages including Ruby, Python, PHP, JS, Elisp, Haskell and Lua.
  • Minimalistic diffs in the fringe with git-gutter-fringe.
  • Modded org-mode to be a modern note-taking/LaTeX/word-processing platform. (WIP)
  • Code debugging interface with realgud (currently supports gdb, trepanjs, bashdb and zshdb, working on Python/Ruby support)
  • A do-what-I-mean jump-to-definition implementation that either uses major-mode commands or falls back to dumb-jump/ctags.
  • A pretty mode-line inspired by Atom's. It includes:
    • evil-search/iedit/evil-substitute mode-line integration
    • Macro-recording indicator
    • Python/ruby version in mode-line (for rbenv/pyenv)

Other features

  • Line numbers + highlight with nlinum
  • On-demand [platform agnostic] shell with eshell
  • Consistent marker-based code-folding with hideshow
  • Inline code execution anywhere (once or live) with quickrun
  • Snippet expansion and file templates with yasnippet
  • Completion with company-mode
  • Syntax checking with flycheck
  • Custom O/S interaction commands, like os-reveal and os-open-in-browser
  • Custom TODO, FIXME and NOTE highlighting and search (:todo)
  • big-mode for presentations and demonstrations (:big)
  • Tmux integration with :t and :tcd ex commands

Troubleshooting

Though this wasn't designed with anyone else's use in mind, I'd be happy to help anyone out with problems encountered using (or cribbing from) my config. Don't hesitate to report bugs!

A few things to keep in mind:

  1. Cask can be flakey, especially with new builds. If you're getting odd errors when starting up Emacs, try to run make install again. I've also had cryptic cask errors that I had to reboot to resolve. YMMV.
  2. If you add new functions to any of the autoloaded (core|modules)/defuns/*.el library files, run make autoloads afterwards. :reload will reload Emacs' load-path if you have Emacs open while doing so.

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.