// Required parameters: // scope: scope you would like to target // // Optional parameters: // find: regex description that is to be applied to the scope // to qualify. Also can be used to find and replace // within the found scope. Default is None. // replace: description of what you would like to replace within the scope. // Default value is "\\0". // literal: Boolean setting to define whether the find and replace is literal or not. // Default is false. // greedy_replace: Boolean setting to define whether regex search is greedy or not. Default is true. // greedy_scope: Boolean setting to define whether scope search is greedy or not. Default is true. // case: Boolean setting to define whether regex search is case sensitive. Default is true. // multi_pass_regex:Boolean setting to define whether there will be multiple sweeps on the scope region // region to find and replace all instances of the regex, when regex cannot be formatted // to find all instances in a greedy fashion. Default is false. { "replacements": { "remove_comments": { "scope": "comment", "find" : "(([^\\n\\r]*)(\\r\\n|\\n))*([^\\n\\r]+)", "replace": "", "greedy_replace": true }

Once you have replacements defined, there are a number of ways you can run a sequence. One way is to create a command in the command palette by editing/creating a Default.sublime-commands in your User folder and adding your command. RegReplace comes with its own Default.sublime-commands file and includes some examples showing simple replacement commands and an example showing the chaining of multiple replacements.

View Without ReplacingIf you would simply like to view what the sequence would find without replacing, you can construct a command to highlight targets without replacing them (each pass could affect the end result, but this just shows all passes without predicting replaces).

A prompt will appear allowing you to replace the highlighted regions. Regions will be cleared on cancel.

If for any reason the highlights do not get cleared, you can simply run the RegReplace: Clear Highlights command from the command palette.

Highlight color and style can be changed in the settings file.

Override ActionsIf instead of replacing you would like to do something else, you can override the action. Actions are defined in commands by setting the action parameter. Some actions may require additional parameters be set in the options parameter. See examples below.

Input Sequencer order:- unmark=key,scope,style: (replacements do not need to be defined)

Multi-PassSometimes a regular expression cannot be made to find all instances in one pass. In this case, you can use the multi-pass option.

Multi-pass cannot be paired with override actions (it will be ignored), but it can be paired with find_only. Multi-pass will sweep the file repeatedly until all instances are found and replaced. To protect against poorly constructed mult-pass regex looping forever, there is a default max sweep threshold that will cause the sequence to kick out if it is reached. This threshold can be tweaked in the settings file.

Regex Input SequencerIf you haven't created a command yet, but you want to quickly run a sequence, you can search for Reg Replace: RegEx Input Sequencer in the command palette and launch an input panel where you can enter the name of replacements separated by commas and press enter.

If you only want to highlight the searches and not replace them, precede the sequence with ?:. This will highlight the regions it can find to give you an idea of what regions will be targeted. Afterwards, a panel will pop up allowing you to replace if you choose.

Also you can override the replace action with other actions like "fold" or "unfold" were the action precedes the sequence fold:. If you would like to highlight the selections only and then optionally perform the replace/action, you can precede the sequence like this ?fold:.

Some actions might have parameters. In this case, you can follow the actions with an equal sign and the paramters separated by commas. mark=key,string,outline:. If some parameters are optional, you can leave them out: ?mark=key,string or ?mark=key,,outline:. The important thing is that the parameters are in the order outlined by the command.

If multiple sweeps are needed to find and replace all targets, you can use multi-pass (explained later) using +:. Multi-pass cannot be used with action overrides, but it can be used with highlighting searches ?+:.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Changelog

Version 1.2.1- Account for people still on the last offical beta since view.folded_regions() is not included in that release. This method of unfold will be deprecated on new ST2 offical beta release.

Version 1.2- Added support for new API command view.unfold([regions]); old method is a fallback for official beta and will be deprecated on new ST2 official beta release

Version 0.9- Allow multipass on a scope region with regex with new "multi_pass_regex" parameter

Version 0.8- New "mark" and "unmark" actions- Return error dialog showing regex issue- Add support for scope search with regex find and replace in scope region- Smarter folding of regex regions for "fold" action- Small tweak to non-greedy algorithm- Change default of optional replace parameter to "\\\\0"; do not delete by default, leave unchanged by default.- Allow spaces in the "Regex Input Sequencer"

Version 0.7- Replace command examples now commented out by default- RegReplace Commands and Settings now available via preference menu and command palette

Version 0.6- Add multi-pass sweeps- Report bad actions

Version 0.5- Make replace an optional parameter defaulted to "" (empty string)- Allow override actions to be used instead of replace: fold and unfold

Version 0.4- Add support for "literal" boolean parameter for literal find and replaces- Allow the Regex Input Sequencer panel to highlight only by preceding the sequence with "?:"

Version 0.3- Allow option for highlighting find targets without replacing. Show prompt for replacing after highlighting.- Add clear command to allow clearing of all highlights if for any reason view loses focus and highlights aren't cleared on cancel.

Version 0.2- "greedy" and "case" parameters are now optional and set to "true" by default

Version 0.1- Initial release

Last edited by facelessuser on Sat Jan 28, 2012 4:00 pm, edited 9 times in total.

If you have any suggestions, comments, or bugs, let me know. Also, if you have some good regex tasks that you think people in general would find useful, post them here and I may put them in the plugin by default.

If you would simply like to view what the sequence would fine without replacing, you can construct a command to highlight targets without replacing them (each pass could affect the end result, but this just shows all passes without predicting replaces).