Consider this code:
#!/usr/bin/env python3
from cmd import Cmd
import readline
class mycmd(Cmd):
def match_display_hook(self, substitution, matches, longest_match_length):
someNonexistentMethod()
print()
for match in matches:
print(match)
print(self.prompt, readline.get_line_buffer(), sep='', end='', flush=True)
def do_crash(self, s):
someNonexistentMethod()
def do_quit(self, s):
return True
if __name__ == '__main__':
obj = mycmd()
readline.set_completion_display_matches_hook(obj.match_display_hook)
obj.cmdloop()
I expect to see NameError: name 'someNonexistentMethod' is not defined
when I run that and hit TabTab. However, nothing actually seems to happen at all (the error does occur, so the other functions that would print the completion don't run; I just don't see the error). I do see the expected error when I run crash
, so I know error handling works fine in the program overall, but is just broken inside of the set_completion_display_matches_hook
callback. Why is this, and can I do something about it?
from Why don't I see errors from readline.set_completion_display_matches_hook?
No comments:
Post a Comment