¿Cómo desplazarse hacia arriba al expandir una sección en magit-status?


8

En el magit-statusbúfer, presionar TABmuestra u oculta una sección determinada, lo cual es útil cuando se mira el contenido sin clasificar y se ve qué trozos se pueden poner en escena.

Sin embargo, cuando se tabula en una sección, el búfer se cae, por lo que la sección que estoy tratando de expandir va al fondo del búfer, ocultando así la parte expandida de la sección. Luego tengo que usar el ciclo recenter-top-bottompara volver a colocar la sección en la parte superior del búfer.

¿Hay alguna manera de llevar automáticamente la sección / entrada a la parte superior del búfer al expandirlo?

Respuestas:


5

Si está utilizando Emacs v24.3.x, ponga el suyo en su .emacs

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

Si está utilizando Emacs v24.4.x, esto es lo que se me ocurrió con un consejo, aunque estoy seguro de que no es perfecto:

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

No advice-addtiene validez en Emacs v24.3.1, es un nuevo servicio de asesoramiento introducido en Emacs v24.4
CodyChan

@CodyChan Eso es correcto: para versiones anteriores, defadvicedebe usarse.
Sébastien Le Callonnec

Gracias. Su solución para Emacs 24.4 funcionó perfectamente para mí. Me he vuelto loco, pensando que cualquiera de los paquetes que tengo está en conflicto con Magit.
zeroDivisible

4

En la nextrama que ya es compatible. (Lo que no debería evitar que nadie dé otra respuesta aquí, explicando cómo obtener el mismo efecto con master).


Leí mal tu pregunta. Existe una característica similar cuando se mueve entre secciones, pero no en el caso en el que realmente preguntó. Pero ahora también lo he implementado para alternar secciones, por lo que esta respuesta es correcta ahora :-)
tarsius

Impresionante, le daré nextun giro a la rama.
Sébastien Le Callonnec

No es que sea predeterminado, solo lo hace para los hunks, reemplácelo magit-hunk-set-window-startcon magit-section-set-window-startin magit-section-movement-hooky magit-section-show-hooksi desea este comportamiento para todas las secciones. Ahora que pienso en hacerlo magit-section-show-hook, probablemente conduciría a problemas.
tarsius

Resulta que esto no es tan fácil como yo y tuve que revertir este cambio por ahora.
tarsius

0

Estos funcionan en la última versión de magitMelpa (de la rama maestra ) como se probó hoy.

Mientras está en la ventana de Estado Magit,

  • C-u j u- Saltar a la U sección nstaged, expandirlo y llevar eso a la parte superior del búfer
  • C-u j s- Saltar a la s sección de mica, expandirlo y traer eso a la parte superior del búfer

Una acción similar se aplicará a otros C-u j ..enlaces en el magit-section-jump-maptambién.

Desde magit.elen la rama maestra :

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

Responder

Para responder a su aplicación específica para revisar los trozos en la sección no organizada, hágalo C-u j uen el búfer de estado de Magit.

Se aplica al código de rama magit master; No he probado la siguiente rama.

Un ejemplo de flujo de trabajo con estos enlaces

  1. M-x magit-status
  2. Organice los archivos que desea usar s
  3. Expanda los archivos por etapas que muestran las diferencias de trozos, al tiempo que coloca la parte superior de la sección por etapas en la parte superior del búfer: C-u j s
  4. Confirmar c c, abre el búfer COMMIT en una ventana dividida
  5. Escriba el registro mientras revisa las diferencias por etapas en otra ventana. Si diff excede la altura de la ventana, utilizo el comando 'desplazar otros comandos de ventana' .
  6. Terminar de comprometerse C-c C-c.

Aunque estos son realmente atajos útiles, esto no es exactamente lo que buscaba: quiero que el archivo actual, o trozo o sección se desplace hacia la parte superior cuando lo expando para poder ver la mayor parte de la diferencia en ese cambio actual.
Sébastien Le Callonnec
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.