diff --git a/README.md b/README.md index ec47ec2c4..b56c05bed 100644 --- a/README.md +++ b/README.md @@ -138,17 +138,18 @@ You may find some Monokai color schemes for mintty to match Cmder [here](https:/ ##### Command Line Arguments for `init.bat` -| Argument | Description | Default | -| ----------------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------- | -| `/c [user cmder root]` | Enables user bin and config folders for 'Cmder as admin' sessions due to non-shared environment. | not set | -| `/d` | Enables debug output. | not set | -| `/git_install_root [file path]` | User specified Git installation root path. | `%CMDER_ROOT%\vendor\Git-for-Windows` | -| `/home [home folder]` | User specified folder path to set `%HOME%` environment variable. | `%userprofile%` | -| `/max_depth [1-5]` | Define max recurse depth when adding to the path for `%cmder_root%\bin` and `%cmder_user_bin%` | 1 | -| `/svn_ssh [path to ssh.exe]` | Define `%SVN_SSH%` so we can use git svn with ssh svn repositories. | `%GIT_INSTALL_ROOT%\bin\ssh.exe` | -| `/user_aliases [file path]` | File path pointing to user aliases. | `%CMDER_ROOT%\config\user-aliases.cmd` | -| `/v` | Enables verbose output. | not set | -| (custom arguments) | User defined arguments processed by `cexec`. Type `cexec /?` for more useage. | not set | +| Argument | Description | Default | +| ----------------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------- | +| `/c [user cmder root]` | Enables user bin and config folders for 'Cmder as admin' sessions due to non-shared environment. | not set | +| `/d` | Enables debug output. | not set | +| `/f` | Enables Cmder Fast Init Mode. This disables some features, see pull request [#1492](https://github.com/cmderdev/cmder/pull/1942) for more details. | not set | +| `/git_install_root [file path]` | User specified Git installation root path. | `%CMDER_ROOT%\vendor\Git-for-Windows` | +| `/home [home folder]` | User specified folder path to set `%HOME%` environment variable. | `%userprofile%` | +| `/max_depth [1-5]` | Define max recurse depth when adding to the path for `%cmder_root%\bin` and `%cmder_user_bin%` | 1 | +| `/svn_ssh [path to ssh.exe]` | Define `%SVN_SSH%` so we can use git svn with ssh svn repositories. | `%GIT_INSTALL_ROOT%\bin\ssh.exe` | +| `/user_aliases [file path]` | File path pointing to user aliases. | `%CMDER_ROOT%\config\user-aliases.cmd` | +| `/v` | Enables verbose output. | not set | +| (custom arguments) | User defined arguments processed by `cexec`. Type `cexec /?` for more useage. | not set | ### Cmder Shell User Config Single user portable configuration is possible using the cmder specific shell config files. Edit the below files to add your own configuration: diff --git a/vendor/init.bat b/vendor/init.bat index e57627d95..57c7b35af 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -12,6 +12,7 @@ set cmder_init_start=%time% set verbose_output=0 set debug_output=0 set time_init=0 +set fast_init=0 set max_depth=1 set "CMDER_USER_FLAGS= " @@ -41,7 +42,9 @@ call "%cmder_root%\vendor\lib\lib_profile" :var_loop if "%~1" == "" ( goto :start - ) else if /i "%1"=="/t" ( + ) else if /i "%1" == "/f" ( + set fast_init=1 + ) else if /i "%1" == "/t" ( set time_init=1 ) else if /i "%1"=="/v" ( set verbose_output=1 @@ -147,6 +150,11 @@ if not defined TERM set TERM=cygwin setlocal enabledelayedexpansion if defined GIT_INSTALL_ROOT ( if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" goto :SPECIFIED_GIT +) else if "%fast_init%" == "1" ( + if exist "%CMDER_ROOT%\vendor\git-for-windows\cmd\git.exe" ( + %lib_console% debug_output "Skipping Git Auto-Detect!" + goto :VENDORED_GIT + ) ) %lib_console% debug_output init.bat "Looking for Git install root..." @@ -208,7 +216,6 @@ for /F "delims=" %%F in ('where git.exe 2^>nul') do ( if exist "%CMDER_ROOT%\vendor\git-for-windows" ( set "GIT_INSTALL_ROOT=%CMDER_ROOT%\vendor\git-for-windows" %lib_console% debug_output "Using vendored Git from '!GIT_INSTALL_ROOT!..." - %lib_path% enhance_path "!GIT_INSTALL_ROOT!\cmd" goto :CONFIGURE_GIT ) else ( goto :NO_GIT diff --git a/vendor/lib/lib_console.cmd b/vendor/lib/lib_console.cmd index 3c174b094..17540ddd0 100644 --- a/vendor/lib/lib_console.cmd +++ b/vendor/lib/lib_console.cmd @@ -1,6 +1,6 @@ @echo off -rem set args=%* +if "%fast_init%" == "1" exit /b call "%~dp0lib_base.cmd" set lib_console=call "%~dp0lib_console.cmd" diff --git a/vendor/lib/lib_git.cmd b/vendor/lib/lib_git.cmd index 2e7f60ed0..bfbcdb2f0 100644 --- a/vendor/lib/lib_git.cmd +++ b/vendor/lib/lib_git.cmd @@ -1,11 +1,9 @@ @echo off - call "%~dp0lib_base.cmd" call "%%~dp0lib_console.cmd" set lib_git=call "%~dp0lib_git.cmd" - if "%~1" == "/h" ( %lib_base% help "%~0" ) else if "%1" neq "" ( diff --git a/vendor/lib/lib_path.cmd b/vendor/lib/lib_path.cmd index d59c44dc2..b1a6d2df1 100644 --- a/vendor/lib/lib_path.cmd +++ b/vendor/lib/lib_path.cmd @@ -52,6 +52,15 @@ exit /b set "position=" ) + if "%fast_init%" == "1" ( + if "%position%" == "append" ( + set "PATH=%PATH%;%add_path%" + ) else ( + set "PATH=%add_path%;%PATH%" + ) + goto :end_enhance_path + ) + set found=0 set "find_query=%add_path%" set "find_query=%find_query:\=\\%" @@ -85,6 +94,7 @@ exit /b %lib_console% debug_output :enhance_path "AFTER Env Var - PATH=!path!" ) + :end_enhance_path endlocal & set "PATH=%PATH:;;=;%" exit /b @@ -115,7 +125,6 @@ exit /b :::. ::: path Sets the path env variable if required. :::------------------------------------------------------------------------------- - setlocal enabledelayedexpansion if "%~1" neq "" ( set "add_path=%~1" @@ -136,6 +145,11 @@ exit /b set "position=" ) + if "%fast_init%" == "1" ( + call :enhance_path "%add_path%" %position% + goto :end_enhance_path_recursive + ) + if "%depth%" == "" set depth=0 %lib_console% debug_output :enhance_path_recursive "Env Var - add_path=%add_path%" @@ -155,5 +169,6 @@ exit /b ) ) + :end_enhance_path_recursive endlocal & set "PATH=%PATH%" exit /b diff --git a/vendor/lib/lib_profile.cmd b/vendor/lib/lib_profile.cmd index 9bf08b9a3..32bb77a3f 100644 --- a/vendor/lib/lib_profile.cmd +++ b/vendor/lib/lib_profile.cmd @@ -1,6 +1,5 @@ @echo off - call "%~dp0lib_base.cmd" call "%%~dp0lib_console" set lib_profile=call "%~dp0lib_profile.cmd"