Come scorrere verso l'alto quando si espande una sezione in stato magit?


8

Nel magit-statusbuffer, premendo viene TABmostrata o nascosta una determinata sezione, utile quando si guardano contenuti non messi in scena e si vedono quali hunk possono essere messi in scena.

Tuttavia, quando si esegue la tabulazione su una sezione, il buffer si abbassa, quindi la sezione che sto tentando di espandere va in fondo al buffer, nascondendo così la parte espansa della sezione. Devo quindi utilizzare ciclicamente recenter-top-bottomper riportare la sezione all'inizio del buffer.

C'è un modo per portare automaticamente la sezione / voce in cima al buffer durante l'espansione?

Risposte:


5

Se stai usando Emacs v24.3.x, metti il ​​suo nel tuo .emacs

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

Se stai usando Emacs v24.4.x, ecco cosa ho escogitato usando un consiglio - anche se sono sicuro che non sia perfetto:

(defun magit-toggle-scroll-to-top () (recenter-top-bottom 0))
(advice-add 'magit-toggle-section :after #'magit-toggle-scroll-to-top)

La advice-adddecade in Emacs v24.3.1, è nuovo impianto di consulenza introdotto in Emacs v24.4
CodyChan

@CodyChan Proprio così: per le versioni precedenti, defadvicedovrebbe essere usato.
Sébastien Le Callonnec,

Grazie. La tua soluzione per Emacs 24.4 ha funzionato perfettamente per me. Sono impazzito, pensando che uno qualsiasi dei pacchetti che ho sia in conflitto con Magit.
zero Divisibile il

4

Sul nextramo che è già supportato. (Il che non dovrebbe impedire a nessuno di dare un'altra risposta qui, spiegando come ottenere lo stesso effetto con master).


Ho letto male la tua domanda. Una funzionalità simile esiste quando ci si sposta tra le sezioni, ma non nel caso in cui si è effettivamente chiesto. Ma ora l'ho implementato anche per alternare le sezioni, e quindi questa risposta ora è corretta :-)
tarsius

Fantastico, darò nextun giro al ramo.
Sébastien Le Callonnec,

Non che sia predefinito, lo fa solo per gli hunk, sostituisci magit-hunk-set-window-startcon magit-section-set-window-startin magit-section-movement-hooke magit-section-show-hookse desideri questo comportamento per tutte le sezioni. Ora che penso che farlo magit-section-show-hook, probabilmente porterebbe a problemi.
tarsius,

Si scopre che non è facile come pensavo e per ora ho dovuto annullare questo cambiamento.
tarsius,

0

magitFunzionano con l'ultima versione di Melpa (dal ramo principale ) testata oggi.

Mentre sei nella finestra Magit Status,

  • C-u j u- Passa alla u sezione nstaged, espanderla e portare che all'inizio del buffer
  • C-u j s- Passa alla s sezione Taged, espanderla e portare che all'inizio del buffer

Un'azione simile si applicherà anche ad altri C-u j ..attacchi magit-section-jump-map.

Da magit.elnel ramo principale :

(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'.")

Risposta

Per rispondere alla tua specifica applicazione per rivedere gli hunk nella sezione non messa in scena, C-u j uesegui nel buffer di stato Magit.

Si applica al codice di filiale master magit; non ho provato il prossimo ramo.

Un flusso di lavoro di esempio che utilizza questi binding

  1. M-x magit-status
  2. Metti in scena i file che desideri utilizzare s
  3. Espandere i file in fasi che mostrano le differenze di hunk, posizionando anche la parte superiore della sezione in fasi nella parte superiore del buffer: C-u j s
  4. Commit c c, apre il buffer COMMIT in una finestra divisa
  5. Scrivi il registro durante la revisione delle differenze organizzate in un'altra finestra. Se diff supera l'altezza della finestra, utilizzo i "comandi scroll altra finestra" .
  6. Termina commit C-c C-c.

Sebbene si tratti effettivamente di scorciatoie utili, questo non è esattamente quello che cercavo: voglio che il file corrente, o hunk o la sezione scorrano verso l'alto quando lo espando in modo da poter vedere la maggior parte delle differenze in quel cambiamento corrente.
Sébastien Le Callonnec,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.