From e93801f101d1196636e52b62330e11ea827998eb Mon Sep 17 00:00:00 2001 From: Takafumi Arakaki Date: Tue, 28 Aug 2012 18:00:07 +0200 Subject: [PATCH] Add get-notebook-name slot in ein:worksheet --- lisp/ein-notebook.el | 4 ++++ lisp/ein-pager.el | 2 ++ lisp/ein-scratchsheet.el | 5 +++-- lisp/ein-worksheet.el | 8 +++++--- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/lisp/ein-notebook.el b/lisp/ein-notebook.el index 6db8eaf..1ab8f1a 100644 --- a/lisp/ein-notebook.el +++ b/lisp/ein-notebook.el @@ -243,6 +243,9 @@ will be updated with kernel's cwd." (defalias 'ein:notebook-name 'ein:$notebook-notebook-name) +(defun ein:notebook-name-getter (notebook) + (cons #'ein:notebook-name notebook)) + ;;; Open notebook @@ -450,6 +453,7 @@ This is equivalent to do ``C-c`` in the console program." &optional (func #'ein:worksheet-new)) (funcall func notebook (ein:$notebook-nbformat notebook) + (ein:notebook-name-getter notebook) (ein:$notebook-kernel notebook) (ein:$notebook-events notebook))) diff --git a/lisp/ein-pager.el b/lisp/ein-pager.el index 4dec68d..ddd651b 100644 --- a/lisp/ein-pager.el +++ b/lisp/ein-pager.el @@ -30,6 +30,8 @@ (require 'ein-core) (require 'ein-events) +;; FIXME: Make a class with `:get-notebook-name' slot like `ein:worksheet' + (defun ein:pager-new (name events) ;; currently pager = name. (ein:pager-bind-events name events) diff --git a/lisp/ein-scratchsheet.el b/lisp/ein-scratchsheet.el index 4a189d3..e45988c 100644 --- a/lisp/ein-scratchsheet.el +++ b/lisp/ein-scratchsheet.el @@ -37,9 +37,10 @@ :documentation "Worksheet without needs for saving.") -(defun ein:scratchsheet-new (notebook nbformat kernel events &rest args) +(defun ein:scratchsheet-new (notebook nbformat get-notebook-name + kernel events &rest args) (apply #'make-instance 'ein:scratchsheet - :nbformat nbformat + :nbformat nbformat :get-notebook-name get-notebook-name :notebook notebook :kernel kernel :events events args)) diff --git a/lisp/ein-worksheet.el b/lisp/ein-worksheet.el index 4ca9246..d7c5d9f 100644 --- a/lisp/ein-worksheet.el +++ b/lisp/ein-worksheet.el @@ -86,6 +86,7 @@ this value." (;; Recursive reference to notebook... but needs notebook name here. (notebook :initarg :notebook :type ein:$notebook) (nbformat :initarg :nbformat :type integer) + (get-notebook-name :initarg :get-notebook-name :type cons) (data :initarg :data) (ewoc :initarg :ewoc :type ewoc) (kernel :initarg :kernel :type ein:$kernel) @@ -100,9 +101,10 @@ this value." ;;; Initialization of object and buffer -(defun ein:worksheet-new (notebook nbformat kernel events &rest args) +(defun ein:worksheet-new (notebook nbformat get-notebook-name + kernel events &rest args) (apply #'make-instance 'ein:worksheet - :nbformat nbformat + :nbformat nbformat :get-notebook-name get-notebook-name :notebook notebook :kernel kernel :events events args)) @@ -140,7 +142,7 @@ this value." (ein:worksheet-set-modified-p ein:%worksheet% value)))) (defmethod ein:worksheet-notebook-name ((ws ein:worksheet)) - (ein:notebook-name (oref ws :notebook))) + (ein:funcall-packed (oref ws :get-notebook-name))) (defmethod ein:worksheet-url-or-port ((ws ein:worksheet)) (ein:$notebook-url-or-port (oref ws :notebook)))