mirror of
https://github.com/vale981/emacs-ipython-notebook
synced 2025-03-05 09:01:40 -05:00
Rewrite ein-kernelinfo.el using eieio
This commit is contained in:
parent
f83623ace6
commit
bea782380a
1 changed files with 25 additions and 30 deletions
|
@ -26,40 +26,36 @@
|
|||
;;; Code:
|
||||
|
||||
(require 'ein-kernel)
|
||||
(require 'eieio)
|
||||
|
||||
|
||||
(defstruct ein:$kernelinfo
|
||||
"Info related (but unimportant) to kernel
|
||||
|
||||
`ein:$kernelinfo-kernel'
|
||||
Kernel instance.
|
||||
|
||||
`ein:$kernelinfo-buffer'
|
||||
Notebook buffer that the kernel associated with.
|
||||
|
||||
`ein:$kernelinfo-hostname'
|
||||
Host name of the machine where the kernel is running on.
|
||||
|
||||
`ein:$kernelinfo-ccwd'
|
||||
cached CWD (last time checked CWD)."
|
||||
kernel
|
||||
buffer
|
||||
hostname
|
||||
ccwd)
|
||||
(defclass ein:kernelinfo ()
|
||||
((kernel
|
||||
:initarg :kernel :type ein:$kernel
|
||||
:documentation "Kernel instance.")
|
||||
(buffer
|
||||
:initarg :buffer
|
||||
:documentation "Notebook buffer that the kernel associated with.")
|
||||
(hostname
|
||||
:initarg :hostname :type string
|
||||
:documentation "Host name of the machine where the kernel is running on.")
|
||||
(ccwd
|
||||
:initarg :ccwd :type string
|
||||
:documentation "cached CWD (last time checked CWD)."))
|
||||
:documentation "Info related (but unimportant) to kernel")
|
||||
|
||||
(defun ein:kernelinfo-setup (kernel buffer)
|
||||
(let ((kerinfo (make-ein:$kernelinfo)))
|
||||
(setf (ein:$kernelinfo-kernel kerinfo) kernel)
|
||||
(let ((kerinfo (make-instance 'ein:kernelinfo)))
|
||||
(oset kerinfo :kernel kernel)
|
||||
(ein:kernelinfo-setup-hooks kerinfo)
|
||||
(ein:kernelinfo-init kerinfo buffer)
|
||||
kerinfo))
|
||||
|
||||
(defun ein:kernelinfo-init (kerinfo buffer)
|
||||
(setf (ein:$kernelinfo-buffer kerinfo) buffer))
|
||||
(oset kerinfo :buffer buffer))
|
||||
|
||||
(defun ein:kernelinfo-setup-hooks (kerinfo)
|
||||
"Add `ein:kernelinfo-update-*' to `ein:$kernel-after-*-hook'."
|
||||
(let ((kernel (ein:$kernelinfo-kernel kerinfo)))
|
||||
(with-slots (kernel) kerinfo
|
||||
(push (cons #'ein:kernelinfo-update-all kerinfo)
|
||||
(ein:$kernel-after-start-hook kernel))
|
||||
(push (cons #'ein:kernelinfo-update-ccwd kerinfo)
|
||||
|
@ -68,7 +64,7 @@
|
|||
(defun ein:kernelinfo-update-all (kerinfo)
|
||||
(ein:log 'debug "EIN:KERNELINFO-UPDATE-ALL")
|
||||
(ein:log 'debug "(ein:kernel-live-p kernel) = %S"
|
||||
(ein:kernel-live-p (ein:$kernelinfo-kernel kerinfo)))
|
||||
(ein:kernel-live-p (oref kerinfo :kernel)))
|
||||
(ein:kernelinfo-update-ccwd kerinfo)
|
||||
(ein:kernelinfo-update-hostname kerinfo))
|
||||
|
||||
|
@ -76,27 +72,26 @@
|
|||
"Update cached current working directory (CCWD) and change
|
||||
`default-directory' of `ein:$kernelinfo-buffer'."
|
||||
(ein:kernel-request-stream
|
||||
(ein:$kernelinfo-kernel kerinfo)
|
||||
(oref kerinfo :kernel)
|
||||
"__import__('sys').stdout.write(__import__('os').getcwd())"
|
||||
(lambda (cwd kernel kerinfo buffer)
|
||||
(setq cwd (ein:kernel-filename-from-python kernel cwd))
|
||||
(setf (ein:$kernelinfo-ccwd kerinfo) cwd)
|
||||
(oset kerinfo :ccwd cwd)
|
||||
;; sync buffer's `default-directory' with CWD
|
||||
;; FIXME: Support multiple buffers.
|
||||
(when (buffer-live-p buffer)
|
||||
(with-current-buffer buffer
|
||||
(when (file-accessible-directory-p cwd)
|
||||
(setq default-directory (file-name-as-directory cwd))))))
|
||||
(let ((kernel (ein:$kernelinfo-kernel kerinfo)))
|
||||
(list kernel kerinfo (ein:$kernelinfo-buffer kerinfo)))))
|
||||
(list (oref kerinfo :kernel) kerinfo (oref kerinfo :buffer))))
|
||||
|
||||
(defun ein:kernelinfo-update-hostname (kerinfo)
|
||||
"Get hostname in which kernel is running and store it in KERINFO."
|
||||
(ein:kernel-request-stream
|
||||
(ein:$kernelinfo-kernel kerinfo)
|
||||
(oref kerinfo :kernel)
|
||||
"__import__('sys').stdout.write(__import__('os').uname()[1])"
|
||||
(lambda (hostname kerinfo)
|
||||
(setf (ein:$kernelinfo-hostname kerinfo) hostname))
|
||||
(oset kerinfo :hostname hostname))
|
||||
(list kerinfo)))
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue