¿Cómo puedo hacer que la bandera `--verbose` esté habilitada por defecto en la pantalla de confirmación de magit?

16

En este momento, en lugar de presionar solo ccen modo magit, tengo que presionar c-vccada vez para habilitar --verbose.

¿Es posible habilitarlo por defecto?

Dogbert
fuente

Respuestas:

17

Para empezar v2.1.0, Magit usa la biblioteca magit-popup.elpara implementar tales "buffers emergentes" o "combos de prefijo-infijo-sufijo". A pesar de su nombre, esa biblioteca puede ser utilizada por paquetes no relacionados con Magit y, por lo tanto, está disponible como un paquete de Elpa separado. ¡Incluso tiene su propio manual ahora!

Los argumentos predeterminados ahora se pueden establecer directamente desde un búfer emergente. Para usar siempre --verbosecuando se compromete, haga esto:

  1. c Mostrar la ventana emergente de confirmación
  2. - v Encender --verbose
  3. C-x C-sGuarde los argumentos establecidos actualmente como predeterminados (en la opción personalizada magit-commit-arguments)

Por defecto, todos los buffers emergentes terminan con una sección llamada "Comandos comunes". Si no, úselo C-tpara mostrarlo. Probablemente no desee ver esa sección todo el tiempo y, por lo tanto, debe establecerla magit-popup-show-common-commandsen nil.

Por supuesto, también es posible establecer el valor de magit-commit-argumentsy otras variables usando la interfaz personalizada setq, o add-to-list. Pero recomiendo contra eso, porque eso haría imposible cambiar los valores predeterminados sobre la marcha.

tarsius
fuente
7

Por lo que puedo decir, Magit no realiza un seguimiento de las opciones "predeterminadas", pero podemos hacer que "presione -v" cada vez que aparece el búfer de confirmación:

(advice-add #'magit-key-mode-popup-committing :after
            (lambda ()
              (magit-key-mode-toggle-option (quote committing) "--verbose")))

Para encontrar qué función aconsejar, abrí un magic-statusbúfer y presioné C-h k c. Esto me llevó a magit-key-mode-popup-committing. Luego (con el tampón Cometer fija visualizada) presioné C-h k -vpara encontrar las lambdallamadas Magit se forman cuando se pulsa -ven la ventana de comprometerse.

Actualización: Escribí esta respuesta de forma independiente, pero vea ¿Puedo tener seleccionada inicialmente la opción git-log "--todos"? , la respuesta dada allí y los comentarios a esa respuesta.

Constantina
fuente
1
¡Eso es interesante! Gracias por explicar también cómo encontraste esas funciones :)
Dogbert
@Dogbert: vea el enlace en la respuesta actualizada si le interesa saber que otros pensaron en las opciones predeterminadas de git no hace mucho tiempo. :-) (No sé cómo me perdí eso ayer.)
Constantine
4

En las versiones de magit que usan transitorios (después de febrero de 2019 más o menos), establezca la bandera y luego guarde mientras todavía está en el búfer transitorio.

Entonces, para commit, la secuencia de teclas sería algo así como

C-x g # start magit
s # to stage changes
c # start commiting
-v # enable verbose
C-x C-s # Save the setting persistently across sessions
c # do the actual commit

Después de eso, la próxima vez que se invoque commit, todavía se establecerá detallado. (No tiene que completar la confirmación y puede salir después de guardar con C-x C-s).

El valor predeterminado real se guarda en un transient/directorio en .emacs.d/.

Consulte el manual transitorio https://magit.vc/manual/transient.html#Saving-Values

mhb
fuente
0

Si bien no es exactamente lo que desea (diff en su búfer de confirmación), puede configurar magit para expandir las diferencias escalonadas en la ventana de estado :

(setq magit-expand-staged-on-commit 'full)

El flujo de trabajo magit parece ser siempre un búfer de estado abierto y luego se abre dividido con el búfer de confirmación, siempre terminas con dos búferes mostrados. La configuración anterior hará que el segundo búfer (anteriormente no útil) muestre su diff.

También puede usar tpara expandir solo los encabezados diff (para que muestre los números de línea):

(setq magit-expand-staged-on-commit t)

Mientras escribe su diff, puede cambiar al búfer de estado y usar TABpara expandir (o doblar) los diffs.


Alternativamente, puede usar C-c C-ddesde el búfer de confirmación para abrir otro búfer con un diff con magit-diff-staged. (Ver este número ).

idbrii
fuente
0

A partir de la magitversión 2.1, puede usar esto en su configuración:

;; When commiting enable verbose mode by default.
(setq magit-commit-arguments (quote ("--verbose")))
Maiku Mori
fuente
No deberías hacer eso. Mira mi respuesta.
tarsius
@tarsius Tienes un punto válido. Mi caso de uso es que sincronizo mis archivos de puntos entre varias computadoras y cuando configuro un valor predeterminado, debería ser predeterminado en todas mis computadoras. Si quiero cambiarlo, lo cambiaré en mi configuración y se sincronizará en todas mis computadoras.
Maiku Mori
1
Ah, y no uso las opciones personalizadas porque hace que mi configuración sea difícil de documentar. Prefiero configurar todo explícitamente.
Maiku Mori
Además, la configuración --no-verifyes útil cuando tiene proyectos que usan ganchos git (use con precaución, obviamente).
Droogans