Wie kann ich festlegen, dass das Flag "--verbose" im Magit Commit-Bildschirm standardmäßig aktiviert wird?

16

Im ccMoment muss ich , anstatt nur im Magit-Modus zu drücken, c-vcjedes Mal drücken , um zu aktivieren --verbose.

Ist es möglich, es standardmäßig zu aktivieren?

Dogbert
quelle

Antworten:

17

Ab v2.1.0Magit wird die Bibliothek verwendet magit-popup.el, um solche "Popup-Puffer" oder "Präfix-Infix-Suffix-Combos" zu implementieren. Trotz des Namens kann diese Bibliothek von Paketen verwendet werden, die nicht mit Magit verwandt sind, und wird daher als separates Elpa-Paket zur Verfügung gestellt. Es hat jetzt sogar ein eigenes Handbuch !

Standardargumente können jetzt direkt aus einem Popup-Puffer gesetzt werden. Gehen Sie wie folgt vor, um --verbosebeim Festschreiben immer Folgendes zu verwenden:

  1. c Popup anzeigen
  2. - v Anschalten --verbose
  3. C-x C-sSpeichern Sie die aktuell gesetzten Argumente als Standard (in der benutzerdefinierten Option magit-commit-arguments)

Standardmäßig enden alle Popup-Puffer mit einem Abschnitt mit dem Namen "Allgemeine Befehle". Wenn nicht, C-tzeigen Sie es mit. Sie wahrscheinlich nicht wollen , dass der Abschnitt die ganze Zeit sehen und deshalb setzen sollte magit-popup-show-common-commandszu nil.

Natürlich ist es auch möglich, den Wert magit-commit-argumentsund andere solche Variablen über die Benutzeroberfläche setq, oder einzustellen add-to-list. Aber ich empfehle dagegen, weil das es unmöglich machen würde, die Standardeinstellungen on-the-fly zu ändern.

Tarsius
quelle
7

Soweit ich weiß, verfolgt Magit die "Standard" -Optionen nicht, aber wir können sie-v jedes Mal "drücken ", wenn der Committing-Puffer auftaucht:

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

Um herauszufinden, welche Funktion zu empfehlen ist, habe ich einen magic-statusPuffer geöffnet und gedrückt C-h k c. Das hat mich dazu geführt magit-key-mode-popup-committing. Dann (mit dem noch angezeigten Committing-Puffer) habe ich gedrückt C-h k -v, um das lambdaFormular zu finden, das Magit aufruft, wenn Sie-v im Committing-Fenster drücken .

Update: Ich habe diese Antwort unabhängig geschrieben, aber siehe Kann ich die git-log "--all" -Option anfänglich auswählen? , die dort gegebene Antwort und Kommentare zu dieser Antwort.

Konstantin
quelle
1
Das ist interessant! Vielen Dank für die Erklärung, wie Sie diese Funktionen gefunden haben :)
Dogbert
@Dogbert: Bitte beachten Sie den Link in der aktualisierten Antwort, wenn Sie wissen möchten, dass andere vor nicht allzu langer Zeit über Standard-Git-Optionen nachgedacht haben. :-) (Ich weiß nicht, wie ich das gestern verpasst habe.)
Constantine
4

Setzen Sie in den Magit-Versionen, die transient verwenden (nach Februar 2019 oder so), das Flag und speichern Sie dann, während Sie sich noch im transienten Puffer befinden.

Für das Festschreiben wäre die Tastenfolge also ungefähr so

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

Wenn danach das nächste Mal ein Commit aufgerufen wird, wird die Ausführlichkeit weiterhin festgelegt. (Sie müssen das Festschreiben nicht abschließen und können es nach dem Speichern mit beenden C-x C-s.)

Der aktuelle Standard wird in einem transient/Verzeichnis in gespeichert .emacs.d/.

Weitere Informationen finden Sie im Handbuch https://magit.vc/manual/transient.html#Saving-Values

mhb
quelle
0

Es ist zwar nicht genau das, was Sie wollen (Unterschied in Ihrem Festschreibungspuffer), aber Sie können magit so einstellen, dass die bereitgestellten Unterschiede im Statusfenster erweitert werden :

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

Der magit Workflow scheint immer offener Statuspuffer und dann offener Split mit Festschreibungspuffer zu sein. Am Ende werden immer zwei Puffer angezeigt. Die obige Einstellung bewirkt, dass der zweite (bisher nicht nützliche) Puffer Ihren Diff anzeigt.

Sie können auch verwenden, tum nur die Diff-Header zu erweitern (damit die Zeilennummern angezeigt werden):

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

Während Sie Ihr Diff schreiben, können Sie in TABden Statuspuffer wechseln und die Diffs erweitern (oder falten).


Alternativ können Sie C-c C-daus dem Festschreibungspuffer einen anderen Puffer mit einem Diff mit öffnen magit-diff-staged. (Siehe diese Ausgabe .)

idbrii
quelle
0

Ab magitVersion 2.1können Sie dies in Ihrer Konfiguration verwenden:

;; When commiting enable verbose mode by default.
(setq magit-commit-arguments (quote ("--verbose")))
Maiku Mori
quelle
Das solltest du nicht tun. Siehe meine Antwort.
Tarsius
@tarsius Du hast einen gültigen Punkt. Mein Verwendungszweck ist, dass ich meine Punktedateien zwischen mehreren Computern synchronisiere und wenn ich einen Standard festlege, sollte dieser auf allen meinen Computern Standard sein. Wenn ich es ändern möchte, ändere ich es einfach in meiner Konfiguration und es wird auf allen meinen Computern synchronisiert.
Maiku Mori
1
Oh, und ich verwende die benutzerdefinierten Optionen nicht, da meine Konfiguration dadurch nur schwer zu dokumentieren ist. Ich setze lieber alles explizit.
Maiku Mori
Die Einstellung --no-verifyist auch nützlich, wenn Sie Projekte haben, die Git-Hooks verwenden (natürlich mit Vorsicht).
Droogans