emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Ken Mankoff <mankoff@gmail.com>
To: emacs-orgmode@gnu.org
Subject: Code, Sessions, and org-edit-special
Date: Fri, 21 Nov 2014 18:38:56 -0500	[thread overview]
Message-ID: <m2d28gxgxb.fsf@gmail.com> (raw)

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	other threads:[~2014-11-21 23:39 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-21 23:38 Ken Mankoff [this message]
2014-11-23  0:17 ` Code, Sessions, and org-edit-special Ken Mankoff
2014-11-23 19:50   ` Ken Mankoff

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m2d28gxgxb.fsf@gmail.com \
    --to=mankoff@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).