mirror of
				https://github.com/cmderdev/cmder.git
				synced 2025-10-31 01:12:11 +08:00 
			
		
		
		
	Allow scripts to disable part of the Cmder prompt.
The Cmder prompt normally includes version control info, which involves running some potentially expensive commands. The cmder-powerline-prompt project (and maybe other projects) replaces the Cmder prompt and runs the same potentially expensive commands -- so expensive commands get run twice! This change makes it possible for the user and/or other scripts to disable the version control part of the built-in Cmder prompt. https://github.com/chrisant996/cmder-powerline-prompt
This commit is contained in:
		
							
								
								
									
										34
									
								
								vendor/clink.lua
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										34
									
								
								vendor/clink.lua
									
									
									
									
										vendored
									
									
								
							| @@ -85,6 +85,13 @@ else | |||||||
| end | end | ||||||
|  |  | ||||||
|  |  | ||||||
|  | --- | ||||||
|  | -- Global variable so other Lua scripts can detect whether they're in a Cmder | ||||||
|  | -- shell session. | ||||||
|  | --- | ||||||
|  | CMDER_SESSION = true | ||||||
|  |  | ||||||
|  |  | ||||||
| --- | --- | ||||||
| -- Setting the prompt in clink means that commands which rewrite the prompt do | -- Setting the prompt in clink means that commands which rewrite the prompt do | ||||||
| -- not destroy our own prompt. It also means that started cmds (or batch files | -- not destroy our own prompt. It also means that started cmds (or batch files | ||||||
| @@ -135,6 +142,10 @@ local function set_prompt_filter() | |||||||
|       prompt_singleLine = false |       prompt_singleLine = false | ||||||
|     end |     end | ||||||
|  |  | ||||||
|  |     if prompt_includeVersionControl == nil then | ||||||
|  |       prompt_includeVersionControl = true | ||||||
|  |     end | ||||||
|  |  | ||||||
|     if prompt_type == 'folder' then |     if prompt_type == 'folder' then | ||||||
|         cwd = get_folder_name(cwd) |         cwd = get_folder_name(cwd) | ||||||
|     end |     end | ||||||
| @@ -155,7 +166,12 @@ local function set_prompt_filter() | |||||||
|  |  | ||||||
|     if env ~= nil then env = "("..env..") " else env = "" end |     if env ~= nil then env = "("..env..") " else env = "" end | ||||||
|  |  | ||||||
|     prompt = get_uah_color() .. "{uah}" .. get_cwd_color() .. "{cwd}{git}{hg}{svn}" .. get_lamb_color() .. cr .. "{lamb} \x1b[0m" |     if uah ~= '' then uah = get_uah_color() .. uah end | ||||||
|  |     if cwd ~= '' then cwd = get_cwd_color() .. cwd end | ||||||
|  |  | ||||||
|  |     local version_control = prompt_includeVersionControl and "{git}{hg}{svn}" or "" | ||||||
|  |  | ||||||
|  |     prompt = "{uah}{cwd}" .. version_control .. get_lamb_color() .. cr .. "{lamb} \x1b[0m" | ||||||
|     prompt = string.gsub(prompt, "{uah}", uah) |     prompt = string.gsub(prompt, "{uah}", uah) | ||||||
|     prompt = string.gsub(prompt, "{cwd}", cwd) |     prompt = string.gsub(prompt, "{cwd}", cwd) | ||||||
|     prompt = string.gsub(prompt, "{env}", env) |     prompt = string.gsub(prompt, "{env}", env) | ||||||
| @@ -430,6 +446,11 @@ end | |||||||
|  |  | ||||||
| local function git_prompt_filter() | local function git_prompt_filter() | ||||||
|  |  | ||||||
|  |     -- Don't do any git processing if the prompt doesn't want to show git info. | ||||||
|  |     if not clink.prompt.value:find("{git}") then | ||||||
|  |         return false | ||||||
|  |     end | ||||||
|  |  | ||||||
|     -- Colors for git status |     -- Colors for git status | ||||||
|     local colors = { |     local colors = { | ||||||
|         clean = get_clean_color(), |         clean = get_clean_color(), | ||||||
| @@ -484,6 +505,11 @@ end | |||||||
|  |  | ||||||
| local function hg_prompt_filter() | local function hg_prompt_filter() | ||||||
|  |  | ||||||
|  |     -- Don't do any hg processing if the prompt doesn't want to show hg info. | ||||||
|  |     if not clink.prompt.value:find("{hg}") then | ||||||
|  |         return false | ||||||
|  |     end | ||||||
|  |  | ||||||
|     local result = "" |     local result = "" | ||||||
|  |  | ||||||
|     local hg_dir = get_hg_dir() |     local hg_dir = get_hg_dir() | ||||||
| @@ -523,6 +549,12 @@ local function hg_prompt_filter() | |||||||
| end | end | ||||||
|  |  | ||||||
| local function svn_prompt_filter() | local function svn_prompt_filter() | ||||||
|  |  | ||||||
|  |     -- Don't do any svn processing if the prompt doesn't want to show svn info. | ||||||
|  |     if not clink.prompt.value:find("{svn}") then | ||||||
|  |         return false | ||||||
|  |     end | ||||||
|  |  | ||||||
|     -- Colors for svn status |     -- Colors for svn status | ||||||
|     local colors = { |     local colors = { | ||||||
|         clean = get_clean_color(), |         clean = get_clean_color(), | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								vendor/cmder_prompt_config.lua.default
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/cmder_prompt_config.lua.default
									
									
									
									
										vendored
									
									
								
							| @@ -34,6 +34,10 @@ prompt_singleLine = false | |||||||
|  -- NOTE: This only takes effect if using Clink v1.2.10 or higher. |  -- NOTE: This only takes effect if using Clink v1.2.10 or higher. | ||||||
| prompt_overrideGitStatusOptIn = false | prompt_overrideGitStatusOptIn = false | ||||||
|  |  | ||||||
|  | -- OPTIONAL. If true then Cmder includes git, mercurial, and subversion status in the prompt. | ||||||
|  |  -- default is true | ||||||
|  | prompt_includeVersionControl = true | ||||||
|  |  | ||||||
| -- Prompt Attributes | -- Prompt Attributes | ||||||
| -- | -- | ||||||
| -- Colors | -- Colors | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user