doomemacs/CHANGELOG.org
2017-09-23 13:48:07 +02:00

41 KiB
Raw Blame History

Changelog

Todo

  • Potential plugins:

    • app/present focus, for presenting code
    • lsp-mode, client for MS Language Server Protocol, keep an eye on this
    • lang/javascript indium (IDE), keep an eye on this
    • lang/javascript add-node-modules-path (adds node_modules to exec-path)
    • lang/javascript flycheck-flow (Flow support for JS)
    • lang/org orgit (org links to magit buffers)
    • lang/org org-ref (bibtex/citation helper)
    • lang/org org-easy-img-insert
    • lang/latex latex-extra (utility commands)
    • lang/latex latex-preview-pane
    • lang/julia julia-shell (unsure if better than inferior-julia in julia-mode)
    • lang/python pyimport or importmagic
    • emacs-imagex, for manipulating images at point (zooming?)
    • tools/term shx, an extension for the shell in Emacs
    • app/crm emacsql, a sqlite backend; possibly useful for CRM storage.
    • core helpful, a better help buffer; replacement for describe-function?
  • Planned modules:

    • app/crm Customer Relations Management, in Emacs, using org-mode.
    • app/write Make Emacs into a focused plaintext word processor (using markdown, org and rst) for writing papers and stories.
    • app/regex PCRE IDE, with live buffer matching, search/replace support, and an export-to-code feature for various languages.

      • Perl backend
      • Search and replace support
      • Highlight replaced segments
      • Export-to-code feature for:

        • python (use re or regex)
        • php (preg_(match(_all)?|replace))
        • ruby (%r[.+])
        • javascript (node) (/.+/.test(...))
        • C (regex.h + regcomp)
        • C++ (regex reg(regexp, ...))
      • Syntax highlighter for +regex-mode (plus make it a major mode)
      • Optimize: communicate with perl process (with make-process instead of call-process)
    • org/org-publish publishing org files to HTML (thanks to matthewgraybosch)
    • org/org-attach my own, simpler attachment system with drag-drop image attachment support and centralized storage.
    • app/torrents Emacs as a torrent client (powered by transmission.el)
  • core-ui Replace or fix winner-mode unreliability (will close windows trying to revive killed buffers). Perhaps make doom/kill-this-buffer only disassociate buffer from persp-mode or bury buffer if persp-mode is inactive.
  • org

    • Better shackle + org-agenda integration
    • Fix janky visual line motions (evil-next-visual-line, etc)
    • Fix janky cursor positioning when jumping between org-table cells from insert mode.
    • Certain characters/keyswhen typed in a tablecause the cell to shrink (likely cause: custom self-insert-char behavior like smartparens pairs & custom SPC/BKSPC binds)
  • feature/jump Automatic etags generation (for dwim go-to-definition and, perhaps, code-completion for some languages; lua maybe?).
  • lang/php Automatic and async tags generation using phpctags.
  • lang/lua True, dynamic code-completion? Looks like this PR in lua-mode may have the answer. Does it make company-lua redundant?
  • tools/upload Add +upload/open-remote-file command to open current file on the remote (with TRAMP).
  • Add bin/org-alert script a cron script that scans TODOs in org files and dispatches system alerts.
  • feature/workspaces Add a bookmarks feature, but for wconfs, that can revive file buffers. Also needs an interface.
  • ui/doom-modeline

    • Fix hardcoded spacing in between segments.
    • Fix 0/0 leftover panel in modeline (caused by lingering anzu state).
  • Update bin/org-capture to read from stdin in the absence of arguments.
  • core-popups Add support for moving popup windows to the +evil/window-move-* commands #171

