2011-01-14 14 views
10

Vorrei collegare lo schermo o tmux all'interno di emacs, in modalità shell. Spesso mi trovo a eseguire emacs con processi inferiori all'interno dello schermo su server remoti; sarebbe bello se potessi spostare il flusso di lavoro su emacs locale + TRAMP; la capacità di riattaccare le sessioni persistenti è d'obbligo. (Tale flusso di lavoro è particolarmente utile per l'analisi in R [1])Schermata di Gnu in modalità shell di emacs: come correggere i codici di escape dei colori

La modalità shell è piuttosto desiderabile perché continuo a riscontrare problemi anomali e persino crash quando si utilizza la combinazione di Mx term o Mx ansi-term + schermo + R. Tuttavia, non riesco a sbarazzarmi di ansi colorati resi come codici di fuga sullo schermo quando vengono eseguiti con shell Mx. Quando uso ansi-color-for-comint-mode-on, stanno bene - ma non appena lo schermo si accende, diventa un pasticcio orribile.

Qualcuno ha capito il set di condizioni per un'interpretazione corretta del colore ansi con shell + screen o tmux? Che dire sbarazzarsi di colore del tutto? .. Ci sono altre alternative in termini di processi in esecuzione remoti persistenti e le collega al emacs locali? ..

[1] http://blog.nguyenvq.com/2010/07/11/using-r-ess-remote-with-screen-in-emacs/

+1

@Seppo è corretto: la modalità shell non può fare ciò che vuoi. Potrebbe essere utile descrivere i problemi che hai con 'M-x term' o' M-x ansi-term' e forse possiamo aiutarti con quelli. –

risposta

5

Per quanto posso dire, schermo richiede funzioni del terminale che modalità shell Emacs' semplicemente non e non può fornire, semplicemente perché non è un terminale a caratteri tradizionale come VT100. Quindi il problema non è quello di eliminare o cercare di interpretare i codici colore: ci sono più funzionalità terminali che Screen richiede per funzionare correttamente.

Per impostazione predefinita, lo schermo non inizia nemmeno nella modalità shell di Emacs, per quanto ne so io (si sbaglia dicendo che è necessaria la capacità di schermo trasparente). Alcuni post sul Web sembrano suggerire di impostare TERM = xterm per aggirare questo problema, ma è solo scherzare su Screen nel pensare che il terminale abbia le capacità di XTerm, che non ha.

Il termine e le modalità ansi-term di Emacs fornirebbero le funzionalità del terminale richieste da Screen, ma sfortunatamente sembra che tu abbia avuto problemi con queste modalità.

Quello che vorrei suggerire sarebbe di dare un'occhiata al comando "emacsclient -t" (parte di Emacs), che consente di aprire un frame locale collegato a un'istanza di Emacs esistente in un modo simile a quello di Screen per ricollegarti a un'istanza Screen creata in precedenza. In questo modo potresti forse configurare un emacsclient sul tuo computer locale per riconnettersi su TCP a un'istanza Emacs remota persistente.

1

io non uso dello schermo, ma forse puoi aggiustarlo dal tuo .bashrc. Ho un sacco di codice condizionale, lanciando il colore per xterm windows, ma lasciandolo fuori per altri terminali che non lo supportano. La shell M-x imposta la variabile TERM su muto, quindi puoi testarlo e impostare il colore di conseguenza.

case "$TERM" in 
dumb) 
## non-color settings here 
;; 
xterm) 
## color settings here 
;; 
*) 
## default (maybe you want non-color here?) 
;; 
esac 
Problemi correlati