clink

Bash's powerful command line editing in cmd.exe

GPL-3.0 License

Stars
3.5K
clink - v1.1.41

Published by chrisant996 over 3 years ago

This is a release candidate build.

This release candidate build seems to be working very well for me, even when copied into an existing Cmder\vendor\clink directory. Be sure to make a backup copy of your Cmder installation before copying Clink into an existing Cmder installation!

If this release candidate survives for 1 week without needing to be updated, the version number will be updated and it will become an official release version.

v1.1.41

  • Added terminal.adjust_cursor_style setting as a workaround to avoid interfering with the Windows 10 Cursor Shape console setting. There are several trade-offs, though.
  • Added rl_buffer:refreshline() function to redraw the input line, e.g. in case something has written over it.
  • Added os.getpid() function to get the process ID, intended mainly to help salt unique resource names.
  • Added clink.onfiltermatches() so scripts can register a callback function to run after Clink generates matches and before it displays them.
clink - v1.1.40

Published by chrisant996 over 3 years ago

This is a release candidate build.

This release candidate build seems to be working very well for me, even when copied into an existing Cmder\vendor\clink directory. Be sure to make a backup copy of your Cmder installation before copying Clink into an existing Cmder installation!

If this release candidate survives for 1 week without needing to be updated, the version number will be updated and it will become an official release version.

NOTE: The key sequences for the new Ctrl+Alt+Shift+Letter keys might change slightly in v1.1.41.

v1.1.40

  • Added a group of clink-complete-numbers commands that do completion for numbers from the console screen, bound to Ctrl+Alt+N by default.
  • Added rl.getlastcommand() function that returns the name of the last command invoked by key bindings.
  • Fixed sort order in Alt+H for the newly supported key bindings (that were added in v1.1.39).
  • Fixed Ctrl+Space (regression introduced in v1.1.39).
  • Fixed various Ctrl+Shift+whatever combinations (regression introduced in v1.1.39).
  • Fixed rl.setmatches() when the input line is not empty and clink.colorize_input is enabled.
clink - v1.1.39

Published by chrisant996 over 3 years ago

This is a release candidate build.

This release candidate build seems to be working very well for me, even when copied into an existing Cmder\vendor\clink directory. Be sure to make a backup copy of your Cmder installation before copying Clink into an existing Cmder installation!

If this release candidate survives for 1 week without needing to be updated, the version number will be updated and it will become an official release version.

