##// END OF EJS Templates
Be a little smarter about invisible characters in terminal prompts...
Be a little smarter about invisible characters in terminal prompts This is a partial fix to #8724. Previously, only known color codes were considered to be invisible. Now, it looks for any kind of invisible sequence as defined by the \001 \002 delimiters (which is what readline uses). The situation could still be improved, as it still assumes that the number of invisible characters is constant for a given template. Making this work correctly with the existing API is awkward, so I didn't attempt it, especially since the readline frontend may be removed at some point in the near future.

File last commit:

r19387:c0ca9867
r21605:8e996f80
Show More
payloadpage.py
52 lines | 1.4 KiB | text/x-python | PythonLexer
Brian Granger
Paging using payloads now works.
r2830 # encoding: utf-8
MinRK
pager payload is a mime-bundle
r16586 """A payload based version of page."""
Brian Granger
Paging using payloads now works.
r2830
MinRK
pager payload is a mime-bundle
r16586 # Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
Brian Granger
Paging using payloads now works.
r2830
Min RK
add InteractiveShell.display_page config...
r19387 import warnings
MinRK
pager payload is a mime-bundle
r16586 from IPython.core.getipython import get_ipython
Brian Granger
Paging using payloads now works.
r2830
MinRK
pager payload is a mime-bundle
r16586 def page(strng, start=0, screen_lines=0, pager_cmd=None):
Brian Granger
Paging using payloads now works.
r2830 """Print a string, piping through a pager.
This version ignores the screen_lines and pager_cmd arguments and uses
IPython's payload system instead.
Fernando Perez
Provide html support for page() in the payload version....
r3011
Parameters
----------
MinRK
pager payload is a mime-bundle
r16586 strng : str or mime-dict
Text to page, or a mime-type keyed dict of already formatted data.
Fernando Perez
Provide html support for page() in the payload version....
r3011
start : int
Starting line at which to place the display.
Brian Granger
Paging using payloads now works.
r2830 """
# Some routines may auto-compute start offsets incorrectly and pass a
# negative value. Offset to 0 for robustness.
start = max(0, start)
MinRK
pager payload is a mime-bundle
r16586 shell = get_ipython()
if isinstance(strng, dict):
data = strng
else:
data = {'text/plain' : strng}
Brian Granger
Paging using payloads now works.
r2830 payload = dict(
MinRK
update payload source...
r11839 source='page',
MinRK
pager payload is a mime-bundle
r16586 data=data,
start=start,
Fernando Perez
Provide html support for page() in the payload version....
r3011 )
Brian Granger
Paging using payloads now works.
r2830 shell.payload_manager.write_payload(payload)
Fernando Perez
Provide html support for page() in the payload version....
r3011
Brian Granger
Paging using payloads now works.
r2830 def install_payload_page():
Min RK
add InteractiveShell.display_page config...
r19387 """DEPRECATED, use show_in_pager hook
Install this version of page as IPython.core.page.page.
"""
warnings.warn("""install_payload_page is deprecated.
Use `ip.set_hook('show_in_pager, page.as_hook(payloadpage.page))`
""")
Brian Granger
Paging using payloads now works.
r2830 from IPython.core import page as corepage
corepage.page = page