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?

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)

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).


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.

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.