Comby Versions Save

A code rewrite tool for structural search and replace that supports ~every language.

1.2.2

3 years ago
  • Minor description change for opam packaging
  • Update various tests to run sequentially

1.2.1

3 years ago
  • Updates dependencies to work with OCaml 4.12 and creates opam release candidate.

1.2.0

3 years ago
  • adds ability to build on arm systems
  • adds -parany option to use an alternative parallel library. -parany is the default parallel library on arm systems
  • undos recognizing regex delimiters in JS and TS like /.../ because this may conflict with division syntax

1.1.0

3 years ago
  • adds -bound-count flag

Stop running when at least num matches are found (possibly more are returned for parallel jobs).

  • avoids writing to file system if a file is unchanged

  • bug fix: don't parse for comments inside strings

  • bug fix: don't assume single quotes in Haskell are balanced

  • adds additional delimiters to interpret code blocks in Julia

  • adds support for Coq, Zig, Solidity, and Move languages by adding basic definitions

  • bug fix where strings should have been escaped in -match-only JSON output

  • bug fix where carriage returns\r were not escaped in match output

  • fresh variable generation via :[id()] in -sequential mode increment sequentially

  • add experimental nested matching via where nested

1.0.0

3 years ago

Breaking change:

  • :[hole] will only match across newlines If they are inside delimiters for a language. Otherwise, it will match at most to the end of line, rather than across multiple lines or to the end of file. To disable this behavior and force matching across newlines for any language, add the flag -match-newline-at-toplevel. There is one exception to this change: The following languages/file extensions are unaffected and will continue to match across newlines outside delimiters:
    • .tsx, .jsx, .html, .xml, .tex, .txt This is because tags like <p>...</p> are not yet considered proper delimiters, and other textual inputs do not typically contain delimiters.

Additions:

  • The ellipses ... alias can now be used instead of :[_] in rules. Example:
where match :[args] {                                                                                                                                                                                                                                                                                                                                                                                      
| "..., foo, ..." -> true                                                                                                                                                                                      
| "..." -> false                                                                                                                                                                                               
}

0.18.4

3 years ago
  • Unbreaks a breaking change introduced in 0.18.0. It undos:
    • Simplify matching for :[hole]: If they are not inside nested delimiters, only match until it's suffix, or end of line (rather than end of file).
  • The above behavior can be set with the flag -cut-off-newline

0.18.3

3 years ago
  • ... in templates alias to :[_]

0.18.2

3 years ago
  • Make identifier optional in regex holes.

0.18.1

3 years ago
  • Fixes a regression where paths would not be matched in zip files.

0.18.0

3 years ago
  • Add support for regex holes
  • Fuzzy match whitespace inside strings
  • Simplify matching for :[hole]: If they are not inside nested delimiters, only match until it's suffix, or end of line (rather than end of file).
  • Fix: comments in template imply whitespace
  • Add definitions for GraphQL, Dhall, JSONC