Changelog History
Page 6
-
v1.0.5 Changes
August 04, 2016๐ Fixes:
- ๐ Critical fix for running on Windows. The gevent work-around in the inputhook caused 'An operation was attempted on something that is not a socket'.
-
v1.0.4 Changes
August 03, 2016๐ Fixes:
- ๐ Key binding fixes:
- Improved handling of repeat arguments in Emacs mode. Pressing sequences like 'esc---123' do now work (like GNU Readline): - repetition of the minus sign is ignored. - No esc prefix is required for each digit.
- Fix in ControlX-ControlX binding.
- Fix in bracketed paste.
- Pressing Control-U at the start of the line now deletes the newline.
- Pressing Control-K at the end of the line, deletes the newline after the cursor.
- Support negative argument for Control-K
- Fixed cash when left/right were pressed with a negative argument. (In Emacs mode.)
- Fix in ControlUp/ControlDown key bindings.
- Distinguish backspace from Control-H. They are not the same.
- Delete in front of the cursor when a negative argument has been given to backspace.
- Handle arrow keys correctly in emacs-term.
- ๐ Performance optimizations:
- Performance optimization in Registry.
- Several performance optimization in filters.
- Import asyncio inline (only if required).
- ๐ Use the best possible selector in the event loop. This fixes bugs in situations where we have too many open file descriptors.
- ๐ Fix UI freeze when gevent monkey patch has been applied.
- ๐ Fix segmentation fault in Alpine Linux. (Regarding the use of ioctl.)
- ๐ Use the correct colors on Windows. (When the foreground/background colors have been modified.)
- ๐ Display a better error message when running in Idle.
- โ Additional flags for vt100 inputs: disable flow control.
- Also patch stderr in CommandLineInterface.patch_stdout_context.
๐ New features:
- ๐ Allow users to enter Vi digraphs in reverse order.
- ๐ Improved autocompletion behaviour. See IPython issue #9658.
- โ Added a 'clear' function in the shortcuts module.
For future compatibility:
Keys.Enter
has been added. This is the key that should be bound for handling the enter key.
Right now, prompt_toolkit translates \r into \n during the handling of the input; this is not correct and makes it impossible to distinguish between ControlJ and ControlM. Some applications bind ControlJ for custom handling of the enter key, because this equals \n. However, in a future version we will stop replacing \r by \n and at that point, the enter key will be ControlM. So better is to use
Keys.Enter
, which becomes an alias for whatever the enter key translates into. - ๐ Key binding fixes:
-
v1.0.3 Changes
June 20, 2016๐ Fixes:
- ๐ Bugfix for Python2 in readline-like completion.
- ๐ Bugfix in readline-like completion visualisation.
๐ New features:
- Added
erase_when_done
parameter to theApplication
class. (This was required for the bug fixes.) - Added (experimental)
CommandLineInterface.run_application_generator
method. (Also required for the bug fix.)
-
v1.0.2 Changes
June 16, 2016๐ Fixes:
- Don't select the first completion when
complete_while_typing
is False. (Restore the old behaviour.)
- Don't select the first completion when
-
v1.0.1 Changes
June 15, 2016๐ Fixes:
- ๐ Bugfix in GrammarValidator and SentenceValidator.
- Don't leave the alternate screen on resize events.
- ๐ Use errors=surrogateescape, in order to handle mouse events in some terminals.
- Ignore key presses in _InterfaceEventLoopCallbacks.feed_key when the CLI is in the done state.
- Bugfix in get_common_complete_suffix. Don't return any suffix when there are completions that change whatever is before the cursor.
- ๐ Bugfix for Win32/Python2: use unicode literals: This crashed arrow navigation on Windows.
- ๐ Bugfix in InputProcessor: handling of more complex key bindings.
- ๐ Fix: don't apply completions, if there is only one completion which doesn't have any effect.
- ๐ Fix: correctly handle prompts starting with a newline in prompt_toolkit.shortcuts.
- ๐ Fix: thread safety in autocomplete code.
- ๐ Improve styling for matching brackets. (Allow individual styling for the bracket under the cursor and the other.)
- ๐ Fix in ShowLeadingWhiteSpaceProcessor/ShowTrailingWhiteSpaceProcessor: take output encoding into account. (The signature had to change a little for this.)
- ๐ Bug fix in key bindings: only activate Emacs system/open-in-editor bindings if editing_mode is emacs.
- Added write_binary parameter to Vt100_Output. This fixes a bug in some cases where we expect it to write non-encoded strings.
- ๐ Fix key bindings for Vi mode registers.
๐ New features (**):
- Added shortcuts.confirm/create_confirm_application function.
- ๐ Emulate bracketed paste on Windows. (When the input stream contains multiple key presses among which a newline and at least one other character, consider this a paste event, and handle as bracketed paste on Unix.
- โ Added key handler for displaying completions, just like readline does.
- Implemented Vi guu,gUU,g~~ key bindings.
- Implemented Vi 'gJ' key binding.
- Implemented Vi ab,ib,aB,iB text objects.
- ๐ Support for ZeroWidthEscape tokens in prompt and token lists. Used to support final shell integration.
- ๐ Fix: Make document.text/cursor_position/selection read-only. (Changing these would break the caching causing bigger issues.)
- โ Using pytest for unit tests.
- ๐ Allow key bindings to have Keys.Any at any possible position. (Not just the end.) This made it significantly easier to write the named register Vi bindings, resulting in an approved start-up time.)
- ๐ Better feedback when entering multi-key key bindings in insert mode. (E.g. when 'jj' would be mapped to escape.)
- Small improvement in key processor: allow key bindings to generate new key presses.
- ๐ Handle ControlUp and ControlDown by default: move to the previous/next record in the history.
- Accept 'char'/'get_char' parameters in FillControl.
- โ Added refresh_interval method to prompt() function.
๐ Performance improvements:
- Improve the performance of test_callable_args: this should significantly increase the start-up time.
- Start-up time for creating the Vi bindings has been improved significantly.
(**) Some small backwards-compatible features were allowed for this minor release. After evaluating the impact/risk/work involved we concluded that we could ship these in a minor release.
-
v1.0.0 Changes
May 05, 2016๐ Fixes:
- Adjust minimum completion menu width to match UIControl and Window class.
- ๐ Bugfix regarding weakref in InputProcessor.
- ๐ Fix for pypy3: bug in WeakValueDictionary.
- Correctly handle '0' key binding in Vi mode.
- 0๏ธโฃ Also load Vi bindings by default in Application if no registry has been given.
- Only go into selection mode if the current buffer is not empty.
- Close PipeInput after usage.
- Only use 16 colors in (Emacs) eterm-color.
- ๐ Bugfix in "xP Vi key binding.
- ๐ Bugfix in Vi { and } key binding.
- ๐ Fix: use correct token for Scrollbar in MultiColumnCompletionMenuControl.
- Handle negative values in translate_row_col_to_index.
- ๐ Handle decomposed unicode characters.
- Fixed Window.always_hide_cursor. (Parameter was ignored.)
- ๐ Fix in zz Vi key binding. (When render info is not available.)
- Fix in Document.get_cursor_up_position. (When an argument is given.)
๐ New features:
- Separated
load_mouse_bindings
. - ๐จ Refactoring/simplification of the key bindings: better use of filters and CLI.editing_mode.
- โ Added DummyOutput class and a few unit tests that test the whole CLI.
- Use the bisect module in Document._line_start_indexes instead of a custom binary search. This should improve the performance.
- ๐ Stay in the same column when doing multiple up/down movements.
- Visual improvements:
- Implemented cursorcolumn, cursorline and colorcolumn.
- Only reserve menu space when
complete_while_typing=True
or when there are completions to be displayed. - Support for chaining tokens for combined styles. SelectedText will now
reverse the colors from the highlighting by default. Style
Token.SelectedText
to set a fixed foreground/background. Also for SearchMatch, we now use combined tokens. - Support for dark gray on Windows.
- Default token for SystemToolbar and SearchToolbar.
- Display selection also on empty lines.
- Emacs key bindings improved:
- Recognize + handle ControlDelete key.
- Implemented meta-* and control-backslash key bindings.
- Vi key bindings improved:
- Handle inclusive and linewise motions properly.
- Fix g_ motion off by one character, and don't work when cursor is in the trailing whitespace part of line.
- Make a(/a)/i(/i)/... motions. Find enclosing brackets instead of the next bracket.
- Update N% motion according to vim behaviors.
- Fix | motion off by one character.
- ge/gE motions go to end of previous word, not start.
- Added Vi 'gm' key binding.
- Implemented 'gq' key binding in Vi mode. (Reshape text.)
- Vi operator/text object separation for key bindings.
- Added 'ap' (auto-paragraph) text object.
- Implemented Vi digraphs. ControlK will now insert a digraph.
- Implemented vi tilde_operator.
- Support named registers.
- Vi < and > key bindings became operators.
- Text objects and motions are now separate bindings.
- Improved copy/paste in Vi mode.
Backwards-incompatible changes:
- 0๏ธโฃ Don't reset the current buffer anymore by default in
CommandLineInterface.run(). Passing
reset_current_buffer=True
is now required. - ๐ Renamed MouseEventTypes to MouseEventType for consistency. The old name is still valid, but deprecated.
- ๐จ Refactoring of Callbacks. All events should now receive one argument, which is the sender. (Further, Callback was renamed to Event.) This is mostly used internally.
- ๐ Moved on_invalidate callback from CommandLineInterface to Application
- ๐ Renamed
PipeInput.send
toPipeInput.send_text
. (Old deprecated name is still kept as a valid alias.) - 0๏ธโฃ Renamed SimpleLexer.default_token to SimpleLexer.token. (+ backwards-compatibility.)
- ๐จ Refactoring of the filters:
ViStateFilter
has been deprecated. (Should not be used anymore.) Use the filters, as defined in prompt_toolkit.filters. editing_mode
is now a property ofCommandLineInterface
. This is replacing thevi_mode
parameter inKeyBindingManager
.- 0๏ธโฃ The default accept_action for the default Buffer in Application now becomes IGNORE. This is a much more sensible default. Pass RETURN_DOCUMENT to get the previous behaviour,
- Always expect an EventLoop instance in CommandLineInterface. Creating it in init caused a memory leak.
-
v0.60 Changes
March 14, 2016๐ Fixes:
- ๐ Fix in Document.paste. (The screen was not updated after an undo of a paste.)
- ๐ Don't use deprecated inspect.getargspec on Python 3.
- ๐ Fixed reading input on Windows when input was piped in stdin.
- Use correct file descriptors for input/output in run_system_command.
- Always correctly split prompt in shortcuts.prompt. (Even when multiline=False)
- Correctly align right prompt to the top when the left prompt consists of multiple lines.
- 0๏ธโฃ Correctly use Token.Transparent as default token for a TokenListControl.
- ๐ Fix in syntax synchronisation. (Better handle the case when no synchronisation point was found.)
- Send SIGTSTP to the whole process group.
- Correctly raise on_buffer_changed on all text changes.
- ๐ Fix in regular_languages.GrammarLexer. (Fixes bug in ptipython syntax highlighting.)
๐ New features:
- โ Add support for additional readers to the Win32 event loop.
- โ Added on_render event.
- Carry the weight in layout dimensions to allow stretching.
-
v0.59 Changes
February 27, 2016๐ Fixes:
- ๐ Set correct default color on Windows. (Gray instead of high intensity gray.)
- ๐ Reverse colors on Windows when foreground/background color have not been specified.
- Correct handling of mouse events for FillControl.
- ๐ Take margin into account when calculating Window height. (Fixes bug in multiline prompt.)
- Handle division by zero in UIContent.get_height_for_text.
-
v0.58 Changes
February 23, 2016๐ Fixes:
- Correctly return result for mouse handler in TokenListControl.
- ๐ Bugfix in meta-backspace key binding. (Delete all whitespace before the cursor, when there is only whitespace.)
- ๐ Bugfix in Vi gu, gU, g? and g~ key bindings (in selection mode).
- ๐ Correctly restore default console attributes on Windows.
- ๐ Disable bracketed paste support in ConEmu. (This was broken.)
- ๐ป When an unknown exception is raised in
CommandLineInterface.run()
, don't forget to redraw the CLI.
๐ New features:
- ๐ Many performance improvements and better caching. (Especially in the
Document
class.) - ๐ Support for continuation tokens in
shortcuts.prompt
andshortcuts.create_prompt_layout
. - โ Added
shortcuts.print_tokens
function for printing colored output. - Sound bell when nothing was deleted.
- โ Added escape sequences for F1-F5 keys on the Linux console.
- ๐ Improved support for the Linux console. (Switch back to 16 colors.)
- โ Added F13-F24 input codes for xterm.
- Created prompt_toolkit.token. A custom Token implementation, that is compatible with Pygments.token. (This way, Pygments becomes an optional dependency. For many use cases, nothing except the Token class from Pygments was used, so it was a bit overkill to install Pygments for only that.)
- ๐ Refactoring of prompt_toolkit.styles.
Float
objects got ahide_when_covering_content
option.- Implementation of RPROMPT, like ZSH: Added
get_rprompt_tokens
tocreate_prompt_layout
. - ๐ Some improvements to the default style.
- Also handle Ctrl-R and Ctrl-S in Vi mode when searching.
- โ Added TabsProcessor: a tool to visualise tabs instead of displaying I.
- ๐ Give a better error message when trying to run in git-bash.
๐ Support for ANSI color names in style dictionaries.
๐จ Big refactoring of the
Window
andUIControl
classes. This should result in huge performance improvements on big inputs. (While first, a document could have 1,000 lines; now it can have about 100,000 lines on the same system.)
The Window and UIControl have been rewritten very much. Rather than each time rendering the whole user control, we now only have to render the visible part.
Because of this, many pieces had to be rewritten:
- UIControls work differently. They return a
UIContent
instance that consist of a collection of lines. - All processors have been rewritten. (Their API changed as well, because they process one line at a time.)
- Lexers work differently.
Lexer.lex_document
should now return a function that returns the tokens for one line. PygmentsLexer has been optimized that it becomes 'lazy', and it has optional syntax synchronisation. That means, that the lexer doesn't have to start the lexing at the beginning of the document. (Which would be slow for big documents.)
Backwards-incompatible changes:
- ๐จ As mentioned above, the refactoring of
Window
andUIControl
caused many "internal" APIs to change. All customUIControl
,Processor
andLexer
classes have to be rewritten. However, for most applications this should not be an issue. Especially, theshortcuts.prompt
function is backwards-compatible. wrap_lines
became a property ofWindow
instead ofBufferControl
.
-
v0.57 Changes
January 04, 2016๐ Fixes:
- Made
max_render_postpone_time
configurable. The current default was bad. (We should probably always draw the UI once every cycle of the event loop.)
- Made