Commit graph

214 commits

Author SHA1 Message Date
Nathaniel Nicandro
8f774120c9 Better handling of when to remove requests from a client's request table
For each message received in response to a request, record the
`last-message-time` of any received messages for a request. When a request's
`idle-received-p` field is non-nil and the `last-message-time` is larger than
some number of seconds, remove the request from the request table.
2018-01-11 12:06:26 -06:00
Nathaniel Nicandro
62691611e4 Add jupyter--ioloop-collect-messages to simplify jupyter--ioloop even more 2018-01-11 12:04:42 -06:00
Nathaniel Nicandro
b9f83a60d6 Allow passing an id to the jupyter-session constructor 2018-01-11 12:03:32 -06:00
Nathaniel Nicandro
85b3dc3167 Refactor REPL buffer initialization 2018-01-11 03:28:04 -06:00
Nathaniel Nicandro
46b70e85d0 Refactor jupyter-initialize-connection
- Use `ignore-errors` around `jupyter-connection` slots since they can be
  inherited by the `parent-instance`. Note that checking if the slot is
  available does not also check if the slots availability in the
  `parent-instance`

- Set `addr` where it is used, namely in `cl-loop`
2018-01-11 00:26:03 -06:00
Nathaniel Nicandro
34b0d45078 Use quoted lists 2018-01-11 00:25:08 -06:00
Nathaniel Nicandro
56e5f047bd car instead of caar in jupyter--ioloop-queue-message
`elem` is a list not a list of lists
2018-01-11 00:22:19 -06:00
Nathaniel Nicandro
f705dc96fe Indentation 2018-01-09 00:44:35 -06:00
Nathaniel Nicandro
ef6b72f1b7 Proper cleanup of all buffers associated with a REPL 2018-01-09 00:44:35 -06:00
Nathaniel Nicandro
bcc1677ec0 Update doc of jupyter-repl-initialize-fontification 2018-01-09 00:44:35 -06:00
Nathaniel Nicandro
5d9244b17b Rename jupyter--encode-object -> jupyter--encode, jupyter-decode-string -> jupyter--decode` 2018-01-09 00:44:35 -06:00
Nathaniel Nicandro
ec1d9073a1 Fix use of argument in jupyter-repl-insert-latex 2018-01-09 00:44:35 -06:00
Nathaniel Nicandro
f3951ee9af Fix debug message 2018-01-09 00:44:35 -06:00
Nathaniel Nicandro
839e5d855a [WIP] Add ability to stop channels initially in jupyter-start-channels
Also add TODO about channel methods
2018-01-09 00:44:35 -06:00
Nathaniel Nicandro
a9f2bac2c8 Better logic on when to send queued messages in an ioloop subprocess 2018-01-09 00:44:34 -06:00
Nathaniel Nicandro
7a1a7871d3 jupyter-start-new-kernel already unpauses the heartbeat channel 2018-01-09 00:44:34 -06:00
Nathaniel Nicandro
b198a02f45 Add note about how `jupyter-channel's are used in a client 2018-01-09 00:44:34 -06:00
Nathaniel Nicandro
912a367190 Error out when no ioloop process is present in jupyter-send 2018-01-09 00:44:34 -06:00
Nathaniel Nicandro
c358e37b23 Add missing initform 2018-01-09 00:44:34 -06:00
Nathaniel Nicandro
047968c4e9 Refactor jupyter-start-channel 2018-01-09 00:44:34 -06:00
Nathaniel Nicandro
a7539dc37b Fix checkdoc warnings 2018-01-09 00:44:34 -06:00
Nathaniel Nicandro
c7dee4aa55 Simplify kernel shutdown and interruptions in a kernel manager 2018-01-09 00:44:34 -06:00
Nathaniel Nicandro
d44d9d0c64 Actually set the kernel process of a manager when starting the kernel 2018-01-09 00:44:34 -06:00
Nathaniel Nicandro
14e02c95bf Handle {resource_dir} when starting kernel 2018-01-09 00:44:34 -06:00
Nathaniel Nicandro
9ba6ad331e Remove uses of lexical-let 2018-01-09 00:44:34 -06:00
Nathaniel Nicandro
326ff15d92 Add standard header comments 2018-01-09 00:44:33 -06:00
Nathaniel Nicandro
ebd616998e Add/update lots of documentation 2018-01-09 00:44:33 -06:00
Nathaniel Nicandro
85fe15ae4c Only unfinalized cells can have their code replaced
Don't set `inhibit-read-only` to t when replacing cell code. This prevents one
from replacing the cell code of a finalized cell.
2018-01-09 00:44:33 -06:00
Nathaniel Nicandro
6178a53638 Refactor jupyter-start-new-kernel to use jupyter-missing-request 2018-01-09 00:44:33 -06:00
Nathaniel Nicandro
7e36ea1101 Add jupyter-missing-request
This is a function which should be called on a `jupyter-kernel-client` and it
returns a request object which can be used to add callbacks to messages that
have no parent message such as the status: startup message sent be a kernel.
2018-01-09 00:44:33 -06:00
Nathaniel Nicandro
7169c5072a warn instead of error when handling unknown message types 2018-01-09 00:44:33 -06:00
Nathaniel Nicandro
44c75944d3 Fix missing argument 2018-01-09 00:44:33 -06:00
Nathaniel Nicandro
c500b08104 Set default values for the jupyter-connection slots of a jupyter-kernel-manager 2018-01-09 00:44:33 -06:00
Nathaniel Nicandro
f904dc7d2a Rename jupyter-push-message -> jupyter-queue-message 2018-01-09 00:44:33 -06:00
Nathaniel Nicandro
c706d07f02 Refactor jupyter--ioloop
Break it into several macros which perform various subtasks like processing a
command received from the parent emacs process and collecting messages into a
sorted list based on `jupyter-message-time`
2018-01-09 00:44:33 -06:00
Nathaniel Nicandro
b846af6c00 Remove unreachable code 2018-01-07 19:54:52 -06:00
Nathaniel Nicandro
71c4314a86 jupyter-connection inherits from eieio-instance-inheritor
This way when creating kernel clients with `jupyter-kernel-manager`, we can set
the `parent-instance` of the newly created client to the manager thereby
inheriting the `jupyter-session` from the kernel manager.

