- Notifications
You must be signed in to change notification settings - Fork2.1k
Fix #2859; script error when cwd name contains%#2861
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Merged
Merged
Uh oh!
There was an error while loading.Please reload this page.
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
The `string.gsub()` function in Lua always uses Lua patterns (which aresimilar to regular expressions). Cmder's custom prompt wants to performsimple plain text find/replace operations on strings. `string.gsub()`is the right Lua function for that, but since it always uses Luapatterns it's necessary to apply escaping to the input strings otherwisethey can get misinterpreted and cause runtime errors.For example, if the current working directory name contains a percentsign, 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 toconvert the plain text input strings into the corresponding Luapatterns 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 differentescaping rules.
Closed
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
findandreplaceparameters forstring.gsub(), since they have different escaping rules.