mirror of
https://github.com/vale981/emacs-ipython-notebook
synced 2025-03-06 09:31:39 -05:00
Fix for #188.
Make even more unique edit-cell buffer names. Check that an edit-cell-buffer does not already exits before creating one. Also try to be even more aggressive in limiting output in backtraces when debugging ein.
This commit is contained in:
parent
2547226f2e
commit
e88f7f3d5f
3 changed files with 18 additions and 8 deletions
|
@ -148,8 +148,8 @@ previous value."
|
||||||
(interactive)
|
(interactive)
|
||||||
(let (ein:src--allow-write-back) (ein:edit-cell-exit)))
|
(let (ein:src--allow-write-back) (ein:edit-cell-exit)))
|
||||||
|
|
||||||
(defun ein:construct-cell-edit-buffer-name (bufname cell-type)
|
(defun ein:construct-cell-edit-buffer-name (bufname cid cell-type)
|
||||||
(concat "*EIN Src " bufname "[ " cell-type " ]*" ))
|
(concat "*EIN Src " bufname "[ " cid "/" cell-type " ]*" ))
|
||||||
|
|
||||||
(defun ein:get-mode-for-kernel (kernelspec)
|
(defun ein:get-mode-for-kernel (kernelspec)
|
||||||
(if (null kernelspec)
|
(if (null kernelspec)
|
||||||
|
@ -201,9 +201,15 @@ appropriate language major mode. Functionality is very similar to
|
||||||
(error "Must be called from inside an EIN worksheet cell.")))
|
(error "Must be called from inside an EIN worksheet cell.")))
|
||||||
(nb (ein:notebook--get-nb-or-error))
|
(nb (ein:notebook--get-nb-or-error))
|
||||||
(ws (ein:worksheet--get-ws-or-error))
|
(ws (ein:worksheet--get-ws-or-error))
|
||||||
(contents (ein:cell-get-text cell))
|
|
||||||
(type (slot-value cell 'cell-type))
|
(type (slot-value cell 'cell-type))
|
||||||
(name (ein:construct-cell-edit-buffer-name (buffer-name) type))
|
(name (ein:construct-cell-edit-buffer-name (buffer-name) (ein:cell-id cell) type)))
|
||||||
|
(ein:aif (get-buffer name)
|
||||||
|
(switch-to-buffer-other-window it)
|
||||||
|
(ein:create-edit-cell-buffer name cell nb ws))))
|
||||||
|
|
||||||
|
(defun ein:create-edit-cell-buffer (name cell notebook worksheet)
|
||||||
|
(let* ((contents (ein:cell-get-text cell))
|
||||||
|
(type (slot-value cell 'cell-type))
|
||||||
(buffer (generate-new-buffer-name name))
|
(buffer (generate-new-buffer-name name))
|
||||||
(overlay (ein:make-source-overlay (ein:cell-input-pos-min cell)
|
(overlay (ein:make-source-overlay (ein:cell-input-pos-min cell)
|
||||||
(ein:cell-input-pos-max cell)
|
(ein:cell-input-pos-max cell)
|
||||||
|
@ -214,17 +220,18 @@ appropriate language major mode. Functionality is very similar to
|
||||||
'(display nil invisible nil intangible nil))
|
'(display nil invisible nil intangible nil))
|
||||||
(set-buffer-modified-p nil)
|
(set-buffer-modified-p nil)
|
||||||
(setq buffer-file-name buffer) ;; Breaks anaconda-mode without this special fix.
|
(setq buffer-file-name buffer) ;; Breaks anaconda-mode without this special fix.
|
||||||
|
|
||||||
(condition-case e
|
(condition-case e
|
||||||
(ein:case-equal type
|
(ein:case-equal type
|
||||||
(("markdown") (markdown-mode))
|
(("markdown") (markdown-mode))
|
||||||
(("code")
|
(("code")
|
||||||
(case (ein:get-mode-for-kernel (ein:$notebook-kernelspec nb))
|
(case (ein:get-mode-for-kernel (ein:$notebook-kernelspec notebook))
|
||||||
(python (python-mode)))))
|
(python (python-mode)))))
|
||||||
(error (message "Language mode `%s' fails with: %S"
|
(error (message "Language mode `%s' fails with: %S"
|
||||||
type (nth 1 e))))
|
type (nth 1 e))))
|
||||||
(set (make-local-variable 'ein:src--overlay) overlay)
|
(set (make-local-variable 'ein:src--overlay) overlay)
|
||||||
(set (make-local-variable 'ein:src--cell) cell)
|
(set (make-local-variable 'ein:src--cell) cell)
|
||||||
(set (make-local-variable 'ein:src--ws) ws)
|
(set (make-local-variable 'ein:src--ws) worksheet)
|
||||||
(set (make-local-variable 'ein:src--allow-write-back) t)
|
(set (make-local-variable 'ein:src--allow-write-back) t)
|
||||||
(ein:edit-cell-mode)))
|
(ein:edit-cell-mode)))
|
||||||
|
|
||||||
|
|
|
@ -184,7 +184,8 @@ See also: https://github.com/tkf/emacs-ipython-notebook/issues/94"
|
||||||
(metadata :initarg :metadata :initform nil :type list) ;; For nbformat >= 4
|
(metadata :initarg :metadata :initform nil :type list) ;; For nbformat >= 4
|
||||||
(events :initarg :events :type ein:events)
|
(events :initarg :events :type ein:events)
|
||||||
(slidetype :initarg :slidetype :initform "-" :type string)
|
(slidetype :initarg :slidetype :initform "-" :type string)
|
||||||
(cell-id :initarg :cell-id :initform (ein:utils-uuid) :type string))
|
(cell-id :initarg :cell-id :initform (ein:utils-uuid) :type string
|
||||||
|
:accessor ein:cell-id))
|
||||||
"Notebook cell base class")
|
"Notebook cell base class")
|
||||||
|
|
||||||
(defclass ein:codecell (ein:basecell)
|
(defclass ein:codecell (ein:basecell)
|
||||||
|
|
|
@ -80,7 +80,9 @@ As code cells hold base64-encoded image data, backtrace tends to
|
||||||
be VERY long. So I am setting `print-level' to *1*. Note that
|
be VERY long. So I am setting `print-level' to *1*. Note that
|
||||||
setting it globally via `setq' does not work because the value
|
setting it globally via `setq' does not work because the value
|
||||||
for debugger is hard-coded. See `debugger-setup-buffer'."
|
for debugger is hard-coded. See `debugger-setup-buffer'."
|
||||||
(let ((print-level 1))
|
(let ((print-level 1)
|
||||||
|
(print-length 1)
|
||||||
|
(print-circle t))
|
||||||
ad-do-it))
|
ad-do-it))
|
||||||
|
|
||||||
(defun ein:dev-patch-backtrace ()
|
(defun ein:dev-patch-backtrace ()
|
||||||
|
|
Loading…
Add table
Reference in a new issue