Subject: 26.1; with-temp-buffer should not run buffer-list-update-hook

From: Alexander Miller <[email-masked]>
Date: Tue, 5 Mar 2019 23:57:20 +0100

To quote from the documentation of select-window:

Selections that "really count" are those
causing a visible change in the next redisplay of WINDOW’s frame and
should be always recorded. So if you think of running a function each
time a window gets selected put it on ‘buffer-list-update-hook’.

A temporary buffer hardly fits these criteria. The problem is not just
theoretical either. I have now run multiple times into situations where
use of a temp buffer caused a feedback loop that makes
buffer-list-update-hook fire permanently. For example a function called
by buffer-list-update-hook uses with-selected-window, this causes a
recalculation of the frame title, that calls format-spec, which uses a
temp-buffer and we are back to step one. Granted this case is very
specific to spacemacs and I am unable to reproduce it from emacs -q
(with-selected-window does not recalculate the frame title here), but
this is already the second time I've run into this (first time it was
magit).

So yeah, with-temp-buffer correction aside, if you have any advice how
to avoid the issue on my end without going back to advising
select-window that'd be great.

In GNU Emacs 26.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.30)
of 2018-07-05 built on juergen
Windowing system distributor 'The X.Org Foundation', version 11.0.12003000
Recent messages:
eval((spacemacs/title-prepare "%I@%SXXX"))
redisplay_internal\ \(C\ function\)()

spacemacs/title-prepare
Mark set
Mark saved where search started
Quit [2 times]
Mark saved where search started
uncompressing format-spec.el.gz...done
Note: file is write protected

Configured using:
'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
--localstatedir=/var --with-x-toolkit=gtk3 --with-xft --with-modules
'CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong
-fno-plt' CPPFLAGS=-D_FORTIFY_SOURCE=2
LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now'

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS NOTIFY
ACL GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS
GTK3 X11 MODULES THREADS LIBSYSTEMD LCMS2

Important settings:
value of $LC_COLLATE: en_GB.UTF-8
value of $LANG: en_GB.UTF-8
locale-coding-system: utf-8-unix

Major mode: Emacs-Lisp

Minor modes in effect:
global-mu4e-conversation-mode: t
mu4e-conversation-mode: t
global-magit-file-mode: t
magit-file-mode: t
global-git-commit-mode: t
async-bytecomp-package-mode: t
framey-mode: t
helm-descbinds-mode: t
helm-mode: t
helm-flx-mode: t
global-evil-surround-mode: t
evil-surround-mode: t
recentf-mode: t
diff-auto-refine-mode: t
treemacs-filewatch-mode: t
treemacs-git-mode: deferred
treemacs-fringe-indicator-mode: t
evil-escape-mode: t
global-display-line-numbers-mode: t
display-line-numbers-mode: t
global-git-gutter-mode: t
git-gutter-mode: t
company-flx-mode: t
global-company-mode: t
company-mode: t
auto-compile-mode: t
elisp-slime-nav-mode: t
rainbow-mode: t
goto-address-prog-mode: t
bug-reference-prog-mode: t
flycheck-pos-tip-mode: t
global-flycheck-mode: t
flycheck-mode: t
yas-global-mode: t
yas-minor-mode: t
rainbow-delimiters-mode: t
eros-mode: t
global-subword-mode: t
subword-mode: t
eldoc-in-minibuffer-mode: t
show-smartparens-global-mode: t
show-smartparens-mode: t
smartparens-mode: t
winum-mode: t
shackle-mode: t
eyebrowse-mode: t
evil-goggles-mode: t
winner-mode: t
save-place-mode: t
savehist-mode: t
which-key-mode: t
override-global-mode: t
global-undo-tree-mode: t
undo-tree-mode: t
shell-dirtrack-mode: t
evil-mode: t
evil-local-mode: t
spacemacs-leader-override-mode: t
global-spacemacs-leader-override-mode: t
xterm-mouse-mode: t
global-auto-revert-mode: t
ido-vertical-mode: t
global-page-break-lines-mode: t
page-break-lines-mode: t
global-eldoc-mode: t
eldoc-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
prettify-symbols-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
column-number-mode: t
line-number-mode: t
transient-mark-mode: t
hs-minor-mode: t

