mirror of
https://github.com/cmderdev/cmder.git
synced 2025-01-26 16:19:08 +08:00
Add /f for fast init. (#1942)
The below enables Cmder Fast Init mode for `cmd.exe` sessions. This is more like the Cmder 1.3.5 init process. See issue #1821 Cmder Fast Init mode bypasses or disables the following Cmder 1.3.6+ features: * Git root and version detection. Defaults to `%cmder_root%\vendor\git-for-windows` if it exists. * Path enhance validation before path modify so `%Path%` enhancements are forced. * Recursive path add for `"%CMDER_ROOT%\bin"` * Recursive path add for `"%CMDER_USER_BIN%\bin"` if `/c [user_config_folder` is specified. * `/d` switch to enable debug output. * `/v` switch to enable debug output. Add `/f` to Cmder task as shown below t enable fast init: _Note 1: This setting is invalid in Cmder `Powershell` and `Bash` sessions~_ _Note 2: Add `/t` also to see init timer output_ ![image](https://user-images.githubusercontent.com/7318053/47957637-052e3880-df90-11e8-93ef-91e1ab696d82.png) Cuts ~2.4 seconds off of init time. ![image](https://user-images.githubusercontent.com/7318053/47957795-45db8100-df93-11e8-8ae0-551d12c4e2dc.png)
This commit is contained in:
parent
5be25f29f8
commit
a5bdecca77
23
README.md
23
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`
|
##### Command Line Arguments for `init.bat`
|
||||||
|
|
||||||
| Argument | Description | Default |
|
| 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 |
|
| `/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 |
|
| `/d` | Enables debug output. | not set |
|
||||||
| `/git_install_root [file path]` | User specified Git installation root path. | `%CMDER_ROOT%\vendor\Git-for-Windows` |
|
| `/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 |
|
||||||
| `/home [home folder]` | User specified folder path to set `%HOME%` environment variable. | `%userprofile%` |
|
| `/git_install_root [file path]` | User specified Git installation root path. | `%CMDER_ROOT%\vendor\Git-for-Windows` |
|
||||||
| `/max_depth [1-5]` | Define max recurse depth when adding to the path for `%cmder_root%\bin` and `%cmder_user_bin%` | 1 |
|
| `/home [home folder]` | User specified folder path to set `%HOME%` environment variable. | `%userprofile%` |
|
||||||
| `/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` |
|
| `/max_depth [1-5]` | Define max recurse depth when adding to the path for `%cmder_root%\bin` and `%cmder_user_bin%` | 1 |
|
||||||
| `/user_aliases [file path]` | File path pointing to user aliases. | `%CMDER_ROOT%\config\user-aliases.cmd` |
|
| `/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` |
|
||||||
| `/v` | Enables verbose output. | not set |
|
| `/user_aliases [file path]` | File path pointing to user aliases. | `%CMDER_ROOT%\config\user-aliases.cmd` |
|
||||||
| (custom arguments) | User defined arguments processed by `cexec`. Type `cexec /?` for more useage. | not set |
|
| `/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
|
### 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:
|
Single user portable configuration is possible using the cmder specific shell config files. Edit the below files to add your own configuration:
|
||||||
|
11
vendor/init.bat
vendored
11
vendor/init.bat
vendored
@ -12,6 +12,7 @@ set cmder_init_start=%time%
|
|||||||
set verbose_output=0
|
set verbose_output=0
|
||||||
set debug_output=0
|
set debug_output=0
|
||||||
set time_init=0
|
set time_init=0
|
||||||
|
set fast_init=0
|
||||||
set max_depth=1
|
set max_depth=1
|
||||||
set "CMDER_USER_FLAGS= "
|
set "CMDER_USER_FLAGS= "
|
||||||
|
|
||||||
@ -41,7 +42,9 @@ call "%cmder_root%\vendor\lib\lib_profile"
|
|||||||
:var_loop
|
:var_loop
|
||||||
if "%~1" == "" (
|
if "%~1" == "" (
|
||||||
goto :start
|
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
|
set time_init=1
|
||||||
) else if /i "%1"=="/v" (
|
) else if /i "%1"=="/v" (
|
||||||
set verbose_output=1
|
set verbose_output=1
|
||||||
@ -147,6 +150,11 @@ if not defined TERM set TERM=cygwin
|
|||||||
setlocal enabledelayedexpansion
|
setlocal enabledelayedexpansion
|
||||||
if defined GIT_INSTALL_ROOT (
|
if defined GIT_INSTALL_ROOT (
|
||||||
if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" goto :SPECIFIED_GIT
|
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..."
|
%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" (
|
if exist "%CMDER_ROOT%\vendor\git-for-windows" (
|
||||||
set "GIT_INSTALL_ROOT=%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_console% debug_output "Using vendored Git from '!GIT_INSTALL_ROOT!..."
|
||||||
%lib_path% enhance_path "!GIT_INSTALL_ROOT!\cmd"
|
|
||||||
goto :CONFIGURE_GIT
|
goto :CONFIGURE_GIT
|
||||||
) else (
|
) else (
|
||||||
goto :NO_GIT
|
goto :NO_GIT
|
||||||
|
2
vendor/lib/lib_console.cmd
vendored
2
vendor/lib/lib_console.cmd
vendored
@ -1,6 +1,6 @@
|
|||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
rem set args=%*
|
if "%fast_init%" == "1" exit /b
|
||||||
|
|
||||||
call "%~dp0lib_base.cmd"
|
call "%~dp0lib_base.cmd"
|
||||||
set lib_console=call "%~dp0lib_console.cmd"
|
set lib_console=call "%~dp0lib_console.cmd"
|
||||||
|
2
vendor/lib/lib_git.cmd
vendored
2
vendor/lib/lib_git.cmd
vendored
@ -1,11 +1,9 @@
|
|||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
|
|
||||||
call "%~dp0lib_base.cmd"
|
call "%~dp0lib_base.cmd"
|
||||||
call "%%~dp0lib_console.cmd"
|
call "%%~dp0lib_console.cmd"
|
||||||
set lib_git=call "%~dp0lib_git.cmd"
|
set lib_git=call "%~dp0lib_git.cmd"
|
||||||
|
|
||||||
|
|
||||||
if "%~1" == "/h" (
|
if "%~1" == "/h" (
|
||||||
%lib_base% help "%~0"
|
%lib_base% help "%~0"
|
||||||
) else if "%1" neq "" (
|
) else if "%1" neq "" (
|
||||||
|
17
vendor/lib/lib_path.cmd
vendored
17
vendor/lib/lib_path.cmd
vendored
@ -52,6 +52,15 @@ exit /b
|
|||||||
set "position="
|
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 found=0
|
||||||
set "find_query=%add_path%"
|
set "find_query=%add_path%"
|
||||||
set "find_query=%find_query:\=\\%"
|
set "find_query=%find_query:\=\\%"
|
||||||
@ -85,6 +94,7 @@ exit /b
|
|||||||
%lib_console% debug_output :enhance_path "AFTER Env Var - PATH=!path!"
|
%lib_console% debug_output :enhance_path "AFTER Env Var - PATH=!path!"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
:end_enhance_path
|
||||||
endlocal & set "PATH=%PATH:;;=;%"
|
endlocal & set "PATH=%PATH:;;=;%"
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
@ -115,7 +125,6 @@ exit /b
|
|||||||
:::.
|
:::.
|
||||||
::: path <out> Sets the path env variable if required.
|
::: path <out> Sets the path env variable if required.
|
||||||
:::-------------------------------------------------------------------------------
|
:::-------------------------------------------------------------------------------
|
||||||
|
|
||||||
setlocal enabledelayedexpansion
|
setlocal enabledelayedexpansion
|
||||||
if "%~1" neq "" (
|
if "%~1" neq "" (
|
||||||
set "add_path=%~1"
|
set "add_path=%~1"
|
||||||
@ -136,6 +145,11 @@ exit /b
|
|||||||
set "position="
|
set "position="
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if "%fast_init%" == "1" (
|
||||||
|
call :enhance_path "%add_path%" %position%
|
||||||
|
goto :end_enhance_path_recursive
|
||||||
|
)
|
||||||
|
|
||||||
if "%depth%" == "" set depth=0
|
if "%depth%" == "" set depth=0
|
||||||
|
|
||||||
%lib_console% debug_output :enhance_path_recursive "Env Var - add_path=%add_path%"
|
%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%"
|
endlocal & set "PATH=%PATH%"
|
||||||
exit /b
|
exit /b
|
||||||
|
1
vendor/lib/lib_profile.cmd
vendored
1
vendor/lib/lib_profile.cmd
vendored
@ -1,6 +1,5 @@
|
|||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
|
|
||||||
call "%~dp0lib_base.cmd"
|
call "%~dp0lib_base.cmd"
|
||||||
call "%%~dp0lib_console"
|
call "%%~dp0lib_console"
|
||||||
set lib_profile=call "%~dp0lib_profile.cmd"
|
set lib_profile=call "%~dp0lib_profile.cmd"
|
||||||
|
Loading…
Reference in New Issue
Block a user