mirror of
				https://github.com/cmderdev/cmder.git
				synced 2025-10-31 09:22:15 +08:00 
			
		
		
		
	Improvements to Cmder prompt
This commit is contained in:
		| @@ -1,6 +1,6 @@ | ||||
| # How to contribute | ||||
|  | ||||
| Unfortunately we all can't work on cmder every day of the year, so I have decided to write some guidelines for contributing. | ||||
| Unfortunately we all can't work on Cmder every day of the year, so I have decided to write some guidelines for contributing. | ||||
|  | ||||
| If you follow them your contribution will likely be pulled in quicker. | ||||
|  | ||||
|   | ||||
| @@ -98,8 +98,8 @@ function Get-VersionStr { | ||||
|  | ||||
|     # Determine if git is available | ||||
|     if (Get-Command "git.exe" -ErrorAction SilentlyContinue) { | ||||
|         # Determine if the current diesctory is a git repository | ||||
|         $GitPresent = Invoke-Expression "git rev-parse --is-inside-work-tree" -erroraction SilentlyContinue | ||||
|         # Determine if the current directory is a git repository | ||||
|         $GitPresent = Invoke-Expression "git rev-parse --is-inside-work-tree" -ErrorAction SilentlyContinue | ||||
|  | ||||
|         if ( $GitPresent -eq 'true' ) { | ||||
|             $string = Invoke-Expression "git describe --abbrev=0 --tags" | ||||
|   | ||||
							
								
								
									
										4
									
								
								vendor/clink.lua
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/clink.lua
									
									
									
									
										vendored
									
									
								
							| @@ -161,6 +161,8 @@ local function set_prompt_filter() | ||||
|         cr = ' ' | ||||
|     end | ||||
|  | ||||
|     cr = "\x1b[0m" .. cr | ||||
|  | ||||
|     if env ~= nil then env = "("..env..") " else env = "" end | ||||
|  | ||||
|     if uah ~= '' then uah = get_uah_color() .. uah end | ||||
| @@ -168,7 +170,7 @@ local function set_prompt_filter() | ||||
|  | ||||
|     local version_control = prompt_includeVersionControl and "{git}{hg}{svn}" or "" | ||||
|  | ||||
|     prompt = "{uah}{cwd}" .. version_control .. get_lamb_color() .. cr .. "{env}{lamb} \x1b[0m" | ||||
|     prompt = "{uah}{cwd}" .. version_control .. cr .. get_lamb_color() .. "{env}{lamb}\x1b[0m " | ||||
|     prompt = string.gsub(prompt, "{uah}", uah) | ||||
|     prompt = string.gsub(prompt, "{cwd}", cwd) | ||||
|     prompt = string.gsub(prompt, "{env}", env) | ||||
|   | ||||
							
								
								
									
										9
									
								
								vendor/clink_settings.default
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/clink_settings.default
									
									
									
									
										vendored
									
									
								
							| @@ -17,3 +17,12 @@ history.max_lines = 10000 | ||||
| # name: Share history between instances | ||||
| # type: boolean | ||||
| history.shared = True | ||||
|  | ||||
| # name: Auto-answer terminate prompt | ||||
| # type: enum | ||||
| # options: off,answer_yes,answer_no | ||||
| cmd.auto_answer = answer_yes | ||||
|  | ||||
| # name: Doskey completions | ||||
| # type: color | ||||
| color.doskey = yellow | ||||
|   | ||||
							
								
								
									
										64
									
								
								vendor/init.bat
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										64
									
								
								vendor/init.bat
									
									
									
									
										vendored
									
									
								
							| @@ -129,10 +129,15 @@ goto var_loop | ||||
| %print_debug% init.bat "Env Var - CMDER_ROOT=%CMDER_ROOT%" | ||||
| %print_debug% init.bat "Env Var - debug_output=%debug_output%" | ||||
|  | ||||
| :: Sets Cmder directory paths | ||||
| SET CMDER_CONFIG_DIR=%CMDER_ROOT%\config | ||||
|  | ||||
| :: Check if wre're using Cmder individual user profile | ||||
| if defined CMDER_USER_CONFIG ( | ||||
|     %print_debug% init.bat "CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '%CMDER_USER_CONFIG%'!" | ||||
|  | ||||
|     if not exist "%CMDER_USER_CONFIG%\..\opt" md "%CMDER_USER_CONFIG%\..\opt" | ||||
|     set CMDER_CONFIG_DIR=%CMDER_USER_CONFIG% | ||||
| ) | ||||
|  | ||||
| :: Pick right version of Clink | ||||
| @@ -153,53 +158,28 @@ if "%CMDER_CLINK%" == "1" ( | ||||
|     ) | ||||
|  | ||||
|     :: Run Clink | ||||
|     if defined CMDER_USER_CONFIG ( | ||||
|         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. | ||||
|     if not exist "%CMDER_CONFIG_DIR%\settings" if not exist "%CMDER_CONFIG_DIR%\clink_settings" ( | ||||
|         echo Generating Clink initial settings in "%CMDER_CONFIG_DIR%\clink_settings" | ||||
|         copy "%CMDER_ROOT%\vendor\clink_settings.default" "%CMDER_CONFIG_DIR%\clink_settings" | ||||
|         echo Additional *.lua files in "%CMDER_CONFIG_DIR%" are loaded on startup. | ||||
|     ) | ||||
|  | ||||
|         if not exist "%CMDER_USER_CONFIG%\cmder_prompt_config.lua" ( | ||||
|             echo Creating Cmder prompt config file: "%CMDER_USER_CONFIG%\cmder_prompt_config.lua" | ||||
|             copy "%CMDER_ROOT%\vendor\cmder_prompt_config.lua.default" "%CMDER_USER_CONFIG%\cmder_prompt_config.lua" | ||||
|     if not exist "%CMDER_CONFIG_DIR%\cmder_prompt_config.lua" ( | ||||
|         echo Creating Cmder prompt config file: "%CMDER_CONFIG_DIR%\cmder_prompt_config.lua" | ||||
|         copy "%CMDER_ROOT%\vendor\cmder_prompt_config.lua.default" "%CMDER_CONFIG_DIR%\cmder_prompt_config.lua" | ||||
|     ) | ||||
|  | ||||
|         REM Cleanup lagacy Clink Settings file | ||||
|         if exist "%CMDER_USER_CONFIG%\settings" if exist "%CMDER_USER_CONFIG%\clink_settings" ( | ||||
|             del "%CMDER_USER_CONFIG%\settings" | ||||
|     :: Cleanup lagacy Clink Settings file | ||||
|     if exist "%CMDER_CONFIG_DIR%\settings" if exist "%CMDER_CONFIG_DIR%\clink_settings" ( | ||||
|         del "%CMDER_CONFIG_DIR%\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" | ||||
|     :: Cleanup legacy Clink history file | ||||
|     if exist "%CMDER_CONFIG_DIR%\.history" if exist "%CMDER_CONFIG_DIR%\clink_history" ( | ||||
|         del "%CMDER_CONFIG_DIR%\.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" 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. | ||||
|         ) | ||||
|  | ||||
|         if not exist "%CMDER_ROOT%\config\cmder_prompt_config.lua" ( | ||||
|             echo Creating Cmder prompt config file: "%CMDER_ROOT%\config\cmder_prompt_config.lua" | ||||
|             copy "%CMDER_ROOT%\vendor\cmder_prompt_config.lua.default" "%CMDER_ROOT%\config\cmder_prompt_config.lua" | ||||
|         ) | ||||
|  | ||||
|         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" | ||||
|     ) | ||||
|     "%CMDER_ROOT%\vendor\clink\clink_%clink_architecture%.exe" inject --quiet --profile "%CMDER_CONFIG_DIR%" --scripts "%CMDER_ROOT%\vendor" | ||||
|  | ||||
|     if errorlevel 1 ( | ||||
|         %print_error% "Failed to initialize Clink with error code: %errorlevel%" | ||||
| @@ -361,11 +341,7 @@ if defined CMDER_USER_CONFIG ( | ||||
| :: must also be self executing, see '.\user_aliases.cmd.default', | ||||
| :: and be in profile.d folder. | ||||
| if not defined user_aliases ( | ||||
|     if defined CMDER_USER_CONFIG ( | ||||
|         set "user_aliases=%CMDER_USER_CONFIG%\user_aliases.cmd" | ||||
|     ) else ( | ||||
|         set "user_aliases=%CMDER_ROOT%\config\user_aliases.cmd" | ||||
|     ) | ||||
|     set "user_aliases=%CMDER_CONFIG_DIR%\user_aliases.cmd" | ||||
| ) | ||||
|  | ||||
| if "%CMDER_ALIASES%" == "1" ( | ||||
|   | ||||
							
								
								
									
										31
									
								
								vendor/profile.ps1
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										31
									
								
								vendor/profile.ps1
									
									
									
									
										vendored
									
									
								
							| @@ -1,5 +1,6 @@ | ||||
| # Init Script for PowerShell | ||||
| # Created as part of cmder project | ||||
| # Init Script for PowerShell | ||||
| # Created as part of Cmder project | ||||
| # This file must be saved using UTF-8 with BOM encoding for prompt to work correctly. | ||||
|  | ||||
| # !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED | ||||
| # !!! Use "%CMDER_ROOT%\config\user_profile.ps1" to add your own startup commands | ||||
| @@ -16,8 +17,8 @@ if ($ENV:CMDER_USER_CONFIG) { | ||||
| } | ||||
|  | ||||
| # We do this for Powershell as Admin Sessions because CMDER_ROOT is not being set. | ||||
| if ($null -eq $ENV:CMDER_ROOT) { | ||||
|     if (-Not($null -eq $ENV:ConEmuDir)) { | ||||
| if (!$ENV:CMDER_ROOT) { | ||||
|     if ($ENV:ConEmuDir) { | ||||
|         $ENV:CMDER_ROOT = Resolve-Path($ENV:ConEmuDir + "\..\..") | ||||
|     } else { | ||||
|         $ENV:CMDER_ROOT = Resolve-Path($PSScriptRoot + "\..") | ||||
| @@ -25,7 +26,7 @@ if ($null -eq $ENV:CMDER_ROOT) { | ||||
| } | ||||
|  | ||||
| # Remove trailing '\' | ||||
| $ENV:CMDER_ROOT = ($ENV:CMDER_ROOT).trimend("\") | ||||
| $ENV:CMDER_ROOT = ($ENV:CMDER_ROOT).TrimEnd("\") | ||||
|  | ||||
| # Do not load bundled PsGet if a module installer is already available | ||||
| # -> recent PowerShell versions include PowerShellGet out of the box | ||||
| @@ -85,7 +86,7 @@ if (-Not ($null -eq $ENV:GIT_INSTALL_ROOT)) { | ||||
|     $env:Path = Configure-Git -gitRoot "$ENV:GIT_INSTALL_ROOT" -gitType $ENV:GIT_INSTALL_TYPE -gitPathUser $gitPathUser | ||||
| } | ||||
|  | ||||
| if (Get-Command -Name "vim" -ErrorAction silentlycontinue) { | ||||
| if (Get-Command -Name "vim" -ErrorAction SilentlyContinue) { | ||||
|     New-Alias -name "vi" -value vim | ||||
| } | ||||
|  | ||||
| @@ -98,10 +99,15 @@ $env:gitLoaded = $false | ||||
| [ScriptBlock]$PrePrompt = {} | ||||
| [ScriptBlock]$PostPrompt = {} | ||||
| [ScriptBlock]$CmderPrompt = { | ||||
|     $identity = [Security.Principal.WindowsIdentity]::GetCurrent() | ||||
|     $principal = [Security.Principal.WindowsPrincipal] $identity | ||||
|     $adminRole = [Security.Principal.WindowsBuiltInRole]::Administrator | ||||
|     $color = "White" | ||||
|     if ($principal.IsInRole($adminRole)) { $color = "Red" } | ||||
|     $Host.UI.RawUI.ForegroundColor = "White" | ||||
|     Write-Host -NoNewline "PS " | ||||
|     Microsoft.PowerShell.Utility\Write-Host -NoNewline "PS " -ForegroundColor $color | ||||
|     Microsoft.PowerShell.Utility\Write-Host $pwd.ProviderPath -NoNewLine -ForegroundColor Green | ||||
|     if (Get-Command git -erroraction silentlycontinue) { | ||||
|     if (Get-Command git -ErrorAction SilentlyContinue) { | ||||
|         checkGit($pwd.ProviderPath) | ||||
|     } | ||||
|     Microsoft.PowerShell.Utility\Write-Host "`nλ" -NoNewLine -ForegroundColor "DarkGray" | ||||
| @@ -170,7 +176,7 @@ if ($ENV:CMDER_USER_CONFIG) { | ||||
| } | ||||
|  | ||||
| if (-Not (Test-Path $CmderUserProfilePath)) { | ||||
|     Write-Host -BackgroundColor Darkgreen -ForegroundColor White "First Run: Creating user startup file: $CmderUserProfilePath" | ||||
|     Write-Host -BackgroundColor DarkGreen -ForegroundColor White "First Run: Creating user startup file: $CmderUserProfilePath" | ||||
|     Copy-Item "$env:CMDER_ROOT\vendor\user_profile.ps1.default" -Destination $CmderUserProfilePath | ||||
| } | ||||
|  | ||||
| @@ -190,8 +196,13 @@ if ( $(Get-Command prompt).Definition -match 'PS \$\(\$executionContext.SessionS | ||||
|     Custom prompt functions are loaded in as constants to get the same behaviour | ||||
|     #> | ||||
|     [ScriptBlock]$Prompt = { | ||||
|         $lastSUCCESS = $? | ||||
|         $realLASTEXITCODE = $LASTEXITCODE | ||||
|         $host.UI.RawUI.WindowTitle = Microsoft.PowerShell.Management\Split-Path $pwd.ProviderPath -Leaf | ||||
|         Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x200B)`r$([char]0x1B)[K" | ||||
|         if ($lastSUCCESS -Or ($LASTEXITCODE -ne 0)) { | ||||
|             Microsoft.PowerShell.Utility\Write-Host | ||||
|         } | ||||
|         PrePrompt | Microsoft.PowerShell.Utility\Write-Host -NoNewline | ||||
|         CmderPrompt | ||||
|         PostPrompt | Microsoft.PowerShell.Utility\Write-Host -NoNewline | ||||
| @@ -216,4 +227,4 @@ if ( $(Get-Command prompt).Definition -match 'PS \$\(\$executionContext.SessionS | ||||
| } | ||||
|  | ||||
| $CMDER_INIT_END = $(Get-Date -UFormat %s) | ||||
| # Write-Host "Elapsed Time: $(get-Date) `($($CMDER_INIT_END - $CMDER_INIT_START) total`)" | ||||
| Write-Verbose "Elapsed Time: $(get-Date) `($($CMDER_INIT_END - $CMDER_INIT_START) total`)" | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/user_aliases.cmd.default
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/user_aliases.cmd.default
									
									
									
									
										vendored
									
									
								
							| @@ -6,6 +6,7 @@ | ||||
| ;= Add aliases below here | ||||
| e.=explorer . | ||||
| gl=git log --oneline --all --graph --decorate  $* | ||||
| l=ls --show-control-chars -CFGNhp --color --ignore={"NTUSER.DAT*","ntuser.dat*"} $* | ||||
| ls=ls --show-control-chars -F --color $* | ||||
| pwd=cd | ||||
| clear=cls | ||||
|   | ||||
		Reference in New Issue
	
	Block a user