Como mostrar uma diferença entre dois buffers com diferenças de nível de caractere

20

Quando dois buffers são comparados quanto a diferenças, M-x ediff-buffersnão indica os caracteres específicos que foram alterados em uma palavra ( por exemplo, diferenças no nível do caractere). A maioria das ferramentas de comparação modernas mostrará as diferenças dentro de uma palavra.

O Emacs parece estar perdendo esse recurso importante (ou obviamente útil?) Por padrão. Como posso fazer o Emacs exibir as diferenças por caractere?

Atualizar Aqui M-x ediff-buffers diff1 diff2, usando emacs -Qpara garantir que meu tema não esteja interferindo: insira a descrição da imagem aqui

Aqui está o mesmo texto colado no Meld: insira a descrição da imagem aqui

modulitos
fonte
Parece que esse problema está relacionado ao tema que você está usando. No Emacs baunilha (24.4), as diferenças entre linhas individuais são destacadas. Você pode verificar isso iniciando Emacs via emacs -Qe chamando ediff-bufferson diff1e diff2como faria normalmente.
itsjeyd
Eu tentei correr com emacs -Q, adicionado acima. Além disso, modifiquei minha pergunta para abordar diferenças de nível de caractere, em vez de diferenças de linha .
Modulitos

Respostas:

9
(setq-default ediff-forward-word-function 'forward-char)
Joakim Hårsman
fonte
6

Esse recurso é chamado de "refino" em Ediff. Você pode pressionar *para refinar o pedaço atual ou @ativar o refinamento automático sempre que mudar para um pedaço diferente.

legoscia
fonte
1
Modifiquei minha pergunta para abordar as diferenças de nível de caractere, em vez das diferenças intra-linha . É possível fazer o Emacs mostrar as diferenças dentro de uma palavra?
Modulitos