Bash's powerful command line editing in cmd.exe
GPL-3.0 License
color.unrecognized
) for an executable name that was already recognized in a recent previous input line.srcmap
command in the Lua debugger so that srcmap dir
automatically sets up source mappings for Clink's built in scripts using dir
as the repo root.history.expand_mode
is off
; it didn't fully turn off all of the history expansion syntax forms (for example the ^
syntax).nul
or com1:
); it should use color.unrecognized
for the color../
and ../
anymore in the first word of a command line. Now when the match.translate_slashes
setting is system
or backslash
then completing ./
and ../
can complete the word as a path, even though CMD does not consider it to be a path.clink_start.cmd
gets run twice if the binaries directory is the same as the profile directory.^
correctly inside quotes (and related quirks).Published by chrisant996 3 months ago
v1.6.19 has been deleted because it accidentally broke the updater -- if you already updated to v1.6.19, then a one-time manual update to v1.6.20 or newer is necessary to restore the updater.
clink set exec.
and then clink-select-complete
(Ctrl-Space) (regression introduced in v1.6.11).color.unrecognized
.Published by chrisant996 3 months ago
clink set exec.
and then clink-select-complete
(Ctrl-Space).color.unrecognized
.Published by chrisant996 3 months ago
:addarg()
via onalias=
(see Responding to Arguments in Argmatchers for more information). The git argmatcher in the clink-completions repo uses this to support git aliases.$
tokens then CMD is guaranteed to ignore the rest of the command line after the alias, so now argmatcher parsing also ignores the rest of the command line and colors it using color.unexpected
.Published by chrisant996 3 months ago
clink-diagnostics
(Ctrl-X,Ctrl-Z) when ANSICON is detected on Windows 8.1 or greater (it's unnecessary, less functional, and greatly degrades performance).clink-diagnostics
when the code page is not 1252 (for easier troubleshooting).foo
couldn't find an argmatcher registered as c:\dir\foo.exe
because it accidentally looked for c:\dir\foo.EXE
).cmd
when the current language is German.Published by chrisant996 4 months ago
clink autorun install
to use a wrong path).auto
mode for the match.translate_slashes
setting. This mode makes completion translate all slashes in the completed word to match whichever kind occurs first in the word, or to the system path separator if there are no slashes yet (e.g. when completing a directory name).auto
for the match.translate_slashes
setting.clink.slash_translation()
function.//localhost/
).clink-toggle-slashes
bindable command, bound by default to Ctrl-/. The command toggles between forward and backslashes in the word at the cursor point, or in the Nth word if a numeric argument is provided (e.g. by the Alt-Digit keys).off
mode for the matches.translate_slashes
setting (regression introduced in v1.1.23).@
in for %a in (*) do @whatever
.glob-list-expansions
when used on an empty word (regression introduced in v1.3.36).match.wild
is on and match.substring
is off.Published by chrisant996 5 months ago
menu-complete
to respect completion-auto-query-items
.dump-macros
, dump-variables
, clink-dump-functions
, and clink-dump-macros
(regression introduced in v1.6.3).rl.getbinding()
to return clink-select-complete
instead of clink-popup-complete
(the latter is just an alias; the real command name is clink-select-complete
).Published by chrisant996 6 months ago
clink.popup_search_mode
setting controls the default search mode.clink.popuplist()
function can be told to start in a specific search mode.os.findfiles()
to allow getting files/directories one at a time (versus os.globfiles()
which collects the entire set all at once into a table).exec.associations
setting to let Executable Completion include files with registered file associations as matches (e.g. launchable documents such as "*.pdf" files).color.executable
also for files included by the exec.path
setting, if the files have registered file associations.Published by chrisant996 7 months ago
os.setalias()
for setting a doskey alias without needing to invoke the doskey.exe program.srcmap
command in the Lua debugger to override where to find source files.Published by chrisant996 7 months ago
user_data.shared_user_data
table to allow linked argmatchers to share data with each other while an input line is being parsed (see Responding to Arguments in Argmatchers for details).color.executable
is set and color.unrecognized
is not (regression introduced in v1.6.2).Published by chrisant996 7 months ago
prompt.spacing
"eats" lines containing Unicode Surrogate Pairs such as for some nerdfont icons (Windows Terminal accidentally returns that such lines are empty).Published by chrisant996 8 months ago
cmd /r
as a synonym for cmd /c
so that Clink can optimize and skip injecting into a cmd /r
process.argmatcher:chaincommand("run")
to not find argmatchers for builtin CMD command names (since CMD doesn't get invoked in that case, so it won't get interpreted as a CMD command).argmatcher:chaincommand()
to find an argmatcher for a builtin CMD command even if a directory exists with the same name (since CMD interprets that case as a CMD command).argmatcher:chaincommand("cmd")
so when exec.aliases
is enabled it can include aliases as completions.argmatcher:addarg({loopchars="+", etcetc})
so that -Q:+x
still gets parsed into two input words -Q:
and +x
.foo^ bar
as two words "foo" and "bar".^echo
(etc) as a builtin CMD command name despite embedded ^
characters.cd /d
cannot be used anywhere because it also requires command extensions.Published by chrisant996 8 months ago
cmd /r
as a synonym for cmd /c
so that Clink can optimize and skip injecting into a cmd /r
process.argmatcher:chaincommand("run")
to not find argmatchers for builtin CMD command names (since CMD doesn't get invoked in that case, so it won't get interpreted as a CMD command).argmatcher:chaincommand()
to find an argmatcher for a builtin CMD command even if a directory exists with the same name (since CMD interprets that case as a CMD command).argmatcher:chaincommand("cmd")
so when exec.aliases
is enabled it can include aliases as completions.argmatcher:addarg({loopchars="+", etcetc})
so that -Q:+x
still gets parsed into two input words -Q:
and +x
.foo^ bar
as two words "foo" and "bar".^echo
(etc) as a builtin CMD command name despite embedded ^
characters.cd /d
cannot be used anywhere because it also requires command extensions.Published by chrisant996 8 months ago
clink history --no-show-time
to allow omitting history timestamps even when the history.time_stamp
setting is show
.clink set
completions do since v1.6.3).clink history
when output is redirected; strip any escape codes that might be embedded in the time format.cmd /e:off
causes syntax error in clink.bat script.clink history compact
accidentally deletes all timestamps."w"
mode in io.open()
and io.sopen()
(the behavior was correct, but the documentation was inaccurate/unclear).Published by chrisant996 8 months ago
clink.onfiltermatches()
callback function.NOTE: This release includes changes that enable clink-gizmos's FZF integration to show nerd fonts file icons in completion lists. See the README file there for more info. It also requires using dirx.
Published by chrisant996 8 months ago
rl_buffer:hassuggestion()
and rl_buffer:insertsuggestion()
for direct access to inserting suggestions without invoking Readline commands.clink.dirmatchesexact()
and clink.filematchesexact()
which are the same as the non-exact
variants, except these don't append a *
to the search pattern. For example, clink.filematchesexact("*.zip")
can collect exactly "*.zip" file matches instead of "*.zip*".clink info
.exec.enable
setting)..
or ..
when the exec.enable
setting is enabled.colored-completion-prefix
when match display filtering is active or a match has a custom display
field.exec.path
setting so it doesn't accidentally include directories if their names end with an executable extension such as .exe
.c:\foo\bar.exe
) when a full path is entered without a drive letter (e.g. enter \foo\bar.exe
).clink autorun install
strips quotes by mistake.Published by chrisant996 9 months ago
undo
(the Windows default key binding of Ctrl-z works fine). If your .inputrc file has bindings for any of the Ctrl-- key combinations then you can keep the keys working the same by updating the key bindings. You can even use the $if clink_version >= 1.6.3
syntax in your .inputrc file to make it define the key bindings differently in different versions of Clink.
Key Combination | Old Code | New Code |
---|---|---|
Ctrl-- |
"\C-_" or C-_
|
"\e[27;5;189~" |
Ctrl-Shift-- | "\e[27;6;189~" |
"\C-_" or C-_
|
Ctrl-Alt-- |
"\e\C-_" or "\M-\C-_" or M-C-_ or etc |
"\e[27;7;189~" |
Ctrl-Alt-Shift-- | "\e[27;8;189~" |
"\e\C-_" or "\M-\C-_" or M-C-_ or etc |
clink set
settings include the current value in the description field (e.g. type clink set
Alt-= to see Clink settings and their current values).undo
and vi-undo
commands again (they do the same thing, but are technically different commands).execute-named-command
to also accept Ctrl-- for undo
(the emacs binding for undo).execute-named-command
.Published by chrisant996 9 months ago
argmatcher:chaincommand(aliases)
to let the argmatcher know that the chained command will have doskey aliases expanded.foo/
is interpreted as two words foo
and /
just like CMD does.cd -
intercept interferes with cd
doskey alias.clink-popup-show-help
to invoke a command that changes only the cursor position.clink-diagnostics
could encounter an error while printing information about coroutines.Important pre-release changes in Readline:
Readline 8.2 introduced a crash in the undo
command after navigating through history and making edits in history entries. The following pre-release updates in Readline fix the crash and several related issues. They also fix many other edge-case stability issues, and add a couple of new features.
execute-named-command
bindable command which reads a command name from the input and executes it (default is Alt-x).quoted-insert
into search strings.vi-yank-pop
now cycle through the kill ring.do-lowercase-version
is bound to something that's not an uppercase letter.active-region-start-color
config variable.