##// END OF EJS Templates
Improve tooltip tringgering,make it configurable...
Improve tooltip tringgering,make it configurable As until now, when pressing tab and a white space was preceding the cursor The completion was triggerd with the whole namespace in it. Now if a whitespace or an opening bracket is just befor the cursor it will try to display a tooltip. The logic to find what object_info_request is send have been sightly changed to try to match the expression just before the last unmached openig bracket before the cursor (without considering what is after the cursor). example (_|_ represent the cursor): >>> his_|_<tab> # completion >>> hist(_|_<tab> # tooltip on hist >>> hist(rand(20),bins=range(_|_ <tab> #tooltip on range >>> hist(rand(20),bins=range(10), _|_ <tab> # tooltip on hist (whitespace before cursor) >>> hist(rand(20),bins=range(10),_|_ <tab> # completion as we dont care of what is after the cursor: >>> hist(rand(5000), bins=50, _|_orientaion='horizontal') # and tab, equivalent to >>> hist(rand(5000), bins=50, _|_<tab> # onte the space again >>> hist(_|_rand(5000), bins=50, orientaion='horizontal') # and tab, equivalent to >>> hist(_|_ the 4 give tooltip on hist note that you can get tooltip on things that aren't function by appending a '(' like >>> matplotlib(<tab> Which is kinda weird... so we might want to bound another shortcut for tooltip, but which matches without bracket... additionnaly I have added a "Config" pannel in the left pannel with a checkbox bind to wether or not activate this functionnality Note, (rebase and edited commit, might not work perfetly xwithout the following ones)

File last commit:

