mirror of
https://github.com/cmderdev/cmder.git
synced 2024-11-10 17:59:11 +08:00
Merge pull request #1070 from janschulz/unicode_path_prompt
Parse the original prompt for cwd and env names
This commit is contained in:
commit
832c1991e4
30
vendor/clink.lua
vendored
30
vendor/clink.lua
vendored
@ -18,12 +18,34 @@ dofile(clink_lua_file)
|
||||
-- which echo) don't get the ugly '{lamb}' shown.
|
||||
---
|
||||
function set_prompt_filter()
|
||||
-- get_cwd() is differently encoded than the clink.prompt.value, so everything other than
|
||||
-- pure ASCII will get garbled. So try to parse the current directory from the original prompt
|
||||
-- and only if that doesn't work, use get_cwd() directly.
|
||||
-- The matching relies on the default prompt which ends in X:\PATH\PATH>
|
||||
-- (no network path possible here!)
|
||||
local old_prompt = clink.prompt.value
|
||||
local cwd = old_prompt:match('.*(.:[^>]*)>')
|
||||
if cwd == nil then cwd = clink.get_cwd() end
|
||||
|
||||
-- environment systems like pythons virtualenv change the PROMPT and usually
|
||||
-- set some variable. But the variables are differently named and we would never
|
||||
-- get them all, so try to parse the env name out of the PROMPT.
|
||||
-- envs are usually put in round or square parentheses and before the old prompt
|
||||
local env = old_prompt:match('.*%(([^%)]+)%).+:')
|
||||
-- also check for square brackets
|
||||
if env == nil then env = old_prompt:match('.*%[([^%]]+)%].+:') end
|
||||
|
||||
-- build our own prompt
|
||||
-- orig: $E[1;32;40m$P$S{git}{hg}$S$_$E[1;30;40m{lamb}$S$E[0m
|
||||
-- color codes: "\x1b[1;37;40m"
|
||||
cwd = clink.get_cwd()
|
||||
prompt = "\x1b[1;32;40m{cwd} {git}{hg} \n\x1b[1;30;40m{lamb} \x1b[0m"
|
||||
new_value = string.gsub(prompt, "{cwd}", cwd)
|
||||
clink.prompt.value = string.gsub(new_value, "{lamb}", "λ")
|
||||
local cmder_prompt = "\x1b[1;32;40m{cwd} {git}{hg} \n\x1b[1;30;40m{lamb} \x1b[0m"
|
||||
cmder_prompt = string.gsub(cmder_prompt, "{cwd}", cwd)
|
||||
if env == nil then
|
||||
lambda = "λ"
|
||||
else
|
||||
lambda = "("..env..") λ"
|
||||
end
|
||||
clink.prompt.value = string.gsub(cmder_prompt, "{lamb}", lambda)
|
||||
end
|
||||
|
||||
---
|
||||
|
Loading…
Reference in New Issue
Block a user