diff --git a/CHANGELOG.md b/CHANGELOG.md index fff27ed54..5d265de10 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,15 @@ # Change Log -## [1.3.17](https://github.com/cmderdev/cmder/tree/v1.3.17) (2020-12-23) +## [1.3.18](https://github.com/cmderdev/cmder/tree/v1.3.18) (2021-3-26) + +### Changes +- Update to Clink 1.1.45 to fix #2451, #2465, and #2473 +- Update to ConEmu v21.03.04 +- `init.bat` auto migrates the history alias to use `clink history` if required. +- Remove Tilde match from clink.lua in favor of builtin Clink capability. + +## [1.3.17](https://github.com/cmderdev/cmder/tree/v1.3.17) (2020-12-23) ### Fixes - [bug] Running `alias ..=cd ..` removes other aliases #2394 diff --git a/vendor/bin/alias.cmd b/vendor/bin/alias.cmd index 2eca8f23a..ac2525c4b 100644 --- a/vendor/bin/alias.cmd +++ b/vendor/bin/alias.cmd @@ -81,9 +81,6 @@ set alias_name=!alias_name:~1! :: trailing quotes added while validating set alias_value=!alias_value:~0,-1! -:: '.' escaped -set alias_name_esc=!alias_name:.=\.! - ::remove spaces set _temp=%alias_name: =% @@ -94,7 +91,7 @@ if not ["%_temp%"] == ["%alias_name%"] ( ) :: replace already defined alias -%WINDIR%\System32\findstr /v /i "^%alias_name_esc%=" "%ALIASES%" >> "%ALIASES%.tmp" +%WINDIR%\System32\findstr /b /l /v /i "%alias_name%=" "%ALIASES%" >> "%ALIASES%.tmp" echo %alias_name%=%alias_value% >> "%ALIASES%.tmp" && type "%ALIASES%.tmp" > "%ALIASES%" & @del /f /q "%ALIASES%.tmp" doskey /macrofile="%ALIASES%" endlocal @@ -103,10 +100,7 @@ exit /b :p_del set del_alias=%~1 -:: '.' escaped -set del_alias_esc=!del_alias:.=\.! - -%WINDIR%\System32\findstr /v /i "^%del_alias_esc%=" "%ALIASES%" >> "%ALIASES%.tmp" +%WINDIR%\System32\findstr /b /l /v /i "%del_alias%=" "%ALIASES%" >> "%ALIASES%.tmp" type "%ALIASES%".tmp > "%ALIASES%" & @del /f /q "%ALIASES%.tmp" doskey %del_alias%= doskey /macrofile="%ALIASES%" diff --git a/vendor/clink.lua b/vendor/clink.lua index 8d72186a8..4ba4dd6b4 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -406,24 +406,7 @@ local function svn_prompt_filter() return false end -local function tilde_match (text, f, l) - if text == '~' then - clink.add_match(clink.get_env('userprofile')) - clink.matches_are_files() - return true - end - - if text:sub(1, 1) == '~' then - clink.add_match(string.gsub(text, "~", clink.get_env('userprofile'), 1)) - -- second match prevents adding a space so we can look for more matches - clink.add_match(string.gsub(text, "~", clink.get_env('userprofile'), 1) .. '+') - clink.matches_are_files() - return true - end -end - -- insert the set_prompt at the very beginning so that it runs first -clink.register_match_generator(tilde_match, 1) clink.prompt.register_filter(set_prompt_filter, 1) clink.prompt.register_filter(hg_prompt_filter, 50) clink.prompt.register_filter(git_prompt_filter, 50) diff --git a/vendor/clink_settings.default b/vendor/clink_settings.default index 97420e245..7e296b30b 100644 --- a/vendor/clink_settings.default +++ b/vendor/clink_settings.default @@ -1,116 +1,19 @@ -# name: Pressing Ctrl-D exits session -# type: bool -# Ctrl-D exits cmd.exe when it is pressed on an empty line. -ctrld_exits = 1 - -# name: Toggle if pressing Esc clears line -# type: bool -# Clink clears the current line when Esc is pressed (unless Readline's Vi mode -# is enabled). -esc_clears_line = 1 - -# name: Match display colour -# type: int -# Colour to use when displaying matches. A value less than 0 will be the -# opposite brightness of the default colour. -match_colour = -1 - -# name: Executable match style -# type: enum -# 0 = PATH only -# 1 = PATH and CWD -# 2 = PATH, CWD, and directories -# Changes how Clink will match executables when there is no path separator on -# the line. 0 = PATH only, 1 = PATH and CWD, 2 = PATH, CWD, and directories. In -# all cases both executables and directories are matched when there is a path -# separator present. A value of -1 will disable executable matching completely. -exec_match_style = 2 - -# name: Whitespace prefix matches files -# type: bool -# If the line begins with whitespace then Clink bypasses executable matching and -# will match all files and directories instead. -space_prefix_match_files = 1 - -# name: Colour of the prompt -# type: int -# Surrounds the prompt in ANSI escape codes to set the prompt's colour. Disabled -# when the value is less than 0. -prompt_colour = -1 - -# name: Auto-answer terminate prompt -# type: enum -# 0 = Disabled -# 1 = Answer 'Y' -# 2 = Answer 'N' -# Automatically answers cmd.exe's 'Terminate batch job (Y/N)?' prompts. 0 = -# disabled, 1 = answer 'Y', 2 = answer 'N'. -terminate_autoanswer = 0 - -# name: Lines of history saved to disk -# type: int -# When set to a positive integer this is the number of lines of history that -# will persist when Clink saves the command history to disk. Use 0 for infinite -# lines and <0 to disable history persistence. -history_file_lines = 10000 - -# name: Skip adding lines prefixed with whitespace -# type: bool -# Ignore lines that begin with whitespace when adding lines in to the history. -history_ignore_space = 0 - -# name: Controls how duplicate entries are handled -# type: enum -# 0 = Always add -# 1 = Ignore -# 2 = Erase previous -# If a line is a duplicate of an existing history entry Clink will erase the -# duplicate when this is set 2. A value of 1 will not add duplicates to the -# history and a value of 0 will always add lines. Note that history is not -# deduplicated when reading/writing to disk. -history_dupe_mode = 2 - -# name: Read/write history file each line edited -# type: bool -# When non-zero the history will be read from disk before editing a new line and -# written to disk afterwards. -history_io = 1 +# For explanation of these and other settings see: +# https://chrisant996.github.io/clink/clink.html # name: Sets how command history expansion is applied # type: enum -# 0 = Off -# 1 = On -# 2 = Not in single quotes -# 3 = Not in double quote -# 4 = Not in any quotes -# The '!' character in an entered line can be interpreted to introduce words -# from the history. This can be enabled and disable by setting this value to 1 -# or 0. Values or 2, 3 or 4 will skip any ! character quoted in single, double, -# or both quotes respectively. -history_expand_mode = 3 - -# name: Support Windows' Ctrl-Alt substitute for AltGr -# type: bool -# Windows provides Ctrl-Alt as a substitute for AltGr, historically to support -# keyboards with no AltGr key. This may collide with some of Readline's -# bindings. -use_altgr_substitute = 1 +# options: off,on,not_squoted,not_dquoted,not_quoted +history.expand_mode = not_dquoted -# name: Strips CR and LF chars on paste -# type: enum -# 0 = Paste unchanged -# 1 = Strip -# 2 = As space -# Setting this to a value >0 will make Clink strip CR and LF characters from -# text pasted into the current line. Set this to 1 to strip all newline -# characters and 2 to replace them with a space. -strip_crlf_on_paste = 2 +# name: Skip adding lines prefixed with whitespace +# type: boolean +history.ignore_space = False -# name: Enables basic ANSI escape code support -# type: bool -# When printing the prompt, Clink has basic built-in support for SGR ANSI escape -# codes to control the text colours. This is automatically disabled if a third -# party tool is detected that also provides this facility. It can also be -# disabled by setting this to 0. -ansi_code_support = 1 +# name: The number of history lines to save +# type: integer +history.max_lines = 10000 +# name: Share history between instances +# type: boolean +history.shared = True diff --git a/vendor/init.bat b/vendor/init.bat index 8c10a0c2b..36f502489 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -148,18 +148,39 @@ if "%CMDER_CLINK%" == "1" ( :: Run clink if defined CMDER_USER_CONFIG ( - if not exist "%CMDER_USER_CONFIG%\settings" ( - echo Generating clink initial settings in "%CMDER_USER_CONFIG%\settings" - copy "%CMDER_ROOT%\vendor\clink_settings.default" "%CMDER_USER_CONFIG%\settings" - echo Additional *.lua files in "%CMDER_USER_CONFIG%" are loaded on startup.\ + if not exist "%CMDER_USER_CONFIG%\settings" if not exist "%CMDER_USER_CONFIG%\clink_settings" ( + echo Generating clink initial settings in "%CMDER_USER_CONFIG%\clink_settings" + copy "%CMDER_ROOT%\vendor\clink_settings.default" "%CMDER_USER_CONFIG%\clink_settings" + echo Additional *.lua files in "%CMDER_USER_CONFIG%" are loaded on startup. + ) + + REM Cleanup lagacy Clink Settings file + if exist "%CMDER_USER_CONFIG%\settings" if exist "%CMDER_USER_CONFIG%\clink_settings" ( + del "%CMDER_USER_CONFIG%\settings" + ) + + REM Cleanup legacy CLink history file + if exist "%CMDER_USER_CONFIG%\.history" if exist "%CMDER_USER_CONFIG%\clink_history" ( + del "%CMDER_USER_CONFIG%\.history" ) "%CMDER_ROOT%\vendor\clink\clink_%clink_architecture%.exe" inject --quiet --profile "%CMDER_USER_CONFIG%" --scripts "%CMDER_ROOT%\vendor" ) else ( - if not exist "%CMDER_ROOT%\config\settings" ( - echo Generating clink initial settings in "%CMDER_ROOT%\config\settings" - copy "%CMDER_ROOT%\vendor\clink_settings.default" "%CMDER_ROOT%\config\settings" + if not exist "%CMDER_ROOT%\config\settings" if not exist "%CMDER_ROOT%\config\clink_settings" ( + echo Generating clink initial settings in "%CMDER_ROOT%\config\clink_settings" + copy "%CMDER_ROOT%\vendor\clink_settings.default" "%CMDER_ROOT%\config\clink_settings" echo Additional *.lua files in "%CMDER_ROOT%\config" are loaded on startup. ) + + REM Cleanup lagacy Clink Settings file + if exist "%CMDER_ROOT%\config\settings" if exist "%CMDER_ROOT%\config\clink_settings" ( + del "%CMDER_ROOT%\config\settings" + ) + + REM Cleanup legacy Clink history file + if exist "%CMDER_ROOT%\config\.history" if exist "%CMDER_ROOT%\config\clink_history" ( + del "%CMDER_ROOT%\config\.history" + ) + "%CMDER_ROOT%\vendor\clink\clink_%clink_architecture%.exe" inject --quiet --profile "%CMDER_ROOT%\config" --scripts "%CMDER_ROOT%\vendor" ) ) else ( @@ -346,6 +367,13 @@ if "%CMDER_ALIASES%" == "1" ( ) :: Add aliases to the environment +type "%user_aliases%" | findstr /b /l /i "history=cat " >nul +if "%ERRORLEVEL%" == "0" ( + echo Migrating alias 'history' to new Clink 1.x.x... + call "%CMDER_ROOT%\vendor\bin\alias.cmd" /d history + echo Restart the session to activate changes! +) + call "%user_aliases%" if "%CMDER_CONFIGURED%" gtr "1" goto CMDER_CONFIGURED diff --git a/vendor/lib/lib_path.cmd b/vendor/lib/lib_path.cmd index 0da0da8fd..725b5496f 100644 --- a/vendor/lib/lib_path.cmd +++ b/vendor/lib/lib_path.cmd @@ -112,13 +112,30 @@ exit /b :end_enhance_path set "PATH=%PATH:;;=;%" - if NOT "%OLD_PATH%" == "%PATH%" ( + + REM echo %path%|"C:\Users\dgames\cmder - dev\vendor\git-for-windows\usr\bin\wc" -c + if "%fast_init%" == "1" exit /b + + if not "%OLD_PATH:~0,3000%" == "%OLD_PATH:~0,3001%" goto :toolong + if not "%OLD_PATH%" == "%PATH%" goto :changed + exit /b + + :toolong + echo %OLD_PATH%>tempfileA + echo %PATH%>tempfileB + fc /b tempfileA tempfileB 2>nul 1>nul + if errorlevel 1 ( del tempfileA & del tempfileB & goto :changed ) + del tempfileA & del tempfileB + exit /b + + :changed %print_debug% :enhance_path "END Env Var - PATH=%path%" %print_debug% :enhance_path "Env Var %find_query% - found=%found%" - ) - set "position=" + exit /b + exit /b + :set_found if "%ERRORLEVEL%" == "0" ( set found=1 diff --git a/vendor/sources.json b/vendor/sources.json index 699671919..5b69c312d 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -6,13 +6,13 @@ }, { "name": "clink", - "version": "1.1.10", - "url": "https://github.com/chrisant996/clink/releases/download/v1.1.10/clink.1.1.10.125c9f.zip" + "version": "1.1.45", + "url": "https://github.com/chrisant996/clink/releases/download/v1.1.45/clink.1.1.45.1c3985.zip" }, { "name": "conemu-maximus5", - "version": "191012", - "url": "https://github.com/Maximus5/ConEmu/releases/download/v19.10.12/ConEmuPack.191012.7z" + "version": "210304", + "url": "https://github.com/Maximus5/ConEmu/releases/download/v21.03.04/ConEmuPack.210304.7z" }, { "name": "clink-completions", diff --git a/vendor/user_aliases.cmd.default b/vendor/user_aliases.cmd.default index 42216845a..45f44a7c7 100644 --- a/vendor/user_aliases.cmd.default +++ b/vendor/user_aliases.cmd.default @@ -9,7 +9,6 @@ gl=git log --oneline --all --graph --decorate $* ls=ls --show-control-chars -F --color $* pwd=cd clear=cls -history=cat -n "%CMDER_ROOT%\config\.history" unalias=alias /d $1 vi=vim $* cmderr=cd /d "%CMDER_ROOT%"