Also have `jupyter-channel` objects inherit from a `jupyter-connection` so that
we can define `jupyter-send` and `jupyter-recv` methods for channels in the future.
2018-01-07 14:53:12 -06:00
Nathaniel Nicandro
c09aebaa6a Fix wrong function names 2018-01-07 14:45:20 -06:00
Nathaniel Nicandro
5975e0e096 Update tests
Use lexical bindings, fix byte compiler warnings.
2018-01-07 14:25:54 -06:00
Nathaniel Nicandro
346cdc78c8 Update heartbeat channel tests to take into account implementation changes 2018-01-07 14:16:17 -06:00
Nathaniel Nicandro
9e2db2146b [WIP] Back to the old prefix behavior in company-jupyter-repl
This needs to be changed. `company-grab-symbol` will only grab 'bar' when
cursor is at | in the following:

    foo.bar|

We would like it to grab the whole 'foo.bar' and let the kernel figure out what
to do. Similarly for other operators like '->'. The problem that needs to be
fixed is to properly replace just the 'bar' part if 'foo.bar' is the prefix. I
believe the `match` command of a company backend will be of use.
2018-01-07 14:10:52 -06:00
Nathaniel Nicandro
8431e6834b Insert newlines in the jupyter-repl-client buffer when appropriate 2018-01-07 14:10:24 -06:00
Nathaniel Nicandro
9be91260c7 Refactor setting inserted text properties in jupyter-repl-insert 2018-01-07 14:09:39 -06:00
Nathaniel Nicandro
f003e40101 Add more documentation 2018-01-07 14:06:14 -06:00
Nathaniel Nicandro
aff8f7dc5d Fix wrong number of arguments 2018-01-07 14:03:55 -06:00
Nathaniel Nicandro
ada66074f5 Fix some checkdoc warnings 2018-01-07 13:35:05 -06:00
Nathaniel Nicandro
b31aa780a3 Use cl-defgeneric for client handlers and requests methods
This way eldoc works with the method arguments
2018-01-06 22:50:55 -06:00
Nathaniel Nicandro
4896c6b75b Use pcase in jupyter--ioloop-filter
Also change the type of objects emitted by `jupyter--ioloop` to lists
2018-01-06 21:04:03 -06:00
Nathaniel Nicandro
f42a22c586 Update jupyter--ioloop to take into account changes in with-zmq-poller
Namely that `current-zmq-poller` is no longer available and the first argument of `with-zmq-poller` will be bound to a poller object.
2018-01-06 21:03:37 -06:00
Nathaniel Nicandro
50fb035862 Call inhibit-read-only in jupyter-repl-replace-cell-code 2018-01-06 19:56:57 -06:00