Sublime Forum

RegReplace Plugin

#29

One more small update

Version 1.4

  • Allow on save regex sequences to define target files with regex as well as unix file name pattern matching
  • Add example “remove_dangling_commas” replacement definition
  • Add example on_save sequence using file regex pattern to remove dangling commas from sublime json files

Decided to allow “on_save_sequences” to use unix file name pattern matching and/or regex (you can use either or both).

Example:

"on_save_sequences": // An example on_save event that removes dangling commas from json files // - file_regex: an array of regex strings that must match the file for the sequence to be applied // - case: regex case sensitivity (true|false) false is default (this setting is optional) // - file_pattern: an array of file patterns that must match for the sequence to be applied // - sequence: an array of replacement definitions to be applied on saving the file { "file_regex": ".*\\.sublime-(settings|commands|menu|keymap|mousemap|theme|build|project|completions|commands)"], "file_pattern": "*.json"], "sequence": "remove_json_dangling_commas"] },

0 Likes

#30

Version 1.5.1

Now allows you to specify sequences to that only highlight instead of replace on save. Also added the ability to have the on save replacement sequences use multipass if desired. Highlight on save sequences and replace on save sequences can coexist; replacements are run first, and then highlights are performed. The read me gives more details.

0 Likes

#31

id like to excuse myself for not reading the instructions word by word and ask if there is an option to apply RegReplace commands to selection(s).

0 Likes

#32

Not yet…but there can be. I will have to look into.

0 Likes

#33

Should have regex under selection out fairly soon day or so. The code is pretty much done (it was pretty simple). I think I will just have a setting that you can enable, and then after that, if you a something selected, it will default to search selection only. If you have no selections (cursors are fine), then it will search the whole document.

It is pretty straight forward. If you are doing the special replacements that first target a scope and then apply the regex to that scope, you will have to ensure the entire scope is under the selection (I might change this in the future).

I might have it out by tomorrow if I am not feeling too lazy.

0 Likes

#34

thanks. :smile:
i was thinking exactly the same about the apllication.

0 Likes

#35

Finally finished this.

Version 1.6

  • Save under selection added (limits searches to selections if and only if selection exists)
  • Cleanup “highlight on save regions” when performing other regex searches

Replace Only Under Selection(s)
Sometimes you only want to search under selections. This can be done by enabling the selection_only setting in the settings file. By enabling this setting, regex targets will be limited to the current selection if and only if a selection exists. Auto replace/highlight on save events ignore this setting. If you have a command that you wish to ignore this setting, just set the no_selection argument to true. Highlight style will be forced to underline under selections if find_only is set to ensure they will show up.

0 Likes

#36

Is it possible to fold (rather than replace) on_save?

0 Likes

#37

check the first post for details.

0 Likes

#38

Though RegReplace does support fold, unfold, mark, unmark, I am not sure it is all supported via “on_save”. A matter of fact, I am pretty sure it isn’t…but I could add it. RegReplace is a plugin that I plan on spending some more time on some time soon. It was thrown together pretty quick to fulfill my basic needs, and while it works well for what I use it for, it has some gaps in features etc. and has some areas that could use better polish.

If you hop on github and create an issue for allowing for fold on save, I will try and add it sometime soon.

0 Likes

#39

I added an issue to github. Totally no rush.

I was very surprised to find RegReplace supported folding matches.

0 Likes

#40

[quote=“quodlibet”]I added an issue to github. Totally no rush.

I was very surprised to find RegReplace supported folding matches.[/quote]

I probably use terms like “soon” too freely…it is in my queue though :wink:.

I wanted to be able to fold all comments, so I added the fold/unfold a while ago…

0 Likes

#41

I’m always hesitant to ask you for new features – it feels like enabling an addict :smile:

(I am referring to the insane speed with which you respond to both messages and bugs & suggestions.)

[quote=“facelessuser”]
I wanted to be able to fold all comments, so I added the fold/unfold a while ago…[/quote]

I’m tinkering with a todo list (of all things!) and I want to fold some meta-data, but the gist is the same. Because I have a “nervous” Ctrl+S, it seemed reasonable (?) to use “on_save” as a trigger for this. This is such a niche thing.

0 Likes

#42

I’ve created the following, but nothing happens.

In the “reg_replace.sublime-settings”:

// CONVERT TO LESS - STEPH
“lessrewrite_width”: {
“find”: “(\t*)^-]\bwidth\b: (-?[0-9]*%|-?[0-9]px|auto|-?[0-9]);”,
“replace”: “$1.w($2);”
}

in the “Default.sublime-commands”:

// Convert rewrite CSS to LESS - Steph
{
“caption”: “Reg Replace: CSS to LESS”,
“command”: “reg_replace”,
“args”: {“replacements”: “lessrewrite_width”]}
},

I thought I did it correctly, but what am I missing?

0 Likes

#43

Please give me a snippet of example code and the description of what you want to happen.

0 Likes

#44

I want to use the RegEx in the replace to change this:

 [code]width: 250px;[/code]

to this:

[code].w(250px);[/code]

Once I get one working, my goal is to chain a number of them together so that I can convert a whole document instead of spending time inputing all the RegEx piece by piece.
I’m attaching the LESS document I’m trying to run this on, and the RegReplace files I modified.
RegReplace.zip (8.15 KB)

0 Likes

#45

Two things. Python uses \1 instead of $1. And your regex is in a string so escape literal backslashes.

[pre=#2D2D2D] // CONVERT TO LESS - STEPH
“lessrewrite_width”: {
“find”: “(\t*)^-]\bwidth\b: (-?[0-9]*%|-?[0-9]px|auto|-?[0-9]);”,
“replace”: “\1.w(\2);”
}[/pre]

0 Likes

#46

Thanks for the info about the RegEx, I didn’t realize it was Python.

So I updated my code with your suggestion, but nothing happens when I run it from the Command Palette, or am I supposed to run it from somewhere else?

0 Likes

#47

I verified the code before I posted; that is why I asked for an example.

I did not run it on the ads_ca-fr_home.less you provided because there are no width attributes that need to be converted in it; therefore, it would do nothing. So if that is the file you are testing on, you are wasting your time because width is already converted in every instance in that file.

0 Likes

#48

Also, if you are still having issues, I may need some more info. It should work fine from command palette. But if it isn’t, you may be doing something odd, so I would need to know how you installed the package, are you editing the default version of the settings file, or did you copy it to user and edit that one. I may need to see your settings file to verify what you have done. Based on what you gave me, it should work, and did for me. If it isn’t working for you, then something else isn’t right on your end.

0 Likes