~ipython-dev/ipython/0.10.1

« back to all changes in this revision

Viewing changes to IPython/Extensions/ipy_editors.py

  • Committer: Fernando Perez
  • Date: 2008-06-02 01:26:30 UTC
  • mfrom: (0.1.130 ipython-local)
  • Revision ID: fernando.perez@berkeley.edu-20080602012630-m14vezrhydzvahf8
Merge in all development done in bzr since February 16 2008.

At that time, a clean bzr branch was started from the SVN tree, but
without SVN history.  That SVN history has now been used as the basis
of this branch, and the development done on the history-less BZR
branch has been added and is the content of this merge.  

This branch will be the new official main line of development in
Launchpad (equivalent to the old SVN trunk).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
""" 'editor' hooks for common editors that work well with ipython
 
2
 
 
3
They should honor the line number argument, at least.
 
4
 
 
5
Contributions are *very* welcome.
 
6
"""
 
7
 
 
8
import IPython.ipapi
 
9
ip = IPython.ipapi.get()
 
10
 
 
11
from IPython.Itpl import itplns
 
12
import os
 
13
 
 
14
def install_editor(run_template, wait = False):
 
15
    """ Gets a template in format "myeditor bah bah $file bah bah $line"
 
16
    
 
17
    $file will be replaced by file name, $line by line number (or 0).
 
18
    Installs the editor that is called by IPython, instead of the default
 
19
    notepad or vi.
 
20
    
 
21
    If wait is true, wait until the user presses enter before returning,
 
22
    to facilitate non-blocking editors that exit immediately after
 
23
    the call.
 
24
    """
 
25
    
 
26
    def call_editor(self, file, line=0):
 
27
        if line is None:
 
28
            line = 0
 
29
        cmd = itplns(run_template, locals())
 
30
        print ">",cmd
 
31
        os.system(cmd)
 
32
        if wait:
 
33
            raw_input("Press Enter when done editing:")
 
34
 
 
35
    ip.set_hook('editor',call_editor)
 
36
 
 
37
 
 
38
# in these, exe is always the path/name of the executable. Useful
 
39
# if you don't have the editor directory in your path
 
40
 
 
41
def komodo(exe = 'komodo'):
 
42
    """ Activestate Komodo [Edit] """
 
43
    install_editor(exe + ' -l $line "$file"', wait = True)
 
44
 
 
45
def scite(exe = "scite"):
 
46
    """ SciTE or Sc1 """
 
47
    install_editor(exe + ' "$file" -goto:$line')
 
48
 
 
49
def notepadplusplus(exe = 'notepad++'):
 
50
    """ Notepad++ http://notepad-plus.sourceforge.net """
 
51
    install_editor(exe + ' -n$line "$file"')
 
52
    
 
53
def jed(exe = 'jed'):
 
54
    """ JED, the lightweight emacsish editor """
 
55
    install_editor(exe + ' +$line "$file"')
 
56
 
 
57
def idle(exe = None):
 
58
    """ Idle, the editor bundled with python
 
59
    
 
60
    Should be pretty smart about finding the executable.
 
61
    """
 
62
    if exe is None:
 
63
        import idlelib
 
64
        p = os.path.dirname(idlelib.__file__)
 
65
        exe = p + '/idle.py'
 
66
    install_editor(exe + ' "$file"')
 
67
        
 
68
 
 
69
# these are untested, report any problems
 
70
 
 
71
def emacs(exe = 'emacs'):
 
72
    install_editor(exe + ' +$line "$file"')
 
73
 
 
74
def gnuclient(exe= 'gnuclient'):
 
75
    install_editor(exe + ' -nw +$line "$file"')
 
76
 
 
77
def crimson_editor(exe = 'cedt.exe'):
 
78
    install_editor(exe + ' /L:$line "$file"')
 
79
    
 
80
def kate(exe = 'kate'):
 
81
    install_editor(exe + ' -u -l $line "$file"')
 
82
    
 
83
   
 
84
    
 
 
b'\\ No newline at end of file'