From d2b721445abeeb1adf7b9c1a4beb3c1d3683a2cc Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 26 Feb 2016 09:30:41 -0500 Subject: [PATCH] Update README --- README.md | 77 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 42 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index 903f4a3b9..6c18e5c08 100644 --- a/README.md +++ b/README.md @@ -4,54 +4,62 @@ > What we do every night, Pinky... -This is the Emacs configuration for stubborn vimmers and megalomaniacal mice alike. It +This is an Emacs configuration for stubborn vimmers and megalomaniacal mice alike. It strives to emulate vim as best it can, and surpass it in any way possible. -It is tailored to my needs as a software developer, data scientist and writer, running -OSX and Emacs **25.1+**. +It is tailored to my needs as an software developer (app, game, and web), data scientist, +and writer running OSX and Emacs **24.5+**. ## Installation ``` brew install cask -brew install emacs --devel --with-imagemagick --with-librsvg --with-cocoa -git clone --recursive https://github.com/hlissner/emacs.d ~/.emacs.d +brew tap railwaycat/emacsmacport +brew install emacs-mac --with-imagemagick --with-modern-icon +git clone --depth 1 https://github.com/hlissner/emacs.d ~/.emacs.d cd ~/.emacs.d make # installs plugins via cask and generates autoloads ``` -And to optionally byte-compile everything: +And to optionally: -`make compile # optionally byte-compiles everything` +``` +make compile # optionally byte-compiles everything +make snippets # install hlissner/emacs-snippets into private/snippets +``` ## Features To get a picture of what's in here, check out: -* **[The Caskfile](Cask)**: contains a list of all the installed plugins, and to find where - they're configured. -* **[init.el](init.el)**: lists all the loaded modules -* **[private/my-bindings.el](private/my-bindings.el)**: most of the custom keybinds -* **[private/my-commands.el](private/my-commands.el)**: available custom ex commands +* **[The Caskfile](Cask)**: lists installed plugins and where they're configured. +* **[init.el](init.el)**: lists all loaded modules +* **[private/my-bindings.el]**: most of the custom keybinds +* **[private/my-commands.el]**: available custom ex commands ### Basic * Modal editing with **evil-mode** + * Pretty line numbers with **nlinum** and neckbearded hackery * Syntax checking with **Flycheck** * Completion with **company-mode** * Pretty mode-line with **spaceline** * Project navigation with **helm** and **neotree** * Session persistence (and tab emulation) with **workgroups2** * Run code inline with **quickrun** + * On-demand REPLs for many major modes with **repl-toggle**, including Ruby, Python, + PHP, JS, Elisp, and Lua. * 2-char searching with **evil-snipe** * Display diffs in the margin with **git-gutter** - * Repeat (most) motions with SPC - * Snippets with **yasnippet** + * Repeat (most) motions with SPC + * Snippet expansion with **yasnippet** * File template support with **auto-insert** and **yasnippet** - * *writing-mode* for distractions-free typing in any mode * Code folding with **hideshow**; doesn't allow arbitrary folds though - * Multiple region editing with **iedit** + * Multiple cursors with **[evil-multiedit]** * O/S interaction functions, like **os-reveal** and **os-open-in-browser** + * Custom TODO, FIxME and NOTE highlighting + * **big-mode** for presentations and demonstrations + * Tmux integration with `:t` and `:tcd` ex commands ### Advanced @@ -60,12 +68,12 @@ To get a picture of what's in here, check out: vc-annotate, quickrun, neotree, \*messages\*, org-mode--and others. * **Ex compatibility**: I've given quite a few plugins an Ex interface. For instance, `:t [ARGS]` and `:tcd` for tmux, `:ag [KEYWORDS]` for helm-ag, and `:align [REGEXP]` - for align-regexp. + for align-regexp. See [private/my-commands.el] for more. * **Incremental highlighting for `:g[lobal]`**: evil's stock global command does not do this (`:align` will also highlight matches). - * **iedit instead of multiple-cursors**: I've got my eye on - [evil-mc](https://github.com/gabesoft/evil-mc), but until I jump ship I use - **evil-iedit**. To use it, hop into visual mode, select a region and press + * **A multiple cursor implementation using iedit**: I could never get [evil-mc] working, + and [multiple-cursors] doesn't play nice with evil-mode, so I wrote [evil-multiedit]. + **evil-multiedit**. To use it, hop into visual mode, select a region and press S-r (shift-R). Your edits will apply to all highlighted regions. To limit iedit's scope: while in iedit mode go into visual, select a range and press SPC. @@ -77,7 +85,7 @@ To get a picture of what's in here, check out: ``` C-x C-l 'narf/company-whole-lines - C-x C-k 'company-dict + C-x C-k 'narf/company-dict-or-keywords C-x C-f 'company-files C-x C-] 'company-tags C-x s 'company-ispell @@ -90,7 +98,7 @@ To get a picture of what's in here, check out: (company-select-previous-or-abort)))) ``` - * **Popup REPLs**: currently supports python(ipython), ruby (pry), php (boris), + * **Popup REPLs**: currently supports python (ipython), ruby (pry), php (boris), elisp (ielm), lua, js (nodejs), and the shell. More support later, hopefully for go and rust. * **Yasnippet + auto-insert = file-templates with editable fields**: _and_ it works with @@ -108,25 +116,17 @@ To get a picture of what's in here, check out: brought a little of that to Emacs by defining `map!`, a macro for defining keybindings in as little space as possible. [See my bindings](private/my-bindings.el) for an example. - * **Org-mode**: I use Org for everything; CRM, note-taking, invoicing, prototyping - code (with org-babel), etc. I've added babel support for Rust and Go. I've written - #+CALL methods for extracting/compiling information with my CRM org plaintext files. - It's set up to display equations with LaTeX, sheet music with lilypond, and diagrams - with ditaa or plantuml. There is too much to cover in only one paragraph, is - constantly evolving, and isn't entirely included in this repo. * **Modeline improvements** - * **evil-search/iedit/evil-substitute mode-line integration**: I like how anzu - displays state about the current search in the mode-line, so I wrote mode-line - segments to display matches for evil-search (e.g. `/`/`?` searches), evil-substitute - (e.g. `%s/foo/bar`) and iedit. + * **evil-search/iedit/evil-substitute mode-line integration**: I better integrated + Anzu, evil-search, evil-substitute (e.g. `%s/foo/bar`) and + [evil-multiedit](https://github.com/hlissner/evil-multiedit) into the mode-line. ![matches count in mode-line](/../screenshots/search.png?raw=true) ![substitutions count in mode-line](/../screenshots/subst.png?raw=true) - * **Macro-recording indicator**: Displays an indicator that you are recording a macro - (and what register it's being recorded into). + * **Macro-recording indicator**: ![macro indicator in modeline](/../screenshots/macro.png?raw=true) - * **Show (py|rb)env version in mode-line**: see `define-env-command` on how to set it up + * **Show (py|rb)env version in mode-line**: see `define-env-command!` on how to set it up for other modes. It only displays in their respective major-modes. ![py/rb version in modeline](/../screenshots/version.png?raw=true) @@ -134,3 +134,10 @@ To get a picture of what's in here, check out: ## What about Windo- ![Windows, you say...](http://i3.kym-cdn.com/photos/images/newsfeed/000/549/293/504.gif) + + + [private/my-bindings.el]: private/my-bindings.el + [private/my-commands.el]: private/my-commands.el + [evil-mc]: https://github.com/gabesoft/evil-mc + [multiple-cursors]: https://github.com/magnars/multiple-cursors.el + [evil-multiedit]: https://github.com/hlissner/evil-multiedit