diff --git a/jupyter_kernel/magickernel.py b/jupyter_kernel/magickernel.py index 46ade082..4da8d66e 100644 --- a/jupyter_kernel/magickernel.py +++ b/jupyter_kernel/magickernel.py @@ -506,7 +506,7 @@ def _parse_code(code, prefixes, suffixes, start=0, end=-1): pre_magics = {} for (name, prefix) in prefixes.items(): pre = '' - while snip[len(pre)] == prefix: + while len(pre) < len(snip) and snip[len(pre)] == prefix: pre += prefix if pre: pre_magics[name] = pre @@ -514,7 +514,7 @@ def _parse_code(code, prefixes, suffixes, start=0, end=-1): post_magics = {} for (name, suffix) in suffixes.items(): post = '' - while snip[-len(post) - 1] == suffix: + while len(post) < len(snip) and snip[-len(post) - 1] == suffix: post += suffix if post: post_magics[name] = post diff --git a/jupyter_kernel/magics/help_magic.py b/jupyter_kernel/magics/help_magic.py index 65a51007..9b6aa8e3 100644 --- a/jupyter_kernel/magics/help_magic.py +++ b/jupyter_kernel/magics/help_magic.py @@ -39,9 +39,12 @@ def cell_help(self, text): def get_help_on(self, info, level): if info['magic'] and info['magic']['name'] == 'help': - code = info['rest'] + code = info['rest'].rstrip() magic_prefix = self.kernel.magic_prefixes['magic'] + if code.endswith(magic_prefix + 'help'): + return self.get_help('line', 'help', level) + if magic_prefix + 'help' in code: while code.startswith(self.kernel.magic_prefixes['magic']): code = code[1:] diff --git a/jupyter_kernel/tests/test_magickernel.py b/jupyter_kernel/tests/test_magickernel.py index af550328..75d45dc7 100644 --- a/jupyter_kernel/tests/test_magickernel.py +++ b/jupyter_kernel/tests/test_magickernel.py @@ -51,7 +51,7 @@ def test_inspect(): assert "list the current line and cell magics" in log_text kernel.do_inspect('%lsmagic ', len('%lsmagic') + 1) - assert True, "This was hanging..." + def test_path_complete(): kernel = get_kernel()