Recentemente Magit ha ottenuto il supporto per qualcosa del genere, ma la funzionalità è ancora un po 'approssimativa e deve essere abilitata esplicitamente.
Una funzionalità simile esiste da molto tempo: quando si passa da un commit a un altro in un buffer di log e un'altra finestra nello stesso frame è il buffer di revisione del repository, quel buffer viene aggiornato per mostrare quel commit invece di qualunque commit stava mostrando in precedenza.
Fino a poco tempo fa il buffer di revisione è stato creato quando si è passati da un commit a un altro. Ho modificato questo comportamento e ora il buffer di revisione è sempre e solo aggiornato . Se nessuna finestra nello stesso frame mostra già quel buffer, lo spostamento nel registro non causerà più la visualizzazione del buffer in una nuova finestra o in una finestra esistente che in precedenza visualizzava un altro buffer.
Quindi ora è necessario premere SPCuna volta per visualizzare il buffer di revisione. Solo allora inizierà ad essere aggiornato quando si sposta il buffer di registro.
Se non si desidera aggiornare il buffer di revisione, procedere come segue:
(remove-hook 'magit-section-movement-hook
'magit-log-maybe-update-revision-buffer)
Se d'altra parte si desidera anche aggiornare il buffer di revisione quando ci si sposta nel buffer di stato, utilizzare questo:
(add-hook 'magit-section-movement-hook
'magit-status-maybe-update-revision-buffer)
È ora possibile aggiornare automaticamente un buffer BLOB in modo simile. Per prima cosa aggiungi questo:
(add-hook 'magit-section-movement-hook
'magit-log-maybe-update-blob-buffer)
E forse anche:
(add-hook 'magit-section-movement-hook
'magit-status-maybe-update-blob-buffer)
Quindi, all'interno di un buffer di registro (o stato), premere RETper visualizzare o aggiornare il buffer di revisione e anche passare a quel buffer. Passa al file che ti interessa e premi di RETnuovo. Ora ci si trova in un buffer "BLOB-visiting", che è simile a un buffer di file-visiting, tranne per il fatto che non visita il file nell'albero di lavoro ma il file come in alcuni commit.
Tornare al buffer del registro (o dello stato) e passare a un altro commit. Il buffer BLOB è in fase di aggiornamento.
Si noti che la visualizzazione di un altro BLOB non riutilizza effettivamente il buffer BLOB esistente. Invece crea un nuovo buffer che visita quel BLOB e quindi visualizza quel buffer nella finestra che in precedenza visualizzava l'altro buffer BLOB. L'altro buffer non viene eliminato, il che sfortunatamente significa che un certo numero di buffer può accumularsi in un breve periodo di tempo. Quale sarebbe uno di quei bordi irregolari, di cui ho parlato prima. La pressione qin un buffer BLOB lo elimina, quindi è possibile ripulire andando alla finestra utilizzata per visualizzare i vari buffer BLOB e continuare a premere qfino a quando tutti i buffer non sono stati eliminati.
Inoltre è possibile passare al BLOB successivo o precedente dall'interno di un buffer BLOB usando pe n. Presumo che nella maggior parte dei casi inizi con un BLOB recente e poi passi indietro ai BLOB più vecchi usando p. Se lo fai e poi vuoi spostarti nella direzione opposta, ti consiglio di usare qper eliminare il buffer corrente e quindi passare al buffer precedente , cioè al BLOB successivo .
Si noti inoltre che non è necessario visitare prima una revisione per poter visitare un BLOB. Puoi anche usarlo M-x magit-find-file RET <revision> RET <file> RET
direttamente, ma lo trovo meno conveniente.