All Versions
74
Latest Version
Avg Release Cycle
93 days
Latest Release
148 days ago

Changelog History
Page 4

  • v1.0.1

    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

    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 to PipeInput.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 of CommandLineInterface. This is replacing the vi_mode parameter in KeyBindingManager.
    • 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

    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

    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

    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 and shortcuts.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 a hide_when_covering_content option.
    • Implementation of RPROMPT, like ZSH: Added get_rprompt_tokens to create_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 and UIControl 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 and UIControl caused many "internal" APIs to change. All custom UIControl, Processor and Lexer classes have to be rewritten. However, for most applications this should not be an issue. Especially, the shortcuts.prompt function is backwards-compatible.
    • wrap_lines became a property of Window instead of BufferControl.
  • v0.57

    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.)
  • v0.56

    January 03, 2016

    ๐Ÿ›  Fixes:

    • ๐Ÿ›  Fix in bracketed paste. It was not correctly enabled for each prompt.
  • v0.55

    January 03, 2016

    ๐Ÿ†• New features:

    • Implemented bracketed paste mode. (This allows much faster pasting, as well as pasting without going into paste mode. This makes sure that indentation in ptpython for instance is kept correctly.)
    • โž• Added support for italic output and blink. (For terminals that support it.)
    • Added get_horizontal_scroll, get_vertical_scroll and always_hide_cursor parameters to Window.
    • โ™ป๏ธ Refactoring of the posix event loop. Better scheduling of all tasks/FDs to avoid starvation. (Everything should feel more responsive in high CPU situations.)
    • 0๏ธโƒฃ Added get_default_char function to TokenListControl.
    • AppendAutoSuggestion now accepts a token parameter.
    • ๐Ÿ‘Œ Support for ansi color names in styles.
    • Accept get_width/get_height parameters in Float.
    • โž• Added Output.write_raw and accept 'raw' parameter in CommandLineInterface.stdout_proxy.
    • ๐Ÿ‘ Better caching of tokens in TokenListControl.
    • โž• Add mouse support to TokenListControl.
    • Display "Window too small" when the window becomes too small.
    • โž• Added 'bell' function to Output.
    • Accept weights in HSplit/VSplit.
    • โž• Added Registry.remove_binding method to dynamically remove key bindings.
    • Added focus_on_click parameter to BufferControl.
    • Introduced BufferMapping class as a wrapper around the buffers dictionary. This one also contains the focus stack.
    • ๐Ÿ‘Œ Improved 'v' and 'V' key bindings. Allow switching between line and character selection modes.
    • โž• Added layout.highlighters. A new, much faster way to do selection and search highlighting.
    • ๐Ÿ‘‰ Make search_state dynamic for key bindings.
    • โž• Added 'sentence' option to WordCompleter.
    • ๐ŸŽ Cache Document.lines for better performance.
    • Implementation of BLOCK selections. (Cut, copy, paste.)
    • Accept a 'reserve_space_for_menu' parameter in the shortcuts. (This is an integer.)
    • ๐Ÿ‘Œ Support for 24bit true color on vt100 terminals.
    • โž• Added CommandLineInterface.on_invalidate event.
    • ๐Ÿ”– Added version to init.py.

    ๐Ÿ›  Fixes:

    • Always show cursor in the 'done' state.
    • ๐Ÿ‘ Allow HSplit to have zero children.
    • ๐Ÿ›  Bugfix for handling of backslash on Windows with some non-us keyboards. (Ptpython issue #28.)
    • Never render characters outside the visible screen region.
    • ๐Ÿ›  Fix in WordCompleter. When case insensitive and input contained uppercase.
    • Highlight search match when the cursor is at any position on the match. (not just the beginning.)

    Backwards-incompatible changes: (Most changes will probably not have an impact on external applications.)

    • ๐Ÿ’… Change in the Style API. This allows caching of Attrs in renderer and faster rendering. (Style now has a get_attrs_for_token instead of a get_token_to_attributes_dict method.)
    • โœ‚ Removed DefaultStyle. Created PygmentsStyle.from_defaults class method instead.
    • โœ‚ Removed AbortAction.IGNORE. This was ambiguous.
    • Accept 'cli' parameter in 'walk' and 'find_window_for_buffer_name'.
    • The focus stack is now stored in BufferMapping.
    • ViStateFilter and KeyBindingManager now accept a get_vi_state callable instead of vi_state itself. (This way a key bindings registry becomes stateless.)
    • ๐Ÿ—„ HighlightSearchProcessor and HighlightSelectionProcessor became deprecated. (Use highlighters instead.)
  • v0.54

    October 29, 2015

    ๐Ÿ†• New features:

    • ๐Ÿ‘ Allow CommandLineInterface to run in any thread.
    • Hide cursor while rendering.
    • ๐Ÿšš Added add_reader/remove_reader methods to EventLoop.
    • ๐Ÿ‘Œ Support for 'reverse' style.
    • Redraw more lazy, by using invalidate.
    • โž• Added show_cursor property to Screen.
    • Center or right align text in TokenListControl also when it spans multiple lines.

    ๐Ÿ›  Fixes:

    • ๐Ÿ›  Bugfix in PathCompleter. (Expanduser issue.)
    • ๐Ÿ›  Fix in signal handler.
    • 0๏ธโƒฃ Use utf-8 encoding in Vt100_Output by default.
    • 0๏ธโƒฃ Use correct default token in BufferControl.
    • ๐Ÿ›  Fix in ControlL key binding. Use @handle to allow deactivation.

    Backwards-incompatible changes:

    • 0๏ธโƒฃ Renamed create_default_layout to create_prompt_layout
    • 0๏ธโƒฃ Renamed create_default_application to create_prompt_application
    • ๐Ÿ“‡ Renamed Layout to Container.
    • ๐Ÿ“‡ Renamed CommandLineInterfaces.request_redraw to invalidate.
    • 0๏ธโƒฃ Changed the actual value of SEARCH_BUFFER, DEFAULT_BUFFER, SYSTEM_BUFFER and DUMMY_BUFFER.
    • ๐Ÿ”„ Changed order of keyword arguments of the BufferControl class. "buffer_name" now comes first.
    • โœ‚ Removed old pt(i)python code.
  • v0.53

    October 06, 2015

    ๐Ÿ†• New features:

    • Handling of the insert key in Vi mode.
    • โž• Added 'zt' and 'zb' Vi key bindings.
    • โž• Added delete key binding for deleting selected text.
    • Select word below cursor on double mouse click.
    • โž• Added wrap_lines option to TokenListControl.
    • โž• Added KeyBindingManager.for_prompt.

    ๐Ÿ›  Fixes:

    • ๐Ÿ›  Fix in rendering output.
    • Reset renderer correctly in run_in_terminal.
    • Only reset buffer when using AbortAction.RETRY.
    • ๐Ÿ›  Fix in handling of exit (Ctrl-D) key presses.
    • ๐Ÿ›  Fix in CompleteEvent. Correctly set completion_requested.

    Backwards-incompatible changes:

    • ๐Ÿ“‡ Renamed ValidationError.index to ValidationError.cursor_position.
    • ๐Ÿ“‡ Renamed shortcuts.get_input to shortcuts.prompt.
    • Return empty string instead of None in Document.current_char/char_before_cursor.