v1.7.0
Clink now supports color theme files and custom prompt files. These enable packaging Clink color settings or Clink custom prompts into shareable files. This finally makes it easy to download and apply themes or prompts shared by other people, or copy them and modify them. The new clink-themes repo is a site where .clinktheme and .clinkprompt files can be shared (see Contributing for details on how to contribute your own themes and prompts).
- Added support for
*.clinktheme
color theme files; see Color Themes for more information.- Added several
clink config theme
commands for color themes (runclink config theme --help
). - The famous Dracula, Solarized (light and dark), and Tomorrow (1 light, 4 dark) themes are included.
- Use
clink config theme use name
to apply a color theme, or set theCLINK_COLORTHEME
environment variable to the color theme name.
- Added several
- Added support for
*.clinkprompt
custom prompt files; see Custom Prompts for more information. This makes it easy to share custom prompts, and to have a library of many different custom prompts and switch between them quickly and easily. One .clinkprompt can be active at a time; activating one deactivates any others.- Added several
clink config prompt
commands for custom prompts (runclink config prompt --help
). - Oh-My-Posh support is included.
- Also included are ports of Agnoster, Pure, Headline, Antares, and a few others (all ported from zsh to Clink).
- Use
clink config prompt use name
to activate a custom prompt module, or set theCLINK_CUSTOMPROMPT
environment variable to the custom prompt name.
- Added several
- Added the ability to show input hints in the comment row (below the input line).
- Input hints are off by default, and can be enabled with
clink set comment_row.show_hints true
. - Argmatchers can provide input hints; see Show a Usage Hint for more information.
- Lua scripts can create custom hinters; see Showing Input Hints for more information.
- Input hints are off by default, and can be enabled with
- Enhanced the syntax for setting colors; added
italic
andreverse
, and added#XXXXXX
and#XXX
shortcuts for specifying 24-bit color values. - Added more popup list colors:
color.popup_border
,color.popup_header
,color.popup_footer
,color.popup_select
, andcolor.popup_selectdesc
. - Changed phrasing from "Accept Suggestion" to "Insert Suggestion" in the documentation and in the auto-suggestions usage hint text.
- Changed the Lua
print()
function to support UTF8 output and terminal escape codes. Now the only reasons for a script to useclink.print()
instead ofprint()
are (1) background compatibility or (2) usingNONL
to suppress printing a line ending. - Improved terminal output logging when the
debug.log_terminal
setting is enabled (the setting is only for diagnostic use).- Now it captures all WriteConsoleW and WriteFile output sent to stdout or stderr (instead of only capturing output from the Readline library).
- Added a
debug.log_output_callstacks
setting which includes callstacks for each output reported by thedebug.log_terminal
setting.
- Added a workaround for Unicode limitations in legacy console windows and legacy terminals (improves cursor position accuracy when Unicode surrogate pairs are present).
- Added several new Lua APIs for color themes and custom prompts: clink.getprompts(), clink.applyprompt(), clink.getclinkprompt(), clink.getthemes(), clink.readtheme(), clink.applytheme(), settings.clear(), settings.parsecolor(), settings.formatcolor(), os.createguid().
- Added git Lua APIs for use by custom prompts.
- Added optional
cookie
argument to clink.promptcoroutine() to make it simple for *.clinkprompt files to allow customization that makes use of asynchronous prompt filtering without needing modifications to the main *.clinkprompt file. - Fixed detecting file associations (some file extensions weren't detected as having file associations, causing executable completion to omit them, and causing input line coloring to be inaccurate).
- Fixed a case where updating the right side prompt could leave stray characters behind.
- Fixed a case where the
match.coloring_rules
setting could have no effect. - Fixed delay when typing
X:
and it's a remote drive. - Fixed coloring
2>&1
; the1
wasn't colored. - Fixed color of leading blank lines in a prompt string (use the terminal's default color, not the
color.prompt
color). - Fixed
rl.collapsetilde()
which just didn't do its job. - Fixed
%clink_dummy_capture_env%
to stop accidentally leaking into the environment variables collection. - Fixed an infinite loop when
prompt.async
was false. - Fixed F9 to stop jumping one past the actual entered history number.
- Fixed various edge case bugs in the input line display, which were uncovered while adding the ability to show input hints.