The string.gsub() function in Lua always uses Lua patterns (which are similar to regular expressions). Cmder's custom prompt wants to perform simple plain text find/replace operations on strings. string.gsub() is the right Lua function for that, but since it always uses Lua patterns it's necessary to apply escaping to the input strings otherwise they can get misinterpreted and cause runtime errors.
For example, if the current working directory name contains a percent sign, such as literally "My%20Home".
This change fixes that. It introduces a helper function gsub_plain() which behaves like string.gsub() but applies appropriate escaping to convert the plain text input strings into the corresponding Lua patterns so that it can achieve plain text find/replace operations.
It also introduces separate helper functions for escaping the find and replace parameters for string.gsub(), since they have different escaping rules.
The
string.gsub()
function in Lua always uses Lua patterns (which are similar to regular expressions). Cmder's custom prompt wants to perform simple plain text find/replace operations on strings.string.gsub()
is the right Lua function for that, but since it always uses Lua patterns it's necessary to apply escaping to the input strings otherwise they can get misinterpreted and cause runtime errors.For example, if the current working directory name contains a percent sign, such as literally "My%20Home".
This change fixes that. It introduces a helper function
gsub_plain()
which behaves likestring.gsub()
but applies appropriate escaping to convert the plain text input strings into the corresponding Lua patterns so that it can achieve plain text find/replace operations.It also introduces separate helper functions for escaping the
find
andreplace
parameters forstring.gsub()
, since they have different escaping rules.