Un po 'di confusione qui.
Sto tentando di riprodurre il comportamento di Git per i cercapersone e gli editori (perché penso che gli sviluppatori Git abbiano già fatto delle buone scelte di progettazione (forse le migliori) in questo ambito).
Durante il tentativo di scomposizione ho scoperto che Git usa il pager / editor impostato sulla variabile di ambiente $PAGER/$EDITOR
. Tuttavia, anche se $PAGER/$EDITOR
non è impostato, git apre ancora un cercapersone / editor.
Ad esempio, sul mio sistema quando corro.
$ PAGER=cat git log
Git funziona come previsto e utilizza cat
per stampare i dati.
Ma io (ovviamente) non devo farlo. E anche se $PAGER
non è impostato, che è il caso per impostazione predefinita sul mio sistema in base al seguente comando.
$ echo $PAGER
$
Git può ancora aprire un cercapersone bello, ben scelto ( less
nel mio caso) per stampare correttamente i dati.
Questo sembra pulito! Questo è (in una certa misura) il comportamento che sto cercando.
Ma non sono in grado di scoprire come viene implementato. Il pager / editor predefinito viene scelto al momento della compilazione? In tal caso, come posso fare lo stesso, sapendo che sto usando autotools
come mio sistema di compilazione. E da come intendo come dovrebbe essere l'opzione per scegliere il pager / editor di default? E c'è una specifica autoconf
/ automake
macro (s) dedicata a questo.
Questa è una configurazione dinamica (può essere cambiata dopo la compilazione in un file di configurazione)? E se è così, vorrei dare un'occhiata a questo file di configurazione. Dove posso trovarlo?
Forse questo è più complicato di così e Git è in grado di indovinare e scegliere automaticamente il pager / editor da solo. E se questo è il caso, mi piacerebbe sapere come funziona.
Qualsiasi consiglio o suggerimento sarà utile. Non necessariamente su come Git sta implementando le cose. Pertanto vorrei sottolineare che il pacchetto che sto costruendo è destinato a essere multipiattaforma, facilmente compilabile / cross-compilabile su piattaforme non linux-like. Quale può o meno avere un comodo editor di riga di comando / cercapersone (come posso supportare gli editor della GUI?). un provider binario potrebbe dover includere l'editor / cercapersone nel pacchetto di distribuzione. Voglio rendere questo processo il più semplice possibile (il provider binario non dovrebbe guardare il codice).
Fondamentalmente voglio fare scelte di design nel miglior modo possibile. Con un piccolo impulso da voi ragazzi, posso fare ancora meglio.
Grazie.