Skip to content

Instantly share code, notes, and snippets.

@theY4Kman
Last active May 29, 2019 04:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save theY4Kman/4e8433551240482b348dda5a4aa95331 to your computer and use it in GitHub Desktop.
Save theY4Kman/4e8433551240482b348dda5a4aa95331 to your computer and use it in GitHub Desktop.
This gist exceeds the recommended number of files (~10). To access all files, please clone this gist.
import cmd
import sys
from fancycompleter import interact, DefaultConfig
class ConfigForTest(DefaultConfig):
use_colors = False
prefer_pyrepl = False
class CompleterCmd(cmd.Cmd):
prompt = ''
if __name__ == '__main__':
globals().update({
name: name
for name in sys.argv[1:]
})
interact(Config=ConfigForTest)
repl = CompleterCmd(completekey=None)
repl.cmdloop(intro='')
from fancycompleter import (DefaultConfig, Completer, Color, Installer,
commonprefix, LazyVersion)
class ConfigForTest(DefaultConfig):
use_colors = False
def test_commonprefix():
assert commonprefix(['isalpha', 'isdigit', 'foo']) == ''
assert commonprefix(['isalpha', 'isdigit']) == 'is'
assert commonprefix(['isalpha', 'isdigit', 'foo'], base='i') == 'is'
assert commonprefix([]) == ''
assert commonprefix(['aaa', 'bbb'], base='x') == ''
def test_complete_attribute():
compl = Completer({'a': None}, ConfigForTest)
assert compl.attr_matches('a.') == ['a.__']
matches = compl.attr_matches('a.__')
assert 'a.__class__' not in matches
assert '__class__' in matches
assert compl.attr_matches('a.__class') == ['a.__class__']
def test_complete_attribute_colored():
class ColorConfig(DefaultConfig):
use_colors = True
color_by_type = {type: '31'}
compl = Completer({'a': 42}, ColorConfig)
matches = compl.attr_matches('a.__')
for match in matches:
if Color.set('31', '__class__') in match:
break
else:
assert False
assert ' ' in matches
def test_complete_global():
compl = Completer({'foobar': 1, 'foobazzz': 2}, ConfigForTest)
assert compl.global_matches('foo') == ['fooba']
matches = compl.global_matches('fooba')
assert set(matches) == set(['foobar', 'foobazzz', ' '])
assert compl.global_matches('foobaz') == ['foobazzz']
def test_complete_with_indexer():
compl = Completer({'lst': [None, 2, 3]}, ConfigForTest)
assert compl.attr_matches('lst[0].') == ['lst[0].__']
matches = compl.attr_matches('lst[0].__')
assert 'lst[0].__class__' not in matches
assert '__class__' in matches
assert compl.attr_matches('lst[0].__class') == ['lst[0].__class__']
def test_autocomplete():
class A:
aaa = None
abc_1 = None
abc_2 = None
abc_3 = None
bbb = None
compl = Completer({'A': A}, ConfigForTest)
#
# in this case, we want to display all attributes which start with
# 'a'. MOREOVER, we also include a space to prevent readline to
# automatically insert the common prefix (which will the the ANSI escape
# sequence if we use colors)
matches = compl.attr_matches('A.a')
assert sorted(matches) == [' ', 'aaa', 'abc_1', 'abc_2', 'abc_3']
#
# IF there is an actual common prefix, we return just it, so that readline
# will insert it into place
matches = compl.attr_matches('A.ab')
assert matches == ['A.abc_']
#
# finally, at the next TAB, we display again all the completions available
# for this common prefix. Agai, we insert a spurious space to prevent the
# automatic completion of ANSI sequences
matches = compl.attr_matches('A.abc_')
assert sorted(matches) == [' ', 'abc_1', 'abc_2', 'abc_3']
def test_complete_exception():
compl = Completer({}, ConfigForTest)
assert compl.attr_matches('xxx.') == []
def test_complete_invalid_attr():
compl = Completer({'str': str}, ConfigForTest)
assert compl.attr_matches('str.xx') == []
def test_unicode_in___dir__():
class Foo(object):
def __dir__(self):
return [u'hello', 'world']
compl = Completer({'a': Foo()}, ConfigForTest)
matches = compl.attr_matches('a.')
assert matches == ['hello', 'world', ' ']
assert type(matches[0]) is str
class MyInstaller(Installer):
env_var = 0
def set_env_var(self):
self.env_var += 1
class TestInstaller(object):
def test_check(self, monkeypatch, tmpdir):
installer = MyInstaller(str(tmpdir), force=False)
monkeypatch.setenv('PYTHONSTARTUP', '')
assert installer.check() is None
f = tmpdir.join('python_startup.py').ensure(file=True)
assert installer.check() == '%s already exists' % f
monkeypatch.setenv('PYTHONSTARTUP', 'foo')
assert installer.check() == 'PYTHONSTARTUP already defined: foo'
def test_install(self, monkeypatch, tmpdir):
installer = MyInstaller(str(tmpdir), force=False)
monkeypatch.setenv('PYTHONSTARTUP', '')
assert installer.install()
assert 'fancycompleter' in tmpdir.join('python_startup.py').read()
assert installer.env_var == 1
#
# the second time, it fails because the file already exists
assert not installer.install()
assert installer.env_var == 1
#
# the third time, it succeeds because we set force
installer.force = True
assert installer.install()
assert installer.env_var == 2
class TestLazyVersion(object):
class MyLazyVersion(LazyVersion):
__count = 0
def _load_version(self):
assert self.__count == 0
self.__count += 1
return '0.1'
def test_lazy_version(self):
ver = self.MyLazyVersion('foo')
assert repr(ver) == '0.1'
assert str(ver) == '0.1'
assert ver == '0.1'
assert not ver != '0.1'
[tox]
envlist = py{27,34,35,36,37,38,py,py3}, checkqa
[testenv]
deps =
pytest
pytest-xdist
pexpect
coverage: pytest-cov
commands = pytest {posargs}
setenv =
coverage: PYTEST_ADDOPTS=--cov --cov-report=term-missing {env:PYTEST_ADDOPTS:}
[testenv:checkqa]
deps =
flake8
mccabe
commands = flake8 --max-complexity=10 setup.py fancycompleter.py testing
[pytest]
addopts = -ra
testpaths = testing
[coverage:run]
include = */fancycompleter.py, testing/*
parallel = 1
branch = 1
[coverage:paths]
source = .
*/lib/python*/site-packages/
*/pypy*/site-packages/
*\Lib\site-packages\
[flake8]
max-line-length = 88
P`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
compP`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
P`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
P`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
compP`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
P`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
P`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
P`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
P`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
compP`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
compP`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
P`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
P`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
P`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
P`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
P`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
P`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
P`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
P`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
P`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
P`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
P`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
P`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
P`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
compP`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
P`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
P`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
P`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
P`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\
[@c[@o[@m[@p[@l[@e[@t[@e[@_
complete_
[ not unique ]  complete_a complete_b complete_c 
tcomplete_
complete_
[ not unique ]  complete_a complete_b complete_c 
tcomplete_
.4c.4o.4m.4p.4l.4e.4t.4e.4_.4
complete_
[ not unique ]  complete_a complete_b complete_c 
Tcomplete_
complete_
[ not unique ]  complete_a complete_b complete_c 
Tcomplete_
QcQoQmQpQlQeQtQeQ_
QcQoQmQpQlQeQtQeQ_
Traceback (most recent call last):
File "/home/they4kman/programming/third-party/fancycompleter/testing/fcomplete.py", line 25, in <module>
repl.cmdloop(intro='')
File "/usr/lib/pypy/lib-python/2.7/cmd.py", line 130, in cmdloop
line = raw_input(self.prompt)
File "/usr/lib/pypy/lib_pypy/pyrepl/readline.py", line 254, in raw_input
reader = self.get_reader()
File "/usr/lib/pypy/lib_pypy/pyrepl/readline.py", line 247, in get_reader
console = UnixConsole(self.f_in, self.f_out, encoding=ENCODING)
File "/usr/lib/pypy/lib_pypy/pyrepl/unix_console.py", line 141, in __init__
raise RuntimeError, "insufficient terminal (vertical)"
RuntimeError: insufficient terminal (vertical)
comp
QcQoQmQpQlQeQtQeQ_
QcQoQmQpQlQeQtQeQ_
complete_
[ not unique ]  complete_a complete_b complete_c 
Tcomplete_
complete_
[ not unique ]  complete_a complete_b complete_c 
Tcomplete_

complete_
[ not unique ] complete_a complete_b complete_c complete_
complete_
[ not unique ]  complete_a complete_b complete_c 
TF complete_
complete_
[ not unique ]  complete_a complete_b complete_c 
Tcomplete_
complete_
[ not unique ]  complete_a complete_b complete_c 
Tcomplete_

complete_
[ not unique ] complete_a complete_b complete_c complete_

complete_
[ not unique ] complete_a complete_b complete_c complete_

complete_
[ not unique ] complete_a complete_b complete_c complete_

complete_
[ not unique ] complete_a complete_b complete_c complete_
A
y4cy4oy4my4py4ly4ey4ty4ey4_y4
`0
`1`0c`1`0o`1`0m`1`0p`1`0l`1`0e`1`0t`1`0e`1`0_`1
[?1h
[>?6l[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ][>?6l complete_a complete_b complete_c complete_[>?6l
[0 p
[ p[@c[@o[@m[@p[@l[@e[@t[@e[@_[0 p
[ not unique ][ p[0 p complete_a complete_b complete_c complete_[ p
QcQoQmQpQlQeQtQeQ_
QcQoQmQpQlQeQtQeQ_
=
[?3lc[?3lo[?3lm[?3lp[?3ll[?3le[?3lt[?3le[?3l_[?3l
[ not unique ][?3l complete_a complete_b complete_c complete_[?3l
=
[?3lc[?3lo[?3lm[?3lp[?3ll[?3le[?3lt[?3le[?3l_[?3l
[ not unique ][?3l complete_a complete_b complete_c 
complete_[?3l
QcQoQmQpQlQeQtQeQ_
[?25l
[?25h[@c[@o[@m[@p[@l[@e[@t[@e[@_[?25l
[ not unique ][?25h[?25l complete_a complete_b complete_c 
complete_[?25h
[?25l
[?25h[@c[@o[@m[@p[@l[@e[@t[@e[@_[?25l
[ not unique ][?25h[?25l complete_a complete_b complete_c 
complete_[?25h
[?25l
[?25h[@c[@o[@m[@p[@l[@e[@t[@e[@_[?25l
[ not unique ][?25h[?25l complete_a complete_b complete_c 
complete_[?25h

[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ] complete_a complete_b complete_c complete_

[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_
[ not unique ] complete_a complete_b complete_c complete_
Traceback (most recent call last):
File "/home/they4kman/programming/third-party/fancycompleter/testing/fcomplete.py", line 25, in <module>
repl.cmdloop(intro='')
File "/usr/lib/pypy/lib-python/2.7/cmd.py", line 130, in cmdloop
line = raw_input(self.prompt)
File "/usr/lib/pypy/lib_pypy/pyrepl/readline.py", line 254, in raw_input
reader = self.get_reader()
File "/usr/lib/pypy/lib_pypy/pyrepl/readline.py", line 247, in get_reader
console = UnixConsole(self.f_in, self.f_out, encoding=ENCODING)
File "/usr/lib/pypy/lib_pypy/pyrepl/unix_console.py", line 134, in __init__
raise RuntimeError, "insufficient terminal (horizontal)"
RuntimeError: insufficient terminal (horizontal)
comp

complete_
[ not unique ] complete_a complete_b complete_c 
complete_

complete_
[ not unique ] complete_a complete_b complete_c 
complete_

[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_
[ not unique ] complete_a complete_b complete_c complete_

complete_
[ not unique ] complete_a complete_b complete_c complete_
[?1h=
complete_
[ not unique ] complete_a complete_b complete_c complete_
[?1h=
complete_
[ not unique ] complete_a complete_b complete_c complete_
[?1h=
complete_
[ not unique ] complete_a complete_b complete_c complete_

complete_
[ not unique ] complete_a complete_b complete_c 
complete_
complete_
[ not unique ]  complete_a complete_b complete_c 
Tcomplete_

complete_
[ not unique ] complete_a complete_b complete_c 
complete_
Traceback (most recent call last):
File "/home/they4kman/programming/third-party/fancycompleter/testing/fcomplete.py", line 25, in <module>
repl.cmdloop(intro='')
File "/usr/lib/pypy/lib-python/2.7/cmd.py", line 130, in cmdloop
line = raw_input(self.prompt)
File "/usr/lib/pypy/lib_pypy/pyrepl/readline.py", line 254, in raw_input
reader = self.get_reader()
File "/usr/lib/pypy/lib_pypy/pyrepl/readline.py", line 247, in get_reader
console = UnixConsole(self.f_in, self.f_out, encoding=ENCODING)
File "/usr/lib/pypy/lib_pypy/pyrepl/unix_console.py", line 134, in __init__
raise RuntimeError, "insufficient terminal (horizontal)"
RuntimeError: insufficient terminal (horizontal)
comp

complete_
[ not unique ] complete_a complete_b complete_c 
complete_
[?1h=
complete_
[ not unique ] complete_a complete_b complete_c complete_
[?1h=
complete_
[ not unique ] complete_a complete_b complete_c complete_
=[?25l
[?25h[@c[@o[@m[@p[@l[@e[@t[@e[@_[?25l
[ not unique ][?25h[?25l complete_a complete_b complete_c complete_[?25h

[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_
[ not unique ] complete_a complete_b complete_c complete_

[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_
[ not unique ] complete_a complete_b complete_c complete_

[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ] complete_a complete_b complete_c complete_

[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ] complete_a complete_b complete_c complete_
ent
[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_
ent
[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_
ent
[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_
ent
[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_
ent
[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_
ent
[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_
ent
[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_
ent
[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_
Traceback (most recent call last):
File "/home/they4kman/programming/third-party/fancycompleter/testing/fcomplete.py", line 25, in <module>
repl.cmdloop(intro='')
File "/usr/lib/pypy/lib-python/2.7/cmd.py", line 130, in cmdloop
line = raw_input(self.prompt)
File "/usr/lib/pypy/lib_pypy/pyrepl/readline.py", line 254, in raw_input
reader = self.get_reader()
File "/usr/lib/pypy/lib_pypy/pyrepl/readline.py", line 247, in get_reader
console = UnixConsole(self.f_in, self.f_out, encoding=ENCODING)
File "/usr/lib/pypy/lib_pypy/pyrepl/unix_console.py", line 159, in __init__
self.event_queue = unix_eventqueue.EventQueue(self.input_fd)
File "/usr/lib/pypy/lib_pypy/pyrepl/unix_eventqueue.py", line 58, in __init__
self.k = self.ck = keymap.compile_keymap(our_keycodes)
File "/usr/lib/pypy/lib_pypy/pyrepl/keymap.py", line 185, in compile_keymap
r[key] = compile_keymap(value, empty)
File "/usr/lib/pypy/lib_pypy/pyrepl/keymap.py", line 181, in compile_keymap
"key definitions for %s clash"%(value.values(),)
KeySpecError: key definitions for [u'enter', u'f1', u'f2', u'f3', u'f6', u'f7', u'f8', u'f9', u'f10', u'f11', u'f12', u'f13', u'f14', u'f15', u'f18', u'f19', u'f20'] clash
comp
Traceback (most recent call last):
File "/home/they4kman/programming/third-party/fancycompleter/testing/fcomplete.py", line 25, in <module>
repl.cmdloop(intro='')
File "/usr/lib/pypy/lib-python/2.7/cmd.py", line 130, in cmdloop
line = raw_input(self.prompt)
File "/usr/lib/pypy/lib_pypy/pyrepl/readline.py", line 254, in raw_input
reader = self.get_reader()
File "/usr/lib/pypy/lib_pypy/pyrepl/readline.py", line 247, in get_reader
console = UnixConsole(self.f_in, self.f_out, encoding=ENCODING)
File "/usr/lib/pypy/lib_pypy/pyrepl/unix_console.py", line 159, in __init__
self.event_queue = unix_eventqueue.EventQueue(self.input_fd)
File "/usr/lib/pypy/lib_pypy/pyrepl/unix_eventqueue.py", line 58, in __init__
self.k = self.ck = keymap.compile_keymap(our_keycodes)
File "/usr/lib/pypy/lib_pypy/pyrepl/keymap.py", line 185, in compile_keymap
r[key] = compile_keymap(value, empty)
File "/usr/lib/pypy/lib_pypy/pyrepl/keymap.py", line 181, in compile_keymap
"key definitions for %s clash"%(value.values(),)
KeySpecError: key definitions for [u'enter', u'f1', u'f2', u'f3', u'f6', u'f7', u'f8', u'f9', u'f10', u'f11', u'f12', u'f13', u'f14', u'f15', u'f18', u'f19', u'f20'] clash
comp
A
complete_DDDDDDDDD
[ not unique ]DDDDDADDDDDDDDD complete_a complete_b complete_c DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDBzcomplete_

^c^o^m^p^l^e^t^e^_

^c^o^m^p^l^e^t^e^_

^c^o^m^p^l^e^t^e^_

^c^o^m^p^l^e^t^e^_
[19;1|[21;4|ent
[11;0|[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_

[>lc[>lo[>lm[>lp[>ll[>le[>lt[>le[>l_[>l
[ not unique ][>l complete_a complete_b complete_c complete_[>l

[>lc[>lo[>lm[>lp[>ll[>le[>lt[>le[>l_[>l
[ not unique ][>l complete_a complete_b complete_c complete_[>l
[19;1|[11;0|
[11;3|[11;0|c[11;3|[11;0|o[11;3|[11;0|m[11;3|[11;0|p[11;3|[11;0|l[11;3|[11;0|e[11;3|[11;0|t[11;3|[11;0|e[11;3|[11;0|_[11;3|[11;0|
[ not unique ][11;3|[11;0| complete_a complete_b complete_c complete_[11;3|
[19;1|
[11;3|[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_
[ not unique ][11;3| complete_a complete_b complete_c complete_[11;3|

[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ] complete_a complete_b complete_c complete_

[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ] complete_a complete_b complete_c complete_
ent
[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_
ent~
[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_
ent~
[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_

[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ] complete_a complete_b complete_c 
complete_

[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ] complete_a complete_b complete_c complete_

[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ] complete_a complete_b complete_c complete_
Traceback (most recent call last):
File "/home/they4kman/programming/third-party/fancycompleter/testing/fcomplete.py", line 25, in <module>
repl.cmdloop(intro='')
File "/usr/lib/pypy/lib-python/2.7/cmd.py", line 130, in cmdloop
line = raw_input(self.prompt)
File "/usr/lib/pypy/lib_pypy/pyrepl/readline.py", line 254, in raw_input
reader = self.get_reader()
File "/usr/lib/pypy/lib_pypy/pyrepl/readline.py", line 247, in get_reader
console = UnixConsole(self.f_in, self.f_out, encoding=ENCODING)
File "/usr/lib/pypy/lib_pypy/pyrepl/unix_console.py", line 134, in __init__
raise RuntimeError, "insufficient terminal (horizontal)"
RuntimeError: insufficient terminal (horizontal)
comp

[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ] complete_a complete_b complete_c complete_

[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ] complete_a complete_b complete_c complete_

[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ] complete_a complete_b complete_c complete_

[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ] complete_a complete_b complete_c complete_
[?25l
[?25h[?12l[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?12l[?25l complete_a complete_b complete_c complete_[?25h[?12l
[?25l
[?25h[?12l[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?12l[?25l complete_a complete_b complete_c complete_[?25h[?12l
[?25l
[?25h[?12l[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?12l[?25l complete_a complete_b complete_c complete_[?25h[?12l
[?25l
[?25h[?12l[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?12l[?25l complete_a complete_b complete_c complete_[?25h[?12l
[?25l
[?25h[?12l[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?12l[?25l complete_a complete_b complete_c complete_[?25h[?12l
[?25l
[?25h[?12l[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?12l[?25l complete_a complete_b complete_c complete_[?25h[?12l
[?25l
[?25h[?12l[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?12l[?25l complete_a complete_b complete_c complete_[?25h[?12l
[?25l
[?25h[?12l[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?12l[?25l complete_a complete_b complete_c complete_[?25h[?12l
[?25l
[?25h[?12l[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?12l[?25l complete_a complete_b complete_c complete_[?25h[?12l
[?25l
[?25h[?12l[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?12l[?25l complete_a complete_b complete_c complete_[?25h[?12l
[?25l
[?25h[?12l[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?12l[?25l complete_a complete_b complete_c complete_[?25h[?12l
[?25l
[?25h[?12l[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?12l[?25l complete_a complete_b complete_c complete_[?25h[?12l

[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ] complete_a complete_b complete_c complete_

[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ] complete_a complete_b complete_c complete_
[=C
[=1C[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[=C
[ not unique ][=1C[=C complete_a complete_b complete_c complete_[=1C
[?25l
[?25h[?12l[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?12l[?25l complete_a complete_b complete_c complete_[?25h[?12l
[?25l
[?25h[?12l[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?12l[?25l complete_a complete_b complete_c complete_[?25h[?12l
[?25l
[?25h[?12l[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?12l[?25l complete_a complete_b complete_c complete_[?25h[?12l
[?25l
[?25h[?12l[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?12l[?25l complete_a complete_b complete_c complete_[?25h[?12l
[=1C
[=0C[@c[@o[@m[@p[@l[@e[@t[@e[@_[=1C
[ not unique ][=0C[=1C complete_a complete_b complete_c complete_[=0C
[?25l
[?25h[?12l[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?12l[?25l complete_a complete_b complete_c complete_[?25h[?12l
[?25l
[?25h[?12l[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?12l[?25l complete_a complete_b complete_c complete_[?25h[?12l
[?25l
[?25h[?12l[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?12l[?25l complete_a complete_b complete_c complete_[?25h[?12l
[1!z
[=119l[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ][=119l complete_a complete_b complete_c complete_[=119l
[1!z
[=119l[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ][=119l complete_a complete_b complete_c complete_[=119l
[1!z
[=119l[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ][=119l complete_a complete_b complete_c complete_[=119l
[1!z
[=119l[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ][=119l complete_a complete_b complete_c complete_[=119l
[1!z
[=119l[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ][=119l complete_a complete_b complete_c complete_[=119l
[1!z
[=119l[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ][=119l complete_a complete_b complete_c complete_[=119l
[1!z
[=119l[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ][=119l complete_a complete_b complete_c complete_[=119l
[1!z
[=119l[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ][=119l complete_a complete_b complete_c complete_[=119l
A
complete_
[ not unique ]A complete_a complete_b complete_c 
I
complete_
[ not unique ]  complete_a complete_b complete_c 
U
QcQoQmQpQlQeQtQeQ_
[?4h
[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ] complete_a complete_b complete_c complete_
=
complete_
[ not unique ] complete_a complete_b complete_c complete_
=
complete_
[ not unique ] complete_a complete_b complete_c complete_
=
complete_
[ not unique ] complete_a complete_b complete_c complete_
=
complete_
[ not unique ] complete_a complete_b complete_c complete_
=
complete_
[ not unique ] complete_a complete_b complete_c complete_
=
complete_
[ not unique ] complete_a complete_b complete_c complete_
A
f!cf!of!mf!pf!lf!ef!tf!ef!_
[?25l
[?25h[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?25l complete_a complete_b complete_c complete_[?25h
[?25l
[?25h[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?25l complete_a complete_b complete_c complete_[?25h
[?25l
[?25h[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?25l complete_a complete_b complete_c complete_[?25h
[?25l
[?25h[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?25l complete_a complete_b complete_c complete_[?25h
[?25l
[?25h[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?25l complete_a complete_b complete_c complete_[?25h
[?25l
[?25h[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?25l complete_a complete_b complete_c complete_[?25h
[?25l
[?25h[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?25l complete_a complete_b complete_c complete_[?25h
[?25l
[?25h[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_[?25l
[ not unique ][?25h[?25l complete_a complete_b complete_c complete_[?25h

complete_
[ not unique ] complete_a complete_b complete_c complete_

complete_
[ not unique ] complete_a complete_b complete_c complete_

complete_
[ not unique ] complete_a complete_b complete_c complete_

complete_
[ not unique ] complete_a complete_b complete_c complete_

[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ] complete_a complete_b complete_c 
complete_
X;
wcwowmwpwlwewtwew_w
X;
wcwowmwpwlwewtwew_w
X;
wcwowmwpwlwewtwew_w
X;
wcwowmwpwlwewtwew_w
X;
wcwowmwpwlwewtwew_w
A
f!cf!of!mf!pf!lf!ef!tf!ef!_
A
OcOoOmOpOlOeOtOeO_
k
OcOoOmOpOlOeOtOeO_
>1c>1o>1m>1p>1l>1e>1t>1e>1_
[?1h=
8[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ]8 complete_a complete_b complete_c complete_8

[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ] complete_a complete_b complete_c complete_
[?1h=
complete_
[ not unique ] complete_a complete_b complete_c Kcomplete_

! c! o! m! p! l! e! t! e! _!

[1@c[1@o[1@m[1@p[1@l[1@e[1@t[1@e[1@_
[ not unique ] complete_a complete_b complete_c complete_

[=0C[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ][=0C complete_a complete_b complete_c complete_[=0C

[=0C[@c[@o[@m[@p[@l[@e[@t[@e[@_
[ not unique ][=0C complete_a complete_b complete_c complete_[=0C
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment