Comment faire défiler vers le haut lors de l'expansion d'une section dans l'état magit?

8

Dans le magit-statustampon, appuyez sur TABpour afficher ou masquer une section donnée, ce qui est pratique lorsque vous regardez du contenu non organisé et voyez quels morceaux peuvent être organisés.

Cependant, lorsque vous tabulez une section, le tampon descend, donc la section que j'essaye de développer va au bas du tampon, cachant ainsi la partie développée de la section. Je dois ensuite faire défiler à l'aide de recenter-top-bottompour ramener la section en haut de la mémoire tampon.

Existe-t-il un moyen de placer automatiquement la section / entrée en haut du tampon lors de son expansion?

Sébastien Le Callonnec
la source

Réponses:

5

Si vous utilisez Emacs v24.3.x, mettez le sien dans votre .emacs

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

Si vous utilisez Emacs v24.4.x, voici ce que j'ai trouvé en utilisant un conseil - même si je suis sûr qu'il n'est pas parfait:

(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
la source
Le advice-addest nul dans Emacs v24.3.1, il s'agit d'un nouveau service de conseil introduit dans Emacs v24.4
CodyChan
@CodyChan C'est vrai: pour les anciennes versions, defadvicedevrait être utilisé.
Sébastien Le Callonnec
Je vous remercie. Votre solution pour Emacs 24.4 a parfaitement fonctionné pour moi. Je deviens fou, pensant que l'un des paquets que j'ai est en conflit avec Magit.
zeroDivisible
4

Sur la nextbranche déjà prise en charge. (Ce qui ne devrait empêcher personne de donner une autre réponse ici, expliquant comment obtenir le même effet master).

tarse
la source
J'ai mal lu votre question. Une fonctionnalité similaire existe lors du déplacement entre les sections, mais ne l'a pas été dans le cas où vous l'avez réellement demandé. Mais maintenant, j'ai également implémenté cela pour basculer les sections, et donc cette réponse est correcte maintenant :-)
tarsius
Génial, je vais essayer la nextbranche.
Sébastien Le Callonnec
Ce n'est pas le cas par défaut, il ne le fait que pour les mecs, remplacez-le magit-hunk-set-window-startpar magit-section-set-window-startin magit-section-movement-hooket magit-section-show-hooksi vous souhaitez ce comportement pour toutes les sections. Maintenant que j'y pense, le faire magit-section-show-hookentraînerait probablement des problèmes.
tarsius
Il s'avère que ce n'est pas aussi facile que je le pensais et j'ai dû annuler ce changement pour l'instant.
tarsius
0

Ces travaux sur la dernière version de magitde Melpa (de maître branche) comme testé aujourd'hui.

Dans la fenêtre d'état de Magit,

  • C-u j u- Accédez à la section u nstaged, développez-la et amenez-la en haut du tampon
  • C-u j s- Saut à la s section TAged, développer et porter cela à la partie supérieure du tampon

Une action similaire s'appliquera également aux autres C-u j ..liaisons magit-section-jump-map.

De magit.elen maître branche :

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

Réponse

Pour répondre à votre application spécifique pour examiner les mecs dans la section non mise en scène, faites-le C-u j udans le tampon d'état Magit.

S'applique au code de branche maître magit; n'ont pas essayé la branche suivante.

Un exemple de flux de travail utilisant ces liaisons

  1. M-x magit-status
  2. Mettez en scène les fichiers que vous souhaitez utiliser s
  3. Développez les fichiers intermédiaires montrant les différences de morceau, tout en positionnant également le haut de la section intermédiaire en haut du tampon: C-u j s
  4. Valider c c, ouvre le tampon COMMIT dans une fenêtre divisée
  5. Écrivez le journal tout en examinant les différences intermédiaires dans une autre fenêtre. Si diff dépasse la hauteur de la fenêtre, j'utilise les «commandes de défilement d'autres fenêtres» .
  6. Terminez la validation C-c C-c.
Kaushal Modi
la source
Bien qu'il s'agisse effectivement de raccourcis utiles, ce n'est pas exactement ce que je recherchais: je veux que le fichier actuel, ou le morceau, ou la section défile vers le haut lorsque je le développe afin que je puisse voir la plupart des différences dans ce changement actuel.
Sébastien Le Callonnec