Magit: Como mostrar diferenças dentro de linhas

13

Eu tenho um arquivo, faço algumas alterações. Aqui, como o SmartGit mostra diferenças.

smartgit

Como você pode ver, mostra onde está a diferença dentro da linha. Muda o fundo para vermelho na posição concreta. E é muito bom. Não preciso gastar tempo para encontrar diferenças. Eu imediatamente vejo onde está a diferença.

Agora, o que parece no Magit:

insira a descrição da imagem aqui

Como você pode ver, Magit diz que a diferença estava na linha TODA. Não está mostrando onde está a diferença dentro da linha. Então, preciso descobrir onde está a diferença manualmente. Eu preciso fazer isso o tempo todo. Não é muito comparável. Suponha que eu tenha diferenças em 20 linhas. Preciso gastar muito tempo para descobrir o que realmente mudou. Não é muito bom.

O magit pode mostrar diferenças na coluna real onde está a mudança? Como no SmartGit.

a_subscriber
fonte

Respostas:

2

Se você deseja armazenar isso na sua configuração, como eu, basta adicionar

(setq magit-diff-refine-hunk (quote all))

para o seu .emacs.d/init.el


Isso foi inspirado na resposta de phils .

loki
fonte
16

M-x customize-option RET magit-diff-refine-hunk RET

Consulte também o magit-diff-toggle-refine-hunkcomando, vinculado a Dt, que você pode usar para definir o comportamento no buffer atual. Use DC-utpara ativar o refinamento para todos os pedaços no buffer; caso contrário, apenas os refinamentos para o pedaço selecionado atualmente serão exibidos a qualquer momento (atualizando conforme você se move entre blocos).

Para configurar a aparência das regiões 'refinados' do diff, uso M-x customize-facepara os diff-refine-added, diff-refine-changede diff-refine-removedrostos.

phils
fonte
1

Para que o diff das palavras funcione, o magit precisa poder usar o diffexecutável.

Portanto, verifique se M-x ielm RET (executable-find "diff") RETnão retorna nil. Se retornar, niladicione o caminho para a pasta que contém o seu executável diff na exec-pathvariável comM-x ielm RET (add-to-list 'exec-path "c:/Program Files/Git/usr/bin") RET

Em seguida, você precisa garantir que o magit esteja realmente usando esse diffexecutável. Para isso, insira um buffer de status magit, pressione De verifique se -x Disallow external diff drivers (--no-ext-diff)está desativado. Caso contrário, desative-o com -x, defina-o como padrão se salve os padrões com Dw.

Depois disso, você pode Dtalternar a magit-diff-refine-hunkopção do seu buffer atual ou seguir esta resposta por phils para tornar essa configuração mais permanente.

Raposa voadora
fonte
0

Tente ediff-toggle-ignore-caseou compare-ignore-casevariável. Meu palpite é que seu mecanismo diferencial está ignorando o caso. Também pode estar nas opções diff (não sei quais são as configurações).

Atman50
fonte