mirror of
				https://github.com/cmderdev/cmder.git
				synced 2025-10-31 09:22:15 +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_  Cuts ~2.4 seconds off of init time. 
This commit is contained in:
		
				
					committed by
					
						 Benjamin Staneck
						Benjamin Staneck
					
				
			
			
				
	
			
			
			
						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` | ||||
|  | ||||
| | 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: | ||||
|   | ||||
							
								
								
									
										11
									
								
								vendor/init.bat
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								vendor/init.bat
									
									
									
									
										vendored
									
									
								
							| @@ -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 | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/lib/lib_console.cmd
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/lib/lib_console.cmd
									
									
									
									
										vendored
									
									
								
							| @@ -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" | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/lib/lib_git.cmd
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/lib/lib_git.cmd
									
									
									
									
										vendored
									
									
								
							| @@ -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 "" ( | ||||
|   | ||||
							
								
								
									
										17
									
								
								vendor/lib/lib_path.cmd
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										17
									
								
								vendor/lib/lib_path.cmd
									
									
									
									
										vendored
									
									
								
							| @@ -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       <out> 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 | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/lib/lib_profile.cmd
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/lib/lib_profile.cmd
									
									
									
									
										vendored
									
									
								
							| @@ -1,6 +1,5 @@ | ||||
| @echo off | ||||
|  | ||||
|  | ||||
| call "%~dp0lib_base.cmd" | ||||
| call "%%~dp0lib_console" | ||||
| set lib_profile=call "%~dp0lib_profile.cmd" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user