Skip to content

Commit 8081e13

Browse files
committed
Make completion work on Main
1 parent 7c4f78b commit 8081e13

1 file changed

Lines changed: 21 additions & 0 deletions

File tree

src/replhelper/core.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@ def jl_name(name):
99
return name
1010

1111

12+
def py_name(name):
13+
if name.endswith('!'):
14+
return name[:-1] + '_b'
15+
return name
16+
17+
1218
class JuliaAPI(object):
1319

1420
def __init__(self, eval_str, set_var):
@@ -35,6 +41,21 @@ def __getattr__(self, name):
3541
else:
3642
return self.__julia.eval(jl_name(name))
3743

44+
@property
45+
def __all__(self):
46+
names = self.__julia.eval("names(Main)")
47+
return list(map(py_name, names))
48+
49+
def __dir__(self):
50+
if sys.version_info.major == 2:
51+
names = set()
52+
else:
53+
names = set(super(JuliaNameSpace, self).__dir__())
54+
names.update(self.__all__)
55+
return list(names)
56+
# Override __dir__ method so that completing member names work
57+
# well in Python REPLs like IPython.
58+
3859

3960
instruction_template = """
4061

0 commit comments

Comments
 (0)