r4872:34c10438
r5399:f73c6ce0
Show More
ipy_rehashdir.py
140 lines | 4.2 KiB | text/x-python | PythonLexer
fperez
Fix win32 line endings.
r281 # -*- coding: utf-8 -*-
""" IPython extension: add %rehashdir magic
Usage:
%rehashdir c:/bin c:/tools
Bernardo B. Marques
remove all trailling spaces
r4872 - Add all executables under c:/bin and c:/tools to alias table, in
fperez
Fix win32 line endings.
r281 order to make them directly executable from any directory.
Bernardo B. Marques
remove all trailling spaces
r4872
fperez
Fix win32 line endings.
r281 This also serves as an example on how to extend ipython
with new magic functions.
Unlike rest of ipython, this requires Python 2.4 (optional
extensions are allowed to do that).
"""
Brian Granger
ipapi.py => core/ipapi.py and imports updated.
r2027 from IPython.core import ipapi
ip = ipapi.get()
fperez
Fix win32 line endings.
r281
vivainio
ipython_firstrun(ip) entry point for _ip.load, ipykit enhancement: pylaunchers for launching python scripts
r801 import os,re,fnmatch,sys
fperez
Fix win32 line endings.
r281
vivainio
callable aliases now get _ip as first arg
r833 def selflaunch(ip,line):
vivainio
ipython_firstrun(ip) entry point for _ip.load, ipykit enhancement: pylaunchers for launching python scripts
r801 """ Launch python script with 'this' interpreter
Bernardo B. Marques
remove all trailling spaces
r4872
vivainio
ipykit pylaunchers do .ipy now
r841 e.g. d:\foo\ipykit.exe a.py
Bernardo B. Marques
remove all trailling spaces
r4872
vivainio
ipython_firstrun(ip) entry point for _ip.load, ipykit enhancement: pylaunchers for launching python scripts
r801 """
Bernardo B. Marques
remove all trailling spaces
r4872
vivainio
ipykit pylaunchers do .ipy now
r841 tup = line.split(None,1)
if len(tup) == 1:
print "Launching nested ipython session"
os.system(sys.executable)
return
Bernardo B. Marques
remove all trailling spaces
r4872
vivainio
ipykit pylaunchers do .ipy now
r841 cmd = sys.executable + ' ' + tup[1]
vivainio
ipython_firstrun(ip) entry point for _ip.load, ipykit enhancement: pylaunchers for launching python scripts
r801 print ">",cmd
os.system(cmd)
class PyLauncher:
""" Invoke selflanucher on the specified script
Bernardo B. Marques
remove all trailling spaces
r4872
vivainio
ipython_firstrun(ip) entry point for _ip.load, ipykit enhancement: pylaunchers for launching python scripts
r801 This is mostly useful for associating with scripts using::
Brian Granger
Continuing a massive refactor of everything.
r2205 _ip.define_alias('foo',PyLauncher('foo_script.py'))
Bernardo B. Marques
remove all trailling spaces
r4872
vivainio
ipython_firstrun(ip) entry point for _ip.load, ipykit enhancement: pylaunchers for launching python scripts
r801 """
def __init__(self,script):
self.script = os.path.abspath(script)
vivainio
callable aliases now get _ip as first arg
r833 def __call__(self, ip, line):
vivainio
ipykit pylaunchers do .ipy now
r841 if self.script.endswith('.ipy'):
ip.runlines(open(self.script).read())
else:
vivainio
ipykit: PyLauncher first arg strip
r861 # first word is the script/alias name itself, strip it
tup = line.split(None,1)
if len(tup) == 2:
tail = ' ' + tup[1]
else:
tail = ''
Bernardo B. Marques
remove all trailling spaces
r4872
vivainio
ipykit: PyLauncher first arg strip
r861 selflaunch(ip,"py " + self.script + tail)
vivainio
ipython_firstrun(ip) entry point for _ip.load, ipykit enhancement: pylaunchers for launching python scripts
r801 def __repr__(self):
return 'PyLauncher("%s")' % self.script
vivainio
ipykit pylaunchers do .ipy now
r841
fperez
Fix win32 line endings.
r281 def rehashdir_f(self,arg):
""" Add executables in all specified dirs to alias table
Bernardo B. Marques
remove all trailling spaces
r4872
fperez
Fix win32 line endings.
r281 Usage:
%rehashdir c:/bin;c:/tools
Bernardo B. Marques
remove all trailling spaces
r4872 - Add all executables under c:/bin and c:/tools to alias table, in
fperez
Fix win32 line endings.
r281 order to make them directly executable from any directory.
Bernardo B. Marques
remove all trailling spaces
r4872
fperez
Fix win32 line endings.
r281 Without arguments, add all executables in current directory.
Bernardo B. Marques
remove all trailling spaces
r4872
fperez
Fix win32 line endings.
r281 """
# most of the code copied from Magic.magic_rehashx
def isjunk(fname):
junk = ['*~']
for j in junk:
if fnmatch.fnmatch(fname, j):
return True
return False
Bernardo B. Marques
remove all trailling spaces
r4872
vivainio
add mglob
r687 created = []
fperez
Fix win32 line endings.
r281 if not arg:
arg = '.'
path = map(os.path.abspath,arg.split(';'))
Brian Granger
Massive refactoring of of the core....
r2245 alias_table = self.shell.alias_manager.alias_table
Bernardo B. Marques
remove all trailling spaces
r4872
fperez
Fix win32 line endings.
r281 if os.name == 'posix':
isexec = lambda fname:os.path.isfile(fname) and \
os.access(fname,os.X_OK)
else:
try:
winext = os.environ['pathext'].replace(';','|').replace('.','')
except KeyError:
winext = 'exe|com|bat|py'
vivainio
.py is always executable for purposes of %rehashx and %rehashdir
r380 if 'py' not in winext:
winext += '|py'
Bernardo B. Marques
remove all trailling spaces
r4872
fperez
Fix win32 line endings.
r281 execre = re.compile(r'(.*)\.(%s)$' % winext,re.IGNORECASE)
isexec = lambda fname:os.path.isfile(fname) and execre.match(fname)
Jörgen Stenarson
Search of getcwd and replace with getcwdu. Ignoring core/prompts.py
r4208 savedir = os.getcwdu()
fperez
Fix win32 line endings.
r281 try:
# write the whole loop for posix/Windows so we don't have an if in
# the innermost part
if os.name == 'posix':
for pdir in path:
os.chdir(pdir)
for ff in os.listdir(pdir):
if isexec(ff) and not isjunk(ff):
# each entry in the alias table must be (N,name),
# where N is the number of positional arguments of the
# alias.
vivainio
add mglob
r687 src,tgt = os.path.splitext(ff)[0], os.path.abspath(ff)
Bernardo B. Marques
remove all trailling spaces
r4872 created.append(src)
fperez
Fix win32 line endings.
r281 alias_table[src] = (0,tgt)
else:
for pdir in path:
os.chdir(pdir)
for ff in os.listdir(pdir):
if isexec(ff) and not isjunk(ff):
src, tgt = execre.sub(r'\1',ff), os.path.abspath(ff)
vivainio
Aliases are now lowercase on win32
r649 src = src.lower()
Bernardo B. Marques
remove all trailling spaces
r4872 created.append(src)
fperez
Fix win32 line endings.
r281 alias_table[src] = (0,tgt)
# Make sure the alias table doesn't contain keywords or builtins
self.shell.alias_table_validate()
# Call again init_auto_alias() so we get 'rm -i' and other
# modified aliases since %rehashx will probably clobber them
vivainio
no auto_alias in %redashdir...
r543 # self.shell.init_auto_alias()
fperez
Fix win32 line endings.
r281 finally:
os.chdir(savedir)
vivainio
add mglob
r687 return created
vivainio
ipython_firstrun(ip) entry point for _ip.load, ipykit enhancement: pylaunchers for launching python scripts
r801
Brian Granger
Continuing a massive refactor of everything.
r2205 ip.define_magic("rehashdir",rehashdir_f)