ipython keybinding

Fernando Pérez fperez528 at yahoo.com
Tue Oct 22 13:54:35 EDT 2002


John Hunter wrote:

> 
> I just installed ipython http://www-hep.colorado.edu/~fperez/ipython/.
> Wow, what a fantastic python shell.

Thanks. Glad you like it.

> So far I have just two items on my wishlist:
> 
> 1) Is it possible to bind the 'up/down' arrow keys to the same
>    function that C-n/C-p are.  The latter only bring up previous
>    commands that match what has been typed before, while the former
>    bring up the previous/next command regardless of the text entered
>    so far on the prompt.

I couldn't do it. Tried a lot, never got it to work. But if someone can figure 
it out, I'll be glad to fix it for a future release. That's how I use my 
normal shell and would love to set the same thing in ipython, but I wasn't 
able to fix this.

> 2) Is it possible to run ipython in an emacs shell, or is this in the
>    works (ala matlab-shell)?  I fear the answer is no, since the
>    default editor for the @edit command is vi, which leads me to guess
>    that Fernando is a vi user.  This is not a big requirement, since I
>    can just pop open a quick emacs session from within ipython with
>    @edit, but we emacs junkies like to do everything within one emacs
>    session, for cutting and pasting text across buffers that are
>    already open, etc...

Actually, @edit is bound to call $EDITOR. I am an XEmacs user myself, the only 
thing I know how to do with vi is 'C-Z; killall vi' when I accidentally open 
it :) You can set your editor environment variable to anything you want. I 
personally use jed for quick edits, so I set $EDITOR to that, and I use 
Xemacs for heavy-duty work. Now, with Alex Schmolck's help who patched the 
Xemacs python mode, it _is_ possible to use ipython inside emacs as your 
python shell. I just uploaded the new python-mode.el file to the download 
directory for ipython, so you can grab it from there. I also put the 
following in my emacs config file, as per Alex's instructions:

  (defun my-activate-ansi-colors ()
    (require 'ansi-color)
    (ansi-color-for-comint-mode-on))
  (add-hook 'py-shell-hook 'my-activate-ansi-colors)
  ;; Regular expression that describes tracebacks for IPython in context and
  ;; verbose mode.
  (add-hook 'python-mode-hook
            '(lambda ()
               ;; this works for @xmode verbose or context
               (setq py-traceback-line-re
                     "^\\(.+?\\) in [^\00]+?\n--> \\([0-9]+\\) +")))
  (setq py-shell-input-prompt-1-regexp "^In \\[[0-9]+\\]: "
        py-shell-input-prompt-2-regexp "^   [.][.][.]+: " )

  ;; Set IPython to be the python command and give it arguments
  (setq py-python-command "ipython")
  (setq py-python-command-args
        (cond
         ((eq frame-background-mode 'dark)
          '("-colors" "Linux"))
         ((eq frame-background-mode 'light)
          '("-colors" "LightBG"))
         (t                ; default (backg-mode isn't always set by XEmacs)
          '("-colors" "LightBG"))
         ))

Let me know if this works ok for you.

Cheers,

f.



More information about the Python-list mailing list