Subject: 28.0.50; find-alternate-file cannot rename buffer back on error from find-file-hook

From: immerrr <[email-masked]>
Date: Sun, 17 May 2020 14:51:09 +0200

find-alternate-file cannot recover from a failure in one of the
`find-file-hooks', because it doesn't expect a buffer called `oname' to
exist if `find-file-noselect' returns nil. Here's a simple repro that
shows the failure starting from 'emacs -Q':

(find-file "test.txt")
(add-to-list 'find-file-hook (lambda () (error "ffh failure")))
(find-alternate-file (buffer-file-name))

It will leave the buffer visiting test.txt called " **lose**" and
display an error message saying "Buffer name `test.txt' is in use.".

I'm attaching a simple patch that would fix this behaviour:

>From c4fed16358dd130ec1a70c606efe2652b5d0156c Mon Sep 17 00:00:00 2001
From: immerrr <[email-masked]>
Date: Sun, 17 May 2020 13:47:23 +0200
Subject: [PATCH] * lisp/files.el (find-alternate-file): ensure oname is free
 if rolling back

If switching to new buffer failed after the buffer itself created,
chances are the old name is taken and needs to be released. Otherwise,
`rename-buffer' will complain about name already being taken.
---
 lisp/files.el | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/lisp/files.el b/lisp/files.el
index dba704f7a4..8aca2437d6 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -1914,6 +1914,8 @@ find-alternate-file
 	(setq buffer-file-truename otrue)
 	(setq dired-directory odir)
 	(lock-buffer)
+        (if (get-buffer oname)
+            (kill-buffer oname))
 	(rename-buffer oname)))
     (unless (eq (current-buffer) obuf)
       (with-current-buffer obuf
-- 
2.26.2

In GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.18.9, cairo version 1.14.6)
 of 2020-03-15 built on mmrcomp
Repository revision: b39b5647258297a411fae0adf58877bda85ad00d
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.11906000
System Description: Ubuntu 16.04.6 LTS

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
Package cl is deprecated
Quit
((closure (t) nil (error "ffh failure")) projectile-find-file-hook-function auto-revert-find-file-function company-quickhelp-mode-check-buffers global-company-mode-check-buffers auto-compile-on-save-mode-check-buffers recentf-track-opened-file yas-global-mode-check-buffers global-display-line-numbers-mode-check-buffers epa-file-find-file-hook url-handlers-set-buffer-mode global-eldoc-mode-check-buffers global-font-lock-mode-check-buffers vc-refresh-state)
Quit
ffh failure [2 times]
(projectile-find-file-hook-function auto-revert-find-file-function company-quickhelp-mode-check-buffers global-company-mode-check-buffers auto-compile-on-save-mode-check-buffers recentf-track-opened-file yas-global-mode-check-buffers global-display-line-numbers-mode-check-buffers epa-file-find-file-hook url-handlers-set-buffer-mode global-eldoc-mode-check-buffers global-font-lock-mode-check-buffers vc-refresh-state)
((closure (t) nil (error "ffh failure")) projectile-find-file-hook-function auto-revert-find-file-function company-quickhelp-mode-check-buffers global-company-mode-check-buffers auto-compile-on-save-mode-check-buffers recentf-track-opened-file yas-global-mode-check-buffers global-display-line-numbers-mode-check-buffers epa-file-find-file-hook url-handlers-set-buffer-mode global-eldoc-mode-check-buffers global-font-lock-mode-check-buffers vc-refresh-state)
apply: Buffer name ‘app.json’ is in use
Quit

Configured using:
 'configure --prefix=/home/immerrr/.local --without-xwidgets'

Configured features:
XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND GPM DBUS GSETTINGS GLIB NOTIFY
INOTIFY LIBSELINUX GNUTLS LIBXML2 FREETYPE HARFBUZZ M17N_FLT LIBOTF ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS JSON PDUMPER LCMS2
GMP

Important settings:
  value of $LC_MONETARY: en_GB.UTF-8
  value of $LC_NUMERIC: en_GB.UTF-8
  value of $LC_TIME: en_GB.UTF-8
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=fcitx
  locale-coding-system: utf-8-unix

Major mode: JavaScript

Minor modes in effect:
  guide-key-mode: t
  show-paren-mode: t
  counsel-projectile-mode: t
  projectile-mode: t
  ivy-mode: t
  company-quickhelp-mode: t
  company-quickhelp-local-mode: t
  global-company-mode: t
  company-mode: t
  pyvenv-mode: t
  whitespace-mode: t
  shell-dirtrack-mode: t
  auto-compile-on-save-mode: t
  recentf-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  global-display-line-numbers-mode: t
  display-line-numbers-mode: t
  override-global-mode: t
  bar-cursor-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  size-indication-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
/home/immerrr/.emacs.d/elpa/ample-regexps-20200508.1021/init-tryout hides /home/immerrr/.emacs.d/elpa/lua-mode-20200508.1316/init-tryout
/home/immerrr/.emacs.d/elpa/xref-1.0.1/xref hides /home/immerrr/.local/share/emacs/28.0.50/lisp/progmodes/xref
/home/immerrr/.emacs.d/elpa/project-0.1.2/project hides /home/immerrr/.local/share/emacs/28.0.50/lisp/progmodes/project
/home/immerrr/.emacs.d/elpa/org-20191007/ob-abc hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-abc
/home/immerrr/.emacs.d/elpa/org-20191007/ob-gnuplot hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-gnuplot
/home/immerrr/.emacs.d/elpa/org-20191007/ob-lisp hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-lisp
/home/immerrr/.emacs.d/elpa/org-20191007/org-ctags hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-ctags
/home/immerrr/.emacs.d/elpa/org-20191007/ob-groovy hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-groovy
/home/immerrr/.emacs.d/elpa/org-20191007/ob-ruby hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-ruby
/home/immerrr/.emacs.d/elpa/org-20191007/ob-emacs-lisp hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-emacs-lisp
/home/immerrr/.emacs.d/elpa/org-20191007/org hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org
/home/immerrr/.emacs.d/elpa/org-20191007/ob-ebnf hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-ebnf
/home/immerrr/.emacs.d/elpa/org-20191007/ob-ocaml hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-ocaml
/home/immerrr/.emacs.d/elpa/org-20191007/ob-lilypond hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-lilypond
/home/immerrr/.emacs.d/elpa/org-20191007/org-macs hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-macs
/home/immerrr/.emacs.d/elpa/org-20191007/ob-python hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-python
/home/immerrr/.emacs.d/elpa/org-20191007/org-mouse hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-mouse
/home/immerrr/.emacs.d/elpa/org-20191007/ox-html hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ox-html
/home/immerrr/.emacs.d/elpa/org-20191007/org-crypt hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-crypt
/home/immerrr/.emacs.d/elpa/org-20191007/ob-coq hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-coq
/home/immerrr/.emacs.d/elpa/org-20191007/ob-awk hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-awk
/home/immerrr/.emacs.d/elpa/org-20191007/ob-haskell hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-haskell
/home/immerrr/.emacs.d/elpa/org-20191007/ob-dot hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-dot
/home/immerrr/.emacs.d/elpa/org-20191007/org-attach hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-attach
/home/immerrr/.emacs.d/elpa/org-20191007/ox-texinfo hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ox-texinfo
/home/immerrr/.emacs.d/elpa/org-20191007/org-timer hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-timer
/home/immerrr/.emacs.d/elpa/org-20191007/org-feed hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-feed
/home/immerrr/.emacs.d/elpa/org-20191007/ob-stan hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-stan
/home/immerrr/.emacs.d/elpa/org-20191007/org-archive hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-archive
/home/immerrr/.emacs.d/elpa/org-20191007/org-agenda hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-agenda
/home/immerrr/.emacs.d/elpa/org-20191007/ob-css hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-css
/home/immerrr/.emacs.d/elpa/org-20191007/org-pcomplete hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-pcomplete
/home/immerrr/.emacs.d/elpa/org-20191007/ob-shen hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-shen
/home/immerrr/.emacs.d/elpa/org-20191007/ob-asymptote hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-asymptote
/home/immerrr/.emacs.d/elpa/org-20191007/ob-calc hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-calc
/home/immerrr/.emacs.d/elpa/org-20191007/ob-core hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-core
/home/immerrr/.emacs.d/elpa/org-20191007/org-clock hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-clock
/home/immerrr/.emacs.d/elpa/org-20191007/ob-lob hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-lob
/home/immerrr/.emacs.d/elpa/org-20191007/ob-ditaa hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-ditaa
/home/immerrr/.emacs.d/elpa/org-20191007/org-lint hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-lint
/home/immerrr/.emacs.d/elpa/org-20191007/ob hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob
/home/immerrr/.emacs.d/elpa/org-20191007/ob-latex hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-latex
/home/immerrr/.emacs.d/elpa/org-20191007/org-indent hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-indent
/home/immerrr/.emacs.d/elpa/org-20191007/ob-screen hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-screen
/home/immerrr/.emacs.d/elpa/org-20191007/ox-md hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ox-md
/home/immerrr/.emacs.d/elpa/org-20191007/org-compat hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-compat
/home/immerrr/.emacs.d/elpa/org-20191007/ob-eval hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-eval
/home/immerrr/.emacs.d/elpa/org-20191007/org-inlinetask hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-inlinetask
/home/immerrr/.emacs.d/elpa/org-20191007/ob-lua hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-lua
/home/immerrr/.emacs.d/elpa/org-20191007/ob-perl hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-perl
/home/immerrr/.emacs.d/elpa/org-20191007/ob-vala hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-vala
/home/immerrr/.emacs.d/elpa/org-20191007/ox-publish hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ox-publish
/home/immerrr/.emacs.d/elpa/org-20191007/ob-J hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-J
/home/immerrr/.emacs.d/elpa/org-20191007/org-duration hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-duration
/home/immerrr/.emacs.d/elpa/org-20191007/ob-exp hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-exp
/home/immerrr/.emacs.d/elpa/org-20191007/ox-org hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ox-org
/home/immerrr/.emacs.d/elpa/org-20191007/ob-maxima hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-maxima
/home/immerrr/.emacs.d/elpa/org-20191007/ob-fortran hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-fortran
/home/immerrr/.emacs.d/elpa/org-20191007/ob-ref hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-ref
/home/immerrr/.emacs.d/elpa/org-20191007/ob-octave hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-octave
/home/immerrr/.emacs.d/elpa/org-20191007/org-capture hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-capture
/home/immerrr/.emacs.d/elpa/org-20191007/ob-mscgen hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-mscgen
/home/immerrr/.emacs.d/elpa/org-20191007/ob-js hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-js
/home/immerrr/.emacs.d/elpa/org-20191007/ob-tangle hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-tangle
/home/immerrr/.emacs.d/elpa/org-20191007/ox-ascii hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ox-ascii
/home/immerrr/.emacs.d/elpa/org-20191007/ob-sql hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-sql
/home/immerrr/.emacs.d/elpa/org-20191007/org-id hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-id
/home/immerrr/.emacs.d/elpa/org-20191007/ox-man hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ox-man
/home/immerrr/.emacs.d/elpa/org-20191007/org-colview hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-colview
/home/immerrr/.emacs.d/elpa/org-20191007/ob-picolisp hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-picolisp
/home/immerrr/.emacs.d/elpa/org-20191007/org-plot hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-plot
/home/immerrr/.emacs.d/elpa/org-20191007/ob-hledger hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-hledger
/home/immerrr/.emacs.d/elpa/org-20191007/org-version hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-version
/home/immerrr/.emacs.d/elpa/org-20191007/org-src hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-src
/home/immerrr/.emacs.d/elpa/org-20191007/ob-comint hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-comint
/home/immerrr/.emacs.d/elpa/org-20191007/org-mobile hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-mobile
/home/immerrr/.emacs.d/elpa/org-20191007/ob-ledger hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-ledger
/home/immerrr/.emacs.d/elpa/org-20191007/ob-scheme hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-scheme
/home/immerrr/.emacs.d/elpa/org-20191007/ob-R hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-R
/home/immerrr/.emacs.d/elpa/org-20191007/ob-io hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-io
/home/immerrr/.emacs.d/elpa/org-20191007/org-loaddefs hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-loaddefs
/home/immerrr/.emacs.d/elpa/org-20191007/ox-icalendar hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ox-icalendar
/home/immerrr/.emacs.d/elpa/org-20191007/org-faces hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-faces
/home/immerrr/.emacs.d/elpa/org-20191007/ob-sed hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-sed
/home/immerrr/.emacs.d/elpa/org-20191007/org-macro hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-macro
/home/immerrr/.emacs.d/elpa/org-20191007/ob-table hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-table
/home/immerrr/.emacs.d/elpa/org-20191007/ox-odt hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ox-odt
/home/immerrr/.emacs.d/elpa/org-20191007/org-element hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-element
/home/immerrr/.emacs.d/elpa/org-20191007/ob-processing hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-processing
/home/immerrr/.emacs.d/elpa/org-20191007/ob-sass hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-sass
/home/immerrr/.emacs.d/elpa/org-20191007/ob-C hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-C
/home/immerrr/.emacs.d/elpa/org-20191007/org-protocol hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-protocol
/home/immerrr/.emacs.d/elpa/org-20191007/ob-clojure hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-clojure
/home/immerrr/.emacs.d/elpa/org-20191007/ob-matlab hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-matlab
/home/immerrr/.emacs.d/elpa/org-20191007/org-tempo hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-tempo
/home/immerrr/.emacs.d/elpa/org-20191007/ob-forth hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-forth
/home/immerrr/.emacs.d/elpa/org-20191007/org-datetree hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-datetree
/home/immerrr/.emacs.d/elpa/org-20191007/ob-makefile hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-makefile
/home/immerrr/.emacs.d/elpa/org-20191007/ox-latex hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ox-latex
/home/immerrr/.emacs.d/elpa/org-20191007/org-goto hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-goto
/home/immerrr/.emacs.d/elpa/org-20191007/ob-shell hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-shell
/home/immerrr/.emacs.d/elpa/org-20191007/org-entities hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-entities
/home/immerrr/.emacs.d/elpa/org-20191007/ob-org hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-org
/home/immerrr/.emacs.d/elpa/org-20191007/ob-sqlite hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-sqlite
/home/immerrr/.emacs.d/elpa/org-20191007/org-install hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-install
/home/immerrr/.emacs.d/elpa/org-20191007/ob-java hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-java
/home/immerrr/.emacs.d/elpa/org-20191007/org-table hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-table
/home/immerrr/.emacs.d/elpa/org-20191007/org-list hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-list
/home/immerrr/.emacs.d/elpa/org-20191007/ox hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ox
/home/immerrr/.emacs.d/elpa/org-20191007/ob-plantuml hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ob-plantuml
/home/immerrr/.emacs.d/elpa/org-20191007/ox-beamer hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/ox-beamer
/home/immerrr/.emacs.d/elpa/org-20191007/org-habit hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-habit
/home/immerrr/.emacs.d/elpa/org-20191007/org-footnote hides /home/immerrr/.local/share/emacs/28.0.50/lisp/org/org-footnote
/home/immerrr/.emacs.d/elpa/eldoc-1.0.0/eldoc hides /home/immerrr/.local/share/emacs/28.0.50/lisp/emacs-lisp/eldoc

Features:
(shadow sort mail-extr emacsbug message rmc puny rfc822 mml mml-sec epa
derived epg epg-config gnus-util rmail rmail-loaddefs
text-property-search mailabbrev gmm-utils mailheader sendmail js imenu
cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine
cc-vars cc-defs multiple-cursors-core rect nroff-mode company-elisp
find-func nameless guide-key popwin disp-table paren cus-start cus-load
rvm salt-mode org-faces rst mmm-jinja2 mmm-auto mmm-vars mmm-utils
mmm-compat yaml-mode go-projectile vc-git diff-mode go-rename go-guru
go-eldoc go-mode find-file ffap mmr-org-settings counsel-projectile
tramp-cache projectile wgrep grep ibuf-ext ibuffer ibuffer-loaddefs
thingatpt counsel xdg advice dired dired-loaddefs compile swiper
ivy-rich ivy delsel ivy-overlay colir traad bind-map virtualenvwrapper
gud request-deferred request autorevert filenotify mail-utils url
url-proxy url-privacy url-expand url-methods url-history url-cookie
url-domsuf url-util mailcap popup f dash s cl company-quickhelp pos-tip
company-oddmuse company-keywords company-etags etags fileloop generator
xref project company-gtags company-dabbrev-code company-dabbrev
company-files company-capf company-cmake company-xcode company-clang
company-semantic company-eclim company-template company-bbdb company
pcase mmr-python pyvenv eshell esh-cmd esh-ext esh-opt esh-proc esh-io
esh-arg esh-module esh-groups esh-util python-environment deferred
whitespace python tramp-sh tramp tramp-loaddefs trampver
tramp-integration files-x tramp-compat shell pcomplete parse-time
iso8601 time-date ls-lisp format-spec comint ansi-color rx auto-compile
packed recentf tree-widget wid-edit yasnippet hydra ring lv paredit
solarized-dark-theme solarized-theme solarized solarized-faces color
display-line-numbers edmacro kmacro mmr-dir-local-env mmr-bootstrap
quelpa-use-package cl-extra quelpa mm-decode mm-bodies mm-encode
mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr
help-fns radix-tree help-mode package-recipe-mode package-build-badges
package-build package-recipe eieio-compat lisp-mnt use-package
use-package-ensure use-package-delight use-package-diminish
use-package-bind-key use-package-core bind-key easy-mmode diminish
linum-ex bar-cursor mmr-minimal mmr-ediff windmove info package easymenu
browse-url url-handlers url-parse auth-source cl-seq eieio eieio-core
cl-macs eieio-loaddefs password-cache json subr-x map url-vars seq
byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib tooltip eldoc
electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win
x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode elisp-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch timer
select scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame minibuffer cl-generic cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese composite charscript charprop case-table epa-hook
jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice loaddefs
button faces cus-face macroexp files text-properties overlay sha1 md5
base64 format env code-pages mule custom widget hashtable-print-readable
backquote threads dbusbind inotify lcms2 dynamic-setting
system-font-setting font-render-setting cairo move-toolbar gtk x-toolkit
x multi-tty make-network-process emacs)

Memory information:
((conses 16 302441 16365)
 (symbols 48 28952 1)
 (strings 32 90240 4930)
 (string-bytes 1 3122895)
 (vectors 16 41056)
 (vector-slots 8 517817 16720)
 (floats 8 296 176)
 (intervals 56 983 0)
 (buffers 1000 17)
 (heap 1024 29685 1728))