Override polymode if the user really wants.

Polymode is really for notebook buffers in any case, but this will override
whatever completion backmode a user has configured for python-mode.
This commit is contained in:
Miller 2019-07-12 21:06:15 -05:00
parent 9c74e83d1b
commit 2d55c2cff9
2 changed files with 18 additions and 16 deletions

View file

@ -239,7 +239,7 @@ appropriate language major mode. Functionality is very similar to
(if raw-cell-p
(funcall ein:raw-cell-default-edit-mode)
(case (ein:get-mode-for-kernel (ein:$notebook-kernelspec notebook))
(julia (julia-mode))
(julia (julia-mode))
(python (python-mode))
(R (R-mode))))))

View file

@ -319,29 +319,32 @@ if necessary. Install CALLBACK (i.e., cell execution) upon notebook retrieval."
(defun ob-ein--edit-ctrl-c-ctrl-c ()
"C-c C-c mapping in ein:connect-mode-map."
(interactive)
(org-edit-src-save)
(when (boundp 'org-src--beg-marker)
(let* ((beg org-src--beg-marker)
(buf (marker-buffer beg)))
(with-current-buffer buf
(save-excursion
(goto-char beg)
(org-ctrl-c-ctrl-c))))))
(if (not (org-src-edit-buffer-p))
(ein:connect-run-buffer)
(org-edit-src-save)
(when (boundp 'org-src--beg-marker)
(let* ((beg org-src--beg-marker)
(buf (marker-buffer beg)))
(with-current-buffer buf
(save-excursion
(goto-char beg)
(org-ctrl-c-ctrl-c)))))))
(defvar ob-ein-babel-edit-polymode-ignore t)
(defun org-babel-edit-prep:ein (babel-info)
(if ein:polymode
(if (and ein:polymode (not ob-ein-babel-edit-polymode-ignore))
(progn
(use-local-map (copy-keymap python-mode-map))
(local-set-key "\C-c\C-c" 'ob-ein--edit-ctrl-c-ctrl-c))
(let* ((buffer (current-buffer))
(processed-params (org-babel-process-params babel-info))
(session (or (ein:aand (cdr (assoc :session processed-params))
(processed-parameters (nth 2 babel-info))
(session (or (ein:aand (cdr (assoc :session processed-parameters))
(unless (string= "none" it)
(format "%s" it)))
ein:url-localhost))
(lang (nth 0 (org-babel-get-src-block-info)))
(kernelspec (or (cdr (assoc :kernelspec processed-params))
(lang "ein-python")
(kernelspec (or (cdr (assoc :kernelspec processed-parameters))
(ein:aif (cdr (assoc lang org-src-lang-modes))
(cons 'language (format "%s" it))
(error "ob-ein--execute-body: %s not among %s"
@ -351,8 +354,7 @@ if necessary. Install CALLBACK (i.e., cell execution) upon notebook retrieval."
kernelspec
(lambda (notebook)
(ein:connect-buffer-to-notebook notebook buffer t)
(use-local-map (copy-keymap ein:connect-mode-map))
(local-set-key "\C-c\C-c" 'ob-ein--edit-ctrl-c-ctrl-c))))))
(define-key ein:connect-mode-map "\C-c\C-c" 'ob-ein--edit-ctrl-c-ctrl-c))))))
(defun org-babel-edit-prep:ein-python (babel-info)
(org-babel-edit-prep:ein babel-info))