emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Myles English <mylesenglish@gmail.com>
To: nicholas.dokos@hp.com
Cc: Emacs-orgmode <Emacs-orgmode@gnu.org>
Subject: Re: [PATCH] session with python-mode.el complains of void py-toggle-shells
Date: Wed, 23 Jan 2013 12:46:46 +0000	[thread overview]
Message-ID: <87fw1sxe15.fsf@gmail.com> (raw)
In-Reply-To: <3314.1358914289@alphaville>


Hi Nick,

Nick Dokos writes:

> Myles English <mylesenglish@gmail.com> wrote:

>> I think it should be possible to execute a python block in a session
>> using python-mode.el but get this message:
>> 
>> "Symbol's function definition is void: py-toggle-shells"

I have made a bit of progress with the patch below.  The breakage may
have been due to changes in python-mode.el .  The patch works for
versions 6.0.10 and 6.1.0.

> I get in trouble much sooner than you do: when evaluating the first code
> block.  The error in my case was that run-python was called with the
> wrong number of args (from the same function: it's a couple of lines
> before py-toggle-shells is called). I'm running
>
> GNU Emacs 24.3.50.2 (x86_64-unknown-linux-gnu, GTK+ Version 2.24.4) of 2012-12-29
>
> and run-python does indeed need a required arg in this version:
>
> ,----
> | run-python is an interactive autoloaded compiled Lisp function in
> | `python.el'.
> | 
> | (run-python CMD &optional DEDICATED SHOW)
> | 
> | Run an inferior Python process.
> | Input and output via buffer named after
> | `python-shell-buffer-name'.  If there is a process already
> | running in that buffer, just switch to it.
> `----
>
> So I changed the call to
>
>
>  	(run-python py-python-command)
>
> and then all the code blocks could execute with no problem. Has
> run-python changed signature recently?

Doing git blame ob-python.el shows that not much has changed in that
file over the last couple of years.

> This may or may not be the problem you are running into however.

I have made some progress and the patch below passes this test:

#+BEGIN_SRC emacs-lisp
(add-to-list 'load-path
	     "~/.emacs.d/plugins/org-mode/lisp")
  (require 'org)
  (org-babel-do-load-languages
   'org-babel-load-languages
   '((python . t)))
(setq org-babel-python-mode 'python-mode)
#+END_SRC

#+begin_src python :results output :session a
import sys
#+end_src

#+begin_src python :results output :session a
print(sys.path)
#+end_src

Patch:

--- lisp/ob-python.el
+++ lisp/ob-python.el
@@ -32,7 +32,7 @@
 
 (declare-function org-remove-indentation "org" )
 (declare-function py-shell "ext:python-mode" (&optional argprompt))
-(declare-function py-toggle-shells "ext:python-mode" (arg))
+(declare-function py-toggle-shell "ext:python-mode" (arg))
 (declare-function run-python "ext:python" (&optional cmd noshow new))
 
 (defvar org-babel-tangle-lang-exts)
@@ -162,16 +162,17 @@ then create.  Return the initialized session."
        ;; Make sure that py-which-bufname is initialized, as otherwise
        ;; it will be overwritten the first time a Python buffer is
        ;; created.
-       (py-toggle-shells py-default-interpreter)
+       (py-toggle-shell py-default-interpreter)
        ;; `py-shell' creates a buffer whose name is the value of
        ;; `py-which-bufname' with '*'s at the beginning and end
        (let* ((bufname (if (and python-buffer (buffer-live-p python-buffer))
                            (replace-regexp-in-string ;; zap surrounding *
                             "^\\*\\([^*]+\\)\\*$" "\\1" python-buffer)
                          (concat "Python-" (symbol-name session))))
-              (py-which-bufname bufname))
-         (py-shell)
-         (setq python-buffer (concat "*" bufname "*"))))
+              (py-buffer-name bufname))
+         (setq python-buffer (concat "*" bufname "*"))
+         (py-shell nil nil nil nil nil python-buffer)
+         ))
        (t
        (error "No function available for running an inferior Python")))
       (setq org-babel-python-buffers



Myles

  reply	other threads:[~2013-01-23 12:46 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-23  2:47 session with python-mode.el complains of void py-toggle-shells Myles English
2013-01-23  4:11 ` Nick Dokos
2013-01-23 12:46   ` Myles English [this message]
2013-01-23 13:04     ` [PATCH] " Bastien
2013-01-23 18:02       ` Andreas Röhler
2013-01-24 14:10         ` Bastien
2013-02-21 20:08           ` Andreas Röhler
2013-02-22  8:25           ` Andreas Röhler
2013-02-23  9:29             ` Bastien
2013-01-23 13:00   ` Bastien
  -- strict thread matches above, loose matches on Subject: below --
2011-10-28  1:23 [odt] equation labels Myles English
2011-10-30 22:11 ` Jambunathan K
2011-10-31 11:54   ` Myles English
2011-11-01 11:17     ` Myles English
2011-11-01 19:39     ` Jambunathan K
2011-11-01 19:49       ` Jambunathan K
2011-11-02 13:18       ` Myles English
     [not found]         ` <mylesenglish@gmail.com>
2011-11-02 13:38           ` Nick Dokos
2011-11-02 14:49             ` Myles English
2011-11-02 14:52           ` Nick Dokos
2011-11-02 18:21             ` Jambunathan K
2011-11-02 21:33               ` Myles English

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=87fw1sxe15.fsf@gmail.com \
    --to=mylesenglish@gmail.com \
    --cc=Emacs-orgmode@gnu.org \
    --cc=nicholas.dokos@hp.com \
    /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).