Como rolar para cima ao expandir uma seção no status magit?

8

No magit-statusbuffer, pressionar pressionando TABmostra ou oculta uma determinada seção, o que é útil ao analisar o conteúdo não-estágios e ver quais blocos podem ser encenados.

No entanto, ao tabular uma seção, o buffer fica inativo; portanto, a seção que estou tentando expandir vai para a parte inferior do buffer, ocultando a parte expandida da seção. Em seguida, tenho que alternar usando recenter-top-bottompara trazer a seção de volta ao topo do buffer.

Existe uma maneira de trazer automaticamente a seção / entrada para o topo do buffer ao expandi-lo?

Sébastien Le Callonnec
fonte

Respostas:

5

Se você estiver usando o Emacs v24.3.x, coloque-o no seu .emacs

(defadvice magit-toggle-section (after magit-section-hidden activate)
  (recenter-top-bottom 0))

Se você estiver usando o Emacs v24.4.x, aqui está o que eu sugeri usando um conselho - embora eu tenha certeza de que não é perfeito:

(defun magit-toggle-scroll-to-top () (recenter-top-bottom 0))
(advice-add 'magit-toggle-section :after #'magit-toggle-scroll-to-top)
Sébastien Le Callonnec
fonte
O advice-addé nulo em Emacs v24.3.1, é nova unidade de aconselhamento introduzido em Emacs v24.4
CodyChan
@CodyChan Isso mesmo: para versões mais antigas, defadvicedeve ser usado.
Sébastien Le Callonnec
Obrigado. Sua solução para o Emacs 24.4 funcionou perfeitamente para mim. Estou ficando louco, pensando que qualquer um dos pacotes que tenho esteja em conflito com o Magit.
zeroDivisible
4

No nextramo já suportado. (O que não impede ninguém de dar outra resposta aqui, explicando como obter o mesmo efeito master).

tarso
fonte
Eu interpretei mal sua pergunta. Um recurso semelhante existe ao se mover entre as seções, mas não no caso em que você realmente perguntou. Mas agora eu implementaram que para alternar seções também, e por isso esta resposta está correta agora :-)
tarsius
Incrível, vou dar nextuma volta no ramo.
Sébastien Le Callonnec 11/11
Não que isso seja padrão, ele faz isso apenas para pedaços, substitua magit-hunk-set-window-startpor magit-section-set-window-startin magit-section-movement-hooke magit-section-show-hookse você desejar esse comportamento para todas as seções. Agora que penso nisso magit-section-show-hook, provavelmente levaria a problemas.
tarsius
Acontece que isso não é tão fácil quanto eu pensava e tive que reverter essa alteração por enquanto.
tarsius
0

Eles funcionam na versão mais recente magitdo Melpa (da filial principal ), testada hoje.

Enquanto estiver na janela Status do Magit,

  • C-u j u- Ir para o u seção nstaged, expandi-lo e trazer isso para o topo do tampão
  • C-u j s- Ir para o s seção taged, expandi-lo e trazer isso para o topo do tampão

Ações semelhantes também serão aplicadas a outras C-u j ..ligações magit-section-jump-map.

De magit.elno ramo mestre :

(defvar magit-section-jump-map
  (let ((map (make-sparse-keymap)))
    (define-key map (kbd "z") 'magit-jump-to-stashes)
    (define-key map (kbd "n") 'magit-jump-to-untracked)
    (define-key map (kbd "u") 'magit-jump-to-unstaged)
    (define-key map (kbd "s") 'magit-jump-to-staged)
    (define-key map (kbd "f") 'magit-jump-to-unpulled)
    (define-key map (kbd "p") 'magit-jump-to-unpushed)
    (define-key map (kbd "r") 'magit-jump-to-pending)
    map)
  "Submap for jumping to sections in `magit-status-mode'.")

Responda

Para responder à sua aplicação específica e revisar os blocos na seção não faseada, faça C-u j uno buffer Magit Status.

Aplica-se ao código de ramificação mestre do magit; ainda não experimentou o próximo ramo.

Um exemplo de fluxo de trabalho usando essas ligações

  1. M-x magit-status
  2. Prepare os arquivos que você deseja usar s
  3. Expanda os arquivos em etapas que mostram as diferenças do hunk, enquanto também posiciona a parte superior da seção em etapas na parte superior do buffer: C-u j s
  4. Confirmar c c, abre o buffer COMMIT em uma janela dividida
  5. Grave o registro ao revisar as diferenças faseadas em outra janela. Se diff exceder a altura da janela, eu uso o comando 'scroll other window' .
  6. Concluir confirmação C-c C-c.
Kaushal Modi
fonte
Embora esses atalhos sejam realmente úteis, não era exatamente isso que eu procurava: quero que o arquivo atual, o pedaço ou a seção role para o topo quando o expandir, para que eu possa ver a maioria das diferenças nessa alteração atual.
Sébastien Le Callonnec