It seems there are enough people out there still on Emacs 24 to warrant undoing
some of my recent moves away from eieio to cl-generic. For the near future I
will try to keep any changes that are incompatible with Emacs 24 to a
development branch. There is still probably plenty of opportunity to make the
code more future-proof for an eventual move away from eieio (I'm looking at you
oref and sref...)
Images weren't being save to json in the way they should have. Mostly had to do
with how the attirbutes were being ordered. This is still, unfortunately, a
nasty bit code but it still seems to work.
Make even more unique edit-cell buffer names. Check that an edit-cell-buffer
does not already exits before creating one.
Also try to be even more aggressive in limiting output in backtraces when
debugging ein.
Mistyped some accessors for worksheet slot accessors. Correct
`*running-ipython-version*` hash to accept strings (i.e. URL's) as well as just
port numbers.
Finally do the right thing when clear_output is received. Closes issue #24. Also
fix a nasty bug that might occurr when trying to open a notebook with no
associated kernelspec.
The goal is to eventually eliminate most of the warnings that are
generated when byte-compiling ein.
Do this over several commits to make it easier to revert in the likely
event that something breaks.
Caught one! "pyout" messages are now called "execute_result", so we
should act accordingly. Before "execute_result" was being treated as
"display_data".
EIN will try to use skewer to execute javascript cells, which works for
the most part. Those hoping to have widgest or something like d3 working
are going to be disappointed, however, as at its heart ein is not an
HTML page and those packages depend on modifying the DOM of the notebook
web page.
It remains to be seen if those issues are surmountable, but for the
moment this functionality will live in this branch and this branch
alone.
Let the user control whether or not to view slide attributes in current
worksheet via `ein:worksheet-toggle-slideshow-view` (C-c S).
Also added a couple more slide attributes (fragment, notes) as
these appear to be support in current Jupyter version.
Make text output the last option when pretty printing is enabled
(eg when ein:output-type-preference is set to
ein:output-type-prefer-pretty-text-over-html). This will at least make
%%latex cells output the latex inside. Next step - automatically typeset
the math!
NBformat 4 has a tag key in the cell metadata. We use it to tag a cell
depending on which worksheet it is in. For now the code does nothing
else with this tag, but the goal is to reimplement multiple worksheets
in ein.
This fixes the invalid json error, but behavior still leaves a bit to be
desired. EIN will save pretty text over html, which may be unexpected
behavior for some.
When there is a python error, we actually get two identical tracebacks back
from the kernel, one from the "shell" channel, and one from the "iopub"
channel. As a workaround, we remember the cell's traceback and ignore
traceback outputs that are identical to the one we already have.
Protocol for error reporting has changed in IPython 3.0 messaging and
ein was missing error messages.
EIN was also saving "*" for the notebook execution count and per
nbformat v4 execute_count can only be null or a number.
Work in progress.
Lots and lots of changes trying to clean up code so there are not so
many checks of IPython version. Also a significant amount of refactoring
all notebook server requests code to ein-contents-api.
Also moving away from notebook-id concept; instead use notebook path to
uniquely identify notebooks/content.
Made `ein:query-ipython-version` more efficient by caching results.
More conditional code for saving notebooks in nbformat v4.0.
`prompt_number` is no longer a valid property so it has to be corrected
to be `execution_count` instead.