Unreleased (master)

  • doom

    • Added new module: lang/ledger, for editing ledger files.
    • Fixed make update to work even if Doom is installed somewhere other than \~/.emacs.d (see #190).
    • Removed colons from makefile task target names. They broke compatibility with certain versions of make.
  • feature

    • hydra Display a separator along the bottom of hydra windows for extra contrast.
  • ui

    • doom-dashboard Elements are now centered using window-local margins, which fixes discrepancies when multiple dashboards are visible in different sized windows and/or frames (see #192).
  • org

    • If a table is under point when +org/toggle-fold is invoked, the table is realigned.
    • org-capture Fix a vestigial reference to a long-since-renamed function: doom/project-root.

2.0.5 (Sep 03, 2017)

  • doom

    • Added new module: tools/rgb, with tools for dealing with colors (thanks to bandresen)
    • Added new module: tools/prodigy, with tools for managing external services (thanks to bandresen)
    • Added new module: feature/hydra, offers an extra and customizable layer of modal keybinds (thanks to bandresen)
    • Added two new core-lib helpers for macros: doom-enlist and doom-unquote.
    • Switch to doom-fallback-buffer after using doom/kill-all-buffers (or :killall!).
    • make doctor now does font detection and will complain when fonts are missing.
    • When switching to a new project, a new workspace is spawned and a fuzzy find-file prompt is opened. However, a buffer from the previous workspace would linger on screen and the scratch buffer would CD to HOME, rather than the project root. This is fixed now.
    • Added module flags to the doom! macro in init.el, and modified the featurep! macro so that it can be used to detect these flags from within modules. It is up to modules how to interpret them. More information in 0b7b880.
    • Fix projectile-find-file not respecting default-directory (caused by changes upstream).
    • Rewrote, revised and expanded module documentation, and created a wiki with more information.
    • Removed the :L flag from map! and replaced it with a :local property.
    • Added new function: doom|disable-vi-tilde-fringe for turning off vi-tilde-fringe in select buffers.
    • Added support for relative line numbers (see doom-line-numbers-style), using nlinum-relative on Emacs <26, and display-line-numbers on Emacs 26+.
  • feature

    • file-templates Added a file template for:

      • *.org files
      • Module README.org files.
    • jump

      • Added documentation for :jump setting, describing the three properties it supports (:definition, :references and :documentation).
      • Rewrote +jump/online to:

        • Use the current selection, if active, or prompt for a query otherwise (with the thing at point as the initial input).
        • Prompts for the provider (search engine) on first use, and reuses the last provider on consecutive uses. If the universal argument is supplied, force +jump/online to prompt for the provider anyway.
    • workspaces Fix interactive renaming of workspaces, as well as the ability to save and load workspaces from files (see #200).
  • completion

    • Added all-the-icons support to ivy-switch-buffer and +ivy/switch-workspace-buffer. Enable this with (setq +ivy-buffer-icons t).
  • ui

    • rainbow-mode is no longer activated on prog-mode-hook.
    • doom-modeline

      • Modeline now uses shrink-path.el to shrink the buffer name in the case of a small frame (thanks to bandresen). See #176
      • Fixed mode-line going blank in terminal Emacs (thanks to bandresen).
    • doom-dashboard Fixed "Load last session" button on dashboard.
  • tools

    • eshell General improvements made to further integrate eshell with Doom (thanks to bandresen). See #160
    • pass +pass-get-field now no-ops if used in a non-interactive session (e.g. during testing or byte compilation).
    • neotree Add r and d bindings for renaming and deleting files, respectively.
  • lang

    • cc The advise function c-lineup-arglist was missing, and has now been reimplemented.
    • haskell With module flags implemented, Intero support is now available to lang/haskell and is now the default. Dante support is still available with the +dante flag.
    • java Now auto-installs meghanda-server on first use, and fixed code-completion in java buffers.
  • org

    • Fixed vanilla C-j/C-k bindings overshadowing custom window navigation bindings.
    • Added C-[hjkl] keybindings in insert mode for org table navigation.
    • Fixed +org/insert-item throwing save-excursion: Wrong type argument: listp, 1 error when used from BOL on the first sub-item in a list.

2.0.4 (Jul 14, 2017)

  • Module changes:

    • Added tools/password-store Emacs as a password manager, using pass as a backend (contributed by brandresen).
    • Added app/irc Emacs as an IRC client, using circe (contributed by brandresen).

      • +pass/ivy for ivy integration, with edit/copy field/open url actions.
      • helm-pass for helm integration.
    • Added lang/hy support for hylang, a combination of Lisp and Python (thanks to bandresen).
    • Added lang/ocaml support for OCAML (thanks to Ptival)
    • Added lang/plantuml drawing diagrams in plain text
    • Added lang/perl Perl6 support for Emacs
    • Added ui/tabbar add tabs to Doom via tabbar (I don't recommend using it)
    • Removed lang/org
    • Added org a new module category for org and org extensions
    • Removed app/present (replaced mostly with org/org-present)

      • org/org-babel executable code snippets in org-mode, with support for a variety of languages.
      • org/org-capture a better org-capture, in or outside of Emacs.
      • org/org-export a centralized export system with more export backends.
      • org/org-notebook org-mode as a general notebook.
      • org/org-present org-mode for presentations.
    • Added tools/impatient-mode show off live buffers via HTTP.
  • core

    • New variable: doom-host-dir, as a base path for doom-etc-dir and doom-cache-dir.
    • New hooks: doom-init-hook and doom-post-init-hook, which are run on emacs-startup-hook. This is meant to simplify post-Emacs initialization hooks (after-init-hook, emacs-startup-hook and window-setup-hook) into two unambiguous ones.
    • Fix private/<user-login-name>/init.el not being auto-loaded when the user's private module is absent in the root init.el file.
    • Improve error handling across the board. Emacs should now report more helpful errors. Catastrophic errors will be less likely to inhibit later modules from being loaded.
    • Unit-tests have been moved to their respective modules (and core/test/).
    • Fix def-setting! to act more like defmacro; don't aggressively evaluate its arguments on expansion.
    • New function: doom-set-buffer-real BUFFER FLAG makes Doom consider BUFFER real, no matter what.
    • Add INSTALLED-ONLY-P argument to doom-get-packages to filter packages that aren't installed.
    • core-ui

      • Add quit confirmation when trying to close a frame that contains real buffers.
      • Fix quit confirmations for clients connected to emacs --daemon with emacsclient.
      • Brought back nlinum-hl, which offers some line number fixes for web-mode and markdown-mode.
      • Don't report the buffer modified when injecting (or deleting) trailing whitespace in doom|inject-trailing-whitespace and doom|init-highlight-indentation.
      • all-the-icons now fails gracefully in the terminal.
      • New hook: doom-init-ui-hook, run whenever the UI needs to be reloaded (and once at startup). Theme and font loading is also attached to this hook.
      • New variables for font and theme loading: doom-theme, doom-font, doom-variable-pitch-font, and doom-unicode-font.
      • New variables for customizing line numbers: doom-line-number-lpad, doom-line-number-rpad, and doom-line-number-pad-char. These were added to facilitate custom whitespace characters in line numbers, e.g. /u2002 (a unicode character that looks like a space). Doing so fixes an issue where whitespace-mode with space-mark would replace all space characters indiscriminately, even in line numbers.
      • Add hooks doom-pre-reload-theme-hook and doom-post-reload-theme-hook to doom/reload-theme command.
    • core-popups

      • Fix an issue where more specific popup rules were being overriden by more general rules.
      • New command: doom/other-popup cycles between open popup windows and the original buffer that you originated from. Discussed in #141.
    • core-editor

      • Change what files recentf will ignore: everything in doom-host-dir is now ignored and anything else in doom-local-dir won't be.
      • New interactive command: doom/scratch-buffer (replaces +doom:scratch-buffer in :ui doom).
    • core-packages

      • Generalize doom-package-*-p functions into (doom-package-prop NAME PROPERTY).
      • Fix quelpa temporary files (in quelpa-build-dir) not being removed when a quelpa package was uninstalled.
      • New hook: doom-reload-hook (sort of). This has been around for a while, but now it is defined and documented. It runs when doom/reload-load-path is called (which gets called remotely if you run package management while an Emacs session is active).
      • load! can now accept a string as its first argument (the path).
  • feature

    • feature/evil

      • Remove goto-last-change, which conflicts with goto-chg, which is a dependency of evil (that does the exact same thing, but is what evil uses).
    • feature/jump

      • Remove :xref-backend setting (replaced with :jump).
      • Add :jump MAJOR-MODE &rest PLIST setting, which recognizes four properties (that accept functions/commands):

        • :definition: jumps to the definition of the symbol under point.
        • :references: lists all references of the symbol at point and lets you jump to them.
        • :documentation: shows documentation for the symbol at point.
        • :xref-backend: a function that serves as an xref backend; this replaces :definition and :references.
    • feature/workspaces

      • New function: +workspace-contains-buffer-p &optional BUFFER PERSP return non-nil if BUFFER (defaults to current buffer) is in PERSP (defaults to current perspective).
      • Fix +workspace-p not detecting a perspective struct.
      • Fix +workspace-buffer-list not preserving buffer order (by recency).
  • completion

    • completion/company

      • Add company-dabbrev and company-ispell to the default Company backends. This ensures you have some completion available in buffers previously without any. This is especially useful for text-mode buffers. Discussed in #134.
  • ui

    • ui/doom

      • Vastly improve daemon and terminal support for doom-themes by reloading the theme when a new client is attached, or new terminal/daemon frame is created. This prevents incorrect colors from bleeding across face class barriers.
      • Removed evil command +doom:scratch-buffer (replaced with doom/scratch-buffer in core-ui).
      • Decoupled font and theme loading from this module. This has now been delegated to core-ui. These variables no longer exist: +doom-theme, +doom-font, +doom-variable-pitch-font, +doom-unicode-font. Discussed in #117.
    • ui/doom-dashboard

      • Fix dashboard not opening in emacsclient/daemon frames.
      • Add gg and G keybinds in dashboard for moving to the first and last button (respectively).
    • ui/doom-modeline

      • Reorganize order of modeline segments, placing the vc branch last. This minimizes the non-uniform spacing caused by all-the-icon icons.
      • Fix blank mode-line caused by a nil buffer-file-name (used in vcs segment). For example, in org indirect buffers.
  • tools

    • tools/neotree

      • Fix neotree refusing to open when it was already open in another frame. This is especially frustrating when neotree is open in a (likely buried) terminal emacsclient session, and you're trying to open neotree in another.
  • lang

    • lang/cc

      • Add code completion to glsl-mode (powered by company-glsl).
    • lang/markdown

      • Source blocks are now fontified natively, with the fontification of their native major-modes (see markdown-fontify-code-blocks-natively).
    • lang/sh

      • Fix fontification of command substitutions in double-quoted strings to help distinguish them from the rest of string literals.
    • lang/web

      • Fix HTML entity encoding/decoding functions.
  • org

    • org/org

      • Fix M-RET in plain lists not preserving indent level for new items.
      • Fix cursor jumping away when toggling folds or realigning org tables (pressing TAB).
      • Minimized keybindings into the bare necessities; most custom bindings have been moved to my private module.
    • org/org-capture

      • Start org-capture-mode in insert-mode (if evil is loaded).

2.0.3 (Jun 11, 2017)

  • New modules

    • ui/unicode fixes unicode font-rendering for a variety of languages, using unicode-fonts.
    • ui/evil-goggles visual feedback for edit operations in evil-mode, using evil-goggles.
    • ui/nav-flash (extracted from ui/doom) flashes current line when moving cursor considerable distrances, using nav-flash.
    • tools/neotree (extracted from feature/evil) a file explorer sidebar, using neotree.
  • core

    • New special file: private/<user-login-name>/init.el is now loaded before modules (after core).
    • :private <user-login-name> is now automatically loaded by doom!.
    • New help command: doom/describe-module for DOOM modules.
    • New help command: doom/describe-setting for possible set! targets.
    • Add make doctor to diagnose common issues with your setup & environment.
    • Removed def-bootstrap & doom-bootstrap. It was a clumsy system. I'll replace it with README.org files in each module, with working, tangle-able source blocks.
    • core-os

      • Don't use GTK tooltips on Linux (ugly!).
    • core-ui

      • New plugin: vi-tilde-fringe subtle, vim-ish empty-line indicator.
      • New variable: doom-ui-mode-names (alist) for changing mode-name of major-modes.
      • Fix left-over hl-line overlays when hl-line-mode is uncleanly killed (e.g. when the major-mode is changed).
      • Fix disappearing line numbers in nlinum (thanks to gilbertw1).
      • Move theme/font bootstrap to core-ui.
      • New hook: doom-init-ui-hook
      • New global minor-mode doom-big-font-mode and variable doom-big-font.
    • core-keybinds

      • New property for map!: :textobj for binding to evil text objects keymaps.
      • Fix :after & :map* properties in map! macro (wasn't working at all).
      • Change keybinding scheme; the leader key is now SPC and localleader SPC m, inspired by spacemacs.
      • Enable which-key pops up for all keys.
    • core-popups

      • Properly persist popup window parameter between sessions.
      • Improve magit+shackle integration; ensures that links will be followed within the popup they were opened.
      • Add doom-popup-no-fringe option (default = t). When non-nil, fringes will be disabled in popup windows (in doom-popup-mode).
    • core-packages

      • Fix failure to detect out-of-date QUELPA packages.
      • Fix custom-file (and custom settings) not being loaded.
      • Fix crash in doom-update-package caused by unreachable, new dependencies.
      • Make doom-update-package atomic in case of failure.
      • Make doom-refresh-packages async.
      • Improve the security of package management (via ELPA) by a) forcing Emacs to verify TLS connections and b) use HTTPS sources for MELPA and ELPA.
      • Make doom-get-outdated-packages asynchronous, producing a substantial speed-up when updating packages from Quelpa sources.
  • feature

    • feature/evil

      • Add +evil:mc command evil-mc.
      • Add +evil/mc-make-cursor-here, with visual-block support for evil-mc.
      • d (operator) now invokes wgrep-mark-deletion in wgrep buffers.
      • New code folding system that combines hideshow (built-in; for indent/marker-based folds) and evil-vimish-fold (for arbitrary folds).
      • Fix evil-matchit in visual mode.
      • Fix evil-multiedit M-d bindings.
      • Fix stringp error caused by unintialized state in hideshow.
      • Fix evil normal-mode keybindings in help-mode popups.
      • Change how +evil-esc-hook hooks are handled: they now short-circuit on the first hook to return non-nil.
      • Remove +evil/matchit (thin wrapper around evilmi-jump-items).
      • Remove neotree plugin (moved to tools/neotree).
    • feature/jump

    • feature/workspaces

      • No longer saves session on quit if session was blank.
      • Fix persp-mode switching to main workspace if auto-resume is on.
      • Fix +workspace-get returning a non-nil "null perspective" on some occasions where NAME doesn't exist. This is because persp-get-by-name returns the value of persp-not-persp to signify null instead of actual nil.
      • Decouple workspace buffer-list functions from doom buffer library. Now, the workspaces module will explicitly advise doom-buffer-list.
      • +workspace-list now returns a list of perspective structs, rather than a list of strings. +workspace-list-names was introduced for the latter.
  • completion

    • completion/company

      • Change :company-backends to accept a variadic list of backends to prepend to company-backends. Its signature is now (set! :company-backends MODES &rest BACKENDS) (#125).
    • completion/ivy

      • Flexible column width for +ivy/tasks.
  • ui

    • ui/doom

      • New plugin: solaire-mode replaces doom-buffer-mode; brightens source windows and dims transient, temporary, or popup windows.
      • BREAKING CHANGE: Decoupled theme and font loading from ui/doom. This has been moved to core-ui. The following variables have been renamed:

        • +doom-theme => doom-theme
        • +doom-font => doom-font
        • +doom-variable-pitch-font => doom-variable-pitch-font
        • +doom-unicode-font => doom-unicode-font
    • ui/doom-modeline

      • Reduce excess whitespace on right of flycheck segment.
      • Buffer-path and file-name segments now use different faces.
      • The vcs segment now uses a slightly darker color (in clean branches).
      • Fix blank mode-line when buffer-file-name is nil (#130)
    • ui/nav-flash

      • Fix over-aggressive nav-flash'ing on evil-multiedit or in eshell/term buffers.
  • tools

    • tools/gist

      • Changed new gists to be private by default.
  • lang

    • lang/haskell

      • New plugin: company-ghc code-completion support for haskell (requires ghc-mod).
    • lang/php

      • New plugin: company-php code-completion support for php (requires a TAGs file created with phpctags).
    • lang/emacs-lisp

      • Omit defuns inside macros from the imenu index.
      • Don't enable flycheck-mode in emacs.d files.
    • lang/org

      • Replace org-bullets source with more up-to-date fork.
    • lang/scala

      • Fix void-variable imenu-auto-rescan error caused by ensime--setup-imenu trying to use imenu variables before loading imenu.
  • private/hlissner

    • Add gzz binding (+evil/mc-make-cursor-here)
    • Add :mc ex command (+evil:mc)
    • Add :lookup ex command (+jump:online).
    • Add :gblame ex command (magit-blame).
    • Add :grevert ex command (git-gutter:revert-hook).

2.0.2 (May 13, 2017)

  • New modules

    • tools/gist allows you to manage and create gists, using gist.el.
    • tools/term quickly spawn a terminal (in a popup or buffer) using multi-term
    • app/twitter Emacs as a twitter client, using twittering-mode
  • core

    • Stop "buffer is read-only" messages while in minibuffer, when I accidentally try to edit the prompt. It's correct behavior, but it consumes the minibuffers, hiding what I'm typing.
    • Fix Emacs daemon compatibility with DOOM, which assumed a frame will always be visible on startup, causing errors when Emacs is launched as a daemon.
    • Code-style change: use sharp-quote for functions. This makes the byte-compiler output missing-function warnings when they can't be found, which is helpful.
    • Stop projectile & git-gutter checks when in a TRAMP buffer; it causes tremendous slowdowns, to the point of being unusable.
    • Add message! & format! macros for printing colored output either a) in a popup buffer when in an interactive session or b) with ansi codes when in an noninteractive session.
    • Changed doom/recompile to aggresively recompile core/core.el to fix load-path inconsistencies when you've byte-compiled your config and run a package management command.
    • core-lib

      • Add :append support to add-transient-hook! macro.
    • core-popups

      • Fix over-eager ESC binding killing all popups indiscriminantly
    • core-ui

      • Remove references to ace-maximize-window (obsolete)
      • Fix whitespace adjustment in highlight-indentation-current-column-mode
    • core-packages

      • Package management now produces colored and detailed feedback.
  • ui

    • ui/doom

      • Git-gutter fringe bitmaps no longer appear truncated.
      • Fix lack of syntax highlighting in scratch buffer
      • Use comment face as default color for +doom-folded-face
    • ui/doom-modeline

      • Fix modeline disappearing due to loss of state. doom--modeline-format was being killed when switching major modes.
  • feature

    • feature/eval

      • Fix :repl & +eval/repl-send-region.
      • Fix +eval/region failing only on first invocation because +eval-runners-alist wasn't populated until quickrun is loaded.
      • Add TAB auto-completion in comint-mode and REPL buffers
    • feature/evil

      • Fix :mv & :rm.
      • Fix Neotree forgetting that it's a neotree window when switching perspectives.
      • New plugin: evil-mc multiple cursors for evil-mode (thanks to gilbertw1)
      • Achieve vim parity w/ file modifiers (+evil*ex-replace-special-filenames)
    • feature/version-control

      • New plugin: git-timemachine stepping through a file's git history.
      • New plugin: git-link generates and opens links to "this file"'s remote repo with your default browser.
      • Add :gbrowse: find this file on github/gitlab/bitbucket in your browser.
      • Add :gissues: open this project's issues page in your browser.
      • Fix +vcs/git-browse and +vcs/git-browse-issues.
    • feature/workspaces

      • Add BANG modifier to :cleanup to span all workspaces.
      • Since persp-mode handles its "nil" perspective differently from others, pretend that it doesn't exist and spawn a new "main" perspective.
  • completion

    • completion/ivy

      • Add +ivy-do-action! factory macro. Use it for in-ivy keybindings.
      • Add ripgrep file search support. Ripgrep doesn't support multiline searches, but is faster. Use ag for multiline (or more PCRE-compliant) searches.
      • Reverse ivy's built-in behavior of reversing escaping of parentheses when using the_silver_searcher or ripgrep. If you want literal parentheses, escape them explicitly.
      • Removed def-counsel-action!
      • When a selection is used for :ag, the selected text is now regexp-escaped.
  • tools

    • tools/tmux

      • Fix and refactor library (general update).
  • lang

    • lang/cc

    • lang/javascript

      • Improve electric indent support for js2-mode and rjsx-mode
    • lang/org

      • Fix org-checkbox-statistics not respecting underlying faces
      • Disable show-paren-mode in org-mode due to conflicts with org-indent which cause indentation flickering.
      • Bind M-z (undo), C-u (delete-line) and C-w (delete-word) in org-store-link and org-insert-link prompts.
      • Apply org-headline-done face to checked-checkbox lines, to match how DONE headlines look. Also applies this to items whose subitems are all complete.
      • Changed default fold behavior when loading an org-file to unfold first level folds.
      • Add bin/org-capture shell script for invoking the org-capture frame from outside Emacs.
      • Add babel support for: rust, restclient, sql, google translate, haskell and go.
      • Add +org-pretty-mode for toggling "pretty" fontification. Prettified entities or hidden regions can make editing difficult.
    • lang/python

      • Add ipython detection and REPL support
      • Simplify matchit key (%) in python. The default is to prioritize if-else and other blocks over brackets. I found this frustrating.
    • lang/web

      • Fix +web-encode-entities, +web-decode-entities, +web/encode-entities-region and +web/decode-entities-region.
  • app

    • app/email

      • Replace mbsync with offlineimap.
      • Add support for marking multiple emails when in visual-mode (evil) in a mu4e-headers-mode buffer.
      • Fix trash mark causing duplicates upstream.
      • Make refiling more compatible with archiving in gmail.
  • private/hlissner

    • Add keybinds for evil-mc: based around gz (like gzz to toggle cursor freeze, and gzc to create a cursor "here").
    • Add keybinds for evil-multiedit: based around M-d and M-D.
    • Replace :find with :ag, :agc[wd], :rg and :rgc[wd].
    • Fix :x ex command (open scratch buffer)

2.0.1 (Apr 8, 2017)

  • New modules

    • feature/jump extra code navigation tools, a jump-to-definition implementation that just works (dumb-jump), and tools for looking things up online.
    • app/rss Emacs as an RSS reader, using elfeed
  • core

    • Fix doom-kill-process-buffers not killing process buffers.
    • Fix hippie-expand in ex mode/the minibuffer.
    • Remove unnecessary provide's in core autoloaded libraries.
    • Fix doom-buffers-in-mode not detecting buffers in major-modes derived from the target mode.
    • Fix out-of-bounds error in doom/backward-delete-whitespace-to-column.
    • Remove doom/append-semicolon; use evil append mode instead.
    • Add module bootstrapping mechanism (for installing external dependencies); see doom-bootstrap, make bootstrap and def-bootstrap!.
    • Use doom-local-dir for TRAMP's temp files.
    • New variable: doom-real-buffer-functions for customizing how doom-real-buffer-p determines what a "real" buffer is.
    • Add def-memoize! for defining memoized functions and doom-memoize for memoizing existing ones.
    • core-lib

      • Fix remove-hook! macro not expanding correctly.
      • New macro: add-transient-hook!; attach a hook to a hook or function that will remove itself once it runs.
    • core-packages

      • Add doom/recompile, for re-byte-compiling DOOM.
      • Add doom/compile-lite / make compile-lite, which will only byte-compile DOOM's core files, which is a lighter alternative to doom/compile.
      • Fix duplicates packages appearing in package-management retrieval library.
    • core-os

      • Reducing how aggressive exec-path caching is. A persistent-soft and byte-compilation cache is excessive. The latter is good (and flexible) enough.
    • core-popups

      • Set default :align and :select shackle properties (of 8 and below).
    • core-editor

      • Advise delete-trailing-whitespace to not affect current line. If evil is loaded, then it may affect the current line if we're not in insert mode.
    • core-projects

      • Recognize package.json as a project-root file (see projectile-project-root-files).
      • Fix :files property in def-project-mode! not detecting project files.
    • core-ui

  • feature

    • feature/eval

      • Fix build tasks system; now tested and works.
      • Complete rewrite of the module.
    • feature/evil

      • Fix error in +evil:file-move if save-place-mode is disabled.
    • feature/snippets

      • Don't hijack TAB in other modes.
      • Enable yas-triggers-in-field, which adds support for nested snippets.
      • Fix snippet aliases (%alias).
    • feature/version-control

      • Remove evil-magit and evil-ified bindings for magit in general. Instead, just use emacs mode. If evil is needed, toggle it with C-z.
    • feature/workspaces

      • Fix +workspace/kill-session not actually killing the session.
      • Revert forcing persp-mode to stay quiet when it saves the session to file. It just isn't important enough.
      • Create a new perspective when switching projects (integrates projectile with persp-mode).
      • Create a new perspective for new frames.
  • ui

    • ui/doom

      • Improve doom-buffer-mode heuristics with doom-real-buffer-p, so that only truly real buffers are enlightened.
      • Replace plugin beacon with nav-flash the former had a habit of causing pauses and pushing my cursor. It also didn't look as nice.
    • ui/doom-modeline

      • Complete rewrite of the module for code readability and performance.
    • ui/doom-dashboard

      • Fix a max-specpdl-size error caused on MacOS, having to do with a kill-buffer-query-function hook being attached way too soon in the startup process.
  • lang

    • lang/cc

      • Fix empty buffer-file-name in magic-mode-alist rule for obj-c.
      • Fix irony-mode initialization in cc modes.
    • lang/emacs-lisp

      • Add xref support for elisp.
    • lang/go

    • lang/haskell

      • New plugin: dante offers xref and flycheck integration, as well as code-navigation tools, like finding definitions, references, type info, etc.
      • Fix errors on haskell-mode (caused by missing dependencies).
    • lang/javascript

      • New plugin: skewer-mode provides live JS/CSS/HTML evaluation in a browser.
      • New plugin: web-beautify js reformatting.
      • New plugin: xref-js2 xref integration for javascript.
      • New plugin: rjsx-mode adds jsx support.

        • Fix doom/newline-and-indent in rjsx-mode
        • Remove electric < in rjsx-mode
        • Enable emmet-mode in rjsx-mode
      • Fix empty buffer-file-name in magic-mode-alist rule for rjsx-mode.
      • Force tern use projectile for project path detection and resolution.
      • Add gulpfile.js detection (+javascript-gulp-mode).
    • lang/latex

      • Improve integration between auctex, evil and reftex-toc-mode: j/k motion keys have been bound in reftex-toc-mode, the modeline is hidden, and reftex-toc-rescan is run automatically.
    • lang/org

      • Add +notes submodule, which makes it easy to access org-mode based notes for the current major-mode or the current project. See +org/browse-notes-for-major-mode and +org/browse-notes-for-project.
      • Ensure newer org-mode 9.0+ (downloaded from ELPA) is loaded instead of the older, built-in version of org-mode (8.3).
      • Update +org/dwim-at-point, +org/insert-item & +org/toggle-checkbox for org-mode 9.0
      • Fix shackle popup integration with org-export dispatch window.
    • lang/ruby

      • Add {Pod,Puppet,Berks}file detection for ruby-mode.
    • lang/web

      • New plugin: web-beautify html/css reformatting
      • Remove +web-bower-mode. I don't use it anymore; I prefer npm as my sole package manager.
      • Improve +web-angularjs-mode detection by searching for angular 1 and 2 dependencies in package.json.
      • Add +web-react-mode and detect it by searching for reactjs dependencies in package.json.
  • app

    • app/rss

      • Hide modeline in elfeed-search-mode buffer.
    • app/present

      • New plugin: ox-reveal export a presentation to html, js & css from org-mode using reveal.js.
      • New plugin: org-tree-slides use org-mode directly for presentations.
      • Add +present/big-mode; which will toggle large fonts, controlled by +present-big-font.
      • New plugin: impatient-mode show off current buffer(s) over HTTP.
    • app/email

      • Add support for writing emails in org-mode, which renders to HTML on send.
      • Add support for sending email through SMTP on a secure port.
      • Add basic mu4e support.
  • private/hlissner

    • Fix TAB hijacking in magit.

2.0.0 (Jan 17, 2017)

  • New modules

    • tools/upload map local files to remotes, allowing you to upload/download files between them.
    • feature/jump offers a system for navigating codebases that "just works", powered by xref (new experimental Emacs reference API) & dumb-jump.
    • feature/workspaces offers grouped buffers/windows and persistent sessions. Recently replaced workgroups2 with the much-faster persp-mode.
  • core

    • Add .travis.yml and unit-tests.
    • Remove mplist library it was unused and poorly written.
    • core-popups

      • Replaced popwin with shackle; which is significantly lighter and more stable.
  • feature/spellcheck

    • Add selection popup for correcting spelling mistakes highlighted by flyspell.
  • completion/ivy

    • Add +ivy:todo for jumping to TODO/FIXME tags in your project.
  • lang/org

    • Make TAB do-what-I-mean (+org/dwim-at-point), which will either: follow a link, realign/recalculate tables, toggle checkboxes, toggle TODO/DONE tags, cycle archived subtrees, toggle latex preview fragments, execute babel blocks, or refresh inline images depending on where the cursor is.
  • lang/web

    • Add +css/toggle-inline-or-block command; it will expand/contract curly-braced blocks.
  • private/hlissner

    • Add :todo ex command (+ivy:todo)