Load-path shadows:
/home/a/.emacs.d/elpa/26.1/develop/lv-20181110.1740/lv hides
/home/a/.emacs.d/elpa/26.1/develop/hydra-20181128.1716/lv
/home/a/.emacs.d/elpa/26.1/develop/ht-20181216.1137/ht hides
/home/a/.emacs.d/core/libs/ht
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-screen
hides /usr/share/emacs/26.1/lisp/org/ob-screen
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-id
hides /usr/share/emacs/26.1/lisp/org/org-id
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-sass
hides /usr/share/emacs/26.1/lisp/org/ob-sass
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-R hides
/usr/share/emacs/26.1/lisp/org/ob-R
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-inlinetask
hides /usr/share/emacs/26.1/lisp/org/org-inlinetask
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-dot
hides /usr/share/emacs/26.1/lisp/org/ob-dot
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ox-texinfo
hides /usr/share/emacs/26.1/lisp/org/ox-texinfo
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-asymptote
hides /usr/share/emacs/26.1/lisp/org/ob-asymptote
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-indent
hides /usr/share/emacs/26.1/lisp/org/org-indent
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-shell
hides /usr/share/emacs/26.1/lisp/org/ob-shell
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-C hides
/usr/share/emacs/26.1/lisp/org/ob-C
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-lilypond
hides /usr/share/emacs/26.1/lisp/org/ob-lilypond
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-eval
hides /usr/share/emacs/26.1/lisp/org/ob-eval
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-comint
hides /usr/share/emacs/26.1/lisp/org/ob-comint
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-perl
hides /usr/share/emacs/26.1/lisp/org/ob-perl
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-capture
hides /usr/share/emacs/26.1/lisp/org/org-capture
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-clojure
hides /usr/share/emacs/26.1/lisp/org/ob-clojure
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-ebnf
hides /usr/share/emacs/26.1/lisp/org/ob-ebnf
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-clock
hides /usr/share/emacs/26.1/lisp/org/org-clock
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-latex
hides /usr/share/emacs/26.1/lisp/org/ob-latex
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-calc
hides /usr/share/emacs/26.1/lisp/org/ob-calc
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-pcomplete
hides /usr/share/emacs/26.1/lisp/org/org-pcomplete
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-macro
hides /usr/share/emacs/26.1/lisp/org/org-macro
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-footnote
hides /usr/share/emacs/26.1/lisp/org/org-footnote
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-datetree
hides /usr/share/emacs/26.1/lisp/org/org-datetree
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob hides
/usr/share/emacs/26.1/lisp/org/ob
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ox-org
hides /usr/share/emacs/26.1/lisp/org/ox-org
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ox-beamer
hides /usr/share/emacs/26.1/lisp/org/ox-beamer
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-plot
hides /usr/share/emacs/26.1/lisp/org/org-plot
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ox-md hides
/usr/share/emacs/26.1/lisp/org/ox-md
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-timer
hides /usr/share/emacs/26.1/lisp/org/org-timer
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-picolisp
hides /usr/share/emacs/26.1/lisp/org/ob-picolisp
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-ditaa
hides /usr/share/emacs/26.1/lisp/org/ob-ditaa
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-eshell
hides /usr/share/emacs/26.1/lisp/org/org-eshell
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-tangle
hides /usr/share/emacs/26.1/lisp/org/ob-tangle
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-gnus
hides /usr/share/emacs/26.1/lisp/org/org-gnus
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ox-icalendar
hides /usr/share/emacs/26.1/lisp/org/ox-icalendar
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-forth
hides /usr/share/emacs/26.1/lisp/org/ob-forth
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-css
hides /usr/share/emacs/26.1/lisp/org/ob-css
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-ref
hides /usr/share/emacs/26.1/lisp/org/ob-ref
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-sed
hides /usr/share/emacs/26.1/lisp/org/ob-sed
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-J hides
/usr/share/emacs/26.1/lisp/org/ob-J
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-table
hides /usr/share/emacs/26.1/lisp/org/org-table
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-plantuml
hides /usr/share/emacs/26.1/lisp/org/ob-plantuml
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-compat
hides /usr/share/emacs/26.1/lisp/org/org-compat
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org hides
/usr/share/emacs/26.1/lisp/org/org
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-element
hides /usr/share/emacs/26.1/lisp/org/org-element
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-bibtex
hides /usr/share/emacs/26.1/lisp/org/org-bibtex
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-lisp
hides /usr/share/emacs/26.1/lisp/org/ob-lisp
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-python
hides /usr/share/emacs/26.1/lisp/org/ob-python
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-protocol
hides /usr/share/emacs/26.1/lisp/org/org-protocol
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-java
hides /usr/share/emacs/26.1/lisp/org/ob-java
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ox hides
/usr/share/emacs/26.1/lisp/org/ox
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-entities
hides /usr/share/emacs/26.1/lisp/org/org-entities
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-hledger
hides /usr/share/emacs/26.1/lisp/org/ob-hledger
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-macs
hides /usr/share/emacs/26.1/lisp/org/org-macs
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-sql
hides /usr/share/emacs/26.1/lisp/org/ob-sql
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-irc
hides /usr/share/emacs/26.1/lisp/org/org-irc
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-mouse
hides /usr/share/emacs/26.1/lisp/org/org-mouse
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-core
hides /usr/share/emacs/26.1/lisp/org/ob-core
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-matlab
hides /usr/share/emacs/26.1/lisp/org/ob-matlab
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-crypt
hides /usr/share/emacs/26.1/lisp/org/org-crypt
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-table
hides /usr/share/emacs/26.1/lisp/org/ob-table
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-scheme
hides /usr/share/emacs/26.1/lisp/org/ob-scheme
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-bbdb
hides /usr/share/emacs/26.1/lisp/org/org-bbdb
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-habit
hides /usr/share/emacs/26.1/lisp/org/org-habit
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-mhe
hides /usr/share/emacs/26.1/lisp/org/org-mhe
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-octave
hides /usr/share/emacs/26.1/lisp/org/ob-octave
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-org
hides /usr/share/emacs/26.1/lisp/org/ob-org
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-rmail
hides /usr/share/emacs/26.1/lisp/org/org-rmail
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-maxima
hides /usr/share/emacs/26.1/lisp/org/ob-maxima
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ox-ascii
hides /usr/share/emacs/26.1/lisp/org/ox-ascii
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-exp
hides /usr/share/emacs/26.1/lisp/org/ob-exp
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-version
hides /usr/share/emacs/26.1/lisp/org/org-version
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-io hides
/usr/share/emacs/26.1/lisp/org/ob-io
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-agenda
hides /usr/share/emacs/26.1/lisp/org/org-agenda
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-abc
hides /usr/share/emacs/26.1/lisp/org/ob-abc
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-makefile
hides /usr/share/emacs/26.1/lisp/org/ob-makefile
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-lint
hides /usr/share/emacs/26.1/lisp/org/org-lint
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-js hides
/usr/share/emacs/26.1/lisp/org/ob-js
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-loaddefs
hides /usr/share/emacs/26.1/lisp/org/org-loaddefs
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ox-man
hides /usr/share/emacs/26.1/lisp/org/ox-man
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-ruby
hides /usr/share/emacs/26.1/lisp/org/ob-ruby
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-awk
hides /usr/share/emacs/26.1/lisp/org/ob-awk
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-duration
hides /usr/share/emacs/26.1/lisp/org/org-duration
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ox-odt
hides /usr/share/emacs/26.1/lisp/org/ox-odt
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-mscgen
hides /usr/share/emacs/26.1/lisp/org/ob-mscgen
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-keys
hides /usr/share/emacs/26.1/lisp/org/ob-keys
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-archive
hides /usr/share/emacs/26.1/lisp/org/org-archive
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-gnuplot
hides /usr/share/emacs/26.1/lisp/org/ob-gnuplot
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-stan
hides /usr/share/emacs/26.1/lisp/org/ob-stan
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-w3m
hides /usr/share/emacs/26.1/lisp/org/org-w3m
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-colview
hides /usr/share/emacs/26.1/lisp/org/org-colview
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ox-html
hides /usr/share/emacs/26.1/lisp/org/ox-html
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-fortran
hides /usr/share/emacs/26.1/lisp/org/ob-fortran
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-groovy
hides /usr/share/emacs/26.1/lisp/org/ob-groovy
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-list
hides /usr/share/emacs/26.1/lisp/org/org-list
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-faces
hides /usr/share/emacs/26.1/lisp/org/org-faces
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-lob
hides /usr/share/emacs/26.1/lisp/org/ob-lob
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-eww
hides /usr/share/emacs/26.1/lisp/org/org-eww
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-lua
hides /usr/share/emacs/26.1/lisp/org/ob-lua
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-feed
hides /usr/share/emacs/26.1/lisp/org/org-feed
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-sqlite
hides /usr/share/emacs/26.1/lisp/org/ob-sqlite
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-haskell
hides /usr/share/emacs/26.1/lisp/org/ob-haskell
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-src
hides /usr/share/emacs/26.1/lisp/org/org-src
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-install
hides /usr/share/emacs/26.1/lisp/org/org-install
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-emacs-lisp
hides /usr/share/emacs/26.1/lisp/org/ob-emacs-lisp
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-shen
hides /usr/share/emacs/26.1/lisp/org/ob-shen
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ox-latex
hides /usr/share/emacs/26.1/lisp/org/ox-latex
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-mobile
hides /usr/share/emacs/26.1/lisp/org/org-mobile
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-processing
hides /usr/share/emacs/26.1/lisp/org/ob-processing
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-attach
hides /usr/share/emacs/26.1/lisp/org/org-attach
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-ledger
hides /usr/share/emacs/26.1/lisp/org/ob-ledger
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-ctags
hides /usr/share/emacs/26.1/lisp/org/org-ctags
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ox-publish
hides /usr/share/emacs/26.1/lisp/org/ox-publish
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-ocaml
hides /usr/share/emacs/26.1/lisp/org/ob-ocaml
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-vala
hides /usr/share/emacs/26.1/lisp/org/ob-vala
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-info
hides /usr/share/emacs/26.1/lisp/org/org-info
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/org-docview
hides /usr/share/emacs/26.1/lisp/org/org-docview
/home/a/.emacs.d/elpa/26.1/develop/org-plus-contrib-20181230/ob-coq
hides /usr/share/emacs/26.1/lisp/org/ob-coq