v1.1.39

  • Added support for many more key bindings, such as Ctrl+Shift+Letter keys.
  • Added terminal.differentiate_keys setting that when enabled allows binding Ctrl + H or I or M or [ separately from Backspace, Tab, Return, or Escape.
  • Removed terminal.modify_other_keys setting and made it always enabled.
  • Changed terminal.use_altgr_substitute to be disabled by default so that Ctrl+Alt key bindings can work by default on keyboards with AltGr.
  • Changed output from clink echo so it's directly usable in the inputrc files.
  • Fixed terminal.use_altgr_substitute to only affect AltGr substitute key combinations (it had always broken the RightAlt key in general on other keyboard layouts).
  • Fixed a benign issue with the console input mode in clink echo.
clink - v1.1.38

Published by chrisant996 over 3 years ago

This is a release candidate build.

This release candidate build seems to be working very well for me, even when copied into an existing Cmder\vendor\clink directory. Be sure to make a backup copy of your Cmder installation before copying Clink into an existing Cmder installation!

If this release candidate survives for 1 week without needing to be updated, the version number will be updated and it will become an official release version.

v1.1.38

  • Fixed #84; added terminal.use_altgr_substitute setting.
  • Fixed #80; clink.log is not deleted when Cmder injects Clink.
clink - v1.1.37

Published by chrisant996 over 3 years ago

This is a release candidate build.

This release candidate build seems to be working very well for me, even when copied into an existing Cmder\vendor\clink directory. Be sure to make a backup copy of your Cmder installation before copying Clink into an existing Cmder installation!

If this release candidate survives for 1 week without needing to be updated, the version number will be updated and it will become an official release version.

v1.1.37

  • Fixed copy to clipboard (it never cleared the clipboard!).
  • Fixed #82; added two new clink.paste_crlf modes: ampersand replaces newlines with ampersands, and crlf pastes newlines as-is and executes any commands ending in a newline.
  • Fixed #69; space in the prompt disappears after enter echo: added support for CJK codepages.
clink - v1.1.36

Published by chrisant996 over 3 years ago

This is a release candidate build.

This release candidate build seems to be working very well for me, even when copied into an existing Cmder\vendor\clink directory. Be sure to make a backup copy of your Cmder installation before copying Clink into an existing Cmder installation!

If this release candidate survives for 1 week without needing to be updated, the version number will be updated and it will become an official release version.

v1.1.36

  • Fixed #79; Issue with United States - international keyboard layout (regression introduced in v1.1.0).
  • Fixed #78; crash when history file contains a line longer than 8192 characters (regression introduced in v1.1.2-alpha).
clink - v1.1.35

Published by chrisant996 over 3 years ago

This is a release candidate build.

This release candidate build seems to be working very well for me, even when copied into an existing Cmder\vendor\clink directory. Be sure to make a backup copy of your Cmder installation before copying Clink into an existing Cmder installation!

If this release candidate survives for 1 week without needing to be updated, the version number will be updated and it will become an official release version.

v1.1.35

  • Fixed when the mark-directories inputrc variable is off (regression introduced in v1.1.1-alpha).
  • Fixed Lua reading from stdin, especially in the Lua debugger (regression introduced in v1.1.25).
  • Fixed exponential cost performance bug in Readline when removing duplicate matches.
clink - v1.1.34

Published by chrisant996 over 3 years ago

This is a release candidate build.

This release candidate build seems to be working very well for me, even when copied into an existing Cmder\vendor\clink directory. Be sure to make a backup copy of your Cmder installation before copying Clink into an existing Cmder installation!

If this release candidate survives for 1 week without needing to be updated, the version number will be updated and it will become an official release version.

v1.1.34

  • Fixed copying to clipboard (CF_UNICODETEXT was put on the clipboard correctly, but CF_TEXT was empty and should have been omitted to let Windows automatically convert it from the Unicode text).

v1.1.33 (which was published just minutes before 1.1.34, so I've included its changes here for convenience)

  • Make the "replacing arglink" warning message a little more informative, and write a lua traceback to the Clink log file.
  • Fixed #77; with ConsoleZ scrolling does not always work.
  • Fixed #76; cannot cd up multiple directories normally.
clink - v1.1.33

Published by chrisant996 over 3 years ago

This is a release candidate build.

This release candidate build seems to be working very well for me, even when copied into an existing Cmder\vendor\clink directory. Be sure to make a backup copy of your Cmder installation before copying Clink into an existing Cmder installation!

If this release candidate survives for 1 week without needing to be updated, the version number will be updated and it will become an official release version.

v1.1.33

  • Make the "replacing arglink" warning message a little more informative, and write a lua traceback to the Clink log file.
  • Fixed #77; with ConsoleZ scrolling does not always work.
  • Fixed #76; cannot cd up multiple directories normally.
clink - v1.1.32

Published by chrisant996 over 3 years ago

This is a release candidate build.

This release candidate build seems to be working very well for me, even when copied into an existing Cmder\vendor\clink directory. Be sure to make a backup copy of your Cmder installation before copying Clink into an existing Cmder installation!

If this release candidate survives for 1 week without needing to be updated, the version number will be updated and it will become an official release version.

v1.1.32

  • Added support for non-standard escape codes to set the window title or print environment variables. Depending on the terminal.emulation setting, the behavior is slightly different. When emulate Clink processes the escape codes. When native with ConEmu (and Clink) the escape codes are passed to ConEmu, except that Clink processes the environment variable codes in prompt strings. When native with other terminals, Clink preprocesses the title and environment variable escape codes in prompt strings, but passes the escape codes to the terminal outside of prompt strings.
  • Fixed #67; AutoRun interferes with Cmder.
clink - v1.1.31

Published by chrisant996 over 3 years ago

This is a release candidate build.

This release candidate build seems to be working very well for me, even when copied into an existing Cmder\vendor\clink directory. Be sure to make a backup copy of your Cmder installation before copying Clink into an existing Cmder installation!

If this release candidate survives for 1 week without needing to be updated, the version number will be updated and it will become an official release version.

v1.1.31

  • Fixed #74; clink gets confused by non-standard ConEmu escape codes.
  • Fixed #73; exec.space_prefix and other settings defined in Lua scripts don't take effect until second input line (regression introduced in v1.1.4).
clink - v1.1.30

Published by chrisant996 over 3 years ago

This is a release candidate build.

This release candidate build seems to be working very well for me, even when copied into an existing Cmder\vendor\clink directory. Be sure to make a backup copy of your Cmder installation before copying Clink into an existing Cmder installation!

If this release candidate survives for 1 week without needing to be updated, the version number will be updated and it will become an official release version.

So, moving forward, releases will include the installer as well.

v1.1.30

  • Fixed history compacting on x86 (regression introduced in v1.1.2-alpha).
clink - v1.1.29

Published by chrisant996 over 3 years ago

This is a release candidate build.

This release candidate build seems to be working very well for me, even when copied into an existing Cmder\vendor\clink directory. Be sure to make a backup copy of your Cmder installation before copying Clink into an existing Cmder installation!

v1.1.29

  • Added clink installscripts and clink uninstallscripts to make it easy for package managers like Scoop to install/uninstall script packages for use with Clink. The installed script paths are stored in the registry for the current user.
  • Fixed bold vs bright colors to more accurately follow generally accepted ANSI escape code conventions:
    • Renamed dim to nobold for clarity (though dim is still recognized for backward compatibility).
    • bold adds intensity to a non-intense color (e.g. cyan which is 36).
    • nobold removes intensity added by bold (e.g. 1;36 becomes 36), but does not remove intensity from an explicit intense color (such as bright cyan which is 96).
  • Fixed support for --file= flags in argmatchers.
  • Fixed match display filtering on the first try for a word (regression introduced in v1.1.19).
  • Fixed the clink --profile flag (regression introduced in v1.1.10).
  • Fixed clink info to accurately report the script dirs (it didn't account for the clink.path setting correctly).
clink - v1.1.28

Published by chrisant996 over 3 years ago

This is a release candidate build.

This release candidate build seems to be working very well for me, even when copied into an existing Cmder\vendor\clink directory. Be sure to make a backup copy of your Cmder installation before copying Clink into an existing Cmder installation!

v1.1.28

  • Renamed the log.rl_terminal setting to debug.log_terminal; it has already been repeatedly very useful in multiple was since it was added, so it stays.
  • Fixed #70; ctrl+c not working (regression introduced in v1.1.25).
clink - v1.1.27

Published by chrisant996 over 3 years ago

This is a release candidate build.

This release candidate build seems to be working very well for me, even when copied into an existing Cmder\vendor\clink directory. Be sure to make a backup copy of your Cmder installation before copying Clink into an existing Cmder installation!

v1.1.27

  • Added color.argmatcher setting which, when set, is used to color a command name if it has an associated argmatcher (this supersedes color.cmd, color.doskey, and color.input). By default it's not set.
  • Added log.rl_terminal setting which logs all terminal input and output for Readline (this setting may be renamed or removed in the future).
clink - v1.1.26

Published by chrisant996 over 3 years ago

This is a release candidate build.

This release candidate build seems to be working very well for me, even when copied into an existing Cmder\vendor\clink directory. Be sure to make a backup copy of your Cmder installation before copying Clink into an existing Cmder installation!

(v1.1.25 almost managed to survive a week without fixes! Clink is very close to an official release. Alas, an important issue was found. But that enabled another feature to make it in: the ability for a "luafunc:" key binding to invoke other Readline commands, and to override match completions.)

Highlights for v1.1.26:

  • Added rl.invokecommand() which can invoke a Readline command from inside a "luafunc:" key binding.
  • Added rl.setmatches() which can override match completions from inside a "luafunc:" key binding.
  • Worked around UTF8 key binding problem with Readline which had been causing some meta key bindings (M-x, M-C-x, etc) to sometimes produce garbled key bindings and garbled entries in clink-show-help (Alt+H).
  • Fixed crash if "luafunc:" key binding macro refers to a symbol that doesn't exist.
clink - v1.1.25

Published by chrisant996 over 3 years ago

This is a release candidate build.

This release candidate build seems to be working very well for me, even when copied into an existing Cmder\vendor\clink directory. Be sure to make a backup copy of your Cmder installation before copying Clink into an existing Cmder installation!

(Yes, it's been hovering in release candidates for a while. That's because bugs keep being found that are important enough to fix before an official release. The goal is for this to be a quality-driven release, more than a date-driven release.)

Highlights for v1.1.25:

  • Added clink-find-conhost command that, when in a default (conhost) console window, is equivalent to picking "Find..." from the system menu.
  • Added clink-mark-conhost command that, when in a default (conhost) console window, is equivalent to picking "Mark" from the system menu.
  • clink-copy-word now copies the current word by default, but copies the nth word if a numeric argument is entered (see "Readline Arguments" in the Readline manual).
  • Fixed match display filtering to not exceed the screen width (regression introduced in v1.1.12).
  • Fixed multi-key sequences; in some cases it could get confused about whether an input key is part of a multi-key binding sequence (regression introduced in v1.1.1-alpha).
  • Fixed stray input processing by conhost (holding Ctrl+A or Ctrl+F or etc could accidentally trigger conhost's shortcut keys).
  • Fixed popup window location and size when using Windows Terminal.
  • Fixed input coloring after operate-and-get-next; also fixes brief flicker of incorrect coloring whenever the input line is modified.
clink - v1.1.24

Published by chrisant996 over 3 years ago

This is a release candidate build.

This release candidate build seems to be working very well for me, even when copied into an existing Cmder\vendor\clink directory. Be sure to make a backup copy of your Cmder installation before copying Clink into an existing Cmder installation!

(Yes, it's been hovering in release candidates for a while. That's because bugs keep being found that are important enough to fix before an official release. The goal is for this to be a quality-driven release, more than a date-driven release.)

Highlights for v1.1.24:

  • auto for terminal.emulation now uses native VT support on Windows 10 build 15063 and higher, unless the HKCU\Console\ForceV2 regkey is 0.
  • Special quote handling now enables "dir\"fi to complete to "dir\file". CMD simply strips quotes during completion, and now Clink behaves similarly.
  • Breaking Change: line:getword() and line:getendword() now strip quotes from the word. This should generally automagically make existing match generators work even with embedded quotes, but there's a chance that some match generator might need to be updated. This seems like a reasonable compromise, given the general benefit purchased by this breaking change.
  • os:globdirs() and os:globfile() strip quotes from the globpattern in order to behave more like CMD. Embedded quotes are nonsensical and the intended interpretation is clear, so the APIs now help out with that.
  • Fixed #66; crash when injecting into 32 bit cmd.
  • Fixed #64; wrong cursor position when PROMPT contains BEL character.
  • Fixed #62; argmatchers should color -x:"foo" as a flag if -x: is a flag.
  • Fixed #61; argmatchers should not handle completion for text immediately following -flag:. Instead it always uses file completion. A custom generator can be used to override that behavior.
  • Fixed #60; completion fails with multiple slashes.
  • Fixed completion in some circumstances. Readline and Clink didn't always agree on where the word breaks were; now Clink always tells Readline where the word breaks are (so that completion, input colorization, and lua scripts can all work properly and consistently).
  • Fixed 256 color ANSI codes.
clink - v1.1.23

Published by chrisant996 almost 4 years ago

This is a release candidate build.

This release candidate build seems to be working very well for me, even when copied into an existing Cmder\vendor\clink directory. Be sure to make a backup copy of your Cmder installation before copying Clink into an existing Cmder installation!

Highlights for v1.1.23:

  • Fixed #57; slashes not normalized in some cases.
  • Fixed #45; interaction between history.dupe_mode=erase_prev and history.shared=false.
  • Fixed menu-complete-wraparound when off and there's only 1 match.
clink - v1.1.22

Published by chrisant996 almost 4 years ago

This is a release candidate build.

This release candidate build seems to be working very well for me, even when copied into an existing Cmder\vendor\clink directory. Be sure to make a backup copy of your Cmder installation before copying Clink into an existing Cmder installation!

Highlights for v1.1.22:

  • Added menu-complete-wraparound (on by default) that controls whether completion commands wrap around when cycling past an end (affects popup windows as well).
  • Fixed match completion getting stuck (regression introduced in v1.1.19).
  • Fixed active mark region so it gets deactivated appropriately (it wasn't hooked up fully for Readline's callback mode, which is how Clink uses it).
  • Fixed clink-show-help (Alt+H) so it's able to list C-@ bindings.
  • Fixed inconsistent mark color.