2012-02-15 14 views
8

Sulla base di questa domanda: How to set emacsclient background as Emacs background?come controllare se emacs nel frame o nel terminale?

Ho bisogno di sfondo solo per frame, non per terminale e non per console.

Ecco come sto cercando di aggiungere correzione per console

(when (display-graphic-p) 
    (tool-bar-mode -1) 
    (scroll-bar-mode t) 
    (require 'nyan-mode) 
    (nyan-mode) 
    (nyan-start-animation) 
    (mouse-wheel-mode t) 
    (setq default-frame-alist 
      '((background-color . "#101416") 
      (foreground-color . "#f6f3e8")) 
     ) 
) 

Ma con che io non ottenere background sul emacsclient (anche per i frame). Forse il conto non funziona nemmeno in emacsclient?

Fondamentalmente non voglio aggiungere sfondo a emacsclient nel terminale e nella console ma nei frame.

+0

Dove viene valutato il codice? Ricorda che .emacs viene valutato solo una volta all'avvio di Emacs, non quando si collega emacsclient. – phils

+1

Ok, quindi il tuo file .emacs valuta direttamente la funzione '(nCdy-mode)', il che significa che il corpo della tua '(quando (display-graphic-p) ...)' clausola verrà valutata una volta a la maggior parte *, e quindi solo se '(display-graphic-p)' è vero nel momento in cui Emacs inizia. (*) A meno che tu non stia chiamando anche (modalità nCdy) altrove, ma non dici di esserlo. – phils

risposta

5
(defun my-frame-config (frame) 
    "Custom behaviours for new frames." 
    (with-selected-frame frame 
    (when (display-graphic-p) 
     (set-background-color "#101416") 
     (set-foreground-color "#f6f3e8")))) 
;; run now 
(my-frame-config (selected-frame)) 
;; and later 
(add-hook 'after-make-frame-functions 'my-frame-config) 
+0

Sì, amo è quello che mi serve qui, grazie. – Cynede

2

Forse la soluzione più semplice è quella di non toccare *-frame-alist, nè set-cornice-*, ma invece di Mx personalizzare faccia RET RET di default e quindi centrale clic sul pulsante "Stato" e selezionare "Per tutti i tipi di display" a quel punto sarete in grado di impostare l'aspetto del volto in modo diverso per i diversi display. Questa parte dell'interfaccia utente non viene utilizzata molto e viene visualizzata, ma è necessario: fare clic con il tasto centrale su INS per inserire una seconda serie di impostazioni, quindi fare clic con il tasto centrale su "Display" e selezionare "nil", quindi fare clic su sulla levetta a sinistra di "Tipo" e quindi sull'interruttore a sinistra di "TTY": questo fa sì che il primo set di impostazioni si applichi solo ai fotogrammi tty mentre l'altro (che presumibilmente dice ancora "Display: all") si applica ai casi rimanenti (cioè fotogrammi non tty).

+0

Ah, bello! FWIW Trovo che il clic del tasto sinistro sia lo stesso del middle-click per quei widget (entrambi vincolati a 'widget-clic-tasto ')? E per questa particolare domanda, è necessario fare clic su "Supporta attributi" e "Mostra tutti gli attributi" per accedere alle opzioni di colore di primo piano e di sfondo. – phils

+0

In realtà, immagino tu lasci le nuove impostazioni vuote, e invece cambi quei colori nelle impostazioni predefinite. Ho provato l'inverso (cambiando i colori di primo piano/sfondo per le impostazioni TTY) con il terminale predefinito di Ubuntu, e non ho potuto farlo diventare effettivo (anche se l'opzione "inverse video" funzionava). YMMV? – phils

Problemi correlati