Como posso ativar o sinalizador `--verbose` por padrão na tela de confirmação do magit?

16

Agora, em vez de pressionar apenas ccno modo magit, tenho que pressionar c-vcsempre para ativar --verbose.

É possível ativá-lo por padrão?

Dogbert
fonte

Respostas:

17

Começando com v2.1.0, o Magit usa a biblioteca magit-popup.elpara implementar esses "buffers pop-up" ou "combinações de prefixo-infixo-sufixo". Apesar do nome, essa biblioteca pode ser usada por pacotes não relacionados ao Magit e, portanto, é disponibilizada como um pacote Elpa separado. Ele ainda tem seu próprio manual agora!

Os argumentos padrão agora podem ser definidos diretamente de um buffer pop-up. Para sempre usar --verboseao confirmar, faça o seguinte:

  1. c Mostrar o pop-up de confirmação
  2. - v Ligar --verbose
  3. C-x C-sSalve os argumentos atualmente definidos como padrões (na opção personalizada magit-commit-arguments)

Por padrão, todos os buffers pop-up terminam com uma seção chamada "Comandos comuns". Caso contrário, use C-tpara mostrá-lo. Você provavelmente não deseja ver essa seção o tempo todo e, portanto, deve definir magit-popup-show-common-commandscomo nil.

Obviamente, também é possível definir o valor de magit-commit-argumentse outras variáveis ​​usando a interface Personalizada setq, ou add-to-list. Mas eu recomendo isso, porque isso tornaria impossível alterar os padrões on-the-fly.

tarso
fonte
7

Tanto quanto posso dizer, o Magit não controla as opções "padrão", mas podemos fazê- lo "pressionar -v" toda vez que o buffer de confirmação aparecer:

(advice-add #'magit-key-mode-popup-committing :after
            (lambda ()
              (magit-key-mode-toggle-option (quote committing) "--verbose")))

Para descobrir qual função aconselhar, abri um magic-statusbuffer e pressionei C-h k c. Isso me levou a magit-key-mode-popup-committing. Então (com o buffer de confirmação ainda exibido), pressionei C-h k -vpara encontrar o lambdaformulário que o Magit chama quando você pressiona -vna janela de confirmação .

Atualização: escrevi esta resposta de forma independente, mas consulte Posso ter a opção git-log "--all" inicialmente selecionada? , a resposta dada lá e comentários para essa resposta.

Constantine
fonte
1
Isso é interessante! Obrigado por também explicar como você encontrou essas funções :)
Dogbert
@ Dogbert: por favor, veja o link na resposta atualizada se você gostaria de saber que outras pessoas pensavam nas opções padrão do Git não faz muito tempo. :-) (Eu não sei como eu perdi isso ontem.)
Constantine
4

Nas versões do magit que usam transitório (depois de fevereiro de 2019), defina o sinalizador e salve enquanto estiver no buffer transitório.

Portanto, para commit, a sequência de chaves seria algo como

C-x g # start magit
s # to stage changes
c # start commiting
-v # enable verbose
C-x C-s # Save the setting persistently across sessions
c # do the actual commit

Depois disso, da próxima vez que o commit for chamado, o verbose ainda será definido. (Você não precisa concluir a confirmação e pode sair depois de salvar com C-x C-s.)

O padrão real é salvo em um transient/diretório em .emacs.d/.

Consulte o manual transitório https://magit.vc/manual/transient.html#Saving-Values

mhb
fonte
0

Embora não seja exatamente o que você deseja (diff no seu buffer de confirmação), você pode definir o magit para expandir as diferenças faseadas na janela de status :

(setq magit-expand-staged-on-commit 'full)

O fluxo de trabalho magit sempre parece ser um buffer de status aberto e, em seguida, é aberto com um buffer de confirmação; você sempre termina com dois buffers exibidos. A configuração acima fará com que o segundo buffer (anteriormente não útil) mostre seu diff.

Você também pode usar tpara expandir apenas os cabeçalhos do diff (para mostrar os números das linhas):

(setq magit-expand-staged-on-commit t)

Enquanto escreve seu diff, você pode alternar para o buffer de status e usá-lo TABpara expandir (ou dobrar) os diffs.


Como alternativa, você pode usar C-c C-do buffer de confirmação para abrir outro buffer com um diff com magit-diff-staged. (Veja esta edição .)

idbrii
fonte
0

A partir da magitversão 2.1, você pode usar isso em sua configuração:

;; When commiting enable verbose mode by default.
(setq magit-commit-arguments (quote ("--verbose")))
Maiku Mori
fonte
Você não deveria fazer isso. Veja minha resposta.
tarsius
@ tarso Você tem um ponto válido. Meu caso de usuário é que eu sincronizo meus arquivos de ponto entre vários computadores e quando eu definir um padrão, ele deve ser o padrão em todos os meus computadores. Se eu quiser mudar, mudarei apenas na minha configuração e ela será sincronizada em todos os meus computadores.
Maiku Mori
1
Ah, e eu não uso as opções personalizadas porque dificulta a minha configuração de documentação. Eu prefiro definir tudo explicitamente.
Maiku Mori
Além disso, a configuração --no-verifyé útil quando você tem projetos que usam git hooks (use com cuidado, obviamente).
Droogans