Subject: bug#36582: 26.2; Feature Suggestion / Request for Implementation Help

From: Jack Coughlin <[email-masked]>
Date: Wed, 10 Jul 2019 12:25:10 -0700

----------------

First of all, thank you for an incredible piece of software in calc.

I'll describe a feature idea that I am trying to implement myself, and
the difficulties I'm having. I hope you can point me in the right
direction.

What I want is a new built-in variable containing a list of rewrite
rules, similar to AlgSimpRules. Call it DispRules. It would contain
rewrite rules to be applied to a formula immediately before display.
Importantly, these rules would not change the true structure of the
formula at all, but would only change the structure that gets passed to
the composition phase.

The motivation for this is that, while very useful, the composition
feature is not powerful enough to achieve all of the display features
that one might want. For example, as far as I can see, it's not possible
to customize the display of a unit variable. With this DispRules
feature, it would be possible to apply a rule like so:

quote(degC) := degC()

where degC is a user-defined function. Then it would be possible to apply
a user-defined composition to that function, for example in Latex mode.
For example, degC() := "\si{\celsius}".

Another use case would be mixing different display forms of division.
It's kind of ugly to nest "\frac" tags; a nicer format would be, say,
"\frac{a / b}{c}". Or, preferring "e^{\pi * k / n}" to "e^{\frac{\pi *
k}{n}}". As far as I can see, this sort of sophisticated display
behavior is achievable with a combination of rewrite rules and
compositions, but not with compositions alone.

------

I've tried hacking this in by copying and modifying defun's. I found
~math-format-stack-value~ and ~calc-prepare-selection~, both of which
call ~math-compose-expr~. I believe the change I want is something like

(math-compose-expr (math-rewrite expr disp-rules) 0)

wherever we're calling (math-compose-expr expr 0).

