diff options
author | Steven Silvester | 2014-08-02 09:48:36 -0500 |
---|---|---|
committer | Steven Silvester | 2014-08-02 09:48:36 -0500 |
commit | 2a2e2de98438ca43052158c960a4d0a81ea426a4 (patch) | |
tree | 522cb6878fc11797c40989a8445d889a1a917843 /octave_kernel.py | |
parent | 34db9d3f0eefa722597140519ecceb230f4b55ae (diff) | |
download | scilab_kernel-2a2e2de98438ca43052158c960a4d0a81ea426a4.tar.gz scilab_kernel-2a2e2de98438ca43052158c960a4d0a81ea426a4.tar.bz2 scilab_kernel-2a2e2de98438ca43052158c960a4d0a81ea426a4.zip |
Add history
Diffstat (limited to 'octave_kernel.py')
-rw-r--r-- | octave_kernel.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/octave_kernel.py b/octave_kernel.py index daf82f5..c964701 100644 --- a/octave_kernel.py +++ b/octave_kernel.py @@ -1,4 +1,5 @@ from IPython.kernel.zmq.kernelbase import Kernel +from IPython.utils.path import locate_profile from IPython.core.oinspect import Inspector, cast_unicode from oct2py import octave, Oct2PyError @@ -6,6 +7,7 @@ import os import signal from subprocess import check_output import re +import logging __version__ = '0.1' @@ -47,12 +49,22 @@ class OctaveKernel(Kernel): self.inspector = Inspector() self.inspector.set_active_scheme("Linux") + self.hist_file = os.path.join(locate_profile(), 'octave_kernel.hist') + self.max_cache = 1000 + self.cache = [] + + self.log.setLevel(logging.ERROR) + def do_execute(self, code, silent, store_history=True, user_expressions=None, allow_stdin=False): code = code.strip() abort_msg = {'status': 'abort', 'execution_count': self.execution_count} + if code: + self.cache.append(code) + if len(self.cache) > self.max_cache: + self.cache.pop(0) if not code or code == 'keyboard' or code.startswith('keyboard('): return {'status': 'ok', 'execution_count': self.execution_count, 'payload': [], 'user_expressions': {}} @@ -153,11 +165,29 @@ class OctaveKernel(Kernel): data = {'text/plain': docstring} return {'status': 'ok', 'data': data, 'metadata': dict()} + def do_history(self, hist_access_type, output, raw, session=None, + start=None, stop=None, n=None, pattern=None, unique=False): + """Access history. + """ + if not os.path.exists(self.hist_file): + with open(self.hist_file, 'wb') as fid: + fid.write('') + with open(self.hist_file, 'rb') as fid: + history = fid.readlines() + self.cache = history + self.log.debug('**HISTORY:') + self.log.debug(history) + history = [(None, None, h) for h in history] + return {'history': history} + def do_shutdown(self, restart): + self.log.debug("**Shutting down") if restart: self.octavewrapper.restart() else: self.octavewrapper.close() + with open(self.hist_file, 'wb') as fid: + fid.write('\n'.join(self.cache)) return Kernel.do_shutdown(self, restart) def _get_help(self, code): |