ipy_editors.py
88 lines
| 2.4 KiB
| text/x-python
|
PythonLexer
vivainio
|
r851 | """ 'editor' hooks for common editors that work well with ipython | |
They should honor the line number argument, at least. | |||
Contributions are *very* welcome. | |||
""" | |||
Brian Granger
|
r2027 | from IPython.core import ipapi | |
Brian Granger
|
r2205 | from IPython.core.error import TryNext | |
Brian Granger
|
r2027 | ip = ipapi.get() | |
vivainio
|
r851 | ||
Brian Granger
|
r2031 | from IPython.external.Itpl import itplns | |
vivainio
|
r851 | import os | |
def install_editor(run_template, wait = False): | |||
""" Gets a template in format "myeditor bah bah $file bah bah $line" | |||
$file will be replaced by file name, $line by line number (or 0). | |||
Installs the editor that is called by IPython, instead of the default | |||
notepad or vi. | |||
If wait is true, wait until the user presses enter before returning, | |||
to facilitate non-blocking editors that exit immediately after | |||
the call. | |||
""" | |||
vivainio
|
r853 | def call_editor(self, file, line=0): | |
vivainio
|
r851 | if line is None: | |
line = 0 | |||
cmd = itplns(run_template, locals()) | |||
print ">",cmd | |||
Ville M. Vainio
|
r1744 | if os.system(cmd) != 0: | |
Brian Granger
|
r2205 | raise TryNext() | |
vivainio
|
r851 | if wait: | |
raw_input("Press Enter when done editing:") | |||
ip.set_hook('editor',call_editor) | |||
# in these, exe is always the path/name of the executable. Useful | |||
# if you don't have the editor directory in your path | |||
def komodo(exe = 'komodo'): | |||
""" Activestate Komodo [Edit] """ | |||
install_editor(exe + ' -l $line "$file"', wait = True) | |||
def scite(exe = "scite"): | |||
""" SciTE or Sc1 """ | |||
install_editor(exe + ' "$file" -goto:$line') | |||
def notepadplusplus(exe = 'notepad++'): | |||
""" Notepad++ http://notepad-plus.sourceforge.net """ | |||
install_editor(exe + ' -n$line "$file"') | |||
def jed(exe = 'jed'): | |||
""" JED, the lightweight emacsish editor """ | |||
install_editor(exe + ' +$line "$file"') | |||
def idle(exe = None): | |||
""" Idle, the editor bundled with python | |||
Should be pretty smart about finding the executable. | |||
""" | |||
if exe is None: | |||
import idlelib | |||
p = os.path.dirname(idlelib.__file__) | |||
exe = p + '/idle.py' | |||
install_editor(exe + ' "$file"') | |||
Brian Granger
|
r1782 | ||
def mate(exe = 'mate'): | |||
""" TextMate, the missing editor""" | |||
install_editor(exe + ' -w -l $line "$file"') | |||
vivainio
|
r851 | ||
# these are untested, report any problems | |||
def emacs(exe = 'emacs'): | |||
install_editor(exe + ' +$line "$file"') | |||
def gnuclient(exe= 'gnuclient'): | |||
install_editor(exe + ' -nw +$line "$file"') | |||
def crimson_editor(exe = 'cedt.exe'): | |||
vivainio
|
r881 | install_editor(exe + ' /L:$line "$file"') | |
def kate(exe = 'kate'): | |||
install_editor(exe + ' -u -l $line "$file"') | |||
vivainio
|
r851 | ||
vivainio
|
r848 |