In the previous version, the global variable ein:notebooklist-list
kept growing when the notebook list is reloaded. In this change
backend for data storage is switched to hash table so that the size
of data will not increase when the list is reloaded.
Fixes the problem old notebook name showed up in the completion
list of ein:notebooklist-open-notebook-global.
As this command requires to invoke multi-line python code, ein.py is
added to store python code needed for EIN. The sys.path is added
automatically when the kernel is started so that any function can be
called as ``__import__("ein").FUNCTION()``. This way, namespace is
not contaminated at all.
Change is only in ein-kernels.el except the new one function
in ein-utils.el. Note that byte compile and tests are broken
because of the changes.
Changes are mostly following the refactoring in IPython JS client:
https://github.com/ipython/ipython/pull/1711
URL was fixed in the previous version. As Emacs does not know URL of
IPython web server like JS does implicitly by page location, I need to
pass URL around in notebook list/notebook/kernel. I add `url-or-port'
slot to each structs so it is easy to get URL from the struct.