Features:
(shadow sort mail-extr emacsbug helm-command evil-nerd-commenter
evil-nerd-commenter-operator evil-nerd-commenter-sdk smartparens-html
sgml-mode helm-xref semantic/symref/grep grep semantic/symref helm-ag
helm-elisp helm-eval org-indent org-table company-shell fish-mode
org-clock diary-lib diary-loaddefs cal-iso vc-mtn vc-hg org-eldoc
ob-python ob-shell org-bullets org-download toc-org org-eww org-rmail
org-mhe org-irc org-info org-gnus nnir gnus-sum gnus-group gnus-undo
gnus-start gnus-cloud nnimap nnmail mail-source utf7 netrc nnoo
gnus-spec gnus-int gnus-range gnus-win gnus nnheader org-docview
org-bibtex bibtex org-bbdb org-w3m smartparens-org org-habit
german-holidays org-agenda org-mu4e mu4e-conversation shr svg dom
gnus-dired mu4e desktop frameset mu4e-speedbar mu4e-main mu4e-view
mu4e-headers mu4e-compose mu4e-context mu4e-draft mu4e-actions rfc2368
smtpmail sendmail mu4e-mark mu4e-message flow-fill html2text mu4e-proc
mu4e-utils doc-view jka-compr image-mode mu4e-lists mu4e-vars mu4e-meta
orgit org-element avl-tree generator org ob ob-tangle ob-ref ob-lob
ob-table ob-exp org-macro org-footnote org-src ob-comint ob-keys
org-pcomplete org-list org-faces org-entities org-version ob-emacs-lisp
ob-core ob-eval org-compat org-macs org-loaddefs cal-menu calendar
cal-loaddefs swiper ivy delsel colir ivy-overlay tabify debug macrostep
semantic/find helm-semantic helm-imenu semantic/util-modes semantic/util
semantic semantic/tag semantic/lex semantic/fw mode-local cedet mwim
eieio-opt speedbar sb-image ezimage dframe face-remap gravatar url-cache
ffap magit-gitflow treemacs-magit evil-magit git-rebase forge-list
forge-commands forge-semi forge-bitbucket buck forge-gogs gogs
forge-gitea gtea forge-gitlab glab forge-github ghub-graphql treepy
graphql ghub let-alist forge-notify forge-revnote forge-pullreq
forge-issue forge-topic forge-post forge-repo forge forge-core forge-db
closql emacsql-sqlite emacsql emacsql-compiler magit-bookmark
magit-submodule magit-obsolete magit-popup magit-blame magit-stash
magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote
magit-commit magit-sequence magit-notes magit-worktree magit-tag
magit-merge magit-branch magit-reset magit-files magit-refs magit-status
magit magit-repos magit-apply magit-wip magit-log which-func magit-diff
smerge-mode magit-core magit-autorevert magit-margin magit-transient
magit-process magit-mode transient git-commit magit-git magit-section
magit-utils crm log-edit message rfc822 mml mml-sec epa gnus-util rmail
rmail-loaddefs mailabbrev mail-utils gmm-utils mailheader pcvs-util
add-log with-editor async-bytecomp flx dired dired-loaddefs helm-x-files
helm-for-files helm-bookmark helm-adaptive helm-info helm-external
helm-net browse-url xml framey helm-descbinds helm-mode helm-files
helm-buffers helm-tags helm-locate helm-grep helm-regexp helm-utils
helm-help helm-types helm-flx helm helm-source helm-multi-match helm-lib
async cl-print evil-surround edebug lsp-treemacs recentf vc-bzr vc-src
vc-sccs vc-svn vc-cvs vc-rcs vc vc-dispatcher company-lsp importmagic
epc ctable concurrent deferred flycheck-rust lsp-ui-flycheck lsp-ui
lsp-ui-doc smartparens-markdown markdown-mode lsp-ui-imenu lsp-ui-peek
lsp-ui-sideline view lsp-clients dash-functional lsp lsp-mode
tree-widget spinner network-stream starttls em-glob esh-util
flymake-proc flymake hi-lock evil-matchit evil-matchit-sdk
smartparens-python python tramp-sh tramp tramp-compat tramp-loaddefs
trampver ucs-normalize parse-time vc-git diff-mode treemacs-evil
treemacs treemacs-compatibility treemacs-mode treemacs-interface
treemacs-extensions treemacs-persistence treemacs-mouse-interface
treemacs-tag-follow-mode treemacs-filewatch-mode treemacs-tags imenu
treemacs-follow-mode treemacs-rendering treemacs-async treemacs-faces
treemacs-icons treemacs-workspaces treemacs-dom treemacs-visuals
treemacs-fringe-indicator treemacs-impl treemacs-macros pfuture
ace-window avy treemacs-customization bookmark pp evil-escape
display-line-numbers git-gutter-fringe fringe-helper git-gutter
company-flx company-files company-keywords company-etags company-gtags
company-template company-dabbrev-code company-dabbrev company-yasnippet
company-capf company-quickhelp company overseer pkg-info url-http tls
gnutls url url-proxy url-privacy url-expand url-methods url-history
mailcap url-auth url-cookie url-domsuf url-util url-gw nsm rmc puny epl
compile auto-compile packed elisp-slime-nav etags xref rainbow-mode
goto-addr bug-reference flycheck-pos-tip pos-tip flycheck-ledger
flycheck json map find-func hideshow yasnippet-snippets yasnippet
rainbow-delimiters elec-pair evil-cleverparens
evil-cleverparens-text-objects evil-cleverparens-util paredit eros
cap-words superword subword doom-modeline doom-modeline-segments
doom-modeline-env doom-modeline-core project shrink-path eldoc-eval
all-the-icons all-the-icons-faces data-material data-weathericons
data-octicons data-fileicons data-faicons data-alltheicons memoize
inline powerline powerline-separators color powerline-themes
smartparens-config smartparens-text smartparens winum shackle trace
eyebrowse evil-goggles pulse f s dash server winner xterm-color
saveplace savehist noutline outline gh-common marshal hybrid-mode
evil-evilified-state which-key use-package use-package-ensure
use-package-delight use-package-diminish use-package-bind-key bind-key
use-package-core hydra lv cus-edit cus-start cus-load evil
evil-integration undo-tree diff evil-maps evil-commands reveal flyspell
ispell evil-jumps evil-command-window evil-types evil-search evil-ex
shell pcomplete comint ansi-color evil-macros evil-repeat evil-states
evil-core evil-common windmove thingatpt rect evil-digraphs evil-vars
ring bind-map quelpa mm-decode mm-bodies mm-encode mail-parse rfc2231
rfc2047 rfc2045%