#+TITLE: Changelog - [[#unreleased-develop][Unreleased (develop)]] - [[#208-dec-09-2017][2.0.8 (Dec 09, 2017)]] - [[#207-nov-08-2017][2.0.7 (Nov 08, 2017)]] - [[#206-oct-05-2017][2.0.6 (Oct 05, 2017)]] - [[#205-sep-03-2017][2.0.5 (Sep 03, 2017)]] - [[#204-jul-14-2017][2.0.4 (Jul 14, 2017)]] - [[#203-jun-11-2017][2.0.3 (Jun 11, 2017)]] - [[#202-may-13-2017][2.0.2 (May 13, 2017)]] - [[#201-apr-8-2017][2.0.1 (Apr 8, 2017)]] - [[#200-jan-17-2017][2.0.0 (Jan 17, 2017)]] * Unreleased (develop) + *Module changes:* + Add =private/default= to replace =private/hlissner=, which is a more generic "starter" module for new users. My private module is now at [[https://github.com/hlissner/doom-emacs-private][hlissner/doom-emacs-private]]. + =general= + Fix "peculiar error" messages when running =bin/doom-doctor=, caused by poorly thought out error handling (see [[https://github.com/hlissner/doom-emacs/issues/175][#175]]). + Fix ~doom/am-i-secure~ command. + Add unicode symbols to package management commands. Looks a little nicer <3. + Transform =recentf= entries into their absolute paths with symlinks resolved (using ~file-truename~). + Local data and cache files are no longer host-namespaced. Originally, this was meant to facilitate using the same config files (symlinked) across different computers (e.g. via dropbox). Byte-compiled packages on one computer would cause errors on another, so I abandoned this practice, making ~doom-host-dir~ unnecessary. + Fix an issue during live byte-compilation (with auto-compile-on-save-mode) where ~gc-cons-threshold~ would get set to 304mb in the user's active session, causing freezes and stuttering. + Improve error handling when byte compiling Doom. It now cleans up after itself if something goes wrong, with improved error handling overall. + Fix =stringp= error thrown by ~doom-fetch~ in noninteractive sessions. + =core= Improve GPG integration by setting ~epa-file-encrypt-to~ to ~user-mail-address~, and ~epa-pinentry-mode~ to ~'loopback~ (so that Emacs will prompt you for the passphrase in the minibuffer). + =core-packages= Fix ~doom-module-pairs~ returning pairs in arbitrary order, causing load order errors. This is because the ~hash-table-values~ function in Emacs 25 and under uses ~maphash~, which reverses the hash-table, while newer versions use ~cl-loop~, which doesn't. + =core-packages= Fix ~doom//*~ not running from the correct default-directory, causing errors. + =core-ui= Fix cryptic missing-font errors (also, they are warnings now). + =core-ui= Account for Emacs 26 line numbers when calculating ~visual-fill-column-width~. + =core-editor= the =KILL= argument for ~quit-window &optional KILL WINDOW~ has been flipped and now kills the window's buffer by default. + =core-projects= Add ~doom-project-find-file~ and ~doom-project-browse~ for interactively fuzzy-finding and opening files in a directory/project. + Add ~doom/info~ command for collecting information about your system and session and puts it in the clipboard. This is to make it easier for those reporting bugs to easily include it. + Fix ibuffer windows not being handed off to popup system (see [[https://github.com/hlissner/doom-emacs/issues/309][#309]]). + =feature= + =file-templates= + Add a file template for fish shell scripts (thanks to [[https://github.com/amosbird][amosbird]]). + Fix some file templates not being inserted, like module README.org files. + =version-control= When evil-mode is available, start git commit message buffers in insert mode (see [[https://github.com/hlissner/doom-emacs/issues/300][#300]]). + =jump= Always prompt for provider when no major-mode specific online jumper is defined (for ~+jump/online~ and ~+jump/documentation~). + =ui= + =doom-dashboard= + Fix ~whitespace-mode~ and ~show-trailing-whitespace~ turning the dashboard into a Christmas tree. + Add the ~+doom-dashboard-pwd-policy~ option, giving you control over how ~default-directory~ is set in the dashboard. By default this is set to ~'last-project~, meaning the dashboard's cwd will match the project of the last buffer you killed. + =completion= + =ivy= Fix TAB only half-triggering auto-completion (see [[https://github.com/hlissner/doom-emacs/issues/303][#303]]). + =lang= + =cc= + Add =rtags= support for better code navigation. This replaces gxtag and etag support. Also includes automatic management of the rdm daemon. + Improved support for JSON compilation databases. Irony-mode (and by extension its flycheck and company plugins will now pick them up with more consistency). This ensures all these tools run with the same compile options as your project. + New ~+cc/reload-compile-db~ commands forcibly refreshes the compilation db of your current project, updating irony and running rtags daemon, if any. + The ~+cc-include-paths~ and ~+cc-compiler-options~ options have been renamed to ~+cc-default-include-paths~ and ~+cc-default-compiler-options~ for clarity. + Fix irony-mode complaining when it is enabled in non-C major-modes. + =org= + Change repo source for org-plus-contrib to emacsmirror. + Fix ~+org-dir~ being resolved too soon, robbing the user of the opportunity to change it in their private module. + Fix ~invalid file location~ error when capturing to a TODO template. + Prevent =org-plus-contrib= from being installed on Emacs 26+, as 9.1.4 is included with it. + Fix invalid function errors when drag'n'dropping files into org buffers (see [[https://github.com/hlissner/doom-emacs/issues/307][#307]]). + =java= Fix Doom install meghanada server while byte compiling your Emacs configuration. * 2.0.8 (Dec 09, 2017) + *Module changes:* + New module: =lang/nix=, adds support for editing nix configuration files. Contributed by [[https://github.com/ocharles][ocharles]]. + The =org/*= modules have been moved to =lang/org= and sub-modules therein. With the introduction of module flags in 2.0.5, it was unnecessary that org-mode had its own category. + Any module can now have an =init.el=, which will be loaded before any other modules are loaded. + =general= + Removed all core def-setting! definitions, because ~set!~ was intended for cross-module configuration, where modules may or may not be enabled. This consideration is unnecessary for Doom core configuration. The following settings have been removed: ~:editorconfig~, ~:theme~, ~:font~, ~:variable-font~, ~:unicode-font~, ~:big-font~. + Address various byte-compiler warnings that crop up in Emacs 26+, including obsolete (if|when)-let macro warnings. + Fix byte-compiler complaining that packages couldn't be found when that package is unwanted (e.g. conditionally installed or disabled packages). + =private/{user-login-name}= is no longer a "magic" module that is automatically loaded. + =core-packages= *BREAKING* Packages are no longer deferred by default. i.e. ~use-package-always-defer~ is now nil, as per the default. + =core-popup= Fix window-live-p error when using ~doom/other-popup~ (or its alias, ~other-popup~). + =core-ui= Fix hl-line highlighting the rest of the window past end-of-file in Emacs 26+. This is caused by a strange dynamic between hl-line and the new line numbers feature. + =feature= + =version-control= Fix an issue with shackle not managing magit's popups properly. This could cause the pointer to end up in the wrong places (e.g. when you try to commit; the commit message and diff buffers pop up and the pointer gets stuck in the diff window) (see [[https://github.com/hlissner/doom-emacs/issues/282][#282]]). + =completion= + =helm= Implement ~:agcwd~, ~:rg~, and ~:rgcwd~ commands for searching with helm. + =ivy= + Add C-SPC binding for "previewing" the selected candidate. Useful for previewing files in ~counsel-find-file~ or ~counsel-projectile-find-file~. This keybinding is defined in =private/hlissner/+bindings.el=. + Disable "very magic" regular expressions in ivy. Specifically, parentheses are now literal, and must be escaped to make them special. This is consistent with evil-search regex. + Fix a bug where ~:rgcwd~ wasn't showing any results, due to an incorrect option argument in the ripgrep command string. + =ui= + =doom-modeline= Remove the let-binds for ~all-the-icons-scale-factor~, so that users can customize it themselves (see [[https://github.com/hlissner/doom-emacs/issues/278][#278]]). + =tools= + =password-store= Fix compatibility with Emacs 26. + =lang= + =clojure= + This module has been rewritten with improved Cider and clojurescript support, as well as new refactoring commands. Thanks to [[https://github.com/teesloane][teesloane]]! + =crystal= + Add flycheck integration for the Crystal language, powered by ~flycheck-crystal~. + Use the ELPA source for ~crystal-mode~. The former QUELPA source (dotmilk's fork) is no longer maintained. + =org= + Fix scenario where built-in (and incorrect) version of org-mode (8.x) was loaded instead of 9.0+. + This module is incredibly opinionated. More opinionated than I'd like, but org-mode is an ongoing effort. To address this, =lang/org= has been reorganized. Variables are now set with ~defvar~ instead of ~setq~, which makes them more accessible for configuring from private modules. + Use the ELPA source for ~ob-rust~. The former QUELPA source (zweifisch's fork) is no longer maintained. + Fix an over-aggressive smartparens config for org-mode that would cause certain markers and delimiters (like spaces or square brackets) being repeated in places you didn't want them to be, like inside a checkbox. * 2.0.7 (Nov 08, 2017) + *Module changes:* + *BREAKING* Split =lang/java= into two submodules: one for eclim, and another for meghanada. You will need to update your =init.el= to enable one. submodule is experimental, since I have few opportunities to test it. + *BREAKING* Ace-window is no longer part of Doom core. It has been moved to =ui/window-select=, which offers two submodules for interactive window selection/moving: ace-window and switch-window. + =general= + New command naming convention: ~doom//...~ -- denotes that this an interactive command meant for: + Altering or maintaining your Emacs configuration itself. + And can be safely called through a batch session on the command line. E.g. ~emacs --batch -f doom//some-command~. + New macro for defining fuzzy-find menus (powered by whatever completion engine you have active): ~def-menu!~. + Autoload files can now specify a predicate cookie to tell the compiler/autoload reader whether or not to ignore that file. They look like ~;;;###if (featurep! :feature evil)~. + =core-keybinds= Add :g flag to ~map!~ for defining global keybinds along with vim keybinds, so you don't have to repeat yourself, just for a global binding. + =core-packages= Fix an issue where Doom's package management system wouldn't know what to do with a package that was initially installed with one backend (e.g. ELPA), and whose ~package!~ definition was later changed so that it should be handled by another (e.g. QUELPA). This would cause "FAILED" error messages while trying to install or update these packages (see [[https://github.com/hlissner/doom-emacs/issues/222][#222]]). + =feature= + =file-templates= Disable file templates for .dir-locals.el files. + =jump= New command ~+jump/online-select~, which is like ~+jump/online~, but will always prompt for which provider to use. + =ui= + =doom= This module no longer sets a default font. This is left to the user to set in their own private module. Use ~(set! :font "Font Name" :size N)~ to do so. + =lang= + =sh= + Improve how variables and subshells in double-quoted strings are fontified. + Fix imenu not recognizing functions with dashes in their names. + =java= + Polished meghanada-mode integration. + New (and optional) +eclim submodule and module flag. + =rust= + Now checks the ~RUST_SRC_PATH~ environment variable before looking for Rust's source in ~+rust-src-dir~. + Now looks for a ~racer~ binary in ~PATH~ before looking in ~+rust-src-dir~. * 2.0.6 (Oct 05, 2017) + *Module changes:* + Add =lang/ledger= + Add =ui/vi-tilde-fringe= -- used to be in =core-ui=; indicates beyond-EOB, using tildes in the fringe (inspired by vim). + Add =feature/services= -- used to be =tools/prodigy=. Adds a way of managing external processes and services. + Add =tools/make= -- for running project Makefile commands from Emacs. + Add =tools/imenu= -- adds a sidebar for imenu (~imenu-list~), and a way of jumping to imenu entries across all open buffers (~imenu-anywhere~). + Move =feature/hydra= into =core-keybinds=. + Rename =feature/debug= to =feature/debugger= (and disabled it by default; it is currently unstable and needs some work). + Remove =org/org-notebook=. It was unused and too small to warrant its own module. Useful tidbits were merged into =org/org=. + =general= + =Makefile= + Fix ~make update~ to work even if Doom is installed somewhere other than ~\~/.emacs.d~ (see [[https://github.com/hlissner/doom-emacs/issues/190][#190]]). + Removed colons from makefile task target names (like =compile:core=); replaced them with dashses, e.g. =compile-core=. Colons broke compatibility with certain versions of make. + =autoload= + New library: =menu.el= -- allows context-sensitive and customizable fuzzy-searchable menus; this was written to replace long lists of major-mode-local key bindings, like refactoring and code building commands. This replaces =feature/eval='s build task system. + =editor.el= Fix old scratch buffer commands and renamed them: ~doom/open-scratch-buffer~ and ~doom/open-project-scratch-buffer~. The former opens a temporary, transient scratch buffer, the latter opens a permanent one tied to the current project, kept in ~doom-scratch-files-dir~. + =window.el= Changed ~doom-resize-window~ to accept two more arguments, =WINDOW= and =FORCE-P=: ~doom-resize-window WINDOW NEW-SIZE &optional HORIZONTAL FORCE-P~. If =FORCE-P= is non-nil, this function will resize a window regardless of ~window-size-fixed~. + =core-keybinds= Add new =def-hydra!= alias macro for ~defhydra~ (for consistency, and in case we want to wrap it later). + =core-projects= Redesign ~def-project-mode!~ for efficiency, and: + The =:init FORM= property is now =:on-load FORM=. + Three new properties: =:on-enter FORM=, =:on-exit FORM= and =:add-hooks LIST=. + =core-popups= + Added two new popup properties: + ~:static~ If non-nil, treat this popup like a permanent window, making it impervious to automatic closing and being tracked in popup history. This is excellent for semi-permanent popups, like sidebars (think Neotree or imenu-list). + ~:autofit~ If non-nil, this popup will resize to fit its buffer contents. This only works with popups where the buffer content is immediately available, and not for, say, buffers tied to async processes. + ~doom-popup-buffer~ and ~doom-popup-file~ no longer take a variadic argument. Their signature is now ~doom-popup-buffer buffer plist &optional extend-p~ and ~doom-popup-file file plist &optional extend-p~, where =EXTEND-P= will cause =PLIST= to extend from the base rule for that buffer. + Rename ~doom-popup-prop~ to ~doom-popup-property~. + Add support for moving popup windows. See the ~doom/popup-move-*~ commands. There are used by ~+evil/window-move-*~, which provides universal support for moving windows. + Add command: ~doom/popup-raise~, for promoting a popup into a regular window. + Add helper macro: ~save-popup! BODY~ -- hides the popups before running BODY. + Fix ~doom/popup-toggle~ and ~save-popups!~ killing popups with an =:autokill= property. + =feature= + =hydra= Display a separator on the bottom of hydra windows for contrast. + =eval= Build-task management has been removed from =feature/eval= in favor of ~def-menu!~. + =ui= + =doom-dashboard= + Fix /horizontal/ centering discrepancies caused by multiple visible dashboards in windows/frames with different sizes (see [[https://github.com/hlissner/doom-emacs/issues/192][#192]]). Still doesn't address vertical centering. + Fix dashboard's default-directory not changing to the last open project when switched to. + =doom-modeline= Add a new style to ~+doom-modeline-buffer-file-name-style~: ~relative-from-project~, which displays on the buffer's path relative to (and including) the project. + =hl-todo= Add face-based detection for commented regions, so hl-todo can work in modes with no/poor syntax-table support. + =tools= + =neotree= + Fix neotree shrinking by 1 when vertical splits were closed. + Fix Neotree popup rule not taking ~neo-window-width~ and ~neo-window-position~ into account. + =term= Renamed commands for consistency (to ~+term/open~, ~+term/open-popup~ and ~+term/open-popup-in-project~). + =eshell= Renamed commands for consistency (to ~+eshell/open~, ~+eshell/open-popup~ and ~+eshell/open-workspace~). + =lang= + =ruby= Add rake support. See the ~rake~ command. + =web= Only install company-web if =:completion company= is enabled. + =javascript= + Add eslint_d and eslint_d-fix detection and support. + =./node_modules/.bin= is now added to ~exec-path~ in NPM project buffers. + =haskell= There is no longer a 'default' implementation for Haskell. The =+intero= and/or =+dante= module flags must be specified in init.el. + =java= Meghanada is no longer the 'default' implementation for Java. The =+meghanada= and/or =+eclim= module flags must be specified in init.el. + =org= + If a table is under point when ~+org/toggle-fold~ is invoked, the table is realigned. + Fix the incorrect version of org being loaded (site, instead of ELPA) by pushing it up further in the ~load-path~. + Fix ~+org/insert-item~ not jumping over sublists to append a new list item. * 2.0.5 (Sep 03, 2017) + =doom= + Added new module: ~tools/rgb~, with tools for dealing with colors (thanks to [[https://github.com/bandresen][bandresen]]) + Added new module: ~tools/prodigy~, with tools for managing external services (thanks to [[https://github.com/bandresen][bandresen]]) + Added new module: ~feature/hydra~, offers an extra and customizable layer of modal keybinds (thanks to [[https://github.com/bandresen][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 [[https://github.com/hlissner/.emacs.d/commit/0b7b8800a2478588bde408c92fcdfa0e43a5baf0][0b7b880]]. + Fix projectile-find-file not respecting ~default-directory~ (caused by changes upstream). + Rewrote, revised and expanded module documentation, and created a [[https://github.com/hlissner/.emacs.d/wiki][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 [[https://github.com/hlissner/doom-emacs/pull/200][#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 [[https://github.com/bandresen][bandresen]]). [[https://github.com/hlissner/.emacs.d/pull/176][See #176]] + Fixed mode-line going blank in terminal Emacs (thanks to [[https://github.com/bandresen][bandresen]]). + =doom-dashboard= Fixed "Load last session" button on dashboard. + =tools= + =eshell= General improvements made to further integrate eshell with Doom (thanks to [[https://github.com/bandresen][bandresen]]). [[https://github.com/hlissner/.emacs.d/pull/160][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 [[https://www.passwordstore.org/][pass]] as a backend (contributed by [[https://github.com/bandresen][brandresen]]). + Added =app/irc= -- Emacs as an IRC client, using circe (contributed by [[https://github.com/bandresen][brandresen]]). + ~+pass/ivy~ for ivy integration, with edit/copy field/open url actions. + ~helm-pass~ for helm integration. + Added =lang/hy= -- support for [[http://hylang.org][hylang]], a combination of Lisp and Python (thanks to [[https://github.com/bandresen][bandresen]]). + Added =lang/ocaml= -- support for [[https://ocaml.org/][OCAML]] (thanks to [[https://github.com/Ptival][Ptival]]) + Added =lang/plantuml= -- drawing diagrams in plain text + Added =lang/perl= -- Perl6 support for Emacs + Added =ui/tabbar= -- add tabs to Doom via [[https://github.com/dholm/tabbar][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//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 [[https://github.com/hlissner/emacs-nlinum-hl][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~. + [[https://github.com/domtronn/all-the-icons.el][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 [[https://github.com/hlissner/.emacs.d/issues/141][#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 [[https://github.com/hlissner/.emacs.d/issues/134][#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 [[https://github.com/hlissner/.emacs.d/issues/117][#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 [[https://github.com/Kaali/company-glsl][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 [[https://github.com/rolandwalker/unicode-fonts][unicode-fonts]]. + =ui/evil-goggles= -- visual feedback for edit operations in evil-mode, using [[https://github.com/edkolev/evil-goggles][evil-goggles]]. + =ui/nav-flash= (extracted from =ui/doom=) -- flashes current line when moving cursor considerable distrances, using [[https://github.com/rolandwalker/nav-flash][nav-flash]]. + =tools/neotree= (extracted from =feature/evil=) -- a file explorer sidebar, using [[https://github.com/jaypei/emacs-neotree/][neotree]]. + =core= + New special file: =private//init.el= is now loaded before modules (after core). + =:private = 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: [[https://github.com/syl20bnr/vi-tilde-fringe][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 [[https://github.com/gilbertw1][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 [[https://github.com/gabesoft/evil-mc][evil-mc]]. + Add ~+evil/mc-make-cursor-here~, with visual-block support for [[https://github.com/gabesoft/evil-mc][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 [[https://github.com/alexmurray/evil-vimish-fold][evil-vimish-fold]] (for arbitrary folds). + Fix [[https://github.com/redguardtoo/evil-matchit][evil-matchit]] in visual mode. + Fix [[https://github.com/hlissner/evil-multiedit][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 [[https://github.com/jaypei/emacs-neotree/][neotree]] plugin (moved to =tools/neotree=). + =feature/jump= + Call ~recenter~ after using [[https://github.com/jacktasia/dumb-jump][dumb-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)~ ([[https://github.com/hlissner/.emacs.d/pull/125][#125]]). + =completion/ivy= + Flexible column width for ~+ivy/tasks~. + =ui= + =ui/doom= + New plugin: [[https://github.com/hlissner/emacs-solaire-mode][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 ([[https://github.com/hlissner/.emacs.d/pull/130][#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: [[https://github.com/iquiw/company-ghc][company-ghc]] -- code-completion support for haskell (requires ~ghc-mod~). + =lang/php= + New plugin: [[https://github.com/xcwen/ac-php][company-php]] -- code-completion support for php (requires a TAGs file created with [[https://github.com/xcwen/phpctags][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 [[https://github.com/defunkt/gist.el][gist.el]]. + =tools/term= -- quickly spawn a terminal (in a popup or buffer) using [[https://github.com/emacsorphanage/multi-term][multi-term]] + =app/twitter= -- Emacs as a twitter client, using [[https://github.com/hayamiz/twittering-mode][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~ 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: [[https://github.com/gabesoft/evil-mc][evil-mc]] -- multiple cursors for evil-mode (thanks to [[https://github.com/gilbertw1][gilbertw1]]) + Achieve vim parity w/ file modifiers (~+evil*ex-replace-special-filenames~) + =feature/version-control= + New plugin: [[https://github.com/pidu/git-timemachine][git-timemachine]] -- stepping through a file's git history. + New plugin: [[https://github.com/sshaw/git-link][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= + Integrate counsel-ivy into [[https://github.com/Sarcasm/irony-mode][irony-mode]] + =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 [[https://github.com/gabesoft/evil-mc][evil-mc]]: based around ~gz~ (like ~gzz~ to toggle cursor freeze, and ~gzc~ to create a cursor "here"). + Add keybinds for [[https://github.com/hlissner/evil-multiedit][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 ([[https://github.com/jacktasia/dumb-jump][dumb-jump]]), and tools for looking things up online. + =app/rss= -- Emacs as an RSS reader, using [[https://github.com/skeeto/elfeed][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= + Replace [[https://github.com/DarthFennec/highlight-indent-guides][highlight-indent-guides-mode]] with [[https://github.com/antonj/Highlight-Indentation-for-Emacs/][highlight-indentation-mode]]; the former won't display indent guides on blank lines, even with my whitespace injection hook. + =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 [[https://github.com/Malabarba/beacon][beacon]] with [[https://github.com/rolandwalker/nav-flash][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= + Add code-completion support with [[https://github.com/nsf/gocode][gocode and company-go]]. + Add code navigation support with [[https://github.com/dominikh/go-mode.el/blob/master/go-guru.el][go-guru]] (built-in to go-mode). + Add REPL support with [[https://github.com/manute/gorepl-mode][gore and gorepl-mode]]. + =lang/haskell= + New plugin: [[https://github.com/jyp/dante][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: [[https://github.com/skeeto/skewer-mode][skewer-mode]] -- provides live JS/CSS/HTML evaluation in a browser. + New plugin: [[https://github.com/yasuyk/web-beautify][web-beautify]] -- js reformatting. + New plugin: [[https://github.com/NicolasPetton/xref-js2][xref-js2]] -- xref integration for javascript. + New plugin: [[https://github.com/felipeochoa/rjsx-mode][rjsx-mode]] -- adds jsx support. + Fix ~doom/newline-and-indent~ in rjsx-mode + Remove electric =<= in rjsx-mode + Enable [[https://github.com/smihica/emmet-mode][emmet-mode]] in rjsx-mode + Fix empty ~buffer-file-name~ in ~magic-mode-alist~ rule for ~rjsx-mode~. + Force [[https://github.com/ternjs/tern][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: [[https://github.com/yasuyk/web-beautify][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: [[https://github.com/yjwen/org-reveal/][ox-reveal]] -- export a presentation to html, js & css from org-mode using [[http://lab.hakim.se/reveal-js/][reveal.js]]. + New plugin: [[https://github.com/takaxp/org-tree-slide][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: [[https://github.com/skeeto/impatient-mode][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) & [[https://github.com/jacktasia/dumb-jump][dumb-jump]]. + =feature/workspaces= -- offers grouped buffers/windows and persistent sessions. Recently replaced [[https://github.com/pashinin/workgroups2][workgroups2]] with the much-faster [[https://github.com/Bad-ptr/persp-mode.el][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~)