Mesclagem com reconhecimento de contexto?

Existe alguma ferramenta diff / mesclagem para linguagens de programação que funcione com reconhecimento de sintaxe (como a XML Diff Tool), fazendo mais do que comparar linha por linha (e opcionalmente ignorando o espaço em branco).

Estou interessado em um programa que segue a sintaxe e os delimitadores da linguagem, sugerindo alterações sem interromper a correção sintática ou agrupar instruções separadas em várias linhas. O comportamento de exemplo seria:

* ao encontrar umif(){ que introduz um nível extra de aninhamento agrupa automaticamente a chave de fechamento} várias linhas abaixo com ele.)

* mantenha os elementos de sintaxe correspondentes juntos, evite bobagens, como remover um bloco tende a criar:

 int function_A()
 { 
     int ret;
     ret = something;
     ret += something_else;

      return ret;
  }

  int function_B()
  { 
     if(valid)
     {
         int ret;
         ret = something;
         ret += something_else;

          return ret;
      }

       else return -1;
  }

Pessoalmente, eu adoraria encontrar um software capaz de lidar com a sintaxe C ++, mas conhecer soluções para outras linguagens também seria interessante.

questionAnswers(8)

yourAnswerToTheQuestion