It's also important to set a boolean var so that this rewrite does *not*
occur when called from within ~math-rewrite~ (when it's writing trace info).

This seems to work fine inside of ~math-format-stack-value~, for bare
items on the stack. However, it is breaking for selections in certain
cases.

~calc-select-here~ works properly, and highlights the selected portion.
However, any of the more complex selection operations leaves the
selection un-highlighted. For example, selecting a term, then placing a
number on the stack and pressing ~/~ results in no highlighted
selection, and the top stack value unchanged.

I had trouble determining the role of calc-prepare-selection, and why
the composition that it stores in calc-selection-cache-comp gets used
for calc-select-here but not for the other operations.

Any code pointers are much appreciated, as well as feedback and thoughts
about integrating this as a feature.

---------------

In GNU Emacs 26.2 (build 1, x86_64-apple-darwin18.2.0, NS appkit-1671.10 Version 10.14.1 (Build 18B75))
of 2019-04-20 built on d12frosted.local
Windowing system distributor 'Apple', version 10.3.1671
Recent messages:
Mark saved where search started [3 times]
calc-prepare-selection: (&optional NUM)
Mark saved where search started [2 times]
Saving file /Users/johnbc/.emacs.d/.cache/recentf...
Wrote /Users/johnbc/.emacs.d/.cache/recentf
Saving file /Users/johnbc/.emacs.d/.cache/recentf...
Wrote /Users/johnbc/.emacs.d/.cache/recentf
Clipboard pasted as level 2 subtree
TODO state was already MEETING
Clock starts at [2019-07-10 Wed 10:29] - showing entire task time.
Quit
Configured using:
'configure --disable-dependency-tracking --disable-silent-rules
--enable-locallisppath=/usr/local/share/emacs/site-lisp
--infodir=/usr/local/Cellar/emacs-plus/26.2/share/info/emacs
--prefix=/usr/local/Cellar/emacs-plus/26.2 --with-xml2 --without-dbus
--with-gnutls --with-imagemagick --with-modules --with-rsvg --with-ns
--disable-ns-self-contained'

Configured features:
JPEG RSVG IMAGEMAGICK GLIB NOTIFY ACL GNUTLS LIBXML2 ZLIB
TOOLKIT_SCROLL_BARS NS MODULES THREADS LCMS2

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

Major mode: Emacs-Lisp

Minor modes in effect:
  global-magit-file-mode: t
  global-git-commit-mode: t
  async-bytecomp-package-mode: t
  auto-compile-mode: t
  elisp-slime-nav-mode: t
  goto-address-prog-mode: t
  bug-reference-prog-mode: t
  auto-highlight-symbol-mode: t
  highlight-numbers-mode: t
  highlight-parentheses-mode: t
  rainbow-delimiters-mode: t
  recentf-mode: t
  projectile-mode: t
  hl-todo-mode: t
  winum-mode: t
  winner-mode: t
  volatile-highlights-mode: t
  global-vi-tilde-fringe-mode: t
  vi-tilde-fringe-mode: t
  spaceline-info-mode: t
  save-place-mode: t
  savehist-mode: t
  popwin-mode: t
  persp-mode: t
  global-linum-mode: t
  linum-mode: t
  Info-breadcrumbs-in-mode-line-mode: t
  flx-ido-mode: t
  eyebrowse-mode: t
  global-evil-surround-mode: t
  evil-surround-mode: t
  global-evil-search-highlight-persist: t
  evil-search-highlight-persist: t
  show-smartparens-global-mode: t
  show-smartparens-mode: t
  smartparens-mode: t
  evil-escape-mode: t
  global-anzu-mode: t
  anzu-mode: t
  eval-sexp-fu-flash-mode: t
  counsel-mode: t
  ivy-mode: t
  clean-aindent-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
  diff-auto-refine-mode: t
  global-hl-line-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
  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
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  hs-minor-mode: t

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

Features:
(shadow sort mail-extr emacsbug sendmail calc-help calc-stuff calc-yank
calc-sel calc-arith calccomp calc-alg calc-ext calc-aent org-archive
cal-move two-column iso-transl goto-chg dumb-jump popup evil-matchit
evil-matchit-sdk robe inf-ruby rubocop ruby-tools eieio-opt speedbar
sb-image ezimage dframe browse-url calc-menu calc-misc calc
calc-loaddefs calc-macs misearch multi-isearch magit-bookmark bookmark
tabify org-datetree org-capture helm-make org-duration org-clock
diary-lib diary-loaddefs cal-iso pp cl-print define-word smex
magit-gitflow org-indent org-eldoc evil-org org-bullets org-download
toc-org image-file org-drill org-learn org-id hi-lock org-info org-habit
org-agenda org-docview doc-view jka-compr smartparens-org orgit
org-element avl-tree generator git-rebase evil-magit magit-submodule
magit-obsolete magit-popup magit-blame magit-stash magit-reflog
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 imenu
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 pcvs-util add-log with-editor
async-bytecomp async org org-macro org-footnote org-pcomplete org-list
org-faces org-entities org-version ob-latex ob ob-tangle org-src ob-ref
ob-lob ob-table ob-keys ob-exp ob-comint ob-emacs-lisp ob-core ob-eval
org-compat org-macs org-loaddefs find-func cal-menu calendar
cal-loaddefs 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 files-x open-junk-file auto-compile packed
elisp-slime-nav goto-addr bug-reference auto-highlight-symbol
highlight-numbers parent-mode highlight-parentheses hideshow
rainbow-delimiters diminish tramp-cache tramp-sh tramp tramp-compat
tramp-loaddefs trampver parse-time recentf tree-widget projectile grep
ibuf-ext ibuffer ibuffer-loaddefs hl-todo server ws-butler winum winner
etags volatile-highlights vi-tilde-fringe spaceline-config
spaceline-segments spaceline powerline powerline-separators
powerline-themes smartparens-config smartparens-text smartparens-ruby
smartparens-html saveplace savehist ruby-test-mode pcre2el rxt
re-builder ruby-mode smie popwin persp-mode outline-magic osx-trash
linum ivy-hydra info+ image-mode flx-ido flx eyebrowse evil-unimpaired f
s evil-surround evil-search-highlight-persist highlight evil-numbers
evil-lisp-state smartparens dash evil-indent-plus evil-exchange
evil-escape evil-args evil-anzu anzu eval-sexp-fu rx noutline outline
counsel xdg xref project swiper ivy delsel colir color ivy-overlay ffap
clean-aindent-mode tex-site adaptive-wrap hybrid-mode
exec-path-from-shell 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-keybindings 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
evil-macros evil-repeat evil-states evil-core evil-common windmove
thingatpt rect evil-digraphs evil-vars info bind-map rng-nxml rng-valid
rng-loc rng-uri rng-parse nxml-parse rng-match rng-dt rng-util rng-pttrn
nxml-ns nxml-mode nxml-outln nxml-rap sgml-mode dom nxml-util nxml-enc
xmltok compile comint ansi-color ring vc-git diff-mode elec-pair
autoload mm-archive message dired dired-loaddefs format-spec rfc822 mml
mml-sec epa gnus-util rmail rmail-loaddefs mailabbrev gmm-utils
mailheader epg mail-utils network-stream starttls url-http tls gnutls
url-gw nsm rmc puny url-cache url-auth url url-proxy url-privacy
url-expand url-methods url-history url-cookie url-domsuf url-util
mailcap quelpa help-fns radix-tree package-build mm-decode mm-bodies
mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums
mail-prsvr json map lisp-mnt hl-line xt-mouse autorevert filenotify
cl-extra disp-table wid-edit spacemacs-dark-theme spacemacs-common
finder-inf core-configuration-layer eieio-compat ht cl help-mode
warnings package epg-config url-handlers url-parse auth-source cl-seq
password-cache url-vars eieio eieio-core eieio-loaddefs
ido-vertical-mode ido seq byte-opt bytecomp byte-compile cconv
core-spacemacs core-use-package-ext core-transient-state
core-micro-state core-toggle core-keybindings core-fonts-support
core-spacemacs-buffer core-funcs cl-macs gv core-themes-support
core-display-init core-jump core-auto-completion core-release-management
core-dotspacemacs core-command-line pcase core-debug edmacro kmacro
derived advice profiler easymenu cl-loaddefs cl-lib page-break-lines
easy-mmode subr-x time-date tooltip eldoc electric uniquify ediff-hook
vc-hooks lisp-float-type mwheel term/ns-win ns-win ucs-normalize
mule-util term/common-win tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode elisp-mode lisp-mode
prog-mode register page menu-bar rfn-eshadow isearch timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame 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 minibuffer 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 kqueue cocoa ns lcms2 multi-tty make-network-process
emacs)

Memory information:
((conses 16 1555178 1244200)
(symbols 48 73503 2)
(miscs 40 18032 25655)
(strings 32 240557 180919)
(string-bytes 1 7720800)
(vectors 16 97347)
(vector-slots 8 1925441 750026)
(floats 8 831 5037)
(intervals 56 39981 18695)
(buffers 992 144))