emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[O] Code, Sessions, and org-edit-special


From: Ken Mankoff
Subject: [O] Code, Sessions, and org-edit-special
Date: Fri, 21 Nov 2014 18:38:56 -0500

Hi List,

I'm trying to improve my code workflow. I use python and sessions. I'd
like to be able to run code in the session even if I'm editing/viewing
the code via `org-edit-special`. Furthermore, when I edit code outside
of Org, I'd like to have sessions, that is, optionally one Python
session per source file. This allows me to edit different code for
different projects in different folders on virtual desktops, etc.

I've solved the non-Org part of this with the following one re-defined
and one new function:

#+BEGIN_SRC emacs-lisp
  (defun elpy-shell-get-or-create-process ()
    "Get or create an inferior Python process for current buffer and return it."
    (let* ((bufname (format "*%s*" (kdm/python-shell-get-process-name t)))
           (proc (get-buffer-process bufname)))
      (if proc
          proc
        (run-python (python-shell-parse-command) t nil) ;; DEDICATED!
        (get-buffer-process bufname))))

  (defun kdm/python-shell-get-process-name (dedicated)
    (if (boundp 'py-buf-proc-name)
        (format "%s" py-buf-proc-name)
        (setq-local py-buf-proc-name
             (format "%s"
                     (completing-read "Python session name: "
                                      nil nil nil (buffer-name) nil 
(buffer-name)))
   )))
#+END_SRC

Now when I C-c C-c in a buffer without an associated Python session, I'm
prompted for a name (defaulting to the buffer-name). I provide a session
name, and then all future C-c C-c's for that buffer are executed there.

This is good for Org. If I name a session "foo", I can edit code in
org-edit-special, assign Python session "foo", and execute code in a
session either from the org buffer or from the temp .py file. In theory.

But since I've call kdm/pythons-shell-get-process-name, if I try to C-c
C-c in a #+BEGIN_SRC section, it no longer works. I'm prompted for a
session name (I should not be). Whatever I enter is ignored, and the
code is executed either in a temporary "*Python*" if no :session, or in
the :session name as it should be.

How can I find out inside my `kdm/python-shell-get-process-name` if it
was called from Org, in which case I would implement the original
version.

Thanks,

  -k.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]