* If `comment-start` is nil, using a regular expression with an empty or clause
causes an infinite loop. Ensure that we only add the or clause when
`comment-start` is non-nil in `jupyter-repl-propertize-output`.
* Copy over the `comment-start` from the REPL language buffer in
`jupyter-repl-initialize-fontification`
* Rename `jupyter-repl-output-buffer-marker` to `jupyter-output-buffer-marker`
* Rename `jupyter-repl-output-buffer-last-request-id` to
`jupyter-output-buffer-request-id`
* Add `jupyter--reset-output-buffer-p` which returns non-nil if the current
input buffer should be reset.
* Simplify the `jupyter-with-output-buffer` macro
* Rename `jupyter-repl-with-output-buffer` to `jupyter-with-output-buffer`.
* Replace uses of `jupyter-repl-with-doc-buffer` with
`jupyter-with-output-buffer`. The difference between the two was that
`jupyter-repl-with-doc-buffer` always reset the buffer before inserting new
output.
* Add `jupyter-channel--reset-socket` which does the work of connecting the
heartbeat channel to its endpoint and takes care of possibly reseting the
socket after sending a ping.
This function is essentially the same as `jupyter-repl-insert-data` but also
allows different kernel languages to do post-processing to the inserted data.
This is done by defining a new method, `jupyter-repl-after-insert-message`
which is called with the buffer narrowed to the inserted data.
One of its uses is to fontify documentation strings of Python kernels when
making inspect requests.
This change is required because when evaluating code in other contexts than the
REPL, the convention is to set `jupyter-inhibit-handlers` to `(not :status)` so
that the `execution-state` can be updated for the mode-line construct.
* Declare undeclared external functions
* Add ext: prefix to filename of external packages that may not be present on
every system
* Remove `company-grab-symbol-cons` function declaration since this function is
no longer used.
* Previously any odd number of quote characters in the output of a cell messes
up fontification of the next input cell since it will consider the input as
part of a string. I had mistakenly thought that changing the syntax of the
quote characters when inserting cell output fixed the problem but did not
realize that as a part of fontification, the region being fontified is
unfontified first by `font-lock-unfontify-region` whose default
`font-lock-default-unfontify-region` removes the `syntax-table` property if
`font-lock-syntactic-keywords` is non-nil for a major mode which means the
`syntax-table` property that we add in the cell output gets removed.
* The solution is to add our own `syntax-propertize-function` which calls
`jupyter-repl-propertize-output` when attempting to fontify a region that
is not cell code and calls the REPL languages `syntax-propertize-function`
if available.
* In `jupyter-repl-propertize-output`, also change the syntax of ' characters