doomemacs/CHANGELOG.org
2017-07-14 15:21:09 +02:00

36 KiB
Raw Blame History

Changelog

Todo

  • Potential plugins:

    • completion/ivy ivy-rich, possible replacement for +ivy/switch-buffer
    • 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; which would be useful for CRM storage.
    • core helpful, a better help buffer; possible replacement for describe-function.
  • Planned modules:

    • app/finance ledger + org-mode.
    • 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)
    • lang/alda Language support for Alda, the music programming language, using alda-mode.
    • 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.
  • Bug fixes:

    • 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.
    • ui/doom-modeline Fix 0/0 leftover panel in modeline (caused by lingering anzu state).
  • 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.
  • Add README.org's with working babel blocks to modules.
  • Document best practices for customizing DOOM emacs.
  • ui/doom-modeline fix hardcoded spacing in between segments.
  • Rewrite main README.md to include more information about setting up, customizing, and troubleshooting DOOM Emacs.
  • Update bin/org-capture to read from stdin in the absence of arguments.

Unreleased (master)

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 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)