##// END OF EJS Templates
Merge pull request #12801 from Carreau/wn-80...
Matthias Bussonnier -
r26317:f5b98900 merge
parent child Browse files
Show More
@@ -1,104 +1,145 b''
1 1 =====================
2 2 Development version
3 3 =====================
4 4
5 5 This document describes in-flight development work.
6 6
7 7 .. warning::
8 8
9 9 Please do not edit this file by hand (doing so will likely cause merge
10 10 conflicts for other Pull Requests). Instead, create a new file in the
11 11 `docs/source/whatsnew/pr` folder
12 12
13 13
14 14 Released .... ...., 2019
15 15
16 16
17 17 Need to be updated:
18 18
19 19 .. toctree::
20 20 :maxdepth: 2
21 21 :glob:
22 22
23 23 pr/*
24 24
25 IPython 8.0 is bringing a number of new features and improvements to both the
26 user of the terminal and of the kernel via Jupyter. The removal of compatibility
27 with older version of Python is also the opportunity to do a couple of
28 performance improvement in particular with respect to startup time.
29
30 The main change in IPython 8.0 is the integration of the ``stack_data`` package;
31 which provide smarter information in traceback; in particular it will highlight
32 the AST node where an error occurs which can help to quickly narrow down errors.
33
34 For example in the following snippet::
35
36 def foo(i):
37 x = [[[0]]]
38 return x[0][i][0]
39
40
41 def bar():
42 return foo(0) + foo(
43 1
44 ) + foo(2)
45
46
47 Calling ``bar()`` would raise an ``IndexError`` on the return line of ``foo``,
48 IPython 8.0 is capable of telling you, where the index error occurs::
49
50 return x[0][i][0]
51 ^
52
53 To prepare for Python 3.10 we have also started working on removing reliance and
54 any dependency that is not Python 3.10 compatible; that include migrating our
55 test suite to Pytest, and starting to remove nose.
56
57 We are also removing support for Python 3.6 allowing internal code to use more
58 efficient ``pathlib``, and make better use of type annotations.
59
60 The completer has also seen significant updates and make use of newer Jedi API
61 offering faster and more reliable tab completion.
62
63 For the terminal users this also enable the auto-suggestion feature, described
64 below, which show "ghost text" ahead of your cursor you can accept without
65 having to press the tab key or ask the completer to suggest completions.
25 66
26 67
27 68 Autosuggestion is a very useful feature available in `fish <https://fishshell.com/>`__, `zsh <https://en.wikipedia.org/wiki/Z_shell>`__, and `prompt-toolkit <https://python-prompt-toolkit.readthedocs.io/en/master/pages/asking_for_input.html#auto-suggestion>`__.
28 69
29 70 `Ptpython <https://github.com/prompt-toolkit/ptpython#ptpython>`__ allows users to enable this feature in
30 71 `ptpython/config.py <https://github.com/prompt-toolkit/ptpython/blob/master/examples/ptpython_config/config.py#L90>`__.
31 72
32 73 This feature allows users to accept autosuggestions with ctrl e, ctrl f,
33 74 or right arrow as described below.
34 75
35 76 1. Start ipython
36 77
37 78 .. image:: ../_images/auto_suggest_prompt_no_text.png
38 79
39 80 2. Run ``print("hello")``
40 81
41 82 .. image:: ../_images/auto_suggest_print_hello_suggest.png
42 83
43 84 3. Press p to see the autosuggestion
44 85
45 86 .. image:: ../_images/auto_suggest_print_hello_suggest.png
46 87
47 88 4. Press ctrl f, or ctrl e, or right arrow to accept the suggestion
48 89
49 90 .. image:: ../_images/auto_suggest_print_hello.png
50 91
51 92 You can also complete word by word:
52 93
53 94 1. Run ``def say_hello(): print("hello")``
54 95
55 96 .. image:: ../_images/auto_suggest_second_prompt.png
56 97
57 98 2. Press d to see the autosuggestion
58 99
59 100 .. image:: ../_images/audo_suggest_d_phantom.png
60 101
61 102 3. Press alt f to accept the first word of the suggestion
62 103
63 104 .. image:: ../_images/auto_suggest_def_phantom.png
64 105
65 106 Importantly, this feature does not interfere with tab completion:
66 107
67 108 1. After running ``def say_hello(): print("hello")``, press d
68 109
69 110 .. image:: ../_images/audo_suggest_d_phantom.png
70 111
71 112 2. Press Tab to start tab completion
72 113
73 114 .. image:: ../_images/auto_suggest_d_completions.png
74 115
75 116 3A. Press Tab again to select the first option
76 117
77 118 .. image:: ../_images/auto_suggest_def_completions.png
78 119
79 120 3B. Press alt f to accept to accept the first word of the suggestion
80 121
81 122 .. image:: ../_images/auto_suggest_def_phantom.png
82 123
83 124 3C. Press ctrl f or ctrl e to accept the entire suggestion
84 125
85 126 .. image:: ../_images/auto_suggest_match_parens.png
86 127
87 128 To install a version of ipython with autosuggestions enabled, run:
88 129
89 130 ``pip install git+https://github.com/mskar/ipython@auto_suggest``
90 131
91 132 Currently, autosuggestions are only shown in the emacs or vi insert editing modes:
92 133
93 134 - The ctrl e, ctrl f, and alt f shortcuts work by default in emacs mode.
94 135 - To use these shortcuts in vi insert mode, you will have to create `custom keybindings in your config.py <https://github.com/mskar/setup/commit/2892fcee46f9f80ef7788f0749edc99daccc52f4/>`__.
95 136
96 137 .. DO NOT EDIT THIS LINE BEFORE RELEASE. FEATURE INSERTION POINT.
97 138
98 139 As a reminder, IPython master has diverged from the 7.x branch, thus master may
99 140 have more feature and API changes.
100 141
101 142 Backwards incompatible changes
102 143 ------------------------------
103 144
104 145 .. DO NOT EDIT THIS LINE BEFORE RELEASE. INCOMPAT INSERTION POINT.
General Comments 0
You need to be logged in to leave comments. Login now